【重学计算机】操作系统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正确选择输出设备 利用缓冲等,实现主机与外设的速度匹配 特点:异步性.实时性.设备无关性 输入过 ...
随机推荐
- 用ASP.NET Core 2.0 建立规范的 REST API
什么是REST REST 是 Representational State Transfer 的缩写. 它是一种架构的风格, 这种风格基于一套预定义的规则, 这些规则描述了网络资源是如何定义和寻址的. ...
- 拾人牙慧篇之——基于HTML5中websocket来实现消息推送功能
一.写在前面 要求做一个,后台发布信息,前台能即时得到通知的消息推送功能.网上搜了也有很多方式,ajax的定时询问,Comet方式,Server-Sent方式,以及websocket.表示除了定时询问 ...
- Golang 交叉编译 window/linux 文件
gox - 一款简单的交叉编译工具 下载地址:https://github.com/mitchellh/gox 使用 go get 命令安装: go get github.com/mitchellh/ ...
- svn部署项目
svn部署项目 在svn服务器上文件夹拷入项目文件~然后直接检出文件夹~即可
- HTML学习笔记6:列表标签
列表标签 什么是列表标签呢? 以平台区分有什么游戏? 手游 pc游戏 家用机游戏 掌机游戏 以游戏类型区分有什么游戏? RPG ARPG MMORPG ACT FPS 以上两种就是一种列表标签 ...
- 【转】JavaScript的异常处理
当 JavaScript 引擎执行 JavaScript 代码时,有可能会发生各种异常,例如是语法异常,语言中缺少的功能,由于来自服务器或用户的异常输出而导致的异常. 而 Javascript 引擎是 ...
- 2017年Kali Linux更新源
终端输入: leafpad /etc/apt/sources.list 打开更新源配置文件,将下面的更新源复制到原内容的前面: #163网易 Kali源 deb http://mirrors.163. ...
- Windows下SVN命令行工具使用详解
根据我的记忆,似乎Windows 7下自自带一个svn命令行工具.如果你的机器没有,不必担心.你可以从http://subversion.tigris.org获 取subversion for win ...
- Java 字符流文件读写
上篇文章,我们介绍了 Java 的文件字节流框架中的相关内容,而我们本篇文章将着重于文件字符流的相关内容. 首先需要明确一点的是,字节流处理文件的时候是基于字节的,而字符流处理文件则是基于一个个字符为 ...
- Python中的r+和a+
问题描述 我打算更改文件user_list2中的内容, 本来的想法是加一个temp 文件. 先把user_list2的内容读取并修改后写入temp, 之后再写回来. 但是在读取内容并修改后写入temp ...