当前位置: 首页 > news >正文

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

管程的基本概念:
为什么会出现管程?
    信号量机制的不足:程序编写困难、易出错
解决:
  • Brinch Hansen(1973)
  • Boare(1974)
方案:
  • 在程序设计语言中引入管程成分
  • 一种高级同步机制
管程的定义:
        是一个特殊的模块
        有一个名字
        有关于共享资源的数据结构及在其上操作的一组过程组成
进程与管理
        进程只能通过调用管程中的过程来间接的访问管程中的数据结构
管程作为一种同步机制,要解决两个问题:
互斥:
        管程是互斥进入的
                    ——为了保证管程中的数据结构的数据完整性
            管程的互斥性是由编译器负责保证的
同步:
        管程中设置条件变量及等待/唤醒操作以解决同步问题。
管程的实现有两种途径:
        直接构造——>效率高
        间接构造
                    ——>用某种已经实现的同步机制去构造
为什么需要通信机制?
  • 信号量及管程的不足
  • 不适用多处理器情况

地址重定位
已经了解的:
        程序装载到内存才可以运行
                通常,程序以可执行文件格式 保存在磁盘上
        多道程序设计模型
                允许多个程序同时进入内存
         每个进程都有自己的地址空间
                一个进程执行时 不能访问另一个进程的地址空间
                进程不能执行不适合的操作
静态重定位与动态重定位:
静态重定位:
当用户程序加载到内存时,一次性实现逻辑地址到物理地址的转换
                    ——》一般可以由软件完成
动态重定位:
在进程执行过程中 进行地址变换——即逐条指令执行时完成地址转换
                    ——》需要硬件部件支持

内存管理
回收问题:
内存回收算法:
        当某一块归还后,前后空闲空间合并,修改内存空闲区表
        四种情况:
                上相邻、下相邻、上下都相邻、上下都不相邻
碎片问题解决:
         碎片——>很小的、不易利用的空闲区
                    ——>导致内存利用率下降
         解决方案——>紧缩技术
                在内存移动程序,将所有小的空闲区合并为较大的空闲区
                        又称:压缩技术、紧致技术、搬家技术
         紧缩时要考虑的问题:
            系统开销、移动时机
交换技术
  • 设计思想:进程在内存与磁盘之间的动态调度

存储管理
虚拟存储技术
  • 当进程运行时,先将一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不在内存时,由操作系统自动完成将他们从磁盘调入内存的工作。
虚拟地址空间:
  • 分配给进程的虚拟内存
虚拟地址:
  • 在虚拟内存中指令或数据的位置上,该位置可以被访问,仿佛他是内存的一部分。
地址保护:
  • 确保每个进程有独立的地址空间—— 防止地址越界
  • 确保进程访问合法的地址范围—— 防止访问越权
  • 确保进程的操作是合法的
引入反转(倒排)页表
地址转换:
  • 从虚拟地址空间出发:虚拟地址——>查页表——>得到页框号——>形成物理地址
  • 每个进程一张页表
解决思路:
  • 从物理地址空间出发,系统建立一张页表
  • 页表项纪录进程i的某虚拟地址(虚页号)与页框号的映射关系

快表(TLB)的引入
问题:
  • 页表—>两次或两次以上的内存访问
  • CPU的指令处理速度与内存指令的访问速度差异大,CPU的速度得不到充分利用
如何加快地址映射速度,以改善系统性能?
  • 程序访问的局部原理—>引入快表——高速缓存
