计算机操作系统-ch6-存储器管理_第1页
计算机操作系统-ch6-存储器管理_第2页
计算机操作系统-ch6-存储器管理_第3页
计算机操作系统-ch6-存储器管理_第4页
计算机操作系统-ch6-存储器管理_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

第六章器管理本章主要内容:一.

器的层次结构二.程序的装入和三.连续分配 管理方式单一连续区分配固定分区分配动态分区分配四.离散分配的基本分页管理方式管理方式分段段页式管理管理6.1器的层次结构第六章器管理第六章器管理6.1器的层次结构局部性原理空间局部

性时间局部

性6.2程序的装入和在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事,就是要将程序和数据装入内存。将一个用户的源程序变为一个可在内存中执行的程序,通常要经过编译、、装入。第六章

器管理第六章

器管理程序的装入和程序的装入程序的装入就是系统调用装入程序将程序装入内存,可采用三种方式:一、绝对装入方式二、可重定位装入方式(静态重定位)三、动态运行时装入第六章

器管理程序的装入和程序的装入一、绝对装入方式编译程序事先已知程序在内存中的驻留位置,编译时产生绝对地址的目标代码,绝对装入程序按照装入模块的绝对地址将程序和数据装入内存。装入模块被装入内存后,不需对程序和数据的地址进行修改。第六章

器管理程序的装入和程序的装入二、可重定位装入方式(静态重定位)在程序装入时对目标程序中的指令和数据地址的修改过程称为重定位。1、编译程序使目标模块的起始地址从0开始。2、程序装入时,装入程序根据内存的使用情况将装入模块装入到内存的某个位置,并对模块进行重定位。物理地址=有效相对地址+程序在内存中的起始地址。第六章

器管理程序的装入和程序的装入三、动态运行时装入程序执行时进行相对地址→物理地址的转换。(因为程序在活动过程中,在物理内存中的位置会发生变化,比如在具有对换功能的系统中)。CPU内存重定位寄存器14000+34614346逻辑地址物理地址内存管理单元(MMU)第六章器管理6.2程序的装入和6.2.2

程序的一、要解决的问题将编译后的目标模块装配成一个可执行的程序第六章器管理6.2程序的装入和6.2.2

程序的二、1、静态的两种方式(static

Linking)2、运行时动态

(Run-time

Dynamic

Linking)第六章器管理6.2程序的装入和6.2.2

程序的二、

的两种方式1.静态:在程序运行前,用程序将目标模块链接成一个完整的装入模块。静态

的任务:对相对地址进行修改:变换外部调用符号:将每个模块中所用的外部调用符号,都变换为相对地址见 P139页图6-46.2程序的装入和6.2.2

程序的静态1、的特点:开销大2、程序开发不方便3、程序运行快第六章器管理第六章器管理6.2程序的装入和6.2.2

程序的二、

的两种方式2、运行时动态基本原理6.2程序的装入和6.2.2

程序的动态

的特点:1、节省内存和外存空间;2、方便程序开发;3、程序运行时的速度慢了;第六章器管理第六章器管理管理方式6.3连续分配一、单一连续分配。二、分区式分配:1、固定分区:分区大小相等分区大小不等2、动态分区。第六章器管理连续分配

管理方式单一连续分配这种方式适用于单用户,单任务的OS,它把内存OS使用,用户区供分为系统区和用户区。系统区用户使用。单一连续分配的OS保护机构:设一基址寄存器(存程序在物理内存中的最小地址,用于进行地址映

射)、和一界限寄存器。如果用户程序的逻辑地址<界限寄存器中的逻辑地址范围则是合法地址,否则中断。第六章器管理6.3

连续分配

管理方式6.3.2固定分区分配固定分区分配将内存空间划分为若干个固定大小的区域,在每个分区中可以装入一道作业。当内存中划分成几个分区时,便允许几道作业并发运行;当有一个空闲分区时,便可从外存的后备队列中选择一个适当大小的作业装入该分区;当该作业结束时,又可从后备队列中找出另一个作业调入该分区。第六章器管理6.3

连续分配

