《操作系统》4存储管理课件.ppt
文本预览下载声明
4.1 存储管理预备知识 4.1.2 地址重定位 4.1.3 程序的链接 4.1.4 存储管理的功能 4.2 分区存储管理 4.2.1 固定分区存储管理 4.2.2 可变分区存储管理 4.2.3 其他管理技术:覆盖、交换、伙伴系统 4.3 分页式存储管理 4.3.1 分页式存储管理的基本思想 4.3.2 分页式存储管理的地址转换 4.3.3 页帧的分配与回收 4.4 分段式和段页式存储管理 4.4.1 分段式存储管理 4.4.2 段页式存储管理 通过编译程序在编译过程中建立的各种表,说明页式及段式存储管理中,作业程序地址空间组织形式的不同。 例4-9 : 解: 在编译过程中会建立很多表,其中主要有:供打印程序清单的源程序文档;由变量名及其属性组成的符号表;由程序中所有的整型、实型常量组成的常量表;包含程序语法分析结果的语法分析树;内部过程调用时使用的堆栈。 . . 在分页式管理时,这5个表必须限定在一个一维的地址空间里,如图(a)所示。 使用 使用 使用 使用 使用 空闲 空闲 空闲 空闲 堆栈 语法分析树 常量表 源程序文档 符号表 (a) 0KB 4KB 8KB 12KB 16KB 20KB 0KB 4KB 8KB 12KB 符号表 段0 0KB 源程序 文档 常量表 段1 段3 段4 0KB 4KB 8KB 12KB 16KB 语法 分析树 0KB 4KB 8KB 12KB 堆栈 段2 (b) . 在分段管理时,是把这些表视为一个个相互独立的地址空间,比如:段0、段1等,它们组成了整个用户的地址空间,如图(b)所示。 硬件要提供一个段表基址寄存器。每当重新调度时,就把调度到的作业的段表起址及段表长度(即段表中表项的个数)放入寄存器中,从而达到映射不同作业的目的。 . 在分段式存储管理时,要指示存储空间里的一个地址,必须提供两部分内容:段号和段内位移。即逻辑地址应该是二维的:[段号,段内位移]。 . 在图(a)所示的32位地址结构中,由于是各用16个二进制位表示段号s和段内位移d,因此表示用户的逻辑地址空间最多可以有216个段,每段最大长度是64KB。 31 16 15 0 s d 段号 段内位移 d s 段号 段内位移 0 31 23 22 (a) (b) . 图(b) 所示的32位的地址结构中,由于用9个二进制位表示段号s,用23个二进制位表示段内位移d,因此表示允许用户的逻辑地址空间中最多可以有29个段,每段的最大长度是223=8192KB。 2. 段表及地址变换过程 系统为每个用户作业设置一个段表,用于记录 各段在内存中的存放信息。逻辑空间中有多少段,段表里就有多少个表项。每个表项通常包括的信息有段号、段长、该段在内存的基址(即起始地址)等。 . . 分段式存储管理时的地址转换步骤如下 : . (1) 从相对地址数对:[段号s,段内位移d]中提取出段号s,用来进行地址转换。 (2) 如果段号s大于段表长度,表示该地址越界出错;否则以此段号为索引查段表,得到该段在内存的基址。 (3) 由段的基址和段内位移d拼装出所需的物理地址,实现对内存的访问。 在分页式环境下,存储保护只能以页面为单位。在页表的每一个表项里,设置一个所谓的“保护位”,由该位的不同取值表示对应的页帧是可读、可写或只可读等。 段号(s) 段内位移(d) 相对地址 段表 段表基址寄存器 段号 长度 基址 基址 段内位移 物理地址 段s d 内存 程序 分段地址转换机制 . 分段地址转换机制图示: 3. 存储保护与共享 分页式存储管理中的存储保护与共享 . (1) . 被共享的程序文本部分不一定正好划分在一个或几个完整的页面中,有可能一个页面中既有允许共享的内容,又有不能共享的私有数据。因此,在分页式环境下实现页面的共享比较困难,但也不是不可能。 . 假定分页式存储管理的页帧尺寸为50KB,那么文本编辑程序被划分成3页,用户进程的数据段被划分成一页,合起来每个用户进程的逻辑地址空间为4页。 进程A的 逻辑地址空间 进程B的 逻辑地址空间 进程C的 逻辑地址空间 ed1 0 ed2 1 ed3 2 dataA 3 ed1 0 ed2 1 ed3 2 dataB 3 ed1 0 ed2 1 ed3 2 dataC 3 进程A的页表 0 3 1 4 2 6 3 2 0 3 1 4 2 6 3 2 0 3
显示全部