Linux 内核是如何工作的? Linux 内核剖析解释

Linux 内核就像一座桥梁,可以实现应用程序和硬件之间的计算通信并管理系统的资源。 Linus Torvalds 使用 C 和 Assembly 开发了 Linux 内核,因此,他成功地创建了一个轻量级和可移植的内核,并以开源的形式向公众发布。

您可以在太空、计算机、智能手表、手机、机器人和健康等许多不同领域看到 Linux 内核。 但是你有没有想过 Linux 内核在底层是如何工作的?

Linux 上的硬件使用

首先,Linux 内核控制着哪些硬件将运行,以及在您打开计算机时以何种方式运行。 此外,借助编程接口,可以控制高端软件。 举一个这些控件的例子,您可以查看安装在主板插槽中的硬件信息,并从这些详细信息中受益。

此外,这个编程接口提供了一个抽象层。 例如,如果您想与朋友进行视频对话,则需要一个网络摄像头。 抽象层使您使用的软件可以使用此网络摄像头,无论其品牌和型号如何。 这里的软件只能使用Linux存在的接口。 Linux 内核将此接口的函数调用转换为网络摄像头所需的实际硬件命令。

使用 /proc/系统 虚拟文件系统,Linux 内核可以导出有关它检测到的硬件的详细信息。 您可以在下面看到一些用于此目的的工具以及它们导出的设备和卡:

  • lspci: 对于 PCI 设备
  • lsusb:对于 USB 设备
  • 蚯蚓: 适用于 PCMCIA 卡

如您所见,上面屏幕截图中的 Linux 发行版运行在 VirtualBox. 但是,您有机会看到很多信息,例如 VGA、USB 控制器、桥接器和 SATA 控制器。

您还可以使用 -v 参数以获得更详细的信息。

在 Linux 内核中,应用程序通常通过存在于内核中的特殊文件来访问设备。 /dev 目录。 这些特殊文件代表磁盘驱动器和其他物理设备。 文件如 /dev/hda, /dev/sdc, /dev/sdc3, /开发/输入/鼠标0开发/snd/* 是这些特殊文件的示例。

Linux 文件系统管理

文件系统是 Linux 内核中最著名的组件之一。 Linux 的文件系统是其最大的好处之一。 Linux 系统上的所有文件都集中在一个分支中。 因此,用户可以利用这个层次结构到达他们想要的地方。

此层次结构的起点是根目录(/)。 其他子目录在根目录下。 下最常用的子目录 / 是个 /家 目录。 该子目录包含其他子目录,每个目录都有存储实际数据的文件。

例如,您可以考虑桌面上的文本文件。 如果您创建一个名为 helloworld.txt 在您的桌面上,您可以将其称为 /home/muo/Desktop/helloworld.txt. 的例子 /muo 这里当然会有所不同。 因为这个子目录名取决于你当前的用户名。 使用这个命名系统,Linux 内核在磁盘上存在的实际存储和物理存储之间进行转换。

此外,Linux 内核可以集成来自多个磁盘的数据。 这就是安装系统发挥作用的地方。 它使用根系统中的一个磁盘并将其他磁盘安装到层次结构中的现有目录。 然后将其他磁盘放置在安装点下。 这允许用户存储 /家 第二个硬盘上的目录,该目录还包含其他子目录。

当您将磁盘挂载到 /家 目录,您可以从正常位置访问这些目录。 因此,路径如 /home/muo/Desktop/helloworld.txt 继续工作。

您可以使用以下命令查看系统上文件之间的挂载点 findmnt -A 命令。

对于许多文件系统格式,您可以将数据物理存储在磁盘上。 Linux 上最广为人知的是 分机2, 分机3, 和 分机4 文件系统格式。 但是,还有许多其他文件系统格式。 在任何情况下,您都必须在挂载文件系统之前对其进行格式化。 您可以使用类似的命令 mkfs.ext3 (mkfs 代表 make 文件系统,而 ext3 是文件系统)为此。

这些命令接受您要格式化的设备文件路径作为参数。 这是一种破坏性操作,如果您不想擦除或重置文件系统,则应谨慎使用。

除此之外,还有 Linux 内核使用的 NFS 等网络文件系统。 NFS 是一种网络文件系统,其中数据不存储在本地磁盘上。 使用 NFS,数据通过网络传输到存储数据的服务器。 由于数据将在服务器上,用户不必经常处理它。 他们也可以像往常一样使用传统的 Linux 分层文件系统。

共享功能操作

Linux系统中的所有软件都有共同的功能。 这就是为什么这些函数是 Linux 内核的核心。 例如,打开一个文件时,你可以只用文件名打开它,而不知道文件的物理存储位置,以及它将使用什么功能和操作。 所有这些功能都已经存在于内核中。

您可以将文件存储在硬盘上,在多个硬盘之间拆分,甚至将其保存在远程服务器上。 在这种情况下,共享文件通信功能很重要。 无论数据如何移动,应用程序都会交换数据。 共享通信功能可以进行这些数据交换。 这一举措可以通过无线网络甚至固定电话线进行。

Linux 中的进程管理

对内存中的数据或信息进行操作的程序的活动实例称为进程。 Linux 内核的任务是生成并跟踪这些内存区域。 内核为正在运行的程序分配内存,并将可执行代码从文件系统加载到内存中。 紧接着,内核运行代码。

Linux 内核支持多任务处理。 它能够同时运行多个进程。 但是,在任何给定的时间范围内只有一笔交易。 但是,Linux 内核将时间分成小块,因此每个过程都是按顺序进行的。

由于这些小时间段以毫秒为增量,因此它们仅在特定时间处于活动状态,其余时间保持空闲状态。 Linux 内核在这里的工作是通过一次运行多个进程来最大化性能。

如果时隙太长,正在运行的应用程序可能不会像您希望的那样响应。 如果时间框架太短,任务更改可能会出现问题。 根据进程的优先级,此处所需的时间帧间隔会有所不同。 您之前可能听说过高优先级进程和低优先级进程。 这是 Linux 内核控制的功能之一。

这种解释并不总是正确的。 真正的限制是每个处理器内核一次只能有一个工作进程。 多处理器系统允许多个进程并行运行。 一个基本系统几乎总是有几十个正在运行的进程。

Linux 中的访问权限

与其他操作系统一样,您可以在 Linux 系统上创建许多用户。 在这种情况下,有一个支持单个用户和组的权限管理系统。 这就是文件和用户权限发挥作用的地方。

Linux 内核管理数据并检查每个进程的必要权限。 例如,如果您尝试打开文件,内核必须根据访问权限检查进程 ID。 如果内核检查并看到您有权限,它将打开该文件。

Linux 内核控制一切

如您所见,Linux 内核监督从文件安全到创建用户和从 Internet 下载文件的所有内容。 一切都按照一定的顺序。 每个用户都有权利。 Linux 内核管理进程和时隙以实现最佳性能。

此外,作为Linux内核区别于其他操作系统的最大特征之一的文件系统非常重要。 Linux 不是一个隐藏的盒子。 相反,所有文件和源代码都可以访问。 为了更好地理解 Linux 内核的实用性和强大的特性,您可以检查 Linux 目录系统层次结构。