管理方式6.3.2固定分区分配一、划分分区的方法1、分区大小相等2、分区大小不等二、内存分配使用一个记录内存状况的内存分区使用表来管理内存分配。第六章器管理6.3

连续分配

管理方式6.3.2固定分区分配三、固定分区使用表分区号大小(KB)始址(K)状态11230已分配23045已分配35075已分配4100125已分配6.3

连续分配

管理方式6.3.2固定分区分配四、固定分区的特点:1、管理简单2、内存利用率低第六章器管理第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配使用固定分区浪费内存,故使用动态分区,根据进程的具体情况分配内存。本节主要内容:动态分区分配使用的数据结构动态分区分配算法动态分区的分配和回收操作第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配一、动态分区分配的基本原理第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配二、分区分配中的数据结构

1、空闲分区表包含分区序号、分区始址及分区大小等表目。序号分区大小(KB)分区始址(K)1123023045第六章

器管理6.3

连续分配

管理方式6.3.3动态分区分配二、分区分配中的数据结构2、空闲分区链为每个空闲分区建立一个分区结点每个结点包括:向前、向后指针、分区起始地址及大小。第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配三、动态分区分配算法介绍下面三种动态分区分配算法:1、首次适应算法FF2、循环首次适应算法。3、最佳适应算法第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配三、动态分区分配算法1、首次适应算法FF在采用空闲分区链作为数据结构时,FF算法要求空闲分区链以地址递增的次序。在进行内存分配时,从链首开始顺序查找,直至找到一个能满足其大小要求的空闲分区为止。然后,再按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。首次适应算法FF的特点:1、高地址部分大空闲区较多;2、低地址部分容易留下小分区;3、查找从低地址开始,查找开销较大。第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配三、动态分区分配算法

2、循环首次适应算法该算法是由首次适应算法演变而形成的。在为进程分配

内存空间时,不再每次从链首开始查找,而是从上次找到的

空闲分区的下一个空闲分区开始查找,直至找到第一个能满足要求的空闲分区,并从中划出一块与请求的大小相等的内存空间分配给作业。为实现该算法,应设置一起始查找指针,以指示下一次起始查找的空闲分区,并采用循环查找方式。循环首次适应算法的特点:

1、空闲区分布均匀;2、查找开销较小;3、容易使系统缺乏大空闲区;第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配三、动态分区分配算法3、最佳适应算法该算法每次为作业分配内存,总是把既能满足要求、又是最小的空闲分区分配给作业,避免了“大材小用”。为了加速寻找,该算法要求将所有的空闲区,按其大小以递增的顺序形成一空闲区。这样,第一次找到的满足要求的空闲区,必然是最优的。最佳适应算法的特点:1、避免大材小用,提高内存利用率;2、容易留下难以利用的小空闲区。第六章器管理6.3

连续分配

管理方式6.3.3动态分区分配四、分区分配操作1、内存分配流程检索空闲链表找足够大的空闲区(m.size>=u.size)从m.size中划出大小为u.size的空间进行分配详细流程见

p148页习题:当前空闲链20k:50k80k:100k300k:60k先请求30k空间,再请求50k空间.画出分别采用首次适应算法、循环首次适应算法、最佳适应算法的空闲链(size=1k)解答方法参见p145页例1。第六章器管理连续分配

管理方式动态分区分配四、分区分配操作2、内存回收流程内存合并空闲区当前空闲链如下:30k:10k

60k:100k

500k:200k请画出分别回收下列空闲区之后的空闲链:起始地址分区大小150k5k240k10k350k10k440k20k第六章器管理管理方式6.3连续分配6.3.4紧凑一、紧凑把多个分散的小分区拼接成大分区的方法,被称为“拼接”或“紧凑”二、动态重定位物理地址=相对地址+重定位寄存器中的地址第六章

器管理6.4

多道程序环境下的对换“对换”是指把内存中暂不能运行的进程或暂时不用的程序和数据,换出到外存上,以腾出足够的内存空间,把已具备运行条件的进程或进程所需要的程序和数据换入内存。对换的方式有两种:一、整体对换二、部分对换第六章

器管理6.4

