0 介绍

最近开始学习操作系统知识,那么对于学习操作系统来说,遇到的第一个问题便是在计算机开机后,它是如何开始工作的。下面是计算机加载操作系统的流程。

1 加载

当我们打开计算机电源时,
第一步:计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序(BIOS是主板上自带的一块存储器,里边烧录了固定的基本输入输出系统,不是由自己定义)。这个BIOS程序会自动检测主板上各个接口的状态,也就是是否连接了相应的设备(硬盘,网络接口,键盘,串口,并口)。现在大部分的BIOS允许你从软盘、光盘或者硬盘中选择一个来启动计算机。

第二步:计算机将从你所选择的存储设备(硬盘或者USB等)中读取起始的512 bytes(这是存储设备的第一个扇区,计算机系统默认会自动去读取第一个扇区)。这512 bytes的存储会存放两种信息,第一分区表,第二引导程序,在BIOS检测完计算机的硬件状态以后会将执行权限交给这里的引导程序,引导程序存放的是操作系统内核存放的真实位置,可以理解为操作系统的选择列表(多操作系统的时候),储存有操作系统(OS)的相关信息,比如操作系统名称,操作系统内核 (kernel)所在位置等。常用的boot loader有GRUB和LILO。

随后,boot loader会帮助我们加载kernel。kernel实际上是一个用来操作计算机的程序,它是计算机操作系统的内核,主要的任务是管理计算机的硬件资源,充当软件和硬件的接口。操作系统上的任何操作都要通过kernel传达给硬件。Windows和Linux各自有自己kernel。狭义的操作系统就是指kernel,广义的操作系统包括kernel以及kernel之上的各种应用。这里要注意:不管是BIOS还是BootLoader在执行完自己的职责以后都会将控制权交给接下来的那个程序,自己可以说是完全消失了在了内存。最终引导到内核以后整个计算机系统的操作权限就有kernel控制。

实际上,我们可以在多个分区安装bootloader(从主引导分区引导到其他的引导程序),每个bootloader对应不同的操作系统,在读取MBR的时候选择我们想要启动的bootloader。这就是多操作系统的原理。

在底层,驱动会为kernel,硬件,高层应用等提供接口,对于kernel而言,她则是整个系统的一个调度系统,不管是什么硬件或软件,只要按我的接口标准定义相应的高层逻辑就行,kernel仅仅关心调度,并不关心硬件或者软件的实现

不同的linux系统所应用的都是一样的kernel,因为在底层的调度类似没有必要重新开发,他们的不同主要是高层应用的差距

从BIOS–>MBR–>bootloader–>kernel–>init。每一次转换都是一次整个硬件系统的接管,后者接管则前边的系统退出。kernel完成之后就是init,init是linux的第一个进程1号进程,linux没有0号
进程小结:BIOS -> MBR -> boot loader -> kernel。
参考:BIOS -> Kernel(开机都发生了什么)

计算机开机后操作系统的加载过程相关推荐

  1. 在使用Windows 10时,正常开机后Duilib加载资源文件失败

    建议您寻找一台和您相同数位系统的电脑,然后复制一份duilib.dll文件到您的系统中,路径为C:\Windows\system32. 然后在小娜搜索命令提示符,然后鼠标右键一管理员身份打开. 在命令 ...

  2. html动态资源加载进度,JavaScript_快速解决js动态改变dom元素属性后页面及时渲染的问题,今天实现一个进度条加载过程 - phpStudy...

    快速解决js动态改变dom元素属性后页面及时渲染的问题 今天实现一个进度条加载过程,dom结构其实就是两个div 控制里层div的宽width属性,就能实现进度条往前走的效果. 我的进度条是显示下载文 ...

  3. 1wifi 简介(框架)2系统启动后的 wifi加载 过程-图解 3系统启动后的 wifi 加载过程

    http://blog.csdn.net/wh_19910525/article/details/7384480 一.wifi 组建原理: WIFI就是一种无线联网的技术,以前通过网线连接电脑,而现在 ...

  4. IOC容器加载过程及Bean的生命周期和后置处理器

    SpringIOC 容器加载过程 第一步:实例化化容器:AnnotationConfigApplicationContext @Configuration @ComponentScan("c ...

  5. 02.IOC容器加载过程及Bean的生命周期和后置处理器

    Spring思维导图 SpringBean加载流程 SpringIOC加载过程-invokeBeanFactoryPostProcessors SpringIOC 容器加载过程 第一步:实例化化容器: ...

  6. k n:linux kernel 从开机,到加载内核镜像到内存

    原文地址: linux的内核运行原理是怎么样的呢?如何从开机,到加载内核镜像到内存? linux的内核运行原理是怎么样的呢?如何从开机,到加载内核镜像到内存? 最佳答案 本回答由提问者推荐 头像 匿名 ...

  7. linux内核启动以及文件系统的加载过程

    Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...

  8. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

    转http://www.cnblogs.com/zhijianliutang/p/4100103.html 前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的 ...

  9. EXE文件的加载过程

    一个microsoft的.exe程序文件的启动过程 2009-06-16 14:54 2101人阅读 评论(0) 收藏 举报 microsoftmfcwindowsshelldll数据结构 学习win ...

最新文章

  1. IBMDB2数据库软件安装教程
  2. Android BroadcastReceiver广播详解
  3. 如何实现远程登陆,如何实现远程桌面
  4. 编写干净的测试-被认为有害的新内容
  5. django中的admin组件
  6. leetCode题解之Reshape the Matrix
  7. 动态规划——最长上升子序列问题(LIS)
  8. c#打开数据库连接池的工作机制_它是谁?一个比 c3p0 快 200 倍的数据库连接池!...
  9. python中input和raw_input的区别
  10. Unity3D基础10:利用Transform组件移动物体
  11. linux下简单好用的端口映射转发工具rinetd
  12. 算法导论第三版 第4章习题答案
  13. 编码表概述和常见编码表
  14. linux 显卡驱动
  15. python whl文件安装_python whl文件怎么安装
  16. recy拖动item
  17. [转]“荒”是民工用脚投票的权利自救
  18. 618买什么运动装备、最值得入手的运动装备合集
  19. first DG方法:二维ODE的边值问题
  20. Java中常见的各种锁-超全面

热门文章

  1. Django数据库定义
  2. ubuntu server 制作 wifi 发射
  3. c语言时钟ppt单片机,89c51 C语言单片机 时钟程序
  4. ARP攻击和防御实验
  5. [置顶]人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)...
  6. 解决:eclipse引入一个新项目所有jsp报错
  7. dedecms中的封面模板 列表模板 文章模板有什么区别啊
  8. 网络舆情监测公司服务及产品技术功能评判标准详解
  9. 元气森林的企业数字化运营之道
  10. 请求全国各地的geojson的数据