zoukankan      html  css  js  c++  java
  • 【重学计算机】操作系统D3章:存储管理

    1. 存储管理的基本概念

    • 逻辑地址:用户地址,从零开始编号
      • 一维逻辑地址:(地址)
      • 二维逻辑地址:(段号: 段内地址)
    • 主存储器的复用方式
      • 按分区:主存划分为多个固定/可变分区,一个程序占一个分区
      • 按页架:主存划分为多个固定页架,一个程序占多个页架
    • 存储管理的模式
      • 单连续:一维逻辑地址程序,占一个固定/可变分区
      • 段   式:二维逻辑地址程序,占多个可变分区
      • 页   式:一维逻辑地址程序,占多个页架
      • 段页式:二维逻辑地址程序,占多个页架
    • 地址转换:逻辑地址 --> 物理地址
      • 静态重定位:程序装入内存时转换(早期OS)
      • 动态重定位:CPU执行时转换,效率考虑需要硬件帮助
    • 虚拟存储器
      • 由于程序的局部性顺序性等,可以考虑只将部分程序调入主存,其他的随用随调
      • 达到了面对程序员主存扩容的目的

    2. 单连续分区存储管理

    • 单用户连续分区管理:主存区划分为系统区和用户区,采用静态重定位进行地址转换,一般适用于单用户单任务操作系统(DOS)
    • 固定分区管理:一个程序占一个分区,有主存分配表,容易产生内零头
    • 可变分区管理:按进程内存需求动态分配内存空间,容易产生外零头

    3. 页式存储管理 **

    • 概念:
      • 主存分页架,程序分
      • 不同程序页可放在不同主存页架中,不需要连续
      • 页和页架关系由页表维护
      • 位示图表示主存分配与去配,用进程页表维护进程逻辑完整性
    • 地址:
      • 逻辑地址:页号 + 单元号
      • 物理地址:页架号 + 单元号
    • 快表
    • 页式虚拟存储
      • 页表:标识位 + 主存块号 + 辅存地址
      • 实现
        • 查页表,若页在内存,则生成绝对地址
        • 若不在内存,发起缺页中断
        • OS响应缺页中断,若内存有空闲页架,则从辅存中调入页。更新页表快表
        • 若无空闲页架,先淘汰页,再调入
    • 页面调度算法

    5. 其他

    • 段式存储管理:基本不用,略
    • 段页式存储管理:基本不用,略
    • 内存管理单元MMU:
      • 作用:管理虚拟存储器的硬件控制线路,把虚拟地址映射为物理地址,并提供内存保护,必要时淘汰页面
      • 实现:用一种数据结构 反置页表IPT

    PS:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。

  • 相关阅读:
    10分钟教你用VS2017将代码上传到GitHub
    【算法】C++用链表实现一个箱子排序附源代码详解
    【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解
    【C/C++】10分钟教你用C++写一个贪吃蛇附带AI功能(附源代码详解和下载)
    【python】10分钟教你用python如何正确把妹
    【python】10分钟教你用python一行代码搞点大新闻
    【python】10分钟教你用python下载和拼接微信好友头像图片
    3. powerdesigner 生成mysql脚本,要求字段、表名有注释
    5. 回填表格复选框
    14. js字符串截取substring用法
  • 原文地址:https://www.cnblogs.com/flashsun/p/10669864.html
Copyright © 2011-2022 走看看