操作系统学习总结(用于考研复试)
1.os特性:
并发(并发:同一时间间隔内;并行:同一时刻)共享;虚拟;异步
2.os定义及功能:
定义:计算机资源的管理者。处理机管理;存储器管理;文件管理;设备管理的功能。
3.os为用户提供的接口:命令接口;程序接口(即系统调用)
4.用户态转向核心态的例子(本质:将cpu控制权交给os)
中断;系统调用;发生错误;企图执行特权指令。
5.中断和异常
中断:外中断(如时间片到);异常:内中断/例外/陷入(如运算溢出)
区分依据:是否由指令引起,是则属于内中断
6.系统调用:他是用户程序取得os服务的唯一途径。凡是会影响到其他进程(与资源有关的)的操作都应通过系统调用请求os代为完成。
7.中断处理过程:
硬件自动完成(中断隐指令):关中断(使后几步不被打断),保存断点,中断服务程序寻址
程序完成:保存现场和屏蔽字,开中断,执行中断服务程序(目的),关中断(使后一步不被打断),恢复现场和屏蔽字,中断返回(同时开中断)
8.为什么引入进程、线程以及他们的区别:
进程:程序这个静态概念已经不能如实反映并发执行过程的特征,而且进程也可以更好地使多道程序并发执行提高资源利用率。进程=程序+数据+PCB
线程:属于“轻量级的进程”,可以减少时空开销,提高资源利用率。
区别:
进程:拥有资源的基本单位。系统开销相比线程大得多。
线程:独立调度的基本单位。(线程可以访问其隶属的进程的资源)
9.用户级线程与内核级线程:
用户级线程中内核意识不到线程的存在,进程仍为基本调度单位,所以即使在多核处理器中也不能实现线程的并发执行,而内核级线程可以。
10.进程的状态:
就绪(无处理机有其他);运行(处理机和其他都有);阻塞(处理机和其他都无)
11.进程的管理、通信:(将进程控制用的程序成为原语,它不可中断不可分割)
进程的管理:
①进程的创建(创建原语):申请PCB及初始化;分配资源。
②进程的撤销(撤销原语):删除PCB,回收资源。
③进程的阻塞(阻塞原语):PCB插入阻塞队列。
④进程的唤醒(唤醒原语):PCB插入就绪队列。
进程的通信:(区分高级低级看传输效率)
低级方式:PV操作
高级方式:共享存储。消息队列。管道通信。
12.三级调度(高级=作业调度:分配资源,建立进程。中级=内存调度:挂起激活进程。低级=处理机调度:分配CPU)
作业与进程:要求计算机完成的一串任务称为作业。作业调度时将其从后备队列调入内存,为其建立根进程,根进程又会创建子进程去完成指定任务。
处理机调度算法:
先来先服务(不利于短作业)
短作业优先(不利于长作业)
高响应比优先(综合上述两种的优点):响应比=(等待时间+处理时间)/处理时间
优先级调度
时间片轮转
多级反馈队列(最优,短作业优先且长作业不会饿死):①设置多个队列,1~n队列的优先级逐级递减,而时间片逐级递增。②进入等待的队列先去1级队列的队尾,按先进先出原则。若运行完后进程未结束则去下一级队列的队尾...③当1级队列空时才轮到2级队列。
13.互斥的四种软件实现方式:
单标志(必须交替进入,违背空闲让进)
双标志先检查(可能同时进入临界区,违背忙则等待)
双标志后检查(可能两个都进不了,违背空则让进)
皮特森算法:turn表示谦让标志,=0表让P0先进,=1表让P1先进,最后谁进取决于最后谦让的是谁;flag[2]表示两个进程是否想进入。(违背让权等待)
14.记录型信号量实现同步互斥(同步:有先后制约关系。互斥:相互抢占资源)
P操作:资源数-1,当其<0时加入阻塞队列
V操作:资源数+1,当其<=0时唤醒队头进程
同步中:在需要用到资源的行为前面P,会释放资源的行为后面V。
互斥中:PV操作紧夹使用资源的行为。
15.生产者-消费者问题(既有互斥又有同步):
同步时:需要用前P一下,提供之后V一下。互斥时:PV夹紧资源。
16.读者写者问题(写者与大家都互斥,读者只与写者互斥)
用一个count计数器表示是否是第一个/最后一个读者,是则需要进行资源的请求/释放。
对count的操作需要用mutex进行互斥访问达到一气呵成的效果,否则会死锁。
17.死锁
定义:多个进程因资源竞争而造成的僵局
原因:系统资源的竞争;进程推进非法
必要条件(不满足任意一个则不发生死锁):互斥;不可剥夺;请求并保持;循环等待
解决死锁:
预防:破坏必要条件
避免:银行家算法和安全性算法(先用银行家算法预先分配资源再用安全性算法检测这次分配是安全,安全则正式分配,否则撤回之前的分配)
检测与解除:看资源分配图是否可简化(死锁定理:如果资源分配图可以化简则没有死锁)
18.死锁和饥饿的区别
死锁是多个进程因资源竞争而造成的僵局,而饥饿是进程发生无穷等待的情况。
区别:死锁的进程必须>=2个,而饥饿可以只有一个。死锁进程必须是阻塞状态,而饥饿可以是就绪状态 一直得不到运行。
19.源程序->可执行文件
编译:形成汇编语言
汇编:形成机器语言
链接:形成可执行文件(此时在磁盘上,装入内存才会形成物理地址)
20.链接和装入的三种方式
链接:静态链接,装入时动态链接,运行时动态链接。
装入:绝对装入(编译时产生绝对地址的目标代码);静态重定位(装入时修改指令和数据);动态重定位(需要重定位寄存器的支持,其存放装入模块的起始地址,只有在程序运行时才将相对地址加上寄存器地址得到物理地址)
21.连续内存分配
单一连续分配(内存只有一道程序)
固定分区分配(分区大小可以相等可以不等)
可变分区分配:首次适应(从第一个开始找);循环首次适应(从上次结束的位置开始找);最佳适应(找最小适合的);最坏适应(找最大适合的)
22.非连续内存分配:分页;分段;段页式;
分页的逻辑地址->物理地址:页表寄存器中的页表起始地址+(页号*页表项长度)=块号的地址;块号*块的大小+偏移地址=物理地址。
分段的逻辑地址->物理地址:段表寄存器中的段表起始地址+(段号*段表项长度)=该段的始址;始址+偏移地址=物理地址。
23.分页和分段管理的地址空间维度
分页:一维。分段:二维。
因为页面大小P固定,逻辑地址/P=页号,逻辑地址%P=偏移地址。所以只需给出一个整数即可确定物理地址。
而段的大小不固定,所以需要显示给出段号和段内偏移,即地址空间为二维。
24.分段和分页的区别:
分页:产生内部碎片;逻辑地址一维;页面大小相等;为提高内存利用率。
分段:产生外部碎片;逻辑地址二维;段长不等;为方便编程。
25.虚拟内存管理
为什么引入虚拟内存:在物理上扩展内存相对有限的条件下,可以在逻辑上扩展内存。
虚存空间:min【内外存之和,2^计算机的地址位数】若32位则是2^32,若大于该数则无法寻址,没有意义。
实现方式:请求分页、请求分段、请求段页式。
26.TLB(快表):
采用虚存后,需要访问内存的页表,访存的次数因此增加。为了减少访存的次数,往往将页表中最活跃的几个页表项复制到高速缓冲存储器中(CPU中的寄存器)。这种在高速缓冲存储器中的页表项称为快表。
27.页面置换算法
最佳置换(找最久被使用到的页面换出);先进先出(会出现belady异常即分配的物理块增多而缺页次数也增加的情况);最近最久未使用(往左找);
时钟置换算法(访问位和修改位按00 01 10 11的优先级换出)
28.抖动:
定义:频繁进行页面调度的行为。
原因:内存空间不足;置换算法选择不当;对换信息量过大。
29.磁盘读写操作所需时间
寻道时间+延迟时间+传输时间
磁盘调度算法:先来先服务;最短寻找时间优先;扫描算法(左到右 右到左一直循环);循环扫描算法(左到右一直循环);
30.I/O控制方式:
程序I/O方式(CPU不断测试);
中断驱动方式(允许外设中断CPU,但每个字的传输都需要经过CPU);
DMA方式(以块为单位直接传输数据到内存,只有块的开始和结束需要CPU干预);
通道控制方式(专门负责输入输出的处理机,最大程度减少CPU干预);
31.SPOOLing技术:
是以空间换时间,将独占设备改造为共享设备的技术。
在磁盘上开辟空间用作输入输出井,使得CPU可以不用等待I/O设备,以缓和CPU和I/O设备速度差问题。