操作系统内核特征
- 并发:
并发与并行区别
并发:在一段时间内,有多个程序可以运行
并行:在一个时间点上,有多个程序可以同时执行
- 共享:分时访问,一个时间点某一个内存单元只有一个访问,互斥共享,操作系统带来共享特征
- 同时访问
- 互斥共享
- 虚拟:运用多道程序设计技术,让每个用户都觉得有一个计算机专门为他法务。虚拟化硬件,比如,cpu虚拟化为进程,磁盘虚拟化为文件,内存虚拟化为地址空间
- 异步:
程序不是一直执行到底,而是走走停停,向前速度不可预知的异步的执行过程
只要程序运行环境相同,程序最终运行结果也是相同的
即使异步也要保证结果是正确的
操作系统启动
BIOS上电自检->bootloader->OS
产生源头
- 系统调用:应用程序主动向操作系统发出服务请求
- 异常:是应用程序意想不到的行为,非法指令或者其他坏的处理状态,由操作系统完成
- 中断:来源于外设,来自不同的硬件设备的计时器或网络的中断
处理时间
- 中断:异步
- 异常:同步
- 系统调用:异步或同步
响应
- 中断:持续,对用户应用程序是透明的,几乎察觉不到的
- 异常:杀死或或重新执行
- 系统调用:等待或持续
处理中断:中断编号
硬件处理:
- 设置中断标记,将内、外部时间设置中断标记,中断事件的ID
软件处理:
- 保存当前处理状态
- 中断服务程序处理
- 清除中断标记
- 恢复之前保存的处理状态
处理异常:异常编号
- 保存现场
- 异常处理:
-- 杀死产生异常的程序
-- 重新执行异常指令对应用程序透明 - 恢复现场
操作系统连续内存的分配
内存碎片问题
- 空闲内存不能被利用
- 外部碎片:在分配单元间的未使用内存
- 内部碎片:在分配单元中的未使用内存
简单的内存管理方法
- 当一个程序准许运行在内存中时,分配一个连续的区间
- 分配一个连续的内存区间给运行的程序以访问数据
分配策略:
首次适配:
当应用程序提出申请,请求n个byte,操作系统从低地址到高地址分配第一个可用的空间块
-
简单实现
-
需求:
- 按地址排序的空闲块列表
- 分配需要找到一个合适的分区
- 重分配需要检查,看自由分区能否合并于相邻的空闲分区
- 优势:
- 简单
- 易于产生更大空闲块,向着地址空间的结尾
- 劣势:
- 容易产生外部碎片
- 不确定性
最优适配
当应用程序提出申请,请求n个byte,操作系统从低地址到高地址分配最适合的空间块
- 为了避免对大的空闲块拆分
- 最小化外部碎片的尺寸
- 需求:
- 按尺寸排列空闲块列表
- 寻找一个最合适的分区
- 重分配需要考虑相邻的空闲分区
- 优势:
- 当大部分分配是小尺寸时非常有效
- 比较简单
- 劣势:
- 对外部空间拆分的比较细,产生小的难以利用的外部碎片
- 重分配慢
最差适配
当应用程序提出申请,请求n个byte,操作系统从低地址到高地址分配最大的空间块,避免拆分小块
- 为了避免产生大量微小的碎片
- 需求
- 按尺寸排序空闲块列表
- 分配很快,获得最大分区
- 重分配需要合并相邻的空闲分区,调整空闲块列表
- 优势:
- 分配中大型请求效果最好
- 劣势:
- 一开始就分配大块,在以后需要大块时可能分配不到
- 重分配慢
- 外部碎片