Linux内核分析二.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章INTEL 体系结构概述 Intel 的32位处理器提供了很多对操作系统的支持,这些支持已经集成到了处理器的系统级体系结构中。这些支持能够对下述工作提供帮助: Memory management Protection of software modules Multitasking Exception and interrupt handling Multiprocessing Cache management Hardware resource and power management Debugging and performance monitoring 当然,只有系统程序员才用这些系统级体系结构的特性。 1.1 特权级 Intel系统级体系结构提供了四个特权级,编号从0到3,其中0级是最高特权级,3级是最低特权级。将特权级的概念引入系统体系结构是为了实现保护。所谓386保护模式既是在此概念基础上建立起来的。系统中每个段(代码段、数据段、堆栈段等)都有自己的特权级,系统中每个程序或任务也都有自己特权级。特权级低的任务不能调用特权级高的任务,也不能存取特权级高的数据段。下图展示了特权级及其保护环: 图1.1 Protection Rings 环的中心(0级)保留给最高特权的代码、数据和堆栈,通常由操作系统的内核使用;外层环(3级)用于特权级要求不高软件,通常的应用程序运行在第3级。应用程序无法直接访问OS的代码和数据,从而保证了OS的安全。 经常用的有下面几个特权级: DPL(Descriptor Privilege Level),CPL(Current Privilege Level), RPL(Requestor Privilege Level),EPL(Effective Privilege Level), IOPL(I/O Privilege Level)。 1.2 操作模式 Intel体系结构支持三种操作模式和一种准操作模式: 1. 保护模式:这是处理器的一种最自然的操作模式。在这种模式下,处理器的所有指令以及体系结构的所有特色都是可用的,并且能够达到最高的性能。 2. 实模式:这种模式提供了Intel 8086的编程环境,并有一些扩展。 3. 系统管理模式:这是一种特殊的操作模式,它仅提供给系统固件使用,应用软件和操作系统都不用该模式。进入系统管理模式的唯一途径是系统管理中断(SMI)。当进入该模式时,首先保存处理器的当前状态,然后切换到一个完全分离的操作环境中,执行SMI处理程序代码,完成诸如:关掉不再使用的硬盘驱动器电源、关掉显示器、挂起整个系统、执行私有代码等工作。SMI处理程序执行完后,再恢复处理器状态,切换回保护模式或实模式。整个处理过程对应用程序和操作系统都是透明的,是在一个完全独立的环境中完成的。 4. 虚拟8086模式:这是一个准操作模式,它允许处理器在保护模式、多任务环境下执行8086软件。 各模式之间的转换关系如下: 图 1.2. Transitions Among the Processor’s Operating Modes 处理器加电或Reset重启后,首先进入实模式。操作系统初始化部分负责从实模式到保护模式的切换。实模式和保护模式之间的切换由控制寄存器CR0的PE位控制;保护模式和虚拟8086模式之间的切换由EFLAGS寄存器的VM位控制;通过SMI中断进入系统管理模式,在系统管理模式下执行指令RSM再切换回原来的(进入系统管理模式前的操作模式)操作模式。 以下只讨论保护模式。 1.3 系统级体系结构 INTEL的系统级体系结构由一组寄存器、数据结构和专门为支持基本的系统级操作而设计的指令组成。 下图描述了该体系结构中系统级的寄存器和数据结构: 图 1.3. System-Level Registers and Data Structures 1. 4 段描述符 段是最基本的保护单位。Intel系列的处理器通过段(Segment)管理内存,它把内存划分成一个一个的段。8086处理器采用定长段,每个段的长度都是64K,因此只要给出段的基址就可确定一个段(基址在CS、DS、SS、ES等段寄存器中)。在386保护模式下,段长是可变的,而且段是受保护的对象,所以要描述一个段不但需要段的基址,还需要段长和各种保护信息。因此在386保护模式下,采用段描述符来描述段。段描述符是一个大小为8个字节的数据结构,其一般格式如下: 图1.4. Segment Descriptor 段描述符中包含如下域: 基地址(Base address):由描述符的第2、3、4、7四

文档评论(0)

yyh892289 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档