多道程序环境下的对换一、整体对换如果对换是以整个进程为单位,便称之为“整体对换”或“进程”对换,这种对换被广泛地应用于分时系统中,其目的是用以解决内存紧张问题,并可进一步提高内存的利用率。第六章

器管理6.4

多道程序环境下的对换二、部分对换如果对换是以“页”或“段”为单位进行的,则分别称之为“页面对换”或“分段对换”,又统称为“部分对换”,这种对换方法是实现请求分页及请求分段系统的基础,其目的是为了支持虚拟存贮系统。第六章

器管理6.4

多道程序环境下的对换三、对换空间的管理对换空间指外存中可以用于存放从内存换出进程的暂存空间。对换空间的管理采用与内存的动态分区分配类似的数据结构与分配、回收算法。第六章

器管理6.4

多道程序环境下的对换四、进程的换出与换入进程的换出与换入是通过OS内核调用对换程序或唤醒对换进程来实现的进程的换出1、选择被换出的进程选择低优先权、内存驻留时间较长的进程2、换出过程对于共享程序段或数据,要先检查它们当前是否被某些其他进程需要;对换前还要申请对换空间。第六章

器管理进程的换入1、检查PCB中进程的状态,找出“就绪且换出”态的进程。2、把换出时间最长的一个进程作为换入进程。3、为换入进程申请内存空间,若申请成功,则直接换入,若内存不够,则先换出某些进程,腾出足够的空间,再将进程换入。第六章器管理6.5

基本分页

管理方式连续分配方式会形成许多碎片,虽然可通过紧凑方法将碎片拼接成可用的大块空间,但须为此付出很大开销。如果允许将一个进程直接离散地分配到许多不相邻的分区中,就不必再进行“紧凑”。为了支持虚拟内存管理,需要引入离散分配方式。根据离散分配时所使用的基本单位的不同,离散分配分为以下三种方式:1、分页2、分段3、段页式管理管理管理第六章器管理管理方式管理的基本方法基本分页分页一、基本概念1、页面:将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页。2、物理块:将内存空间分成与页相同大小的若干个块,称为物理块或页框或帧。3、分页:在为进程分配内存时,以块为单位将进程中的若干页分别装入多个可以不相邻接的块中。4、页内碎片:进程的最后一页一般装不满一块,而形成不可利用的碎片,称为“页内碎片”。0页1页逻辑地址空间物理地址空间0块1块2002块200第六章

器管理基本分页分页二、基本分页管理方式管理的基本方法管理方式中的地址结构1、地址结构中包含两部分:页号P、页内偏移量W。若用m位表示逻辑地址,页大小为2的n次幂,则用低n位表示页内偏移量w;用高m-n位表示页号P以32位地址为例:可用0~11位表示页内偏移量n=12(页内212个单元=物理块大小=4K);12-31位(20位)表示页号,共可有220个页面(1M个页)这种地址结构可以表示4G的逻辑地址空间。P(m-n)位W(n位)31 12

110计算关系:A为逻辑地址,L为页面大小,P为页号,W为页内偏移量.P=INT(A/L)W=mod(A/L)第六章

器管理管理方式管理的基本方法基本分页分页三、页表1、页表是系统为进程建立的数据结构,页表的作用是实现从页号到物理块号的地址。在进程地址空间内的所有页(0-n),依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块号。第六章器管理基本分页分页管理方式管理的基本方法三、页表中还可以包括一些存取控制字段页号块号021428……页表中还可以包括一些存取控制字段1023102410250页1页02000201页表逻辑地址空间物理地址空间0块1块02002块10231024204720482049Move

eax,(1025)第六章器管理基本分页分页管理方式管理的基本方法四、地址变换机构为了能将用户地址空间中的逻辑地址变换为内存空间中的物理地址,在系统中必须设

址变换机构,该机构的基本任务是实现逻辑地址到物理地址的转换。(一)、基本的地址变换机构第六章

器管理管理方式管理的基本方法基本分页分页(二)、地址变换过程1、进程执行,PCB块中页表起始地址和页表长度送页表寄存器。2、CPU

逻辑单元a。3、由分页地址变换机构自动将

