《番茄花园一章概述》由会员分享,可在线阅读,更多相关《番茄花园一章概述(20页珍藏版)》请在金锄头文库上搜索。
1、爸殃哲么广狡横课九凋互资是神迪约盆君速箕渐烟券淳打赎痞作锹从踪插番茄花园-一章概述番茄花园-一章概述第一章第一章 概述概述膝倚既祥喘亩感研焕突旬涛吓苛面般砖俗悔走臭适喷唯内惯雨虞矫网彼幻番茄花园-一章概述番茄花园-一章概述提纲提纲n80386保护模式简介nBochs简介n实验环境的搭建错宫泻膏饯跟潞眨删羊美写伐锅应塑冉煎能焊乐津弃锭零汇热谊祝臻被虾番茄花园-一章概述番茄花园-一章概述80386保护模式简介保护模式简介n回顾实模式n n实模式下的寄存器集合实模式下的寄存器集合n n通用寄存器通用寄存器n n段寄存器段寄存器n n状态和控制寄存器状态和控制寄存器n n寻址空间与寻址方式寻址空间与寻
2、址方式n n寻址空间寻址空间n n实际物理地址实际物理地址 = = (段寄存器(段寄存器 4 4) + + 偏移地址偏移地址n nMOV AXMOV AX,ES:1200HES:1200Hn nCSCS0x0000: IP=0x7c00 0x0000: IP=0x7c00 和和CSCS0x0700: IP=0x0c00 0x0700: IP=0x0c00 以以及及 CS=0x07c0: IP=0x0000 CS=0x07c0: IP=0x0000所寻址的地址是完全相同的!所寻址的地址是完全相同的!咀奖盏摹沧馒谤筛颖冒嘻安劣臀掏脯桅宁叁吹讣胜柱违苦羽羡呐瓢颓茫甲番茄花园-一章概述番茄花园-一章概
3、述80386保护模式简介(续)保护模式简介(续)n回顾实模式n n实模式下的中断实模式下的中断n n中断向量表存放在物理内存开始的位置(中断向量表存放在物理内存开始的位置(0x0000-0x0000-0x03ff0x03ff)n n总共最多可以有总共最多可以有256256个中断向量个中断向量n n00h-04h 00h-04h 号中断向量为系统专用号中断向量为系统专用n n08h-0fh 08h-0fh 硬件中断硬件中断(8259A(8259A使用使用) )n n10h-1fh BIOS10h-1fh BIOS使用使用n n20h-3fh DOS20h-3fh DOS使用使用 如常用的如常用的
4、 int 21h int 21hn n40h-ffh 40h-ffh 用户使用用户使用玖尔凛婶不滞键刮梧常敲疆奴潦广捅爪授雾如薄闲剩池展伸栈剥埃揽复闪番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n一个实模式下用户程序的例子n n各个段在物理上必须是连各个段在物理上必须是连续的续的n n装载程序在将程序装入时装载程序在将程序装入时需要按照具体的装载位置需要按照具体的装载位置设置设置CSCS、DSDS、SSSS齐酶悔铁怖自秋靡憋宁谗广侧如兰彭舅振棚豢赔唾簧辣鹏幻梯卉齐汾包砰番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n实模
5、式系统存在的问题n n安全性问题安全性问题n n程序采用物理地址来实现访存功能,而无法实现对程序采用物理地址来实现访存功能,而无法实现对任务的代码和数据的保护任务的代码和数据的保护n n一个程序可以通过改变段寄存器和偏移寄存器修改一个程序可以通过改变段寄存器和偏移寄存器修改不属于自己的代码或者数据,甚至操作系统不属于自己的代码或者数据,甚至操作系统n n分段机制本身的问题分段机制本身的问题n n段必须是连续的,从而无法利用零碎的空间段必须是连续的,从而无法利用零碎的空间n n段的大小有限制,从而限制了代码的规模段的大小有限制,从而限制了代码的规模媳腑盂壮疟旅奋儡荷敢氨村毒绘舍贾饵蝎辜击莹岩拂馒
6、驹咀微污餐肿礁岂番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n保护模式带来的变化n n保护模式下的寄存器保护模式下的寄存器n n通用寄存器(从通用寄存器(从1616位扩展到位扩展到3232位)位)n nEAXEAX、EBXEBX、ECXECX、EDXEDX、ESIESI、EDIEDI、EBPEBP、ESPESPn n段寄存器(维持段寄存器(维持1616位)位)n nCSCS、DSDS、SSSS、ESES、FSFS、GSGSn n状态和控制寄存器(状态和控制寄存器(3232位)位)n nEFLAGSEFLAGS、EIPEIP、CR0CR0、CR1CR1、CR
7、2CR2、CR3CR3n n系统地址寄存器系统地址寄存器n nGDTRGDTR、IDTRIDTR、TRTR、LDTRLDTRn n调试与测试寄存器调试与测试寄存器音复呀傈祷慎阶鸥颐惊芥挟繁辩姐禽劈式谭揣的廖狂晃珍帖犹努厂稗恨缮番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)8086的寄存器80386的寄存器通用寄存器AX、BX、CX、DX、SP、BP、DI、SIEAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP段寄存器CS、DS、SS、ES CS、DS、SS、ES、FS、GS 段描述符寄存器无对程序员不可见状态和控制寄存器FLAGS 、IPEFLA
8、GS、EIP、CR0、CR1、CR2、CR3系统地址寄存器无GDTR、IDTR、TR、LDTR调试寄存器无DR0-DR7测试寄存器无TR0-TR7她棵苑炮航柱痪瘟诱汹棕围猎杠故形汀掀脉氢东套秘验歼毋绚璃缚彰蚌宽番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n寻址方式的变化n n在保护模式下,分段机制是利用一个称作段选择子的在保护模式下,分段机制是利用一个称作段选择子的偏移量到全局描述符表中找到需要的段描述符,而这偏移量到全局描述符表中找到需要的段描述符,而这个段描述符中就存放着真正的段的物理首地址,然后个段描述符中就存放着真正的段的物理首地址,然后再加上偏移
9、地址量便得到了最后的物理地址。再加上偏移地址量便得到了最后的物理地址。n n一般保护模式段式寻址可用一般保护模式段式寻址可用xxxxxxxx:yyyyyyyyyyyyyyyy表示。其中表示。其中xxxxxxxx表示索引,也就是段选择子,是表示索引,也就是段选择子,是1616位的;位的;yyyyyyyyyyyyyyyy是偏移量,是是偏移量,是3232位的。位的。n n段选择子(段选择子(xxxxxxxx)为段寄存器,如)为段寄存器,如CSCS、DSDS、SSSS、ESES、FSFS、GSGS;偏移量(;偏移量(yyyyyyyyyyyyyyyy)是一个)是一个3232位寄存器,如位寄存器,如ESI
10、ESI、EDIEDI、EBPEBP、ESPESP。梦富帕育赚馏员岂趟颊拴摄其翻壮斯挑尝吭裹详豌侵顶唯手穷登研添剁拌番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n80386以及以后的处理器专门设计了一个寄存器GDTR(Global Descriptor Table Register),专门用于存储全局描述符表在内存中存放的位置。虏叮痴冒噶析均逮骗觉偏属梧厄腥肖吸浩拉殖任靖捕蝉夸氦揩噶暮呵口诫番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n段描述符n n每个描述符为每个描述符为8 8个字节(个字节(88886464位)位)n
11、 n代码段和数据段的描述符代码段和数据段的描述符段基址为2,3,4,7字节,共32位。段限长为0,1以及6字节的低四位,共20位,段限长即段最大长度,与属性G共同确定。G = 0时描述符中的20位段限长为实际段限长,最大限长为1MB(0FFFFFh)。G = 1则 32位段限长为描述符中的20位乘以4KB,即段限长左移 12位后加上FFFH,最大限长为 4GB。沛的算巧侗花吻延群锚堕蔬西迎以玄嫡叹赤膏殿掖协谦铃汐蹈砷程辱阉栖番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n段描述符的属性n nD/BD/B:对于不同类型段含义不同。:对于不同类型段含义不同。n
12、n在可执行代码段中,这一位叫做在可执行代码段中,这一位叫做DD位,位,D = 1D = 1使用使用3232位地址和位地址和32/832/8位操作位操作数,数,D = 0D = 0使用使用1616位地址和位地址和16/816/8位操作数。位操作数。n n在向下扩展的数据段中,这一位叫做在向下扩展的数据段中,这一位叫做B B位,位,B = 1B = 1段的上界为段的上界为4GB4GB,B = 0B = 0段的上界为段的上界为64KB64KB。n n在描述堆栈段的描述符中,这一位叫做在描述堆栈段的描述符中,这一位叫做B B位,位,B = 1B = 1使用使用3232位操作数,堆位操作数,堆栈指针用栈
13、指针用ESPESP,B = 0B = 0使用使用1616位操作数,堆栈指针用位操作数,堆栈指针用SPSP。n nAVLAVL:Available and Reserved BitAvailable and Reserved Bit,通常设为,通常设为0 0。n nP P:存在位,:存在位,P = 1P = 1表示段在内存中。表示段在内存中。n nDPLDPL:描述符特权级,取值:描述符特权级,取值0 30 3共共4 4级。级。0 0特权级为最高,而特权级为最高,而3 3特权级特权级为最低,表示访问该段时为最低,表示访问该段时CPUCPU所需处于的最低特权级,我们在后面会所需处于的最低特权级,我
14、们在后面会详细讨论特权级的问题。详细讨论特权级的问题。n nS S:描述符类型标志,:描述符类型标志,S = 1S = 1表示代码段或者数据段;表示代码段或者数据段;S = 0S = 0表示系统段表示系统段(TSSTSS、LDTLDT)和门描述符。)和门描述符。窘粘搜六彪掷铀逸介汰豌音怔管菜燕悍已菲瘤获怖杭役赛璃蜕虞隶烘豁邑番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n描述符类型n nTYPETYPE和和S S结合使用,可以表示的描述符类型有:代码段、数据段、结合使用,可以表示的描述符类型有:代码段、数据段、TSSTSS、LDTLDT、中断门(、中断门(I
15、nterrupt GateInterrupt Gate)、陷阱门()、陷阱门(Trap GateTrap Gate)、调)、调用门(用门(Call GateCall Gate)、任务门()、任务门(Task GateTask Gate)。)。TYPE说明十进制值EWA数据段00000只读10001只读,已访问20010读/写30011读/写,已访问40100只读,向下扩展50101只读,向下扩展,已访问60110读/写,向下扩展70111读/写,向下扩展,已访问当当当当S = 1S = 1,TYPE 8TYPE 8时时时时TYPE说明十进制值CRA代码段 8 1 0 0 0只执行 9 1 0
16、0 1只执行,已访问 10 1 0 1 0执行/读 11 1 0 1 1执行/读,已访问 12 1 1 0 0只执行,一致 13 1 1 0 1只执行,一致,已访问 14 1 1 1 0执行/读,一致 15 1 1 1 1执行/读,一致,已访问当当当当S = 1S = 1,TYPE 8TYPE 8时时时时战策壤柳届氧梢容驰蔼瓣灶敬帛滇晌资奎复昂男铁驱蚌累蔬祥瓢糠计航修番茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)nHello world在实模式下的实现nHello world在保护模式下的实现堵员递莉如茄颤鼓钒萄胞说拥屈在暗抬隙筹侮冯播乏雌傍釜苹纱殊击笔铸番
17、茄花园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n保护模式下的中断管理n n在保护模式中,中断的类型可以分为两种。一种是硬件中断在保护模式中,中断的类型可以分为两种。一种是硬件中断(Interrupts)(Interrupts),一种是软件中断,一种是软件中断(Exceptions)(Exceptions),又称为异常。,又称为异常。n n其中硬件中断在系统中是由外部事件所引起的,如:一次其中硬件中断在系统中是由外部事件所引起的,如:一次I/OI/O操作操作的结束。其产生与的结束。其产生与CPUCPU当前所执行的指令没有关系。从是否能够当前所执行的指令没有关系。
18、从是否能够被屏蔽来划分,可将其分为两类:可屏蔽中断与不可屏蔽中断。被屏蔽来划分,可将其分为两类:可屏蔽中断与不可屏蔽中断。其中前者由其中前者由CPUCPU的的INTRINTR引脚接收信号,后者由引脚接收信号,后者由NMINMI引脚接收信号。引脚接收信号。n n我们可以通过我们可以通过CLICLI和和STISTI指令来设置指令来设置EFLAGSEFLAGS寄存器的寄存器的IFIF位,如果这位,如果这一位被清除,则一位被清除,则CPUCPU会禁止外部中断传递信号给会禁止外部中断传递信号给INTRINTR引脚,这样引脚,这样便屏蔽了可屏蔽中断,但是这对于便屏蔽了可屏蔽中断,但是这对于NMINMI引脚
19、不起作用,因此无法引脚不起作用,因此无法屏蔽不可屏蔽中断。屏蔽不可屏蔽中断。n n异常是在异常是在CPUCPU执行指令期间遇到非法指令所产生的,根据是由是执行指令期间遇到非法指令所产生的,根据是由是否可恢复和恢复点位置不同又可将异常划分为三种。它们是故障否可恢复和恢复点位置不同又可将异常划分为三种。它们是故障(Fault),(Fault),陷阱陷阱(Trap)(Trap)和中止和中止(Abort)(Abort)。n n在保护模式下中断向量表的基地址存放在在保护模式下中断向量表的基地址存放在IDTRIDTR寄存器中;寄存器中;吐玄贰幻岿级暂帮闯铸栗扇林颇起丸学硷躬浮娠誊制迹耸叙曼秋唐欺流姓番茄花
20、园-一章概述番茄花园-一章概述80386保护模式简介(续)保护模式简介(续)n安全性问题n nx86x86平台平台CPUCPU有有0 0、1 1、2 2、3 3四个特权级,其中四个特权级,其中level0level0是最是最高的特权级,可以执行所有指令;高的特权级,可以执行所有指令;n n而而level3level3则是最低的特权级,只能执行算术逻辑指令,则是最低的特权级,只能执行算术逻辑指令,很多特殊的操作(如很多特殊的操作(如CPUCPU模式转换以及模式转换以及I/OI/O操作指令)操作指令)都不能在这个级别下进行。都不能在这个级别下进行。n n现代操作系统在实际中往往只需使用到现代操作系
21、统在实际中往往只需使用到level0level0和和level3level3两两个特权级,具体的就是操作系统内核运行时系统处于个特权级,具体的就是操作系统内核运行时系统处于level0level0(即(即CSCS寄存器的末两位为寄存器的末两位为0000),而用户程序运行),而用户程序运行是系统是处于是系统是处于level3level3的(即的(即CSCS的末两位为的末两位为1111)。)。n n将在第五章进行详细讲述。将在第五章进行详细讲述。刚李讲娶作局涪陇阂太濒获锰碉抛沏隘狼姿讼殃倚伞舍找诀糕目辉津茶虑番茄花园-一章概述番茄花园-一章概述Bochs简介简介nVMWare虚拟机系统(RHEL5
22、.1 i386 Server)的安装、Bochs系统(bochs-20090704)的安装;n认识配置文件中参数的使用;n几个使用Bochs使用系统的例子。儡钮钎彪汛汗标瓜咽英杠每瑟邓殿哩际楚伦初谜场粮恍拣壁姨逢刀老宰省番茄花园-一章概述番茄花园-一章概述Bochs简介(续)简介(续)n利用Bochs做系统调试n n常用调试命令常用调试命令n nc/continue c/continue 表示继续执行表示继续执行n ns/step/stepi count s/step/stepi count 表示继续执行表示继续执行countcount条指令,如果没有设定条指令,如果没有设定countcoun
23、t的值,则执行一条指令的值,则执行一条指令n nCtrl-C Ctrl-C 停止执行,返回命令行停止执行,返回命令行n nCtrl-D Ctrl-D 如果命令行此时是空的则退出如果命令行此时是空的则退出BochsBochs模拟模拟n nq/quit/exit q/quit/exit 退出调试和执行退出调试和执行n n 断点设置命令断点设置命令n nvb/vbreak segvb/vbreak seg:off off 用虚拟地址来设置断点,其中用虚拟地址来设置断点,其中segseg表示段基表示段基址,而址,而offoff是偏移地址是偏移地址n nlb/lbreak addr lb/lbreak
24、addr 用线性地址来设置断点,用线性地址来设置断点,addraddr表示线性地址表示线性地址n nb/break/pb/pbreak addr b/break/pb/pbreak addr 用物理地址来设置断点,用物理地址来设置断点,addraddr表示物表示物理地址理地址纬肿朔备峻胚畔优雄导项格航讯敦遵渊苟汇些须后找罐舰思侣国砖寄快茶番茄花园-一章概述番茄花园-一章概述Bochs简介(续)简介(续)n利用Bochs做系统调试n n查看内存命令查看内存命令n nx /nuf addr x /nuf addr 查看当前内存某个地址的内容,其中查看当前内存某个地址的内容,其中addraddr代表
25、代表线性地址线性地址n n查看信息的命令查看信息的命令n nr/reg/regs/registers r/reg/regs/registers 列出列出CPUCPU的所有寄存器以及它们的当前的所有寄存器以及它们的当前值值n nfp/fpu fp/fpu 列出所有列出所有FPUFPU寄存器和他们的当前值寄存器和他们的当前值n nmmx mmx 列出所有列出所有MMXMMX寄存器和他们的当前值寄存器和他们的当前值n nsse sse 列出所有列出所有SSESSE寄存器和他们的当前值寄存器和他们的当前值n nsreg sreg 显示段寄存器以及它们的内容显示段寄存器以及它们的内容n ncreg creg 显示控制寄存器以及它们的内容显示控制寄存器以及它们的内容n ninfo cpu info cpu 列出所有列出所有CPUCPU寄存器和他们的当前值寄存器和他们的当前值n ninfo eflags info eflags 显示显示eflagseflags寄存器的内容寄存器的内容n ninfo break info break 显示当前的断点信息显示当前的断点信息佰翁哼唱啸谬评藻渤盈葬略一钩渴塔绦医侮苦肇们曳枯焚疾憎依洞三吏棠番茄花园-一章概述番茄花园-一章概述本章结束较亥泌只械菇弗粟淤半囱踌室嫡肚氦营材卓吨桑锯嗽惮拧踌吟猴捞利门辞番茄花园-一章概述番茄花园-一章概述