学习笔记:操作系统启动过程
学习笔记:操作系统启动过程
参考资料:
1、《操作系统真象还原》郑钢
2、《操作系统引导探究》 谢煜波
操作系统启动过程
- 按下电源后:
电源键连接的电信号线发送一个电信号给主板,主板将电信号传送给计算机供电系统,然后供电系统开始工作,为整个硬件系统进行供电,计算机开始运行; - 计算机开机时:
CS = 0xFFFF, IP = 0x0000(在开机的瞬间,CPU的CS:IP寄存器被强制初始化为 OxFOOO: OxFFFO。)
为什么要指向这个位置呢?请看图:
- 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个分区找到活动分区。
(注:内核加载器在分区中的位置也是固定的,就在分区最开始的扇区。) - 引导程序将CPU的控制权交给内核加载器,内核加载器加载操作系统内核
学习笔记:操作系统启动过程相关推荐
- Hadoop学习笔记—10.Shuffle过程那点事儿
Hadoop学习笔记-10.Shuffle过程那点事儿 一.回顾Reduce阶段三大步骤 在第四篇博文<初识MapReduce>中,我们认识了MapReduce的八大步骤,其中在Reduc ...
- 浅谈-LINUX 操作系统启动过程
LINUX 操作系统启动过程 通过一段时间的学习已经对linux有了一定的了解,接下来就开始研究一下linux 操作系统的启动过程吧.当然这是为了让大家比较容易发现linux启动过程中容易发生问题的地 ...
- 计算机启动操作系统的过程,操作系统启动过程
操作系统启动过程简单分为四部分,从BIOS自检.系统引导.启动内核.初始化系统.其中每个部分又分为多个子部分,操作系统的建立是一个相对比较复杂的事情.以下以Linux2.6.32版本为基础,介绍操作系 ...
- 5G/NR 学习笔记 - RAR随机接入过程
5G/NR 学习笔记 - RAR随机接入过程 随机接入的目的 在小区搜索过程之后,UE已经与小区取得了下行同步,因此UE能够接收下行数据.但UE只有与小区取得上行同步,才能进行上行传输.UE通过随机接 ...
- 强化学习学习笔记——马尔可夫决策过程(二)
强化学习学习笔记--马尔可夫决策过程(二) 马尔科夫奖励过程(Markov Reword Process,MRP) 爱学习的马尔科夫蛙 状态值函数(State-Value Function) 马尔科夫 ...
- OpenGL超级宝典学习笔记——操作矩阵
为了更强大的功能和灵活性,我们有时需要直接操作矩阵.在OpenGL中4x4的矩阵用包含16个浮点数值的一维数组来表示,而不是用二维的4x4的数组来表示.OpenGL之所以这么做,因为使用一维数组更高效 ...
- 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地址 ...
- 【C++程序设计教程(第三版)钱能】 学习笔记 上半部/C++过程化语言基础
◆ 第一部分 C++过程化语言基础 >> 在生成可执行程序之前,C++忽略注释,并把每个注释都视为一个空格. ◆ 第2章 基本数据类型与输入/输出 >> 匈牙利标记法(Hung ...
- 操作系统启动过程——硬件自检+系统引导+系统加载+系统登录
以下的内容都是在网上搜集并整理的,希望有问题的朋友在提问之前能先在这里看一看,不要浪费了众多为网络奉献的众多网友的心血! 电脑及操作系统的启动过程是一个很复杂的过程,对于我们大多数只是希望把电脑玩的更 ...
最新文章
- python二进制打开(rb)和文本格式打开(r)什么区别?
- lua学习笔记之环境
- java加密方式有哪些_面完平安JAVA,他们说了这些
- codeforces 721E Road to Home
- websocket实现单聊
- 29. ExtJs - Struts2 整合(1) - 登录页面
- 我的内核学习笔记15:海思Hi3516平台GPIO使用记录
- DevExpress v18.1新版亮点——ASP.NET Bootstrap篇(二)
- Promise机制(持续更新中)
- 人活着,就应该对其他人贡献价值
- 清除或重新创建Ruby on Rails数据库
- ftp服务器多用文件夹权限,自己动手搭建隔离用户的FTP服务器之权限分配(二)...
- 类似endnote_除了EndNote,竟还有如此强大的文献管理软件!重点是正版免费!
- STM32利用DCMI对并口ADC高速数据采样
- 取之盈:微信电脑多开代码、电脑多开微信bat文件
- 高等代数--双线性空间与辛空间
- 学习java的第十九天,static关键字、隐匿代码块的学习
- 最新版 sublime text 3 切换中文方法
- 尚学堂-HTML-CSS(基础)的学习记录
- 第3集丨通往圣贤之路