a

分为页号和页内地址两部分4、由硬件检索机构搜索页表,得到物理块号。搜索原理:页号对应的页表项地址=页表起始地址+页表项长度*页号。(页表项中存有物理块号)。5、物理块号和页内地址送物理地址寄存器。第六章

器管理管理方式管理的基本方法基本分页分页(三)实例若页的大小为4K,则地址转换机构将逻辑地址0转换成的物理地址为___。在一个页式管理系统中,页表内容如下所示:页号物理块号0211263347例题:物理地址的计算过程1、计算页号和页内偏移p=INT[0/4096]=0w=MOD[0/4096]=02、搜索页表,查找0号页面所在的物理块;结果为23、计算物理地址物理地址=块大小*块号+页内偏移=4096*2+0=8192第六章器管理管理方式基本分页分页

管理的基本方法(四)、页面大小的选择1、在分页系统中页面的大小是由机器的体系结构所决定的,亦即由硬件决定。(如:分页单元把低12位逻辑地址解释为页内偏移地址,则页大小就是4K).2、影响页面大小设计的因素管理内存的开销:(1)页面太小,就会导致进程所需页面多,页表过长,占用大量内存空间;同时,降低页面换入换出效率。第六章

器管理基本分页分页管理方式管理的基本方法(四)、页面大小的选择内存的利用率页面小有利于提高内存的利用率,但存(1)所述缺点,页面大,可克服(1)的缺点,但页内碎片大,空间利用率降低。页面的大小、页面大小是2的幂。、一般页面大小在512个字节~4K、现在硬件可以支持多种不同的页面大小。页面大小4k

16K

2M

4M

8M

16M等等第六章器管理管理方式6.5基本分页6.5.2

快表一、

快表快表(转换后援缓冲TLB-TranslationLookasideBuffer),是为了提高CPU访存速度而采用的缓存,用来存放最近被 过的页表项。第六章器管理管理方式6.5基本分页6.5.2

快表二、快表的引入CPU存取一个数据,需两次

内存。第1次访存取物理块号、第2次取数。使计算机的处理速度降低近1/2。为了提高访存速度,引

器,存放最近使用过的页表项。第六章器管理6.5

基本分页

管理方式6.5.2地址变换机构三、引入TLB之后的地址变换过程TLB引入之后的地址变换过程第六章器管理6.5

基本分页

管理方式6.5.2地址变换机构四、引入TLB的性能分析TLB的速度为20ns,时间。若cpu

内存的速度为120ns,试比较有TLB和无TLB系统的有效假

定TLB

中率为90%1、有TLB系统的有效 时间=(120+120+20)*10%+(120+20)*90%=152ns2、无TLB系统的有效 时间=120+120=240ns第六章器管理6.5基本分页管理方式6.5.3

两级和多级页表对于很大的逻辑地址空间,使用分页,需要很大的连续空间来存放页表,为了实现页表的离散存放,引入了两级或多级页表,其好处是:1、对页表所需的内存空间,采用离散分配方式,来解决难以找到一块连续的大内存空间以及页表的离散存放的问题。2、只将当前需要的页表调入内存,其余的页表驻留在磁盘上。第六章器管理6.5

基本分页

管理方式6.5.3

两级和多级页表一、两级页表的实现方法将页表再进行分页,使每个页面的大小与内存物理块的大小相同,并为它们。将这些页表页面分别放入不同的,不一定相邻的物理块中,为离散分配的页表再建立一张页表,称为外层页表,在外层页表中的每个表项中记录了页表页面的物理块号。第六章器管理6.5

基本分页

管理方式6.5.3

两级和多级页表二、两级页表的寻址外层页号外层页内地址页内地址P1P2d两级页表的逻辑地址结构1、对于给定的逻辑地址A,由外部页号p1,从外层页表中找到页表分页所在的物理块号。2、由外层页内地址p2,从分页页表中找到进程页所在的物理块号。3、由A所在的进程页的物理块号+页内地址得到A的物理地址。6.5

基本分页

管理方式6.5.3

