首页 > 系统相关 >《Linux内核完全注释》学习笔记:2.1 Linux内核模式和体系结构

《Linux内核完全注释》学习笔记:2.1 Linux内核模式和体系结构

时间:2024-05-14 18:45:11浏览次数:25  
标签:操作系统 内存 模块 Linux 进程 2.1 内核

2.1 Linux内核模式和体系结构

操作系统主要由4部分组成:

  • 硬件、
  • 操作系统内核、
  • 操作系统服务
  • 用户应用程序

image

图2-1 操作系统组成部分

用户应用程序:指那些字处理程序、互联网浏览器程序或用户自行编制的各种应用程序;

操作系统服务程序:指向用户提供的服务,被看作是操作系统部分功能的程序。

在Linux操作系统上,这些程序包括:

  • X窗口系统、
  • shell命令解释系统以及
  • 内核编程接口等系统程序;

操作系统内核它主要用于对硬件资源的抽象和访问调度。
目前,操作系统内核的结构模式主要可分为:

  1. 整体式的单内核模式
  2. 层次式的微内核模式

而本书所注释的Linux 0.11内核,则采用了单内核模式。
单内核模式的主要优点:

  • 内核代码结构紧凑、执行速度快,

不足之处主要是:

  • 层次结构性不强。

在单内核模式系统中,操作系统提供服务的流程为:

  1. 应用主程序使用指定的参数执行系统调用指令(int x80),
    • 使CPU从用户态(User Mode)切换到内核态(Kernel Mode),
  2. 然后系统根据参数值调用特定的系统调用服务程序,
  3. 而这些服务程序则根据需要调用底层的支持函数以完成特定的功能。
  4. 在完成了应用程序要求的服务后,操作系统又从内核态切换回用户态,回到应用程序中继续执行后续指令。

因此,单内核模式的内核也可粗略地分为三层:

  1. 调用服务的主程序层
  2. 执行系统调用的服务层
  3. 支持系统调用的底层函数

image

图2-2 单内核模式的简单结构模型

Linux内核主要由5个模块构成,它们分别是:

  1. 进程调度模块
  2. 内存管理模块
  3. 文件系统模块
  4. 进程间通信模块
  5. 网络接口模块。

进程调度模块

用来负责控制进程对CPU资源的使用。
所采取的调度策略

  1. 使各进程能够公平合理地访问CPU,
  2. 同时保证内核能及时地执行硬件操作。

内存管理模块

  1. 用于确保所有进程能够安全地共享机器主内存区,
    同时,
  2. 内存管理模块还支持虚拟内存管理方式:
    • 使Linux的进程可以使用比实际内存空间更多的内存容量。
    • 并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。

文件系统模块

用于支持对外部设备的驱动和存储。
虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节,从而提供并支持与其他操作系统兼容的多种文件系统格式。

进程间通信模块子系统

用于支持多种进程间的信息交换方式。

网络接口模块

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

这几个模块之间的依赖关系见图2-3。其中的连线代表它们之间的依赖关系,虚线和虚框部分表示Linux 0.11中还未实现的部分(从Linux 0.95版才开始逐步实现虚拟文件系统,而网络接口的支持到0.96版才有)。

image

图2-3 Linux内核系统模块结构及相互依赖关系

由图可以看出,所有的模块都与进程调度模块存在依赖关系。(谁指向谁就是谁依赖谁)
因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。
通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可继续运行。
例如,当一个进程试图将一数据块写到软盘上去时,软盘驱动程序就可能在启动软盘加速期间将该进程置为挂起等待状态,而在软盘进入正常转速后再使得该进程能继续运行。另外3个模块也是由于类似的原因而与进程调度模块存在依赖关系。
其他几个依赖关系有些不太明显,但同样很重要。

  • 进程调度子系统需要使用内存管理子系统来调整一些特定进程所使用的物理内存空间。
  • 进程间通信子系统则需要依靠内存管理子系统来支持共享内存通信机制。这种通信机制允许两个进程访问内存的同一个区域以进行进程间信息的交换。
  • 虚拟文件系统
    • 也会使用网络接口来支持网络文件系统(NFS),
    • 同样也能使用内存管理子系统来提供内存虚拟盘(ramdisk)设备。
  • 而内存管理子系统也会使用文件系统来支持内存数据块的交换操作。

若从单内核模式结构模型出发,我们还可以根据Linux 0.11内核源代码的结构将内核主要模块绘制成图2-4所示的框图结构。

image

