问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

IO.SYS是启动管理器吗

发布网友 发布时间:2022-04-29 12:19

我来回答

1个回答

热心网友 时间:2022-06-27 14:17

【★】哈搂【★】
.
IO.SYS为WIN9X模式下的重要启动文件,主要控制启动中由机器向操作者之间的重要转换,是WIN9X系统启动的枢纽。IO.SYS位于C:\下,和MSDOS.SYS COMMAND.COM共同构成WIN9X的启动核心,通常情况下为系统、只读、隐藏属性。其中MSDOS.SYS对IO.SYS起配置作用。Win 9X的IO.SYS由原DOS的系统文件IO.SYS、MSDOS.SYS合并而成,提供标准硬件的输入/输出接口和DOS的中断调 用,功能全面增强,它基本上控制着Win 9X的全部启动过程,是Windows的DOS实模式的核心文件。但它需要根据MSDOS.SYS的设置才能实 现正常的启动过程。
.
更多具体内容,还请知友点击下面的链接,自行查看详细内容:
.
http://ke.baidu.com/view/1251717.htm
.
参考资料:

.
★解析Windows的启动过程

Windows的启动过程么,主要包括以下几个部分:

1. Master Boot Record (MBR)
2. Boot sector
3. Ntldr (这个可能有人会觉得眼熟,是不是碰到过启动的时候说找不到Ntldr呢?;) )
4. Ntoskrnl.exe
5. Smss
6. Winlogon
7. Service control manager (SCM)

-----------------------------------------------------------------------------------------------------------------------

1. MBR & Boot Sector

物理硬盘是以扇区(sector)为单位来寻址的。Windows的安装程序会在安装的时候,将一些内容写入你

安装系统的那个硬盘的第一个扇区。这块内容就称为Master Boot Record(MBR).

MBR包括两块内容:
(1). Boot code;
(2). Partition table;

Boot code,也就是启动代码。这段代码是在系统启动的时候,BIOS完成了自检过程,选择了启动设备(也就是你某个硬盘),然后就将该磁盘的MBR读入内存,并且跳转到MBR所在地址,从而执行其Boot code.

Partition table,也就是分区表。该表只有4项(entry),因为MS的OS允许一个磁盘最多被分为4个主分区(primary partition)。这里的分区表里面的内容就是这4个分区的相关信息,包括其起始的sector,相应的标志等等。

对于启动过程而言,MBR的boot code会搜寻这个分区表,在其中查找带有可启动标志(也称为Active)的分区,然后将该分区的第一个sector(也就是Boot sector)读入,并且执行其中的代码。

在安装程序写入Boot sector之前,需要获知其所在分区的文件系统类型(FAT? FAT32? NTFS?),然后写入不同的Boot sector。为什么对于不同的文件系统需要不同的Boot sector呢?原因在于Boot sector的任务,就是要载入OS的系统启动文件,而载入文件的过程,是需要文件系统参与的,所以对应于不同的文件系统,在Boot sector里面就需要不同的文件系统支持代码,以次来完成系统文件的加载。对于Windows启动而言,需要加载的文件为Ntldr。

需要补充的是,boot sector里面对于文件系统的支持代码是“最小化”了的。毕竟boot sector的大小最多也就只有512 bytes,要带有完整的文件系统是不大可能的。而且,我们的需求也很简单,只需要它能够理解该文件系统,并且能够读取其中的文件就可以了,我们并没有写入文件的需求。

Boot sector将Ntldr加载完成之后,就跳转到Ntldr的入口处,接下去的任务,就交给Ntldr了。这时候,系统还是运行在16位的实模式下,Ntldr会开启Paging,并转入32为保护模式。

这个过程中,可能碰到的错误信息是下面这个:
对于NTFS文件系统,"BOOT: Couldn't find NTLDRP";
对于FAT文件系统,"NTLDR is missing";
这个错误的意思是Boot sector在分区的根目录下没有找到Ntldr。

-----------------------------------------------------------------------------------------------------------------------

2. NTLDR

