计算机究竟是如何执行起来的呢,在我学习计算机的时候一直不是非常明确,可是近期借了本《linux内核设计的艺术》算是知道了计算机从按开机到启动操作系统之间究竟做了些什么。

这本书刚開始介绍的并非linux的启动,而是linux启动之前的一步,也就是在你按下了开机button之后进入系统引导之前计算机做的事情,这个时候做的事情是每台执行操作系统的计算机都须要做的。大致的步骤也差点儿相同,OK,进入正题。

事实上在当我们按了开机键的时候,硬件电路将CPU的CS设置成0XF000,IP设置成0XFFF0,因此程序从0XFFFF0開始运行,而0XFFFF0处的指令刚好就是BIOS的第一条指令,于是BIOS開始运行指令,(BIOS程序哪里来的呢?,BIOS是硬件厂家在生产硬件的时候就已经写入到主板的RAM中了,当然如今不是写入RAM了,由于如今的BIOS程序是能够改动的)于是BIOS開始通过一系列指令进行硬件的检查工作,并在0x00000处用1KB的空间构建了中断向量表,在紧跟的256字节处载入了BIOS数据区,在57KB左右的区域载入了终端向量表所相应的中断服务程序,经过了这些操作。BIOS程序会运行一个0x19中断,这个中断的服务程序把软盘中的512B(第一个扇区)载入到了内存的0x07C00处,这样系统就開始运行磁盘的引导程序了,而引导程序所做的工作就是将操作系统的启动程序再载入到内存中。后面一篇再具体介绍linux操作系统载入到内存的过程。

总的流程图差点儿相同就这样:

最新文章

  1. JBPM4.4学习API
  2. 百度,你家云管家能靠谱点不?替你脸红!Shame on you!
  3. Swift编程语言的相关资料
  4. css 文本两端对齐
  5. Resharper TAB 傻吊
  6. 把一个select查询结果插入到一个表(可选指定字段和值实例)
  7. PHP安装和配置
  8. centos中安装mysql
  9. TCP/IP 协议 ----- 协议栈
  10. 【转】Shell执行MySql操作
  11. java thread 线程锁同步,锁,通信
  12. web api 路由规则和接收数据
  13. 2sat
  14. java byte 梳理
  15. 解决git pull出现: Your local changes to the following files would be overwritten by merge: ...的问题
  16. WPF常用布局介绍
  17. Mysql必知必会 第三章 使用Mysql
  18. 026-微软Ajax异步组件
  19. Jquery对表格的一些简单应用 查询&即时匹配&点击高亮等
  20. 解决virtualbox与mac文件拖拽问题

热门文章

  1. Hadoop 2.2.0和HBase-0.98 安装snappy
  2. XP单机版安装金蝶K3的13.1版本号,金蝶K3Wise安装步骤,安装成功
  3. UVA 11971 - Polygon 数学概率
  4. C/C++数据类型的转换之终极无惑
  5. ORACLE 索引批量重建
  6. TCP、HTTP协议的RPC
  7. BOOL的getter方法
  8. HDU 1171 Big Event in HDU【01背包】
  9. 第三方库requests
  10. 常用类Math,StringBuffer,包装类,Date