两级和多级页表如何根据逻辑地址得到p1,p2,w?1、32位线性逻辑地址的最高10位被硬件解释为p1,中间10位被硬件解释为p2,低12位解释为页内偏移;2、若逻辑地址为A,页大小为L,页表长度为N(每个页表中存放的页表项数)P1=INT[INT[A/L]/N]P2=mod[INT[A/L]/N]W=mod[A/L]第六章器管理第六章

器管理6.5

基本分页

管理方式6.5.3

两级和多级页表三、减少页表占用内存的方法将当前所需要的页表和外层页表放在内存中,其余页表放在外存,当所需页表不在内存时,产生一中断,将请求的页表调入内存。四、多级页表结构对于64位的机器,使用二级页表,仍存在连续占用大量内存的问题,可以采用多级页表结构,将外层页表再分若干页。第六章

器管理管理方式6.5基本分页6.5.4反置页表一、反置页表用反置页表,为每一个物理块设一个表项,表项中放进程号和页号,系统只一张反置页表。由于物理空间小于逻辑空间,所以使用反置页表减少了页表占用的内存空间。第六章器管理管理方式6.5基本分页6.5.4反置页表二、反置页表的寻址逻辑地址=进程号+页号+页内偏移地址寻址过程:根据进程号和页号找到物理块号物理地址=物理块首址+页内偏移地址进程号页号物理块号………第六章器管理分段

管理分段机制的引入引入分段

管理的好处:1、

方便编程2、

分段共享3、

分段保护4、

动态5、

动态增长第六章器管理6.6

分段

管理6.6.2分段系统的基本原理一、分段作业的地址空间被划分成若干个段,每个段定义了一组逻辑信息,每个段的大小由相应的逻辑信息组的长度确定,段的大小不一样,每段的逻辑地址从0开始。第六章器管理6.6

分段

管理6.6.2分段系统的基本原理二、分段的逻辑地址结构段号段的逻辑地址段内偏移地址第六章器管理6.6分段

管理6.6.2分段系统的基本原理三、段表1、系统为每个段分配

续区,各个段可以离散地放入内存不同的分区。2、系统为每个进程建立一张段

表,段 表的每—个表项记录信息;段号、段长、该段的基址。第六章器管理6.6

分段

管理6.6.2分段系统的基本原理三、段表段号段长基址030k40k120k80k215k120k(main)=030k(x)=120k(D)=215k040k80k120k段表始址段表长度>01k

6k16004k2500

8k++82928k82928692段号 段长 基址2100越界段号位移量w四、分段系统的地址变换机构第六章器管理6.6

分段

管理6.6.2分段系统的基本原理五、分页和分段的主要区别1、页是按物理单位划分的,段是按逻辑单位划分的。2、页的大小是固定的,段的大小不固定,决定于用户编写的程序和编译器。3、分页的地址空间是一维的,分段的地址空间是二维的。第六章器管理6.6

分段

管理6.6.2分段系统的基本原理六、信息共享多个进程可能共享程序和数据,基本分段管管理方式下共享的实现是不同理方式与基本分页的。(一)、分页共享每个进程为共享的程序和数据设页表项,不同进程共享页的页表项指向相同的物理块,共享程序和数据在内存中只留一个副本。(二)、分段共享每个进程中,为每个共享段设一段表项,段表中共享段的物理地址相同。第六章器管理6.6分段管理6.6.3段页式为了使管理方式系统既具有分段系统便

现、分段可共享、易于保护、可动态等一系列优点;又能象分页系统那样很好地解决内存的外部碎片问题,以及为各个分段可离散地分配内存等问题,引入了“段页式系统”。第六章器管理6.6分段

管理6.6.3段页式

管理方式一、基本原理将用户进程空间先划分成若干个段,每个段划分成若干个页,每个进程有一个段表,每个段都有一个页表。地址结构由段号、段内页号和页内地址三部分组成。每一段表项存放某个段的页表始址和页表长度。段页式第六章器管理管理方式6.6分段

管理6.6.3段页式二、地址变换过程1、利用段号,找到某段的段表项,得到该段页表的首地址。2、利用段内页号和由1得到的页表始址得到页表项。3、由页表项得到页所在的物理块号。4、物理块号与页内地址得到某逻辑地址的物理地址。段页式地程6.7

