4.操作系统体系结构
1.操作系统分为内核(接近硬件,下层)和非内核(接近软件,上层)
①非内核:GUI等
②内核:操作系统最核心的部分,由内核程序实现内核功能
2.大内核(宏内核):既含有时钟管理、中断处理和原语等与硬件关联紧密的模块;也含有对数据结构进行操作的功能(进程管理、存储器管理和设备管理等)
①性能高:模块间可以直接相互调用(无需使用消息传递的方式)
②结构混乱、难以维护:内核内的功能多
③内核中某个功能出错,就可能导致整个系统崩溃:内核功能联系紧密,相互依赖
3.微内核:仅含有时钟管理、中断处理和原语等与硬件关联紧密的模块
①效率低:各模块相互调用需要通过消息传递的方式;可能需要进行多次CPU状态的转换
②功能少,易于维护:仅含有和硬件联系紧密的模块
③内核中某个功能出错,不会导致整个系统崩溃
4.分层结构:每层仅能调用比自己更低一层的功能(3调用2,2调用1),且不能跨层调用
缺点:
①难以合理定义各层边界:低层在实际情况下可能会用到高层的功能
②效率低:只能逐层进行调用(5→4→3→2→1→0)
优点:
①便于调试和验证:由于每层仅能调用比自己更低一层的功能,因此,基于下一层已经过调试的条件下,仅需对本层进行调试
②易扩充和易维护:层与层之间的接口已经确定,仅需对应上下层的接口进行设定即可完成扩展
5.模块化:内核被划分为多个模块,即内核 = 主模块(内存、进程等等) + 可加载内核模块(驱动等)
优点:
①逻辑清晰、易于维护:每个模块的功能不同(内存、进程等)
②可多模块同时进行开发:确定某个模块对外的接口后,其他模块可以使用该接口
③支持动态加载新的内核模块:添加新模块功能无需对整个内核进行重新编译
④无需消息传递就可以直接调用其他模块的功能,效率高(微内核需要使用消息传递的方式)
缺点:
①模块间的接口定义未必合理:由于模块间可以相互调用,因此,在实际情况下,模块已定义的接口未必能满足其他接口调用的需要
②难以调试和验证:调试过程中难以判断是自身出问题还是调用其他模块导致问题
6.外核:内核负责进程调度和通信;外核负责给内核分配未经抽象(使得内核能够明确知道自己申请的空间在硬盘/内存中的实际位置)的资源(例硬盘和内存的存储空间)
①用户进程可以灵活使用硬件资源
②不需要对硬件资源进行映射
5.操作系统的引导
1.硬件自检:检查是否插内存条/磁盘等
2.扫描分区表:找到活动分区
3.分区表:一种数据结构,记录每个分区的大小和地址范围
4.安装操作系统的分区为活动分区,并使用其启动操作系统,即图中C盘
5.计算机主存有RAM和ROM组成,BIOS(基本输入/输出系统)存放在ROM中,其中最重要的是ROM引导程序(自举程序)
6.RAM一经关机/断电,其中数据就丢失,而ROM不会,根据这一特性,可以令计算机在开机时固定的去ROM的某一区域中启动自举程序:ROM引导程序(自举程序)的作用是指示CPU将磁盘的主引导记录读入内存(即将磁盘引导程序和分区表读入内存)
7.CPU执行主存中的磁盘引导程序MBR → 磁盘引导程序根据分区表判断C盘存储的位置 → 读入C盘的第一部分数据,即引导记录PBR → CPU执行引导记录程序PBR → 找到启动管理器(通常存放在根目录下的某个位置)→ 启动启动管理程序(操作系统初始化程序) → CPU执行启动管理程序 → 启动管理程序完成初始化等一系列工作
8.硬件自检:即硬件是否有问题,例如有无插磁盘/内存条