IO.SYS是什么文件?

IO.SYS是什么文件?,第1张

这个文件是起到对内存管理的作用。 百科上的解释 http://baike.baidu.com/view/1251717.htm IO.SYS 1、IO.SYS的内部启动菜单 Win 9X的IO.SYS由原DOS的系统文件IO.SYS、MSDOS.SYS合并而成,提供标准硬件的输入/输出接口和DOS的中断调 用,功能全面增强,它基本上控制着Win 9X的全部启动过程,是Windows的DOS实模式的核心文件。但它需要根据MSDOS.SYS的设置才能实 现正常的启动过程。 IO.SYS可由启动功能键改变启动过程,这些功能键对应着启动菜单各选项:功能键 对应的启动菜单项 F4: Previous MS-DOS version F5: Safe mode Shift+F5: Command prompt only F6: Safe mode with network support F8: 启动时调出启动菜单 Shift+F8: Step-by-step confirmation 系统启动出现“Starting Windows 95...”时按下功能键即可 IO.SYS提供启动选择菜单,便于用户根据需要选择启动方式: ⑴Normal 正常启动模式(默认的启动方式) 当MSDOS.SYS中的BootWin=0时,选择本项系统将启动旧版DOS ⑵Logged(BOOTLOG.TXT) 正常启动模式,同时在根目录下形成BOOTLOG.TXT BOOTLOG.TXT记录了启动过程中发生的所有情况,是Win 9X系统启动过程唯一全面的诊断记录,可供用户检查启动过程中的问题 ⑶Safe mode 安全模式的GUI,屏幕四角有“安全模式”字样不加载CONFIG.SYS、AUTOEXEC.BAT,也不加载启动程序组中任何程序,只加载最基本硬 件配置 (标准VGA模式,无声卡、光驱等),即最简单的GUI启动,用于纠正因硬件配置等造成的GUI启动问题。系统出现问题无法正常启动时,多数情况 下会进入该启动模式,但该模式能解决的问题非常有限,多用于显示器等配置系统配置主要在控制面板上调整。要进入正常的GUI,必须重新启动 ⑷Step-by-step confirmation 单步执行 Windows启动 用于确定因系统文件损坏造成的启动故障,该方式仅能确定DOS启动过程中的系统问题,主要修正Config.sys和Autoexec.bat中存在的问题要确定GUI启动过程中的问题,只能借助BOOTLOG.TXT文件 ⑸Command prompt only 仅执行完整的实模式 DOS启动过程,进入纯DOS状态加载全部支持Win启动的DOS驱动程序,主要用于只能运行于纯DOS模式下的应用软件或解决严重的系统问题,可用命令Win启动正常的GUI ⑹Safe mode command prompt only最简单的 DOS启动仅执行最基本的IO.SYS、MSDOS.SYS和 COMMAND.COM三个系统文件,不加载默认驱动程序(HIMEM.SYS、IFSHLP.EXE和SETVER.EXE)和CONFIG.SYS, AUTOEXEC.BAT,其它的环境默认值同Win 9X 的设定,该模式无法继续启动正常的或安全模式的GUI,主要用于处理最严重的系统故障。 ⑺Previous MS-DOS version 启动旧版DOS,执行双重启动根目录下应有以.DOS为扩展名保存的五个原DOS系统文件。该选项的出现由MSDOS.SYS中的参数 “BootMulti”控制注意:当MSDOS.SYS中的BootWin=0时,选择本项将启动正常的Win 9X系统 ⑻Safe mode with network support带实模式网络访问的安全模式该选项的出现由MSDOS.SYS中的参数 “NetWork”控制用于排除网络系统的PC故障,可通过实模式网络系统,获得更大的系统支持 2、IO.SYS提供的扩展的DOS默认配置 IO.SYS在启动时与DOS的最大不同,是提供能满足大多数DOS应用的缺省CONFIG.SYS配置,能够自动加载必要的驱动程序,以保证Win 9X正常启动,具体内容如下: HIMEM.SYS :支持1M以上内存,提供扩展内存(XMS)管理保证Win启动的必需文件 DBL

io.sys、msdos.sys这是微软 MS-DOS时代的系统文件,Windows7中的是NT内核,一般来说与系统相关的是ntldr、ntoskrnl.exe等等相关的核心文件。

1、MS-DOS系统启动文件的作用

IO.SYS--输入/输出管理模块

MSDOS.SYS--文件系统管理模块

COMMAND.COM--命令解释器

2、MS-DOS系统启动文件的功能:

IO.SYS(输入/输出管理)---既DOS与各部件之间的联系,此文件管理着计算机的所有的输入/输出等外部设备。如软驱、硬盘、键盘、鼠标、显示器、打印机、扫描仪等。

MSDOS.SYS(文件管理系统)---此文件称为DOS的内核,它主要是用来管理和启动系统的各个部件,为DOS的引导作好准备工作,负责计算机上的文件存储、读出和格式的管理。

COMMAND.COM(命令解释器)---负责计算机上所有命令的解释,是人机对话的翻译器。它主要提供一些DOS的内部命令,并能接受、分析和执行用户输入的命令。

【★】哈搂【★】

.

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://baike.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才完成了它的使命。

.

如果我的解答对解决你の问题有帮助.请点击我的回答下方【选为满意答案】按钮.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11795963.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存