原创 在保护模式下,控制寄存器CR0中的最高位PG位控制分页管理机制是否生效。如果PG=1,分页机制生效,

2008-12-14 22:28 2940 0 分类: MCU/ 嵌入式
在保护模式下,控制寄存器CR0中的最高位PG位控制分页管理机制是否生效。如果PG=1,分页机制生效,把线性地址转换为物理地址。如果
PG=0,分页机制无效,线性地址就直接作为物理地址。必须注意,只有在保护方式下分页机制才可能生效。只有在保证使PE位为1的前提下,才能够使PG位
为1,否则将引起通用保护故障。 
    分页机制把线性地址空间和物理地址空间分别划分为大小相同的块。这样的块称之为。通过在线性地址空间的页与物理地址空间的页之间建立的映射,分页机制实现线性地址到物理地址的转换。线性地址空间的页与物理地址空间的页之间的映射可根据需要而确定,可根据需要而改变。线性地址空间的任何一页,可以映射为物理地址空间中的任何一页。 
    采用分页管理机制实现线性地址到物理地址转换映射的主要目的是便于实现虚拟存储器。不象段的大小可变,页的大小是相等并固定的。根据程序的逻辑划分段,而根据实现虚拟存储器的方便划分页。 
    在
80386中,页的大小固定为4K字节,每一页的边界地址必须是4K的倍数。因此,4G大小的地址空间被划分为1M个页,页的开始地址具有
“XXXXX000H”的形式。为此,我们把页开始地址的高20位XXXXXH称为页码。线性地址空间页的页码也就是页开始边界线性地址的高20位;物理
地址空间页的页码也就是页开始边界物理地址的高20位。可见,页码左移12位就是页的开始地址,所以页码规定了页。 
    由于页的大小固
定为4K字节,且页的边界是4K的倍数,所以在把32位线性地址转换成32位物理地址的过程中,低12位地址保持不变。也就是说,线性地址的低12位就是
物理地址的低12位。假设分页机制采用的转换映射把线性地址空间的XXXXXH页映射到物理地址空间的YYYYYH页,那么线性地址XXXXXxxxH被
转换为YYYYYxxxH。因此,线性地址到物理地址的转换要解决的是线性地址空间的页到物理地址空间的页的映射,也就是线性地址高20位到物理地址高
20位的转换

 


‘===============


    80386开始支持存储器分页管理机制。分页机制是存储器管理机制的第3二部分。段管理机制实现
虚拟地址(由段和偏移构成的逻辑地址)到线性地址的转换,分页管理机制实现线性地址到物理地
址的转换。如果不启用分页管理机制,那么线性地址就是物理地址。本文将介绍80386的存储器分 页管理机制和线性地址如何转换为物理地址。

<一>存储器分页管理机制


    在保护模式下,控制寄存器CR0中的最高位PG位控制分页管理机制是否生效。如果PG=1,分页机制
生效,把线性地址转换为物理地址。如果PG=0,分页机制无效,线性地址就直接作为物理地址。
必须注意,只有在保护方式下分页机制才可能生效。只有在保证使PE位为1的前提下,才能够使PG位 为1,否则将引起通用保护故障。

    分页机制把线性地址空间和物理地址空间分别划分为大小相同的块。这样的块称之为页。通过在
线性地址空间的页与物理地址空间的页之间建立的映射,分页机制实现线性地址到物理地址的转
换。线性地址空间的页与物理地址空间的页之间的映射可根据需要而确定,可根据需要而改变。
线性地址空间的任何一页,可以映射为物理地址空间中的任何一页。

    采用分页管理机制实现线性地址到物理地址转换映射的主要目的是便于实现虚拟存储器。不象段 的大小可变,页的大小是相等并固定的。根据程序的逻辑划分段,而根据实现虚拟存储器的方便 划分页。

    在80386中,页的大小固定为4K字节,每一页的边界地址必须是4K的倍数。因此,4G大小的地址
