我是靠谱客的博主 孤独白昼,最近开发中收集的这篇文章主要介绍windows系统的启动工作原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 下面就是windows系统的工作原理 
 
 

一、Windows系统的启动过程 


预了解Windows系统的工作原理,我们先从Windows的启动过程来讲解。同样,我们还是以windows XP为例。首先,从

我们按下计算机电源开关,到正式登入到桌面,完成启动,一共需要经历以下5个阶段:  

  1. 预引导(Pre-Boot)阶段; 
  2. 引导阶段;  
  3. 加载内核阶段;  
  4. 初始化内核阶段;  
  5. 登陆。  

下面,就每个启动阶段,我一一的给大家讲解一下:  


1、预引导阶段  

预引导(Pre-Boot)阶段是指,在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时

间,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现

状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计

算机的BIOS定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载

Windows XP的NTLDR(NT  Loader)文件。  

 
2、引导阶段  

  Windows XP 专业版引导阶段包含4个小的阶段。  


  首先,计算机要经过初始引导加载器阶段,在这个阶段里,NTLDR将计算机微处理器从“实模式”转换为“32位平

面内存模式”。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系

统(Windows XP)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使

NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP,到这里,初始引导加载

器阶段就结束了。  

  接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了

boot.ini使系统提供操作系统选择的条件下,计算机显示器会

显示一个操作系统选单,这是NTLDR读取boot.ini的结果。如果在boot.ini中只有一个操作系统选项,或者把timeout

值设为0,则系统不出现操作系统选择菜单,直接引导到那个

唯一的系统或者默认的系统。在选择启动Windows XP后,操作系统选择阶段结束,硬件检测阶段开始。 

  在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后

将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下

的hardware中。  

  硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用

默认的配置文件加载Windows XP专业版。    

3、加载内核阶段  

  在加载内核阶段,NTLDR加载Windows XP内核的。系统加载了Windows XP内核但是没有将它初始化。 接着NTLDR加载硬件抽象层,然后,系统继续加载

HKEY_LOCAL_MACHINEsystem键,NTLDR读取键值来决定哪一个Control Set将被加载。控制集中包含设备的驱动程序以及需要加载的服务。NTLDR加载

HKEY_LOCAL_MACHINEsystemservice...下start键值为0的最底层设备驱动。当作为Control Set的镜像被加载时,NTLDR传递控制给内核,初始化内核阶段就开始了。 


4、初始化内核阶段 

  在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:  


内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINEHARDWARE键。  


  内核通过引用HKEY_LOCAL_MACHINEsystemCurrent的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中

的改变,也不会被修改。 

  系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描

HKEY_LOCAL_MACHINEsystemCurrentControlSetservice...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化。 


  Session Manager启动了Windows XP高级子系统以及服务,启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕。  
5、登陆 
Winlogon.exe启动LSA,同时Windows XP欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。如果设有密码,提示输入有效的用户名或密码。 
 
 
 
二、应用程序、系统、输入输出设备的关系 
 

  首先,我们来看计算机操作系统跟硬件设备的交互关系,操作系统可以操纵输出设备,以执行特定的的功能。例如

声卡发出声音,让显卡发出图形。当然操作系统也可以感知输入设备的状态变化,如鼠标移动、键盘按下,并且能

知道鼠标移动的具体位置、键盘按下的是哪一个字符。 


  其次,我们来看计算机操作系统跟应用程序之间的交互关系,应用程序可以通知操作系统执行某个具体的动作,例

操作系统能够让声卡发出声音,但它并不知道何时让声卡发出何种声音,需要应用程序告诉操作系统何时发出何种

音。


   我来为大家举个例子:这种关系好比有个机器人能够完成行走功能,但它并不知道何时往哪个方向走,需要人来

诉它往哪里走,这里机器人就好比操作系统、人就好比应用程序。那么应用程序是如何通知操作系统执行某个功能

的呢?有过编程经验的人都知道,在应用程序中要完成某个功能,都是以函数调用的形式实现的。同样,应用程序也

是通过函数调用的形式来通知操作系统的。操作系统所能完成的每一个功能,通常有一个特定函数与其对应,也就是

说操作系统把它所能完成的功能以函数的形式提供给应用程序使用。应用程序对这些函数的调用就叫做系统调用。而

这些函数的集合,就是windows操作系统提供给应用程序编程的接口,称为windows API 。


     这里,我再来简要的介绍下windows API,windows API是微软公司随Windows操作系统发布的应用程序接口,是

Windows系统为其下运行的各类应用程序提供的重要服务功能。微软的所有Win32平台都支持统一的API调用,包括函

数、结构、消息、宏及接口。通过Windows系统提供的API服务功能,应用程序可以充分挖掘Windows系统的潜力。API

的核心是一组用C语言编写的供外部应用程序调用的函数过程,这些函数封装在Windows系统的一系列DLL动态库文件

中。通过调用动态库文件中的函数,程序员可以在自己开发的应用中方便地向系统请求或执行更低级的设备访问,利

用和控制系统资源,实现与系统相同或相似的功能。由此可以降低应用系统开发的复杂性,提高开发效率,并且无论

是应用供应商还是最终用户都无需支付额外的费用。如Create windows 就是一个API函数,应用程序中调用这个函

数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。同样,操作系统也能将输入设备的变化上传给应

用程序。如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪

个键,操作系统并不决定这一事件如何作出反应,而是将这一事件转交给相应应用程序,由应用程序来决定如何对这

一事件作出反应。好,这里我再为大家举一个形象的例子:好比有一只蚊子叮了我们一口,我们的神经末梢,就相当

于操作系统,马上感知到这一事件,它不做什么决定,而是马上将这一事件传递给大脑,大脑在这里就相当于应用程

序。我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反应的过程就是消

息响应。 


     那么操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(message)来实现的。操作系统

将每一个事件都包装成一个称为消息的结构体MSG来传递给应用程序的。 

最后

以上就是孤独白昼为你收集整理的windows系统的启动工作原理的全部内容,希望文章能够帮你解决windows系统的启动工作原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部