初识Linux系统
初始Linux
Linux可划分为以下四部分:
- Linux内核
- GNU工具
- 图形化桌面环境
- 应用软件
每一部分在Linux系统中各司其职,下图是各部分对应关系:
1、Linux内核
Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。内核主要负责以下四种功能:
- 系统内存管理
- 软件程序管理
- 硬件设备管理
- 文件系统管理
1.1 系统内存管理
操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存。内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间。内核不断的在交换空间和实际的物理内存之间反复交换虚拟内存中的内存。这使得系统以为它拥有比物理内存更多的可用内存。
内存存储单元按组划分成很多块,这些块称作页面(page)。内核将每个内存页面放在物理内存或交换空间。然后,内核会维护一个内存页面表,知名哪些页面位于物理内存内,哪些页面被切换到了磁盘上。内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域,即使还有可用的物理内存。当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面给它让出空间,然后从交换空间换入请求的内存页面,这个过程会花费时间,拖慢运行中的进程。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇。
1.2 软件程序管理
Linux操作系统将运行中的程序称为进程。进程可以在前台运行,将输出显示在频幕上,也可以在后台运行,隐藏到幕后。内核控制着Linux系统如何管理运行在系统上的所有进程。
内核创建第一个进程(称为init进程)来启动系统上所有其它进程。当内核启动时,它会将init进程加载到虚拟内存中,内核在启动任何其它进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。
一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程。这个表通常位于/etc/inittab中。另外一些系统,如ubantu则将开机时启动或停止某个应用的脚本放在/etc/init.d目录下,这些脚本通过/etc/rcX.d目录下的入口启动。
Linux操作系统的init系统采用了运行级别,运行级决定了init进程运行/etc/inittab文件或/etc/rcX.d目录中定义好的某些特定类型的进程。Linux操作系统有7个启动运行级。
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。其实就是关机。
运行级别1:只启动基本的系统进程以及一个控制台终端进程,称之为单用户模式,主要用于在系统有问题时进行紧急的文件系统维护,这种模式下,仅有一个人(通常时管理员)登录到系统上操作数据。
运行级别2:多用户状态(没有NFS),没有网络连接。
运行级别3:这个运行级上可以运行大多数应用软件,称之为命令行模式。
运行级别4:系统保留,未使用。
运行级别5:可以启动图形化的X Windows系统,允许用户通过图形化桌面窗口登录系统。
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。
1.3 硬件设备管理
Linux系统与设备进行通信时,需要在内核代码中加入其设备驱动程序代码,驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据,Linux系统将硬件设备当成特殊的文件,称为设备文件,设备文件有三种:
- 字符型设备文件
- 块设备文件
- 网络设备文件
字符型设备文件:指处理数据时每次只能处理一个字符的设备,大多数类型的调制解调器和终端都是作为字符型设备文件创建的。
块设备文件:指处理数据时每次能处理大块数据的设备,如硬盘。
网络设备文件:指采用数据包发送和接收数据的设备,如网卡和一个特殊的回环设备,这个回环设备允许Linux系统使用常见的网络编程协议通自身通信。
Linux为系统上的每个设备都常见一种称为节点的特殊文件,与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供Linux内核标识它,数值对包括一个主设备号和一个次设备号,主设备号是内核用于区分属于哪一类型的设备,次设备号是内核用来确定某类设备中的哪一个设备。
1.4 文件系统管理
不同于其它操作系统,Linux内核支持通过不同类型的文件系统从硬盘中读写数据。除自有的文件系统外,Linux还支持如下的文件系统:
2、GNU工具
GNU组织(GNU是GNU's Not Unix的缩写)开发了一套完整的Unix工具,这些工具是在开源软件(open source software,OSS)的软件理念下开发的。GNU项目的主旨是为Unix系统管理员设计出一套类似Unix的环境,这个目标促使该项目移植了很多常见的Unix系统命令行工具。供Linux系统使用的这组核心工具被称为coreutils软件包。
GNU coreutils软件包由三部分构成:
- 用以处理文件的工具
- 用以操作文本的工具
- 用以管理进程的工具