空间被划分为1M个页,页的开始地址具有“XXXXX000H”的形式。为此,我们把页开始地址的
高20位XXXXXH称为页码。线性地址空间页的页码也就是页开始边界线性地址的高20位;物理地址
空间页的页码也就是页开始边界物理地址的高20位。可见,页码左移12位就是页的开始地址,所 以页码规定了页。

    由于页的大小固定为4K字节,且页的边界是4K的倍数,所以在把32位线性地址转换成32位物理地
址的过程中,低12位地址保持不变。也就是说,线性地址的低12位就是物理地址的低12位。假设
分页机制采用的转换映射把线性地址空间的XXXXXH页映射到物理地址空间的YYYYYH页,那么线性
地址XXXXXxxxH被转换为YYYYYxxxH。因此,线性地址到物理地址的转换要解决的是线性地址空间
的页到物理地址空间的页的映射,也就是线性地址高20位到物理地址高20位的转换。

<二>线性地址到物理地址的转换


1.映射表结构


    线性地址空间的页到物理地址空间的页之间的映射用表来描述。由于4G的地址空间划分为1M个页,
因此,如果用一张表来描述这种映射,那么该映射表就要有1M个表项,若每个表项占用4个字节,
那么该映射表就要占用4M字节。为避免映射表占用如此巨大的存储器资源,所以80386把页映射表 分为两级。

    页映射表的第一级称为页目录表,存储在一个4K字节的物理页中。页目录表共有1K个表项,其中,
每个表项为4字节长,包含对应第二级表所在物理地址空间页的页码。页映射表的第二级称为页
表,每张页表也安排在一个4K字节的页中。每张页表都有1K个表项,每个表项为4字节长,包含对
应物理地址空间页的页码。由于页目录表和页表均由1K个表项组成,所以使用10位的索引就能指
定表项,即用10位的索引值乘以4加基地址就得到了表项的物理地址。

    下图显示了由页目录表和页表构成的页映射表结构。从图中可见,控制寄存器CR3指定页目录表;
页目录表可以指定1K个页表,这些页表可以分散存放在任意的物理页中,而不需要连续存放;每
张页表可以指定1K个物理地址空间的页,这些物理地址空间的页可以任意地分散在物理地址空间
中。需要注意的是,存储页目录表和页表的基地址是对齐在4K字节边界上的。

200586102729857.gif

2.表项格式


    页目录表和页表中的表项都采用如下图所示的格式。从图中可见,最高20位(位12—位31)包含物
理地址空间页的页码,也就是物理地址的高20位。低12位包含页的属性。下图所示的属性中内容
为0的位是Intel公司为80486等处理器所保留的位,在为80386编程使
用到它们时必须设置为0。 在位9至位11的AVL字段供软件使用。表项的最低位是存在属性位,记作P。P位表示该表项是否有
效。P=1表项有效;P=0表项无效,此时表项中的其余各位均可供软件使用,80386不解释P=0的表
项中的任何其它的位。在通过页目录表和页表进行的线性地址到物理地址的转换过程中,无论在
页目录表还是在页表中遇到无效表项,都会引起页故障。其它属性位的作用在下文中介绍。



页目录表或页
表的表项格式
BIT31—BIT12 BIT11—BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
物理页码AVL00DA00U/SR/WP


3.线性地址到物理地址的转换


    分页管理机制通过上述页目录表和页表实现32位线性地址到32位物理地址的转换。控制寄存器CR3的
高20位作为页目录表所在物理页的页码。首先把线性地址的最高10位(即位22至位31)作为页目录表
的索引,对应表项所包含的页码指定页表;然后,再把线性地址的中间10位(即位12至位21)作为所
指定的页目录表中的页表项的索引,对应表项所包含的页码指定物理地址空间中的一页;最后,把
所指定的物理页的页码作为高20位,把线性地址的低12位不加改变地作为32位物理地址的低12位。

    为了避免在每次存储器访问时都要访问内存中的页表,以便提高访问内存的速度,80386处理器的
硬件把最近使用的线性—物理地址转换函数存储在处理器内部的页转换高速缓存中。在访问存储器
页表之前总是先查阅高速缓存,仅当必须的转换不在高速缓存中时,才访问存储器中的两级页表。 页转换高速缓存也称为页转换查找缓存,记为TLB。

    在分页机制转换高速缓存中的数据与页表中数据
