91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

操作系統(tǒng)是如何啟動起來的?

Q4MP_gh_c472c21 ? 來源:碼農(nóng)的荒島求生 ? 作者:碼農(nóng)的荒島求生 ? 2022-04-18 14:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,我是小風哥。

操作系統(tǒng)被稱為“第一個程序”,the first programme,原因很簡單,只有當操作系統(tǒng)啟動起來后才能運行我們編寫的程序,那么你有沒有想過這個問題:操作系統(tǒng)是怎樣啟動起來的呢?

實際上,這個過程就像發(fā)射火箭一樣有趣??赐赀@篇文章,你就明白啦~

5b497408-bed7-11ec-9e50-dac502259ad0.jpg

操作系統(tǒng)也是普通程序

首先我們必須意識到這樣兩點:

CPU執(zhí)行的是機器指令,編譯器將程序翻譯后成了機器指令

操作系統(tǒng)本身也是一個程序,這個程序被編譯后也會生成一大堆機器指令

現(xiàn)在我們知道了,操作系統(tǒng)本身其實也是一大堆機器指令,既然是機器指令那么它必須得存放在什么地方。

存放在哪里呢?

想想我們編寫的程序,編譯后生成的是可執(zhí)行文件,也就是說是以“文件”的形式存放的,并且存放在硬盤上,而操作系統(tǒng)也沒什么不同,編譯后生成的機器指令同樣是以文件的形式存放的,存放在哪里呢?可以存放在任何能存儲數(shù)據(jù)的介質,像CD、磁盤之類都可以。

5b523dd6-bed7-11ec-9e50-dac502259ad0.png

我們編寫的程序在啟動時被加載器——也就是loader,加載到內(nèi)存,加載器也是一個程序,這是一個加載其它程序的程序;這么說可能有點拗口,但計算機系統(tǒng)中有大量類似的程序,編譯器是一個翻譯程序的程序、操作系統(tǒng)是一個運行其它程序的程序、鏈接器是一個鏈接程序的程序、解釋器是一個執(zhí)行腳本程序的程序等等。

雞生蛋蛋生雞的問題

回到我們的主題,我們寫的代碼是loader加載到內(nèi)存后運行的,那么操作系統(tǒng)這個程序是也同樣的道理,必須得有個什么東西也要把操作系統(tǒng)加載到內(nèi)存中運行才可以,這個東西不叫l(wèi)oader,而是叫boot loader,其本身也是一個程序,它的任務就是加載一個更大的程序,就像這里的操作系統(tǒng)。

5b6a1474-bed7-11ec-9e50-dac502259ad0.png

此時這里會出現(xiàn)一個雞生蛋蛋生雞的,既然我們的程序是被加載器loader(操作系統(tǒng)的一部分)加載到內(nèi)存中,而操作系統(tǒng)又是被boot loader這個加載程序加載到內(nèi)存中的,那么又是什么加載器把boot loader這個加載程序加載到內(nèi)存中呢?而又又是什么加載器把上一句中的什么加載器加載內(nèi)存中呢?而又又又是什么。。?

5b7220e2-bed7-11ec-9e50-dac502259ad0.png

你會發(fā)現(xiàn)這個一個沒有出口的無窮遞歸啊有沒有,總得有個什么把前一個程序加載到內(nèi)存,就好比今天的前一天是昨天、昨天的前一天是前天、前天的前一天是大前天,如果一直這樣思考下去那么時間到底在哪里開始的呢?時間到底有沒有開始(參考時間簡史或相對論)?

時間有沒有開始這個問題我不清楚,但操作系統(tǒng)啟動的這個問題我知道。

上述關于加載器以及加載加載器等問題全部指向了內(nèi)存,讓我們好好想一想內(nèi)存有什么特殊性?

內(nèi)存斷電后是無法保存數(shù)據(jù)

