0
点赞
收藏
分享

微信扫一扫

操作系统管程-地址-重定位-内存管理与存储管理


管程的基本概念:



为什么会出现管程?



    信号量机制的不足:程序编写困难、易出错



解决:



  • Brinch Hansen(1973)
  • Boare(1974)

方案:



  • 在程序设计语言中引入管程成分
  • 一种高级同步机制

管程的定义:



        是一个特殊的模块



        有一个名字



        有关于共享资源的数据结构及在其上操作的一组过程组成



进程与管理



        进程只能通过调用管程中的过程来间接的访问管程中的数据结构




管程作为一种同步机制,要解决两个问题:



互斥:



        管程是互斥进入的



                    ——为了保证管程中的数据结构的数据完整性



            管程的互斥性是由编译器负责保证的



同步:



        管程中设置条件变量及等待/唤醒操作以解决同步问题。




管程的实现有两种途径:



        直接构造——>效率高



        间接构造



                    ——>用某种已经实现的同步机制去构造



为什么需要通信机制?



  • 信号量及管程的不足
  • 不适用多处理器情况

地址重定位



已经了解的:



程序装载到内存才可以运行



保存在磁盘上



        多道程序设计模型



                允许多个程序同时进入内存



每个进程都有自己的地址空间



不能访问另一个进程的地址空间



                进程不能执行不适合的操作



静态重定位与动态重定位:



静态重定位:



当用户程序加载到内存时,一次性实现逻辑地址到物理地址的转换



                    ——》一般可以由软件完成



动态重定位:



在进程执行过程中 进行地址变换——即逐条指令执行时完成地址转换



                    ——》需要硬件部件支持



内存管理



回收问题:



内存回收算法:



        当某一块归还后,前后空闲空间合并,修改内存空闲区表



        四种情况:



                上相邻、下相邻、上下都相邻、上下都不相邻




碎片问题解决:



碎片——>很小的、不易利用的空闲区



                    ——>导致内存利用率下降



解决方案——>紧缩技术



                在内存移动程序,将所有小的空闲区合并为较大的空闲区



                        又称:压缩技术、紧致技术、搬家技术




紧缩时要考虑的问题:



            系统开销、移动时机




交换技术



  • 设计思想:进程在内存与磁盘之间的动态调度



存储管理



虚拟存储技术



  • 当进程运行时,先将一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不在内存时,由操作系统自动完成将他们从磁盘调入内存的工作。

虚拟地址空间:



  • 分配给进程的虚拟内存

虚拟地址:



  • 在虚拟内存中指令或数据的位置上,该位置可以被访问,仿佛他是内存的一部分。



地址保护:



  • 防止地址越界
  • 防止访问越权
  • 确保进程的操作是合法的



引入反转(倒排)页表



地址转换:



  • 从虚拟地址空间出发:虚拟地址——>查页表——>得到页框号——>形成物理地址
  • 每个进程一张页表

解决思路:



  • 从物理地址空间出发,系统建立一张页表
  • 页表项纪录进程i的某虚拟地址(虚页号)与页框号的映射关系



快表(TLB)的引入


问题:


  • 页表—>两次或两次以上的内存访问
  • CPU的指令处理速度与内存指令的访问速度差异大,CPU的速度得不到充分利用


如何加快地址映射速度,以改善系统性能?


  • 程序访问的局部原理—>引入快表——高速缓存

快表是什么?


  • 翻译查找缓冲区)
  • 相联存储器

特点:按内容并行查找


  • 保存正在运行进程的页表的子集(部分页表项)


页错误PAGE FAULT


  • 又称页面错误、页故障、页面失效
  • 地址转换过程中硬件产生的异常

具体原因:


  • 所访问的虚拟页面没有调入物理内存
  •     ——>缺页异常
  • 页面访问违反权限(读/写、用户/内核)
  • 错误的访问地址

缺页异常处理:


  • ( 页面错误)
  • 在地址映射过程中,硬件检查页表时发现所要访问的页面不在内存,则产生该异常——缺页异常
  • 操作系统执行缺页异常处理程序:获得磁盘地址,启动磁盘,将该页调入内存。
  • 如果内存中有空闲页框,则分配一个页框,将新调入页装入,并修改页表中相应页表项的有效位及相应的页框号。
  • 若内存中没有空闲页框,则要置换内存中某一页框;若该页框内容被修改过,则要将其写回磁盘。


页框锁定


为什么要锁定页面?


  • 采用虚拟技术后
  • 开销——>使进程运行时间变得不确定
  • 给每一页框增加一个锁定位
  • 通过设置相应的锁定位,不让操作系统将进程使用的页面换出内存,避免产生由交换过程带来的不确定的延迟。
  • 例如:操作系统核心代码、关键数据结构、I/O缓冲区。


最佳页面置换算法(OPT)


  • 设计思想:
  • 置换以后不再需要的或最远的将来才会用到页面


先进先出算法(FIFO)


  • 选择在内存中驻留时间最长的页并置换它。
  • 对照:超市撤换商品
  • 实现:页面链表法


最近最少使用算法(LRU)


最近最少使用算法)


选择最后一次访问时间距离当前时间最长的一页并置换


及置换未使用时间最长的一页


  • 性能接近OPT
  • 实现:时间戳或维护一个访问页的栈
  • ——>开销大


最不经常使用算法(NFC)


Not Frequently Used


选择访问次数最少的页面置换


  • LRU的一种软件解决方案
  • 实现:
  • 软件计数器,一页一个,初值为0
  • 每次时钟中断时,计数器加R
  • 发生缺页中断时,选择计数器值最小的一页置换


工作集算法


基本思路:


  • 找出一个不在工作集中的页面并置换它

思路:


  • 每个页表项中有一个字段:记录该页面最后一次被访问的时间
  • 设置一个时间值T
  • 判断:根据一个页面的访问时间是否落在“当前时间-T”之前或之中决定其在工作集之外还是之内。

实现:


  • 扫描所有页表项,执行操作

1.如果一个页面的R位是1,则将该页面的最后一次访问时间设为当前时间,将R位清零


2.如果一个页面的R位是0,则检查该页面的访问时间是否在“当前时间-T”之前


    (1)如果是,则该页面为被置换的页面;


    (2.)如果不是,记录当前所有被扫描过页面的最后访问时间里面的最小值。扫描下一个页面并重复1、2。



本讲重点:



操作系统管程-地址-重定位-内存管理与存储管理_windows


典型的文件逻辑结构与文件存取:


流式文件:构成文件的基本单位是字符


  • 文件是有逻辑意义、无结构的一串字符的集合
  • 记录式文件:文件由若干个记录组成,可以按记录进行读、写、查找等操作
  • 每条记录有内部结构


磁盘访问:


  • 一次访盘请求:
  • 读/写,磁盘地址(设备号,柱面号,磁头号,扇区号),内存地址(源/目)

完成过程由三个动作组成:


  • 寻到(时间):磁头移动定位到指定磁道
  • 旋转延迟(时间):等待指定扇区从磁头下旋转经过
  • 数据传输(时间):数据在磁盘与内存之间的实际传输。


有关数据结构:


  • 位图:
  •  用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配的物理块为0,否则为1
  • 申请物理块时,可以在位图中查找为1的位,返回对应物理块号
  • 归还时,将对应位转置1
  • 空闲块表:
  • 将所有空闲块记录在一个表中,即空闲块表
  • 主要两项内容:起始块号,块数
  • 空闲块链表:
  • 把所有空闲块链成一个链
  • 扩展:成组链接法  
举报

相关推荐

0 条评论