操作系统--期末复习

知识点:

* 信号量机制主要有整形信号量、记录性信号量、信号量集机制。
* 信号量是一个整形变量,根据控制对象的不同赋不同的值。
* 信号量可分为公用信号量和私用信号量两类。
* 公用信号量:实现进程间的互斥,初值=1或资源的数目
* 私用信号量:实现进程间的同步,初值=0或某个整数
* 信号量S的物理意义:S>=0时表示某资源的可用数,s<0时其绝对值表示阻塞队列中等待该资源的进程数。P、V操作是实现进程同步与互斥的常用方法。
* P操作表示申请一个资源, V操作表示释放一个资源。
* P操作的定义:S=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态,并将其插入阻塞队列。
* V操作定义:S=S+1,若S>0则执行V操作的进程继续执行;若S<0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行。

习题详解:

1. 第一题 对应着信号量的物理意义,s<0时,其绝对值表示阻塞队列等待该资源的进程数。
2. 第二题 资源的的当前可用数等于资源当前值,也就是1。或者理解为初值减去已经使用的资源数。
  等待该资源的进程数为0,因为当前信号量的值大于0。
3. 信号量的初始值设为1。因为互斥使用临界资源,是指在同一时间只允许一个进程使用此资源,所以互斥信号量的初值都为1。
4. 一个等待进程。信号量当前值是-1,所以绝对值就是阻塞的等待进程数。

磁盘寻道

知识点

* 寻道算法主要有四种:
    + 先到先服务算法(FCFS)。
    + 最短寻道时间优先算法(SSTF)。
    + 扫描算法(SCAN)。
    + 循环扫描算法(CSCAN)。
磁盘分:盘面-磁道-扇区。盘面上有很多磁道,盘面也分成若干个扇区,整体结构就是这样的。寻道就是磁头寻找对应的磁道。它们都是磁盘使用要调度的。
读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。
    (一)先来先服务算法(FCFS)

    1、算法思想:按访问请求到达的先后次序服务。

    2、优点:简单,公平。

    3、缺点:效率不高,相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。

    4、例子:

    假设磁盘访问序列:98,183,37,122,14,124,65,67。读写头起始位置:53。求:磁头服务序列和磁头移动总距离(道数)。

    由题意和先来先服务算法的思想,得到下图所示的磁头移动轨迹。由此:下面补充。

    磁头服务序列为:98,183,37,122,14,124,65,67

    磁头移动总距离=(98-53)+(183-98)+|37-183|+(122-37)+|14-122|+(124-14)+|65-124|+(67-65)=640(磁道)
    
    (二)最短寻道时间优先算法(SSTF)

    1、算法思想:优先选择距当前磁头最近的访
    
    问请求进行服务,主要考虑寻道优先。

    2、优点:改善了磁盘平均服务时间。

    3、缺点:造成某些访问请求长期等待得不到服务。

    4、例子:对上例的磁盘访问序列,可得磁头
    
    移动的轨迹如下图
    
    
    
    (三) 扫描算法(电梯算法)(SCAN)
    1、算法思想:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问
    请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。如下图所示:下面补充。
    
    2、优点:克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向。
    3、 例子:
    
    4、循环扫描算法(CSCAN)

    循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。
    这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。
    例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

先到先服务
操作系统--期末复习_第1张图片
最短寻道时间
操作系统--期末复习_第2张图片
扫描算法
操作系统--期末复习_第3张图片
操作系统--期末复习_第4张图片

习题详解:

5. 采用寻道时间最短时间优先算法。按照磁道序号的大小排序,然后找到磁头的位置,然后寻找距离磁头最近的磁道,
然后计算他的移动磁道数,同理计算,最后得到结果就是答案。162道。(理解为磁道差的绝对值)

页面淘汰算法

知识点

 地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。
 当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。
 而用来选择淘汰哪一页的规则叫做页面置换算法。
 常用算法有:
    1.最佳置换算法(OPT)(理想置换算法)。
        从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。
        于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。 
    2.先进先出置换算法(FIFO)。
        是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间
        最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。
    3.最近最久未使用(LRU)算法。
        这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。
        它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,
        总是选择在最近一段时间内最久不用的页面予以淘汰。 
    4. 时钟(CLOCK)置换算法。
        LRU算法的性能接近于OPT,但是实现起来比较困难,且开销大;FIFO算法实现简单,但性能差。
        所以操作系统的设计者尝试了很多算法,试图用比较小的开销接近LRU的性能,这类算法都是CLOCK算法的变体。
缺页率 = (页面置换次数+分配给该进程的物理块数)/要访问的页面总数

习题详解

第六题思路:
首先,排出每次页面置换的情况。
注意:物理块没有用满的情况下也是属于页面缺页。
然后计算页面被置换出来的次数。要求使用FiFO算法,即是先进的先淘汰。得出淘汰率是75%和83%。
同理得第七题答案是10次中断

