【期末复习】操作系统

第二章 进程的描述与控制


一、基础知识

(一)进程的基本状态

三种基本状态:

(1)就绪(Ready)状态

  • 当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

(2)执行(Running)状态

  • 当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

(3)阻塞(Blocked)状态 / 等待状态

  • 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,**等待I/O完成、申请缓冲区不能满足、等待信件(信号)**等。

转换条件:

(1) 就绪→执行

  • 处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。

(2) 执行→就绪

  • 处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。

(3) 执行→阻塞

  • 正在执行的进程 因等待某种事件发生而无法继续执行(比如死锁,全部进程都等待某一事件完成) 时,便从执行状态变成阻塞状态。

(4) 阻塞→就绪

  • 处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。

(二)引起创建进程的事件

用户登录、作业调度、提供服务、应用请求

(三)P-V操作

P(wait)、V(signal)操作是定义在信号量S上的两个操作原语:

P(S):

  • (1) S←S-1;
  • (2) 若S≥0,则调用P(S)的这个进程继续被执行;
  • (3) 若S<0,则调用P(S)的这个进程被阻塞,并将其插入到等待信号量S的阻塞队列中。

V(S):

  • (1) S←S+1;
  • (2) 若S>0,则调用P(S)的这个进程继续被执行;
  • (3) 若S≤0,则先从等待信号量S的阻塞队列中唤醒队首进程,然后调用V(S)的这个进程继续执行。

信号量S>0时的数值表示某类资源的可用数量

执行P操作意味着申请分配一个单位的资源,故执行S减1操作,若减1后S<0,则表示无资源可用,这时S的绝对值表示信号量S对应的阻塞队列中进程个数。

执行一次V操作则意味着释放一个单元的资源,故执行S增1操作,若增1后S≤0,则表示信号量S的阻塞队列中仍有被阻塞的进程,故应唤醒该队列上的第一个阻塞进程。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、例题

主要是 信号量机制与进程同步经典问题 的一些伪代码题目。

经典进程的同步问题:

  • 互斥和同步关系。接着来考虑问题中哪些资源属于临界资源,需要互斥;哪些地方有一个进程要等另一进程完成某个动作,需要同步
    • 如生产者-消费者问题中的空闲缓冲区、满缓冲区(或缓冲区中的产品)以及in,out 变量(in、out 变量被当做一个组合,看成一个资源)均是临界资源,对它们的访问都需要互斥。
  • 如何实现进程互斥和同步。为实现对上述临界资源的互斥访问,应为每一类临界资源设置一个信号量,初值为临界资源的初始个数,并在算法中访间资源以前的位置插入信号量的wait操作,完成临界资源访问的位置插入信号量的signal操作。另外,要为每一类同步关系设置一个初值为0的信号量,在算法中等动作的位置插入信号量的wait操作,在被等待的动作完成的位置插入信号量的signal操作。
    • 如生产者-消费者问题的空闲缓冲区,需为它设置一个初值为n的信号量empty;生产者放产品时要使用它,所以,在放产品之前加wait(empty);产品从缓冲中取走后,该缓冲就不再被使用,它被消费者释放,归还给系统,所以取走产品之后要加signa(empty)。
    • 通常资源使用后会被释放,所以,在相互合作的进程中找到成对的wait(empty)和 signal(empty)操作,成对的wait(full)和signal(full)操作,成对的wait(mutex)和signal(mutex)操作。

在这里插入图片描述
在这里插入图片描述

第三章 处理机调度和死锁


一、处理机调度分类

高级调度(作业调度、长程调度):

  • 根据JCB中的信息,检查系统中的资源是否能满足作业对资源的需求,以及按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,并为他们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上等待调度。

低级调度(进程调度、短程调度):

  • 计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有一个CPU可用,那么操作系统就必须选择一个进程运行,并把处理机分配给该进程。
  • 进程调度的功能:进程调度用于决定就绪队列中的哪个进程应获得处理机,并由分派程序把处理机分配给该进程。
    • (1)保存当前进程的处理机现场信息。
    • (2)按某种算法选择投入执行的新进程。
    • (3)恢复新进程的现场,从而将处理机分配给新进程。

中级调度(内存调度)

二、作业

作业运行的三个阶段和三个状态:

阶段 状态
收容 后备
运行 运行
完成 完成

一些相关名词:

周转时间、平均周转时间、平均带权周转时间

三、调度算法(作业调度、进程调度)

参考博客:常见的作业调度和进程调度算法

包括:先来先服务调度算法FCFS、短作业优先调度算法SJF、高响应比优先调度算法HRRN、优先级调度算法PSA、时间片轮转调度算法RR、多级反馈队列调度算法MFQ

  • FCFS 算法选择最早进入就绪队列的进程投入执行;

  • SJF 算法选择估计运行时间最短的进程投入执行,采用抢占方式时,若新就绪的进程运行时间比正在执行的进程的剩余运行时间短,则新进程将抢占CPU;

  • HRRN算法选择响应比 (响应比=(等待时间+运行时间)/ 运行时间) 最高的进程投入执行;

  • RR算法中,就绪进程按FIFO方式排队,CPU总是分配给队首的进程,并只能执行一个时间片;

  • FB多级反馈队列调度算法将就绪进程排成多个不同优先权及时间片的队列,新就绪进程总是按FIFO方式先进入优先权最高的队列,CPU也总是分配給较高优先权队列上的队首进程,若执行一个时间片仍未完成,则转入下一级队列的末尾,最后一级队列则采用时间片轮转方式进行调度。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、实时调度算法