相关性,不是由80386处理器进行维护的,而必须 由操作系统软件保存,也就是说,处理器不知道软件什么时候会修改页表,在一个合理的系统中,
页表只能由操作系统修改,操作系统可以直接地在软件修改页表后通过刷新高速缓存来保证相关性。
高速缓存的刷新通过装入处理器控制寄存器CR3完成,实际过程可能用如下的两条指令实现:
         


    一个重要的修改页表项的特殊情况不需要对页转换高速缓存刷新,这种情况是指修改不存在表项的
任一部分,即使P位本身从P=0改变为P=1时也一样,因为无效的表项不会存入高速缓存。因此,当
无效的表项被改变时,不需要刷新高速缓存。这表明在从磁盘上读入一页使其存在时,不必刷新高 速缓存。

    在一个多处理器系统中,必须特别注意是否在一个处理器中执行的程序,会改变可能由另外的处理
器同时访问的页表。在80386处理器中,每当要更新页表项并设置D位和A位时,通过使用不可分的
读/修改/写周期支持多处理器的配置。对于页表项的软件更新需要借助于使用LOCK前缀,从而保证
修改页表的指令工作在不可分的读/修改/写周期中。在改变一个可能由另外的处理器使用的页表之
前,最好使用一条加锁的AND指令在一个不可分的操作中将P位清除为0,然后,该表项可根据要求进
行修改,并随后把P位置成1而使表项成为可用。当修改页表项时必须及时通知(通常使用中断方式)系
统中该表项已被高速缓存的所有处理器刷新各自的页转换高速缓存,以撤消该表项的旧拷贝。在表
项的旧拷贝被刷新之前,各处理器仍可继续访问旧的页,并可以设置正被修改的表项的D位。如果这
样做引起表项修改失败,则分页机制高速缓存最好在标记为不存在之后,并在对表项进行另外的修 改之前进行刷新。

4.不存在的页表


    采用上述页映射表结构,存储全部1K张页表需要4M字节,此外还需要4K字节用于存储页目录表。这
样的两级页映射表似乎反而比单一的整张页映射表多占用4K字节。其实不然,事实上不需要在内存
中存储完整的两级页映射表。两级页映射表结构中对于线性地址空间中不存在的或未使用的部分不
必分配页表。除必须给页目录表分配物理页外,仅当在需要时才给页表分配物理页,于是页映射表
的大小就对应于实际使用的线性地址空间大小。因为任何一个实际运行的程序使用的线性地址空间
都远小于4G字节,所以用于分配给页表的物理页也远小于4M字节。

    页目录表项中的存在位P表明对应页表是否有效。如果P=1,表明对应页表有效,可利用它进行地址
转换;如果P=0,表明对应页表无效。如果试图通过无效的页表进行线性地址到物理地址的转换,那
么将引起页故障。因此,页目录表项中的属性位P使得操作系统只需给覆盖实际使用的线性地址范围 的页表分配物理页。

    页目录表项中的属性位P页可用于把页表存储在虚拟存储器中。当发生由于所需页表无效而引起的页
故障时,页故障处理程序再申请物理页,从磁盘上把对应的页表读入,并把对应页目录表项中的P位
置1。换言之,可以当需要时才为所要的页表分配物理页。这样页表占用的物理页数量可降到最小。

5.页的共享


    由上述页映射表结构可见,分页机制没有全局页和局部页的规定。每一个任务可使用自己的页映射 表独立地实现线性地址到物理地址的转换。但是,如果使每一个任务所用的页映射表具有部分相同 的映射,那么也就可以实现部分页的共享。

    常用的实现页共享的方法是线性地址空间的共享,也就是不同任务的部分相同的线性地址空间
的映射信息相同,具体表现为部分页表相同或页表内的部分表项的页码相同。例如,如果任务A和
任务B分别使用的页目录表A和页目录表B内的第0项中的页码相同,也就是页表0相同,那么任务A和
任务B的00000000H至003FFFFFH线性地址空间就映射到相同的物理页。再如,任务A和任务B使用的
页表0不同,但这两张页表内第0至第0FFH项的页码对应相同,那么任务A和任
务B的00000000H至000FFFFFH线性地址空间就映射到相同的物理页。

