您好、欢迎来到现金彩票网!
当前位置:一品彩票app下载 > 共享页表 >

63操作系统分页ppt

发布时间:2019-06-11 21:12 来源:未知 编辑:admin

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  6.3 分页式存储管理 主要内容: 6.3.1 基本原理 6.3.2 快表 6.3.3 存储空间的分配和去配 6.3.4 存储空间的页面共享和保护 6.3.5 多级页表 6.3.6 反置页表 为什么要引进分页技术? 固定分区管理存在内碎片,可变分区管理存在外碎片,使得内存的空闲空间得不到充分利用。 对外碎片的移动要浪费处理机的许多时间,开销太大。 问题的主要原因:连续内存分配 6.3 分页式存储管理 主要内容: 6.3.1 基本原理 6.3.2 快表 6.3.3 存储空间的分配和去配 6.3.4 存储空间的页面共享和保护 6.3.5 多级页表 6.3.6 反置页表 页面(页) 把用户程序的逻辑地址空间划分成大小相等的部分,也称页或虚页。从0开始编制页号,页内地址是相对于0编址。 页框(块) 页框:内存按页的大小划分为大小相等的区域,称为内存块(物理页面,页框),块号从0开始依次编址 页式管理中的逻辑地址 经过页划分之后,用户程序的逻辑地址变为页号p与页内地址w所组成。 页式管理中的逻辑地址 注意: 用户编制程序时仍使用逻辑地址,不必考虑分页,分页由操作系统完成,对用户是透明的; 逻辑地址仍然是连续的(页面连续,页内地址连续),对应到主存块的块内地址也是连续的,而块与块之间是不必连续的 页的大小一般都为2的整数次幂 页表 当进程的程序和数据被分散存放在主存中后,其页面和被分配的块之间如何建立联系呢?逻辑地址(页)如何转换成物理地址(块)呢?物理地址从连续变为分散后如何保证程序正确执行呢? —— 页表 页表 页表:程序页面和主存对应块的对照表,其中的每一栏指明了页和所分得块的对应关系 系统为每个进程建立一个页表,页表的长度和首地址存放在该进程的进程控制块(PCB)中 页表 页表内容 页号:登记程序地址空间的页号。 块号:登记相应的页所对应的内存块号。 其它:登记与存储信息保护有关的信息。 页表 例: 进程A有4页分别装入内存的第0,1,2,3块;进程B有3页装入内存的第4,5,6块;进程C有4页装入内存的第7,8,9,10块;某一时刻,进程B执行结束,进程D进入内存,它有5页,被装入内存的第4,5,6,11, 四个进程的页表 地址转换 借助于硬件的地址转换机构,按页面动态地址重定位 在进程运行前把该进程的页表基地址和页表长度送入页表控制寄存器中; CPU获得逻辑地址,硬件自动把逻辑地址分成页号p和页内位移d; 从页表基址寄存器找到页表,再用页号p作为索引查找页表,得到对应的块号 物理地址=块号*块长+页内位移 地址转换 例1: 例2:设页长为1K,程序地址字长为16位,mov r1, [ 2500]的地址转换如下: (1)取出程序地址字2500送虚地址寄存器VR,然后由 硬件分离出页号P和页内地址W,因为页长为1K,所以页内地址占10位(0-9位),页号占6位(10-15位),所以硬件只要简单地取出VR寄存器中的高6位即为页号,低10 位即为页内地址。 (2)根据页号P=2,硬件自动查该进程的页表,找到第2页对应的块号为7,将块号送到内存地址寄存器MR的高6位中。 (3)将VR中的W的值452复制到MR的低10位中,从而形成内存地址。系统就以MR中的地址访问内存。 物理地址如何计算 硬件能自动分离出页号和页内地址,我们可以通过计算得到: (1)如果给出的逻辑地址是十进制形式,那么可按如下公式算得页号和页内地址 程序地址/页长 商为页号,余数为页内地址。 物理地址如何计算 (2)若给出的地址为16进制,则将其转换为二进制,然后,根据页长及程序地址字的长度,分别取出程序地址的高几位和低几位就得到页号及页内地址。如页长为2K,程序地址字为16位,则高5位为页号,低11位为页内地址。 6.3 分页式存储管理 主要内容: 6.3.1 基本原理 6.3.2 快表 6.3.3 存储空间的分配和去配 6.3.4 存储空间的页面共享和保护 6.3.5 多级页表 6.3.6 反置页表 主要问题 在前述的页地址变换过程中有一个严重的问题,那就是每一次对内存的访问都要访问页表,页表是放在内存中的,也就是说每一次访问内存的指令至少要访问两次内存,运行速度要下降一半。 快表的原理 解决这个问题的一种方法是在硬件中设置相联存储器,把最近访问的部分页表项放入这种速度更快(但容量小,价格贵)的相联存储器中,这种快速存储器组成的页表称为快表,把存放在内存中的页表称为慢表。 查找时先查块表,找不到再查慢表 为了提高命中率,块表的内容需要不断更新 假定访问主存时间为100ns,访问相联存储器时间为20ns,相联存储器为32个单元时快表命中率可达90%,按逻辑地址存取的平均时间为: (100+20)×90%+(100+100+20)×(1-90%)=130微秒 两次访问主存的时间: 100×2=200ns 4.3 分页式存储管理 主要内容: 4.3.1 基本原理 4.3.2 快表 4.3.3 存储空间的分配和去配 4.3.4 存储空间的页面共享和保护 4.3.5 多级页表 4.3.6 反置页表 分页存储管理中,系统必须建立一个主存物理块表,用来记录主存的总块数,哪些是空闲块,哪些已经分配,分配给哪个进程等信息,以供内存管理(包括分配和去配)使用 两种方式: 位示图,空闲页面链表 位示图 在内存中划分一块固定区域,每一位与一个块对应,用0/1表示空闲/占用,用另一个专门字记录当前空闲块总数 内存的分配 计算一个进程所需要的总块数N 查位示图,看看是否还有N个空闲块 如果有足够的空闲块,则页表长度设为N,可填入PCB中;申请页表区,把页表始址填入PCB 依次分配N个空闲块,将块号和页号填入页表 修改位示图 空闲块链表 空闲块链表: 4.3 分页式存储管理 主要内容: 4.3.1 基本原理 4.3.2 快表 4.3.3 存储空间的分配和去配 4.3.4 存储空间的页面共享和保护 4.3.5 多级页表 4.3.6 反置页表 页面共享 在多道程序系统中,编译程序、编辑程序、解释程序、公共子程序、公用数据等都是可共享的,这些共享的信息在主存中只要保留一个副本 页的共享可以大大提高主存空间的利用率 分为:数据共享和程序共享 具体实现 数据共享:允许不同的作业对共享的数据页用不同的页号,只要让各自页表中的有关标目指向共享的数据块 程序共享:共享的程序必须是可再入的,不同的作业对共享的程序必须采用相同的页号 信息保护 分页存储管理中的存储信息保护从两个方面来实现。 越界保护:在分离程序地址的页号和页内地址时判别访问是否合法,若产生的页号满足下式为合法: 0 ≤页号程序地址空间的页数 上述判断由硬件自动做,若不合法,硬件产生越界中断,由操作系统的越界中断处理程序进行处理。 信息保护 分页存储管理中的存储信息保护从两个方面来实现。 权限保护:在页表中增加用于存取控制和存储保护的信息,当要访问某页时系统要根据该页的存取控制和存储保护信息检查访问是否合法。(主要用来判断访问是否越权) 动态链接 问题:当进程需要使用各种标准库函数时,需要采用静态方式全部链接到应用程序中,每个可执行代码中都有库函数的副本,增加了对主存容量的要求。如果应用程序仅使用其中一小部分,采用静态链接不但麻烦,而且开销大。 因此,可把函数定位和链接推迟到运行时刻,只在实际调用发生时才进行 动态链接 共享库:包含共享函数的目标代码模块 如*.so 或*.DLL 动态链接:运行时加载共享库到内存,并在内存中和一个程序链接起来的过程 动态链接是通过动态链接器来执行的 4.3 分页式存储管理 主要内容: 4.3.1 基本原理 4.3.2 快表 4.3.3 存储空间的分配和去配 4.3.4 存储空间的页面共享和保护 4.3.5 多级页表 4.3.6 反置页表 为什么要引入多级页表? 现代的大多数计算机系统,都支持非常大的逻辑地址空间(232-264)。页表就变得非常大,要占用相当大的内存空间。?? 例如: 32位的计算机,页的大小为4KB(212),则页表可拥有条目为232/212,假设每个条目有4B,那每个进程需要4MB内存空间来存储页表本身。 解决办法:可将页表也分页,并对页表所占的空间进行索引形成外层页表(页目录表),由此构成二级页表,更进一步可形成多级页表。 注意: 上述解法只能实现页表的离散存放,但并没有减少页表空间的占用 在上述存储页表的基础上,可以采用页表的动态调入:进程运行涉及页面的页表页应存放在主存中,而其他页表页使用时动态调入,可以在页目录表中增加标志位,指示对应的页表页是否已调入主存 多级页表结构的本质 多级不连续导致多级索引。 以二级页表为例,用户程序的页面不连续存放,要有页面地址索引,该索引是进程页表;进程页表又是不连续存放的多个页表页,故页表页也要页表页地址索引,该索引就是页目录。 页目录项是页表页的索引,而页表页项是进程程序的页面索引。 4.3 分页式存储管理 主要内容: 4.3.1 基本原理 4.3.2 快表 4.3.3 存储空间的分配和去配 4.3.4 存储空间的页面共享和保护 4.3.5 多级页表 4.3.6 反置页表 解决页表空间占用太大的另一个方法: 反置页表(Inverted Page Table,IPT) 主要优点:只要为所有进程维护一张表 IPT表项组成:页号,页面所属进程标识,哈希链指针 逻辑地址的组成:进程标识符,页号,页内位移 如果是64位逻辑地址,页面大小为4KB,则有252个逻辑页面,相应地,可能会有252个页表项,页表非常大。如果逻辑地址位数更多,则页表更大。虽然系统可以采用多级页表,但是对于内存,这仍然是一个巨大的负担。 IBM AS/400操作系统采用了一种反置页表(Inverted PageTable),该种页表从内存物理块出发,如果进程占用一个内存物理块,则在页表中有一页表项。页表中所有的页表项是已经进入内存的物理块。 反置页表根据进程占用的物理块的块号进行排序,如果进程页面没有全部进入内存,则页表项数小于进程的页面数。 为了快速完成地址变换过程,系统可以采用哈希表技术。 地址变换机构将进程标志和页号输入给哈希函数,得到一个哈希值。 该哈希值指向反置页表中的一个表项,所有哈希值相同的组织成一组散列队列链。 CPU遍历散列队列链找到进程的页号,而对应该页号的索引则为物理块号。物理块号加上页内偏移便为物理地址。 如果整个反置页表中不能找到对应的物理块,则说明该页没有进入内存,系统发出缺页中断。 分页管理小结 优点: 没有外碎片,每个内碎片不超过页大小。 一个程序不必连续存放。 便于改变程序占用空间的大小。即随着程序运行而动态生成的数据增多,地址空间可相应增长。 缺点: 程序全部装入内存,作业或进程的大小仍受内存可用页面数的限制。 由于对每个作业要建立和管理相应的页表,另外实现动态变址必须增加硬件,这就增加了系统的时空开销。 P 0 5 H 5 3 P 8 6 P 14 4 H 18 2 P 26 3 或页目录表 反置页表及其地址转换 * * 解决办法: 离散内存分配(分页和分段) 页表 进程的逻辑地址空间 整个系统只有一个页表控制寄存器,只有占用CPU的进程才占有页表控制寄存器,进程上下文切换时也必须让出页表控制寄存器 分页管理中地址转换示意图 例如:程序地址为8457, 页长为4KB,则8457/4096可得:商为2,余数为256。 0 31 0/1 0/1 0/1 0/1 0/1 0 1 7 …… 空闲块数 ……

http://styleinch.com/gongxiangyebiao/416.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有