Linux 系统的核心便是内核。内核控制计算机上的所有硬件和软件,根据需要分配硬件执行相应的软件。
内核主要负责以下四种功能:系统内存管理、软件程序管理、硬件设备管理、文件系统管理。
系统内存管理
内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(实际不存在的内存)。
内核通过硬盘上的存储空间来实现虚拟内存,虚拟内存由物理内存和磁盘上的存储空间共同组成,磁盘上的存储空间被称为交换空间,这可使得系统以为它拥有比物理内存更多的可用内存。
内存的存储单元按组划分为很多块,这些块被称作页面。内核会记录哪些页面位于物理内存,哪些页面位于交换空间上,并会将一段时间内物理内存中未访问的页面复制到交换空间中,减缓压力(称为换出,swapping out),哪怕目前还有可用的物理内存。当被换出的页面再次被访问时,内核会从物理内存中换出另一个页面,在将需要访问的页面从交换空间换入。
在 Linux 系统运行期间,为运行中的程序交换内存页面的过程会一直运行。
软件程序管理
Linux 操作系统将运行中的程序称为进程。进程可以直接在前台运行,将运行信息输出到屏幕上,也可以在后台运行,隐藏至幕后,内核管理运行在系统上的所有进程。
当内核启动时,会创建第一个进程:init 进程,将 init 进程加载到虚拟内存中,用它来控制系统上所有其他进程。内核在启动任何进程时,都会在虚拟内存中分配一个专有区域来存储该进程用到的数据和代码。
此外,Linux 中的 init 系统采用了运行级。运行级决定了 init 进程运行 /etc/inittab 文件或 /etc/rcX.d (X代表运行级)目录中定义好的某些特点类型的进程。
Linux 操作系统有5个启动运行级别,常见的运行级别有:
① 运行级为 1 时,只启动基本的系统进程以及一个控制台的终端进程,也称之为单用户模式。单用户模式通常用来在系统有问题时进行紧急的文件系统维护。
②运行级为 3 时,大多数应用软件都会启动,这也是标准的启动运行级。
③运行级为 5 时,系统为启动图形化的 X Window 系统,允许用户通过图形化桌面窗口登录系统。
硬件设备管理
任何需要与 Linux 系统通信的设备都需要在内核代码中加入驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据。
在 Linux 内核中插入设备驱动代码有两种方式:
①将设备驱动代码编译进内核
以前此方式是插入设备驱动代码的唯一方式,每次给系统添加新设备,都需要重新编译一次内核代码。随着 Linux 内核支持的设备越来越多,这个过程变得越来越低效。
②可插入内核的设备驱动模块
开发人员提出了内核模块的概念,它允许将驱动代码插入到运行中的内核而无需重新编译内核。同时,当设备不再使用时也可以将内核模块从内核中移走。这种方式极大地简化和扩展了硬件设备在 Linux 上的使用。
Linux 将硬件设备当成特殊的文件,称为设备文件。设备文件分为三类:
①字符型设备
字符型设备文件是指处理数据时每次只能处理一个字符的设备。例如:调制解调器(Modem ,俗称“光猫”)和键盘。
②块设备文件
块设备文件是指处理数据时,每次能处理大块数据的设备,比如硬盘。
③网络设备文件
网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。这个回环设备允许 Linux 系统使用常见的网络编程协议同自身通信。
Linux 为系统上的每个设备都创建一个称为 节点 的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供 Linux 内核设别。数值对包括一个主设备号和一个次设备号,类似的设备被划分到同样的主设备号下,次设备号用于标识主设备组下的某个特定设备。
文件管理系统
不同于其他一些操作系统,Linux 内核支持通过不同类型的文件系统从硬盘中读写数据,还支持从其他操作系统(比如 Microsoft Windows)采用的文件系统中读写数据。
Linux 内核采用虚拟文件系统(Virtual File System, VFS )作为和每个文件系统交互的接口,这为 Linux 内核同任何类型文件系统通信提供了一个标准接口。当文件系统都被挂载和使用时,VFS 将信息都缓存在内存中。
内核必须在编译时就加入对所有可能用到的文件系统的支持,下面列出了 Linux 系统用来读写数据的标准文件系统。
文件系统 | 描述 |
---|---|
ext | Linux 扩展文件系统,最早的 Linux 文件系统 |
ext2 | 第二扩展文件系统,在 ext 的基础上提供了更多的功能 |
ext3 | 第三扩展文件系统,支持日志功能 |
ext4 | 第四扩展文件系统,支持高级日志功能 |
hpfs | OS/2 高性能文件系统 |
jfs | IMB 日志文件系统 |
iso9660 | ISO 9660 文件系统(CD-ROM) |
minix | MINIX 文件系统 |
msdos | 微软的FAT16 |
ncp | Netware 文件系统 |
nfs | 网络文件系统 |
ntfs | 支持Microsft NT 文件系统 |
proc | 访问系统信息 |
ReiserFS | 高级 Linux 文件系统,能提供更好的性能和硬盘恢复功能 |
smb | 支持网络访问的 Samba SMB 文件系统 |
sysv | 较早期的 Unix 文件系统 |
ufs | BSD 文件系统 |
umsdos | 建立在 msdos 上的类 Unix 文件系统 |
vfat | Windows 95 文件系统(FAT32) |
XFS | 高性能 64 位日志文件系统 |
本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。
若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!