参考博客:实时调度

包括:最早截止时间优先EDF(Earliest Deadline First)、最低松弛度优先LLF(Least Laxity First)

最早截止时间优先EDF(Earliest Deadline First):

  • 根据任务的开始截止时间来确定任务的优先级。截止时间越早,其优先级越高。
  • (开始截至时间为t:在t时刻之前该任务必须开始执行)

最低松弛度优先LLF(Least Laxity First):

  • 根据任务紧急(或松弛)的程度,来确定任务的优先级。任务的紧急程度越高(松弛度值越小),优先级就越高。
  • 松弛度= 截止完成时间 – 还需执行时间 - 当前时间
  • 可理解为当前时刻到开始截止时刻间的差距,随着时间的推进,这个差值逐渐变小,任务越来越紧迫。

在这里插入图片描述在这里插入图片描述

五、死锁

(一)定义

(二)发生死锁的情况

(三)产生死锁的必要条件

(四)处理死锁的方法

处理死锁问题的一些基本概念:
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

例1、利用银行家算法避免死锁
在这里插入图片描述在这里插入图片描述

例2、某计算机系统中有8台打印机,有K个进程竞争使用,每个进程最多需要3台打印机。该系统可能会发生死锁的K的最小值是(C)。
A. 2  B. 3  C. 4  D. 5

【解析】3k<8+k => k<4
(n个进程共享m个同类资源,若每个进程都需要用该类资源,而且各进程对该类资源的最大需求量之和小于m+n。则该系统不会因竞争该类资源而阻塞。)

第四章 存储器管理


一、连续分配方式

包括 单一连续分配、固定分区分配、动态分区分配。

单一连续分配:

  • 最简单的一种存储管理方式,只能用于单用户、单任务的操作系统中。

  • 优点:易于管理。

  • 缺点:对要求内存空间少的程序,造成内存浪费;程序全部装入,很少使用的程序部分也占用内存。

固定分区分配:

  • 把内存分为一些大小相等或不等的分区(partition),每个应用进程占用一个分区。操作系统占用其中一个分区。支持多个程序并发执行,适用于多道程序系统和分时系统。最早的多道程序存储管理方式。

  • 缺点:内碎片(一个分区内的剩余空间)造成浪费;划分为几个分区,便只允许几道作业并发,分区总数固定,限制并发执行的程序数目。

动态分区分配:

  • 分区的大小不固定:在装入程序时根据进程实际需要,动态分配内存空间,即需要多少划分多少。

  • 空闲分区表项:从1项到n项:内存会从初始的一个大分区不断被划分、回收从而形成内存中的多个分区。

  • 优点:并发进程数没有固定数的限制,不产生内碎片。

  • 缺点:有外碎片(分区间无法利用的空间)

以下为 动态分区分配 的常用算法。

(一)最佳适应算法BF

  • 空闲分区排序:所有空闲分区按容量从小到大排序成空闲分区表或链。

  • 检索:从表或链的头开始,找到的第一个满足的就分配

  • 分配:分出需要的大小

  • 缺点:每次找到最合适大小的分区割下的空闲区也总是最小,会产生许多难以利用的小空闲区(外碎片)

(二)最坏适应算法WF

  • 与最佳适应算法刚好相反,将空闲分区链的分区按照从大到小的顺序排序形成空闲分区链,每次查找时只要看第一个空闲分区是否满足即可。

(三)首次适应算法FF(first-fit)

  • 空闲分区排序:以地址递增的次序链接。

  • 检索:分配内存时,从链首开始顺序查找直至找到一个大小能满足要求的空闲分区;

  • 分配:从该分区中划出一块作业要求大小的内存空间分配给请求者,余下的空闲分区大小改变仍留在空闲链中。若从头到尾检索不到满足要求的分区则分配失败;

  • 优点:优先利用内存低址部分,保留了高地址部分的大空闲区;

  • 缺点:但低址部分不断划分,会产生较多小碎片;而且每次查找从低址部分开始,会逐渐增加查找开销。

(四)循环首次适应算法NF(Next Fit)

  • 分配内存时不是从链首进行查找可以分配内存的空闲分区,而是从上一次分配内存的空闲分区的下一个分区开始查找,直到找到可以为该进程分配内存的空闲分区。

参考博客:动态分区分配算法(有流程图)连续分配存储管理方式

在这里插入图片描述在这里插入图片描述

二、离散分配方式

(一)分页存储管理

分页地址结构:

在这里插入图片描述

逻辑地址长度为n位,页面的大小为2^k字节。

页表:

页号 块号