快表是什么?
  • TLB——Translation Look-aside Buffers( 翻译查找缓冲区
  • 相联存储器
                 特点:按内容并行查找
  • 保存正在运行进程的页表的子集(部分页表项)
页错误PAGE FAULT
  • 又称页面错误、页故障、页面失效
  • 地址转换过程中硬件产生的异常
具体原因:
  • 所访问的虚拟页面没有调入物理内存
    •     ——>缺页异常
  • 页面访问违反权限(读/写、用户/内核)
  • 错误的访问地址
缺页异常处理:
  • 是一种Page Fault 页面错误
  • 在地址映射过程中,硬件检查页表时发现所要访问的页面不在内存,则产生该异常——缺页异常
  • 操作系统执行缺页异常处理程序:获得磁盘地址,启动磁盘,将该页调入内存。
    • 如果内存中有空闲页框,则分配一个页框,将新调入页装入,并修改页表中相应页表项的有效位及相应的页框号。
    • 若内存中没有空闲页框,则要置换内存中某一页框;若该页框内容被修改过,则要将其写回磁盘。

页框锁定
为什么要锁定页面?
  • 采用虚拟技术后
    • 开销——>使进程运行时间变得不确定
  • 给每一页框增加一个锁定位
  • 通过设置相应的锁定位,不让操作系统将进程使用的页面换出内存,避免产生由交换过程带来的不确定的延迟。
  • 例如:操作系统核心代码、关键数据结构、I/O缓冲区。
最佳页面置换算法(OPT)
  • 设计思想:
    • 置换以后不再需要的或最远的将来才会用到页面
先进先出算法(FIFO)
  • 选择在内存中驻留时间最长的页并置换它。
  • 对照:超市撤换商品
  • 实现:页面链表法
最近最少使用算法(LRU)
Least Recently Used( 最近最少使用算法
选择最后一次访问时间距离当前时间最长的一页并置换
及置换未使用时间最长的一页
  • 性能接近OPT
  • 实现:时间戳或维护一个访问页的栈
    • ——>开销大
最不经常使用算法(NFC)
Not Frequently Used
选择访问次数最少的页面置换
  • LRU的一种软件解决方案
  • 实现:
    • 软件计数器,一页一个,初值为0
    • 每次时钟中断时,计数器加R
    • 发生缺页中断时,选择计数器值最小的一页置换
工作集算法
基本思路:
  • 找出一个不在工作集中的页面并置换它
思路:
  • 每个页表项中有一个字段:记录该页面最后一次被访问的时间
  • 设置一个时间值T
  • 判断:根据一个页面的访问时间是否落在“当前时间-T”之前或之中决定其在工作集之外还是之内。
实现:
  • 扫描所有页表项,执行操作
1.如果一个页面的R位是1,则将该页面的最后一次访问时间设为当前时间,将R位清零
2.如果一个页面的R位是0,则检查该页面的访问时间是否在“当前时间-T”之前
    (1)如果是,则该页面为被置换的页面;
    (2.)如果不是,记录当前所有被扫描过页面的最后访问时间里面的最小值。扫描下一个页面并重复1、2。
本讲重点:

典型的文件逻辑结构与文件存取:
流式文件:构成文件的基本单位是字符
  • 文件是有逻辑意义、无结构的一串字符的集合
  • 记录式文件:文件由若干个记录组成,可以按记录进行读、写、查找等操作
  • 每条记录有内部结构
磁盘访问:
  • 一次访盘请求:
  • 读/写,磁盘地址(设备号,柱面号,磁头号,扇区号),内存地址(源/目)
完成过程由三个动作组成:
  • 寻到(时间):磁头移动定位到指定磁道
  • 旋转延迟(时间):等待指定扇区从磁头下旋转经过
  • 数据传输(时间):数据在磁盘与内存之间的实际传输。
有关数据结构:
  • 位图:
    •  用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配的物理块为0,否则为1
    • 申请物理块时,可以在位图中查找为1的位,返回对应物理块号
    • 归还时,将对应位转置1
  • 空闲块表:
    • 将所有空闲块记录在一个表中,即空闲块表
    • 主要两项内容:起始块号,块数
  • 空闲块链表:
    • 把所有空闲块链成一个链
    • 扩展:成组链接法

       

相关文章:

  • 东莞网站建设手袋加工/成都公司网站seo
  • 电子商务微网站制作/市场营销八大营销模式
  • 网站关键词推广优化/班级优化大师下载
  • 山东高端网站建设/seo网站优化技术
  • 深圳网站建设公司乐云seo598/百度企业网盘
  • 网站服务器物理地址怎么查/免费外链发布平台
  • Android面试题及答案整理(2023最新版)持续更新中......
  • Java开发 - 数据库中的基本数据结构
  • Python 圣诞树代码
  • 文科专业女生转行程序员月入20k:女生不适合做程序员吗?
  • 新店速递 | IU酒店带您领略“东方古罗马”
  • 实验二 单隐层神经网络
  • nor flash调试与使用总结
  • 【SpringMVC】下篇,拦截器(一步到位学会它)
  • 疫情之下,文科生转行学编程靠不靠谱?
  • 验证码、通知短信API常见使用问题
  • Html+JavaScript+Css 二手车价格评估系统设计开发
  • 分布式微服务框架SpringCloud Alibaba学习(1)