2、以systemboot(系统引导)为例:系统引导通常是由一个被称为启动引导程序的特殊代码完成的,它位于系统ROM中,用来完成定位内核代码在外存的具体位置、按照要求正确装入内核至内存并最终使内核运行起来的整个系统启动过程。
3、该过程中,启动引导程序要完成多个初始化过程,当这些过程顺利完成后才能使用系统的各种服务。这些过程包括初始引导、内核初始化、全系统初始化。
在bois中的开启读取磁盘先后顺序 可以概述如下: 1.电源开启后,运行BIOS里的启动和自检程序,出问题就滴嘟几声,或者在屏幕上提 示,出现这种情况你就惨了:(,赶快检查硬件吧。 2.如果万事OK,BIOS的启动程序按照CMOS的设置,依次检查各个可启动的存储设备, 找到第一个存在的此类设备,装入其第一个扇区(512字节,也就是传说中的0扇区)到物 理地址为7C00H的地方,然后跳转到0000H:7C00H继续执行。如果出现“Operating System not found”,说明你没有可启动的 *** 作系统,这应该是BIOS给出的信息,但是我尚未发现 BIOS凭什么给出这个信息的,大家可以讨论讨论。如果你用一张没有启动程序的兼容DOS 格式的软驱启动,则会提示“Non-System disk or disk error...”,这是兼容DOS格式软驱的0扇区里的程序提示的,如果看到0扇区里的程序, 就可以发现这段提示。 根据以上boot的步骤,只要把程序的二进制代码写入了0扇区就可以作为boot程序运行了 。但是boot程序还有许多要考虑的问题。首先boot程序不能编译成EXE格式并动态装入, 它所有的寻址都必须是链接前就确定的,也就是静态的。比如不能随便使用OFFSET或SEG 等伪指令,最好不要使用多个segment,除非你真的确定这些segment都装到哪去了。对于各 种跳转指令和CALL指令 ,如果不是相对寻址的,必须得考虑目标的真实地址,如CALL FAR PTR FUNC,这样的语 句就要小心,否则就不知道跳到哪去了,然后只有死机一条路:(。 怎样写boot程序呢,我有一个土办法,就是用DOS下的.COM可执行文件。该格式的文 件所包含的程序首先只有一个段,代码和数据市共用一个段的,所有代码和数据必须从段 的第100H字节开始写起,这可以用伪指令ORG 100H实现,程序所有的地址都是静态的,不用像.EXE文件一样需要动态定位。但是还有一 个问题就是编译器认为所有地址的数值都是相对于CS:0000H确定的,而BIOS装入我们的程 序时CS=0000H,程序的偏移在7C00H,如果我们自己对所有地址都手动定位那不是很惨:( ,所以我们做一个长跳转,跳到7B0H:IP-7C00H处,然后所有环境就和.COM文件的环境相同 了。 现在就介绍我写的一个简易的boot程序,运行以后是一个简单的console程序,调用 BIOS的功能接受用户输入,然后把输入回显出来,注意此时DOS没有装入,只能用BIOS的 系统调用,然后一直死循环下去了。在MASM6.11下编译这个程序命令为 ML /AT BOOT1.ASM TASM下编译命令为 TASM BOOT1.ASM TLINK /t BOOT1.ASM 然后用debug打开,即“debug BOOT1.COM”,输入“w 100 0 0 1”,把boot1.com二进制 代码写入A盘的0扇区(注意要用一张没用的软盘,因为覆盖0扇区后,DOS就打不开着张软 盘了),最后从该软盘启动,就可以进入这个简易的console了。 BOOT1.ASM源程序在后面发出来,欢迎大家讨论和修改,如果有什么更好编写boot程 序的方法,也可以提出来。谢谢大家赏脸看完这篇仓促的拙作:)boot启动(或引导)
在讲述这个名词的意义之前,您最好做一张启动盘,这样在您的计算机受到引导型病毒的感染时可以干净地启动计算机杀死这个病毒。
启动作为动词时是指将 *** 作系统装入主存或ram中,一旦 *** 作系统存在于主存或ram中时,用户就可以在计算机上使用应用程序了。有时候您可能会看到一个单词,让您"reboot"(重新启动),它的意思就是让您重新把 *** 作系统装入计算机的主存或ram。上面所说的是指pc机,而一般大型计算机中不用这个单词,在大型机中称启动为ipl(initial
program
load,初始程序装载)。
作为名词时,它指的是引导程序,此程序可以先行进入系统,获得系统的控制权,然后导入所有的 *** 作系统程序。
需要注意的是,启动或装载 *** 作系统与安装 *** 作系统是两码事,在一台计算机上的安装一般只进行一次,而每次开机时 *** 作系统进入计算机主存或ram的过程不能称之为安装。在安装的过程中用户需要设置许多参数,在安装结束后, *** 作系统就会存在于计算机的存储器中。可以安装其它应用程序,但启动一般仅仅针对 *** 作系统而言的。一定不要把这两个意思弄错了。
虽然启动过程因 *** 作系统的不同而稍稍有所不同,但是基本过程是这样的:当您打开计算机时, *** 作系统将按照下面的顺序自已进行装载。
开机时,系统中只读存储器(rom)中的基本输入输出系统(bios)获得系统控制权,bio预先装好的,不象随机访问存储器(ram),rom的内容不会因为计算机掉电而丢失。bios首先进行开机自检过程(power-on
self
test,post)确定计算机上所有的基本部件可以正常工作。然后,bios的引导程序找寻特定的启动程序
,由这个启动程序装载硬盘上的 *** 作系统。
通常情况下,此程序会首先会使a驱动器,如果其中有软盘的话,将会在特定的位置读入引导文件。(对于ms-dos系统来说,这两个文件是io.sys和msdos.sys。)如果启动程序在这个位置没有找到可以用于装载 *** 作系统的文件时,bios将告诉用户a盘不是一张启动盘。如果驱动器a中没有软盘的话(通常都没有),bios将
在硬盘的特定位置上找寻特定的文件,在找到这个文件后,bios将第一个扇区(一个512字节的特定区域)读入ram的特定位置,第一个扇区内存储的信息就称之为主引导记录。
在装入引导记录后,引导记录获得系统的控制权,由它将后面的文件装入系统。在将后面的文件全部装入系统后,引导记录就没有用了,可以被别的数据覆盖掉了。在此之后要装置进一些配置文件,这些配置文件将使这台计算机工作在最佳状态之下。在处理完配置文件之后, *** 作系统正式获得控制权,这时启动就算完成了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)