程序員都知道內(nèi)存只有在加電的情況下才可以保存數(shù)據(jù)(關于內(nèi)存的實現(xiàn)原理你可以參考這篇《你管這破玩意叫CPU?》),那么很顯然,當斷電后內(nèi)存中的內(nèi)容就丟失了,那么又很顯然的,當你在按下計算機開關通電時,內(nèi)存中的內(nèi)容是未被初始化的,也就是說內(nèi)存中的內(nèi)容是無效的,此時的內(nèi)存里還是一片荒蕪,這里沒有任何東西可供CPU來執(zhí)行,這就好比大爆炸之前的宇宙。

5b7c661a-bed7-11ec-9e50-dac502259ad0.png

但我們的計算機總是能啟動起來,CPU必須得執(zhí)行“一段什么程序”把第一個boot loader加載到內(nèi)存中,由于此時內(nèi)存中還什么都沒有,那么這段程序一定被保存在了其它地方。

保存在了哪里呢?

沒錯,這段程序就被保存在了BIOS的非易失性存儲ROM或者flash存儲中了,這里的代碼在即使斷電后也會保存下來,加電后CPU開始執(zhí)行這里代碼,把boot loader加載到內(nèi)存中,現(xiàn)在你應該明白第一個boot loader是怎樣被加載到內(nèi)存的了吧。

5b8c0926-bed7-11ec-9e50-dac502259ad0.png

在早期的計算機上甚至專門有一個按鈕,讓用戶自己選擇該從哪里,比如打孔紙帶、打孔卡片或者硬盤,加載一個更復雜的程序來運行,操作面板上的旋鈕可以控制把這些程序加載到內(nèi)存的什么位置上去:

火箭與操作系統(tǒng)啟動

然而現(xiàn)實情況比較復雜,我們剛才提到的boot loader這段小程序功能實在是太弱了,此時其能訪問的磁盤地址空間有限,不能把完整的內(nèi)核全部加載到操作系統(tǒng)中,該怎么辦呢?

既然boot loader比較弱那么就換一個比較牛的loader程序來,就這樣出現(xiàn)了二階boot loader,second stage loader:

5b9c1f46-bed7-11ec-9e50-dac502259ad0.png

二階boot loader功能更為豐富,比如對硬件進行檢查、給用戶提供選項加載哪個操作系統(tǒng)等等,安裝多系統(tǒng)的同學應該知道,啟動時會給你一個選項到底是啟動windows還是linux,這就是二階boot loader的作用。

5bb25ac2-bed7-11ec-9e50-dac502259ad0.png

最終,操作系統(tǒng)被二階boot loader加載到內(nèi)存中開始運行。

你會發(fā)現(xiàn)這個過程就和發(fā)射三級火箭一樣,最初一級火箭啟動,燃料用盡后二級火箭啟動,二級火箭完成使命后三級火箭啟動,最終把衛(wèi)星送到太空,而計算機的啟動過程也類似。

最初是CPU運行BIOS中的一段代碼把一級boot loader加載到內(nèi)存中運行,該程序又會把二級boot loader加載到內(nèi)存運行,而二級boot loader又會把操作系統(tǒng)加載到內(nèi)存中,此后控制權被轉移到操作系統(tǒng),(所謂控制權是指CPU跳轉到操作系統(tǒng)的代碼),操作系統(tǒng)開始運行,經(jīng)過一系列的初始化,比如硬件檢測、開啟必要的后臺進程等等,最終圖形界面或者命令行界面呈現(xiàn)出來。

接下來我們把這個過程細化一下。

更詳細的啟動過程

你在按下電源的瞬間相當于火箭點火,此時一級發(fā)動機開始工作。

加電CPU重置后開始在地址0xffff0處開始執(zhí)行指令,這個地址其實是BIOS ROM的末尾處,該位置其實是一個跳轉指令,跳轉到ROM的一段啟動代碼上,該代碼會進行必要的自檢,Power-on self-test (POST),展示BIOS啟動界面等等,最重要的一步是找到啟動設備,所謂啟動設備就是指從哪里加載操作系統(tǒng),比如CD-ROM、或者磁盤、甚至U盤等都可以作為啟動設備,早些年流行用U盤重新安裝系統(tǒng),其實就是告訴BIOS的這段代碼從U盤中加載操作系統(tǒng)。

