深入研究Linux内核
Linux系统的核心成为内核kernel,内核控制计算机上的所有硬件和软件,并在必要的时候分配硬件,在需要时执行软件。
内核主要有以下4中功能:
系统内存管理
内存管理是操作系统内核的主要功能之一,内核不仅可以管理服务器上可用的物理内存,而且能够创建并管理虚拟内存,或者说非实际存在的内存。内存管理必须要使用硬盘空间,该空间成为交换空间swap space,内核不断地在交换空间和实际物理内存之间交换虚拟内存位置的内容,这样系统认为可用的内存比实际存在的内存多。使用ipcs可以查看系统当前的共享内存分页。
软件程序管理
Linux操作系统将正在运行的程序成为进程,进程可以在前台运行,也可以在后台运行,内核控制Linux系统如何管理在系统中运行的所有进程。内核创建的第一个进程,成为初始进程init process,该进程可在系统上启动所有其他进程,内核启动时,它将初始进程加载到虚拟内存中。内核每启动一个其他进程,都将在虚拟内存中为其分配一个唯一的空间,用于存储该进程使用的数据和代码。
硬件管理
Linux系统需要与之通信的设备都必须在内核代码中插入驱动程序代码、驱动程序代码使内核能够向设备传输数据,它的作用就像是应用程序与硬件之间的中间人、在Linux内核中插入设备驱动程序代码有两种方法:
- 在内核中编译驱动程序;
- 向内核添加驱动程序模块;
目前Linux系统将硬件设备标示为特殊文件,成为设备文件,大致分为3类:
- 字符设备
- 主要用于哪些一次仅处理一个字符的设备,比如调制解调器和终端类型
- 块设备
- 主要用于哪些一次可以处理大量数据块的设备,比如磁盘驱动器
- 网络设备
- 主要用于使用数据包发送和接收数据的设备,包括网卡和特殊的回路设备,允许Linux系统使用通用网络编程协议与自身通信。
文件系统管理
Linux内核可以使用不同类型的文件系统与硬盘传输数据,Linux内核使用虚拟文件系统(Virtual File System,VFS)与每个文件系统进行连接。这为内核与其他文件系统类型的通信提供了一个标准接口。