【重学计算机】操作系统D3章:存储管理
1. 存储管理的基本概念
- 逻辑地址:用户地址,从零开始编号
- 一维逻辑地址:(地址)
- 二维逻辑地址:(段号: 段内地址)
- 主存储器的复用方式
- 按分区:主存划分为多个固定/可变分区,一个程序占一个分区
- 按页架:主存划分为多个固定页架,一个程序占多个页架
- 存储管理的模式
- 单连续:一维逻辑地址程序,占一个固定/可变分区
- 段 式:二维逻辑地址程序,占多个可变分区
- 页 式:一维逻辑地址程序,占多个页架
- 段页式:二维逻辑地址程序,占多个页架
- 地址转换:逻辑地址 --> 物理地址
- 静态重定位:程序装入内存时转换(早期OS)
- 动态重定位:CPU执行时转换,效率考虑需要硬件帮助
- 虚拟存储器
- 由于程序的局部性顺序性等,可以考虑只将部分程序调入主存,其他的随用随调
- 达到了面对程序员主存扩容的目的
2. 单连续分区存储管理
- 单用户连续分区管理:主存区划分为系统区和用户区,采用静态重定位进行地址转换,一般适用于单用户单任务操作系统(DOS)
- 固定分区管理:一个程序占一个分区,有主存分配表,容易产生内零头
- 可变分区管理:按进程内存需求动态分配内存空间,容易产生外零头
3. 页式存储管理 **
- 概念:
- 主存分页架,程序分页。
- 不同程序页可放在不同主存页架中,不需要连续
- 页和页架关系由页表维护
- 用位示图表示主存分配与去配,用进程页表维护进程逻辑完整性
- 地址:
- 逻辑地址:页号 + 单元号
- 物理地址:页架号 + 单元号
- 快表:
- 利用Cache存放部分页表
- 同Cache缓存内存数据一样,也是相联存储器技术,并且有淘汰策略,具体见《重学计算机 -- 计算机组成原理》
- 页式虚拟存储
- 页表:标识位 + 主存块号 + 辅存地址
- 实现:
- 查页表,若页在内存,则生成绝对地址
- 若不在内存,发起缺页中断
- OS响应缺页中断,若内存有空闲页架,则从辅存中调入页。更新页表快表
- 若无空闲页架,先淘汰页,再调入
- 页面调度算法:
- 同Cache和内存的调度策略,具体参考《重学计算机 -- 计算机组成原理》
5. 其他
- 段式存储管理:基本不用,略
- 段页式存储管理:基本不用,略
- 内存管理单元MMU:
- 作用:管理虚拟存储器的硬件控制线路,把虚拟地址映射为物理地址,并提供内存保护,必要时淘汰页面
- 实现:用一种数据结构 反置页表IPT

PS:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还有用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。
【重学计算机】操作系统D3章:存储管理的更多相关文章
- 【重学计算机】操作系统D1章:计算机操作系统概述
1. 计算机软硬件系统 冯诺伊曼结构 以运算单元为核心,控制流由指令流产生 程序和数据存储在主存中 主存是按地址访问,线性编址 指令由操作码和地址码组成 数据以二进制编码 其他:参考<重学计算机 ...
- 【重学计算机】操作系统D6章:并发程序设计
1. 并发程序的基本概念 程序顺序性 内部顺序性:CPU严格按照顺序执行指令 外部顺序性:程序员设计程序时往往用顺序设计的思想 顺序程序特性 程序执行的顺序性 计算环境的封闭性: 程序执行时犹如独占资 ...
- 【重学计算机】操作系统D4章:设备管理
1. IO的控制方式 演进过程:轮询 --> 中断 --> DMA --> IO通道 经典布局:南北桥 PS:详见<计算机组成原理> 2. IO的实现 软件实现层次:硬件 ...
- 【重学计算机】操作系统D2章:处理器管理
1. 指令与处理器模式 指令执行周期:取指.译码.执行 指令分类(根据权限) 特权指令:只能被操作系统内核使用(启动IO,置PC值) 非特权指令:所有程序都能使用 处理器模式: 共有四种:0内核模式, ...
- 【重学计算机】操作系统D5章:文件系统
1. 文件系统 文件系统概述 文件的组织: 逻辑结构:流式.记录式 物理结构:顺序.连接.直接.索引 文件的存取:顺序.直接.索引 文件的控制:逻辑控制.物理控制 文件的使用:打开.关闭.读.写.控制 ...
- 【重学计算机】计组D3章:运算方法与运算器
1. 定点数运算及溢出 定点数加减法:减法化加法,用补码直接相加,忽略进位 溢出:运算结果超出了某种数据类型的表示范围 溢出检测方法:统一思想概括为正正得负或负负得正则溢出,正负或负正不可能溢出 方法 ...
- 【重学计算机】机组D4章:存储系统
1. 存储系统层次结构 主存速度缓慢的原因:主存增速与CPU不同步,执行指令期间多次访问主存 主存容量不足的原因: 存在制约主存容量的技术因素:如由CPU.主板等相关技术指标规定了主存容量 应用对主存 ...
- 【重学计算机】计组D1章:计算机系统概论
1.冯诺依曼计算机组成 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线) 2.计算机层次结构 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层 ...
- 【重学计算机】机组D8章:输入输出系统
1. 输入输出系统概述 组成:外设.接口.总线.管理软件 基本功能 完成计算机内外的信息传递 保证CPU正确选择输出设备 利用缓冲等,实现主机与外设的速度匹配 特点:异步性.实时性.设备无关性 输入过 ...
随机推荐
- EF Code First 数据迁移配置
这里我想讲清楚code first 数据迁移的两种模式,还有开发环境和生产环境数据迁移的最佳实践. 1.1 数据迁移综述 EF Code first 虽然已经有了几种不同的数据库初始化策略,但是大部分 ...
- 算法库中heap应用
STL中make_heap 的接口为: default (1) template <class RandomAccessIterator> void make_heap (RandomAc ...
- SAP中的BRF+
即便努力去尝试最小化SAP系统中的自定义内容,大量自定义业务逻辑通常还是无法避免的.在过去,这意味着需要在系统的各种地方引入自定义ABAP代码,包括user-exits,enhancement,BAd ...
- HTML学习笔记5:修饰符和特殊标签
①修饰符: 作用:修饰显示的方式,并不改变网页的结构,需要修饰的内容写在修饰标签内 常用文字和段落修饰符: 文字斜体:<i></i> 或 <em> ...
- 学生管理系统_排序后通过name删除列表里的字典
l = [{'name': 'wangfan', 'age': 18, 'sex': 'nan'}, {'name': 'wangerfan', 'age': 10, 'sex': 'nan'}, { ...
- 【转】Python的下划线
原文: 1. Python中的下划线(译文) 2. [转]关于python中带下划线的变量和函数的意义 总结: 1. 单下划线开头.保护变量,不可被其他包导入使用,除非在__all__声明可以显示引用 ...
- js相关
记录工作中用到的js实用方法: 1. 判断包含:indexOf "https".indexOf("http") 包含结果为0,不包含结果为-1: 通常用(&qu ...
- java ArrayList集合
ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类).在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来 ...
- cross-env 兼容跨平台运行脚本
https://www.npmjs.com/package/cross-env 跨平台运行脚本 The problem Most Windows command prompts will choke ...
- 基于.net的分布式系统限流组件
在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可以让整个系统的运行更加平稳.今天要与大 ...