5

剖析 Linux 内核在底层是如何工作的

 2 years ago
source link: https://os.51cto.com/article/715530.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

剖析 Linux 内核在底层是如何工作的-51CTO.COM

剖析 Linux 内核在底层是如何工作的
作者:Linux迷 2022-08-03 11:00:20
您可以在太空、计算机、智能手表、手机、机器人和健康等许多不同领域看到 Linux 内核。但是你有没有想过 Linux 内核在底层是如何工作的?

0556e1a48f0323d766e079f1732fc3ec3558c6.jpg

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

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

Linux 下的硬件使用情况

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

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

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

  • lspci:用于 PCI 设备
  • lsusb:用于 USB 设备
  • lspcmcia: 用于 PCMCIA 卡
08cd73c94bc1b7c9fb63542d554e1521fb9cd5.png

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

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

d72815b67052280ccc6101e7112b9c066c79de.png

在 Linux 内核中,应用程序通常通过/dev目录中存在的特殊文件访问设备。这些特殊文件代表磁盘驱动器和其他物理设备。/dev/hda、/dev/sdc、/dev/sdc3、/ dev/input/mouse0和dev/snd/*等文件就是这些特殊文件的示例。

b1dc91a655c8bc3df441337080d7f068037996.png

Linux 文件系统管理

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

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

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

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

当您将磁盘挂载到/home目录时,您可以从正常位置访问这些目录。因此,/home/linuxmi/Desktop/helloworld.txt等路径继续有效。

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

71acf09126ffc42aa8b302e92ec325e29cf20f.png

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

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

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

共享功能操作

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

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

Linux 中的进程管理

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

736f6065271fcdc75d72767d92d1d83631597f.png

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

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

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

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

Linux 中的访问权限

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

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

Linux 内核控制一切

正如您所看到的,Linux 内核监督从您的文件安全到创建用户和从网络下载文件的所有事情。一切都有一定的顺序。每个用户都有权限。Linux内核管理进程和时隙以获得最佳性能。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK