第一章 背景知识

一。80x86工作模式
    (1)实模式:被复位或加电的时候以实模式启动。实模式下寄存器寻址方式与8086是一样的。实模式下,不支持优先级,所有指令相当于工作在特权级。80386就是通过在实模式下初始化控制寄存器、GDTR、LDTR与TR等管理寄存器以及页表,然后再通过CR0使其中的保护模式位置位来进入保护模式。不支持硬件上的多任务切换。
        中断处理方式,仍然是用中断向量表来定位中断服务程序入口地址。中断向量是4个字节,分别为断地址和偏移地址。
    (2)保护模式:4个优先级别(0~3),操作系统运行在优先级最高的0级上。从实模式切换到保护模式是修改控制寄存器CR0中的控制位PE(位0)来实现的。    
重点! 保护模式下寻址方式。
        段寄存器中的信息不是段地址,而是段选择器Segment Selector。这个选择器作为索引指向相应地址段的属性描述符64位Segment Descriptior
段描述符在不同的地方,分别在GDT和LDT(Global Descriptor Table和Local)中,GDT包含系统中左右任务都可用的段描述符,通常包含描述操作系统使用的代码段、数据段和堆栈段的描述符以及各任务的LDT段的。
LDT:每一个任务都有一个独立的LDT,LDT段的描述符也在GDT中。
        GDTR是48位的全局描述符表寄存器,中间放置的是GDT这张表在系统内存中的入口地址,存放的是地址。LDTR是16位的,是一个索引值,存放的是相应的LDT在GDT表中的位置索引。
段选择器Segment Selector中

如图,13位为索引号,有个TI位用来表示这个13位索引号是在GDT中进行查找还是在LDT中进行查找。
TI=0的时候,系统先从GDTR中读取地址,找到GDT在内存中的位置,然后通过段寄存器中的13位索引找到相应的段描述符所在位置,然后通过段描述符找到在线性内存其所相应的段。
TI=1的时候,找到GDT所在位置,然后根据LDTR中的索引值找到LDT描述符在GDT中的位置,然后根据LDT描述符找到在内存线性地址中的LDT,最后再通过段选择器中的索引值找到相应的内存段。
注:段选择器有一个RPL值,为请求优先级。段描述符中有一个DPL值,为描述符优先级。DPL表示这个段可以被访问的最低优先级,。只有DPL值大于或者等于RPL值,这个段才是可以被访问的,否则会产生一般性保护异常。(数值高权限小)
二。分页机制
        处理器把4KB大小的一块内存当做一“页”内存,每一页物理内存可以根据“页目录”和“页表”,随意映射到不同的线性地址上。可能物理地址不连续的内存映射连到一起,在线性地址上视为连续。
        除了和CR3寄存器(指定当前页目录的地址)相关的指令用的物理地址外,其他所有指令都用的线性地址寻址。
        是否启用内存分页机制是由处理器新增的CR0寄存器中的31(PG位)巨鼎的,PG=0,则分页机制不启用。
        不启用的时候,前面根据GDT和LDT得到的线性地址,直接对应到物理内存的位置
        启用的时候,根据线性地址查看页目录和页表指定的映射关系,把地址映射到物理内存真正的位置上、
        页表不仅规定了地址的映射,同时还规定了页的访问属性,如是否可写、可读、可执行等。

三。windows内存安排
        系统一般在硬盘上建立大小为物理内存两倍左右的交换文件,用作虚拟内存。被执行的可执行文件不必真正的装入内存,只要在页表中建立映射关系,以后真正运行到某处代码的时候再将它调入物理内存。

四。中断
        保护模式新增了“门”的概念。“门”指向某个优先级高的程序所规定的入口点,所有优先级低的程序调用优先级高的程序只能通过门重定向,进入门规定的入口点。
        保护模式下,表示一个中断或异常服务程序的信息需要8个字节,包括门的种类以及XXXX:YYYYYYYYY格式的入口地址,又称为“中断描述符”
        和寻址一样,保护模式下把所有的中断描述符放在一起组成IDT中断描述符表,IDT不用固定的放在地址00000h的地方,支持的中断数量也可以自定义。就像用GDTR记录GDT的位置,我们用IDTR记录IDT在内存中的基址以及IDT的长度,IDTR48位,高32位地址,低16位长度。
        在windows中,操作系统使用动态链接库来替代中断服务程序提供系统功能。
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值