计算机操作系统基础笔记( 五 )


1. 破坏“请求与保持”条件,规定所有进程都必须一次性申请运行过程所需的全部资源,会造成资源浪费严重和更多更久的进程阻塞 。
2. 破坏“不剥夺”条件,规定一个已经保持了某些资源的进程,在提出新的资源请求而不能立即得到满足时,必须释放它已经获得的所有资源,方法实现复杂且开销大 。
3. 破坏“环路等待“条件,将系统资源按类型赋予不同的序号,当进程要获取多种资源时必须按序号逐个获取资源 。会限制新设备类型的增加,由于有些进程使用资源的顺序与规定的顺序不同,会造成资源的浪费 。
避免死锁将系统状态分为安全状态和不安全状态,安全状态一定不会产生死锁,不安全状态可能会产生死锁 。
允许进程动态申请资源,系统分配资源前进行安全性检查,若分配会导致系统进入不安全状态,则不予以分配 。
银行家算法,根本思想:当某个进程提出资源请求,并请求资源小于等于它实际所需资源时,检查是否存在一条路径可以在资源分配后,剩余的进程仍然可以完全结束 。
数据结构:
1. 可用资源向量 Available
2. 最大需求矩阵Max
3. 分配矩阵Allocation
4. 需求矩阵Need
5. 工作向量work
6. 工作向量Finish
死锁的检测与解除系统定时进行死锁的检测,当判明将发生死锁或已经发生死锁时,进行死锁的解除 。
死锁的检测:
1. 判断的现有的资源能否让现有的进程全部正常结束,不能则认为将发生死锁 。
2. 周期性检测进程阻塞时间,当其超过某一时间后,认为该进程为死锁进程 。
死锁的解除:
1. 剥夺资源
2. 撤销进程
存储器管理三级存储:
1. 高速缓存cache
2. 内存RAM
3. 磁盘
五级存储:
1. 寄存器
2. 高速缓存
3. 内存
4. 磁盘缓存
5. 磁盘
存储分配的三种方式:
1. 直接指定
2. 静态分配方式
3. 动态分配方式
程序的装入

  1. 绝对装入方式
    编译程序产生实际存储地址(绝对地址)的目标模块逻辑地址与实际内存地址完全相同
  2. 可重定位装入方式
    重定位(地址映射/地址变换),根据地址变换进行的时间及采用技术手段不同,分为:
  3. 静态重定位
    地址变化在装入内存时一次完成,优点:不需要硬件支持,可以装入有限多道程序 。缺点:一个程序通常需要占用连续的内存空间,程序装入内存后不能移动,不易实现共享 。
  4. 动态重定位
    地址变换在程序执行时进行,在硬件地址变换机构的支持下,对每条指令或数据的访问自动进行地址变换 。优点:主存使用更加灵活,几个作业共享一个程序段的单个副本比较容易,可以向用户提供一个比主存的存储空间大得多的地址空间而用户无需考虑覆盖结构 。缺点:需要附加硬件支持,实现存储器管理的软件比较复杂 。
  5. 动态运行时装入方式
程序的链接
  1. 静态链接
  2. 装入时动态链接
  3. 运行时动态链接
运行时动态链接是目前最常使用的链接方式
存储器管理的目的
  1. 主存储器的分配和管理
  2. 提高主存储器的利用率
  3. “扩充”主存容量
  4. 存储保护
存储器保护
  1. 自动地址修改
  2. 0页,1页寻址
  3. 界限寄存器
连续分配方式
  1. 单一连续分配方式
  2. 分区式分配方式
  3. 可重定位分区分配
单一连续分配方式内存中仅驻留一道用户程序,整个用户区为一个用户独 占 。?内存分为两个区域:系统区,用户区 。
应用程序装入到用户区,可使用用户区全部空间 。
分区式分配方式算法复杂,回收分区时系统开销大 。
1. 固定分区分配
(1)分区大小不等(2)分区大小相等
建立分区说明表,内存分配程序检索分区说明表,找出合适分区后修改分区状态 。
优点:易于实现,开销小
缺点:内碎片造成浪费,分区总数固定,限制了并发执行的程序数目,存储空间的利用率太低 。
2. 动态分区分配
1. 分区数目固定
2. 分区数目大小均不固定


推荐阅读