操作系统——笔记day3

内核结构与设计

内核中有什么

内核是计算机资源的管理者,通过这些资源来看看内核应该有什么

资源可以分为硬件资源软件资源

硬件资源:

  1. 总线,负责连接各种其他设备,是其他设备工作的基础
  2. CPU,负责执行程序和处理数据运算
  3. 内存,负责存储运行时的代码和数据
  4. 硬盘,负责长久存储用户文件数据
  5. 网卡,负责显示工作
  6. 网卡,负责计算机之间的通信
  7. 各种I/O设备,如显示器,打印机,键盘,鼠标等

软件资源:

计算机中各种形式的数据,如各种文件、软件程序

综上内核组成的逻辑应该有:

1.管理CPU,由于CPU是执行程序的,内核把运行时的程序抽象成进程,又称进程管理

2.管理内存,程序和数据都要占用内存,内核要小心的分配,释放内存

3.管理硬盘,硬盘主要存放用户数据,内核把用户数据抽象成文件,管理文件,文件需要合理的组织,方便用户查找和读写,所以形成了文件系统

4.管理显卡,负责显示信息,现在都是GUI(图形用户接口),管理显卡就形成了图形系统

5.管理网卡,完成网络通信,网络通信需要各种协议,内核就形成了网络协议栈,又称为网络组件

6.管理I/O设备,在内核中抽象成I/O管理器

除了这些之外为了控制不同的硬件,就要编写对应的代码,我们称为驱动程序

宏内核结构

宏内核就是把以上6点所有的代码经过编译,最后链接在一起,形成一个大的可执行程序

这个大程序中有实现这些功能的全部代码,向用户应用软件提供一些接口(这些接口就是系统API函数),这个大程序会在处理器的特权模式下运行,这个模式通常被称为宏内核模式

宏内核模式下工作原理的一个例子:内存分配

1.应用程序调用内存分配的API函数

2.处理器切换到特权模式,开始运行内核代码

3.内核里的内存管理代码按照特定的算法,分配一块内存

4.把分配的内存块的首地址,返回给内存分配的API函数

5.内存分配的API函数返回,处理器开始运行用户模式下的应用程序,应用程序就得到了一块内存的首地址,并且可以使用这块内存了

微内核结构

把实际的进程管理、内存管理、设备管理、文件管理等服务功能,做成一个个服务进程,和用户进程一样,只是他们很特殊,宏内核提供的功能,在微内核架构里这些服务进程专门负责完成

微内核结构提倡内核功能尽可能少:仅仅只有进程调度,处理中断,内存空间映射,进程间通信等功能

微内核定义了一种进程间通信的机制——消息。应用程序要请求相关服务,就向微内核发送一条与此服务对应的消息,微内核再把这条消息转发给相关的服务进程,接着服务进程完成相关的服务。服务进程的编程模型就是循环处理来自其他进程的消息,完成相关的服务

微内核模式下工作原理的一个例子:内存分配

1.应用程序发送内存分配的消息,发送消息的函数是由微内核提供的,相当于系统API,微内核的API(应用程序接口)相当少,极端情况下只需要两个,一个接收消息的API和一个发送消息的API

2.处理器切换到特权模式,开始运行内核代码

3.微内核代码让当前进程停止运行,并根据消息包中的数据,确定消息发送给谁——发送给内存管理服务进程

4.内存管理服务进程收到消息,分配一块内存

5.内存管理服务进程也会通过消息的形式返回分配内存块的地址给内核,然后继续等待下一条消息

6.微内核把包含内存块地址的消息返回给发送内存分配消息的应用程序

7.处理器开始运行用户模式下的应用程序,应用程序就得到了一块内存的首地址,并且可以使用这块内存

分离硬件的相关性

分层的主要目的和好处在于屏蔽底层细节使上层开发更加简单

分离硬件的相关性,就是要把操作硬件和处理硬件功能差异的代码抽离出来,形成一个独立的软件抽象层,对外提供相应的接口,方便上层开发

我们的选择

先将操作系统内核分为三个大层:

1.内核接口层:定义一系列接口

​ 定义一套UNIX接口的子集

​ 这套接口的代码,就是检查其参数是否合法,参数有问题就返回相关的 错误,接着调用下层完成功能 的核心代码

2.内核功能层:主要完成各种实际功能

​ 进程管理,主要是实现进程的创建、销毁、调度进程

​ 内存管理,在内核功能层中只有内存池管理

​ 中断管理,就是把一个中断回调函数安插到相关的数据结构中,一旦发生相关的中断就会调用这个函 数

​ 设备管理,实现创建设备、销毁设备、访问设备的代码,这些代码调用设备驱动程序,达到操作设备 的目的

3.内核硬件层:主要包括一个具体硬件平台相关的代码

​ 初始化,初始化代码就是内核被加载到内存中最先需要运行的代码,如初始化设备、CPU、内存、中 断的控制

​ CPU控制,提供CPU模式设定、开、关中断、读写CPU特定寄存器等功能的代码

​ 中断处理,保存中断时机器的上下文,调用中断回调函数,操作中断控制器等

​ 物理内存管理,提供分配、释放大块内存、内存空间映射、操作MMU、Cache等

你可能感兴趣的:(os)