通常BIOS會把磁盤當做啟動設備(大部分情況下),此時BIOS中的這段代碼開始將磁盤的第0號塊加載到內(nèi)存中,那么這第0號塊中有什么呢?沒錯,就是第一階段boot loader程序,這第0號塊也被稱之為Master Boot Record,MBR,肯定有不少同學聽說過。

5bce03da-bed7-11ec-9e50-dac502259ad0.png

到這里,火箭的一級發(fā)動機燃料用盡,二級發(fā)動機開始點火,BIOS中的這段代碼把控制權交給加載到內(nèi)存boot loader,所謂控制權就是跳轉到boot loader程序,這樣CPU終于開始直接與內(nèi)存交互了,CPU開始從內(nèi)存中取出指令然后執(zhí)行。

MBR中除了包含一段可執(zhí)行代碼之外還有一個分區(qū)表,partition table,這個表的中的每一個條目本質上在說:“操作系統(tǒng)是否在我這個分區(qū),我這個分區(qū)有多大”,CPU在執(zhí)行MBR中的代碼時會去檢查操作系統(tǒng)存在哪個分區(qū)中,定位后開始從相應分區(qū)的起始位置讀取磁盤數(shù)據(jù)到內(nèi)存中,這時的磁盤數(shù)據(jù)中保存的就是二階boot loader,second-stage boot loader,此時一階boot loader把控制權轉交給二階boot loader,火箭三級發(fā)動機開始工作。

2_boot loader的主要工作將操作系統(tǒng)加載到內(nèi)存中,此后控制權轉交給操作系統(tǒng),火箭的三級發(fā)動機完成使命,到這一時刻,操作系統(tǒng)開始接管計算機,操作系統(tǒng)經(jīng)過一系列自身的初始化后創(chuàng)建出若干必要進程,至此計算機啟動完畢,衛(wèi)星被成功送到了外太空中。

5bd8bcbc-bed7-11ec-9e50-dac502259ad0.png

然而限于篇幅這里依然沒有過多涉及細節(jié),操作系統(tǒng)本身的初始化也是一個比較復雜的過程,感興趣的同學可以去翻閱相關操作系統(tǒng)的資料。

總結與腦洞

計算機的啟動是一個多階段的過程,當然在一些嵌入式設備等這個過程會簡化,但總體上也需要經(jīng)過類似過程,只不過階段數(shù)會少一些。

回到最開始的那個問題,也就是時間有沒有開始,其實這個問題一些物理大牛已經(jīng)回答過了,但我很想在這里開一個腦洞,當上帝在為自己創(chuàng)建的宇宙(計算機)加電的那一刻——也就是宇宙大爆炸時,時間開始了,時間這個概念是和宇宙(計算機)相伴相生的,如果沒有宇宙(計算機),時間這個概念其實是沒有意義的,就好比如果沒有計算機,加載這個概念其實是沒有意義的,你思考時間到底有沒有起點,這個問題就好比計算機中的程序在思考到底是誰把自己加載到內(nèi)存的、又是誰把操作系統(tǒng)加載到內(nèi)存中的等等。

好啦,腦洞就開到這里,現(xiàn)在你應該明白計算機啟動這個問題了吧~

END

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11279

    瀏覽量

    225063
  • 操作系統(tǒng)

    關注

    37

    文章

    7402

    瀏覽量

    129333
  • 編譯器
    +關注

    關注

    1

    文章

    1672

    瀏覽量

    51643

