《深入分析linux内核源代码》笔记:linux 内核结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zztingfeng/article/details/82957237

一、Linux 内核在整个操作系统中的位置

               

     图1 Linux内核在整个操作系统中的位置

1)用户进程

用户进程位于操作系统的最上层,它运行在操作系统上,成为一个操作系统中的一个进程。

2)系统调用接口

应用程序中,可以通过系统调用来调用操作系统内核中特定的进程,系统调用运行在内核态,一般进程运行在用户态,在linux中,系统调用是内核的一部分。

3)Linux内核

内核是操作系统的灵魂,它负责管理磁盘上的文件、内存,负责启动并运行程序,负责从网络上接收和发送数据包等。简言之,内核实际是抽象的资源操作到具体硬件操作细节之间的接口。

4)硬件

这个子系统包括了 Linux 安装时需要的所有可能的物理设备。例如,CPU、 内存、硬盘、网络硬件等。

 

二、Linux内核的作用

1、操作系统的内核提供了一个与计算机硬件等价的扩展或虚拟的计算平台。它抽象了许多硬件细节,程序可以以某种统一的方式进行数据处理,而程序员则可以避开许多硬件细节。

2、普通用户则把操作系统看成是一个资源管理者,在它的帮助下,用户可以以某种易于理解的方式组织自己的数据,完成自己的工作并和其他人共享资源。

3、Linux支持多任务,每一个进程运行起来就好像只有他一个进程 运行在计算机一样,独占内存和其他硬件资源,实际上,内核可以并发的运行多个进程,他们之间互不干扰,合理公平的使用硬件资源。

 

三、Linux内核的抽象结构

Linux子系统由5个子系统组成,如图所示。

 

                 图2 Linux内核子系统之间的关系

1、进程调度(SCHED)控制着进程对CPU的访问。Linux使用基于优先级的进程调度算法选择新的进程。

2、内存管理(MM)允许多个进程安全地共享主内存区域。Linux 的内存管理支持虚拟内存,即在计算机中运行的程序,其代码、数据和堆栈的总量可以超过实际内存的大小,操作系统只将当前使用的程序块保留在内存中,其余的程序块则保留在磁盘上。必要时,操作系统负责在磁盘和内存之间交换程序块。内存管理从逻辑上可以分为硬件无关的部分和硬件相关的部分。硬件无关的部分提供了进程的映射和虚拟内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。

3、虚拟文件系统(VFS)隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,VFS 还支持多达数十种不同的文件系统。虚拟文件系统可分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux 所支持的文件系统,如 ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。

4、网络接口(NET)提供了对各种网络标准协议的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序两部分。网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有相应的设备驱动程序。

5、进程间通信(IPC) 支持进程间各种通信机制。从图2所示可以看出,处于中心位置的是进程调度,所有其他的子系统都依赖于它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统(内存管理,虚拟文件系统及进程间通信)以相似的理由依赖于进程调度。

 

各个子系统之间的依赖关系如下。

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

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

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

4、内存管理与虚拟文件系统之间的关系:内存管理利用虚拟文件系统支持交换,交换进程(swapd)定期地由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。

猜你喜欢

转载自blog.csdn.net/zztingfeng/article/details/82957237