图2-4 内核结构框图

其中内核级中的几个方框,除了硬件控制方框以外,其他粗线方框分别对应内核源代码的目录组织结构。
除了这些图中已经给出的依赖关系以外,所有这些模块还会依赖于内核中的通用资源。
这些资源包括内核所有子系统都会调用的:

  • 内存分配
  • 收回函数
  • 打印警告或出错信息函数
  • 一些系统调试函数。

标签:操作系统,内存,模块,Linux,进程,2.1,内核
From: https://www.cnblogs.com/Larcvz/p/18190085

相关文章

  • 《Linux内核完全注释》学习笔记:2.2 Linux中断机制
    在使用80x86组成的PC中,采用了两片8259A可编程中断控制芯片。每片可以管理8个中断源。通过多片的级联方式,能构成最多管理64个中断向量的系统。在PC/AT系列兼容机中,使用了两片8259A芯片,共可管理15级中断向量。其级联示意图见图2-5。其中从芯片的INT引脚连接到主芯片的IR2引......
  • MCal工程通用计算式算量表V1.3.2.10 2024.5.14
     1、更新下tab菜单2、增加计算式结果四舍五入,四舍六入的设置,在显示效果-工程结果中选择3、次级计算式增加到20个,欢迎测试。下载地址:www.zawen.net         https://club.excelhome.net/thread-1644206-1-1.html......
  • Linux-硬件信息收集
    使用lshw来做收集。importcopyimportjsonimportos硬件详细报表_dict={}def命令执行(ip:str,cmd:str,port:int=22)->str:'''对指定的IP执行命令,使用ssh方式,bash解释器应该确保对方主机信任本机。返回命令执行的结果(读取的是stdout)'''cmd......
  • Linux-IO监控
    importpymysqlimportosimportreimporttimeimportdatetime'''建表语句:CREATETABLE`r_linux_io_monitor`(`up_date`datetimeDEFAULTCURRENT_TIMESTAMPCOMMENT'监测时间',`ip`varchar(16)DEFAULTNULLCOMMENT'IP地址',......
  • Linux启动流程
    参考链接:https://www.ruanyifeng.com/blog/2013/02/booting.htmlhttps://www.ruanyifeng.com/blog/2013/08/linux_boot_process.htmlhttps://www.runoob.com/linux/linux-system-boot.html第一阶段:计算机启动(硬件启动流程)1.BIOS(BasicInputOutputSystem基本输入输出系统)阶......
  • 在Linux中,如何配置防火墙和安全规则?
    在Linux中,配置防火墙和安全规则通常涉及使用iptables或较新的firewalld工具。以下是使用这两种工具的基本步骤和概念:1.使用iptables配置防火墙规则iptables是Linux内核的Netfilter框架的一部分,用于配置防火墙规则。它通过一系列链(chains)和规则(rules)来决定数据包的处理方式(如允......
  • 在Linux中,什么是入侵检测系统(IDS)和入侵防御系统(IPS)?
    在Linux环境中,入侵检测系统(IntrusionDetectionSystem,IDS)和入侵防御系统(IntrusionPreventionSystem,IPS)是两种关键的网络安全组件,用于增强网络的安全性和防护能力。下面是对这两个概念的详细解释:1.入侵检测系统(IDS)入侵检测系统是一种监控工具,其主要职责是实时或定期监控......
  • kafka_2.13-3.7.0 单机版安装
    [root@localhost~]#adduserkafka[root@localhost~]#passwordkafka-bash:password:commandnotfound[root@localhost~]#ls/homejenkinskafkanacos[root@localhost~]#passwdkafkaChangingpasswordforuserkafka.Newpassword:BADPASSWORD:The......
  • [转]查杀linux隐藏挖矿病毒rcu_tasked
    记录一次项目中挖矿病毒的经历这是黑客使用的批量蔓延病毒的工具,通过如下脚本[[email protected]]#cat/home/pischi/.bash_historycd/root/nvidia-smi;ls-a;cd.cfg;ls-a;wc-lip./key20-fippass22"nproc;nvidia-smi;rm-rf.cfg;mkdir.cfg;cd.cfg;wget193.42......
  • 常用的Linux命令
    grep-rxxx递归的查找目录中的文件内容wc-l统计数量cut-d":"-f6使用特定的分隔符进行分割,并取值grep-E使用正则表达式grep-c统计行数mount挂载chmod设置权限awk{print$1}显示某列find./-name找文件名find/path/to/directory-size+20M找文......