(计算机应用技术专业论文)虚拟机xen内存管理研究与优化.pdf_第1页
(计算机应用技术专业论文)虚拟机xen内存管理研究与优化.pdf_第2页
(计算机应用技术专业论文)虚拟机xen内存管理研究与优化.pdf_第3页
(计算机应用技术专业论文)虚拟机xen内存管理研究与优化.pdf_第4页
(计算机应用技术专业论文)虚拟机xen内存管理研究与优化.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机应用技术专业论文)虚拟机xen内存管理研究与优化.pdf.pdf 免费下载

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

文档简介

东南大学学位论文独创性声明 本人声明所呈交的学位论文足我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除了文中特别加以标注和致谓 的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 己在论文中作了明确的洗明并表示了谢意。 研究生签名: 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位 论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人 电子文档的内容和纸质论文的内容相一致。除在保密期内的保密论文外,允许论 文被查阅和借阅,可以公布( 包括以电子信息形式刊登) 论文的全部内容或中、 英文摘要等部分内容。论文的公布( 包括以电子信息形式刊登) 授权东南大学研 究生院办理。 摘要 摘要 虚拟机技术通过对硬件资源进行模拟,实现对硬件资源的虚拟化。这样,采用了虚拟机 技术,一台计算机可以提供多个相同的计算机硬件平台,从而能够同时运行多个操作系统并 实现它们之f n j 的相互隔离。虚拟机技术已经广泛运用到生产和研究领域,如在企业服务器管 理整合、系统安全、系统开发测试等领域。在众多的虚拟机技术中,虚拟机x e n 具有开源、 支持多种平台的特点。 本文基于x 8 6 平台对x e n 的内存管理进行研究。介绍了x 8 6 平台的段页式内存管理机制。 因为x e n 是通过修改了l ir l u x 的内核来实现了它的内存管理功能。所以,本文接着分析了l i n u x 的内存管理子系统,它在软件层上实现了对x 8 6 平台的段页式内存管理机制的支持。x e n 具 有两种虚拟化技术泛虚拟化技术和全虚拟化技术。泛虚拟化时,x e n 使用直接模式来实 现内存的虚拟化;全虚拟化时,x e n 使用影子页表模式来实现内存的虚拟化。 在虚拟机的应用中,通常存在着多个虚拟机运行着相同的操作系统或者应用程序的情况, 此时的物理内存中有些页包含了相同的数据信息,它们是可以共享的,但是x e n 没有机制来 共享它们。本文设计了基于内容的页共享技术对x e n 的内存管理进行优化,使得x e n 能够共 享那些含有相同内容的内存页。基于内容的页共享技术使用哈希比较技术找出物理内存中具 有相同数据内容的物理内存页,然后使用写时复制把这些物理内存页共享起来。实验结果表 明在前面描述的场景中,基于内容的页共享技术能够有效地减少物理内存的使用量。 关键词:虚拟机技术,x e n ,基于内容的页共享,哈希比较,写时复制 a b s t r a c t b ys l m u l a t m gt h eh a r d w a r e r e s o u r c e s ,t h ev i r t u a lm a c h i n e t e c h n j q u ea c h i e v e st h e v 1 n u a j i z a t l o no fh a r d w a r er e s o u r c e s w i t ht h e v i r t u a lm a c h i n et e c h n i q u e ,o n ec o m p u t e rc a n p r o v i d e 珈a n y1 d e n t i c a lc o m p u t e rh a r d w a r ep l a t f o r m s ,s ot h a ts e v e r a lo p e r a t i n gs y s t e m s c a nm no nj t a tt h e s a m et l m ea n dt h e s eo p e r a t i n gs y s t e m sa r e i s o l a t e d v i r t u a lm a c h i n e sh a v em a n yu s a g e si n p r o d u c t l o n a n dr e s e a r c h a r e a s ,s u c ha ss e r v e rm a n a g e m e n ta n dc o n s o l i d a t i o n , s y s t e ms e c u 帆 s y s t e md e v e l 叩m e n ta n dt e s t i nn u m e r o u sv i r t u a l m a c h i n e s ,x e ni sw i d e l yu s e da n dr e s e a r c h e d f o r i t so p e ns o u r c ea n d m u l t i p l ep l a t f o r m s jn l sp a p e r e s e a r c h st h em e m o r y m a n a g e m e n to fx e nb a s e do nx 8 6p l a t f o r m t h es e g m e n t a n dp a g em e m o r y m a n a g e m e n to fx 8 6p l a t f o r mi si n t r o d u c e d b e c a u s ex e n a c h i e v e si t sm e m o f v m a n a g e m e n t b ym o d i f y i n gt h el i n u xk e r n e l ,t h em e m o r y m a n a g e m e n ts y s t e mo fl i n u xi sa n a l v z e d w n l c h s u p p o n st h es e g m e n ta n d p a g em e m o r ym a n a g e m e n to fx 8 6 p l a t f o r mi ns o f t w a r el a v e r x e n h a st w ov i r t u a l i z a t i o nt e c h n i q u e s ,p a r a v i r t u a l i z a t i o na n d f u l l v i r t u a l i z a t i o l l x e nu s e sd i r e c tm o d e t oa c j l i e v et h em e m o r yv i r t u a l i z a t i o ni n t h ep a r a - v i r t u a l i z a t i o n ,a n d u s e ss h a d o wp a g em o d et 0 a c h i e v et h em e m o r yv i r t u a l i z a t i o ni nt h e f u l l v i r t u a l i z a t i o n i nt h eu s 燃go fv i r t u a lm a c h i n e s ,t h e r ei s as i t u a t i o nt h a ts e v e r a lg u e s to p e r a t i n gs y s t e m si n v 1 n u a lm a c h l n e sa r et h es a m eo rt h ea p p l i c a t i o n p r o g r a m sa r es a m e ,t h u st h e r em u s tb es e v e r a l p a g e sw h l c hc o n t a i nt h es a m ed a t ai nt h ep h y s i c a lm e m o r y t h e s e p a g e sc a l lb es h a r e d b u t n n a sn om e c h a n l s mt os h a r et h e m t h ec o n t e n t - b a s e d p a g es h a r i n gt e c h n i q u ei sd e s i g n e dt oo p t i m i z e t n em e m o f ym 柚a g e m e n to f x e n u s i n gt h et e c h n i q u e ,x e nc a ns h a r ep a g e sc o n t a i n i n gs 锄e c o n t e n i t h ec o n t e n t - b a s e dp a g e s h a r i n gt e c h n i q u eu s e sc o m p a r e b y - h a s ht e c h n i q u et of i n d t h e p a g e sw h l c hh a v et h es a m ed a t ac o n t e n ti nt h ep h y s i c a lm e m o r y , a n d c o p y o n w r i t et e c h n i q u et o s h a r e t h e s ep a g e s t h e e x p e r i m e n tr e s u l t ss h o w st h a tt h ec o n t e n t b a s e dp a g es h a r i n gc a n l e d u c e t h e k e y w b r d s :v i r t u a lm a c h i n et e c h n i q u e ,x e n c o p y o n - w r i t e ,c 。n t e n d - b a s e dp a g e s h a r i n 吕c o m p a r e - b y h a s h ,一 1v 口上,叫v 71 1 u o u i,jfifffjfffijffijjijfjliiiiiijiiiilljii 2 3 2 泛虚拟化下g u e s to s 的物理内存1 9 2 3 3 泛虚拟化卜的内存虚拟化2 0 2 3 4 内存调:1 j 技术2 2 2 3 5 全虚拟化下的内存虚拟化2 3 2 4x e n 的关键技术:- 2 5 2 4 1 超凋j f j :5 2 4 2 事什通道:2 6 2 4 3 授权表。2 7 2 5 本章小结2 7 第三章基于内容的页共享2 8 3 1 哈希比较2 8 3 1 1 哈希函数2 8 3 1 2 内存内容比较2 9 3 2 写时复制3 0 3 3 其他的内存共享技术3 2 3 3 1 内部域共享c a c h e 3 2 3 3 2 快速克隆3 2 3 4 内存共享技术的比较3 3 3 5 本章小结3 3 第四章x e n 基于内容的页共享的设计3 4 4 1 模块3 4 4 2 体系架构设计3 5 4 2 1 泛虚拟化下的体系架构3 5 4 2 2 全虚拟化下的体系架构3 6 4 3 算法设计3 7 4 3 1 泛虚拟化下的算法3 7 4 3 2 全虚拟化下的算法4 1 4 4x e n 基于内容的页共享实现4 2 4 4 1 总体描述4 2 4 4 2 物理内存页共享实现。4 4 4 4 3 处理写共享物理内存页产生的缺页异常实现4 6 i v 第一章绪论 1 1 研究背景 第一章绪论 随着计算机硬件技术的不断发展,计算机的性能越发强劲,反而软件技术跟不上节奏, 不能充分利用硬件的资源。在此种背景下,能够提高硬件利用率的虚拟机技术越来越受到广 泛地关注。过去,管理各种硬件资源的操作系统软件直接运行在硬件设备上,因此一台计算 机只能运行一个操作系统软件。虚拟机软件采用虚拟化技术虚拟出硬件设备,操作系统可以 运行在虚拟硬件设备上,就如同运行在真实的硬件设备上。 1 1 1 虚拟机介绍 上世纪6 0 年代,计算机没有现在普及,基本是昂贵的大型机,数量少且只有少数企业、 研究机构和高校才能使用。一台大型机只能安装某种操作系统,只能让特定的用户使用。为 了充分利用昂贵的大型机资源,7 0 年代i b m 公司推出分时操作系统v m 3 7 0 引,它的设计目 的是让任何一个运行了v m 3 7 0 的大型机,能够运行当时流行的任何一种操作系统。v m 3 7 0 的核心是一个称作虚拟机监视器( v i r t u a lm o n i t o rm a c h i n e ,v m m ) 的程序,这个程序直接 运行在硬件上,向上层的操作系统提供模拟真实底层硬件环境的虚拟机。 v m m 位于操作系统和计算机硬件之问,它将硬件资源分割成多个虚拟机。v m m 管理实际的 硬件资源( 包括c p u ,存储设备,i o 设备) 和虚拟机,管理虚拟机对硬件资源的访问,并为 运行在虚拟机罩的操作系统客户机操作系统( g u e s to s ) ,虚拟出一套独立于实际硬件的 虚拟硬件资源( 如c p u ,内存,i o 设备) 。典型的虚拟机模型如图卜1 所示。 虚拟机1虚拟机2虚拟机n 应用程序应用程序应用程序 操作系统操作系统操作系统 虚拟硬件虚拟硬件虚拟硬件 v i r t u a lm a c h i n em o n i t o r ( v m m ) 底层硬件( c p u ,内存,i o ) 图1 - 1 典型虚拟机模型 操作系统可以运行在虚拟机里,它上面的应用程序自然也可以在虚拟机里运行,这样使 东雨人二坝i :学位论文 用v m m 可以在一台物理机器罩运行多个虚拟机,分别为不叫的应用程序提供所需的服务。之 前多台物理机器所作的事情,现在一台物理机器就可以办到,减少了占用空间和管理成本。 v m m 不仅仅是一个多任务管理工具,更是一种高安全性和高可靠性的解决方案。同时v m m 为 操作系统开发人员提供了更多的机会去开发那些在复杂操作系统上不易实现的功能。如系统 迁移和安全等功能,在操作系统层是很难实现的,但是在v m m 中实现起来就相对容易些。 虚拟机技术后来由于硬件成本的降低和操作系统功能的增加而一度受到学术界和工业界 的“冷落”。然而事物的发展总是充满矛盾,这些让虚拟机技术受到“冷落”的原因到了九十 年代反而让它重新崛起。由于硬件成本的下降,用户有能力购买更多的机器,但这些机器常 常未被充分利用,导致了很高的空间占用和管理成本。操作系统功能的增加使得系统更脆弱 且容易被攻击。为了防止系统崩溃,系统管理员通常采用一台物理机器运行一个应用程序的 办法。这种方法增加了物理机器的需求量,极大地加大了硬件成本和管理的丌销。而这些问 题可以通过使用虚拟机得到很好的解决。上世纪九十年代随着j a v a 虚拟机和v m w a r e 虚拟机 的推出并获得巨大成功,虚拟化技术再次成为热门研究课题。其核心思想是v m m ,v m m 能够通 过区分资源的优先次序并将资源分配给最需要它们的工作负载来简化管理和提高效率。 最近几年,虚拟机技术重新成为学术界和工业界的热点。风险投资公司争相为和虚拟机 技术相关的公司注资,i n t e l 、a m d 、s u n 、m i c r o s o f t 、i b m 、h p 都有自己的虚拟机战略,虚 拟机技术的市场增长迅猛。在大学实验室和科研机构中,研究人员基于虚拟机技术做了很多 开发工作,用来解决灵活性、安全性和易管理性等问题。 1 1 2 虚拟机技术应用场景 虚拟机技术已广泛应用到生产和研究领域,如服务器管理整合( m a n a g e m e n ta n d c o n s o l i d a t i o n ) b 3 ,系统安全4 m m l ,大规模分布式高性能计算口儿8 1 ,系统开发测试1 0 儿3 等 领域。 所谓服务器管理整合,就是通过虚拟机技术将多个服务器整合到一台物理计算机中,这 样能够大大提高物理资源的利用率并方便系统管理维护工作。如使用虚拟机的动态迁移技术 n 胡n 3 1 可使服务器的动态封装转移和运行时负载平衡变得更为容易;又如采用了虚拟机技术实 现的桌面系统的分布式计算平台管理系统,管理员只要备份一个虚拟机镜像就可以快速布置 系统,同时通过复制虚拟机镜像可以轻松地在一台物理计算机上布置多个虚拟机,通过虚拟 机的错误隔离( f a u l ti s o l a t i o n ) n 钔技术,可以达到如同运行在多台物理计算机上,而获得 安全性和性能上的保证。 虚拟机技术在安全研究领域也有重要价值,目前已经广泛应用到诸如入侵检测h 刨,安全 隔离5 1 3 ,蜜罐系统n 5 3 ,系统追踪n 0 6 3 等方面。 将虚拟机技术应用于蜜罐系统,可以很容易地加载、删除、停止和继续每一个系统,这 对于研究被攻击的系统很有用处。如v r a b l e n 5 1 等人利用虚拟机技术在布置系统环境方面的便 利,开发了p o t e m k i nv i r t u a lh o n e y f a r m 蜜罐系统。通过使用虚拟机,p o t e m k i n 虚拟机蜜 2 罐系统实现了在1 0 台左右的物理计算机上布置了6 4 0 0 0 个i n t e r n e t 蜜罐系统机,使管理变 得更加便利。 由f 每一个虚拟机都运行在v m m 上,g u e s to s 不再是系统的最低层。运行在虚拟机中的 服务即便受到攻击而引起异常行为,运行在其它虚拟机上的应用程序也不会受到影响,这是 由于虚拟机中的g u e s to s 不具有最高的系统权限,这就是错误隔离( f a u l ti s o l a t i o n ) 技 术。人们还可以在v m m 层面观察运行于其上的虚拟机,了解g u e s to s 的进程运行情况、系统 调用情况、网络使用情况等。即便是隐秘的r o o t k i t 修改了g u e s to s 的系统同志,系统安全 人员也可以在比g u e s to s 更底层的v m m 发觉异常情况,这就是内省( i n t r o s p e c t i o n ) 技术。 由于采用了虚拟机技术的系统易于管理,安全性高,运行时暂停和继续虚拟机比较方便, 以及虚拟机具有动念迁移等优点,虚拟机技术还被应用到了集群的高性能计算( h i g h p e r f o r m a n c ec o m p u t i n g ,h p c ) 领域。虚拟机技术能够为h p c 系统的高性能,可扩展性,系 统管理,访问控制等方面提供保证。l i u ,h u a n g 等人将高性能的i n f i n i b a n d 协议移植虚拟 机x e n 上n7 1 ,提出类似d i r e c ti o 的v m m - b y p a s s 技术,为虚拟机在h p c 上的应用提供了进 一步的性能保证。 虚拟机技术在同一台物理计算机上同时运行多个虚拟机的能力,使得它在操作系统程序 的开发和测试领域有很大的用途。在u s e r m o d el i n u x 中,每一个客户机操作系统在宿主操 作系统上都对应到普通的系统进程,因此可以很容易地使用g d b 来调试这些客户机操作系统, 这和调试普通的进程没有差别,使用u s e r - m o d el i n u x 来调试内核已经是一种广泛使用的技 巧。而对于虚拟机x e n ,可以通过在d o m a i n0 中运行g d b s e r v e r 的方法来实现g u e s to s 的 调试。d o m a i n0 是虚拟机x e n 中的管理虚拟机,在x e n 中虚拟机也被称作域( d o m a i n ) ,它 作为监控程序( h y p e r v i s o r ) 的扩展提供了系统的管理服务。虚拟机技术的使用使得操作系 统内核的调试或具有r o o t 权限的应用程序的开发变得轻松及安全。 1 2 研究工作概述 在虚拟机技术的许多应用场景中,都存在着不同的虚拟机之间共享宿主机的物理内存的 可能性。例如,当多个虚拟机运行同一个操作系统的不同实例时,运行相同的应用程序的不 同实例时,都有共享包含相同数据的宿主机物理内存的机会。因此,如果在一台物理计算机 上运行多个虚拟机,v m m 通过实现页共享技术可以有效地节省宿主机物理内存资源。 页共享技术很早就在操作系统的层面上得以实现。例如,有的操作系统实现了对应用程 序代码段、只读数据段等只读的物理内存的共享。不同的进程运行相同的应用程序时,可以 共享这一应用程序的代码段和只读数据段。万一发生对共享页的写操作,利用写时复制 ( c o p y - o n - w r i t e ,c o w ) 技术加以处理。关于c o w 的相关介绍,将在第三章给出。这种页共 享只能识别出有限数量的可共享页,在现实应用中,很可能存在许多可写页实际上并没有发 生写操作,因而可以被共享。此外,虽然这样的页共享对应用程序是透明的,但是需要修改 操作系统内核,并且可能改变应用程序的编程接口。 。 3 查塑叁堂丝! :兰垡笙苎 随着虚拟机技术的引入,在v m m 层面实现页共享,就可以避免了对操作系统内核的修改, 保持了应用程序接口不变。更为重要的足,基于内容的页共享技术的引入。它通过比较宿主 机物理内存页的数据,可以识别出所包含相同数据的宿主机物理页,从而实现最大程度的页 共享。对于包含相同数据的宿主机物理内存页,无论它们在g u e s to s 层面上的用途是什么, 在v m m 层面上,它们都可以被无所顾虑地共享。这种虚拟机层面上实现的页共享有两大优点: 它无需修改操作系统内核,甚至完全不关心操作系统的逻辑;实现了最大程度的页共享, 而不是只共享有限的只读页。 基于内容的页共享主要性能开销,来源于扫描宿主机物理内存数据以挖掘出相同数据的 不同宿主机物理内存页。为了避免这种耗时的宿主机物理内存页扫描和两两宿主机物理页之 间的数据比较,可以利用哈希表以索引的方式高效地描述宿主机物理内存页的共享情况。 对每一个宿主机物理内存页,系统为它的数据计算哈希值,作为哈希索引的键值。如果 这个键值对应的哈希表单元已经存在,那么,这个宿主机物理内存页和先前已经加入到这个 哈希表单元中宿主机物理内存页的哈希值是相同的,这意味着它们有很高的概率包含相同的 数据而可以共享。接着,对这些哈希值相同的宿主机物理内存页,系统进一步比较它们的数 据,如果数据相同,则确认它们可以共享。 对于可以共享的宿主机物理内存页,系统使用c o w 技术实现共享,多余的备份被删除。 任何尝试对共享内存页的写操作都会引起缺页错误,并被v m m 所截获。v m m 在g u e s to s 完全 不知道的情况下复制一份备份分配给需要进行写操作的g u e s to s 。 如果这个键值对应的哈希表单元不存在,那么就创建一个新的单元,将这个宿主机物理 内存页的描述符加入到这个单元中。直到未来系统发现有另外一个宿主机物理内存页和它包 含相同的数据,才把那二者共享起来。 为了节省宿主机的物理内存资源,虚拟机在内存管理上应该采用基于内容的页共享技术。 v m w a r e 在它的产品e s xs e r v e r 上已经采用了基于内容的页共享技术n 引。而作为x 8 6 架构下 的一款优秀的开源虚拟机x e n n9 l ,在内存管理上,还没有引入基于内容的页共享技术。为此, 本文在分析x e n 的内存管理的基础上,研究x e n 在x 8 6 平台下的基于内容的页共享技术的设 计。 1 3 论文组织结构 本论文的组织结构如下: 第一章阐述了虚拟机的相关概念和虚拟化技术,并简单介绍了本文的研究内容。 第二章首先介绍x 8 6 平台的内存架构,l i n u x 的内存管理子系统,x e n 在泛虚拟化和全虚 拟化的内存管理技术,x e n 的关键技术。 第三章阐述实现页共享需要的相关技术。 第四章描述x e n 的基于内容的页共享的设计。 第五章用实验测试对x e n 的内存管理所作旮勺优化。 4 代 操 ,很多书中把内存( 这旱特指安插在主板上的r a m ) 比作一个大的数组,地址就是这个数 组的索引。与之类似,地址空间则是个更大的数组,它是所有可用资源的集合,同样,地址 是这个数组的索引。地址空间可以划分成如下两种类型。 1 物理地址空间 硬件平台可以粗略地划分成三个部分:c p u 、内存和其他硬件设备。其中,c p u 是平台的 主导者,从c p u 的角度来看,内存和其他硬件设备都是可以使用的资源。这些资源组合在一 起,分布在c p u 的物理地址空间内。如同名字的暗示,c p u 使用物理地址索引这些资源。物 理地址空间的大小,由c p u 实现的物理地址位数所决定,物理地址位数和c p u 处理数据的能 力( 即c p u 位数) 没有必然的联系,例如1 6 位的8 0 8 6 c p u 具有2 0 位地址空间。 前面提到,内存和其他硬件设备分布在物理地址空间内。用一个例子可以很容易地说明 这个问题。假设一个平台,c p u 的物理地址空间为4 g b ,有5 1 2 1 b 内存,其他硬件设备的i o 寄存器被映射到5 1 2 m b 的r o 地址内,则该平台的物理地址空间可能如图2 - 1 所示划分。有 的c p u ,如x 8 6 ,有两个物理地址空间,内存和i 0 地址空间。 从图2 1 中可以看出,5 1 2 m b 内存和i o 地址只占用物理地址空间的部分,还有大部 分处于空闲。用数组来说的话,有一个4 g b 大小的数组,其中1 g b 的元素有有效值( 5 1 2 m b 内存、5 1 2 m b i o 地址) ,其他元素无有效值。 s 东南人学硕1 :学位论文 5 1 2 耶i o 地址 5 1 2 m b 内存 物理地址4 g b 物理地址3 g b 物理地址o 图2 1 物理地址空间 2 线性地址空间 一个平台只有一个物理地址空间,但每个程序都认为自己独自享用整个平台的硬件资源, 为了让多个程序能够有效地相互隔离和使用物理地址空间的资源,线性地址空问的概念被引 入了。和物理地址空间一样,线性地址空问的大小取决于c p u 实现的线性地址位数。例如, 实现了3 2 位线性地址的c p u 具有4 g b 大小的线性地址空间。需要注意的是,线性地址空间的 大小和物理地址空间的大小没有必然的联系。例如,i n t e l 的p a e 平台就具有4 g b 的线性地 址空间,6 4 g b 的物理地址空间。 内核占用区域 用户栈 共享库 用户堆 程序的代码段、数据段 线性地址4 g b 线性地址0 图2 - 2 线性地址空间 线性地址空间会被映射到物理地址某一部分或整个物理地址空间。c p u 负责将线性地址 转换成物理地址,使程序能够正确访问到该线性地址空间所映射到的物理地址空间。一个平 6 第二章e n 内存管理分析 台可以有多个线性地址空i 目,在现代操作系统中,每个进程通常都拥有自己的私有线性地址 空间。一个典型的线性地址空间构造如图2 2 所示。 2 1 2 地址 前面已经讲到,地址是访问地址空间的索引。根据访问的地址空f h j 的不同,索引可以分 为线性地址和物理地址。但由于x 8 6 特殊的段机制,还有一种额外的地址逻辑地址。 1 逻辑地址 该地址即程序直接使用的地址( x 8 6 平台无法禁用段机制,逻辑地址一直存在) 。例如下 面的这个程序: i n ta = 1 : i n t 术p = a : 这里,指针变量p 中存储的即是一个逻辑地址。逻辑地址由一个1 6 位的段选择符和一个 3 2 位的偏移量( 3 2 位平台) 构成。逻辑地址的转换过程在后面介绍。在上面的这个例子中, 指针变量p 实际上存储的是逻辑地址的偏移部分,该偏移对应的段选择符位于段寄存器中, 并没在程序中反映出来。 2 线性地址 该地址又称虚拟地址。线性地址是逻辑地址转换后的结果,用于索引线性地址空间。当 c p u 使用分页机制时,线性地址必须转换成物理地址才能访问物理内存或者硬件设备;当分 页机制未启用时,线性地址等于物理地址。 3 物理地址 该地址索引物理地址空间,是c p u 提交到总线用于访问物理内存和硬件设备的最终地址。 它和上面两个地址有如下关系: 分段机制启用时,分页未启用:逻辑地址一线性地址= 物理地址; 分段、分页机制同时启用:逻辑地址一线性地址一物理地址。 还有总线地址的说法,这是因为给设备寄存器分配的物理地址和寄存器在设备上的地址 是不同的( 通常设备的寄存器都认为自己是从地址o 开始的) ,两者之间存在一个映射关系, 由设备的电子线路负责转换并对c p u 透明。由于c p u 用于访问设备的物理地址是设备寄存器 展现给总线的地址,所以在x 8 6 下有时也称物理地址为总线地址。 2 1 3x 8 6 内存管理机制 x 8 6 架构的内存管理机制以复杂著称,这里面有很多的历史原因。下面分别对x 8 6 的分 段机制和分页机制进行介绍。 1 分段机制 分段是一种朴素的内存管理机制,它将内存划分成以起始地址( b a s e ) 和长度( l i m i t ) 描述的块,这些内存块就称为段。段可以与程序最基本的元素联系起来,例如程序可以简单 7 东南人学坝i j 学位论义 地分为代码段、数据段和栈,段机制中就有对应的代码段、数据段和栈段。 分段机制由4 个基本部分构成:逻辑地址、段选择寄存器、段描述符和段描述表。其核 心思想是:使用段描述符描述段的基地址、长度以及各种属性( 例如读写属性、访问权限) 。 当程序使用逻辑地址访问内存的某个部分时,c p u 通过逻辑地址中的段选择符索引段描述符 表以得到该内存对应的段描述符,并检测程序的访问合法性,如合法,根据段描述符中的基 地址将逻辑地址转换为虚拟地址。分段机制的流程可以用图2 - 3 概括。 逻辑地址 i-。一,一j ,一,l、 r 一 一1r 一一一一 f 段选择符| 偏移 段描述符 段描述符表 t 基地址一一相j j l d 虚拟地址i l 程序的某个i 通过段描述1 - 的部分( 例 如代码段、l 数据段) 1 。一 j 虚拟地址空间 图2 3 分段机制 ( 1 ) 段选择符( s e g m e n ts e l e c t o r ) 段选择符是逻辑地址的一个组成部分,共1 6 位,用于索引段描述表以获得该段对应的段 描述符,其结构如图2 - 4 所示。 1 53 21o 索引( i n d e x )t i lr p l 描述符表 7 。 o = g d t i = l d t 图2 4 段选择符 各字段的含义如下: i n d e x :段描述符表的索引。 t i :用于指明索引哪个段描述符表。0 为g d t ,全局描述符表;1 为l d t ,局部描述符 表。 r p l :所要求权限级别( r e q u e s t e dp r i v i l e g el e v e l ) ,位于段寄存器的0 1 位,用 于程序在访问段时对访问权限的检查。 8 第二章x e n 内存管理分析 段选择符作为逻辑地址的一部分,对程序时可见的。但通常段描述符的修改和分配是由 连接器和加载器完成的,而不是应用程序本身。 为了使c p u 能够快速地获得段选择符,x 8 6 提供了6 个段寄存器( s e g m e n tr e g i s t e r ) 用于存放当前程序的各个段的选择符。6 个段寄存器分别如下: c s ( c o d e s e g m e n t ,代码段) :存放代码段的段选择符。 d s ( d a t a s e g m e n t ,数据段) :存放数据段的段选择符。 s s ( s t a c k s e g m e n t ,栈段) :存放栈的段选择符。 e s 、f s 、g s :供程序自由使用,可以存放额外3 个数据段的段选择符。 通常程序只使用c s 、d s 、s s 这三个段寄存器。 ( 2 ) 段描述符( s e g m e n td e s c r i p t o r ) 段描述符描述某个段的基地址、长度以及各种属性。其结构如图2 5 所示。其中,b a s e 字段描述了段的基地址,l i m i t 字段描述了段的长度。 三三 至卫 工三 三三 t 二二三三二二工二二三三三二 。 l f i 4 一b i tc o d es e g m e n t ( i a - 3 2m o d eo n l y ) a v l a v a il a b l ef o ru s eb ys y s t e ms o f t w a r e b a s e s e g m e n tb a s ea d d r e s s d b d e f a u l to p e r a t i o ns i z e ( 0 = 1 6 一b i ts e g m e n t :1 = 3 2 一b i ts e g m e n t ) d p l d e s c r i p t o rp r i v i l e g el e v e l g g r a n u l a r i t y l i m i t s e g m e n tl i m i t p s e g m e n tp r e s e n t s d e s c r i p t o rt y p e ( o = s y s t e m ;1 = c o d eo rd a t a ) t y p e s e g m e n tt y p e 图2 - 5 段描述符 当c p u 通过一个逻辑地址的段选择符获得该段对应的段描述符后,会使用描述符中的各 种属性字段对访问进行检查,一旦访问被确认合法,c p u 将段描述符中的3 2 位基地址和逻辑 地址中的3 2 位偏移量相加以获得该逻辑地址对应的线性地址。 为了加速段描述符的访问,x 8 6 在段寄存器后增加了一个程序不可见的段描述符寄存器。 当段寄存器加载一个新的段选择符后,c p u 自动将该段的选择符索引的段描述符加载到这个 不可见的段描述符寄存器中,故c p u 只需要在更新段寄存器时才索引段描述符表。 ( 3 ) 段描述符表 x 8 6 架构提供两种段描述符表,它们是:全局描述符表( g l o b a ld e s c r i p t o rt a b l e ,g d t ) 和局部描述符表( l o c a ld e s c r i p t o rt a b l e ,l d t ) 。 系统中至少只有一个g d t 可以被所有进程访问。相对的,系统中可以有一个或多个l d t , _ 可以被某个进程私有,也可以被多个进程共享。g d t 仅仅是内存中的一个数据结构,可以把 它看成一个数组,由基地址( b a s e ) 和长度( l i m i t ) 描述。与之相反,l d t 是一个段,它需 变堕叁堂! 塑:生兰篁堡兰 要一个段来描述符来描述它。l d t 的段描述符存放住g d t 中,当系统中有多个l d t 时,g d t 中 必须有对应数量的段描述符。 为了加速对g d t 和l d t 的访问,x 8 6 提供了g d r r r 寄存器和l d t r 寄存器。它们的描述如 下: g d t r :包括一个3 2 位的基地址( b a s e ) 和一个1 6 位的长度( l i m i t ) 。 l d t r :结构同段寄存器( 包括对程序不可见的段描述符寄存器) 。 可以使用l g d t s g d t 指令对g d t r 进行读取存储操作,类似地,可以使用l l d t s l d t 对 l d t r 进行同样的操作。通常在进程切换时,l d t r 中的值会被换成新进程对应的l d t 的段描述 符。 段选择符 l d t 图2 - 6 描述了通过段选择符索引g d t l d t 的过程。从图中可以看出,g d t r l d t r 分别为 g d t l d t 提供了基地址,段选择符的t i 位确定索引g d t 还是l d t 。 ( 4 ) 逻辑地址转换总结 下面用一个例子说明逻辑地址转换的过程。假设程序中某条语句访问了数据段,例如: i n ta = 1 0 0 : 全局变量 i n tf u n c ( ) i n tb : b = a : ) 1 0 笙= 三! 兰! 竺堕堡笪些坌塑 程序从加载到变量a 的逻辑地址转换为线性地址的过程如下: 1 ) 程序加载 通过进程的段选择符索引g d t ,获得l d t 的段描述符,加载它到i d t r 寄存器中。 进程的c s 、d s 、s s 被加载入相应的段选择符。同时,c p u 根据段选择符的t i 字段, 索引g d t l d t ,获得相应的段描述符并加载入c s 、d s 、s s 对应的不可见的段描述符寄存器。 2 ) 变量a 的逻辑地址转换为线性地址 进行必要的属性、访问权限检查。 从d s 对应的段描述符寄存器中获得该段的基地址。 将变量a 的3 2 位偏移量和d s 段描述符中的基地址相加,获得变量a 的线性地址。 2 分页机制 分页是更加细粒度化的内存管理机制,与分段机制将内存划分成以基地址和长度描述的 多个段进行管理的不同,分页机制是用粒度化的单位“页”来管理线性地址地址空间和物理 空间。x 8 6 下一个典型的页大小是4 k b ,则一个4 g b 的线性地址空间可以划分成1 0 2 4 1 0 2 4 个页面。同样,物理地址空间也可以这样划分。x 8 6 允许大于4 k b 的页面( 如2 m b 、4 m b ) ,本 论文主要研究的基于内容的页共享,针对的是4 k b 的页面,所以在此介绍最为经典的4 k b 页 面管理机制。 同时,分页机制让现代操作系统中的虚拟内存机制成为可能,采用这种机制,一个页面 可以存在于物理内存中,也可以存放在磁盘的交换区域( 如l i n u x 下的s w a p 分区,w i n d o w s 下的虚拟机内存文件) 中,程序可以使用比机器物理内存更大的内存区域。 分页机制的核心思想是通过页表将线性地址转换为物理地址,并配合旁路转换缓冲区 ( t r a n s l a t i o nl o o k a s i d eb u f f e r ,t l b ) 来加速地址转换过程。操作系统在启动过程中,通 过将c r o 寄存器的p g 位置l 来启动分页机制。图2 - 7 展示了分页机制的概要。从图中可以看 出,分页机制主要由页表、c r 3 寄存器和t l b 三个部件构成。 1 1 东南人学颂一i j 学位论义 c p u 访问 线性地址页表物理地址 查找 地址转换 7 :- 尢 v ld 【h 7 1 1 1 工j l u t t l b j 童 k 地址转换在t l b 中 提供基地址 i 得到物理地址c r 3 ( p d b r ) 图2 7 分页机制 页表( p a g et a b l e ) 是用于将线性地址转换成物理地址的主要数据结构。一个地址对齐 到页边界后的值称为页帧号( 或页框架) ,它实际是该地址所在页面的基地址。线性地址对应 的页帧号即虚拟页帧号( v i r t u a lf r a m en u m b e r ,v f n ) ,物理地址对应的页帧号

温馨提示

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

评论

0/150

提交评论