Linux与Windows xp操作系统启动过程
Linux启动过程:
第一步,加载BIOS,当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。
第二步,读取MBR,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
第三步,Boot Loader,就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。
第四步,加载内核,根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
第五步,用户层init依据inittab文件来设定运行等级,内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
关于/etc/inittab文件的学问,其实还有很多
第六步,init进程执行rc.sysinit,在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的。
第七步,启动内核模块,具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
第八步,根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
第九步,执行/etc/rc.d/rc.local,你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
第十步,执行/bin/login程序,进入登录状态,此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。
参考文件:http://bbs.chinaunix.net/thread-835918-1-1.html
Windows xp 启动过程
第一步,电源开启自检过程,在打开计算机电源时,首先开始电源启动自检过程。在BIOS中包含一些基本的指令,能够帮助计算机在没有安装任何操作系统的情况下进行基本的启动。电源启动自检过程首先会从BIOS中载入必要的指令,然后进行如下一系列的自检操作:进行硬件的初始化检查,例如检查内存的容量等,验证用于启动操作系统的设备是否正常,例如,检查硬盘是否存在等。从CMOS中读取系统配置信息。在完成了电源启动的自检之后,每个带有固件的硬件设备,如显卡和磁盘控制器,都会根据需要完成内部的自检操作。
第二步,初始化启动过程,在完成了电源启动自检过程之后,存储在CMOS中的设置,例如磁盘的引导顺序等,能够决定由哪些设备来引导计算机。例如,可以设置磁盘的引导顺序为首先通过A盘引导,其次才通过C盘引导,则系统会首先尝试用A盘引导系统,如果A盘存在并可引导,则通过A盘引 导。如果A盘不存在,则通过C盘引导系统。如果A盘存在,但不是引导盘,则系统地提示系统不可引导。一般来说通常会使用硬盘引导。在进行硬盘引导时,启动过程通常按照如下的步骤进行:
系统首先检测打开电源的硬盘。若该硬盘是启动盘,BIOS就将主引导记录(Main Boot Record――MBR)中的引导代码载入内存。接着,BIOS会将启动过程的运行交给MBR来进行。计算机搜索MBR
中的分区表,找出活动分区(Active Partition)。计算机将活动分区的第一个扇区中的引导代码载入到内存。引导代码检测当前使用的文件系统是否可用。引导代码查找ntldr文件,找到之后启动它。(该文件ntldr
文件将来在登录进入windows系统之后C盘根目录隐藏文件下找到)BIOS 将控制权转交给ntldr,由ntldr完成操作系统的启动。
注意:这里简单介绍一下MBR的概念。MBR位于启动磁盘的第一个扇区,其中主要包含引导代码(Boot Code)和分区表(Partition Table)数据。引导代码主要用于引导系统。而分区表则主要用于标识基本分区和扩展分区
第三步,引导程序载入过程,本过程主要由ntldr 文件完成。 Ntldr从引导分区载入启动文件,然后完成如下一些任务。
Ntldr从引导分区载入启动文件,然后完成如下一些任务。
1、在基于X86CPU的系统下,设置CPU的运行使用32位的Flat 内存模式 。 对基于X86CPU的计算机来说,第一次启动的时候总是进入所谓的实模式 (RealMode)。在实模式下CPU的某些特性不能完全 发挥,这是因为它要保证同8位或16位的CPU(如8086、8088)相兼容。实模式下由于系统规格的限制,无法对大容量内存进行直接存取,而必须通过 分段的方式完成。对于32位的Windows XP来说,8位或16位的CPU显然是无用的。 ntldr首先会将CPU切换到32位的模式, 从而确保Windows XP的正常。在CPU的32位模式下,可以对大容量内存进行直接存取,而彻底抛弃了原先在8位或16位下分段存取内存的不便。这 也是为什么32位模式称作Flat内存模式的原因。
2、启动文件系统 ntldr 中包含相应的代码,能够帮助Windows XP完成对NTFS或FAT格式的磁盘进行读写。从而能够读取、访问和复制文件。
3、读取boot.ini 文件 在这一步 中,ntldr 会分析boot.ini文件,确定操作系统分区所在的位置。 对于单引导的系统来说,ntldr 会通过启动ntdetect.com来初始化硬件检测状态。 对于多引导系统来说,首先由用户在操作系统菜单中选择要启动的操作系统然后而由 ntldr进行相应的操作。 如果用户选择启动ntdetect.com来初始化硬件检测状态。 如果选择启动旧式的微软操作系统, 如MS-DOS、Windows 9x/ME,ntldr会将从bootsect.dos文件中读取MBR代码,然后将控制权交给bootsect.dos中的MBR。
4、根 据需要提供启动菜单 在这一步,如果用户按下F8键,则会显示启动菜单,允许用户选择不同的启动方式,例如使用安全方式启动,或是使用最后一次 正确的配置启动等。 5、检测硬件和硬件配置 在这一步中,ntldr 启动ntdetect.com文件进行基本的设备检查,然后将 boot.ini文件中的信息,以及注册表中的硬件和软件信息传递给ntoskrnl.exe 程序。
第四步,检测和配置硬件过程,在处理完boot.ini文件之后,ntldr会启动ntdetect.com程序。在基于X86的系统 中,ntdetect.com会通过调用系统固件程序收集安装的硬件信息,然后由ntdetect.com将这些信息传递送回ntldr。Ntldr获取 从ntdetect.com发来的信息后,将这些信息组织成为内部的断气结构形式,然后由ntldr 启动ntoskrnl.exe ,并将这些信息发送给它。 Ntdetect.com 会收集如下类型的硬件信息: 系统固件信息,例如时间和日期等 总线适配器的类型 显卡适配器的类型 键盘 通 信端口 磁盘 软盘 输入设备,例如鼠标 并口 安装在ISA槽中的ISA设备 完成信息 的检测之后,Windows XP会在屏幕上显示那个著名的Windows XP商标,并显示一个滚动的,告诉用户Windows 的启动进程。
第五步,内核加载过程,在此过程中,ntldr实施下列一些功能。
1、将内核(ntoskrnl.exe)和硬件抽象 层(hal.dll)载入到内存
2、加载控制集信息 在这一过程中,ntldr从注册表中的HKEY_LOCAL- _MACHINE\SYSTEM位置加载相应的 控制集(Control Set)信息,并确定在启动过程中要加载的设备驱动。
3、加载设备驱 动程序和服务 在这一步中,系统会在BIOS的帮助下开始加载设备驱动程序,以及服务。 4、启动会话管理器 完成上面的 过程之后,内核会启动会话管理器(Session Manager),这是一个名为 smss.exe 的程序,其作用表现如下: (1) 创建系统环境变量 (2)创建虚拟内存页面文件
第六步,用户登录过程,在这一过程中,Windows 子系统会启动winlogon.exe,这是一个系统服务,用于提供对Windows 用户的登录和注销的支持。Winlogon.exe 可以完成如下一些工作: 启动服务子系统(services.exe),也称服务控 制管理器(Service Control Manager, SCM)。 启动本地安全授权(Local Security Authority , LSA)过程(lsass.exe)。在开始登录提示的时候,对Crtl+Alt+Del组合键进行分析处 理。 一个图形化的识别和认证组件收集用户的帐号和密码,然后将这些信息安全地传送给LSA以进行认证处理。如果用户提供的信息是正确的,能够通过 认证,就允许用户对系统进行访问。 要注意的是,如果您的计算机中,只有Administrator这一个用户,那么在欢迎屏幕中就会显示 Administrator 用户项。如果您的计算机中不仅有 Administrator用户,还有别的可以交互登录的用户,那么欢迎屏幕中就只显示出Administrator之外 的用户,而不显示Administrator用户。 如果用户希望以Administrator用户登录,该怎么办呢?实际很简单,直接在欢迎 屏幕中按下两次Crtl+Alt+Del组合键,即可打开标准的登录窗口,可以再输入Administrator 的用户名和密码,以便用最高管理员的身份登录。
第七步,即插即用设备的检测过程
对即插即用设备的检测,实际上是和登录过程异步进行的。由系统固件、硬件、设备驱动和系统特性决定了Windows XP如何对新设备进行检测和枚举。当即插即用组件正常工作后,Windows XP会对新设备进行检测,为它们分配系统资源,并在尽量不要用户提供选择的情况下,为新设备安装一个合适版本的驱动程序。
至 此,Windows XP已成功启动!!!
Linux与Windows xp操作系统启动过程的更多相关文章
- 从linux内核代码分析操作系统启动过程
朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 在本次的实验中, ...
- 笔记本双系统XP与Ubuntu,重装XP后如何恢复grup引导,另附操作系统启动过程
背景:笔记本双系统(XP与Ubuntu),其中XP系统因问题重装了一下,重装后不能识别Ubuntu系统(该系统装在另一个磁盘中),直接进入了XP系统. 解决办法:利用U盘(Ubuntu系统)启动机器, ...
- ucore lab1 操作系统启动过程 学习笔记
开头赞美THU给我们提供了这么棒的资源.难是真的难,好也是真的好.这种广查资料,反复推敲,反复思考从通电后第一条代码搞起来理顺一个操作系统源码的感觉是真的爽. 1. 操作系统镜像文件ucore.img ...
- Linux:Day13(上) CentOS系统启动流程
CentOS 5和6的启动流程 Linux:kernel+rootfs kernel:进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs: glibc 库:函数集合,functi ...
- 初试 Windows XP Embedded 系统开发1
目前 Windows PE(Preinstallation Environment)和 Windows XP Embedded 是可以脱离主机里的硬盘独立运行的 Windows 操作系统,Window ...
- Linux 系统启动过程,Linux 系统目录结构
一.Linux 系统启动过程 linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立 ...
- 二、Linux 系统启动过程
Linux 系统启动过程 linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端 ...
- linux学习-Linux系统启动过程
linux系统启动过程 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行init. 系统初始化. 建立终端 . 用户登录系统. 内核引导 电源开机后,首 ...
- 为什么要有uboot?带你全面分析嵌入式linux系统启动过程中uboot的作用
1.为什么要有uboot 1.1.计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统.典型的计算机系统有:PC机(台式机+笔记本).嵌入式设备(手机.平板电脑.游戏机).单片机(家用 ...
随机推荐
- 循环队列java实现
public class SeqHeap { Object[] data; int font; int rear; int maxSize; public SeqHeap(int maxSize) { ...
- nginx的URL重写应用实例
1,NGINx的URL重写 NGINX 的URL重写模块用的比较多,主要使用的命令有if rewrite set break 2 if命令 语法如下"" 语法:if(conditi ...
- Servlet和JSP学习指导与实践(一):Servlet API初探
前言: JavaSE如何跨度到JavaEE?原本java语言只是专门用于application桌面小应用程序的开发,但自从其追随CGI进入服务器端的开发之后便一发不可收拾.先是Servlet1.0,再 ...
- cookie、sessionStorage、localStorage
转自--http://www.cnblogs.com/fly_dragon/p/3946012.html cookie Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的 ...
- SVN集中式版本控制器的安装、使用与常见问题汇总
SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统,集中式版本控制器 官方网站:https://www.visualsvn.com/ 下载右边的服务器端,左边的客 ...
- wildfly jboss 优化配置
参考调优:http://www.mastertheboss.com/jboss-server/jboss-performance/jboss-as-7-performance-tuning?showa ...
- js函数传参
函数传参:重用代码,首先保持html代码相对一致,把核心主程序用函数包起来,把每组不同的值找出来,通过传参的方式减少代码的使用 下面代码是我早期练习的,大家随便看看就好 <!DOCTYPE ht ...
- 使用spring注解@Controller @Service @Repository简化配置
前言:在web项目中引入spring框架中的配置文件,我们给每一个java bean进行相关配置可以非常安全,便捷的管理我们的bean.那么,问题来了,如果一个项目中所涉及到的java bean十分庞 ...
- Spark Standalone
环境:CentOS 6.6 x64 选用Spark版本 1.4.1.Zookeeper 3.4.6 一.安装 1.Spark运行模式 Local:使用于windows和linux平台(多用于测试,细 ...
- struts2 s:file标签使用及文件上传例子
<s:form action="uploadaction" method="post" enctype="multipart/form-da ...