① 第一步,开机直接访问BIOS ROM的0xFFFF0。

开机以后,CS寄存器置为0xFFFF,IP寄存器置为0x0000。这样一来,CPU就会要求访问地址为0xFFFF0的这个地方。这个地址实际上不是内存的地址,它被地址控制器(实际上是南桥北桥)映射到 BIOS ROM里,而这个地址的ROM中存放着一条跳转指令。

② 第二步,访问BIOS ROM中的初始化程序。

0xFFFF0中这条跳转指令,跳转至BIOS ROM的某个地址。从这开始是一段ch,把这段程序复制到内存中执行。作用:一方面 初始化硬件(如内存等);另一方面 从硬盘加载引导程序(具体方法是 从0柱0面0扇区开始寻找,如果扇区最后是”55 AA”,则说明找到该引导程序,否则继续寻找下一扇区,直到找到引导程序)。找到引导(boot)程序之后 复制到内存的 0x07c00——0x7dff(因为这一块是空的可以放)中,然后跳到该地址执行引导程序。

只读内存(read-only memory,缩写为ROM)发明,开机程序被刷入ROM芯片,计算机通电后,第一件事就是读取它。

这块芯片里的程序叫做"基本輸出輸入系統"(Basic Input/Output System),简称为BIOS

BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做"硬件自检"(Power-On Self-Test),缩写为POST

如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。

到此为止,一切都是硬件自动完成的,是不可改变的。从下面开始,执行的程序可以由程序员自由控制了。

③ 第三步,引导程序开始执行。

引导程序把操作系统硬盘读入到内存中,并跳到内存操作系统开始地址。具体方法是把软盘中10个柱面的内容都读到内存中,推算(软盘在内存的开始地址+操作系统在软盘中的相对地址=操作系统在内存中的地址)出操作系统的开始地址,然后跳到该地址。

④ 第四步,开始执行操作系统程序。

开始执行操作系统程序。

控制权转交给操作系统后,操作系统的内核首先被载入内存。以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代。

然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。

至此,全部启动过程完成。

总结

① 开机访问0xFFFF0地址

② 跳转到BIOS ROM的初始化程序

③ 把BIOS ROM中的初始化程序复制到内存中执行

④ 初始化程序 首先初始化硬件,然后在硬盘中找到 引导程序。

⑤ 将引导程序复制到 内存的 0x07c00,并执行

⑥ 引导程序 将硬盘的内容复制到内存中。

⑦ 跳到内存中操作系统的开始地址,开始执行操作系统。

⑧ 执行操作系统程序。

参考:按下电脑开机键后,究竟发生了什么? - 云+社区 - 腾讯云 (tencent.com)

