导图社区 第三章内存
第三章内存知识梳理,包括存储保护(内存保护 )、地址转换、内存空间的扩充、内存空间的分配与回收等等。
编辑于2022-11-09 20:55:41时间管理-读书笔记,通过学习和应用这些方法,读者可以更加高效地利用时间,重新掌控时间和工作量,实现更高效的工作和生活。
本书是法兰教授的最新作品之一,主要阐明了设计史的来源、设计史现在的状况以及设计史的未来发展可能等三个基本问题。通过对设计史学科理论与方法的讨论,本书旨在促进读者对什么是设计史以及如何写作一部好的设计史等问题的深入认识与反思。
《计算机组成原理》涵盖了计算机系统的基本组成、数据的表示与运算、存储系统、指令系统、中央处理器(CPU)、输入输出(I/O)系统以及外部设备等关键内容。通过这门课程的学习,学生可以深入了解计算机硬件系统的各个组成部分及其相互之间的连接方式,掌握计算机的基本工作原理。
社区模板帮助中心,点此进入>>
时间管理-读书笔记,通过学习和应用这些方法,读者可以更加高效地利用时间,重新掌控时间和工作量,实现更高效的工作和生活。
本书是法兰教授的最新作品之一,主要阐明了设计史的来源、设计史现在的状况以及设计史的未来发展可能等三个基本问题。通过对设计史学科理论与方法的讨论,本书旨在促进读者对什么是设计史以及如何写作一部好的设计史等问题的深入认识与反思。
《计算机组成原理》涵盖了计算机系统的基本组成、数据的表示与运算、存储系统、指令系统、中央处理器(CPU)、输入输出(I/O)系统以及外部设备等关键内容。通过这门课程的学习,学生可以深入了解计算机硬件系统的各个组成部分及其相互之间的连接方式,掌握计算机的基本工作原理。
第三章 内存
存储保护(内存保护 )
保证各进程在自己的内存空间内运行,不会进行越界访问
两种方式
方式一:设置上下限寄存器,cpu检查是否越界
方式二:两个寄存器
重定位寄存器(基址寄存器):存放进程的起始物理地址
界地址寄存器(限长寄存器):存放进程的最大逻辑地址
先判断是否超过最大逻辑地址再重定位
地址转换
os实现逻辑地址到物理地址的转变
三种方式
绝对转入:编译时,产生绝对地址(单道程序阶段,还没有os),编译器完成
可重定位装入:转入时,将逻辑地址转换为物理地址(早期多道批处理),装入程序完成
动态运行时装入:运行时,将逻辑地址转换为物理地址,需要设置重定位寄存器(现代os),os完成
内存空间的扩充
覆盖技术
解决问题
程序大小超过物理内存总和
思想
将程序分成多个段(多个模块),常用段常驻内存,不常用的段在需要时调入内存
实现
一个固定区:存放常驻内存的段,调入后就不再调出(除非运行结束)
若干覆盖区:存放不常用的段,运行过程中根据需要调入调出
特点
按照自身逻辑,让不可能同时被访问的程序段共享同一个覆盖区
必须由程序员声明覆盖结构,操作系统完成自动覆盖
缺点
对用户不透明,增加用户编程负担
交换技术
思想
内存紧张时,系统将内存中的某些进程暂时换出外存,把外存中已具备运行条件的进程换入内存
中级调度
决定那个处于挂起状态的进程重新调入内存
实现:磁盘存储空间分为:
对换区(小):连续分配方式,存放被换出的进程数据,追求换入换出速度(i/o速度更快)
文件区(大):离散分配方式,存放文件,追求存储空间利用率
注意
pcb常驻内存(不会被换出外存),在挂起队列中,根据pcb管理进程
优先换出阻塞进程、优先级低的进程
暂时换出外存等待的进程状态为挂起状态,分为:阻塞挂起、就绪挂起
虚拟存储技术
传统存储管理方式的特征
覆盖与交换的区别
覆盖是在同一个程序(或进程)中的
交换是不同进程(或作业)之间的
内存空间的分配与回收
连续分配管理
单一连续分配
实现:内存分为:
系统区:操作系统相关数据
用户区:存放用户进程相关数据
特点
无外部碎片,有内部碎片
只支持单道程序:内存中只能有一道用户数据,用户程序独占整个用户区空间
固定分区分配
实现
借助数据结构管理:分区说明表
内存用户空间划分成若干个固定大小的分区,每个分区只能装一道作业
两种分区方式
分区大小 不等:增加灵活性,可以满足不同大小的进程需求
分区大小 相等:缺乏灵活性,很适合用于用一台计算机控制多个相同对象的场合
特点
无外部碎片,有内部碎片
支持多道程序
动态分区分配
实现
不会预先划分内存,而是在进程装入内存时,根据进程的大小动态的建立分区
数据结构
空闲分区链:每个分区的 首、尾部分 会分别设置 前、后向指针
空闲分区表:每个空闲分区对应一个表项
动态分区分配算法
把一个新作业装入内存时,须按照一定的动态分区分配算法,从空闲分区表(链)中选出一个分区分配给该作业
首次适应(First Fit)
思想
每次都从低地址开始查找,找到第一个能满足大小的空闲分区
实现
空闲分区以地址递增的次序排列
每次分配内存时,顺序查找空闲分区链(表)
最佳适应(Best Fit)
思想
优先使用
最坏适应(Worst Fit)
邻近适应(Next Fit)
回收内存时的4种情况
回收区之前有相邻的空闲分区:相邻的空闲分区要合并(更改空闲分区表)
回收区之后有相邻的空闲分区
回收区前后都有相邻的空闲分区
回收区前后都没有相邻的空闲分区:在空闲分区表中增加表项
特点
有外部碎片,无内部碎片
解决外部碎片:紧凑
非连续分配管理
基本分页存储管理
思想:把进程分页,各个页面离散的放到各个内存块中
相关概念
内存空间分为一个个大小相等的分区,一个分区就是一个页框
进程的逻辑地址也分为与页框大小相等的一个个部分,即为 页、页面
页框=页帧=内存块=物理块 vs 页=页面
编号
页框号(页框的编号):从0开始
页号(页面的编号):从0开始
操作系统以页框为单位为每个进程分配内存空间
进程的每个页面分别放入一个页框,一一对应
各个页面不需连续存放,可以存放到不相邻的各个页框
可能产生内部碎片:进程的最后一个页面没有一个页框大
页表
作用:知道进程的每个页面在内存的存放位置,二者映射关系
对应关系
一个进程 对应 一个页表
一个进程的每个页面 对应 一个页表项
实现
每个页表项:页号、块号
每个页表项的长度(大小)是相同的
页表存放在pcb中
页表记录的只是物理块号,而不是内存块的起始地址
每个页表项的大小
块号(求要几B):内存大小/页面大小=内存块数(2^k块),内存块号范围0~(2^k)-1,需要k位bit表示块号,1B=8bit,可知块号要几B(内存块的数量 可推出页表项的大小)
页号:可以隐含,不用占据存储空间
每个页表项大小相同,连续存放:i号页表项的存放位置=页表的起始地址+i*页表项大小
操作系统实现地址的转换
进程的页面是离散存放,但页面内部是连续存放
逻辑地址结构
页号k位:一个进程最多有2^k个页面
页内偏移量m位:一个页面的大小是2^m个内存单元
地址转换
1,求逻辑地址A对应的【页号,页内偏移量】
方法一
页号 = 逻辑地址/页面长度(除法的整数部分)
页内偏移量 = 逻辑地址%页面长度(取整)(除法的余数部分)
方法二
末尾k位是页内偏移量,其余是页号
物理地址=物理块号(查页表可得) 拼接 页内偏移量
2,查页表,找到对应页面在内存中的存放位置
3,物理地址 = 物理块的始址 + 页内偏移量
基本地址变换机构
页表寄存器
存放页表在内存中的起始地址F,页表长度M
进程未执行时,FM放在pcb;进程被调度时,os内核把FM放在页表寄存器
两次访存:访页表、访内容
具有快表的地址变换机构
快表
访问速度远远高于内存的高速缓存
存放最近访问的页表项的副本
局部性原理(程序中存在大量循环)
时间局部性:执行了某指令(访问数据),不久后可能再次执行
空间局部性:程序访问某存储单元,其附近的存储单元也有可能被访问
是否命中快表
命中:一次访存:访快表+访内存内容
没命中
两次访存:访快表+访页表+访内存内容
查完页表后,需要将页表项复制到快表中
两级页表
单级页表存在问题
所有页表项必须连续存放,页表过大时需要很大的连续空间
在一段时间内并非所有页面都用得到,因此没必要让整个页表常驻内存
基本分段存储管理
段页式存储管理