需要注意的是,共享的页表最好由两个页目录中同样的目录项所指定。这一点很重要,因为它保证 了在两个任务中同样的线性地址范围将映射到该全局区域。

<三>页级保护和虚拟存储器支持


1.页级保护


    80386不仅提供段级保护,也提供页级保护。分页机制只区分两种特权级。特权级0、1和2统称为系 统特权级,特权级3称为用户特权级。在上图所示页目录表和页表的表项中的保护属性位R/W和U/S就 是用于对页进行保护。

    表项的位1是读写属性位,记作R/W。R/W位指示该表项所指定的页是否可读、写或执行。若R/W=1,
对表项所指定的页可进行读、写或执行;若R/W=0,对表项所指定的页可读或执行,但不能对该指
定的页写入。但是,R/W位对页的写保护只在处理器处于用户特权级时发挥作用;当处理器处于系 统特权级时,R/W位被忽略,即总可以读、写或执行。

    表项的位2是用户/系统属性位,记作U/S。U/S位指示该表项所指定的页是否是用户级页。若U/S=1,
表项所指定的页是用户级页,可由任何特权级下执行的程序访问;如果U/S=0,表项所指定的页是
系统级页,只能由系统特权级下执行的程序访问。下表列出了上述属性位R/W和U/S所确定的页级保
护下,用户级程序和系统级程序分别具有的对用户级页和系统级页进行操作的权限。



页级
保护
属性
U/SR/W用户级访问权限系统级访问权限
00读/写/执行
01读/写/执行
10读/执行读/写/执行
11读/写/执行读/写/执行


    由上表可见,用户级页可以规定为只允许读/执行或规定为读/写/执行。系统级页对于系统级
程序总是可读/写/执行,而对用户级程序总是不可访问的。于分段机制一样,外层用户级执行
的程序只能访问用户级的页,而内层系统级执行的程序,既可访问系统级页,也可访问用户级
页。与分段机制不同的是,在内层系统级执行的程序,对任何页都有读/写/执行访问权,即使
规定为只允许读/执行的用户页,内层系统级程序也对该页有写访问权。

    页目录表项中的保护属性位R/W和U/S对由该表项指定页表所指定的全部1K各页起到保护作用。
所以,对页访问时引用的保护属性位R/W和U/S的值是组合计算页目录表项和页表项中的保护属
性位的值所得。下表列出了组合计算前后的保护属性位的值,组合计算是“与”操作。



组合页的
保护>属性
目录表项U/S页表项U/S组合U/S目录表项R/W页表项R/W组合R/W
000000
010010
100100
111111


    正如在80386地址转换机制中分页机制在分段机制之后起作用一样,由分页机制支持的页级保护
也在由分段机制支持的段级保护之后起作用。先测试有关的段级保护,如果启用分页机制,那
么在检查通过后,再测试页级保护。如果段的类型为读/写,而页规定为只允许读/执行,那么
不允许写;如果段的类型为只读/执行,那么不论页保护如何,也不允许写。

    页级保护的检查是在线性地址转换为物理地址的过程中进行的,如果违反页保护属性的规定,对 页进行访问(读/写/执行),那么将引起页异常。

2.对虚拟存储器的支持


    页表项中的P位是支持采用分页机制虚拟存储器的关键。P=1,表示表项指定的页存在于物理存储
器中,并且表项的高20位是物理页的页码;P=0,表示该线性地址空间中的页所对应的物理地址
空中的页不在物理存储器中。如果程序访问不存在的页,会引起页异常,这样操作系统可把该不
存在的页从磁盘上读入,把所在物理页的页码填入对应表项并把表项中的P位置为1,然后使引起 异常的程序恢复运行。

    此外,表项中的访问位A和写标志位D也用于支持有效地实现虚拟存储器。

    表项的位5是访问属性位,记作A。在为了访问某存储单元而进行线性地址到物理地址的转换过程
