成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

操作系統是怎么一步步啟動起來的?

開發 前端
既然普通程序是被操作系統加載運行起來的,那么操作系統又是被誰加載到內存運行起來的?

大家好,我是小風哥,今天來聊聊操作系統是如何啟動起來的。

和我們寫的helloworld程序一樣,操作系統本身也是一個程序,被編譯后作為文件保存在磁盤上。

圖片圖片

我們的程序是被操作系統加載到內存運行的,在前一篇文章《程序是怎么一步步運行起來的》中有過講解:

圖片圖片

既然普通程序是被操作系統加載運行起來的,那么操作系統又是被誰加載到內存運行起來的?

圖片圖片

想知道問題的答案,我們要從內存說起。

內存只有在加電后寫入數據才能保存信息:

圖片圖片

內存斷電后這些信息就丟失了:

圖片圖片

當計算機啟動時內存中一片荒蕪,顯然CPU不能執行來自內存中的指令:

圖片圖片

那么在你按下開機按鍵時CPU執行來自哪里的指令呢?答案是來自ROM或其它非易失性內存:

圖片圖片

這些存儲設備中保存了一小段指令,計算機啟動時CPU會執行這一小段程序。

CPU怎么知道這段程序保存在哪里呢?答案是CPU會從一個提前設置好的位置開始執行指令,在IA-32架構在CPU會從0xffff0這個位置開始執行這段程序。

這一小段程序就是我們熟悉的BIOS(Basic Input/Output System),更現代的是UEFI(Unified Extensible Firmware Interface)。

圖片圖片

BIOS這段程序有什么作用呢?這段程序用來檢查硬件,各個硬件是否能正常工作等,CPU、內存、硬盤等,也就是所謂的自檢,如果恰好你拆過機器忘記把內存條裝回去,那么這一小段程序就會檢測出系統中沒有安裝內存并給出告警提示。

圖片圖片

BIOS程序除了檢查硬件之外在最后一步有一項重要的工作就是識別出操作系統保存在了哪里,也就是找到所謂的啟動設備,這一般都是磁盤。

找到啟動設備后開始把磁盤前512字節的數據拷貝到內存,這512字節就是所謂的MBR:

圖片圖片

其中包含了:

  • 一段程序,這段程序的目的是加載其它程序,因此也被稱之為boot loader
  • 磁盤分區表,識別磁盤的各個分區

此時BIOS執行完畢,CPU開始執行MBR中的這段boot loader程序:

圖片圖片

這段程序的目的是根據磁盤分區表加載一個更大的boot loader。

圖片圖片

這個更大的boot loader功能更加強大復雜,如果你安裝的是多操作系統,那么當這個更大的boot loader開始執行時會給你一個選項,在這里可以用戶可以選擇啟動哪個操作系統。

圖片圖片

在這里可以看到MBR中的boot loader程序加載了一個更大的boot loader程序,也因此這兩個boot loader分別被稱之為First stage boot loader和second stage boot loader,也就是一階段引導程序和二階段引導程序。

圖片圖片

你可能會有疑問,為什么要有多階段引導程序呢?為什么不能一階段引導程序直接加載操作系統呢?

原因就在于MBR這個512字節的引導程序功能過于簡陋,只能把磁盤中一段連續的數據copy到內存,加載操作系統這種多文件組成的大型程序需要解析文件結構,因此需要另一段功能更為強大的程序也就是二階段引導程序的幫助。

二階引導最終識別出操作系統所在的位置并把操作系統加載到內存中。

圖片圖片

此時CPU才開始真正執行操作系統,操作系統和我們寫的程序一樣也有一個初始化的過程,這個過程的最后會創建出一系列用戶態進程,此時操作系統系統啟動完畢可以接受用戶的輸入。

圖片圖片

當然在現代使用UEFI的現代系統中就不需要MBR中的一階引導程序了。

以上就是操作系統啟動的基本過程。

責任編輯:武曉燕 來源: 碼農的荒島求生
相關推薦

2024-08-30 08:30:29

CPU操作系統寄存器

2025-04-03 01:45:00

2025-03-28 09:39:15

CPU指令信號

2024-11-11 10:28:33

操作系統Unix系統

2025-04-30 04:20:00

操作系統虛擬內存

2022-02-24 08:30:24

操作系統CPU程序

2024-08-06 09:29:54

程序機器指令字符串

2024-09-30 09:56:59

2017-01-19 21:08:33

iOS路由構建

2018-07-13 15:36:52

2019-03-05 14:09:27

Docker存儲容器

2019-07-09 15:23:22

Docker存儲驅動

2018-12-24 10:04:06

Docker存儲驅動

2025-04-09 08:45:00

操作系統進程線程

2010-03-04 16:28:17

Android核心代碼

2016-11-02 18:54:01

javascript

2017-12-25 11:50:57

LinuxArch Linux

2024-06-27 08:30:36

內存擴容堆區

2011-05-10 10:28:55

2018-04-23 14:23:12

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天爱天天操 | 高清久久 | 日本精品一区二区三区在线观看 | 国产日韩欧美一区 | 91麻豆蜜桃一区二区三区 | 久久这里只有精品首页 | 综合久久av| 日韩免费电影 | h片在线免费看 | 欧美一级特黄aaa大片在线观看 | 中文字幕成人av | 国产成人jvid在线播放 | 久久成人高清视频 | 久久亚洲欧美日韩精品专区 | 亚洲精品视频在线观看视频 | 国产亚洲日本精品 | 成人做爰www免费看视频网站 | 久久精品国产一区二区电影 | 国产精品不卡视频 | 国产高清av免费观看 | 成人精品一区亚洲午夜久久久 | 玖玖视频网 | 国产精品一区二区精品 | 久久久精品久久 | 国产高清亚洲 | 一区二区三区回区在观看免费视频 | 国产一区二区三区四区五区3d | 日韩在线一区视频 | 国产农村一级片 | 欧美一区中文字幕 | 在线色| 九九伊人sl水蜜桃色推荐 | 日韩乱码在线 | 亚洲第一视频 | 911网站大全在线观看 | 污污免费网站 | 欧美成人自拍 | 亚洲一区二区精品视频在线观看 | 在线观看亚洲 | 最近日韩中文字幕 | 日本aa毛片a级毛片免费观看 |