操作系统复习指引

操作系统复习指引

tip:主要来自王道考研-操作系统的内容,只提取了框架式的内容,没有细致入微的知识点和图例,建议在学习完操作系统之后再浏览这篇博客,能够帮你回忆和加深知识点,如果你在阅读的过程中对某个名词感到迷茫,那就该去仔细地复习一下它~

目录

一、进程和线程

组成:PCB、程序段、数据段

什么是pcb:用来描述进程、控制进程和管理信息、记录该进程的资源清单、暂存处理机寄存器的内容的数据结构

进程的组织方式:链接(根据状态不同的几个队列)和索引(几张指向进程的索引表)

五个特征:动态、并发、独立、异步、结构

状态迁移:创建、就绪、运行、阻塞、终止

进程控制:使用原语,一气呵成、屏蔽中断。进程的创建、终止、阻塞、唤醒、切换都需要对应的原语

(一)进程通信

共享存储:共享空间、互斥访问,分为基于数据结构和基于存储区两种(后者体量更大)

管道通信(pipe):半双工通信(一个时刻只能一个方向),写满才能读,读空才能写

消息传递:创建消息体,由系统提供发送原语和接收原语,包括直接通信和间接通信(区别是信息不要、要通过中间体-信箱)

(二)线程:轻量级的进程

共享一些数据和代码段,独享栈和寄存器值

切换线程的系统开销小,不用切换段

分类:用户级线程、内核级线程(处理机分配的单位)

(三)处理机调度

高级调度(作业调度):将后备队列的作业调入内存,并创建进程

中级调度(内存调度):将挂起队列(在外存中)中的进程及其数据调回内存

低级调度(进程调度):就绪队列到处理机

作业和进程的区别:作业是用户给出的一个需求,可以由一个或多个进程来实现。

(四)进程调度

主动放弃:正常和异常的终止、主动阻塞(等待io)

被动放弃:时间片用完了(时间片轮转法的调度策略)、更紧急的事情(io中断)、高优先级抢占

不可调度:处理中断的过程中,内核程序临界区、原语操作中

切换过程包括原进程的上下文和数据的保存,以及恢复新进程的数据和寄存器的值

(五)调度算法

1、批处理系统

FCFS(先来先服务):非抢占式,对短作业不利(等很久),不会饥饿

SJF(短作业优先):可抢可不抢,对长作业不利,会饥饿(一直被短作业卡住)

HRRN(高相应比有限):响应比=(等待时间+运行时间)/运行时间,综合二者,不错,不会饥饿

衡量调度算法的几个指标:周转时间=结束时间-提交时间;带权周转时间=周转时间/实际运行时间;等待时间;响应时间

等待时间和响应时间的区别:在抢占式的调度算法中体现,被抢占的进程等待时间会继续加

2、交互式系统

时间片轮转:抢占式,每个进程只允许运行一个时间片,时间片大小的选择很重要

优先级调度:可抢可不抢,会导致饥饿,优先级高的进程先调度,可以在合适的时间调整优先级(等待时间很久)

多级反馈队列:安排多条队列,时间片从小到大,对应优先级也是从高到低,新来的进程放在优先级最高的队列,随着运行,需要时间片多的进程会慢慢移动到优先级低的队列,运行一次就移到下一级的队尾,一条队列的进程想要运行,必须前面所有更高优先级的队列都为空才行,会发生饥饿。被抢占的进程放回该级的队尾(不会降低优先级)

(六)进程同步、进程互斥

通过进程同步来解决进程之间异步性的先后顺序,在进程互斥的基础上进行的,进程互斥的要求是无须的,同步要求有序

进程互斥的四个原则:空闲让进(临界区空闲就得让进程能够访问)、忙则等待(有进程在临界区里,其他进程就要等待)、有限等待(不能一直等,变成了饥饿)、让权等待(在等待的进程可以释放处理机,别占着)

1、进程互斥的软件实现方法:

单标志法(两个进程必须一前一后顺序使用,在退出去给另一个进程解锁,同时也就是给自己上锁)

双标志法(先检查和后检查),先检查再上锁,两个人同时检查通过,不满足忙则等待。先上锁后检查,容易两人互给对方上锁,结果都进不去,不满足空闲让进,有限等待的原则

peterson算法:两个标志一个turn(谦让),主动争取(标志),主动谦让(turn),检查对方要不要进,自己再进

