操作系统教程
1.3 从各种角度看操作系统
1.3.1操作系统的结构
对操作系统结构模型探索
目的——让操作系统更易于调试和维护,保障正确性和可靠性
手段——对操作系统做尽可能细的分割
静态结构:
几个阶段:最初粗略划分(核心与外围)—>核心功能的逐步外移和核心内部的分层—>客户/服务器结构和微核结构
- 第一阶段
**核心:**程序运行级功能实现代码(运行级代码)
完成用户程序运行过程中所需要的操作系统功能,提供程序运行级接口,完成 程序的启动,在用户程序中调用操作系统(系统调用和中断),解决效率和安全问题
**外围:**操作级功能实现代码(操作级代码)
提供操作级接口(命令解释器和实用程序等), 完成 程序的启动(鼠标,命令,批文件),为常用基本操作提供现成实用的程序
~两部分的关系:
(1) 运行级代码完成用户程序运行过程中所需要的操作系统功能,操作级代码提供操作级接口
(2) 在操作级代码中,能调用运行级代码完成的工作就调用,也就是,凡是用户程序和操作级代码运行过程中都要用到的操作系统功能,不要放在操作级代码中,而是放在运行级代码中避免重复。
(操作系统的前3种程序启动方式是通过调用第四种启动方式(程序中启动方式)来实现的,即由命令解释器等操作级代码调用运行级代码来实现前三种启动方式)
(3) 运行级代码在系统态下运行,操作级代码在用户态下运行
(4) 外围功能的代码是硬件无关的(所有硬件共需),核心代码是硬件相关的(由于不同资源的管理不太一样,因此操作系统核心内部由处理机管理、内存管理、I/O管理、外存管理、进程通信这几个部分组成,在不同操作系统关系模型下呈现出不同的关系模式)
-
第二阶段
核心功能逐步外移和核心内部分层
操作系统最重要最基本的管理和服务是在程序运行级提供的,因此代码庞大,需要进一步划分。将运行级代码再逐步划分为多个较小的程序以便于调试和维护,保证程序的正常可靠。也就是,尽可能使核心中的功能外移,而只将不能分离出去的部分称为核心。 -
第三阶段
客户/服务器结构和微核结构
这个阶段中,文件系统,设备管理,主存管理等功能都从核心中分离出来作为服务器进程运行,核心只剩下很少的一些功能,因此称为微核。核心通常为一个文件,例如UNIX中的核心由一个文件组成。
动态结构:
对于采用了并发技术的操作系统,操作系统与用户程序的运行都体现为进程的执行,因此操作系统实际动态运行过程中,还呈现出由若干并发进程构成的动态结构。
该动态结构的特点是:
(1)这些并发进行一直处于不断的建立或撤销和并发执行过程中
(2)这些并发进程中,有些是用户进程(执行用户代码),有些是系统进程(执行系统代码)
(3)这些并发进程由父子进程关系形成一定的进程层次