操作系统知识点总结
计算机系统概述
操作系统的功能是什么?
处理机管理、内存管理、文件管理和设备(I/O)管理。
试解释并发和并行的区别。
并发是指多个事件在同一时间间隔内发生,并行是指多个事件在同一时刻发生。
例如你在9: 00到9: 30仅吃面包,9: 30到10: 00仅写字,那么在9: 00—10: 00这一时间段内,吃面包和写字就是并发的;如果你在9: 00—10: 00左手拿着面包吃,右手写字,那这两个动作就是并行的。
什么是管态和目态?如何从目态切换到管态?
管态又叫系统态、核心态。CPU在管态下有权限执行计算机的任何指令,其资源访问不受限制。操作系统内核程序处于管态。
目态又叫用户态。CPU处于目态时,程序只能执行非特权指令,不能直接使用系统资源,并且只能访问用户程序自己的存储空间。用户编写的程序处于目态。
区分管态和目态是为了保护系统程序。
通过系统调用(使用访管指令),可以从目态切换到管态。此外,程序产生异常或中断时(如除以0,缺页,I/O中断),也会切换到内核态。
进程管理
进程的基本状态切换有哪些?
- 就绪态→运行态。进程被调度后,分配CPU时间片,并使其运行
- 运行态→就绪态。进程时间片用完后,让出CPU,转为就绪态
- 运行态→阻塞态。进程请求某一资源或等待某一事件发生(如I/O完成),使自身阻塞
- 阻塞态→就绪态。进程等待的事件到来时,如I/O操作结束,转为就绪态
进程和线程的区别是什么?
进程是系统资源分配的基本单位,线程是CPU调度的基本单位。
线程可看作一种”轻量级线程”。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,它与所属进程的其他线程共享进程的系统资源。
引入线程的目的是为了减小程序在并发执行时的时空开销,提高操作系统的并发性能。
进程之间的通信方式有哪些?
1)共享存储
- 低级方式:P/V操作,基于数据结构
- 高级方式:开辟共享内存,基于存储区
2)消息传递
- 直接通信:把消息挂到接收进程的消息队列
- 信箱通信:通过中介者转发,类似电子邮件
3)管道通信:使用特殊的pipe文件,一方写入,一方读取
常用的调度方式和算法有哪些?
分为高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)。
- 先来先服务(FCFS)、短作业优先(SJF)、时间片轮转
- 优先级调度:分为抢占式和非抢占式
- 高响应比优先:响应比=(等待时间+要求服务时间)/要求服务时间
- 多级反馈队列调度:一个时间片结束后,未完成的进程转入低一级的就绪队列
死锁的产生条件是什么?如何解决死锁?
死锁产生的必要条件:
- 互斥:资源在同一时间只能被一个进程占有
- 非剥夺:进程在使用完资源之前,不可被抢占
- 请求与保持:进程保持已有的资源,又去申请新的资源
- 循环等待:存在循环等待链,使得每个进程的资源都被下一进程所请求
解决死锁的方法:
- 预防死锁:破坏死锁产生的必要条件,使其无法发生
- 避免死锁:动态分配资源时,用一些算法(如银行家算法)防止系统进入不安全状态
- 死锁的检测与解除:检测到死锁发生后,采取措施(剥夺资源、终止进程)解除之
内存管理
为什么要引入动态重定位?如何实现?
在程序执行过程中,需要将要访问的数据的逻辑地址转换成物理地址。
具体实现方法是增加一个重定位寄存器,装入程序在内存中的起始地址,真正的地址为相对地址与重定位寄存器中的起始地址相加之和,从而实现动态重定位。
内存分区时有哪些策略?有何优缺点?
- 首次适应算法:按地址从大到小排序,分配第一个符合条件的分区
- 循环首次适应算法:在首次适应的基础上,每次从上一次结束的位置开始查找
- 最佳适应算法:按空间从小到大排序,分配第一个符合条件的分区
- 最坏适应算法:按空间从大到小排序,分配第一个符合条件的分区
优缺点:理解原理后,从碎片的产生、是否缺乏大空闲区、排序性能等考虑
页面置换算法有哪些?什么是抖动?
- 先进先出置换算法(FIFO):需要替换页面时,将最早调入的页面调出
- 最近最久未使用置换算法(LRU):记录每个页面上次被访问以来经历的时间,需要替换页面时,将最长时间未被访问的页面调出
- 最近未用算法(CLOCK、NRU):可看作LRU的简化版。为每个页面设置一个使用位,需要替换页面时,将使用位为1的置为0,将第一个使用位为0的页面调出
抖动:是指在页面替换过程中,刚刚调入的页面又被调出,刚刚调出的页面很快又被调入,发生频繁的页面调度行为。
其他概念(比较简单,略)
分页和分段、局部性原理、虚拟存储器
文件管理
常用的磁盘调度算法有哪些?
- 先来先服务(FCFS)
- 最短寻找时间算法(SSTF):总是处理离当前磁头最近的磁道请求,会产生”饥饿”现象
- 扫描算法(电梯算法,SCAN):选择在磁头当前移动方向上最近的磁道请求进行处理
- 循环扫描算法(C-SCAN):在SCAN的基础上,规定磁头单向移动。磁头到达最远端的请求后,快速返回起始端
输入输出管理
I/O控制方式有哪些?
- 程序查询:CPU循环检查外设状态,与外设串行工作,利用率极低
- 中断驱动:I/O设备通过中断请求CPU服务,例如键盘设备
- DMA(直接存储器访问):在I/O设备与内存之间开辟直接的通路,以数据块为基本单位进行传送,数据传送过程由DMA控制器完成,仅在传送开始和结束需要CPU干预
- I/O通道:DMA方式的发展。配备专用的I/O通道处理机,需要的CPU干预更少
什么是SPOOLing技术?举一个实例。
SPOOLing技术又称”假脱机技术”,是在通道技术和多道程序设计基础上产生的,它是一种将独占设备改造成共享设备的技术。
将一台独享的打印机改造成可供多个用户共享的打印机,是SPOOLing的典型应用。
具体做法是:系统对于用户的打印输出,先在输出井申请一个空闲盘块区,并将要打印的数据送入其中,然后将此作业挂在打印队列上。若打印机空闲,输出程序从打印队列中取出作业,将要打印的数据从输出井传送到内存缓冲区,再进行打印。