操作系统
1 操作系统的逻辑结构
1.1 逻辑结构
OS的设计和实现思路
1.2 逻辑结构的种类
1.2.1 整体式结构
以模块为基本单位来构建——编程语言的基本编程思想
从图中可以看出,模块之间存在互相调用,即双向的调用;但是对于硬件来说,只存在单向的调用。
1、特点
(1)模块设计、编码和调试相互独立——可以并行开发,不同人设计不同的模块
(2)模块调用自由
(3)模块通信多以全局变量形式完成——对于全局变量的访问是否要进行互斥和同步。因为它此时是一个共享资源。
2、缺点
信息传递随意,维护和更新困难——模块之间的调用关系很难捋清楚
1.2.2 层次式结构
相邻层之间只有单向的依赖和单向的调用
每一层的实现只依赖于它的下一层;每一层为它的上一层提供服务
1、分层原则
硬件特性——最底层
外部特性——最外层
中间层——调用次序或消息传递顺序
共性的服务——较低层
活跃的功能(被频繁调用的功能)——较低层
2、优点
(1)结构清晰,避免循环调用——单向的调用
(2)整体问题局部化,系统正确性容易保证——分层开发
(3)有利于操作系统的维护、扩充、移植——兼容系统时,只需要修改硬件层
3、分层的优点
(1)各层次间是独立的。上层不知道下层是如何实现的,只需要下层提供的服务接口。上层的工作不会影响下层的工作。只要保证接口不变,可以随意调整整层的工作。
(2)灵活性好。某一层改变,只要层间接口关系保持不变,不影响它的上层,也不响应它的下层。
(3)各层可以得到最好的实现。
(4)易于实现和维护。进行调试和维护时,可以对每一层进行单独的调试。
(5)能促进标准化工作。
1.2.3 微内核结构(客户/服务器结构)
操作系统=微内核+核外服务器
1、微内核
足够小,提供OS最基本的核心功能和服务
(1)实现与硬件紧密相关的处理
(2)实现一些较基本的功能
(3)负责客户和服务器间的通信
2、核外服务器
完成OS的绝大部分功能,等待应用程序提出请求。
由若干服务器或进程共同构成
例如:进程/线程服务器,虚存服务器,设备管理服务器等,以进程的形式运行在用户态。
优点——非常方便地扩充新的功能,只需要在核外服务器上新加一个新的进程
1.3 操作系统
1.3.1 Linux——单体内核操作系统
1、单体内核操作系统
将OS的全部功能都做进内核中,包括调度、文件系统、网络、设备驱动器、存储管理。
单体内核是指在一大块代码中实际包含了所有操作系统功能,并作为一个单一进程运行,具有唯一地址空间。
2、缺点
移植性差(对硬件耦合度高)
1.3.2 Minix OS——微内核结构(4000行代码)
www.minix3.org(开源代码)
1、缺点
缺少多线程
2 操作系统的功能
支持操作系统最基本的硬件结构
(1)CPU
(2)内存
(3)中断
(4)时钟
2.1 CPU的态
2.1.1 CPU态
CPU的工作状态——对资源和指令使用权限的一种描述
1、态的分类
(1)核态(Kernel Mode)
能访问所有资源和执行所有指令
管理程序/OS内核
(2)用户态(User Mode)
仅能访问部分资源,其他资源受限
用户程序
(3)管态(Supervisor Mode)——监督人,主管人
介于核态和用户态之间
2、态的转换
(1)用户态向核态转换
用户请求OS提供服务——CPU执行OS指令
发生中断
用户进程产生错误(内部中断)
用户态企图执行特权指令
(2)核心向用户态转换的情形
一般执行中断返回
2.1.2 硬件和OS对CPU的观察
硬件按“态“来区分CPU状态
OS按“进程”区分CPU态
1、Intel CPU的态
Ring0~Ring3——Ring0最核心,Ring3最外层
程序段有一个请求特权级RPL和描述符特权级DPL——程序段之间的访问会比较之间的RPL和DPL。
2.2 存储器
存储程序和数据的部件
2.2.1 读写方式
RAM
ROM
2.2.2 与CPU的联系
主存:直接和CPU交换信息
辅存:不能直接和CPU交换信息
2.2.3 存储体系
不同类型存储设备混搭而成
寄存器——最快,最贵
高速缓存
主存
辅存——最慢
1、CPU读取指令或数据时的访问顺序
(1)访问缓存(命中,HIT)
(2)访问内存(没命中,MISS)——缓存没有为未命中
(3)访问辅存(缺页,PAGE_FAULT)——内存没有为缺页
访问缓存;未命中,访问主存;缺页,访问辅存
2.3 中断机制
中断——指CPU对突发的外部事件的反应过程或机制
CPU收到外部信号(中断信号)后,停止当前工作,转去处理外部事件,处理完毕后回到原来的中断处(断点)继续原来的作用。
2.3.1 引入中断的目的
1、实现并发活动
CPU和外设并行工作;让两个程序并发运行,通过时钟的切换,使得两个程序并发使用CPU——时钟产生一个中断信号,通知CPU,让CPU把使用权切换到另外一个程序。
2、实现实时处理
3、故障自动处理
2.3.2 中断源和中断类型
引发系统中断的事件成为中断源
1、中断类型
(1)强迫性中断
程序没有预期,比如I/O。
(2)自愿中断
程序有预期,比如执行访管指令(访问内核)。
(1)外中断(中断)
由CPU外部事件引起
不可屏蔽中断,可屏蔽中断
(2)内中断(俘获)
由CPU内部事件引起——访管中断,程序中断。溢出等
2、断点
程序中断的地方,将要执行下一指令的地址
CS:IP——寄存器
3、现场——上下文
程序正确运行所依赖的信息集合——相关寄存器
4、现场的两个处理过程
(1)现场保护——进入中断服务程序之前,入栈
(2)现场恢复——退出中断服务程序后,出栈
2.3.3 中断响应的实质
1、交换指令的执行地址
2、交换CPU的态
现场保护和恢复;进入中断程序传递参数,以及中断程序返回一些参数