中,处理器总是把页目录表内的对应表项和其所指定页表内的对应表项中的A位置1,除非页表或
页不存在,或者访问违反保护属性规定。所以,A=1表示已访问过对应的物理页。处理器永不清
除A位。通过周期性地检测及清除A位,操作系统就可确定哪些页在最近一段时间未被访问过。当
存储器资源紧缺时,这些最近未被访问的页很可能就被选择出来,将它们从内存换出到磁盘上去。

    表项的位6是写标志位,记作D。在为了访问某存储单元而进行线性地址到物理地址的转换过程中,
如果是写访问并且可以写访问,处理器就把页表内对应表项中的D位置1,但并不把页目录表内对
应表项中的D置1。当某页从磁盘上读入内存时,页表中对应对应表项的D位被清0。所以,D=1表示
已写过对应的物理页。当某页需要从内存换出到磁盘上时,如果该页的D位为1,那么必须进行写
操作(把内存中的页写入磁盘时,处理器并不清除对应页表项的D位)。但是,如果要写到磁盘上的
页的D位为0,那么不需要实际的磁盘写操作,而只要简单地放弃内存中该页即可。因为内存中的 页与磁盘中的页具有完全相同的内容。

<四>页异常


    启用分页机制后,线性地址不再直接等于物理地址,线性地址要经过分页机制转换才成为物理地 址。在转换过程中,如果出现下列情况之一就会引起页异常:

    (1)涉及的页目录表内的表项或页表内的表项中的P=0,即涉及到页不在内存;

    (2)发现试图违反页保护属性的规定而对页进行访问。

    报告页异常的中断向量号是14(0EH)。页异常属于故障类异常。在进入故障处理程序时,保存的指 令指针CS及EIP指向发生故障的指令。一旦引起页故障的原因被排除后,即可从页故障处理程序通 过一条IRET指令,直接地重新执行产生故障的指令。

    当页故障发生时,处理器把引起页故障的线性地址装入CR2。页故障处理程序可以利用该线性地址 确定对应的页目录项和页表项。

页故障还在堆栈中提供一个出错码,出错码的格式如下图所示。其中,U位表示引起故障程序
的特权级,U=1表示用户特权级(特权级3),U=0表示系统特权级(特权级0、1或2);W位表示访
问类型,W=0表示读/执行,W=1表示写;P位表示异常类型,P=0表示页不存在故障,P=1表示 保护故障。页故障的响应处理模式同其它故障一样。



出错码
的格式
BIT15—BIT3BIT2BIT1BIT0
未使用UWP


<五>演示分页机制的实例(实例十)


    下面给出一个演示如何启用分页管理机制的实例。该实例的逻辑功能是,在屏幕上显示一条表示 已启用分页管理机制的提示信息。该实例演示内容包括:初始化页目录表和部分页表;启用分页 管理机制;关闭分页管理机制等。该实例假设系统至少有4M字节物理内存。

1.演示步骤和源程序清单


    为了简单化,实例只有一个任务,并且没有局部描述符表和中断描述符表,不允许中断,也不考 虑发生异常,甚至没有使用堆栈。实例执行步骤如下:

    (1)在实模式下为进入保护模式作初始化;

    (2)切换到保护模式后进入临时代码段,把部分演示代码传送到预定的内存,然后转演示代 码段;

    (3)建立页目录表;

    (4)建立页表;

    (5)启用分页管理机制;

    (6)演示在分页管理机制启用后的程序执行和数据存取;

    (7)关闭分页管理机制;

    (8)退出保护模式,结束。

实例十源程序清单如下:





386SCD.INC

PDT_AD
PT0_AD
PT1_AD
PhVB_AD
LoVB_AD
MPVB_AD
PhSC_AD
LoSC_AD

GDTSeg


GDT

DUMMY Desc

Normal Desc ATDW
Normal_Sel NormalGDT

PDT Desc PDT_AD PDT_AD ATDW
PDT_Sel PDTGDT

PT0 Desc PT0_AD PT0_AD ATDW
PT0_Sel PT0GDT

PT1 Desc PT1_AD PT1_AD ATDW
PT1_Sel PT1GDT