页表寄存器PTR:

页表始址 页表长度

地址变换机构(分为基本的和具有快表的):

在这里插入图片描述

例题:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

(二)分段存储管理

分段地址结构:

段号 位移量(段内地址)

段表:

段表 段长 基址

基址,表示该段在内存中的起始地址。

段表寄存器:

段表始址 段表长度

地址变换机构:

在这里插入图片描述

例题:

在这里插入图片描述

(三)段页式存储管理

三、计算题

第五章 虚拟存储器


一、请求分页系统

(一)请求页表机制

页号 物理块号 状态位P 访问字段A 修改位M 外存地址
  • 状态位:程序访问

  • 访问字段:置换算法

  • 修改位:置换页面

  • 外存地址:调入页面

二、请求分段系统

(一)请求段表机制

段名(号) 段长 段基址 存取方式 访问字段A 修改位M 存取位P 增补位 外存始址

请求段表是一个数据结构。

三、页面置换算法

在请求调页系统中,会采取页面置换算法。

在请求调页系统中,反复进行页面换出和换进的现象称为抖动,其产生的原因主要是置换算法选择不当

(一)最佳置换算法OPT

一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被访问的,那么如果发生缺页中断时,就将该页面换出,以便存放后面调入内存中的页面。

在这里插入图片描述

  • 在装满三个物理块后,要访问2号作业,2号作业不在内存,所以会发生缺页中断,然后系统需要将2号作业调入内存,但是此时物理块已经装满。
  • 依据最佳置换算法,会将7号页换出(0号页在2号页后第1个就会被访问,1号页在2号页后第10个会被访问,7号页在2号页后第14个会被访问,7号页在已经装入内存的作业中是未来最长时间不会被访问的,所以换出7号页)。

(二)先进先出算法FIFO

如果发生缺页中断,需要换出一个页面的时候,总是选择最早进入内存的页面,即选择在内存中驻留时间最久的页面进行换出。

在这里插入图片描述

  • 访问2号作业时,会发生缺页中断,所以系统会将7号页换出,因为7号作业是最先被调入内存的。

(三)最近最久未使用置换算法(LRU)

缺页中断发生时选择最久未使用的页面进行换出。(淘汰最近没有使用的页面)

内存分配了k个物理块,发生缺页中断将要往内存调入某个页面的时候,在该页面往前面数K个物理块最前面的那个就会是要换出的,因为该页面最长时间未被使用过。(可能前面会有重复的页面,有几个重复的页面就再往前面多数几个)

在这里插入图片描述

  • 访问2号作业时,会发生缺页中断,所以系统会将7号页换出,因为2号页面前面有三个页面,最前面的是7号页面。

(四)最少使用算法LFU

最少使用(LFU)页面置换算法要求置换具有最小计数的页面。

(五)页面缓冲算法PAB

(六)Clock置换算法

改进的Clock置换算法是一种常用的LRU近似算法,,优先选择访问位和修改位均为0的页面进行换出。

四、例题

例1:把用户地址空间的逻辑地址转换成物理地址

在这里插入图片描述
例2:快表的引入

在这里插入图片描述
例3:页面置换算法

在这里插入图片描述在这里插入图片描述

第六章 输入输出系统


一、中断

(一)定义

中断是指计算机在执行期间,系统内部或外部设备发生了某一急需处理的事件,使得CPU暂时停止当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处,继续执行被中断的程序的过程。

(二)中断处理流程

1、保存现场。CPU收到中断信号后,通常由硬件自动将处理机状态字PSW和程序计数PC中的内容,保存到中断保留区(栈)中。

2、转中断处理程序进行中断处理。由硬件分析中断的原因,并从相应的中断向量中获得中断处理程序的入口地址,装入CPU的程序计数器中,从而使处理机转向相应的中断处理程序。

3、中断返回。中断处理完成后通过中断返回指令,将保在在中断栈中的被中断进程的现场信息取出,并装入到相应的寄存器中,从面使处理机返回到被中断程序的断点执行。

在这里插入图片描述

二、DMA方式和中断驱动I/O方式

三、磁盘调度算法

参考博客:算法讲解例题

寻找时间(寻道时间)Ts:在读/写数据前,需要将磁头移动到指定磁道所花费的时间。

延迟时间Tr:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。

传输时间Tt:从磁盘读出或向磁盘中写入数据所经历的时间。

(一)先来先服务算法(FCFS)

(二)最短寻道时间优先算法(SSTF)

(三)扫描算法(SCAN)

(四)循环扫描算法(CSCAN)

在这里插入图片描述

第七章 文件管理


一、基础知识

  • 文件目录与目录管理。
  • 文件控制块FCB,用于描述和控制文件的一种数据结构,存放在该文件的上级目录的数据盘块。
  • 索引节点,用于存储文件描述信息的一种数据结构。
  • 单级目录、两级目录、多级目录结构。
  • 最小的数据单位:数据项。

二、例题

目录管理问题:

在这里插入图片描述
注意引入索引节点前后目录项的变化。

文件保护和共享问题:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43973415/article/details/111802045