学习笔记:操作系统启动过程

参考资料:
1、《操作系统真象还原》郑钢
2、《操作系统引导探究》 谢煜波

操作系统启动过程

  1. 按下电源后:
    电源键连接的电信号线发送一个电信号给主板,主板将电信号传送给计算机供电系统,然后供电系统开始工作,为整个硬件系统进行供电,计算机开始运行;
  2. 计算机开机时:
    CS = 0xFFFF, IP = 0x0000(在开机的瞬间,CPU的CS:IP寄存器被强制初始化为 OxFOOO: OxFFFO。)
    为什么要指向这个位置呢?请看图:
  3. BIOS启动后(由图可知步骤2就是在为启动BIOS做准备。):
    1)BIOS启动一个程序进行主机自检,自检的目的就是确保硬件系统的每一个部分都得到了电源支持;
    2)接下来 BIOS 读取 BIOS 中的相关设置,得到引导驱动器的顺序,然后依次检查,直到找到可以用来引导的驱动器(或说可以用来引导的磁盘,包括软盘、硬盘、光盘等),然后调用这个驱动器上磁盘的引导扇区进行引导;
    怎么确定哪个磁盘是用来引导的呢?
    BIOS先将磁盘的第一个扇区(磁盘最开始的 512 字节)载入内存,放在 0x0000:0x7c00处,如果这个扇区的最后两个字节是“55 AA”,那么这就是一个引导扇区,这个磁盘也就是一块可引导盘。通常这个大小为 512B 的程序就称为引导程序(boot)。如果最后两个字节不是“55 AA”,那么 BIOS 就检查下一个磁盘驱动器。
    还有一个问题确定引导盘并将引导扇区(主分区)的内容加载到内存中干什么呢?接下来BIOS 又要干什么呢?
    要回答以上问题我要先了解一下引导扇区中都有哪些内容:
    引导扇区中的内容是:
    (1) 446 字节的引导程序及参数;
    (2) 64 字节的分区表;
    (3) 字节结束标记 Ox55 Oxaa;
    BIOS将引导扇区中的内容加载到内存中后,BIOS会将CPU的控制权交给引导程序。
    我还有个问题:引导程序的作用是什么?BIOS为什么会将CPU的控制权交给它呢?
    在引导扇区(主分区)的内容中,有64字节的分区表,每个分区表占16个字节,共4个分区表(这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。)。
    我们在安装操作系统的时候,会选择这四个分区中的一个,并将安装操作系统的分区设置为活动分区(就是将该分区的分区表项的活动状态标志设置为0x80。)操作系统的内核加载器就存放在活动分区中。
    由以上解释可得,引导程序的作用就是找到遍历4个分区找到活动分区。
    (注:内核加载器在分区中的位置也是固定的,就在分区最开始的扇区。)
  4. 引导程序将CPU的控制权交给内核加载器,内核加载器加载操作系统内核

学习笔记:操作系统启动过程相关推荐

  1. Hadoop学习笔记—10.Shuffle过程那点事儿

    Hadoop学习笔记-10.Shuffle过程那点事儿 一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduc ...

  2. 浅谈-LINUX 操作系统启动过程

    LINUX 操作系统启动过程 通过一段时间的学习已经对linux有了一定的了解,接下来就开始研究一下linux 操作系统的启动过程吧.当然这是为了让大家比较容易发现linux启动过程中容易发生问题的地 ...

  3. 计算机启动操作系统的过程,操作系统启动过程

    操作系统启动过程简单分为四部分,从BIOS自检.系统引导.启动内核.初始化系统.其中每个部分又分为多个子部分,操作系统的建立是一个相对比较复杂的事情.以下以Linux2.6.32版本为基础,介绍操作系 ...

  4. 5G/NR 学习笔记 - RAR随机接入过程

    5G/NR 学习笔记 - RAR随机接入过程 随机接入的目的 在小区搜索过程之后,UE已经与小区取得了下行同步,因此UE能够接收下行数据.但UE只有与小区取得上行同步,才能进行上行传输.UE通过随机接 ...

  5. 强化学习学习笔记——马尔可夫决策过程(二)

    强化学习学习笔记--马尔可夫决策过程(二) 马尔科夫奖励过程(Markov Reword Process,MRP) 爱学习的马尔科夫蛙 状态值函数(State-Value Function) 马尔科夫 ...

  6. OpenGL超级宝典学习笔记——操作矩阵

    为了更强大的功能和灵活性,我们有时需要直接操作矩阵.在OpenGL中4x4的矩阵用包含16个浮点数值的一维数组来表示,而不是用二维的4x4的数组来表示.OpenGL之所以这么做,因为使用一维数组更高效 ...

  7. TCP IP学习笔记① 互联网通信过程

    文章目录 一.TCP/IP和OSI模型 二.协议分层 2.1 物理层 2.2 数据链路层 2.2.1 以太网协议 2.2.2 MAC地址 2.2.4 广播 2.3 网际层 2.3.1 IP地址     ...

  8. 【C++程序设计教程(第三版)钱能】 学习笔记 上半部/C++过程化语言基础

    ◆ 第一部分 C++过程化语言基础 >> 在生成可执行程序之前,C++忽略注释,并把每个注释都视为一个空格. ◆ 第2章 基本数据类型与输入/输出 >> 匈牙利标记法(Hung ...

  9. 操作系统启动过程——硬件自检+系统引导+系统加载+系统登录

    以下的内容都是在网上搜集并整理的,希望有问题的朋友在提问之前能先在这里看一看,不要浪费了众多为网络奉献的众多网友的心血! 电脑及操作系统的启动过程是一个很复杂的过程,对于我们大多数只是希望把电脑玩的更 ...

最新文章

  1. python二进制打开(rb)和文本格式打开(r)什么区别?
  2. lua学习笔记之环境
  3. java加密方式有哪些_面完平安JAVA,他们说了这些
  4. codeforces 721E Road to Home
  5. websocket实现单聊
  6. 29. ExtJs - Struts2 整合(1) - 登录页面
  7. 我的内核学习笔记15:海思Hi3516平台GPIO使用记录
  8. DevExpress v18.1新版亮点——ASP.NET Bootstrap篇(二)
  9. Promise机制(持续更新中)
  10. 人活着,就应该对其他人贡献价值
  11. 清除或重新创建Ruby on Rails数据库
  12. ftp服务器多用文件夹权限,自己动手搭建隔离用户的FTP服务器之权限分配(二)...
  13. 类似endnote_除了EndNote,竟还有如此强大的文献管理软件!重点是正版免费!
  14. STM32利用DCMI对并口ADC高速数据采样
  15. 取之盈:微信电脑多开代码、电脑多开微信bat文件
  16. 高等代数--双线性空间与辛空间
  17. 学习java的第十九天,static关键字、隐匿代码块的学习
  18. 最新版 sublime text 3 切换中文方法
  19. 尚学堂-HTML-CSS(基础)的学习记录
  20. 第3集丨通往圣贤之路

热门文章

  1. AutoHotkey制作自己的Launchy --- 我的运行窗口
  2. bootstrap之carousel
  3. 权威发布2018北京春节期间空气质量受烟花爆竹影响几何
  4. 如何实现Android两个模拟器之间的通信
  5. mysql教程 主键_MySQL创建主键
  6. Linux测试IP是否联通(两种方法)
  7. 下辈子,无论爱与不爱,都不会再见
  8. HTML常用代码合集速查表
  9. 【Pandas】对比两列取最大值生成新的一列
  10. 从键盘输入一批字符,以@结束,按要求加密并输出。