2、进程互斥的硬件实现方法:

中断屏蔽:只适用于操作系统内核

ts指令,tsl指令和swap指令,原理就是使用原语的方式封装双标志法,检查和上锁的过程不被中断(一个时间内只能有一个进程进行检查和上锁)

信号量机制(pv操作):整型信号量(用一个整型作为信号量、表示某种资源数,不满足让权等待);记录型信号量(可以让权等待,维护一个资源变量和等待资源的阻塞队列,block让得不到资源的进程阻塞,当资源可用时,有序让等待的进程wakeup)

信号量实现进程互斥以及进程同步:互斥信号量=1(互斥访问临界区),实现前驱关系的技巧(前操作用v操作将后操作p的数据打开,这样后操作的p只能再前操作结束后才会被唤醒)

(七)预防死锁:破坏死锁的四个形成条件,死锁一定不会产生

破坏互斥条件:spooling技术将临界资源改成共享资源

破坏不剥夺条件:申请资源卡在某一步时立即释放之前拿到的所有资源,处理机主动去抢,会导致之前的工作失效,浪费

破坏请求和保持条件:运行之前分配好所有需要的资源,而不是一类一类分别申请

破坏循环等待条件:a等b、b等c、c等a就形成了循环等待的情况,按编号从小到大的顺序申请资源,但是不方便添加新设备,而且不好编程

(八)避免死锁:银行家算法

在分配资源的时候预分配一下,如果会导致死锁就不分配

(九)死锁检测:

根据一个资源分配图(节点表示资源数,边表示资源分配和资源申请)来判断,依次消除不阻塞进程的边,如果消到最后还有边就说明发生了死锁

解除死锁的方法:剥夺资源、撤销进程、进程回退

二、内存

(一)进程链接和装入

静态链接(装入之前就完成链接)、动态链接(边装入边链接和运行时才链接)

绝对装入(编译就产生绝对地址)、可重定位装入(装入时将逻辑地址转换成物理地址)、动态运行时装入(设置重定位寄存器,在运行时将逻辑地址转换成物理地址)

(二)覆盖和交换技术

如何缩小一个进程在内存中的占用空间:设置固定区和若干个覆盖区(不可能同时被访问的程序段共享一个覆盖区),但是必须由程序员声明覆盖结构,编程麻烦而且对用户不透明

交换技术:内存紧张时,可以换出某些不用的进程,换入新进程,磁盘中设置了对换区用来暂存这些进程

(三)连续分配:为进程分配一个连续的存储空间

固定分区分配:一个分区一个进程,内部碎片,不好控制大小

动态分区分配:会产生细小的外部碎片,可以用紧凑技术来移动(但是时间复杂度很高)

(四)分页存储管理:将内存划分成页,把进程也划分成页,离散分配

分页是满足系统的需要,让系统更加高效

主要是实现地址转换:算出页号,在页表中找到对应该页号偏移量的页表项的值(就是物理块号),物理块号+偏移量就是物理地址

逻辑地址=页号+偏移量

加入tlb(快表)机制,在cache中加入把常用的页表项copy进来,访存的时候先找快表,如果没找到再去内存找

多级页表就是用上面的地址转换的方式找到下一级的子页表的位置,是为了解决一个页表过大的问题的(页表需要连续存储,所以太大的页表不好存放在内存,设计了多级页表那么需要让每一个页表都只占用一个页)

(五)分段存储管理:将内存划分成段(数据段、代码段等)

分页是满足用户的需要,开发更加高效

段大小可以不同,分段是二维(有多个段,段内又有偏移,可以想象成矩阵)的,而分页是一维的

分段更容易实现信息的共享和保护

(六)虚拟存储

根据局部性原理(时间、空间、高速缓存技术),程序不需要全部装入内存就可以运行,运行时根据需要调入数据,内存不够还需要调出

(七)请求分页管理:分页+虚拟存储

页表要加上状态位(是否在内存中)、访问状态位(啥时候访问过,用于调出)、修改位(啥时候修改过)、外存地址等

地址变换不是简单的映射,需要查找页面是否在内存中,以及调页的操作

(八)页面调度算法

OPT:优先淘汰最长时间不会被访问的页面,但是不可实现,不能直到是谁

FIFO:先进先出

LRU:最近最久未使用

CLOCK:找访问位=0的页面,过程中把1变0,这样第二轮扫描一定能找到一个

