• 计算机开机时会做些什么


    操作系统其实是一个取指执行的过程.

    其中的指就是指针,PC(program count程序计数器)指针,然后从内存找到命令找到地址给cpu处理执行.

    以x86 windowx操作系统为例

    计算机开机时

    (1) 让cpu处于实战模式.

    cpu模式分两种,实战模式和保护模式,两种模式的寻址不同,实战模式是CS<<4+IP寻址.

    (2)寻址

    CS=0xFFF;IP=0x000 寻址找到0xFFF0 (ROM BIOS映射区) 只读内存 Base Input/Output System,这里面有一段代码.

    (3)检查

    因为前面读取的那段内存会执行一段代码,检查硬件(RAM,键盘,显示器,软硬磁盘)所以有时候电脑出故障了就会开不了机.

    (4)读取磁盘

    将磁盘0磁道0扇区读入0x7c00处.512字节为一个扇区,0磁道0扇区就是引导扇区bootsect.s,也就是操作系统的第一段代码

    (5)bootsect

    bootsect叫引导扇区其实就是起一个引导作用,输出开机画面,并且转入0x9002 setup的地盘.

    (6)进入setup

    setup占四个扇区,做了很多重要的事情,这里重点说5个

    1.知道你计算机长啥样,进行一些参数的获取(光标位置,扩展内存数,显卡参数,根设备号...)

    2.将操作系统的system模块移动到内存的0地址处.

    3.初始化gdt表(全局描述符表)

    4.进入cpu保护模式也就是将PE修改成1,也就是让cpu的电路改一下更改cpu寻址操作.此时保护模式寻址CS的含义为索引从gdt中查表,然后加上IP进行寻址(CS所以叫选择子)

    5.寻址进入system模块.

    为什么进入保护模式呢,原因是如果是实战模式的寻址计算操作最多表示20位也就是1M的内存大小,但计算机的内存是很大的所以要换一种寻址计算操作.

    (7)进入到system模块.

    也就是到了模块的第一部分代码head.s,head.s又会初始化一遍gpt表.然后进入main.c(是通过函数是方式,压栈进入)

    (8)main.c进入

    main.c是一个死循环,里面是一些init初始化函数:内存,中断,设备,时钟,cpu... 如果main.c断了,栈弹出然后栈顶为head.s设置的一个中断,然后死机.

    最后一个鲜活的桌面诞生了.

    总结

    所以宏观的说操作系统一开始在磁盘,然后从磁盘转入内存,然后进行一些初始化的操作

    操作系统的故事从现在开始!

  • 相关阅读:
    26. 删除排序数组中的重复项
    巧记“指针数组”与“数组指针”
    在 VC 下清空键盘缓冲区的方法
    负数、取模与取余
    任意键开始、暂停
    int 越界处理
    防闪屏批量绘图
    VC 下如何正确的创建及管理项目
    CSDN博客步骤:
    61 扑克牌中的顺子
  • 原文地址:https://www.cnblogs.com/2462478392Lee/p/14140569.html
Copyright © 2020-2023  润新知