80X86常规内存寻址6.7.1内存地址1、逻辑地址:逻辑地址(logical

address)包含在机器语言指令中用来指定一个操作数或一

条指令的地址。这种寻址方式在80x86著名的分段结构中表现得尤为具体,它促使MS-DOS

或Windows程序

员把程序分成若干段。每一个逻辑地址都由一个段(segment)和偏移量(offset或displacement)组成,偏移量指明了从段开始的地方到实际地址之间的距离。6.7

80X86常规内存寻址2、线性地址(linear

address)(也称虚拟地址virtual

address)是一个32位无符号整数,可以用来表示高达4GB的地址,也就是,高达4

294

967

296个器单元。线性地址通常用16进制数字表示,值的范围从0x00000000

到0xffffffff。6.7

80X86常规内存寻址3、物理地址(physical

address)用于

级处理器的地址引脚发送到器单元寻址。它们与从微器总线上的电信号相对应。物理地址由32位或36位无符号整数表示。6.7

80X86常规内存寻址6.7.2硬件中的分段1、段选择符和段寄存器段选择符(segment

selector

):是一个16位长的段标识符。段寄存器:用来存放段选择符。13位描述符索引index1位TI2位RPL段选择符6.7

80X86常规内存寻址段选择符字段字段名index描述指定了放在GDT或LDT中的相应段描述符的。TI((Table

Indicator)标志指明段描述符是在GDT中(TI=0)或在LDT(TI=1)。TIRPL

请求者

级:当相应的段选择符装入到cs寄存器中时指示出CPU当前的 级;6.7

80X86常规内存寻址6.7.2硬件中的分段2、段描述符每个段都由一个8字节的段描述符(SegmentDescriptor)来描述段的特征。段描述符放在全局描述符表(Global

Descriptor

Table,GDT)或局部描述符表(Local

Descriptor

Table

,LDT)中。GDT的线性基址存放在gdtr寄存器中,当前正被使用的LDT线性基址放在ldtr处理器寄存器中。段描述符字段Limit字段名 描述Base

包含段的起始地址G

粒度标志G。如果该位清为0,段大小以字节为单位,否则以4096字节的倍数计。20位的Limit字段,指定了以字节为单位的段长度。如果G被置为0,则一个非空段 的大小在1个字节到1MB之间变化;否则,将在4KB到4GB之间变化。系统标志S,如果它被清0,则这是一个系统段, 内核数据结构,否则它是一S个普通的代码段或数据段。4位Type字段,描述了段的类型特征和它的存取权限。TypeDPL描述符 级字段:用于限制对这个段的存取。它表示为这个段而要求的CPU最小的优先级。因此,DPL设为0的段只能当CPL为0时(即在内核态)才是可 的,而DPL设为3的段对任何CPL值都是可 的。Segment-Present标志:等于0表示段当前不在主存中。Linux总是把这个标志(47位)设为1,因为它从来不把整个段交换到磁盘上去。PD或B

称为D或B的标志,取决于是代码段还是数据段。D或B的含义在两种情况下稍微有所区别,但是如果段偏移量的地址是32位长,就基本上把它置为1,如果这个偏移量是16位长,它被清0

。AVL标志可以由操作系统使用,但是被Linux忽略。6.7

80X86常规内存寻址6.7.2硬件中的分段3、快速

段描述符为了加速逻辑地址到线性地址的转换,80x86处理器提供一种附加的非编程的寄存器,供6个可编程的段寄存器使用。每一个非编程的寄存器含有8个字节的段描述符,由相应的段寄存器中的段选择符来指定。每当一个段选择符被装入段寄存器时,相应的段描述符就由内存装入到对应的非编程CPU寄存器。从那时起,针对那个段的逻辑地址转换就可以不 主存中的GDT或LDT,处理器只需直接 存放段描述符的CPU寄存器即可

。6.7

80X86常规内存寻址6.7.2硬件中的分段4、由段选择符获得一个段描述符由于一个段描述符是8字节长,它在GDT或LDT内的相对地址是由段选择符的最高13位的值乘以8得到的。例如:如果GDT在0x00020000(这个值保存在

gdtr寄存器中),且由段选择符所指定的索引号为2,那么相应的段描述符地址是0x00020000+(2

×8),或0x00020010。(注意:这个计算得到的地址是一个段描述符的线性地址,不是物理地址,线性地址经过分页单元的转换可以得到物理地址)6.7

80X86常规内存寻址6.7.2硬件中的分段5、分段单元如何把逻辑地址转化为线性地址?先检查段选择符的TI字段,以决定段描述符保存在哪一个描述符表中。TI字段指明描述符是在GDT中(在这种情况下,分段单元从gdtr寄存器中得到GDT的线性

址)还是在激活的LDT中(在这种情况下,分段单元从ldtr寄存器中得到

LDT的线性 址)。从段选择符的index字段计算段描述符的地址,index字段的值乘以8(一个段描述符的大小),这个结果与gdtr或ldtr寄存器中的内容相加。把逻辑地址的偏移量与段描述符Base字段的值相加就得到了线性地址。(这个线性地址由分页单元转换得到物理地址)6.7

80X86常规内存寻址6.7.3

Linux中的分段运行在用户态的所有Linux进程都使用一对相同的段来对指令和数据寻址。这两个段就是所谓的用户代码段和用户数据段。类似地,运行在内核态的所有

Linux进程都使用一对相同的段对指令和数据寻址:它们分别叫做内核代码段和内核数据段。6.7

80X86常规内存寻址6.7.3

Linux中的分段1、四个主要的Linux段的段描述符字段的值段BaseGLimitSTypeDPLD/BP用户代码段0x0000000010xfffff11311用户数据段0x0000000010xfffff12311内核代码段0x0000000010xfffff110011内核数据段0x0000000010xfffff120116.7

80X86常规内存寻址6.7.3

Linux中的分段

2、Linux分段的特点:上述四个段相应的段描述符由宏_

_USER_CS,__USER_DS,_

_KERNEL_CS,和_

_KERNEL_DS分别指定。例如,为了对内核代码段寻址,内核只需要把这个宏产生的值装进cs段寄存器即可。与段相关的线性地址从0开始,达到4G-1的寻址限长。这就意味着在用户态和内核态下的所有程序可以使用相同的逻辑地址。所有段都从0x00000000开始,这可以得出另一个重要结论,那就是在Linux下逻辑地址与线性地址是一致的,即逻辑地址的偏移量字段的值与相应的线性地址的值总是一致的。6.7

80X86常规内存寻址6.7.3

Linux中的分段3、Linux的全局描述符表在单处理器系统中只有一个GDT,而在多处理器系统中每个CPU对应一个GDT。每个GDT包含18个段描述符和14个空的,未使用的,或保留的项。每一个

GDT中包含的18个段描述符指向下列的段:每一个GDT中包含的18个段描述符指向下列的段:用户和内核态下的代码和数据段共四个任务状态段(TSS),每个处理器有一个一个包括缺省局部描述符表的段三个局部线程

段与高级电源管理(AMP)相关的三个段与支持即插即用功能的BIOS服务程序相关的5个段被内核用来处理“双重错误”(处理一个异常时可能会另一个异常。在这种情况下产生双重错误)异常的特殊TSS段6.7

80X86常规内存寻址6.7.4

硬件中的分页1、常规分页从80386起,In处理器的分页单元处理4KB的页。32位的线性地址被分成3个字段:(Directory)最高10位中间10位最低12位页表(Table)偏移量(Offset)6.7

80X86常规内存寻址6.7.4

硬件中的分页三个字段的含义正在使用的页的物理地址存放在控制寄存器CR3中。线性地址内的Directory字段(相当于二级页表中的p1)决定页 中的 项,而 项指向适当的页表。地址的Table字段(相当于二级页表中的p2)依次又决定页表中的表项,而表项含有页所在页框的物理地址。Offset字段决定页框内的相对位置(见图2-7)。由于它是一个12位

温馨提示

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

评论

0/150

提交评论