NTLDR是一个“中间人”,在Boot Sector转入NTLDR的时候,系统处于实模式下,这时候程序访问的任何地址都是实地址,也就是物理地址(虽然这其中还有80x86最基本的分段功能,学过这个实模式汇编的应该知道),并且,这个地址范围也受限在1M(20位地址)以内。所以,进入NTLDR后最先要做的事情就是转入保护模式,以便于能够完全访问32位地址范围。不过,由于此时没有设置好相应的页表,所以,还不能进行虚实地址转换(也就是还没有分页的功能)。

NTLDR需要初始化一定的页表,然后开启分页。这时候,系统已经进入了Windows的标准状态(保护模式+分页)。前面说到转入保护模式的时候,漏说了一个事情,就是初始化GDT和IDT。这里面,关键的是Windows使用的是Flat Memory Mode,也就是其保护模式下,所有段的基地址都一样。这点和其内存管理的机制息息相关,这边就先提一下。

虽然系统已经进入了保护模式,不过,此时的NTLDR还需要依赖一些BIOS调用,来访问磁盘以及显示系统。如果磁盘是SCSI的,而BIOS调用无法访问此类磁盘,那么NTLDR就加载Ntbootdd.sys来替代boot code中的磁盘访问代码。NTLDR和Boot Sector类似,也包含了NTFS和FAT文件系统的只读代码,区别么,其稍有进步,就是能访问子目录了。

由于从Windows2000开始,都有了“休眠”(Hibernation)这种关机方式。于是,NTLDR需要检查系统上是否存在有效的 Hiberfil.sys文件,如果有,那么表明最近一次关机是以“休眠”的方式关机的。于是,NTLDR就开始走“捷径”:读入 Hiberfil.sys文件,然后直接跳转到内核中“唤醒休眠”的代码,从而启动计算机。

正常启动的情况下,NTLDR读入boot.ini文件。如果该文件表明有多个可启动选项,于是就显示启动菜单,供用户选择。

这里又有一个可能的例外,虽然现在这个可能性已经很小了。这个例外就是有DOS的启动选项(包括Win9x和ME系列)。这个情况下,NTLDR加载 Bootsect.dos文件,转回实模式,并且跳转到该文件中的MBR代码。这时候,就和最开始启动的状态(读入MBR)一样了,从而启动相应的OS。

在用户选择了启动菜单后,NTLDR还要根据该项的参数做一些相应的操作。对于这些参数么,这里就不作说明和解释了。

然后我们继续往下走...

NTLDR加载并执行Ntdetect.com。该程序是一个16位保护模式的程序,通过BIOS调用,获取系统硬件的信息(比如总线类型啊,系统时间啊,磁盘驱动器啊,并口串口啊等等),然后将这些信息集中起来,返回给NTLDR,并且这些信息在启动的后期会保存到注册标的HKLM\HARDWARE \DESCRIPTION下。

貌似上面的这些工作都是在后台做的,除了那个可能出现的启动菜单外,其他工作都是用户看不到的。嗯,接下来,就该给用户一些反馈信息了。

NTLDR先清屏,然后显示“Starting Windows”和进度条。这里,2000和XP/2003有所不同。2000会显示黑白屏的进度条,这时候屏幕上还没有Windows的logo。而 XP/2003会显示带有Windows logo的彩屏进度条(哈哈,啥都流行彩屏啊)。需要注意的是,NTLDR在开始加载任何“启动驱动”(boot driver)之前,进度条一直是空的。

还有大家可能注意到过的,就是在显示“Starting Windows”的时候,下面还会显示“For troubleshooting and advanced startup options for Windows, press F8.”,然后进度条出现并开始滚动(前进)的时候,就没有机会按F8来进入安全模式之类的了。其实想象,这里面还是有原因的。因为在系统开始加载驱动之前,主要做的事情只是加载内核文件和注册表的System hive。这两个事情和安全模式之类的其他启动方式没有关系,无论是安全模式还是标准启动,都需要加载这两部分东西。而安全模式和标准模式的区别,在于其加载的驱动有所不同。所以,一旦Windows开始加载那些boot driver之后,就无法在改变模式了。

在NTLDR从显示“Starting Windows”开始,需要经过以下步骤:

1. 加载正确的内核以及HAL(默认为Ntoskrnl.exe和Hal.dll)。如果NTLDR在加载这两个文件的过程中出错,无法完成加载,那么会显示下面这条出错信息:Windows could not start because the following file was missing or corrupt,并且会告诉你无法加载的文件名。

