操作系统
进程和线程
进程:程序在一个数据集合上运行的过程,是系统进行资源分配和调度的基本单位,包含程序块、进程控制块(PCB)和数据块三部分组成
- PCB是进程存在的唯一标志,包含进程标识符、状态、位置信息、控制信息、队列指针、优先级、现场保护区等
程序:存在于计算机上的一个或多个可执行的文件,程序执行一次就会产生一个进程,没有程序就没有进程
线程间可共享的内容:内存地址空间、代码、数据、文件等
线程间不可共享的内容:程序计数器、寄存器、栈
进程的状态
- 三态模型:就绪、运行、阻塞
- 三态模型 + 挂起 = 五态模型:活跃就绪、活跃阻塞、静止就绪、运行、静止阻塞
- 一般不存在CPU准备好,而非CPU没准备好的情况。所以可以理解为:CPU在调度时,如果非CPU资源未准备好,则CPU资源不予以分配
信号量与PV操作
进程的同步与互斥
- 间接制约:类似过独木桥,临界资源,临界区(访问临界资源的代码)。资源的限制。
- 直接制约:速度有差异,在一定情况下等待。先后顺序的限制
信号量:全局变量,与PV结合使用
PV操作
- P操作:占用资源的过程,首先信号量-1,申请并占用资源,判断数值是否小于0,检查资源是否充足,小于0表示资源不足,则需要到阻塞队列排队等待,否则不需要等待直接处理即可;
- V操作:释放资源的过程,首先信号量+1,判断是否小于等于0,如果小于等于0(信号量小于0时能表示排队的进程数),则需要在当前进程执行完成后,通知后继进程,唤醒阻塞队列中的等待进程进入就绪状态,如果无等待进程,则执行后续代码
- PV操作必须成对存在,否则会形成死锁
P——对前置资源的检查动作,加锁
V——对后置资源的通知动作,释放锁
前趋图
(一种有向无环图表示进程间制约关系)
- 前趋图转PV图:
箭头流入的点对应一个P操作
箭头流出的点对应一个V操作
死锁
一个进程在等待一件不可能发生的事情,进程会发生死锁,如果一个或多个进程产生死锁,则会造成系统死锁
四大条件
- 互斥
- 保持等待
- 不剥夺
- 环路等待
死锁的避免
- 有序资源分配法
- 银行家算法
死锁资源数计算 N ≥ ∑(mi - 1) + 1,其中,
N:不发生死锁的最小资源数
mi:每个进程正常运行所需资源数
存储管理
页式存储
将程序与内存划分为同样大小的块,以页为单位将程序调入内存
用户程序先访问页表,页表中存放页号和块号,程序根据页表找到对应内存的物理地址
逻辑地址 = 页号 + 页内地址
物理地址 = 页帧号 + 页内地址比如,一个4KB大小的页,表示成2进制,则有04095这么多的页内bit位,即02^12个,对一个给定的逻辑地址 10 1100 1101 1110,
从右往左数,12位即为其页内地址,即 1100 1101 1110为其页内地址,10为其页号优点:利用率高,碎片小,分配及管理简单
缺点:查页表增加了系统开销,可能产生抖动页面淘汰策略
- 先选择状态位为 1 的页
——> 优先考虑访问位为0的页
——> 再考虑修改位为0的页
- 先选择状态位为 1 的页
段式存储
- 按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度可能不一样
- 逻辑段地址:(段号,段内偏移量)
段地址合法性判断,段内偏移量不得超过段长,否则造成逻辑地址到物理地址转换时地址越界 - 优点:多道程序共享内容,各段程序修改互不影响
缺点:内存利用率低,内存碎片浪费大
段页式存储
- 段式与页式的综合体,先分段再分页,1个程序有若干段,每个段中可以有若干页,每个页大小相同,但每个段大小不一。
- 段号和页号限定最大值,不是固定值
- 优点:空间浪费小,存储共享,存储保护,动态连接
缺点:复杂性和开销增加,所需硬件及占用内存增加,执行速度下降
文件管理
索引文件结构
- 直接索引–物理盘块号–去物理地址找到数据,访问 1 次
- 一级间接索引–内容是直接索引,通过直接索引找到物理盘块,访问 2 次
- 二级间接索引–内容是一级间接索引,再找直接索引,再找物理盘块,访问 3 次
- 三级间接索引–内容是二级间接索引,…,访问 4 次
- 此处会有地址空间计算题目
位示图
- 比特位表示占用和空闲,1-占用,0-空闲
- 按字分组
树形目录结构
文件属性
- 包含只读属性、存档属性、系统文件、隐藏文件等
文件名的组成
- 包含驱动器号、路径、主文件名、扩展名
绝对路径和相对路径
- 绝对路径:从盘符开始查找的路劲
- 相对路径:从当前路径开始查找的路径
特殊的操作系统
嵌入式操作系统
硬件平台+支撑硬件+操作系统+支撑软件+应用软件
核心三要素:嵌入性、专用性、计算机系统
特点:专用性强、实时性强、软硬件依赖性强、处理器专用、多种技术紧密结合、系统透明性、系统资源受限、可靠性高、功耗低、可裁剪、可配置、微型化
开发设计:交叉开发环境
宿主机->(以太网、仿真器、USB、串口等)->目标机基于硬件的低功耗设计
- 板级电路选择,处理器选择,总线设计、驱动电路设计、分区分时供电技术
基于软件的低功耗设计
- 优化指令,算法优化,软硬件协同
实时操作系统
调度算法
- 优先级调度算法,预先分配优先级高低,按从高到底顺序调度执行
- 抢占式调度算法,允许高优先级抢占执行
- 时间轮转调度算法,给每个任务分配时间片,时间片结束后释放CPU资源给下一任务
- 最晚截止期调度算法,按照每个任务最接近其截止期末端的时间进行调度
- 最早截止期调度算法,按每个任务的截止期时间,选择最早到截止期头端的任务进行调度
- 大多数实时操作系统的调度算法都是抢占式的
微内核操作系统
- 将传统的操作系统的代码放置到更高等,从操作系统中去掉尽可能多的东西,而只留下最小的核心,称之为微内核(C/S架构)
- 操作系统的内核服务:异常、中断、计时器、IO管理等