第4章存储管理(3939KB).ppt

  1. 1、本文档共184页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (2)假定一个页面的大小为2^Y,即页内偏移地址为Y位,每个页表可以包含2^Y / 8 = 2 ^(Y-3)个页表项,因此每级页表的索引位为Y-3位,总共有4级页表,所以: 4(Y-3) + Y = 64 Y = 15.2 因此 Y=15,即最大的页面大小为32KB。 1位(空闲)、12位(一级索引)、12位(二级索引)、12位(三级索引)、12位(四级索引)、15位(页内偏移) * 5. 反置页表 以前的页表方案都是根据进程的逻辑页面号来组织,以逻辑页面号来作为访问页表的索引。如果逻辑地址位数较多,如64位,那么逻辑地址空间将是264字节,如果页面大小为4K,那么每个进程的页表项的个数为252。 反置页表:根据内存中的物理页面号来组织页表,用物理页面号来作为访问页表的索引。页表项的个数仅与物理内存的大小和页面大小有关,与逻辑空间大小和进程数无关。(页表项的内容?) 每个页表项记录了在相应的物理页面中,保存的是哪个进程的哪一个逻辑页面。 反置页表节省了大量内存空间,但逻辑页面号到物理页面号的转换变得更复杂,一种方法是Hash表。 * (本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”) 反置页表示意图 * OS与虚拟页式存储管理 在进程运行的各个阶段,OS需要做哪些与页式存储管理有关的事情? 进程创建时; 进程运行时; 进程切换时; 缺页中断时; 进程结束时。 * 4.5.6 虚拟段式存储管理 需要在进程的段表中添加若干项: 标志位:驻留位(present bit), 修改位(modified/dirty bit), 增长位(该段是否增长过,在虚拟页式中没有该位) 访问统计:如访问位(use bit) 存取权限:如读R,写W,执行X 缺段中断处理:当发生缺段中断时,首先检查内存中是否有足够的空闲空间,若有,则装入该段,并修改有关数据结构;若没有,则采用内存紧缩技术或淘汰一些段,然后再装入该段。 在简单段式存储管理的基础上,增加请求调段和段置 换功能。 * 4.6 Linux 的存储管理 逻辑地址空间的管理 地址映射 物理内存管理 页面置换算法 * 4.6.1 逻辑地址空间的管理 每个进程都有自己的逻辑(虚拟)地址空间,地址长度为32位,地址空间大小为4G; 地址空间低端的3G作为“用户空间”,用来存放进程自身的代码和数据;地址空间高端的1G作为“内核空间”,用来存放OS的代码和数据,如进程的页表、PCB和其他内核数据; Linux 采用虚拟页式存储管理技术,页面的大小为4KB。 * Intel 80x86 Address Translation 逻辑地址=线性地址 * 每个进程拥有各自独立的3GB用户空间,而内核空间由所有的进程和系统内核共享。当一个进程运行在用户态下时,只能访问其独有的用户空间。而当该进程通过系统调用进入到内核态时,即可访问共享的内核空间(能否访问用户空间?)。 内核空间1GB 进程1的 用户空间 3GB 进程2的 用户空间 3GB 进程N的 用户空间 3GB …… 0xFFF… 0x000… Why 1G-3G? * 每个用户进程都有3个G的逻辑 地址空间,这3个G的地址空间 如何管理? * vm areas 为便于管理,进程的逻辑地址空间被划分为一块块的区域,每块区域(如代码段、数据段、栈等)由若干个连续的逻辑页面组成,这些页面具有相同的属性,如读、写、执行等访问权限。一个进程的有效的地址空间即由这些区域来表示。在这些区域之间可能存在有“黑洞”,对黑洞的访问将会造成缺页中断; 在内核中,每一个这样的区域用一个vm_area_struct结构体变量来描述和管理。 ③ ① ② * 每个区域的vm_area_struct结构体变量记录了该区域中每个页面的属性,包括:保护模式(是否只读、是否可读写等)、置换属性(是否常驻内存)、增长方向(数据段是往上增长,栈是往下增长)、是否允许共享,等等。 一个进程的所有vm_area_struct变量按照其区域的逻辑地址范围从小到大组织成一个有序的线性链表,如果链表过长(超过32个区域),则

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档