2. 从\Windows\System32\Config\System读入System hive。
注:hive是指一个包含了注册表中某个子树的文件。

3. 在System hive中找出所有的boot driver(这类driver的start值为0,即SERVICE_BOOT_START)。系统的所有driver都在注册表的HKLM\ SYSTEM\CurrentControlSet\Services下面有对应的子键(subkey)。

4. 加载boot drivers所在分区的文件系统驱动,以便于之后的boot driver的加载。

5. 加载boot drivers。这时候,才会开始更新屏幕上的进度条。对于Windows 2000来说,就是那个黑白进度条。

6. 设置CPU寄存器,并且跳转到Ntoskrnl.exe的入口。

好啦,NTLDR的任务总算完成了,接下去就全部交给Ntoskrnl了。当然,在转交控制权的时候,自然也将对方需要的信息(包括内存布局,硬件信息,System hive等)也都交给Ntoskrnl,这样,NTLDR才完成了它的使命。
.
如果我的解答对解决你の问题有帮助.请点击我的回答下方【选为满意答案】按钮.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
帮帮忙写个英语作文80字的 谢谢 80年山东高考总分 总胆红素25.44(正常3.4-22),直接胆红素7.13(正常0-6.8... ...参考值 总胆红素 19.4 0-23.0 umol/L 直接胆红素 6.4 0-8.0 umol/... 蟹爪兰冬天多久浇水 冬季蟹爪兰浇水间隔需长达多久 蟹爪兰冬天什么时候浇水好 蟹爪兰冬天多久浇一次水 端午节一家人吃饭的说说 端午节跟谁一起过 端午节一家人聚在一起吃饭的说说 端午节是家人团聚吗 xp和vista双系统启动管理器下启动菜单问题 请高手帮忙! 怎么设置启动管理器 我的电脑不能进入bios,无论是开机按del键还是f2都不行!提示有个“windows启动管理器” 删除了windows7,可是开机还是出现windows启动管理器,怎么办? 电脑开机显示windows启动管理器? 电脑开机多了一个启动项? 眼镜的两个镜片都掉下来了,度数不一样,怎么按回去 一个QQ号可以创造几个QQ群? 一个QQ号能建几个群??? 一个QQ号最多能建多少个群? 一个QQ号可以开多少个群? 普希金命丧谁手 那位大哥有关于特工的电影 就像谍影重重那样的 谢谢 巴西世界杯所有著名球星名字简写 小弟刚玩不久~求一套好用的FIFA Online3 的443(41113 4213 4123)的阵容~ 拜仁该是德国球队还是多国部队 阿尔特塔化身卡里克,他怎么了 拜仁慕尼黑2000年到2015年所有球员 梵高遇到过尼采吗 斯皮尔伯格导演了哪几部电影?还有就是,我想看一些有意义的科幻电影,能不能给我介绍几部? Windows启动管理器 开不了机 一键还原不能用 win7一键还原不能用了怎么解决 win7电脑不能“系统还原”,点击系统还原会出现下面情况,求指教 win7自带备份还原不能使用 WIN7的备份还原 不能用。点击它却没有反应? 我的w7系统不能打开系统还原,这是怎么回事? 最近重组开盘后换手率超100之50有哪些股票 安装WIN7后,联想自带的一键还原不能用了 win7 64位 sp1旗舰版,系统还原不能还原了,什么什么问题,急急急,跪求大神 win7系统还原不能使用,情况如下图,求帮助! 小黑教育计算机二级python软件用的python是什么版本? ATM机怎么转账啊?不是一个地区的银行卡能打钱过来吗? 梦到妈妈再嫁,爸爸还要去喝喜酒 在ATM机上不同银行的卡可以转账吗? 做梦梦到自己的爸爸去喝喜酒喝好了爸爸帮他们到垃圾忘河水里倒就不小心掉到水里了后来我就吓醒了 梦到跟爸妈去喝喜酒然后我跟别人吵架之后下雨老房子塌方 梦到父母安排结婚酒席,亲戚都到场,自己刚知道,没功夫穿准备好的新娘服... 干壁钉有哪些规格? 在抖音抢买了假货去哪投诉? 抖音上卖假货可以投诉12315吗