按下开机键后,电脑都干了些什么?相关推荐

  1. 按下开机键,风扇都不转,吾是怎样复活电脑的?

    假期一天早上,吾电脑无法开机.最诡异的就是按下开机键,CPU风扇都不转.换了个电源,还是这样.于是认为主板有问题(电源交叉测试过).主板还在保修期内.二话不说,邮寄.对方保修也靠谱,收到主板很快修好了 ...

  2. 威纶通宏开机后使用初始化宏指令_你按下电脑开机键后,电脑都干了些什么?...

    各位朋友,这篇文章你一定要坚持看完,看完对电脑的启动过程和故障判断会起到很大帮助哦! 我们几乎每天都要打开电源启动机器,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些 ...

  3. 计算机开机先检测什么问题,电脑按下开机键后 没反应 但检测电源却没有問題,是什么情况?...

    当电脑指示灯亮,电脑内部CPU风扇正常转,那么一般来说可以初步的判断为电源没什么大问题,我们再去检查下显示器,看下显示器电源指示灯是否亮着,显示器数据线是否连接良好.同时观察下电脑键盘与鼠标指示灯是否 ...

  4. 云栖大会·南京峰会落下帷幕,阿里云都干了些什么?

    阿里云又耐不住寂寞干了几件大事儿. 昨天,阿里云云栖大会·南京峰会举行,此次大会的主题是"飞天·智能".按照以往惯例,在云栖大会上,阿里云方面会进行宣布合作或是发布产品,这次也不例 ...

  5. 进华为半年我都干了些啥

    楼主目前在华为云搞Java开发,22年8月份入职的.和大家分享下入职半年我都干了些什么事情. 主要分为两个方面. 第一个是业务,华为云是微服务架构,楼主是Java开发和Python开发,进入了其中一个 ...

  6. windows8怎么关机_按下电源键后发生了什么?电脑是如何关机的?

    在Windows启动后,最自然的关机方式是什么呢?当然是按下电源键了.有没有好奇,当我们按下电源键,会发生什么呢?为什么Windows可以选择关机或者睡眠?背后的机理又是什么呢? 历史 如果你曾经使用 ...

  7. 台式计算机按电源开关无法开机,台式电脑没法启动,按下开机键电源灯闪一下就什么反应都没...

    台式电脑无法启动,按下开机键电源灯闪一下就没反应,这种情况首先要检查下是什么原因: 1.首先:检查所有的线缆(包括电源插头),以确保所有设备都是正确而且紧固地连接在一起. 2.接下来,检查电源是否打开 ...

  8. 惠普笔记本按开机键后电源灯亮的,但是屏幕一直是黑的,只有大写锁定键闪烁,闪3次一个循环,听得到风扇...

    现象: 惠普笔记本按开机键后电源灯亮的,但是屏幕一直是黑的,只有大写锁定键闪烁,闪3次一个循环,听得到风扇转动的声音,热风,cpu应该也在工作,请问是什么问题. 解决(我按照红色的作了,就可以了,真是 ...

  9. 按下 Home 键后发生了什么事?

    后台有位小伙伴分享了一个头条的面试题:按下手机的 Home 键,有哪些动作和事件发生? 今天我们就来分析一下,本文源码基于 Android - 28 事件的分类 安卓系统中的事件,主要有以下几种: 按 ...

最新文章

  1. python进阶免费-菜鸟世界 -python进阶---生成器
  2. 微软MCITP系列课程(一)第一讲:部署虚拟机
  3. andriod之应用内置浏览器 webview
  4. junit白盒测试 案例_JUnit通过失败测试案例
  5. “智慧城市”建设以前是传说,现在能体验
  6. “白领复工10大热销商品”榜单:口罩及相关商品位居第一
  7. antdesignpro 重定向到登录页面_URL重定向跳转绕过
  8. java arraylist底层实现原理_ArrayList的底层实现原理
  9. dpdk大页内存实现
  10. 如何管理好IDC机房?(二) ----依靠技术还是管理
  11. 费曼:微积分是上帝的语言 | 书摘
  12. AD使用技巧 内附AD18下载地址
  13. 深圳大学物计算机黄yilin,中国科学引文数据库(CSCD)收录本校教师论文情况.doc...
  14. vue ssr之nuxt
  15. arch linux简体中文,Locale (简体中文)
  16. C语言第一课:初始C语言
  17. 【从零开始vnpy量化投资】一. vnpy初探 - 注册、安装、运行策略
  18. 4-6 ElasticSearch
  19. python入门知识点-1
  20. Go的宕机与宕机恢复

热门文章

  1. 查任意qq的密保源码
  2. 数控解锁怎么解 数控系统解锁解密
  3. UML Thinking in UML大象 参与者
  4. 毕业设计管理系统之二Excel和数据库之间互存
  5. 寒武纪Cambricon MLU270 环境搭建 CNStream EasyDK编译 改变系统路径 CNJPEGENC_FLAG_INVALID_FRAME 错误
  6. 用ChatGPT做一款二次元卡牌游戏!完成度超90%,即将开放源码!
  7. before的用法java_Java LocalTime isBefore()用法及代码示例
  8. 微信小程序 | 微信公众平台SpringBoot开发之收到消息后进行简单回复
  9. Give me 5!
  10. 怎么在mac打开home文件夹? mac打开home文件夹的两种方法