#### 解答第八九题
    第八题: 系统同时存在n个进程,处于等待的进程最多可有n个。原理:所有的进程都可以等待一个外部设备。(如键盘输入)
    第九题:
    当一个拥有n个进程的系统出现死锁时,死锁进程个数k可满足的条件是1

文件系统知识点

#### 文件逻辑结构:
     字节流式文件。读写的基本单位是字节。
     记录式文件。数据的集合,读写的基本单位是逻辑记录。记录本身又有等长和变长之分。
#### 访问方式:
     顺序访问。从文件的初始位置开始访问。类似C语言的文件读取操作,会有一个指针一直向下读取。
        对于流式文件,操作方式一致,读取的字节长度是字节的整数倍为长度。读完就将指针指向下个位置。
     直接访问。指用户随机访问文件中的某个信息。文件被允许随机读写读/写任意的记录(或逻辑字节)。
        对于流文件,允许读/写以任意长度的数据。
####文件在辅存的存放方法:
    顺序结构
    链接结构
    索引结构
    对应参考顺序表,链表,list
###习题理解
第十题D随机存取。

知识补充:
周转时间 = 结束时间-到达时间。
平均周转时间 = 周转时间和/作业数。
加权周转时间 = 周转时间/作业时间。
加权平均周转时间 = 加权周转时间和/作业数。

习题理解:

1. 思路:  
因为售票厅的容纳量是10,所以信号量的初值大小定义为10。
信号量各种取值的含义:  
当0<S≤10时,允许厅外的购票者进入;
当S=0时,厅内已有10人,欲购票者暂不能进入;
当S<0时,|S|表示等待进入者的人数。  
pv操作实现伪代码
pi(i = 1, 2...){
    p(s);
    进入售票厅;
    购票;
    退出;
    v(s);
}

其中信号量的变化范围为
最大值: 10
最小值: n-10
原理范围表示了进程可以进行的最大并发量和最大阻塞进程数,所以最小值是等待进程数的负数。


  1. 思路:
    本题与上题不同,本题的进程操作不一致,但是都是使用一个资源(盘子),所以需要定义三种信号量,一个信号量表示是否进行放水果操作,一个表示是否可取桔子,一个表示是否可取苹果。
    初值s(放水果) = 1, s1(取桔子) = 0, s2(取苹果) = 0;
int s = 1, s1 = 0, s2 = 0;
main(void){
    father();
    son();
    daughter();
}
 father(){
     while(1){
         p(s);
         将水果放进盘子;
         if(是苹果){
             v(s0)
         } else {
             v(s1)
         }
     }
 }
 
 daughter(){
     while(1){
         p(s2);
         去苹果;
         v(s);
         吃苹果;
     }
 }
 son(){
     while(1){
         p(s1);
         取桔子;
         v(s);
         吃桔子;
     }
 }

  1. 最短进程优先算法 :优先处理处理时间最短的进程。
    例子调度顺序是:1>4>3>2;
作业号 到达时间 结束时间 周转时间 带权周转时间
1 10.00 12.00 2 1
4 10.50 12.30 1.8 6
3 10.40 12.80 2.40 4.8
2 10.20 13.80 3.60 3.6

平均周转时间T = (2+1.5+2.40+3.60)/4 = 2.45小时
平均加权周转时间 W = (1+6+4.8+1.6)/4 = 3.85小时

知识补充:

死锁的四个必要条件

  1. 互斥条件:一个资源每次只能被一个进程使用。
  2. 请求和保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
  3. 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
  4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
    避免死锁的常用算法:
  • 线性资源分配算法:
    给系统的资源进行标号,然后每次申请资源必须一次性申请完。按照进程顺序进行执行。但是这样就破坏了环路条件。

  • 系统安全状态法:
    即在系统分配资源之前,就应该检测此次资源分配的安全性,如果此次分配资源会导致进程进入不安全状态,那就等待,如果不会,则分配资源。

  • 银行家算法:
    四个条件:

    1. 分批向银行贷款时,申请的总额不能超过一开始申请的额度。
    2. 申请贷款时不能超过银行现有资金数目
    3. 当银行资金不能满足顾客贷款需求时,可以推迟支付,但是肯定会让顾客在需求时间内得到贷款
    4. 顾客拿到贷款后必须在规定时间内归还。
      ###习题详解
      思路:判断是否安全,判断每个资源数量是否耗尽,没有再判断是否有足够的资源使得某个进程进入就绪运行状态。
      注意:安全序列有多条,只要是其中一条即可。
      ###习题理解:

    4.思路
    如5-4-3-2-1.
    在此时刻不能给p5分配如此量的资源,就不能再找到一条安全序列。会造成系统死锁。
    5.思路
    顺序执行时,注意各种设备间是独立的。
    所以总时间是32+8+5+21+14+35+12+32+15=174秒。
    操作系统--期末复习_第5张图片
    按ABC执行需117s,按ACB执行需126s,按BAC执行需112s,按BCA执行需90s,
    按CAB执行 114s,按CBA执行需99s。

习题原题链接>https://download.csdn.net/download/mathew_leung/10903615

你可能感兴趣的:(知识积累,知识理论基础,广东东软学院)