计算机操作系统内存管理知识点.pdf
计算机操作系统内存管理知识点整理内存空间的分配与回收连续分配管理为用户进程分配的必须是一个连续的内存空间.单一连续分配 实现:内存分为:系 统 区:操作系统相关数据用 户 区:存放用户进程相关数据 特点无外部碎片,有内部碎片只支持单道程序:内存中只能有一道用户数据,用户程序独占整个用户区空间.固定分区分配 实现借助数据结构管理:分区说明表 内存用户空间划分成若干个固定大小的分区,每个分区只能装一道作业 两种分区方式分区大小 不等:增加灵活性,可以满足不同大小的进程需求分区大小 相等:缺乏灵活性,很适合用于用一台计算机控制多个相同对象的场合 特点无外部碎片,有内部碎片 支持多道程序.动态分区分配可变分区分配 实现不会预先划分内存,而是在进程装入内存时,根据进程的大小动态的建立分区 数据结构记录内存使用情况空 闲分区链:每个分区的首、尾部分会分别设置 前、后向指针空 闲分区表:每个空闲分区对应一个表项 动态分区分配算法当很多个空闲分区都能满足需求时选择哪个分区进行分配把一个新作业装入内存时,须按照一定的动态分区分配算法,从空闲分区表(链)中选出一个分区分配给该作业首 次 适 应(First Fit)思想 每次都从低地址开始查找,找到第一个能满足大小的空闲分区 实现 空闲分区以地址递增的次序排列每次分配内存时,顺序查找空闲分区链(表)最佳 适 应(Best Fit)思想优先使用最坏 适 应(Worst Fit)邻近 适 应(Next Fit)回收内存时的4 种情况 回收区之前有相邻的空闲分区:相邻的空闲分区要合并(更改空闲分区表)回收区之后有相邻的空闲分区 回收区前后都有相邻的空闲分区 回收区前后都没有相邻的空闲分区:在空闲分区表中增加表项 特点有外部碎片,无内部碎片解决外部碎片:紧凑非连续分配管理为用户进程分配的可以是一些分散的内存空间.基本分页存储管理思 想:把进程分页,各个页面离散的放到各个内存块中 相关概念 内存空间分为一个个 大小相等的分区,一个分区就是一个页框 进程的逻辑地址也分为与页框大小相等的一个个部分,即为 页、页面 页框=页帧=内存块=物 理 块 v s 页=页面 编号页 框 号(页框的编号):从。开始 页 号(页面的编号):从0开始 操作系统以更邂为单位为每个进程分配内存空间 进程的每个页面分别放入一个页框,一一对应 各个页面不需连续存放,可以存放到不相邻的各个页框 可能产生内部碎片:进程的最后一个页面没有一个页框大 页表作 用:知道进程的每个页面在内存的存放位置,二者映射关系 对应关系 一 个 进 程 对 应 一 个 页 表 一个进程的每个页面 对应一个页表项 实现 每个页表项:页号、块号 每个页表项的长度(大小)是相同的 页表存放在pcb中 页表记录的只是物理块号,而不是内存块的起始地址每个页表项的大小 块 号(求要几B):内存大小/页面大小=内存块数(2”块),内存块号范围0(2”)-1,需要k位bit表示块号,lB=8bit,可知块号要几B(内存块的数量可推出页表项的大小)页号:可以隐含,不用占据存储空间 每个页表项大小相同,连续存放:i号页表项的存放位置=页表的起始地址+i*页 表项大小地址转换 1,求逻辑地址A对 应 的【页号,页内偏移量】方法一9号物理块始址为9*4KB(页面大小)9*272B,9*4096B 页 号=逻辑地址/页面长度(除法的整数部分)页 内 偏 移 量=逻辑地址页面长度(取整)(除法的余数部分)操作系统实现地址的转换进程的页面是离散存放,但页面内部是连续存放 逻辑地址结构页 号k位:一个进程最多有2”个页面 页内偏移量 m 位:一个页面的大小是 2Am 个内存单元 方法二当每个页面大小为2八k B,用二进制表示逻辑地址末 尾k位是页内偏移量,其余是页号物理地址=物理块号(查页表可得)拼 接 页内偏移量9号物理块始址为0000001001(9)2,查页表,找到对应页面在内存中的存放位置 3,物 理 地 址=物理块的始址+页内偏移量A对应的页号是P 1,查页表知p l存放在内存块号p 2,求P2在内存中的始址,再 求A的页内偏移量W逻辑地址A对应的物理她址=P2在内存中的始址+A的页内偏移量W 基本地址变换机构 页表寄存器存放页表在内存中的起始地址F,页表长度M进程未执行时,FM放 在p cb;进程被调度时,os内核把FM放在页表寄存器两次访存:访页表、访内容 具有快表的地址变换机构 快表 访问速度远远高于内存的高速缓存 存放最近访问的页表项的副本局 部 性 原 理(程序中存在大量循环)时间局部性:执行了某指令(访问数据),不久后可能再次执行空间局部性:程序访问某存储单元,其附近的存储单元也有可能被访问 是否命中快表命 中:一次访存:访快表+访内存内容 没命中两次访存:访快表+访页表+访内存内容查完页表后,需要将页表项复制到快表中两级页表 单级页表存在问题 所有页表项必须连续存放,页表过大时需要很大的连续空间 在一段时间内并非所有页面都用得到,因此没必要让整个页表常驻内.基本分段存储管理段页式存储管理内存空间的扩充覆盖技术 解决问题程序大小超过物理内存总和 思想将 程 序 分 成 多 个 段(多个模块),常用段常驻内存,不常用的段在需要时调入内存 实现 一个固定区:存放常马主内存的段,调入后就不再调出(除非运行结束)若干覆盖区:存放不常用的段,运行过程中根据需要调入调出 特点按照自身逻辑,让不可能同时被访问的程序段共享同一个覆盖区必须由程序员声明覆盖结构,操作系统完成自动覆盖 缺点对用户不透明,增加用户编程负担交换技术 思想内存紧张时,系统将内存中的某些进程暂时换出外存,把外存中已具备运行条件的进程换入内存 中级调度决定那个处于挂起状态的进程重新调入内存实 现:磁盘存储空间分为:对 换 区(小):连续分配方式,存放被换出的进程数据,追求换人换出速度(i/o速度更快)文 件 区(大):离散分配方式,存放文件,追求存储空间利用率注意 pcb常 驻 内 存(不会被换出外存),在挂起队列中,根 据 pcb管理进程 优先换出阻塞进程、优先级低的进程优先级低:也会考虑进程在内存的驻留时间,防止饿死 暂时换出外存等待的进程状态为挂起状态,分为:阻塞挂起、就绪挂起七态转换图:阻塞-阻塞挂起;阻塞挂起、就绪、运行、创 建-就 绪 挂 起(阻寒不能直接到就绪挂起!)虚拟存储技术 传统存储管理方式的特征覆盖与交换的区别覆 盖是在同一个程序(或进程)中的交 换是不同进程(或作业)之间的地址转换 OS实现逻辑地址到物理地址的转变三种方式绝对转入:编译时,产生绝对地址(单道程序阶段,还没有OS),向译g可重定位装入:转入时,将逻辑地址转换为物理地址(早期多道批处理),装入程序完成动态运行时装入:运行时,将逻辑地址转换为物理地址,需要设置重定位寄存器(现代0S),O S完成存 储 保 护(内 存 保 护)保证各进程在自己的内存空间内运行,不会进行越界访问 两种方式方 式 一:设置上下限寄存器,c p u检查是否越界 方式二:两个寄存器 重定位寄存器(基址寄存器):存放进程的起始物理地址 界地址寄存器(限长寄存器):存放进程的最大逻辑地址 先判断是否超过最大逻辑地址再重定位