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