Linux快速简易入门 linux是什么( 二 )


Linux快速简易入门 linux是什么

文章插图
图2 Linux系统内存映射
内存存储单元按组划分成很多块,这些块称作页面(page) 。百思特网内核将每个内存页面放在物理内存或交换空间 。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面被换到了磁盘上 。
内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间区域(称为换出,swapping out)——即使还有可用内存 。当程序要访问一个已被换出的内存页面时,内核必须从物理内存换出另外一个内存页面给它让出空间,然后从交换空间换入请求的内存页面 。显然,这个过程要花费时间,拖慢运行中的进程 。只要Linux系统在运行,为运行中的程序换出内存页面的过程就不会停歇 。
2. 软件程序管理
Linux操作系统将运行中的程序称为进程 。进程可以在前台运行,将输出显示在屏幕上,也可以在后台运行,隐藏到幕后 。内核控制着Linux系统如何管理运行在系统上的所有进程 。
内核创建了第一个进程(称为init进程)来启动系统上所有其他进程 。当内核启动时,它会将init进程加载到虚拟内存中 。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码 。
一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程 。在Linux系统上,这个表通常位于专门文件/etc/inittab中 。
另外一些系统(比如现在流行的Ubuntu Linux发行版)则采用/etc/init.d目录,将开机时启动或停止某个应用的脚本放在这个目录下 。这些脚本通过/etc/rcX.d目录下的入口百思特网(entry)*启动,这里的X代表运行级(run level) 。
*这些入口实际上是到/etc/init.d目录中启动脚本的符号链接 。
Linux操作系统的init系统采用了运行级 。运行级决定了init进程运行/etc/inittab文件或/etc/rcX.d目录中定义好的某些特定类型的进程 。Linux操作系统有5个启动运行级 。
运行级为1时,只启动基本的系统进程以及一个控制台终端进程 。我们称之为单用户模式 。单用户模式通常用来在系统有问题时进行紧急的文件系统维护 。显然,在这种模式下,仅有一个人(通常是系统管理员)能登录到系统上操作数据 。
标准的启动运行级是3 。在这个运行级上,大多数应用软件,比如网络支持程序,都会启动 。另一个Linux中常见的运行级是5 。在这个运行级上系统会启动图形化的X Window系统,允许用户通过图形化桌面窗口登录系统 。
Linux系统可以通过调整启动运行级来控制整个系统的功能 。通过将运行级从3调整成5,系统就可以从基于控制台的系统变成更先进的图形化X Window系统 。
3. 硬件设备管理
内核的另一职责是管理硬件设备 。任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码 。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据 。在Linux内核中有两种方法用于插入设备驱动代码:
  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动模块
以前,插入设备驱动代码的唯一途径是重新编译内核 。每次给系统添加新设备,都要重新编译一遍内核代码 。随着Linux内核支持的硬件设备越来越多,这个过程变得越来越低效 。不过好在Linux开发人员设计出了一种更好的将驱动代码插入运行中的内核的方法 。
开发人员提出了内核模块的概念 。它允许将驱动代码插入到运行中的内核而无需重新编译内核 。同时,当设备不再使用时也可将内核模块从内核中移走 。这种方式极大地简化和扩展了硬件设备在Linux上的使用 。
Linux系统将硬件设备当成特殊的文件,称为设备文件 。设备文件有3种分类:
  • 字符型设备文件
  • 块设备文件
  • 网络设备文件
字符型设备文件是指处理数据时每次只能处理一个字符的设备 。大多数类型的调制解调器和终端都是作为字符型设备文件创建的 。块设备文件是指处理数据时每次能处理大块数据的设备,比如硬盘 。
网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备 。这个回环设备允许Linux系统使用常见的网络编程协议同自身通信 。
Linux为系统上的每个设备都创建一种称为节点的特殊文件 。与设备的所有通信都通过设备节点完成 。每个节点都有唯一的数值对供Linux内核标识它 。数值对包括一个主设备号和一个次设备号 。类似的设备被划分到同样的主设备号下 。次设备号用于标识主设备组下的某个特定设备 。

推荐阅读