Linux内核的组成部分

Linux内核主要有 5个子系统组成:进程调度 (SCHED) ,内存管理 (MM) ,虚拟文件系统 (VFS) ,网络接口 (NET)和进程间通信 ( IPC )。

1、进程调度
进程在进程调度子系统中微观串行,宏观并行。其余 4 个子系统都依赖于进程调度系统,因为每个子系统也需要挂起或恢复进程,

当它们需要做这些工作时,都得和进程调度子系统打交道。

进程的睡眠有两种情况,一种是因为得不到请求的资源而进入“深度睡眠” (TASK_UNINTERRUPTIBLE),深度睡眠直到得到请

求的资源后才会醒来,其间不可被打断;另外一种是由于时间片用完,而进入的“浅度睡眠”(TASK_INTERRUPTIBLE),在浅度

睡眠时,如果给进程发一个信号,它就会醒过来。

在设备驱动编程中,当请求的资源不能得到满足时,驱动一般会调度其他进程执行,其对应的进程进入睡眠状态,直到它请求的资源

被释放,才会被唤醒而进入到就绪状态。

设备驱动中,如果需要几个并发执行的任务,可以启动内核线程,启动内核线程的函数为:

int kernel_thread(int(*fn)(void *),void *arg,unsigned long flags);

2、内存管理
内存管理的主要作用是控制多个进程安全地共享主内存区域。当 CPU 带有内存管理单元 (MMU)时,Linux 内存管理完成为每个进程

进行虚拟内存到物理内存的转换。Linux 2.6 内核可以支持无 MMU 的 CPU .

一般而言,Linux 的每个进程享有 4GB 的内存空间,0~3GB 属于用户空间,3~4GB 属于内核空间,内核空间对常规内存,I/O

设备内存以及高端内存有着不同的处理方式。

3、虚拟文件系统
Linux 虚拟文件系统 (VFS)
隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口。而且,它独立于各个具体的文件系统,

是对各种文件系统的一个抽象,它使用超级块 super
block 存放文件系统相关信息,使用索引结点 inode 存放文件的物理信息,

使用目录项项 dentry 存放文件的逻辑信息。

4、网络接口
网络接口提供了对各种网络的标准存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序,网络协议部分负责实

现每一种可能的网络传输协议,网络设备驱动程序负责硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序。

5、进程间的通信
Linux 支持多种通信机制,如信号量,共享内存,管道,信号等,这些机制可以协助多个进程、多资源的互斥访问、进程间的同

步和消息传递。

这 5 个子系统之间的依赖关系为

进程调度和内存管理之间的关系:
这两个子系统互相依赖。在多道程序环境下,必须为程序创建进程,而创建进程的第一件事情就是将程序和数据装入内存。

进程间通信与内存管理的关系:
进程间通信子系统要依赖内存管理支持共享内存通信机制,这种机制允许两个进程除了拥有自己的私有空间,还可以存取共同的内存区域。

虚拟文件系统与网络接口之间的关系:
虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管理支持 RAMDISK 设备。

内存管理与虚拟文件系统之间的关系:
内存管理利用虚拟文件系统支持交换,交换进程 (swapd) 定期由调度程序调度,这也就是内存管理依赖于进程调度的唯一原因。当一

个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。

时间: 2024-08-29 03:30:13

Linux内核的组成部分的相关文章

linux内核---嵌入式linux内核的五个子系统

转自:https://blog.csdn.net/qq_27522735/article/details/63251168 Linux内核主要由进程调度(SCHED).内存管理(MM).虚拟文件系统(VFS).网络接口(NET)和进程间通信(IPC)5个子系统组成,如图1所示. 图1 Linux内核的组成部分与关系 1.进程调度 进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中"微观串行,宏观并行"地执行.进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为

Linux内核开发基础

1.Linux内核简介 1.1.Linux系统如何构成 内核空间(Kernel Space)+用户空间(User Space) 用户空间 = 用户程序 + C语言库(例如:GNC C Library) 内核空间 = Kernel + 系统调用接口(System Call Interface) + 体系结构相关代码 Linux系统被划分用户空间 内核空间 原因? 现在CPU实现不同的工作模式,以ARM为例 A.用户模式(usr) B.系统模式(sys) C.外部中断模式(irq) D.管理模式(s

linux内核分析之内存管理

1.struct page 1 /* Each physical page in the system has a struct page associated with 2 * it to keep track of whatever it is we are using the page for at the 3 * moment. Note that we have no way to track which tasks are using 4 * a page, though if it

《Linux内核设计与实现》学习总结 Chap4

第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果. 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行,但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行,这些进程在等待运行,在一组处于可运行状态的进程中,选择―个来执

Linux 内核中断内幕【转】

转自:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/ 本文对中断系统进行了全面的分析与探讨,主要包括中断控制器.中断分类.中断亲和力.中断线程化与 SMP 中的中断迁徙等.首先对中断工作原理进行了简要分析,接着详细探讨了中断亲和力的实现原理,最后对中断线程化与非线程化中断之间的实现机理进行了对比分析. 3 评论: 苏 春艳, 在读研究生 杨 小华 ([email protected]), 在读研究生 2007 年 5

十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见)

原文:十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见) 非常开心能够和大家一起分享这些,让我受益匪浅,感激之情也溢于言表,,code monkey的话少,没办法煽情了,,,,,,,冬天的风,吹得伤怀,倒叙往事,褪成空白~学校的人越来越少了,就像那年我们小年之后再回家的场景一样,到处荒芜,然而我们的激情却不褪去,依然狂躁在实验室凌晨两点半的星空里,也许今天又会是这样的一年,不一样的是身边的人变成学弟学妹了,而我们几个大三老家伙依然在,为自己喜欢的事情,为

《Linux内核设计与实现》第四章学习笔记

第四章 进程调度 [学习时间:1小时45分 撰写博客时间:2小时10分钟] [学习内容:Linux的进程调度实现.抢占和上下文切换.与调度相关的系统调用] 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 最大限度利用处理器时间的原则:只要有可以执行的进程,那么总会有程序正在执行. 一.多任务 1.概念:多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉

《Linux内核设计与实现》 Chapter4 读书笔记

<Linux内核设计与实现> Chapter4 读书笔记 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 一.多任务 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 多任务系统可以划分为两类: 非抢占式多任务 进程会一直执行直到自己主动停止运行 抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占. 像所有unix的变体和许多其他现代操作系统一样,Linux提

linux内核的组成,王明学learn

linux内核的组成 一.linux内核源代码目录结构 arch: 包含和硬件体系结构相关的代码, 每种平台占一个相应的目录, 如 i386.ARM.PowerPC.MIPS 等. block:块设备驱动程序 I/O 调度. crypto:常用加密和散列算法(如 AES.SHA 等) ,还有一些压缩和 CRC 校验算法. Documentation:内核各部分的通用解释和注释. drivers:设备驱动程序,每个不同的驱动占用一个子目录,如 char.block.net.mtd .i2c 等.