Linux 内核系统体系结构

news/2024/7/20 12:58:24 标签: 内存管理, 操作系统

Linux 内核主要由 5 个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进

程间通信模块和网络接口模块。

进程调度模块用来负责控制进程对 CPU 资源的使用。

所采取的调度策略是各进程能够公平合理地访

问 CPU,同时保证内核能及时地执行硬件操作。内存管理模块用于确保所有进程能够安全地共享机器主

内存区,同时,内存管理模块还支持虚拟内存管理方式,使得 Linux 支持进程使用比实际内存空间更多

的内存容量。并可以利用文件系统把暂时不用的内存数据块会被交换到外部存储设备上去,当需要时再

交换回来。文件系统模块用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储

设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系统兼容

的多种文件系统格式。进程间通信模块子系统用于支持多种进程间的信息交换方式。网络接口模块提供

对多种网络通信标准的访问并支持许多网络硬件。

这几个模块之间的依赖关系见图 2-3 所示。其中的连线代表它们之间的依赖关系,虚线和虚框部分

表示 Linux 0.11 中还未实现的部分(从 Linux 0.95 版才开始逐步实现虚拟文件系统,而网络接口的支持

到 0.96 版才有)。

由图可以看出,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来
挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后
才可继续运行。例如,当一个进程试图将一数据块写到软盘上去时,软盘驱动程序就可能在启动软盘旋
转期间将该进程置为挂起等待状态,而在软盘进入到正常转速后再使得该进程能继续运行。另外 3 个模
块也是由于类似的原因而与进程调度模块存在依赖关系。
其它几个依赖关系有些不太明显,但同样也很重要。进程调度子系统需要使用内存管理器来调整一
特定进程所使用的物理内存空间。进程间通信子系统则需要依靠内存管理器来支持共享内存通信机制。
这种通信机制允许两个进程访问内存的同一个区域以进行进程间信息的交换。虚拟文件系统也会使用网
络接口来支持网络文件系统(NFS)
,同样也能使用内存管理子系统来提供内存虚拟盘(ramdisk)设备。
内存管理子系统也会使用文件系统来支持内存数据块的交换操作。
若从单内核模式结构模型出发,我们还可以根据 Linux 0.11 内核源代码的结构将内核主要模块绘制
成图 2-4 所示的框图结构。
其中内核级中的几个方框,除了硬件控制方框以外,其它粗线方框分别对应内核源代码的目录组织
结构。
除了这些图中已经给出的依赖关系以外,所有这些模块还会依赖于内核中的通用资源。这些资源包
括内核所有子系统都会调用的内存分配和收回函数、打印警告或出错信息函数以及一些系统调试函数。

Linux-0.11文件系统介绍


http://www.niftyadmin.cn/n/1598916.html

相关文章

Oracle取30分钟,时间段的数据

1.当前时间的后30秒 当前时间:2015/4/9 9:55:00 select sysdate30/(24*60*60) from dual; 查询后:2015/4/9 9:55:30 2.当前时间的后30分 当前时间:2015/4/9 10:27:01 select sysdate30/(24*60) from dual; 查询后:2015/4/9 09:57…

hao123简介【百度百科】

hao123 百科名片 hao123网址之家——最专业权威的上网导航。及时收录包括音乐、视频、小说、游戏等热门分类的优秀网站,与搜索完美结合,提供最简单便捷的网上导航服务,是数千万网民的上网主页。精彩网络生活,从hao123开始。 简介 …

帆软报表通过FR.showDialog打开对话框

var $iframe $("<iframe idinp nameinp width100% height100% scrollingno frameborder0>"); // iframe参数的命名及宽高等 $iframe.attr("src", "${servletURL}?reportletchart/childtest.cpt&opwrite&id"id"&col&quo…

Linux 的进程控制块数据结构

struct task_struct { long state //任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。 long counter // 任务运行时间计数(递减)(滴答数),运行时间片。 long priority // 运行优先数。 任务开始运行时 counterpriority, 越大运行越长。 long signal // 信号。是位图…

关于EasyUI与富文本编辑器结合使用的问题(kindueditor与uueditor)

最近使用easyui玩玩项目&#xff0c;在结合富文本编辑器时遇到了一些问题&#xff0c;很多人&#xff08;在网上看到&#xff09;集成富文本编辑器时常常不能显示&#xff0c; 第一次打开编辑的时候没有问题&#xff0c;但是第二次打开就出错了。为此我进行了一些调试研究。最终…

Postgresql中新建表的时候,如何使用主键使用序列(sequence)的值进行自增长

我们知道&#xff0c;一般的数据库中都有序列&#xff0c;可以使用它对主键进行自增长&#xff0c;hbm框架都是如此&#xff08;比如&#xff0c;hibernate&#xff09;。那么&#xff0c;在不使用hbm框架的情况下&#xff0c;如何使主键进行自增长呢。其实&#xff0c;很简单&…

linux/Makefile 文件

Makefile 文件相当于程序编译过程中的批处理文件。是工具程序 make 运行时的输入数据文件。只 要在含有 Makefile 的当前目录中键入 make 命令,它就会依据 Makefile 文件中的设置对源程序或目标代 码文件进行编译、连接或进行安装等活动。 并发出命令对这些程 make 工具程序…

linux-0.11内核编译

平台&#xff1a;ubuntu10.10 这就是搭建bochs的环境&#xff0c;搭建bochs更操作系统关系不大&#xff0c;我认为重点是在bochs的配置上。配置bochs就需要对bochsrc.bxrc文档的编辑。 在安装bochs之前&#xff0c;需要做的是安装编译环境&#xff1a; code&#xff1a;sudo a…