Linux内核--五大子系统

Linux内核有五大核心子系统,分别是进程调度系统、虚拟文件系统(VFS)、内存管理单元(MMU)、网络单元、进程间通信(IPC)。
在Linux内核中的主要组件中,五个核心子系统是最为重要的组成部分,它与系统调用接口(System Call Interface)、以及Arch层组成了整个Linux的内核的框架。
Alt

其中,System Call Interface(SCI)提供从用户空间到内核空间执行接口调用的方法,该接口可以依赖于体系结构,即使在同一处理器系列中也是如此。可以在 ./linux/kernel 中找到 SCI 的实现,与体系结构相关的部分在 ./linux/arch 中。

1、进程调度系统

此内核子系统负责为在系统上同时运行的所有进程之间公平地分配CPU时间,是Linux内核最重要的子系统。

进程管理的重点是进程的执行。在内核中,这被称为线程,代表处理器的单独虚拟化(线程代码、数据、堆栈和 CPU 寄存器)。在用户空间中,通常使用术语“进程”,但Linux实现并未区分这两个概念(进程和线程)。内核通过 SCI 提供应用程序接口(API)来创建新进程(fork、exec 或可移植操作系统接口POSIX函数)、停止进程(kill、exit)以及它们之间的通信和同步机制(信号或 POSIX 机制)。

在进程管理中,需要在活动线程之间共享 CPU。内核实现了一种新的调度算法,无论有多少线程争夺CPU,该算法都以恒定的时间运行,这被称为 O(1) 调度程序,表示调度一个线程与调度多个线程所花费的时间相同。 O(1) 调度程序还支持多个处理器(称为对称多处理或 SMP)。(可以在 /linux/kernel中找到进程管理源代码,在/linux/arch目录中可找到与体系结构相关的源代码。)

2、虚拟文件系统

该子系统负责提供统一的接口,以访问跨不同文件系统和物理存储介质的存储数据。

虚拟文件系统(VFS)是 Linux 内核的一个有趣的方面,因为它为文件系统提供了通用的接口抽象。 VFS 在 SCI 和内核支持的文件系统之间提供了一个交换层(参见下图)。
![VFS 提供用户和文件系统之间的交换结构]Alt

VFS 的顶部是诸如打开、关闭、读取和写入等功能的通用 API 抽象。 VFS的底层是文件系统抽象,定义了上层功能的实现方式。这些是给定文件系统的插件(现在有50多个)。可以在./linux/fs 中找到文件系统源码。

文件系统层下面是高速缓冲区,它为文件系统层提供一组通用的功能(独立于任何特定的文件系统)。该缓存层通过短时间保留数据(或推测性地预读,以便在需要时提供数据)来优化对物理设备的访问。高速缓冲区下方是设备驱动程序,它们实现特定物理设备的接口。

关于设备驱动程序,Linux 内核中的绝大多数源代码都存在于使特定硬件设备可用的设备驱动程序中。 Linux 源代码树提供了一个驱动程序子目录,该子目录按支持的各种设备(例如蓝牙、I2C、串行等)进一步划分。可以在./linux/drivers 中找到设备驱动程序源。

3、内存管理单元

该内核子单元负责在系统上运行的各种进程之间正确分配内存资源。它不仅仅是为每个进程提供单独的虚拟地址空间。

内存是Linux内核管理的重要资源。为了提高效率,考虑到硬件管理虚拟内存的方式,内存是在所谓的页中管理的(大多数体系结构的大小为4KB)。Linux内核提供了管理可用内存的方法,以及物理和虚拟映射的硬件机制。

但是内存管理远不止管理4KB缓冲区。Linux在提供了超过4KB缓冲区的虚拟内存,例如slab分配器。此内存管理方案使用4KB缓冲区作为其基础,但随后从内部分配结构,跟踪哪些页已满、哪些部分使用和哪些已经为空。这使得该方案可以根据更大的系统需求动态增长和减小内存。

支持多个用户的内存,有时会出现可用内存耗尽的情况。因此,页可以从内存中移出到磁盘上。这个过程被称为交换,可以在Linux内核源码的/linux/mm目录下找到内存管理源代码。

4、 网络单元

该单元允许Linux系统通过网络连接到其他系统。它支持许多可能的硬件设备,以及许多可以使用的网络协议。网络子系统抽象了这两个实现细节,以便用户进程和其他内核子系统可以访问网络,而不必知道正在使用的物理设备或协议。
根据设计,网络堆栈遵循以协议本身为模型的分层架构。回想一下,互联网协议(IP)是位于传输协议(最常见的是传输控制协议或TCP)之下的核心网络层协议。TCP之上是套接字层,通过SCI调用。

套接字层是网络子系统的标准 API,并为各种网络协议提供用户界面。从原始帧访问到 IP 协议数据单元 (PDU),再到 TCP 和用户数据报协议 (UDP),套接字层提供了一种标准化方法,来管理连接和在端点之间移动数据。可以在内核中的 ./linux/net 中找到网络源码。

5、进程间通信

该单元实现进程间的相互通信,并与内核通信,以协调其活动。Linux支持许多进程间通信(IPC)机制,信号和管道是其中的两个,Linux也支持以Unix TM版本命名的System V IPC机制。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 内核裁剪为 RT-Linux 内核需要进行以下步骤: 1. 下载 RT-Linux内核补丁。RT-Linux内核补丁包括了实时调度程序和其他的实时功能。你可以从 RT-Linux 官方网站下载最新的内核补丁。 2. 下载 Linux 内核源代码。你可以从 Linux 的官方网站或其他镜像站点下载最新的源代码。 3. 解压缩 Linux 内核源代码。使用以下命令解压缩源代码: ``` tar xzf linux-x.y.z.tar.gz ``` 其中,x.y.z 是你下载的 Linux 内核版本号。 4. 进入 Linux 内核源代码的目录。 ``` cd linux-x.y.z ``` 5. 应用 RT-Linux内核补丁。使用以下命令将 RT-Linux内核补丁应用到 Linux 内核源代码中: ``` patch -p1 < /path/to/rt-linux-patch-x.y.z.diff ``` 其中,/path/to/rt-linux-patch-x.y.z.diff 是你下载的 RT-Linux 内核补丁的路径。 6. 配置内核。使用以下命令进入内核配置界面: ``` make menuconfig ``` 在内核配置界面中,选择 “实时补丁” 和其他需要的实时功能,然后保存并退出。 7. 编译内核。使用以下命令编译内核: ``` make ``` 8. 安装内核。使用以下命令安装编译好的内核: ``` make install ``` 9. 配置引导程序。如果你使用 GRUB 引导程序,编辑 /etc/default/grub 文件,将 GRUB_DEFAULT 设置为新内核的名称,然后更新 GRUB 配置文件: ``` update-grub ``` 10. 重启系统。使用以下命令重启系统: ``` reboot ``` 完成上述步骤后,你的 Linux 内核就已经裁剪成了 RT-Linux 内核

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值