原文標題:操作系統(tǒng)是如何啟動起來的?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    openKylin賦能國防科大構建操作系統(tǒng)創(chuàng)新型人才培養(yǎng)體系

    國防科技大學操作系統(tǒng)團隊在承擔國家重大科研任務、推進麒麟操作系統(tǒng)研發(fā)和推廣應用的過程中,立足工程實踐和科研創(chuàng)新能力培養(yǎng)需求,針對傳統(tǒng)操作系統(tǒng)教學面臨的諸多挑戰(zhàn),在開放協(xié)作、創(chuàng)新競賽、實習實訓等方面
    的頭像 發(fā)表于 01-23 13:49 ?407次閱讀

    海格通信加入中關村智能終端操作系統(tǒng)產(chǎn)業(yè)聯(lián)盟

    近日,海格通信(股票代碼:002465)加入中關村智能終端操作系統(tǒng)產(chǎn)業(yè)聯(lián)盟。雙方將在智能終端操作系統(tǒng)在技術、應用場景與產(chǎn)業(yè)生態(tài)層面加強聯(lián)合,開啟智能終端操作系統(tǒng)產(chǎn)業(yè)協(xié)同發(fā)展的新篇章。
    的頭像 發(fā)表于 01-20 17:04 ?1348次閱讀

    操作系統(tǒng)體系結構

    操作系統(tǒng)的體系結構是一個開放的問題。正如上文所述,操作系統(tǒng)在核心態(tài)為應用程序提供公共的服務,那么操作系統(tǒng)在核心態(tài)應該提供什么服務、怎樣提供服務?有關這個問題的回答形成了兩種主要的體系結構:大內(nèi)核和微
    發(fā)表于 01-15 08:19

    操作系統(tǒng)運行機制

    計算機系統(tǒng)中,通常CPU執(zhí)行兩種不同性質的程序:一種是操作系統(tǒng)內(nèi)核程序;另一種是用戶自編程序或系統(tǒng)外層的應用程序。對操作系統(tǒng)而言,這兩種程序的作用不同,前者是后者的管理者,因此“管理程
    發(fā)表于 01-15 07:12

    普華基礎軟件出席開源車用操作系統(tǒng)人才培養(yǎng)啟動儀式

    與產(chǎn)業(yè)需求之間存在顯著缺口。本次啟動的“開源車用操作系統(tǒng)人才培養(yǎng)”,是普華基礎軟件開源“星輝計劃”五大生態(tài)體系中的關鍵一環(huán),旨在通過“開源共建”模式,系統(tǒng)性破解人才難題,為產(chǎn)業(yè)可持續(xù)發(fā)展夯實基礎。
    的頭像 發(fā)表于 12-18 17:11 ?1219次閱讀

    龍蜥操作系統(tǒng)裝機量突破1000萬

    11月17日,以“生態(tài)共融·智驅未來”為主題的2025龍蜥操作系統(tǒng)大會(OpenAnolis Conference)在北京成功舉辦。千余位全球技術大咖、業(yè)界精英和行業(yè)開發(fā)者齊聚一堂,深入探討AI時代下操作系統(tǒng)產(chǎn)業(yè)發(fā)展的新趨勢、新挑戰(zhàn)與新路徑,共話龍蜥社區(qū)引領
    的頭像 發(fā)表于 11-20 11:40 ?846次閱讀

    單片機的操作系統(tǒng)

    單片機操作系統(tǒng)主要分為實時操作系統(tǒng)(RTOS)和嵌入式操作系統(tǒng)兩類,以下是常見選擇: 實時操作系統(tǒng)(RTOS) ? FreeRTOS ?:輕量級開源內(nèi)核(最小內(nèi)核約6 KB RAM)
    發(fā)表于 11-14 06:18

    嵌入式實時操作系統(tǒng)的特點

    實時嵌入式操作系統(tǒng)(Real-Time Embedded Operating System)是專門設計用于嵌入式系統(tǒng)的實時操作系統(tǒng)。嵌入式系統(tǒng)是一種特殊的計算機
    發(fā)表于 11-13 06:30

    如何選擇合適的實時操作系統(tǒng)

    選擇合適的實時操作系統(tǒng)(RTOS,Real-Time Operating System)可能會影響你在不同行業(yè)的職業(yè)發(fā)展路徑。
    的頭像 發(fā)表于 09-09 14:47 ?1076次閱讀

    商湯辦公小浣熊與銀河麒麟操作系統(tǒng)V11完成適配

    近日,在2025 中國操作系統(tǒng)產(chǎn)業(yè)大會上,商湯科技作為麒麟軟件的生態(tài)伙伴受邀參與了“麒心伙伴5.0生態(tài)成長計劃”啟動儀式,同時商湯「辦公小浣熊」也完成與銀河麒麟操作系統(tǒng) V11 的深度適配,雙方將在AI + 辦公領域打造的「辦公
    的頭像 發(fā)表于 09-05 15:26 ?803次閱讀

    樹莓派操作系統(tǒng):版本、特性及設置完整指南!

    樹莓派操作系統(tǒng)是什么?樹莓派操作系統(tǒng)是由樹莓派基金會專為樹莓派開發(fā)的官方操作系統(tǒng)。它基于DebianLinux發(fā)行版,并針對樹莓派的ARM架構進行了專門優(yōu)化。樹莓派操作系統(tǒng)有多個版本,
    的頭像 發(fā)表于 07-28 18:26 ?1456次閱讀
    樹莓派<b class='flag-5'>操作系統(tǒng)</b>:版本、特性及設置完整指南!

    無人職守自動安裝部署操作系統(tǒng)指南

    當組織有服務器需要部署linux系統(tǒng)時,需要通過網(wǎng)絡方式安裝并結合自動應答文件,實現(xiàn)無人職守自動安裝部署操作系統(tǒng)。這種方式需要我們至少配置一臺服務器,所有需要安裝系統(tǒng)的客戶端通過網(wǎng)絡的方式連接服務器端
    的頭像 發(fā)表于 05-22 13:38 ?1012次閱讀
    無人職守自動安裝部署<b class='flag-5'>操作系統(tǒng)</b>指南

    鴻道Intewell操作系統(tǒng):人形機器人底層操作系統(tǒng)

    操作系統(tǒng)的實時性賦能東土科技的鴻道(Intewell)工業(yè)操作系統(tǒng)作為國內(nèi)唯一通過汽車、工業(yè)控制、醫(yī)療、軌道交通四項功能安全認證的系統(tǒng),為標準體系中的技術層架構提供了底層支持。其微內(nèi)核虛擬化架構可將人形機器人電子架構成本降低50
    的頭像 發(fā)表于 05-16 14:44 ?793次閱讀

    理想汽車智駕操作系統(tǒng)解讀

    [首發(fā)于智駕最前沿微信公眾號]在智能網(wǎng)聯(lián)與生成式AI技術深度融合的浪潮下,汽車操作系統(tǒng)已經(jīng)從最初的簡單資源管理平臺,演化為承載感知決策、執(zhí)行控制與安全防護的智能化中樞。理想汽車自主研發(fā)的星環(huán)OS
    的頭像 發(fā)表于 05-13 10:54 ?1218次閱讀
    理想汽車智駕<b class='flag-5'>操作系統(tǒng)</b>解讀

    國產(chǎn)操作系統(tǒng)有哪些?政企官方認證的5大國產(chǎn)系統(tǒng),實測好用才敢推薦!

    近年來,“國產(chǎn)操作系統(tǒng)”這個詞越來越頻繁地出現(xiàn)在政策文件、企業(yè)采購清單和行業(yè)新聞里。尤其是在“信創(chuàng)”浪潮下,無論是政府機關還是央企國企,都在加速替換國外操作系統(tǒng)。但面對市面上琳瑯滿目的國產(chǎn)系統(tǒng),很多人難免困惑:國產(chǎn)
    的頭像 發(fā)表于 04-17 15:34 ?6732次閱讀
    國產(chǎn)<b class='flag-5'>操作系統(tǒng)</b>有哪些?政企官方認證的5大國產(chǎn)<b class='flag-5'>系統(tǒng)</b>,實測好用才敢推薦!