改进CLOCK:(访问位,修改位),第一轮找00,第二轮找01,过程把访问位置0,找00,找01,一定能找到

(九)页面分配策略:进程刚来的时候给多少页面

固定分配:运行前就决定给多少

可变分配:运行时可变

局部置换:只能换自己的页

全局置换:可以换内存的空闲页

没有固定全局分配

三、文件

(一)有结构文件

顺序文件:记录在物理上顺序存储,包括串结构(无序)和顺序结构(按关键字顺序排序),定长文件可以随机存取(算地址),不方便增删记录

索引文件:用索引表记录每个表项,可以随机存取,增删方便

索引顺序文件:因为索引过多,索引表太大,所以可以把记录分组,索引组头

(二)文件目录发展史

单级目录:整个系统只有一张目录表

两级目录:允许不同用户有自己的目录表,不同用户的文件也可以重名,但是不能对文件进行分类

多级目录(树形结构):可以设置绝对路径(访问硬盘次数很多,因为要一直查硬盘中的索引表),也可以相对路径,不方便文件共享

无环图目录:在树形的基础上加一些有向边,实现文件共享,但是需要为共享结点设置一个共享计数器,在删除的时候方便操作

设立索引节点,减小索引表的内容,让查找索引表的速度变快,索引表项指向索引节点,减小索引表大小=减少磁盘块使用=减少磁盘io

(三)文件在磁盘块中的结构

顺序分配:连续的磁盘块,产生碎片且不易于拓展

隐式链接分配:盘块中有指向下一个盘块的指针,只能顺序访问

显示连接分配:fat表记录指针,链接的方式存放(1-5-8-3-6),可以随机访问

索引分配:建立一个索引表,可以多级索引和混合索引(对大文件有好处)

(四)文件存储空间管理

空闲表法:记录连续分区的起点和盘块数

空闲链表法:链表的结构,分配时从链头拿,回收到链尾

数据位图法:一位代表一个盘块号,其中的值表示是否被占用

(五)文件的基本操作

创建、删除、打开、关闭、读写文件

打开不包括读,是两个过程

(六)文件共享

硬链接:共享的用户的目录项指向同一个索引节点

软链接:存了一个路径,其实是根据路径找到文件(快捷方式)

(七)文件保护

口令(访问密码)

加密保护(文件内容加密,浏览时需要解密)

访问控制(不同的用户有不同的权限级)

四、磁盘

盘片:一个物理的碟子,”光碟“

磁盘:若干个盘片圆心串起来

盘面:一个盘片有两面

磁头:一个盘面就有一个磁头,用来读写数据的

磁道:盘面上被划分的一个一个同心圆环,每一个都是一个磁道

扇区:一个磁道被分成若干个扇区

柱面:不同盘片距离圆心相同距离的磁道组成的一个圆柱桶

(一)如何读写:启动磁头、寻道、旋转、读写,每一步都需要时间

(二)磁盘调度算法:多个请求下的寻道选择算法

先来先服务(FCFS):

最短寻找时间优先(SSTF):每一步都是找当前最短距离的磁道,会饥饿

扫描算法(SCAN):移动到最边缘才改变方向

循环扫面算法(CSCAN):移动到最边缘,回到另一个边缘,不改变方向

LOOK算法:是scan的改进,移动到最后一个任务,改变方向

C-LOOK算法,是cscan算法的改进,移动到最后一个任务,回到最前的任务,不改变方向

(三)减少延迟时间的方法

一个磁道上的扇区交替编号,连续读写的时候会有读写的延迟,顺序排布因为磁头读写的延迟而错过,需要多转一圈

错位命名,相邻盘面的扇区编号也要错位,原理类似

把连续的数据存在同一个柱面上,不用寻道时间

五、io

(一)读写方式(目的要减少IO阶段对cpu的依赖,让处理器的效率更高)

程序直接控制方式:cpu不断发出轮询,判断io进展,以字为单位

中断驱动方式:发送IO请求和IO完成的时候要cpu,以字为单位

DMA方式:CPU发出IO命令,IO完成后,DMA发出中断信号,以块为单位可以是连续的多个块,这也是DMA的作用

通道(弱化版cpu)控制:CPU发出IO命令,通道程序负责完成IO,放回中断信号,一组块,可以不连续

(二)设备分配与回收

一个通道控制多个控制器,一个控制器控制多个设备

(三)缓冲区的概念

感谢你阅读到这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值