计算机操作系统教程PPT.ppt_第1页
计算机操作系统教程PPT.ppt_第2页
计算机操作系统教程PPT.ppt_第3页
计算机操作系统教程PPT.ppt_第4页
计算机操作系统教程PPT.ppt_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章 内存管理 存储的层次结构 第3章内存管理3 1内存介绍3 1 1内存管理1 存储的层次结构 高速缓存 2 高速缓存目前存储的技术是设置CPU的三级缓存 1 L1Cache 一级缓存 是CPU第一层高速缓存 分为数据缓存和指令缓存 内置的L1高速缓存的容量和结构对CPU的性能影响较大 不过高速缓冲存储器均由静态RAM组成 结构较复杂 在CPU管芯面积不能太大的情况下 L1级高速缓存的容量不可能做得太大 一般服务器CPU的L1缓存的容量通常在32KB 256KB 高速缓存 2 L2Cache 二级缓存 是CPU的第二层高速缓存 分内部和外部两种芯片 内部的芯片二级缓存运行速度与CPU主频相同 而外部的二级缓存则只有CPU主频的一半 L2高速缓存容量也会影响CPU的性能 原则是越大越好 现在家庭用CPU容量最大的是512KB 而服务器和工作站上用CPU的L2高速缓存为1MB 有的高达2MB或者4MB 3 L3Cache 三级缓存 分为两种 早期的是外置 现在的都是内置的 而它的实际作用是可以进一步降低内存延迟 同时提升大数据量计算时CPU的性能 降低内存延迟和提升大数据量计算能力对游戏有很大帮助 在服务器领域增加L3缓存对性能有显著的提升 比如具有较大L3缓存的配置利用物理内存会更有效 故它比较慢的磁盘I O子系统可以处理更多的数据请求 高速缓存与内存速度的对比 内存空间的分配和回收 3 内存管理的主要功能 1 内存空间的分配和回收操作系统中的内存管理能根据所记录的存储区状态作为内存分配的依据 当用户提出申请时 实施存储空间的分配管理 并能及时回收系统或用户释放的存储区 以供其它用户使用 为此 这种存储分配机制应能完成如下工作 记住存储区域的状态 哪些是已经分配的 哪些是未分配的 保存存储区域的状态的数据结构称为内存分配记录表 实施分配 在系统程序或用户提出申请时 按所需的量给予分配 并修改相应的内存分配记录表 接收系统或用户释放的存储区域 并相应地修改内存分配记录表 地址转换 2 地址转换程序设计人员在进行程序设计中 访问信息时所用到的一系列地址单元的集合称为逻辑地址 而存储空间是内存中物理地址的集合 在多道程序环境下 程序不是事先约定存放位置 而是在执行过程中可以动态浮动 故程序的逻辑地址和物理地址是不一致的 因此需要内存管理机制提供地址映射转换功能 把程序地址空间中的逻辑地址转换为内存空间中对应的物理地址 内存的共享和存储保护 3 内存的共享和存储保护由于内存区域为多个用户程序共同使用 所以存储共享有两方面的含义 多个用户程序共同使用内存空间 各个程序使用各自不同的存储区域 多个用户程序共同使用内存中的某些程序和数据区 这些共享程序和数据区称为共享区 因此内存管理必须研究如何保护各存储区中的信息不被破坏和偷窃 同时当多个程序共享一个存储区时 也要对共享区进行保护 确保信息的完整性和一致性 内存空间的扩充 4 内存空间的扩充计算机在实际的应用中 常常出现内存容量大小无法满足大程序的要求 同时 内存容量受到实际存储单元的限制 因而 内存管理机制必须提供相应的技术 来达到内存单元逻辑上的扩充 现在采用的一般是覆盖技术 交换技术和虚拟存储技术 程序名空间 3 1 2相关概念1 程序名空间源程序中的各种符号名的集合所限定的空间称为程序名空间 如源程序中的数据和子程序通常是用符号名进行访问的 这些符号名与存储器地址无任何直接关系 在程序名空间中提到地址时 都是用符号来代替的 比如Basic中的行号或Goto语句后面的标识符 程序名空间中的地址概念只限于编辑器中 方便用户对程序的逻辑设计 如图3 3a所示 主程序和各个子程序都有各自不同的起始地址标识 变量也有自己的地址标识 三种空间 地址空间与存储空间 2 地址空间 AddressSpace 经编译后 源程序中的各种符号名转换成机器指令和数据组成的目标程序 且用实际地址码替换符号地址 把目标代码所限定的地址域叫该程序的地址空间 这些程序的地址都是从 0 开始的 程序中的其它地址都是相对于起始地址 0 来计算的 地址空间中的地址叫做相对地址 或逻辑地址 又叫虚地址 3 存储空间 MemorySpace 存储空间是指物理存储器中全部物理存储单元的集合所限定的空间 也称为内存空间 每个存储单元都有它自己的编号地址 该地址被称为绝对地址 或物理地址 或实地址 存储空间的大小由系统的硬件配置决定的 即计算机中内存容量的大小 直接存储分配方式 4 存储分配的几种形式解决存储分配问题有三种方式 1 直接存储分配方式编程人员在程序设计过程中 或汇编程序对源程序进行编译时 所用的是实际物理地址 以确保各程序所用的地址之间互不重叠 很显然 直接存储分配方式要求内存的可用空间已经确定 这对于单用户计算机系统来说是不成问题的 在多道程序设计发展初期 通常将存储空间划分成若干个固定的不同大小的分区 并对不同的作业指定不同的分区 对于程序设计人员或编译系统而言 内存的可用空间是已知的 这样 不仅用户感到不方便 而且内存的利用率也不高 静态存储分配方式 2 静态存储分配方式采用静态存储分配方式时 用户在编写程序或由编译系统产生的目标程序中采用的地址空间为逻辑地址 当连接程序对它们进行装入 连接时 才确定它们在内存中的物理位置 从而产生可执行程序 这种分配方式要求用户在进行装入 连接时 系统必须分配其要求的全部内存空间 若内存空间不够 则不能装入该用户程序 同时 用户程序一旦装入到内存后 它将一直占据着分配给它的内存空间 直到程序结束时才释放该空间 其次 在整个运行过程中 用户程序所占据的内存空间是固定不变的 也不能动态地申请内存空间 显然 这种分配方式不仅不能实现用户对内存空间的动态扩展 而且也不能有效地实现内存资源的共享 动态存储分配方式 3 动态存储分配方式动态存储分配方式是一种能有效使用内存的方法 用户程序在内存空间中的位置也是在装入时确定的 但是它不必一次性将整个程序装入到内存中 可根据执行的需要 一部分一部分地动态装入 同时 装入内存的程序不执行时 系统可以收回该程序所占据的内存空间 再者 用户程序装入内存后的位置 在运行期间可根据系统需要而发生改变 此外 用户程序在运行期间也可动态地申请内存空间以满足程序需求 动态存储分配通常可采用覆盖与交换技术实现 由此可见 动态存储分配方式在内存空间的分配和释放上 表现得十分灵活 现代的操作系统常采用这种存储分配方式 地址重定位 AddressRelocation 5 地址重定位 AddressRelocation 在一般情况下 用户的一个程序在装入时所分配的存储空间和它的地址空间是不一致的 因此 用户程序在CPU上执行时 其所要访问的指令和数据的物理地址和地址空间中的相对地址是不同的 如图3 3b c所示 显然 如果用户程序在装入或执行时 不对有关地址进行修改 则将会导致错误的结果 这种由于用户程序的装入而引起的地址空间中的相对地址转化为存储空间中的绝对地址的地址变换过程 称为地址重定位 也称地址映射或地址变换 静态重定位 1 静态重定位 动态重定位 2 动态重定位 内存共享及保护 6 内存共享及保护在多道程序设计的环境下 系统中有系统程序和多个用户程序同时存在 用户程序间可以共享内存中的信息 但要保证用户程序不破坏系统程序 用户程序之间不相互干扰 这就是存储保护所要解决的问题 存储保护的目的有两个 保护系统程序区不被用户侵犯 有意或无意的 如果一个菜鸟级的程序员 他的程序可以改变操作系统所在的内存区域内容 那这个系统还有谁敢用 不允许用户程序读写不属于自己内存空间的数据 正迎合了宋代陈元靓 事林广记 警世格言 的那句名言 自家扫取门前雪 莫管他人屋上霜 上下界寄存器保护 1 界限保护上下界寄存器保护 基址 限长寄存器保护 基址 限长寄存器保护 例 有一程序装入内存的首地址是500 末地址是1500 访问内存的逻辑地址是500 345 1200 基址寄存器 500限长寄存器 1000判别式 逻辑地址 限长寄存器 500 1000 345 1000 1200 1000 这里只判断地址的合法性 如果要计算物理地址 还需要加上基址寄存器的值 访问方式保护 2 访问方式保护 3 内存共享 单道系统的内存管理 3 2单道系统的内存管理 单道系统的内存管理 固定分区管理 3 3多道系统的分区管理3 3 1固定分区管理固定分区是指系统在初始化时 将内存空间划分为若干个固定大小的区域1 分区原则 1 分区大小可以不相等分区大小相等 适合于多个相同程序的并发执行 如图3 10a所示 分区大小不等 多个小分区 适量的中等分区 少量的大分区 根据程序的大小 分配当前空闲的 适当大小的分区 如图3 10b所示 2 分区个数不变 大小不变 固定分区管理 2 分区的管理 固定分区管理 分区的分配与回收 3 分区的分配与回收 固定分区分配算法 分区原则 3 3 2动态分区管理1 分区原则采用动态分区分配方式 在系统初启时 除了操作系统中常驻内存部分以外 只存在一个空闲分区 随后 分配程序将该区依次划分给调度程序选中的进程 并且分配的大小是根据用户进程对内存的需求而定 如图3 14所示 1 根据作业的大小动态地划分分区 使分区的大小正好等于作业大小 2 各分区的大小是不定的 3 内存中分区的数目也是不定的 显然 这种分配方式不会产生 内碎片 现象 从而大大提高了内存的利用率 但随着频繁的调入调出 系统会产生大量的 外碎片 动态分区存储分配 分区说明表 2 分区管理 1 分区说明表 带有表格信息的分区格式 2 空闲区链表 空闲区双向链表 位图 3 位图 分区的分配与回收 3 分区的分配与回收通常 分区的回收有四种情况 1 释放区与上下两个空闲区相邻在这种情况下 将三个空闲区合并为一个空闲区 新空闲区起始地址为上空闲区的起始地址 大小为三个空闲区之和 同时 修改可用分区表或空闲区链表或位图中的表项目 2 释放区与上空闲区相邻在这种情况下 将释放区与上空闲区合并为一个空闲区 其起始地址为上空闲区的起始地址 大小为释放区和上空闲区之和 同时 修改可用分区表或空闲区链表或位图中的表项目 分区的分配与回收 3 释放区与下空闲区相邻在这种情况下 将释放区与下空闲区合并为一个空闲区 其起始地址为释放区的起始地址 大小为释放区和下空闲区之和 同时 修改可用分区表或空闲区链表或位图中的表项目 4 释放区与上下两个空闲区都不相邻 查找算法 3 3 3查找算法不论是空闲区链表管理还是空闲区表格管理 链和表中的空闲区都可按一定规则排列 例如 按空闲区从大到小排或从小到大排 以方便空闲区的查找和回收 常用的动态分区管理的空闲区查找算法有五种 1 最佳匹配 bestfit 2 首次匹配 firstfit 3 下次匹配 nextfit 4 最坏匹配 worstfit 5 快速匹配 quickfit 地址转换与存储保护 3 3 4可重定位分区分配1 地址转换与存储保护 移动技术 2 移动技术 可重定位分区分配的优缺点 3 可重定位分区分配的优缺点 1 优点可以消除碎片 能够分配更多的分区 有助于多道程序设计 提高内存的利用率 2 缺点内存移动花费了大量CPU时间 当进程大于整个空闲区时 仍要浪费一定的内存 进程的存储区内可能放有从未使用的信息 进程之间无法对信息共享 分区管理的优缺点 分区管理的优缺点1 主要优点 1 实现了多道程序共享内存 2 实现分区管理的系统设计相对简单 不需要更多的系统软硬件开销 3 实现存储保护的手段也比较简单 分区管理的优缺点 2 主要缺点 1 内存利用不够充分 系统中总有一部分内存空间得不到利用 这部分被浪费的空间叫碎片 固定分区产生内碎片 可变分区产生外碎片 2 没有实现内存的扩充问题 当进程的地址空间大于内存空间时 进程无法运行 也即进程的地址空间受实际内存空间的限制 3 必须连续存放 进程在内存中总是分配一块连续的存储空间 无法很好地利用碎片 虽然可以通过移动技术来整理内存空间 但代价较高 4 必须一次性将作业全部调入内存 若内存没有足够的空间 则等待 页式管理 3 4页式管理3 4 1页式管理的实现原理1 页式管理的思想操作系统在初始化时 按照一定的原则 将内存空间划分为大小相等的块或页框 pageframe 通常页框的大小总是2的整数次幂 同时 用户进程在调入内存之前 操作系统将进程的地址空间划分成与页框相等的片 称之为页面 page 即 逻辑空间分页 内存空间分块 页块大小相等 经系统划分后 作业的地址空间一般由页号和页内偏移两部分组成 例如 一个页长为2KB 占有512页的存储空间的地址结构 如图3 21所示 然后 系统将用户进程的每一个页面分配到内存的页框中 分配时 要求将页面整块装入到页框中 所以用户进程在页框内是连续的 但页框与页框之间不一定要连续 分页系统的地址结构 位图表示法 2 系统内的页框管理 1 位图表示法在内存中划分出一个固定的区域 其中每一位对应于内存中的一个页框 该区域中每个单元的每个位对应于系统中的一个页框 用来表示一个页框的分配或空闲状况 若该位为1 代表所对应的页框已分配 若该位为0 代表所对应的页框空闲 该表指出了内存中各页框是否已被分配 以及未被分配的页框总数 位图要占用一部分内存空间 一个划分为2048页框的内存 如果内存单元长度为32位 则位图就占据2048 32 64个内存单元 链表法 2 链表法存储页框表的另一种形式是采用空闲页框链的方法 在空闲页框链中 队首页框的第一单元和第二单元分别存放空闲页框的总数和指向下一个空闲页框的指针 其它页框的第一单元则分别存放指向下一个空闲页框的指针 空闲页框链的方法由于使用了空闲页框本身的存储单元来存放空闲页框链的指针 因此不占据额外的内存空间 是一种较为经济的存储页框表的组织法 3 页框的分配与回收 3 页框的分配与回收 页式地址变换 3 4 2页式地址变换 相联存储器和快表 3 4 3相联存储器和快表 具有快表结构的地址变换 页的共享与保护 3 4 4页的共享与保护 段式管理的引入 3 5段式管理3 5 1段式管理的引入在页式存储管理中 要求用户程序的逻辑地址空间是连续的 这就要求编译程序对用户源程序进行编译 连接时 必须把主程序 子程序 数据块等按线性空间的一维地址顺序装配起来 因此 装配好的程序段和数据块的存储空间是确定的 在执行中是无法动态增长和收缩的 这就造成了用户程序设计的不灵活 不方便 此外 由于对各子程序和数据段的顺序装配 分页时 无法做到页与逻辑意义完整的子程序或数据段的唯一对应 增大了其信息共享实现的难度 再者 从连接的角度上看 分区管理和页式管理只能采用静态连接 通常 一个大的程序可能包含数百个甚至上千个程序模块 而执行时 可能仅用到其中的一部分模块 许多模块并不需要访问 静态连接必须对这些众多模块一次性地连接装配 不仅花费了大量的CPU时间 而且也浪费了许多内存空间 至少多浪费了一些页表空间 段式存储管理的地址空间 3 5 2段式管理的实现原理 段式存储管理的地址结构 段表的组织结构 段式存储动态地址变换 段的共享 3 5 3段的共享与保护 分段和分页的比较 3 5 4分段和分页的比较 1 段是信息的逻辑单位 它是根据用户的需要划分的 因此段对用户是可见的 便于存储保护和信息的共享 页是信息的物理单位 是为了管理内存的方便而划分的 对用户是透明的 页的保护和共享受到限制 2 页的大小固定不变 由系统决定 段的大小是不固定的 由其完成的功能决定 分段与分页的比较 3 段式向用户提供的是二维地址空间 页式向用户提供的是一维地址空间 4 段式管理与分区管理一样可能产生内存外碎片 而页式管理则很好地消除了外碎片 不过仍然有最多一页内碎片 5 段式与页式一样 都需要在进程运行前 全部信息装内存 内存利用不够充分 6 段式与页式一样 为实现地址变换 CPU要花费较大的开销 为实现管理要提供更多的表格 7 段式与页式一样 寻址都需要访问二次内存 如果要提高访问速度 都需要在相联存储器中设置快表 覆盖技术 3 6内存扩充3 6 1覆盖技术 交换技术 3 6 2交换技术 虚拟存储器的概念 3 6 3虚拟存储技术1 虚拟存储器的概念作业在运行时不用的 或暂时不用的 或某种条件下才用的程序和数据 全部驻留于内存中是对宝贵的内存资源的一种浪费 大大降低了内存利用率 于是 操作系统的设计者就提出了这样的想法 当作业开始运行时 能否不把作业的全部信息同时装入到内存 而是将当前使用的部分先装入内存 其余暂时不用的部分先存放在外存中 等到用到这些信息时 再由系统自动把它们装入到内存中 这就是虚拟存储器的基本思想 虚拟存储技术的依据 2 虚拟存储技术的依据早在1968年Denning P就提出过 程序的执行呈现出局部性规律 即在一较短的时间里 程序的执行仅局限在某个部分 相应地 它访问的存储空间也局限在某个区域 即 用户程序的局部性原理 同时 他提出了以下几个论点 1 程序在执行时 除了少部分的转移和过程调用指令外 在大多数情况下仍是顺序执行的 2 过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域 但是经研究可看出 过程调用的深度在大多数情况下并不是很远 也就是说 程序将会在一段时间内都局限于某一范围内运行 虚拟存储技术的依据 3 程序中存在许多循环结构 它们虽由少数指令构成 但多次执行 4 程序中还包括许多对数据结构的处理 如对数组进行操作 它们都往往局限于很小范围内 5 程序中有些部分是彼此互斥的 不是每次运行时都用到的 例如 出错处理程序 仅当在数据和计算中出现错误时才会用到 正常情况下 出错处理程序不放在内存 不影响整个程序的运行 这种局部性又表现为时间局部性和空间局部性 虚拟存储技术的硬件技术基础 3 虚拟存储技术的硬件技术基础为了要实现虚拟存储器 必须解决好以下有关问题 内存和外存统一管理问题 逻辑地址到物理地址的转换问题 部分装入和部分对换问题 因此就需要有硬件技术的支持和软件上合理的数据结构 支持虚拟存储技术的硬件技术有三点 1 依赖于CPU地址结构 2 依赖于多级存储结构 3 依赖于MMU 内存管理单元MMU 4 内存管理单元MMU 1 管理硬件页表基址寄存器 2 分解逻辑地址 把逻辑地址分解为页面号和页内位移 以便进行地址转换 3 管理快表TLB 4 访问页表 5 当出现页表中有页失效位 或页面访问越界位时 MMU发出缺页中断或越界中断 并将控制权交给操作系统内核处理 6 MMU负责设置和检查页表中的引用位 修改位 有效位和保护权限等各个特征位 MMU 请求页式管理 3 7请求页式管理3 7 1请求页式管理的思想及实现页面装入策略和清除策略页面装入策略决定何时把一个页面装入内存 有两种策略可供选择 请页式 DemandPaging 装入和预调式 Prepaging 装入 请页式装入是仅当需要访问程序和数据时 通过发生缺页中断并由缺页中断处理程序分配页框再把所在页面装入内存 预调式装入的页面并不是缺页中断请求的页面 而是由操作系统依据某种算法 动态预测进程最可能要访问的那些页面 在使用之前预先调入内存 尽量做到进程在访问页面之前己经预先调入该页 而且 每次调入若干个页面 而不是像请页式那样仅调一个页面 清除策略 清除策略是与装入策略相对的 它要考虑何时把一个修改过的页面写回外存 常用的两种方法是 请页式清除和预约式清除 请页式清除是仅当一页选中被替换 且之前它又被修改过 才把这个页面写回到外存 预约式清除对更改过的页面 定期把它们写回到外存 因此 可以成批进行 两个方法都有缺点 对于预约式清除 写出的页仍然在内存中 直到页替换算法选中该页从内存中移出 它允许成批地把页面写出 但如若刚刚写出了很多页面 在它们被替换前 其中大部分又被更改 那么 预约式清除就毫无意义 对于请页式清除 写出一页是在读入一个新页之前进行的 它要成双操作 虽然仅需要写出一页 但引起进程不得不等待两次I O操作完成 可能会降低CPU使用效率 页面分配策略 2 页面分配策略在请求页式存储管理中 不可能也不必要把一个进程的所有页面调入内存 那么 操作系统决定为某进程分配多大的内存空间 需要考虑以下因素 1 分配给一个进程的空间越小 同一时间处于内存中的进程就越多 于是至少有一个进程处于就绪态的可能性就越大 从而 可减少进程对换的时间 2 如果进程只有一小部分在内存里 即使它的局部性很好 缺页中断率还会相当高 3 因为程序的局部性原理 分配给一个进程的内存超过一定限度后 再增加内存空间 也不会明显降低进程的缺页中断率 固定分配与可变分配 基于这些因素 在请求页式系统中 可采用两种策略分配页框给进程 固定分配和可变分配 如果进程生命周期中 保持页框数固定不变 称为固定分配 在进程创建时 根据进程类型和程序员的要求决定页框数 只要有一个缺页中断产生 进程就会有一页被替换 如果进程生命周期中 分得的页框数可变 称为可变分配 当进程执行的某一阶段缺页率较高 说明进程程序目前的局部性较差 系统可多分些页框以降低缺页率 反之说明进程程序目前的局部性较好 可以减少分给进程的页框数 固定分配策略缺少灵活性 而可变分配的性能会更好些 被许多操作系统所采用 3 缺页中断机构 请求页式管理的页表结构 请求页式管理的页表结构 请求页表实例 请求页式管理的地址变换 多级页表地址结构 3 7 2多级页表 二级页表的结构 二级页表地址变换 三级页表地址结构 反置页表 3 7 3反置页表 最佳置换算法 OPT 3 7 4请求页式管理的页面置换算法1 最佳置换算法 OPT 最近未使用置换算法 NRU 2 最近未使用置换算法 NRU 最近未使用置换算法 NotRecentlyUsed NRU 是利用页表中的访问位R和修改位M 访问位R表示该页被读或写 修改位M表示该页被写 当某页被访问时 由硬件自动将访问位R置1 若执行的指令是写指令 则修改位M也被置1 系统周期性地 假设周期时间T 20ms 将所有访问位R置0 这样便有四种不同的情况 RM 1 00未访问 未修改 最先被淘汰 2 01未访问 被修改 3 10有访问 未修改 4 11有访问 有修改 先进先出置换算法 FIFO 3 先进先出置换算法 FIFO FIFO SCR 4 第二次机会置换算法 SCR Clock 5 时钟置换算法 Clock LRU 6 最近最少使用置换算法 LRU 淘汰未使用时间最长的 NFU 7 最不常使用算法 NFU 前面两种LRU算法虽然在理论上都是可实现的 但很少有计算机有这样的硬件 因此 对在没有这种硬件的机器上开发操作系统的设计者来说 这些算法没有价值 相反 他们需要的是一个能用软件实现的解决方案 最不常使用算法 NotFrequentlyUsed NFU 算法就是这样一种软件方案 该算法将每个页面与一个软件计数器相联 计数器的初值为0 每次时钟中断时 由操作系统扫描内存中的所有页表 将页表中的R位 它的值为0或1 加到与它相联的计数器上 实际上这个计数器就是跟踪各个页面被访问的频繁程度 发生页面失效的时候 计数器值最小的页面被置换 AGING 8 老化算法 Aging 工作集w k t 随k变化的曲线 9 工作集置换算法 WorkingSet WORKINGSET WSClock 10 工作集时钟页面置换算法 WSClock 算法比较 页面大小 3 7 5请求页式管理设计时应注意的几个问题1 页面大小假如仅考虑碎片浪费的和页表占用的内存 那么 从这个方程可以得出最优页面尺寸的为 p 时 浪费的存储字节最少 称p为最佳页面尺寸 对于s 128KB 每个页表项e 8B时 最优页面尺寸是1448B 考虑到其他因素 如磁盘速度 实际可使用1KB或2KB长的页面 大部分商用计算机使用的页面尺寸在512B至4KB之间 下面是一些著名操作系统选择的页面尺寸 Atlas为512字 每字48位 IBM370系列机为2KB或4KB VAX为512B IBMAS 400为512B Motorola68040 Macintosh 为4KB Pentium为4KB或4MB MIPSR4000提供从4KB至16MB共7种页面长度 页面长度是由CPU中的MMU规定的 操作系统通过特定寄存器的指示位来指定当前选用的页面长度 页面交换区 2 页面交换区替换算法常常要挑选一个页面淘汰出内存 但是这个被淘汰出去的页面可能很快又要被使用 被重新装入内存 因而 操作系统必须把被淘汰的页面内容保存在磁盘的特殊区域 例如 Unix和Linux使用交换区 可以是盘的一个分区称交换设备 也可以是一个或多个文件称交换文件 临时保存页面 系统初始化时 保留一定盘空间作交换区 初始化内容为空 不能被文件系统使用 当一个进程被启动时 留出与这个进程一样大的交换空间块 进程撤销时 释放占用的交换空间 锁定内存页 3 锁定内存页当一个进程执行系统调用拟读入一批数据到其地址空间的缓冲区 等待I O完成时 该进程暂停 其他进程可继续执行 而此时其他进程产生了缺页中断 如果采用全局替换策略 则包含I O缓冲区的页面就有可能被选中淘汰 此时必须锁住正在做I O操作的内存页面 保证它不被移出 可以在页表项中增加锁定位来做到这一点 或者在系统缓冲区中完成I O 然后 把数据复制到用户的页面 写时复制 4 4 写时复制 CPU利用率和多道程序并发度关系 5 抖动问题 缺页频度控制 3 7 6请求页式管理性能 请求段式管理的思想及实现 3 9请求段式管理3 9 1请求段式管理的思想及实现段式存储也可实现虚拟存储管理 我们称之为请求段式管理 请求段式管理的基本思想是 把作业的所有分段的副本都存放在外存上 当作业被调度投入运行时 首先把当前需要用的一段或几段装入内存 在执行过程中 访问到不在内存的段时 再通过缺段中断机构把它从外存上调入 因此 段表必须在静态段式存储管理的基础上加以扩充 如在段表中必须附加说明哪些段已在主存 哪些段不在主存 各段在外存中的起始地址 相应的段是否已被修改过 段是否可移动 可扩充 段能否共享等 请求段表的结构 请求段式管理的地址变换过程 静态链接库 3 9 2段的动态链接静态链接库 早期库的组织形式相对简单 里面的目标代码只能够进行静态链接 所以我们称为 静态库 静态库的结构比较简单 链接程序搜索一个或者多个库文件 标准库 lib 直到在某个库中找到了含有所引用函数的对象模块 然后链接程序把这个对象模块拷贝到结果可执行文件 exe 中 链接程序维护对该函数的所有引用 使它们指向该程序中现在含有该函数拷贝的地方 静态库的两个特点 一是链接后产生的可执行文件包含了所有需要调用的函数的代码 因此占用磁盘空间较大 二是如果有多个 调用相同库函数的 进程在内存中同时运行 内存中就存有多份相同的库函数代码 因此占用内存空间较多 动态链接库 动态链接库 动态链接库就是为了解决这些问题而诞生的技术 顾名思义 动态链接的意思就是在程序装载内存的时候才真正的把库函数代码链接进行确定它们的地址 并且就算有几个程序同时运行 内存也只存在一份函数代码 大家可以观察一下Windows系统 里面使用的是大量的 dll 文件 这些都是动态链接库 请求段式管理可实现 动态链接装配 功能 所谓动态连接装配是指在程序运行中对它所用到的子程序段或数据段进行连接装配 节省连接装配时间和程序所占的空间 Windows系统的动态链接库 段的共享 3 9 3段的共享请求段式管理利用上述段的动态链接很容易实现段的共享 由于各进程对共享段的使用情况不同 每个进程为其分配的段号也不同 当某个进程首次调用某个共享段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论