进程管理
- 三态模型:就绪->运行->等待->就绪
就绪:有资源没有cpu分配,有CPU->运行
运行:资源和CPU都有,时间片到->就绪,等待某个事件->等待
等待:资源和CPU都没有,有资源->就绪 - 五态模型:加入人为操作-静止就绪和静止阻塞(等待)
运行->人为搁置->静止就绪
静止就绪->恢复或激活->活跃就绪
活跃阻塞(等待)->挂起->静止阻塞(等待)
静止阻塞(等待)->恢复或激活->活跃阻塞(等待)
静止阻塞(等待)->等待时间发生->静止就绪进程的同步与互斥
互斥:同一时刻只允许某一个进程使用这个资源
同步:等待所有进程都完成
前驱图基本理念
表达完成的一些列活动先后的约束关系
PV操作
-
临界资源:进程对其互斥共享的资源
-
临界区:访问临界资源的代码段
-
信号量:一个变量,标记当前有多少资源或有多少线程在阻塞。
-
P:分配一个资源,信号量-1。锁住一个资源,完成后释放。
-
V:释放一个资源,信号量+1。释放意味要唤醒等待的资源。
某书店有一个收银员,该书店最多允许n个购书者进入。将收银员和购书者看做不同的进程,其工作流程如图6-3所示。利用PV操作实现该过程,设置信号量S1、S2和Sn,初值分别为0,0,n。则图6-3中a1、a2、b1和b2应分别填入()。
收银员正常状态是等待,等待一个书的资源此线程才能被唤醒。
付款时,购书者就会提供一个书的资源用以唤醒收银员进程。
因此a1是V(s1)释放一个书的资源给收银员进程,b1做P(s1)操作锁定这个进程继续执行。完毕时,b2做V(s2)操作,释放一个付款证明的资源给购书者,购书者获取证明做P(s2)唤醒购书者这个线程继续操作离开书店的动作。
思路:假设先进行某个进程,会遇到什么问题,需要什么资源。进行另一个进程有会遇到什么问题需要什么资源。
死锁
银行家算法
计算:哪条流程不产生死锁。
存储管理
分区存储组织:
- 首次适应算法
- 最佳适应算法
- 最差适应算法
- 循环首次适应算法
页式存储:
所有页的大小都相同
页式存储计算:
根据页面大小计算哪几位是页内地址,页内地址即是物理地址的页内地址。
剩下的位是页号,通过页号在表中查找块号,拼接起来就是物理地址。
要淘汰哪个页面就找在内存中的且访问位为0的页。
段式存储:
有利于共享,因为其中的每个function都是一块完整的内存。缺点是碎片浪费。
段页式存储:
复杂度高
快表:
小容量的相联存储器(按内容存取)效率高。快表放在cache中,慢表放在内存中。
页面淘汰算法:
先进先出算法FIFO
最近最早使用算法LRU
总共6个页面,每个页面查表一次,访问一次,12次。
指令默认一次性读入内存,数据2次中断。
索引文件结构
索引中存放物理盘块的地址:
树形目录结构:绝对相对路径
位视图法
0、1、2。。。n个字,哪个字的哪个位代表几号物理块是否被使用。字长32代表一个字32位。相当于位置表,告诉你哪个位置是否被占用。
注意位置和索引的转换。
数据传输控制方式:
内存和外设之间的数据传输。
- 程序控制方式(程序查询方式):CPU介入过多,很多情况需要CPU介入。由CPU发出查询指令,查看外设是否传输完毕,外设不主动发送。
- 程序中断方式:主动性强一点,外设完成数据传输,会发送中断,系统会做下一步处理。
- DMA(直接存取控制方式):由专门的控制器监控,CPU只在开头做一些工作,待到DMA完成再由CPU接手。
Spooling技术:将文件放入缓冲区,避免互斥共享冲突。
微内核操作系统:可靠、稳定、安全。因为只把最核心的东西放在内核中。将不必要的作为外设。有点类似微服务。 核心态严重,用户态不严重。核心态是与内核紧密关联的。