IA-32架构下启动过程(2)

来源:互联网 发布:女性脂溢性脱发知乎 编辑:程序博客网 时间:2024/05/17 01:32
 IA-32架构:
      Intel为了让32位的系统和16位的系统兼容。在32位系统中保留了对16位系统的支持。所以在开机后通电和自检的这段时间里,即使是32位的CPU也要像16位的CPU那样去工作。然后当操作系统接管对整个系统的控制权后,再由操作系统负责16位和32位两种模式之间的转换问题。在IA-32架构中,这两种模式的正确说法是实模式和保护模式。实模式就是指机器在16位的环境下运行,而保护模式是指在32位的环境下运行。有关实模式和保护模式的概念和模式转换的方法在Intel的开发手册中有详细的说明,这里不再说明。
      手册的相关链接:Intel官方地址http://www.intel.com/products/processor/manuals/
           CSDN相关下载地址http://download.csdn.net/source/242585
                                              http://download.csdn.net/source/204192
       在开机过程中由于IA-32的规定,此时的CPU只能识别从0x00000H~0xFFFFFH地址内的内存,这段内存大小为1MB。这是为兼容16位的CPU,因为16位的CPU只能识别这部分内存。在上一篇文章中提到启动时BIOS用到的都是高地址的内存,这样即使是内存中低地址部分不能正常读写也不会影响到整个启动过程。所以现实中会遇到有的机器自检通过了,但操作系统启动不了。这是因为操作系统在启动时只能在内存低地址部分(共640K)中工作,此时操作系统(DOS以后的windows操作系统)是无法对内存中产生的问题做出响应的。
       在实模式下,内存的管理是很方便的。一般用户可以使用DEBUG随意的查看内存中所存储的内容。也可以用汇编语言写的程序修改内存中的任何信息。此时BIOS的功能(中断)调用是有效的。用户可以用BIOS调用控制像硬盘,显示器,键盘等设备。
        在保护模式下,内存的管理和使用比实模式下复杂很多。因为在进入保护模式之前,要设置很多参数,如:GDT,LDT等。进入保护模式之后,BIOS的功能(中断)调用是无效,此时如果一定要用BIOS中断,就要操作系统支持,或自己重写底层代码。在保护模式下,硬件和软件的资源使用是受到限制的。此时运行的程序不一定有最大的控制权限。并且此时程序在控制硬件操作时,一定要依赖对应硬件的驱动程序,当然也要有操作系统的授权。
       两种模式工作方式的不同对不同类型的操作系统的运行产生一定的影响。对于DOS系统来说,早期的DOS只是在实模式下工作,只有用户自己写程序控制系统,系统才会进入保护模式,在随后的发展过程中,模式的转换过程是操作系统自身进行控制的,像windows2000和windowsXP,一般用户在使用这样的操作系统时都是在保护模式下进行操作的,只有操作系统的内核程序是全部或部分工作在实模式的环境里。这样一般的应用程序就不会破坏系统内核,这样做在一定程度上保证了操作系统的稳定和安全。当然,安全是相对的,对于熟悉操作系统内核的人,还是可以通过内核自身的漏洞或错误去破坏内核,或是用自己的程序替换内核程序,从而接管对系统的完全控制权。所以常见的对操作系统的破坏和攻击是可以修复的,只要停止破坏的过程,像手动控制重新夺回系统控制权或是关机(这里关机是切断电源 ,决对不能用重启的方式。)。只要破坏被暂停或是停止,就有时间将有用的数据信息备份到其它安全的地方。最后在想方法修正破坏程序篡改的配置信息就能以最小的损失修复系统。
       
       
以上内容来源众多,包括书籍和网络等。如涉及版权和相关责任问题,本人会撤掉相关的内容。部分细节不详尽或不全等,希望大家积极提供保贵意见。
原创粉丝点击