考研复试面试准备——操作系统篇
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
考研复试⾯试准备——操作系统篇
⽬录
第1章——计算机系统概述
什么是操作系统
控制和管理整个计算机系统硬件和软件资源,合理组织、调度计算机的⼯作与资源分配,进⽽为⽤户和其他软件提供⽅便接⼝和环境的程序集合
操作系统的功能
1. 管理计算机资源(处理机、存储器、⽂件、设备)
2. 作为⽤户和硬件之间的接⼝
3. ⽤作扩充机器
多道批处理系统是什么,以及其特点
将作业成批送进内存,并由作业调度程序⾃动选择作业运⾏
特点:多道、宏观并⾏、微观串⾏、⽆⼈机交互、响应时间长
分时操作系统是什么,以及特点
将处理器运⾏时间分成很短的时间⽚,按时间⽚轮流把处理器分配给各联机作业使⽤
特点:多⽤户、⼈机交互、响应时间短
并⾏与并发的区别
并⾏指同⼀时刻发⽣,并发指同⼀时间段发⽣
什么是访管指令、访管中断
⽤户在⽤户态执⾏访管指令,产⽣访管中断,进⼊内核态
什么是特权指令、⾮特权指令
在⽤户态下执⾏的是⾮特权指令,在内核态下执⾏的是特权指令
异常和中断的区别
异常(内中断):源于CPU执⾏指令内部的事件(缺页、访管指令,算数溢出)
中断(外中断):来⾃CPU执⾏指令以外的事件,与当前运⾏的程序⽆关(时钟中断)
什么是系统调⽤,它的作⽤是什么
指⽤户在程序中调⽤操作系统提供的⼦功能,通过执⾏访管指令来发起系统调⽤
避免⽤户直接执⾏系统特权指令
第2章——进程管理
为什么引⼊进程的概念
多道程序技术背景下,多个程序的并发执⾏会产⽣相互制约的问题,此时,程序这⼀静态的概念⽆法描述这⼀并发过程中的状态,因此引⼊进程,更好地描述和控制程序的并发执⾏,实现操作系统的并发性和共享性
什么是进程、进程映像(进程实体)、PCB
进程是具有独⽴功能的程序在⼀个数据集合上运⾏的过程,是系统进⾏资源分配和调度的⼀个独⽴单位,是动态的
进程映像是由程序段、相关数据段和PCB构成,是静态的,代表某⼀时刻进程的状态
PCB是⽤于描述进程状态的数据结构,是进程存在的唯⼀标志
进程的状态和转换
进程和程序有什么区别
1. 进程是程序及其数据在计算机上运⾏的⼀段过程,是动态的。
程序是⼀组有序指令集合,是静态的
2. 进程是程序的⼀次执⾏过程,是暂时存在的。
程序则可永久保存
3. ⼀个进程可以执⾏⼀个或⼏个程序。
⼀个程序也可以构建多个进程
进程之间通信的⽅式有哪些
1. 低级通信:PV操作
2. ⾼级通信:传输⼤量数据
共享存储:需要PV操作实现读写控制
消息传递:消息队列、信箱
管道通信:半双⼯⼯作
为什么引⼊线程的概念
为了减少程序在并发执⾏时所付出的时空开销,进程切换开销⼤,线程更轻量化,切换开销⼩
什么是线程
是程序执⾏的最⼩单元,是调度的基本单位,不拥有资源
进程与线程的区别
1. 进程是拥有资源的基本单位,线程是独⽴调度的基本单位
2. 进程切换开销⼤,线程切换开销⼩
3. 进程地址空间相互独⽴,同⼀进程的线程共享进程的资源
4. 进程间通信需要PV操作,线程间通信不需要
⽤户级线程和内核级线程的区别
内核级线程:线程管理由内核完成
⽤户级线程:线程管理由应⽤程序完成
什么是作业调度、内存调度、进程调度
作业调度:从外存上挑选作业,为其分配资源,建⽴进程,送⼊就绪队列
内存调度:将内存中暂时不能运⾏的进程调⾄外存等待,称为挂起,当具备运⾏条件时,重新调回内存,送⼊就绪队列。
可以提⾼内存利⽤率和系统吞吐量
进程调度:从就绪队列中选⼀个进程,分配处理机给它运⾏
什么是系统吞吐量、周转时间、带权周转时间、响应时间
系统吞吐量:单位时间CPU完成左右的数量
周转时间 = 作业完成时间 - 作业提交时间
带权周转时间 = 作业周转时间 / 作业实际运⾏时间
响应时间:⽤户提交请求到系统⾸次产⽣响应的时间
典型的调度算法有哪些,及其特点
1. 先来先服务:长作业有利,利于CPU繁忙型
2. 短作业优先:长作业不利,饥饿,平均周转时间最少
3. 优先级调度
4. ⾼响应⽐优先
响应⽐ =(等待时间+要求服务时间)/要求服务时间
要求服务时间短,响应⽐⾼:短作业有利
等待时间长,响应⽐⾼:克服饥饿
5. 时间⽚轮转
6. 多级反馈队列
什么是临界资源、临界区
临界资源:被多个进程共享,但⼀次只能由⼀个进程使⽤的资源
临界区:进程中访问临界资源的那段代码
进程互斥访问临界区的准则是什么
1. 空闲让进
2. 忙则等待
3. 有限等待
4. 让权等待
什么是死锁
在两个或多个并发进程中,如果每个进程持有某种资源⼜等待其他进程释放它保持的资源,在未改变这种状态前都不能向前推进,称这⼀组进程构成死锁。
通俗说,是两个或多个进程⽆限期阻塞、相互等待的状态
死锁产⽣的必要条件
1. 互斥条件:进程竞争的必须是独占的资源,只能由⼀个进程访问
2. 不剥夺条件:进程⾃⼰的资源不可以被强⾏夺⾛,只能⾃⼰释放
3. 请求并保持条件:进程可以在保留资源的同时,请求别的资源
4. 循环等待条件:存在⼀个循环等待链
如何解决死锁问题
1. 死锁预防:破坏死锁产⽣必要条件中的⼀条即可
破坏请求并保持:⼀次申请完所有资源,会导致资源浪费、饥饿
破坏循环等待:给资源编号,必须按编号递增顺序申请资源
2. 死锁避免
检查当前是否处于安全状态,银⾏家算法
3. 死锁检测和解除
先检测出死锁,再解除当前死锁状态(资源剥夺、撤销进程、进程回退)
死锁与饥饿的区别
1. 死锁⾄少是两个进程,但饥饿可以只有⼀个进程
2. 处于饥饿状态的可以是⼀个就绪进程,处于死锁状态的⼀定是阻塞进程
第三章——内存管理(重点看书)
为什么要内存管理
多道程序并发执⾏时,共享内存,如果不管理,则会导致内存数据的混乱,从⽽限制并发
将⽤户程序变为可在内存中执⾏的程序的步骤
1. 编译:编译程序将源码编译成若⼲⽬标模块
2. 链接:链接程序将编译后形成的⼀组⽬标模块及其所需的库函数链接在⼀起,形成装⼊模块,形成逻辑地址
3. 装⼊:装⼊程序将装⼊模块装⼊内存中
内存保护是什么,具体实现的⽅法
内存保护:保护操作系统不受⽤户进程的影响,同时保护⽤户进程不受其他⽤户进程的影响
⽅法:
1. 在CPU中设置上下限寄存器,存放⽤户作业在主存中的上下限地址
2. 采⽤重定位寄存器(⽤来加)和界地址寄存器(⽤来⽐)
什么是覆盖,交换
覆盖:不⽤把程序全部读⼊内存才能运⾏,⽽是按调⽤关系分段(因此对程序员是不透明的),覆盖区中存放需要的程序段,其他段放在外存中,⽤于同⼀个程序
交换:将等待状态的程序从内存换到外存中,将准备好的程序调回内存,⽤于不同程序
连续分配管理的⽅式有哪些
1. 单⼀连续分配
2. 固定分区分配
3. 动态分区分配
动态分区分配的分配策略算法有哪些
1. ⾸次适应
2. 最佳适应:产⽣最多外部碎⽚
3. 最坏适应
4. 临近适应
⾮连续分配管理⽅式有哪些
分页、分段、段页
分页和分段的区别
1. 段是信息的逻辑单位,根据⽤户需求划分,对⽤户可见
页是信息的物理单位,为了⽅便管理主存划分,对⽤户透明
2. 段的⼤⼩不固定,由其功能决定
页的⼤⼩固定,由系统决定
3. 段向⽤户提供⼆维地址空间
页提供⼀维地址空间
什么是页表、快表,作⽤是什么
页表:逻辑地址中的页号与所占主存块号的对应关系
快表:放在⾼速缓存中的部分页表
作⽤:访问内存页⾯只需⾄少访问⼀次⾼速缓存,⼀次内存,⽽使⽤页表则要⾄少访问两次内存页⾯置换算法有哪些
1. 最佳(OPT)
2. 先进先出(FIFO)
3. 最近最久未使⽤(LRU)
4. 时钟(CLOCK)
分页存储地址转换过程
设页⾯⼤⼩L,逻辑地址A,物理地址E
页表寄存器:页表始址F+页表长度M
逻辑地址:页号P+页内偏移量W
页表项:页号P+主存块号b
1. 计算页号P=A/L,页内偏移量W=A%L
2. ⽐较页号P和页表长度M,若P>M则越界中断
3. 页表项地址=F+页表项长度*P,取出其中的主存块号b
4. E=b*L+W
具有快表的分页存储地址转换的过程
TLB——>页表(TLB未命中)——>Cache——>主存(Cache未命中)——>外存
分段存储地址转换过程
设逻辑地址A,物理地址E
段表寄存器:段表始址F+段表长度M
逻辑地址:段号S+段内偏移量W
段表项:段号S+段长C+基址b
1. 取出段号S和段偏移量W
2. ⽐较段号S和段表长度M,若S>M则越界中断
3. 段表项地址=F+段号*段表项长度,取出段长C和基址b,如果W>C,则越界中断
4. E=b+W
第4章——⽂件管理
磁盘调度算法有哪些
1. 先来先服务(FCFS)
2. 最短寻找时间优先(SSTF):会产⽣饥饿
3. 电梯调度(SCAN):
4. 循环扫描(C-SCAN)
第5章——输⼊/输出管理
I/O控制⽅式有哪些
1. 程序直接控制:CPU对I/O设备循环检查,CPU利⽤率低
2. 中断驱动⽅式:当某进程要启动某个 I/O 设备⼯作时,便由CPU 向相应的设备控制器发出⼀条 I/O 命令,然后⽴即返回继续执⾏原来
的任务。
仅当传输完⼀个字时,才需 CPU 花费极短的时间去做些中断处理。
3. DMA⽅式:DMA控制器直接与存储器交互,只有在数据块传送开始和结束才需要CPU
4. 通道控制⽅式:CPU给通道⼀个I/O指令,通道来完成任务,⼀次可以传输多个数据块,完成后中断通知CPU
什么是SPOOLing技术
将独占设备变为共享设备的技术
输出的过程:
输出进程的数据——>输出井——>输出缓冲区——>输出设备
输⼊的过程:
输⼊设备的数据——>输⼊缓冲区——>输⼊井——>CPU。