LoVideo Desc LoVB_AD LoVB_AD ATDW
LoVideo_Sel LoVideoGDT

LoCode Desc SCodeLenLoSC_AD LoSC_AD ATCE
LoCode_Sel LoCodeGDT

TPSCode Desc SCodeLenPhSC_AD PhSC_AD ATDW
TPSCode_Sel TPSCodeGDT


EFFGDT

TempCode Desc TempCodeSegATCE
TempCode_Sel TempCodeGDT

DemoCode Desc DemoCodeLenDemoCodeSegATCE
DemoCode_Sel DemoCodeGDT

DemoData Desc DemoDataLenDemoDataSegATDW
DemoData_Sel DemoDataGDT

SCode Desc SCodeLenSCodeSegATDR
SCode_Sel SCodeGDT

GDTLen GDT
GDNum EFFGDT Desc

GDTSeg



SCodeSeg
:SCodeSeg:DemoDataSeg

SBegin
LoVideo_Sel



MessLen


S1
DemoCode_SelDemo3
SBegin

MLen SBegin
SCodeLen
SCodeSeg

DemoDataSeg
Mess
MessLen Mess
DemoDataLen
DemoDataSeg

DemoCodeSeg
:DemoCodeSeg

DemoBegin
PDT_Sel





:PT0_AD USURWWPL
:PT1_AD USURWWPL
PT0_Sel




USURWWPL


Demo1
PhVB_AD
:MPVB_ADUSSRWWPL
LoVB_AD
:PhVB_ADUSURWRPL
PT1_Sel






Demo2
LoSC_AD
:PhSC_ADUSURWRPL
PDT_AD




PageE
DemoData_Sel

Mess
LoCode_SelSBegin



PageD
Normal_Sel
TempCode_SelToDOS
DemoBegin

DemoCodeLen
DemoCodeSeg

TempCodeSeg
:TempCodeSeg

Virtual

SCode_Sel

TPSCode_Sel

SBegin

MLen
movsb
DemoCode_SelDemoBegin





Real Real
Virtual

TempCodeSeg

RCodeSeg
:RCodeSeg:RCodeSeg

VGDTR PDesc GDTLen

Start



InitGDT

VGDTR




TempCode_Sel Virtual




Start

InitGDT

GDTSeg

GDNum
EFFGDT
BaseL



BaseL
BaseM
BaseH
Desc
InitG


GDTSeg

VGDTRBase
VGDTRBase

InitGDT

RCodeSeg
Start

2.关于实例十的说明


    上述演示程序的许多内容与其它实例相同,下面仅就演示分页管理机制方面的内容作些说明:

(1)部分演示代码的移动


    为了充分说明分页机制所实现的线性地址到物理地址的转换,在初始化时把部分演示代码移动
到预定的内存区域。预定的内存区域从00303000H开始,即页码为00303H的物理页。该部分演示
代码的功能是显示指定的字符串。在进入保护模式后做此初始化工作的原因是预定的内存区域 在扩展内存中,注意初始化时还没有启用分页机制。

(2)页映射表的初始化


    页目录表安排在页码为00200H的物理页中,页表0安排在页码为00202H的物理页中,页表1安排
在页码为00201H的物理页中。演示程序涉及的线性地址空间不超过007FFFFFH,所以只使用两张
页表,为此页目录表中的其它项被置为无效(P=0)。

    页表0把线性地址空间中的00000000H—003FFFFFH映射到物理地址空间中。实例在初始化页
表0时,使该线性地址空间直接映射到相同地址的物理地址空间,除线性地址空间中页码
为000B8H和000F0H这两页以外。000B8H页被映射到页码为00301H的物理页,而000F0H页被映射
到页码为000B8H的物理页。

    页表1把线性地址空间中的00400000H—007FFFFFH映射到物理地址空间中。实例在初始化页
表1时,似乎使该线性地址空间直接映射到相同地址的物理地址空间,但是处理对应线性地址空
间中00402H的表项被另外设置外,其它表项中的P位为0,也即表示对应物理页不存在。初始化
后,页表1的第2项把线性地址空间中的00402H页映射到页码为00303H的物理页,也就是存放部 分演示代码的指定内存区域。

