一、逻辑结构
- OS的设计和实现思路
种类
- 整体式结构
- 层次式结构
- 微内核结构(客户/服务器结构)
1、整体式结构
以模块为基本单位构建
特点:
- 模块设计、编码和调试独立
- 模块调用自由
- 模块通信多以全局变量形式完成
缺点:
- 信息传递随意,维护和更新困难
2、层次结构
例子:TCP/IP协议栈
所有的功能模块按照调用次序排成若干层,相邻层间只有单向依赖或单向调用。
层次原理
- 硬件相关——最底层
- 外部相关——最外层
- 中间层——调用次序或消息传递顺序
- 共性的服务——较低层
- 活跃功能——较低层
优点:
- 结构清晰,避免循环调用
- 整体问题局部化,系统的正确性容易保证
- 有利于操作系统的维护、扩充、移植
3、微内核结构
操作系统=微内核+核外服务器
微内核:
- 足够小,提供OS最基本的核心功能和服务
- 实现与硬件紧密相关的处理
- 实现一些较基本的功能
- 负责客户和服务器间的通信
核外服务器
- 完成OS的绝大部分服务功能,等待应用程序提出请求
- 由若干服务器或进程共同构成(例:进程/线程服务器,虚存服务器,设备管理服务器,以进程形式运行在用户态)
Linux就是一个典型的单体内核
Minix OS 典型的微内核结构。
二、CPU的态
支持操作系统的最基本硬件结构
- CPU
- 内存
- 中断
- 时钟
CPU态(Mode)
- CPU的工作状态
- 对资源和指令使用权限的描述
态的分类
核态(Kernel mode)
- 能够访问所有资源和执行所有指令
- 管理程序/OS内核
用户态(User mode,目态)
- 仅能访问部分资源,其他资源受限
- 用户程序
管态
- 介于核态和用户态之间
用户态和核态之间的转换
用户态向核态的转换
- 用户请求OS提供服务
- 发生中断
- 用户进程产生错误(内部中断)
- 用户态企图执行特权指令
核态向用户态转换的情形
- 一般是执行中断返回:IRET
硬件和OS对CPU的观察
- 硬件按“态”来区分CPU状态
- OS按“进程”来区分CPU状态
存储器
存储程序和数据的部件
分类:
按存储器(半导体存储器)读写工作方式
- RAM
- ROM
按存储元的材料
- 半导体存储器(长做主存)
- 磁存储器(磁带,磁盘)
- 光存储器(光盘)
存储体系
理想存储体系:速度快,容量大,成本低
实际存储体系
- 寄存器
- 高速缓存
- 主存
- 辅存
分级存储系统的工作原理
CPU读取指令或数据时的访问顺序
- 访问缓存(命中,HIT)
- 访问内存(没有命中,MISS)
- 访问辅存(缺页,PAGE_FAULT)
三、中断机制
中断
定义:指CPU对突发的外部事件的反应过程或机制
引入中断的目的
- 实现并发活动
- 实现实时处理
- 故障自动处理
一些概念
中断源和中断类型
- 引起系统中断的事件叫中断源
- 中断类型
强迫中断:程序没有预期
自愿中断:程序有预期的
- 中断类型
外中断(中断):由CPU外部事件引起
内中断(俘获):由CPU内部事件引起
外中断:
- 不可屏蔽中断:中断的原因很重要,CPU必须响应
- 可屏蔽中断:中断原因不是很重要,CPU可以不响应
断点:
程序中断的地方,将要执行的下一条指令的地址
现场:
程序正确运行所依赖的信息集合
- 相关寄存器
处理过程
- 现场的保护:进入中断服务程序之前,栈
- 现场的恢复:退出中断服务程序之后,栈
中断响应过程
- 识别中断源
- 保护断点和现场
- 装入中断服务程序的入口地址
- 进入中断服务程序
- 恢复现场和断点
- 中断返回:IRET
实质:
- 交换指令执行地址
- 交换了CPU的态
- 工作
现场保护和恢复
参数传递(通信)