- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Linux 2.2.16及以前的版本,在全局段表(GDT)中,每一个进程(每一个虚拟地址空间)有两个静态的表项,其中一项是进程的任务状态段(Task Status Segment,TSS),这项记录着进程切换过程中的CPU现场状态,另外一项是局部段表(LDT),LDT项是这个进程对应的局部段表的入口。而每个进程的局部段表中只有三个表项,一个空表项、一个用户数据段和一个用户代码段,用户数据和代码都从地址0开始,大小为3GB,称为用户空间。所有进程的3GB~4GB线性空间,都由系统共享,存放系统数据段和系统代码段,称为内核空间。 Linux系统使用I386提供的四级保护机制中的两级,0级由系统内核使用,而3级由用户程序使用。Linux内核存储在内核空间。用户进程有各自的虚拟地址空间,都使用从0~3GB的线性空间,而内核空间映射到每一个用户线性空间的3GB~4GB的地方,由所有进程共享。 根据硬件提供的保护机制,处于内核空间的内核代码可以访问正在执行进程的用户空间。用户空间的代码只能访问本空间的内容,不能直接访问内核空间的内容,用户进程只能通过中断或者系统调用访问内核空间,这时,触发硬件的特权级转换(由3级转换为0级),操作系统转入内核空间中执行, 执行完毕后,依靠硬件设置实现再次切换,重新进入用户空间。用户空间之间除了特定的共享空间之外,不可以相互访问,这就比较方便地实现了存储共享和保护。 整个线性空间通过分页的方式映射到物理空间。每页大小为4KB,因此整个4GB的线性空间可以分为1K(1024)个页(page),Linux系统采用三级分页机制,对页建立三级索引,分别称为页目录(page directory)页中间目录(page middle directory)和页表(page table)。由于I386体系结构的限制,在I386平台上的Linux系统采用两级页索引,页目录和页中间目录合二为一。 3.4.2 地址映射 Linux系统的虚拟空间分为连续的段,分别为用户空间和内核空间,直接映射到线性空间中。在地址变换过程中,主要考虑线性空间到物理空间的映射关系。 在I386平台上的Linux系统采用两级页索引,为页目录和页表。线性空间的页和物理空间的基本单位页面(page frame)之间存在对应关系,这种关系用页表(page table)来描述,每个页在页表中占一项,每一项为4字节,要描述整个线性空间,页表要4MB。把所有页表也划分为4KB为单位的页,共有1K个这样的页,这些页的地址采用页目录(page directory)来记录,页目录的每一项描述 存放页表的一个页与实际页面的对应关系,每一项也占用4字节。这样,描述整个线性地址空间需要的页目录占用一页。 线性地址由三个部分组成,分别为页目录索引、页表索引和页内偏移地址。第一部分页目录索引描述要访问地址在页目录表中的位置,通过这个索引,就可以得到一个记录页表的内存单元;第二部分页表索引描述待访问地址在页表中的位置,通过查找页表,就得到待访问地址所在的页面;第三个部分页内偏移地址,描述待访问地址相对于页面基地址的偏移量。根据这三部分资料,就可以访问到内存中相应的内容。整个线性地址包括32位,其中页 目录索引和页表索引各占10位,寻址范围为1K,正好是页表和页目录表的大小,而页内偏移地址占12位,寻址范围为4K,等于页的大小。这种地址变换可以参看图3.4。 图3.4 Linux在I386平台的地址变换 从上面的描述可以看到,要访问内存中的某一内容,通过地址变换,首先查找页目录表,接着查找页表,最后才能访问到真正存放的数据,整个过程要三次访问物理内存,因此,记录一个进程中经常访问页的地址的快表(translation lookaside buffer)是必不可少的。地址变换过程中,首先访问快表,如果该页表项存在于快表中,就可以直接得到对应的页面号,如果不在快表中,再去查找页目录表和页表。 3.4.3 共享与保护 Linux系统的每一个进程拥有4GB的虚拟空间,这个空间也就是线性空间,在I386系统下,对应为1K个大小为4KB的页。其中0~767个页对应的3GB空间为用户空间。而3GB~4GB的区域映射为系统空间。 实际上,整个物理内存被映射到从3G(0xc0000000)开始的一段线性空间中,在启动过程中,这个区域的页目录和页表首先建立,也就是说,整个物理内存从启动开始就处于内核态,由系统所控制。所有物理内存可
您可能关注的文档
最近下载
- 某尾矿溢水塔回水隧洞封堵工程施工方案.pdf VIP
- 婴幼儿的早期教育工作总结PPT.pptx VIP
- 【高考真题】重庆市2025年高考真题物理试卷(含答案).pdf VIP
- 教案对外汉语我是跟旅游团一起来的.pdf VIP
- 2024年秋季新教材人教版一年级上册数学全册教案-129页.docx VIP
- 2024-2025学年初中英语九年级上册牛津上海(试用本)教学设计合集.docx
- 2020年《城镇燃气设计规范》GB50028-2006 .pdf VIP
- T_CDHA 13-2023 热力管道用金属波纹管补偿器.pdf
- 燃气工程技术专业基础知识考试题库(含答案).docx VIP
- 室内滑雪馆消防设计探讨.pdf VIP
文档评论(0)