小议计算机存储之六.操作系统启动过程
<本文主要来源 en.wikipedia.org 更多内容请参考 Wikipedia>
草木瓜
20080903
前言
本文是本系列文章的最后一篇,主要介绍MS-DOS,各类Windows和Linux操作系统的启动过
程,用了这么久的操作系统是该系统地了解一下启动的完整过程。
一、MS-DOS 启动过程
当PC启动时,读取启动盘第一个扇区并执行其中的引导代码。如果发现了DOS 引导扇区,
会将IO.SYS的前三个扇区加载到内存中,并将PC控制权交由IO.SYS(输入输出模块)。
IO.SYS接管计算机控制权执行如下操作:
首先将IO.SYS其他部分内容加载到内存,依此初始化每个缺省设备
接着加载处理MS-DOS内核文件MSDOS.SYS,不过在MS-DOS 7.0中,MSDOS.SYS改
为启动配置文件
再者处理 CONFIG.SYS文件,CONFIG.SYS是重要的配置文件,是可以进行编辑的文本
文件
内容示例:
DEVICE=C:/DOS71/ECHO.SYS w/e/l/c/o/m/e ..
DEVICE=C:/DOS71/ECHO.SYS c/o/p/y/r/i/g/h/t ..
DEVICE=C:/DOS71/HIMEM.SYS
...
SHELL=COMMAND.COM /P /E:640
...
SET PATH=C:/DOS71; ..;
注:SHELL行表示SHELL环境使用command.com,启动的工作路径为C:/DOS71,环境
大小是640字节,/p表示这个是父进程,不能够关闭或使用exit退出。更多详细内容请参
考wiki。
根据CONFIG.SYS配置加载相应的SHELL,MS-DOS一般为COMMAND.COM
处理COMMAND.COM时,会调用AUTOEXEC.BAT批处理脚本
AUTOEXEC.BAT里面的命令都是可以SHELL环境下执行的,主要作用是设置一些环境变
量。如键盘,声卡等等。同时也会初始一些低级的系统工具,如磁盘缓存,鼠标驱动,
键盘驱动等。最后显示命令提示符。
二、基于MS-DOS的Windows启动过程
Windows 3.x/95/98/Me 前期引导的由MS-DOS负责。在启动阶段,处理config.sys和执行autoexec.bat
同时会读取配置文件WIN.INI和SYSTEM.INI,并加载相应的虚拟设备驱动(从SYSTEM.INI或者
HKLM/System/CurrentControlSet/Services/VxD)。所有系统配置文件和设备驱动都被加载后,32
位vxd消息服务(Msgsrv32)会启动mprexe.exe,准备用户登录和网络登陆,当用户登陆到Windows
后,系统加载Explorer.exe,进入Windows。
基于MS-DOS的Windows,可以在启动到DOS的命令提示符下,键入win,手工启动Windows。
此时实际上是调用win.com文件。
详细的启动过程见转载的《Win 98系统启动过程全揭密》一文。
http://blog.csdn.net/liwei_cmg/archive/2008/09/15/2931385.aspx
三、基于Win NT 操作系统的启动过程
WIN NT与基于DOS的Windows有显著的不同,其操作系统引导程序为 NTLDR。引导启动过程
如下:
x86或x64平台下,计算机以实模式启动并加载NTLDR。NTLDR是一个二进制文件,有两部分
组成,StartUp module 和 OS loader 。StartUp module 的主要任务就是将计算机切换到保护模式。
OS loader 主要包括识别访问IDE硬盘的分区文件系统(如FAT, NTFS等等)的基本功能,如果是
SCSI硬盘,还需要加载Ntbootdd.sys文件,获取相应的SCSI驱动。
引导程序接着读取boo