操作系统原理--资源与分配调度

资源管理概述

资源的静态(作业)&动态分配(进程)

虚拟资源(通过抽象与管理,把物理资源"虚拟化"后呈现给用户或进程使用的逻辑资源)

&物理资源(计算机硬件中真实存在的资源)

虚拟资源 对应的物理资源 实现机制

|-------|-----|-------------------|
| 虚拟处理器 | CPU | 调度算法(时间片轮转、优先级调度) |

|------|---------|---------------------------|
| 虚拟内存 | 主存 + 磁盘 | 地址映射、分页(Page)、分段(Segment) |

|------|-----|-------------|
| 虚拟文件 | 磁盘块 | 文件系统抽象、缓存机制 |

|------|-----------|-------------------|
| 虚拟设备 | 各种 I/O 设备 | 设备驱动程序、缓冲区管理、系统调用 |

资源分配的机构

资源描述器

定义:描述各类资源的最少分配单位的数据结构

**资源信息块:**描述某类资源的请求者、可用资源和资源分配程序等必要信息的数据结构

访问磁盘调度

组成:磁道、扇区、柱面(所有盘片上相同编号的磁道集合)、磁头

磁盘访问时间: 寻道时间 + 旋转延迟 + 传输时间

寻道时间:磁头移动到目标磁道所需时间

旋转延迟:磁头移动到目标磁道所需时间

传输时间:实际读/写数据的时间

其中,寻道时间的占比最大,因此调度算法的主要目的:

减少平均寻道时间。

常见磁盘调度算法:

  1. FCFS 按照请求到达的顺序服务,简单公平,但平均寻道时间长。
  2. SSTF 最短寻道时间优先:优先选择与当前磁头位置最近的请求。可能导致远处的请求长时间得不到响应
  3. SCAN 电梯调度算法 :磁头像电梯一样来回移动,按一个方向依次处理请求,走到尽头再反向。缺陷是较远一侧请求可能延迟。
  4. CSCAN 循环扫描算法:只向一个方向移动(如从小到大),到尽头后直接回到起点,不处理回程请求,使每个请求等待时间更均匀,缺点是会有回程空转。
  5. LOOK/CLOOK 类似 SCAN / CSCAN,但磁头不会到磁盘尽头,而是到最后一个请求的位置就折返

死锁

定义:多个并发进程中,自身持有 某个资源而又相互等待 对方的资源,造成这些进程都无法执行的情况

图解:

折线图:

进程------资源分配图:

:p指向r表示进程p申请资源未得到处于等待,r指向p表示资源r已被进程p占用。图二表示死锁。

产生必要条件:

互斥、不剥夺(非抢占)、占用并等待(部分分配)、环路(循环等待)

解决办法:破坏四个必要条件

预防死锁:

  1. 静态分配策略 一次性为选中的作业分配一直使用的资源,直至该作业完毕。破环部分分配。缺陷是程序运行之前很难提出所有需要占用的设备,以及资源利用率下降
  2. 有序资源分配 对所有资源进行唯一编号,申请时按升序进行申请,破坏环路。

避免死锁:

  1. 银行家算法

当一个进程提出资源请求时:

  1. 系统先试分配给它;

  2. 然后检查系统是否处于"安全状态(Safe State)";

  3. 若安全,则正式分配;

  4. 若不安全,则拒绝请求,让进程等待。

银行家算法的数据结构:

1*m向量,available,各资源的使用情况,3个n*m矩阵(线程数*资源数)最大需求量已分配给各进程的资源数尚需的资源量

安全状态定义:

系统中存在一个进程序列P1,P2,...,Pn​,

使得对于每个进程 Pi,它的需求都能被当前系统资源满足,则称系统处于安全状态。

若无此序列,系统处于不安全状态

不做最小需求优化!只要可以被分配就试探

算法流程:

安全性算法

银行家算法:

  1. 检查合法性 判断requset[i] <= need[i] && request[i] <= available[i]
  2. 检查资源可用性
  3. 试探分配 该项资源被占用后仍然可以找到安全序列
  4. 安全->正式分配;不安全->撤销试探,等待

死锁的检测与解除

通心面问题:5个人,5把叉,

解决办法:至多四个人吃;取叉子顺序(打破环路)等两把叉子,否则一个也不拿(破环部分分配)

例题:

v0:优先想到,一次性资源分配,船要过时AB同时p,车同理,缺点是并发度太低,因为AB利用率不高。

v1:利用弯道:提前得知弯道大小,B未升起时可以先到B,等待A放下。改进空间:同类进程不必互斥。

v1.1:给要过的船和车一个数量信号灯,当前有车/船在过时一直过

相关推荐
MZWeiei7 个月前
进程同步机制-信号量机制-记录型信号量机制中的的wait和signal操作
操作系统原理
hiddenSharp4292 年前
【操作系统原理】第五章课后习题
操作系统原理
hiddenSharp4292 年前
【操作系统原理】第六章课后习题
操作系统原理
hiddenSharp4292 年前
【操作系统原理】第二章课后习题
操作系统原理·计算机基础课
Ealser2 年前
<Linux>(极简关键、省时省力)《Linux操作系统原理分析》(1)
linux·运维·网络·操作系统原理