(3)启动分页管理机制


    在建立好页映射表后,启用分页机制所要做的操作是简单的,只要把控制寄存器CR0中的最高 位,也就是PG位置1。具体指令如下:
             


PageE
...

    在启用分页机制前,线性地址就是物理地址;在启用分页机制后,线性地址要通过分页机制
的转换,才成为物理地址。尽管使用一条转移指令,可清除预取队列,但随后在取指令时使
用的线性地址就要经过分页机制转换才成为物理地址。为了顺利过渡,在启用分页机制之后
的过渡代码段,仍要维持线性地址等同于物理地址。为了作到这一点,在建立也映射表时,
必须使实现过渡的代码所在的线性地址空间页映射到具有相同地址的物理地址空间页。实例 中页表0就做到了这一点。

(4)关闭分页管理机制


    只要把控制寄存器CR0中的PG位清0,便关闭了分页机制。在这一过渡阶段,也要保持地址转 换前后的一致。

(5)地址转换的演示


    在启用分页机制之后,就转移到位于线性地址空间中00402000H处开始的代码,该部分代码的 功能是显示提示信息"Page is OK!"。实际上这部分代码存放在从物理地址00303000H开始的 物理内存区域中,是在初始化时被移到此区域的。

    在显示提示信息时,要把显示的ASCII字符和显示属性填到线性地址空间中000F0000H开始的
区域中,而不是000B8000H开始的区域。从初始化时建立的映射表可见,线性地址空间中
的000F0H页,被映射到物理地址空间中的000B8H页。所以,向线性地址空间中的000F0H页
写,实际上是向物理地址空间中的000B8H页写,也就是真正显示。

(6)页级保护的说明


    在进入保护模式之后,特权级一直是0,所以,无论系统级和用户级页,无论只能读/执行, 还是读/执行/写,总是可进行各种形式的访问。
广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
diablo77521_574237640 2010-07-03 12:12
关于伺服控制板模块检查及其他
1.粗略检查SPM的好坏IGBT的C/E脚有二极管保护,万用表打在二极管档位,检查压降是否为0.5V左右。2.再不上主电路时,为不使编码器报警,可以从开关电源取5V,经过2K左右电阻接电压采样点...
diablo77521_574237640 2010-06-30 22:39
关于200W修理和老化测试心得
1.EMC实验室的电流百分比和制动百分比:300V直流电可以直接利用,每个相电压平均有效值/电机额定值=85% ;Fb-00置3000转,Fb-05置0.1s ,若能在MOTOR displays中r...
diablo77521_574237640 2010-06-22 21:41
关于伺服系统调试卡一些心得
1.今天管老师看了下我的PCBA,感觉像蜘蛛网。确实,前两年没有多少机会锻炼画板子,拿杨工的板子对比下看看,对美观太矫情了,导致线路比较混乱,飞线和通孔到处都是。2."N”和"L"铺地靠得太近了,3m...
diablo77521_574237640 2010-06-13 19:14
关于FCT测试卡的一些积累
1.假负载,开关电源有解释说,存储的能量不能迅速地转换到次级(参看电源原理),从而在开关变压器初级的电流会越来越大(电感流过电流存储磁能过渡过程中的电流原理),就引起在电流大到一定值时,在开关管截止的...
diablo77521_574237640 2010-04-20 21:22
4月20日-关于熟悉2楼产线的10个产品的心得和想法
今天基本把手上的7个产品的组装流程都熟知了一下,感觉没有王总说的进度那么紧张,有些案子的电路还是相通的,不是很复杂。我想关键是下个月的程序报告吧。1.有几个案子的电路以前的原理图,还是有些许需要讨论的...
diablo77521_574237640 2010-04-19 22:00
细心的工作态度和揣测领导的风格
报警器的焊接有几处比较马虎的地方,一眼就被看出来了。1.不能只做到100%,必须做到150%让领导满意,态度严谨些才能出人头地。2.有错误就承认,不要含混过去,这样会更令人讨厌。领导突然有多加了几个案...
广告
我要评论
0
0
广告
关闭 热点推荐上一条 /2 下一条