OS课程重点Word下载.docx
《OS课程重点Word下载.docx》由会员分享,可在线阅读,更多相关《OS课程重点Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
![OS课程重点Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/16/aa01acac-0aa4-402a-bc45-30ff397c4cd4/aa01acac-0aa4-402a-bc45-30ff397c4cd41.gif)
操作系统的结构发展:
无结构,模块式结构,层次式结构,微内核OS结构。
软件:
指当计算机运行时,能提供所要求的功能和性能的指令和程序的集合。
微内核技术是:
精心设计的、能实现现代OS核心功能的小型内核,它与一般的OS(程序)不同,它更小更精炼,它不仅运行在核心态,而且在开机后常驻内存,它不会因内存紧张而换出内存来。
微内核提供的通常都是一些最基本的功能:
进程管理,存储器管理,进程通信管理,低级I/O功能。
第二章进程管理
程序顺序执行的特征:
顺序性,封闭性,可再现性。
前趋图:
是一个有向无循环图,DAG,用于描述进程之间执行的前后关系。
进程的实体:
由程序段、相关的数据段和进程控制块PCB构成。
创建和撤消进程都是指:
创建或撤消进程中的PCB。
进程具有:
动态性、并发性、独立性和异步性的特征。
进程是:
进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程的三种基本状态是:
就绪状态、执行状态和阻塞状态(等待状态)。
系统根据PCB控制进程,PCB:
是进程存在的唯一标志。
PCB常驻内存,系统将所有PCB组织成若干链表(或队列),存放在操作系统专门开辟的PCB区内。
进程控制块PCB主要包括四方面的信息:
进程标识符(内部标识符和外部标识符),处理机状态(一些寄存器中断时的信息),进程调度信息,进程控制信息。
进程控制块的组织方式通常有:
链接方式(指针链接)和索引方式(索引表)两种。
PCB中都设置了:
家族关系表项,以标明自己的父进程及所有的子进程。
进程创建进程的典型事件可分为四类:
用户登录,作业调度,提供服务,应用请求。
进程创建步骤:
1申请空白PCB,2分配资源,3初始化PCB,4插入就绪队列。
初始化进程控制块包括:
初始化标识信息;
初始化处理机状态信息;
初始化处理机控制信息。
引起进程终止的事件有:
正常结束,异常结束,外界干预。
进程终止步骤:
1根据被终止进程的标识符,在PCB集合中检索出该进程的PCB,读取其状态,2若处于执行状态,立即终止,置调度标志为真,用于指示该进程被终止后应重新进行调度,3如果有的话,终止所有子进程,4将被终止进程拥有的全部资源归还其父进程或系统,5将被终止进程PCB从所在队列(或链表)中移出,等待其他程序来搜集信息。
引起进程阻塞或唤醒的条件:
请求系统服务,启动某种操作,新数据未到,无新工作做。
进程阻塞过程:
调用阻塞原语block把自己阻塞,如在执行状态,立即停止执行,修改PCB中状态为“阻塞”,PCB插入阻塞队列。
转调度程序将CPU重新调度给另一就绪进程。
进程唤醒过程:
调用唤醒原语wakeup,将被阻塞的进程从等待该事件的阻塞队列中移出,将PCB中状态改为“就绪”,将PCB插入到就绪队列中去。
进程挂起过程:
调用挂起原语suspend,如进程为活动就绪状态就改为静止就绪,如活动阻塞状态就改为静止阻塞,如进程正在执行就转向调度程序重新调度。
进程激活过程:
调用激活原语active,先将进程从外存调入内存,如进程为静止就绪就改为活动就绪,如静止阻塞就改为活动阻塞,判定新就绪的进程的优先级是否能抢夺CPU。
进程之间包括:
互斥和同步两种关系。
进程同步的主要任务:
是使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
临界区CS(criticalsection)是指:
每个进程中访问临界资源的那段代码。
临界区前面用于检查是否能访问临界资源的代码叫进入区,后面加上一段代码退出区用于恢复标志,其余的代码部分叫做剩余区。
进程同步可以采用:
信号量机制和管程机制。
同步机制遵循的原则:
空闲让进,忙则等待,有限等待,让权等待。
记录型信号量:
采用wait(S)和signal(S)来防止类似整型信号量会导致的忙等。
信号量实现进程的互斥
经典进程同步问题:
生产者与消费者
进程通信包括:
低级通信(进程之间的互斥和同步)和高级通信(共享存储器系统,消息传递系统以及管道通信系统),又可分为直接通信(通信原语)和间接通信(信箱)。
高级进程通信:
是指用户可直接利用操作系统所提供的一组通信命令,高效的传送大量数据的一种通信方式。
可归结为三大类:
共享存储系统、消息传递系统以及管道通信系统。
管道通信具有三方面的协调能力:
互斥,同步,确定对方是否存在。
进程通信可分为直接通信方式和间接通信方式。
直接通信方式指:
利用OS提供的发送命令,直接把消息发送给目标进程。
通常系统提供两条通信命令(原语):
Send(Receive,Message)和Receive(Sender,Message)。
间接通信方式指:
进程之间的通信需要通过作为共享数据结构的实体,通常称之为信箱。
信箱可分为:
私用信箱(单向通信链路的信箱),公用信箱(双向通信链路的信箱)和共享信箱。
拥有私用信箱的进程结束时,信箱随之消失。
公用信箱在系统运行期间始终存在。
公用信箱和共享信箱的区别在于:
公用信箱是由操作系统创建,并提供给系统中的所有核准进程使用的。
而共享信箱是由某进程创建给它和其他指定共享进程使用的。
在操作系统中引入线程:
是为了减少程序在并发执行所付出的时控开销,使操作系统具有更好的并发性。
在多线程OS中,通常是:
在一个进程中包含多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。
线程具有以下属性:
轻型实体,独立调度和分派的基本单位,可并发执行,共享进程资源。
线程的状态:
状态参数和运行状态(也有执行状态,就绪状态,阻塞状态)
线程被中止后并不立即释放它所占有的资源,只有当进程中的其它线程执行了分离函数后,被终止的线程才与资源分离,此时的资源才能被其他线程利用。
多线程OS中的进程:
进程仍是系统分配资源的基本单位,每个进程都含有多个相对独立的线程,进程不是一个可执行的实体,而是把线程作为独立运行的基本单位。
所谓进程处于“执行”状态,实际上是指该进程中的某线程正在执行。
把某个进程挂起或激活,该进程的所有线程也都被挂起或激活。
线程的实现方式有:
用户级线程和内核支持线程。
内核支持线程是:
无论是用户进程中的线程还是系统进程中的线程,他们的创建、撤消和切换等,都是依靠内核实现的。
此外,内核空间中还每个线程设置了一个线程控制块。
用户级线程仅存在于用户空间中。
这种线程的创建、撤消、同步等都无须利用系统调用来实现。
所以线程的切换速度特别快。
内核完全不知道用户级线程的存在。
用户级线程的调度以:
进程为单位,而内核支持线程的调度以线程为单位。
用户级线程的实现可分为:
运行时系统和内核控制线程。
第三章处理机调度和死锁
高级调度又称为:
作业调度或长程调度,用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程,分配必要的资源,然后,再将新创建的进程排在就绪队列上。
低级调度称为:
进程调度或短程调度,用来决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。
进程调度可分为非抢占方式和抢占方式(优先权原则/短作业优先原则/时间片原则)。
中级调度又称:
中程调度。
引入中级调度的主要目的是为了提高内存利用率和系统吞吐量,实际上就是存储器管理中的对换功能。
三种调度队列模型:
仅有进程调度的调度队列模型,具有高级和低级调度的调度队列模型,同时具有三级调度的调度队列模型。
调度算法是指:
根据系统的资源分配策略所规定的资源分配算法。
先来先服务调度算法(FCFS),短作业(进程)优先调度算法(SJF),高优先权优先调度算法,基于时间片的轮转调度算法。
(P76)
高优先权优先调度算法分为:
非抢占式优先权算法和抢占式优先权调度算法。
优先权分为:
静态优先权和动态优先权。
基于时间片的轮转调度算法可分为:
时间片轮转法和多级反馈队列调度算法。
实现实时调度的条件:
提供必要的信息,系统处理能力强,采用抢占式调度机制,具有快速切换机制。
抢占调度的时机可在时钟中断发生的时候或者立即抢占。
产生死锁的原因有:
竞争资源、进程间推进顺序非法。
死锁的发生必须具备四个必要条件:
1互斥条件,2请求和保持条件,3不剥夺条件,4环路等待条件。
处理死锁的基本方法有:
预防死锁,避免死锁,检测死锁,解除死锁。
预防死锁的方法是使以上四个必要条件中的2,3,4不成立,如静态分配,有序分配。
安全序列是指:
系统能按某种进程顺序来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利完成。
避免死锁:
例子:
银行家算法避免死锁。
第四章存储器管理
创建进程的第一件事便是:
将程序和数据装入内存。
将一个用户源程序变为一个可在内存中执行的程序:
首先要编译,由编译程序将用户源代码编译成若干目标模块;
其次是链接,由链接程序将目标模块和需要的库函数链接在一起形成一个完整的装入模块;
最后是装入,由装入程序将装入模块装入内存。
将装入模块装入内存的方式有:
绝对装入方式,可重定位装入方式和动态运行时装入方式。
采用可重定位装入程序将装入模块装入内存后,会使装入模块中的所有逻辑地址与实际装入内存的物理地址不同。
在装入时对目标程序中的指令和数据的修改过程成为重定位。
动态运行时装入,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行,该方式需要一个重定位寄存器的支持。
链接的方式有:
静态链接,装入时动态链接和运行时动态链接。
连续分配方式是指为:
一个用户程序分配一个连续的内存空间,进一步可分为单一连续分配,固定分区分配,动态分区分配以及动态重定位分区分配四种方式。
单一连续分配是:
把内存分为系统区和用户区两部分。
固定分区分配是:
将内存用户空间划分为若干固定大小(分区大小可等可不等)的区域,每个分区只装一道作业。
通常按分区大小排队:
建立一张分区使用表,给程序一个能满足要求又尚未分配的分区。
动态分区分配中的数据结构可采用:
空闲分区表和空闲分区链两种。
分区分配算法有:
首次适应算法,循环首次适应算法和最佳适应算法。
最佳适应算法是:
将空闲分区大小从小到大形成一个链,最先适应的必然是最佳的。
但是这种分配算法通常会导致切割下来的剩余空间最小,而产生许多难以利用的小空闲区。
分配内存时看:
是否剩下的空间大于事先规定的不再切割的剩余分区的大小,而回收内存时根据前后是否是空闲分区决定是否需要合并。
动态重定位分区分配是:
指将空闲分区紧凑成连续空闲区分配给需要的程序,同时修改有关数据结构使已经被分配空间的程序能继续正常运行。
“对换”,是指:
把内存中暂时不能运行的进程或暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程需要的程序和数据调入内存。
以整个进程为单位的对换称为:
“整体对换”或“进程对换”。
以“页”或“段”为单位的对换分别称为“页面对换”或“分段对换”。
为实现进程对换,系统必须具有以下功能:
对换空间的管理,进程的换出,进程的换入。
将一个进程直接分散装入到许多不相邻接的分区中,则无须再进行“紧凑”,此谓离散分配方式,离散分配的基本单位是“页”或“段”,对应于分页/段存储管理方式。
分页存储管理是:
将一个进程的逻辑地址空间分为若干大小相等的片,称为页面或页。
分页大小应适中,太小会使进程的页表过长,占用大量内存;
太大会使页内碎片增大。
分页地址中的地址分为两部分:
前一部分为页号P,后一部分为位移量W(页内地址)。
系统为每个进程建立了一张页面映象表,简称页表,其作用是实现页号到物理块号的映射。
即使在最简单的页表系统中,也设置一存取控制字段,用于保护该存储块中的内容。
地址变换机构的任务:
只是将逻辑地址中的页号,转换为内存中的物理块号。
地址变换的任务就可以借助于页表来完成。
页表通常驻留在内存中,而系统中只设置一个页表寄存器PTR来实现页表功能。
“快表”又称:
“联想寄存器”,是为了:
提高地址变换速度而增设的一个具有并行查寻能力的特殊高速缓冲寄存器。
此时,在CPU给出有效地址后,首先将页号与联想寄存器中的页号对比,如果有,就直接读出对应物理块号送物理地址寄存器,若无再访问内存中的页表。
两级页表和多级页表是为了:
防止页表占有太大内存空间而对页表结构再进行分级。
分段存储管理方式的引入主要是为了满足以下需要:
方便编程,信息共享,信息保护,动态增长,动态链接。
分段存储管理方式中,作业的地址空间被划分为:
若干个段,每个段定义了一组逻辑信息。
例如,有主程序段MAIN,子程序段X,数据段D及栈段S等。
段的长度由:
相应的逻辑信息组的长度决定,因而各段长度不等。
段的数据结构可分为两部分:
段号和段内地址。
一般情况下,段比页大。
系统为每个进程建立了一张段表,用于实现从逻辑段到物理内存区的映射。
分段系统和分页系统有很多相似之处,但在概念上完全不同,主要表现在以下三个方面:
1页是信息的物理单位,是为了满足系统管理的需要,而段是信息的逻辑单位,是为了满足用户的需要;
2页的大小固定且由系统决定,而段的长度不确定,取决于用户编写的程序;
3分页的作业地址空间是一维的,程序员只需利用一个记忆符即可表示一个地址;
而分段的作业地址则是二维的,程序在标识一个地址时,既需给出段名,又需给出段内地址。
分段系统的一个突出优点是:
易于实现段的共享,对段的保护也十分简单易行。
可重入代码又称“纯代码”,是:
一种允许多个进程同时访问的代码,是一种不允许任何进行对它进行修改的代码。
段页式存储管理方式,是:
将用户程序分为段,段再分为页,并为每个段赋予一个段名。
段页式系统中,地址结构由:
段号,段内页号及页内地址三部分组成。
第五章虚拟存储器
虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
虚拟存储器系统可分为:
分页请求系统和分段请求系统。
虚拟存储器有几大特征:
多次性(最重要和特别的特征),对换性,虚拟性。
其中,虚拟性是以多次性和对换性为基础的,而多次性和对换性又必须建立在离散分配的基础上。
请求分页系统需要:
页表机制,缺页中断机构以及地址变换机构。
页表的基本作用仍是:
将用户地址空间中的逻辑地址变换为内存空间中的物理地址,页表项中包括:
页号,物理块号,状态位P,访问字段A,修改位M,外存地址。
缺页中断与一般中断的区别:
在指令执行期间产生和处理中断信号;
一条指令在执行期间,可能产生多次缺页中断。
请求分页系统中的地址变换机构及其运行流程。
物理块分配算法包括:
平均分配算法,按比例分配算法,考虑优先权的分配算法。
页面调入时机的确定可分为:
预调页策略和请求调页策略。
页面置换算法包括:
最佳置换算法(Optimal),先进先出置换算法(FIFO),最近最久未使用置换算法(LRU),
请求分段管理所需的硬件支持:
有段表机制,缺段中断机构,以及地址变换机构。
请求分段段表项有:
存取方式,访问字段A,修改位M,存在位P,增补位,外存始址。
增补位是:
请求分段管理中特有的字段,用于表示本段在运行过程中是否做过动态增长。
请求分段系统中的缺段中断处理流程和地址变换过程。
分段保护的措施:
越界检查,存取控制检查,环保护机构。
第六章设备管理
I/O设备重要的性能指标有:
数据传输速率,数据的传输单位,设备共享属性等。
I/O可分为:
可分为块设备,字符设备;
可分为独占设备,共享设备,虚拟设备。
I/O设备到设备控制器有一根数据信号线和一根状态信号线,设备控制器到I/O设备有一根数据信号线和一根控制信号线。
设备控制器是:
计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。
设备控制器的基本功能有:
接收和识别命令,数据交换,标识和报告设备的状态,地址识别,数据缓冲,差错控制。
设备控制器由三部分组成:
设备控制器与处理器的接口,设备控制器与设备的接口,I/O逻辑。
I/O逻辑的作用是对收到的命令进行译码,来对所选设备进行控制。
I/O通道引入的目的是:
使一些原来由CPU处理的I/O任务转由通道来承担。
I/O通道其实是一种特殊的处理机,但也有其不同于处理机之处:
指令类型单一,能执行的命令主要局限于与I/O操作有关的指令;
通道没有自己的内存,而要与CPU共享内存。
通道三种类型:
字节多路通道,数组选择通道,数组多路通道。
解决通道“瓶颈”问题的最有效的办法是:
增加设备到主机间的通路而不增加通道。
I/O控制方式由:
最早的程序I/O方式,到中断驱动方式,再到DMA控制方式。
中断驱动方式中,CPU把工作通过中断交给设备控制器,然后转而继续执行原来的任务,而任务完成后,设备控制器通过中断告诉CPU,实现了CPU与I/O设备的并行工作。
DMA方式中,数据传输的基本单位是数据块;
所传输的数据是从设备直接送入内存,或者相反;
仅在传送一个或多个数据块的开始和结束时,才需CPU干预。
DMA控制器由三部分组成:
主机与DMA控制器的接口,DMA控制器与块设备的接口,I/O控制逻辑。
DMA控制器中设置有如下四类寄存器:
命令/状态寄存器CR,内存地址寄存器MAR,数据寄存器DR,数据计数器DC。
DMA控制器的工作方式。
I/O通道方式是:
通道通过通道程序,与设备控制器共同实现对I/O设备的控制。
通道
缓冲可以:
1)缓和CPU和I/O设备间速度不匹配的矛盾;
2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制;
3)提高CPU和I/O设备之间的并行性。
单缓冲,双缓冲,循环缓冲属于专用缓冲,现在多采用的是缓冲池。
缓冲池中三个队列:
空缓冲队列emq,输入队列inq,输出队列outq;
四种工作缓冲区:
收容输入数据的工作缓冲区,提供输入数据的工作缓冲区,收容输出数据的工作缓冲区,提供输出数据的工作缓冲区。
Getbuf过程,Putbuf过程,缓冲区工作方式。
设备分配时需要的数据结构(表格)有:
设备控制表DCT,控制器控制表COCT,通道控制表CHCT和系统设备表SDT等。
设备的固有属性可分为:
独占性,共享性,可虚拟性。
设备分配算法通常只采用以下两种:
先来先服务算法,优先权服务算法。
设备独立性(无关性)的基本含义是:
应用程序独立于具体使用的物理设备。
设备独立性软件能执行所有设备的公用操作,向用户层(或文件层)软件提供统一接口。
逻辑设备表LUT将应用程序中所使用的逻辑设备名映射为物理设备名。
独占设备的分配程序:
根据I/O请求中的物理设备名查找系统设备表SDT,找到该设备的设备控制表DCT;
在系统把设备分配给请求I/O的进程后,再到其设备控制表DCT中找出该设备连接的控制器的控制器控制表COCT;
在该控制器控制表COCT中又可找到与该控制器连接的通道的通道控制表CHCT。
当设备、控制器和通道都分配成功时,分配成功。
在联机情况下实现的同时外围操作称为SPOOLing,或称为假脱机操作。
SPOOLing技术是对脱机输入,输出系统的模拟。
SPOOLing系统主要有:
输入井和输出井;
输入缓冲区和输出缓冲区;
输入进程SPi和输出进程SPo。
SPOOLing系统提高了I/O的速度,将独占设备改造为共享设备,实现了虚拟设备功能。
设备处理程序通常又称为设备驱动程序,是I/O进程和设备控制器之间的通信程序。
设备驱动程序的处理过程:
将抽象要求转换为具体要求;
检查I/O请求的合法性;
读出和检查设备的状态;
传送必要的参数;
工作方式的设置;
启动I/O设备。
中断处理程序的处理过程:
唤醒被阻塞的驱动(程序)进程;
保护被中断进程的CPU环境;
转入相应的设备处理程序;
中断处理;
恢复被中断进程的现场。
磁盘设备包括:
一个或多个盘片,每片两面,每面分为若干磁道,每磁道分为若干扇区。
根据磁头的类型,磁盘可分为固定头磁盘和移动头磁盘。
磁盘访问时间=寻道时间+旋转延迟时间+传输时间
磁盘调度算法有:
先来先服务,最短寻道时间优先,扫描算法,循环扫描算法,N-Step-SCAN和FSCAN调度算法等。
磁盘高速缓存是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。
第七章文件管理
基于文件系统的概念:
可以把数据组成分为数据项,记录和文件三级。
其中,数据项是最低级的数据组织形式,包括基本数据项和组合数据项。
记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。
文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件(由若干记录组成)和无结构文件(字符流)两种。
文件逻辑结构,首先是:
能提高检索速度,其次是便于修改,第三是降低文件的存储费用。
有结构文件中记录的长度可分为:
定长和不定长两种,但是不论哪一种,在处理前,每个记录的长度是可知的。
有结构文件中组织记录的方式有:
顺序文件,索引文件和索引顺序文件,直接文件哈希文件。
无结构文件即:
流式文件的长度以字节为单位,也可看作是记录式文件的一个特例。
外存的分配方式有:
连续分配,链接分配和索引分配三种。
连续分配要求:
为每一个文件分配一组相邻接的盘块。
链接分配可分为:
隐式链接和显式链接两种形式。
隐式链接要求:
在文件目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块的指针。
显式链接是:
把用于链接文件各物理块的指针,显式地放在