zoukankan      html  css  js  c++  java
  • 第七章——Windows内核基础-内核理论基础(内存空间布局,Windows与内核启动过程)

    1.内存空间布局
        X86系统支持32位寻址,因此支持2^32=4GB的虚拟内存空间,windwos系统的内存主要分为内核空间和应用层空间
    每部分占2GB,其中包括一个64KB的NULL空间以及非法区域。
    windows内存的逻辑地址分为两部分:
    段选择符和偏移地址,CPU在进行地址翻译的时候,先通过分段机制计算出一个线性地址,在通过页表机制将线性地址映射到物理地址,再从物理内存中读取数据和指令
    X64的内存布局与X86的内存布局类似,X64下存在一些空洞,并且X64的最大寻址空间为2^64KB的寻址空间
    但是实际上X64的空间太大,很多没有用到。X64下一般只支持到40多位
     
     
    2.Windows与内核启动过程
    windows启动步骤如下:
         ⑴启动自检阶段
                打开电源时,计算机先从BIOS中载入指令,然后进行一系列的自检操作,进行硬件的初始化检测(硬盘,键盘等等),同时在屏幕上显示信息
       
         ⑵初始化启动阶段
                   自检完成后,根据CMOS设置,BIOS加载启动盘,将主引导记录(MBR)中的引导代码载入内存执行,接着,启动过程由MBR执行,启动代码搜索MBR中的分区表
            找到活动分区,将第一个扇区中的引导代码载入内存,引导代码检测当前使用的文件系统,查找ntldr文件,找到之后将启动它,BIOSde 控制权交给ntldr,由ntlad完成操
            作系统的启动工作(windows7是bootmgr)
        
        ⑶Boot加载阶段
                这里启动分区加载ntldr,然后对ntldr进行如下设置
                    ①设置内存模式,如果是32位操作系统,设置32-bit flat memory, 64位反之
                    ②启动一个简单的文件系统,定位boot.ini. ntoskrnl.Hal等启动文件
                    ③读取boot.ini文件
       
         ⑷检测和配置硬件阶段
                在这个阶段会检查和配置一些硬件设备,显示适配器,键盘,磁盘,鼠标等等
       
         ⑸内核加载阶段
                ntldr将首先加载windows内核Ntoskrnl.exe和硬件抽象层(HAL).HAL会对硬件底层的特征进行隔离,为操作系统提供统一接口,接下来 ntldr从注册表读取驱动程序,
            依次加载驱动,初始化底层设备驱动,在注册表中找start键的值为0和1的设备驱动 ,start键的值为0.1.2.3.4,数值越小,启动越早。0表示内核刚刚初始化,此时加载的都是与系统核心有关的重要驱动程序。1表示稍晚一些 ,2是从登录界面出现的时候,3表示需要手动加载,4表示禁止加载                                
       
         ⑹windows的会话管理启动
            驱动程序记载完成,内核会启动会话管理器,这是smss.exe的程序,是windows系统中第一个创建的进程,作用:
            1.创建系统环境变量
            2.加载win32k.sys 它是windows子系统的内核模式部分
            3.启动csrss.exe ,它是windows子系统的用户模式部分
            4.启动winlogon.exe(后面解释)
            5.创建虚拟内存页面文件
            6.执行上次重启前未执行的重命名工作
       
         ⑺登陆阶段
            windows子系统启动的winlogon.exe系统服务提供对windows用户的登陆和注销,可以完成如下操作:
            1.启动服务子系统(services.exe) 也称服务控制管理器 SCM
            2.启动本地安全授权(LSA)过程
            3.显示登陆界面
            登陆过程中对用户的账号密码传递给LSA后,通过之后,用户就可以操作windows系统
        
    win7和XP在启动过程中的区别
    • BIOS通过自检后,将MBR载入内存并执行,引导代码找到管理器Bootmgr
    • Bootmgr寻找活动分区Boot文件夹中的启动配置数据BCD文件,读取对应的语言启动菜单,然后再屏幕上显示多操作系统选择画面
    • 选择win7后,Bootmgr就会读取系统文件 winload(在system文件夹中)
    • 此时系统的执行权都交给winload, winload加载win7的内核,硬件,服务等等,然后加载桌面信息,从而启动系统        
     
    新一代的系统引导方式UEFI和GPT
        上面说的系统引导与启动,主要借助BIOS和MBR完成系统的引导和启动,具有一定的局限性,局限性:磁盘逻辑块地址是32位,最多表示2^32个扇区,
    而且每个扇区大小一般都是512字节,所以最多支持2^32*521=2*2^20字节(2TB)在BIOS中,启动操作系统之前必须从硬盘上读取扇区中读取启动代码,然后从分区中引导启动操作系统,对扇区的操作远不上分区中文件的操作那样简单
        为了打破BIOS和MBR引导的局限,新的UEFI和GPT。
    UEFI:统一的可扩展固件接口。在UEFI中,用于表示LBA的地址还是64位,突破了BIOS和MBR分区容量问题,UEFI本身就是一个操作系统,具有文件系统,能够直接读取FAT中的文件,可以将windwos安装程序做成efi类型的应用程序,然后放到任意分区直接运行,在UEFI中不需要引导操作,不需要活动分区,只需要在FAT32分区活在U盘中,通过这个分区或者U盘启动windows
        与MBR分区表比,GPT(全区唯一标识分区表)对分区数量没有限制,但是windows还是将GPT将分区限制到128个,GPT可管理磁盘大小达到18EB,因此只有基于UEFI平台的主板才支持GPT分区引导启动

     

  • 相关阅读:
    第13组 Beta (2/6)(俞子君)
    第13组 Beta (1/6)(俞子君)
    第13组 Alpha (6/6)(俞子君)
    第13组 Alpha (5/6)(俞子君)
    第13组 Alpha (4/6)(俞子君)
    第13组 Alpha (3/6)(俞子君)
    第13组 Alpha (2/6)(俞子君)
    番茄蛋花汤口罩识别系统汇报
    β(56/6)
    β(34/6)
  • 原文地址:https://www.cnblogs.com/Tempt/p/10159354.html
Copyright © 2011-2022 走看看