1.1- 深入研究linux内核

本文深入解析Linux内核的四大核心功能:系统内存管理、软件程序管理、硬件管理和文件系统管理。详细介绍了Linus Torvalds创建Linux内核的历程,以及内核如何通过虚拟内存、进程管理、设备驱动和文件系统支持,高效地协调硬件资源和软件运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Linux系统的核心称为内核(kernel)。内核控制计算机系统上的所有硬件和软件,并在必要时分配硬件,在需要时只需软件。

 如果您一直关注Linux,肯定听过 Linus Torvalds 的大名。Linus在赫尔辛基大学读书时创建了第一个Linux内核软件。当时很多大学都使用Unix系统作为操作系统,Linux一开始只是打算创建一个Unix系统的复制品。

 开发出Linux内核之后,Linus将其发布到Internet社区,希望社区能够提供一下改进的建议。正是这个简单的过程引发了计算机操作系统的革命。很快,Linus便收到了来自世界各地的建议,有的来自学生,有的来自专业程序员。

 内核主要有以下4种功能:
  * 系统内存管理
  * 软件程序管理
  * 硬件管理
  * 文件系统管理

1、系统内存管理
 内存管理是操作系统内核的主要功能之一。内核不仅可以管理服务器上可用的物理内存,而且能够创建并管理虚拟内存,或者说是非实际存在的内存。

 内存管理必须要使用磁盘空间,该空间称为交换空间(swap space)。内核不断地在交换空间和实际物理内存直接交换虚拟内存位置的内容,这样系统任务可用的内存比实际存在的内容多。
在这里插入图片描述

 将内存位置分组为多个数据块,此操作称为分页(page)。内核定位物理内存或交换空间中的每个内存分页,然后维护一个内存分页表,此表说明位于物理内存的分页和交换到磁盘的分页。

 内核跟踪使用的内存分页,并自动将一段时间内没有访问的内存分页复制到交换空间区域(称为换出),即使内存仍然够用也会这样做。程序需要访问已经换出的内存分页时,内核必须换出另一个内存分页,以在物理内存中为该内存分页腾出空间,然后从交换空间换人需要的分页。显然,该过程比较耗时,可能会降低运行速度。在Linux系统运行期间,为运行应用程序换出内存分页的过程时刻都在进行。

 查看特殊文件 /proc/meminfo,可以看到Linux系统中虚拟内存的当前状态。cat /proc/meminfo 内容说明:
在这里插入图片描述
在这里插入图片描述

  Mem:一行说明该Linux服务器的物理内存为256M,还剩下4MB的空间没有使用(空闲空间),从该输出还可以看到,该系统的交换空间为512MB
  默认情况下,在Linux系统上运行的每个进程都有自己专用的内存分页。一个进程不能访问另一个进程正在使用的内存分页。内核也有自己的内存区域。处于安全性考虑,任何进程都不得访问内核进程使用的内存。

 要促进数据共享,可以创建共享内存分页。通用共享内存区域可以供多个进程读取和写入。内核维护和管理共享内存区域,并允许单个进程访问共享区域。

 使用特殊命令 ipcs 可以查看系统当前的共享内存分页。以下是 ipcs命令的输出示例:
在这里插入图片描述
 每个共享内存段都对应有一个创建该内存段的所有者。每个内存段还对应有一个标准的Linux权限位置,可以设置该内存段对于其他用户的可用性。使用键值允许其他用户获得访问该共享内存段的权限。

2、软件程序管理
 Linux操作系统将正在运行的程序称为进程。进程可以在前台运行(在显示器上显示),也可以在后头运行。内核控制Linux系统如何管理在系统中运行的所有进程。
 内核创建第一个进程,称为初始进程(init process),该进程可以在系统上启动所有其他进程。内核启动时,它将初始进程加载到虚拟内存中。内核没启动一个其他进程,都将在虚拟内存中为其分配一个唯一的空间,用于存储该进程使用的数据和代码。
 有些Linux实现包含一个进程表,可以在引导时自动启动。在Linux中,该表通常位于特殊文件/etc/inittabs中。
 Linux操作系统使用具有运行级别功能的初始系统。运行级别可以指示初始进程仅运行哪些特定的进程,正如/etc/inittabs文件定义的那样。Linux操作系统中有5个初始运行级别。
 运行级别1只启动基本系统进程,以及一个控制台终端进程,这称为单用户模式。单用户模式通常用户紧急情况下(如某些内容损坏)的系统维护。显然,在这种模式下,值允许一个人登录系统操作数据。
 标准的初始运行级别是3.在该运行级别下,可以启动大部分应用软件,如网络支持软件。Linux另一个常用的运行级别是5.。在该运行级别下,系统可以启动图形化X Window软件,并允许使用图形化桌面窗口登录。
 通过控制初始运行级别,Linux系统可以控制整个系统功能。将系统级别从3更改到5,系统可以从基于控制台的系统更改为高级的图形化X Window系统。

3、硬件管理
 内核的另一个职责是硬件管理。 Linux系统需要与之通信的设备都必须在内核代码中插入驱动程序代码。驱动程序代码使内核能够向设备传输数据,它的作用就像是应用程序与硬件之间的中间人。
 在 Linux内核中插入设备驱动程序代码有两种方法:
  * 在内核中编译驱动程序
  * 向内核添加驱动程序模块
 开发人员开发了内核模块,可以在运行内核中插入驱动程序代码而无需重新编译内核。此外,当设备使用完毕时,还可以从内核中移除内核模块。这极大地简化并扩展了 Linux对硬件的使用。
 Linux系统将硬件设备标识为特殊文件,称为设备文件,设备文件分为3类:
  * 字符
  * 块
  * 网络。
 字符设备文件用于那些一次仅处理一个字符的设备。大部分调制解调器和终端类型都识别为字符文件。
 块文件用于那些一次可处理大量数据块的设备,如磁盘动器。
 网络文件类型用于那些使用数据包发送和接收数据的设备。这包括网卡和特殊的回路设备,允许Linux系统使用通用网络编程协议与自身通信。
 Linux为系统的每个设备创建特殊文件,称为节点。所有与设备的通信都通过设备节点完成。每个节点都有一个唯一的数字对, Linux内核使用该数字对标识该节点。数字对包含主设备号和次设备号,类似的设备使用相同的主设备号分组,次设备号用于标识主设备组中的具体设备。

4、文件系统管理
 与其他操作系统不同,Linux内核可以使用不同类型的文件系统与硬盘传输数据。除了本身的十几个文件系统外,Linux还可以通过其他操作系统(如 windows)使用的文件系统传输数据,并编译内核以支持系统将使用的文件系统。下表列出了Linux系统可以用来读取和写入数据的文件系统。
 Linux服务器访问的任何硬盘都必须使用下表列出的文件系统类型之一进行格式化。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值