您的位置 首页 解答

深化linux内核架构 Linux内核架构剖析解读

深入linux内核架构 Linux内核架构分析解读-概述 通常地,Linux操作系统如下图所示,由四大子系统组成: 用户应用层: 特定Linux系统上使用的应用程序集会有所不同,具体取决于计算机系统的用途,但典型示例包括文字处理应用程序和Web浏览器,嵌入式Linux往往会进行大量的裁剪,将不需要的应用裁剪掉。 O/S 服务层: O/S服务通常被认为是操作系统的一部分(窗口系统,命令外壳等);此外,该子系统还包含内核的编程接口(编译器工具和库d) Linux内核层:这是本文关注的主要子系统,内核抽象

  概述

  一般地,Linux操作体系如下图所示,由四大子体系组成:

  

  用户运用层: 特定Linux体系上运用的运用程序聚会有所不同,详细取决于核算机体系的用处,但典型示例包括文字处理运用程序和Web浏览器,嵌入式Linux往往会进行很多的裁剪,将不需求的运用裁剪掉。

  O/S 服务层: O/S服务一般被认为是操作体系的一部分(窗口体系,指令外壳等);此外,该子体系还包括内核的编程接口(编译器东西和库d)

  Linux内核层:这是本文重视的首要子体系,内核笼统并调控对硬件资源(包括CPU)的拜访。

  硬件操控层:该子体系由Linux装置中的一切或许的物理设备组成;例如,CPU,内存硬件,硬盘和网络硬件都是该子体系的成员

  2.内核架构

  2.1 内核之效果

  Linux内核为用户进程供给了虚拟机接口。 进程编程无需知道核算机上装置了什么物理硬件,Linux内核将一切硬件笼统为共同的虚拟接口。

  此外,Linux以对用户进程通明的方法支撑多使命:每个进程都能够像它是核算机上仅有的进程相同作业,而且专用于占用主内存和其他硬件资源。内核实际上一起运转多个进程,并担任中介对硬件资源的拜访,以便在保护进程间安全性的一起,每个进程都具有公正的拜访权限。

  2.2 内核之结构

  

  内核首要由以下五大组成部分:

  进程调度器(SCHED)担任操控对CPU的进程拜访。调度程序履行一项调度战略,以保证进程能够公正地拜访CPU,一起保证内核准时履行必要的硬件操作。

  内存办理器(MM)答应多个进程安全地同享机器的主内存体系。此外,内存办理器还支撑虚拟内存,该虚拟内存答应Linux支撑运用的内存量超越体系可用内存的进程。运用文件体系将未运用的内存换出到持久性存储,然后在需求时交流回来。

  虚拟文件体系(VFS)经过为一切设备供给通用文件接口来笼统化各种硬件设备的详细信息。此外,VFS支撑几种与其他操作体系兼容的文件体系格局。

  网络接口(NET)供给对几种网络规范和各种网络硬件的拜访。

  进程间通讯(IPC)子体系完结在单个Linux体系进步行进程间通讯的多种机制。

  从依靠性的视点剖析:

  进程调度程序子体系运用内存办理器为康复特定进程的特定进程调整硬件内存映射。

  进程间通讯子体系依靠于内存办理器来支撑同享内存通讯机制。此机制答应两个进程除了拜访其一般的私有内存之外,还拜访公共内存的区域。

  虚拟文件体系运用网络接口来支撑网络文件体系(NFS),而且还运用内存办理器来供给ramdisk设备。

  内存办理器运用虚拟文件体系来支撑交流;这是内存办理器依靠进程调度程序的仅有原因。当某个进程拜访当时已换出的内存时,内存办理器会向文件体系宣布恳求,从持久性存储中获取内存,并挂起该进程。

  2.3 内核之重要数据结构

  使命链表(Task List):流程调度程序为每个活动的流程保护一个数据块。这些数据块存储在称为使命列表的链接列表中。进程调度程序一直保护一个指示当时活动进程的当时指针。

  内存映射(memry map):内存办理器根据每个进程存储虚拟地址到物理地址的映射,还存储有关怎么获取和替换特定页面的其他信息。此信息存储在内存映射数据结构中,该结构存储在流程调度程序的使命列表中。

  索引节点(I-node):虚拟文件体系运用索引节点(索引节点)表明逻辑文件体系上的文件。索引节点数据结构存储文件块号到物理设备地址的映射。假如两个进程翻开了相同的文件,则能够在多个进程之间同享I节点数据结构。同享是经过两个使命数据块指向相同的i节点来完结的。

  数据衔接(Data Connection) 一切数据结构都植根于流程调度程序的使命列表。体系上的每个进程都有一个数据结构,该数据结构包括一个指向其内存映射信息的指针,以及指向代表一切翻开文件的i节点的指针。最终,使命数据结构还包括指向数据结构的指针,该数据结构表明与每个使命相关的一切翻开的网络衔接。

  3.各子体系架构剖析

  3.1 进程调度器架构

  进程调度器是Linux内核中最重要的子体系。其意图是操控对核算机CPU的拜访。这不只包括用户进程的拜访,还包括其他内核子体系的拜访。

  

  由上图可知,进程调度器可分为四大模块:

  调度战略模块担任判别哪个进程能够拜访CPU;规划该战略是为了使进程能够公正地拜访CPU。

  体系结构相关模块特定于体系结构的模块规划有一个公共接口,用于笼统任何特定核算机体系结构的详细信息。这些模块担任与CPU通讯以挂起和康复进程。这些操作触及知道每个进程需求保存哪些寄存器和状况信息,并履行汇编代码以履行挂起或康复操作。

  体系结构无关模块与体系结构无关的模块与战略模块进行通讯,以确认下一步将履行哪个进程,然后调用特定于体系结构的模块以康复恰当的进程。此外,此模块调用内存办理器以保证为康复的进程正确复原了内存硬件

  体系调用接口模块答应用户进程仅拜访内核显式导出的那些资源。这将用户进程对内核的依靠性限制为一个界说杰出的接口,虽然其他内核模块的完结产生了改变,该接口很少更改

  进程调度器保护一个数据结构,即使命列表,每个活动进程具有一个条目。此数据结构包括满足的信息来暂停和康复进程,但还包括其他记帐和状况信息。该数据结构可在整个内核层揭露运用。

  如前所述,进程调度程序将调用内存办理器子体系。因而,进程调度程序子体系依靠于内存办理器子体系。此外,一切其他内核子体系都依靠进程调度程序来挂起和康复进程,一起等候硬件恳求完结。这些依靠联系经过函数调用和对同享使命列表数据结构的拜访来表明。一切内核子体系都读取和写入代表当时使命的数据结构,然后导致整个体系中的双向数据流。

  除了内核层中的数据和操控流之外,O / S服务层还为用户进程供给了一个接口,用于注册计时器告知。这对应于[Garlan 1994]中描绘的隐式履行体系结构款式。这导致操控从调度程序流向用户进程。康复休眠进程的一般状况在正常状况下不视为操控流程,因为用户进程无法检测到此操作。最终,调度程序与CPU通讯以挂起和康复进程。这导致数据流和操控流。CPU担任中止当时正在履行的进程,并答应内核调度另一个进程。

  3.2 内存办理器架构

  内存办理器子体系担任操控对硬件内存资源的进程拜访。这是经过硬件内存办理体系完结的,该体系供给了进程内存引证与机器物理内存之间的映射。内存办理器子体系在每个进程的基础上保护此映射,以便两个进程能够拜访相同的虚拟内存地址并实际运用不同的物理内存方位。此外,内存办理器子体系还支撑交流。它将未运用的内存页面移至持久性存储,以使核算机支撑的虚拟内存多于物理内存。

  3.2.1 模块结构剖析

  

  内存办理器首要由以下三个模块组成:

  体系结构相关模块为内存办理硬件供给了虚拟接口

  体系结构无关模块履行一切的每个进程映射和虚拟内存交流。此模块担任确认在呈现页面过错时将回收哪些内存页面-因为没有预期将需求更改此战略,因而没有独自的战略模块。

  体系调用接口模块供给对用户进程的受限拜访。该接口答应用户进程分配和开释存储,还能够履行内存映射文件I / O。

  3.2.2 从数据表征的视点剖析:

  内存办理器存储物理地址到虚拟地址的每个进程的映射。该映射作为参阅存储在流程调度程序的使命列表数据结构中。除了此映射之外,数据块中的其他详细信息还告知内存办理器怎么获取和存储页面。例如,可履行代码能够将可履行映像用作后备存储,可是必须将动态分配的数据备份到体系页面文件中。最终,内存办理器在此数据结构中存储权限和记帐信息,以保证体系安全。

  3.2.3 数据流,操控流和依靠联系

  内存办理器操控内存硬件,并在产生页面过错时从硬件接纳告知-这意味着内存办理器模块和内存办理器硬件之间存在双向数据和操控流。别的,内存办理器运用文件体系来支撑交流和内存映射的I / O。此要求意味着内存办理器需求对文件体系进行进程调用以存储和从持久性存储中获取内存页面。因为无法当即完结文件体系恳求,因而内存办理器需求暂停一个进程,直到将内存换回停止。此要求导致内存办理器对进程调度程序进行进程调用。相同,因为每个进程的内存映射都存储在进程调度程序的数据结构中,因而在内存办理器和进程调度程序之间存在双向数据流。用户进程能够在进程地址空间内设置新的内存映射,并能够注册自己以在新映射的区域内告知页面过错。这引入了从内存办理器到体系调用接口模块再到用户进程的操控流。从传统意义上讲,没有来自用户进程的数据流,可是用户进程能够运用体系调用接口模块中的挑选体系调用从内存办理器中检索某些信息。

  3.3 虚拟文件体系架构

  虚拟文件体系旨在供给存储在硬件设备上的数据的共同视图。核算机中简直一切的硬件设备都是运用通用设备驱动程序接口表明的。虚拟文件体系进一步开展,并答应体系办理员在任何物理设备上装置一组逻辑文件体系中的任何一个。逻辑文件体系促进与其他操作体系规范的兼容性,并答应开发人员运用不同的战略来完结文件体系。虚拟文件体系笼统了物理设备和逻辑文件体系的详细信息,并答应用户进程运用通用接口拜访文件,而不用知道文件驻留在哪个物理或逻辑体系上。

  除了传统的文件体系方针之外,虚拟文件体系还担任加载新的可履行程序。该责任由逻辑文件体系模块完结,这使Linux支撑多种可履行格局。

  故简言之:

  笼统物理设备和逻辑文件体系的详细信息,供给公共拜访接口。

  供给通用的设备驱动程序接口。

  加载新的可履行程序。

  3.3.1 模块结构剖析

  

  可分为四大模块:

  公共驱动笼统模块 因为存在很多不兼容的硬件设备,因而存在很多的设备驱动程序。Linux体系最常见的扩展是添加了新的设备驱动程序。设备独立接口模块供给了一切设备的共同视图。

  逻辑文件体系模块,每个支撑的文件体系都有一个逻辑文件体系模块。

  体系独立接口层供给了硬件资源与硬件和逻辑文件体系无关的视图。该模块运用面向块或面向字符的文件接口显现一切资源。

  体系调用接口层为用户进程供给对文件体系的受控拜访。虚拟文件体系仅将特定功用导出到用户进程。

  3.4 网络接口层架构

  网络子体系答应Linux体系经过网络衔接到其他体系。支撑许多或许的硬件设备,以及能够运用的许多网络协议。网络子体系笼统了这两个完结细节,因而用户进程和其他内核子体系能够拜访网络而不用知道正在运用什么物理设备或协议。

  3.4.1 模块结构组成

  

  网络设备驱动程序担任与硬件设备通讯。每个或许的硬件设备都有一个设备驱动程序模块。

  设备无关的接口模块供给了一切硬件设备的共同视图,因而子体系中的更高等级不需求特定的运用硬件常识。

  网络协议模块担任完结每种或许的网络传输协议。

  协议无关接口模块供给独立于硬件设备和网络协议的接口。这是接口模块,其他内核子体系运用该接口模块拜访网络,而无需依靠特定的协议或硬件。

  简言之,

  网络设备驱动完结底层硬件的操控

  设备独立接口层为上层供给对底层设备驱动层完结一致拜访接口

  网络协议层完结不同的网络协议

  协议独立接口层用以笼统躲藏不同硬件、不同网络协议

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/94252.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部