按下電源后的幾秒鐘溃肪,CPU在干嘛?一文看懂計算機啟動原理

來電了

“來電了音五,來電了乍惊,起來干活了”,一大早放仗,我還在睡夢中就被吵醒了润绎。

圖片

我是CPU一號車間的阿Q,好久不見,不知道大家有沒有想我呢莉撇?

“今天不是星期六嗎呢蛤?怎么還要工作”,我有些不開心棍郎,本以為能睡一個懶覺其障,誰知道大周末的程序員還開機,這是來加班了嗎涂佃。

一邊抱怨励翼,一邊還得趕緊起來干活。

來到我所在的工作車間辜荠,提取指令的小A汽抚、分析指令的小胖和負(fù)責(zé)結(jié)果回寫的老K都已經(jīng)到了,就差執(zhí)行指令的我了伯病。

我們幾個各就各位造烁,做起了準(zhǔn)備工作。

圖片

“小A午笛,報告一下各個寄存器的值”惭蟋,我囑咐小A,這是我們每天開始工作前必做的檢查項药磺。

每次一通電告组,咱們的電路就會啟動自檢工作,把所有的寄存器全部重置癌佩,如果哪里有異常的話木缝,就會把錯誤記錄到EAX寄存器中,如果發(fā)現(xiàn)EAX的值不是0驼卖,那可就大事不好了氨肌。

“報告鸿秆,寄存器已確認(rèn):”

EAX酌畜,EBX, ECX, ESI, EDI, EBP, ESP: 0x00000000

EFLAGS: 0x00000002

CS: 0xF000

EIP: 0xFFF0

······

看起來沒什么問題,尤其是CS和IP這兩個寄存器卿叽,決定著一會兒該從哪里開始執(zhí)行代碼呢桥胞。

我們是一個64位的CPU,平時都是工作在保護(hù)模式下考婴,使用虛擬地址來訪問內(nèi)存贩虾,由廠里的內(nèi)存管理單元MMU負(fù)責(zé)給轉(zhuǎn)換成真實的物理地址。

不過在剛剛開機的這會兒功夫沥阱,虛擬地址翻譯所需要的頁目錄缎罢、頁表這些信息都還沒準(zhǔn)備好,MMU還沒法工作,這時候我們只能使用16位的寄存器策精,工作在實地址模式下舰始,使用段+基址的方式來跟內(nèi)存打交道,最多只能使用1MB的內(nèi)存空間咽袜,實在是有點局促丸卷。

開始執(zhí)行

“大家都準(zhǔn)備好了嗎,打起精神來询刹,要準(zhǔn)備開始今天的工作了哦谜嫉!”

“Q哥,這剛剛通電凹联,內(nèi)存條那家伙應(yīng)該還是一片空白吧沐兰,咱們要去執(zhí)行哪里的指令啊匕垫?”僧鲁,小A問到。

“這你不用擔(dān)心象泵,在主板上寞秃,咱們CPU隔壁不遠(yuǎn)處有個叫BIOS的伙計,是一個ROM芯片偶惠,咱們已經(jīng)跟他約定好了春寿,一通電他就映射到地址空間中,你盡管按照CS:IP(0xF000:0xFFF0)指向的地方開始取指令就對了忽孽,他會安排好的”

圖片

“原來是這樣”绑改,小A點了點頭,似懂非懂的樣子兄一。

正式開始干活了厘线,小A熟練的從F000:FFF0處,也就是0xFFFF0處取到了第一條指令:jmp xxxx

好家伙出革,上來就是一個大跳轉(zhuǎn)造壮,我們一下來到了BIOS那家伙地盤的中央,開始執(zhí)行他準(zhǔn)備的程序了骂束。

接下來執(zhí)行的這一堆指令我已經(jīng)做過無數(shù)次了耳璧,對主板上各單位進(jìn)行檢測,看看有沒有異常情況展箱,還有初始化我們工作需要的中斷向量表等等旨枯,我早已經(jīng)輕車熟路了。

“哥幾個忙著吶”混驰,我們正忙的熱火朝天攀隔,發(fā)現(xiàn)有人在門口圍觀皂贩,回頭看去,原來是隔壁二號車間昆汹、五號車間先紫、八號車間的幾個家伙。

圖片

“你們幾個這么閑筹煮,要不來幫我們干會兒活遮精?”

“哎,你想得美败潦,你們一號核是引導(dǎo)處理器(BSP)本冲,待遇比我們好,這開機啟動的活兒我們怎么能搶呢劫扒?”檬洞,二號車間的虎子陰陽怪氣的說到。

真是羨慕他們沟饥,比我們1號車間上班時間晚添怔,每次都可以多睡會兒。

MBR

我繼續(xù)執(zhí)行BIOS中的代碼贤旷,一切檢查完畢广料,沒什么異常,要準(zhǔn)備啟動操作系統(tǒng)大佬了幼驶。

接下來艾杏,我檢查了BIOS中配置的啟動順序,排在第一位的是硬盤兄弟盅藻。

圖片

于是我把硬盤老哥第0盤第0道第1扇區(qū)的內(nèi)容讀取到了內(nèi)存中的0x7C00位置购桑,他們把這玩意叫做主引導(dǎo)記錄MBR,一共512個字節(jié)氏淑。

聽硬盤那哥們說勃蜘,這是操作系統(tǒng)老大在安裝的時候,寫到他那里的假残。

他還告訴我缭贡,這個位置很重要,曾經(jīng)就有病毒占據(jù)了這個位置守问,最后沒辦法只好重裝系統(tǒng)匀归。

圖片

<figcaption style="margin: 5px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; text-align: center; color: rgb(136, 136, 136); font-size: 12px; font-family: PingFangSC-Light;">MBR</figcaption>

讀取到了MBR后坑资,還得檢查最后兩個字節(jié)必須是0x55和0xAA耗帕,看起來沒什么問題,是一個合法的MBR袱贮,我們又跳到了0x7C00的位置開始執(zhí)行仿便。

操作系統(tǒng)

終于來到操作系統(tǒng)的地盤兒了,在操作系統(tǒng)的指示下,我們切換了工作模式嗽仪,開始在保護(hù)模式下工作了荒勇!

剛剛切換到保護(hù)模式下,MMU仍然沒法做地址翻譯工作闻坚,我們還是只有直接使用物理地址跟內(nèi)存聯(lián)系沽翔,所以得趕緊把頁目錄和頁表準(zhǔn)備妥當(dāng)才行。

忙活了一陣子之后窿凤,總算把需要的東西都弄好了仅偎,我激動的打開了內(nèi)存分頁的開關(guān),通知MMU部門開始工作雳殊,現(xiàn)在我們可以使用虛擬地址訪問內(nèi)存了橘沥,這感覺棒多了!

圖片

這時夯秃,一旁圍觀的二號車間座咆、五號車間、八號車間那幾個家伙見狀趕緊遛了回去仓洼,因為他們知道介陶,馬上就該他們工作了。

我們繼續(xù)執(zhí)行操作系統(tǒng)的代碼色建,給咱們CPU其他所有核都準(zhǔn)備好了數(shù)據(jù)和指令斤蔓,創(chuàng)建了多個線程出來,把他們也叫起來一起工作镀岛,咱們這個八核CPU終于全面開動起來弦牡,一下子熱鬧了不少。

再后來漂羊,不知執(zhí)行了多少指令驾锰,創(chuàng)建了多少線程,才把操作系統(tǒng)老大完整的運行了起來走越,成功完成了這一次的啟動椭豫。

這就是通電后,我們CPU開始工作的日常旨指,我已經(jīng)記不清這是第多少次啟動了赏酥,也不知道,我們還能啟動多少次···

彩蛋

“Q哥谆构,隔壁BIOS芯片老哥攤上事兒了裸扶,程序員嫌我們啟動太慢 ,拿他開刀了”

“納尼搬素,那以后還怎么啟動呵晨?”

“聽說用了一個新方案魏保,叫UEFI

預(yù)知后續(xù)如何,請關(guān)注下回精彩···

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摸屠,一起剝皮案震驚了整個濱河市谓罗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌季二,老刑警劉巖檩咱,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胯舷,居然都是意外死亡税手,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門需纳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芦倒,“玉大人,你說我怎么就攤上這事不翩”铮” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵口蝠,是天一觀的道長器钟。 經(jīng)常有香客問我,道長妙蔗,這世上最難降的妖魔是什么傲霸? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮眉反,結(jié)果婚禮上昙啄,老公的妹妹穿的比我還像新娘。我一直安慰自己寸五,他們只是感情好梳凛,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梳杏,像睡著了一般韧拒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上十性,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天叛溢,我揣著相機與錄音,去河邊找鬼劲适。 笑死楷掉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的减响。 我是一名探鬼主播靖诗,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼支示!你這毒婦竟也來了刊橘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤颂鸿,失蹤者是張志新(化名)和其女友劉穎促绵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘴纺,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡败晴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了栽渴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尖坤。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闲擦,靈堂內(nèi)的尸體忽然破棺而出慢味,到底是詐尸還是另有隱情,我是刑警寧澤墅冷,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布纯路,位于F島的核電站,受9級特大地震影響寞忿,放射性物質(zhì)發(fā)生泄漏驰唬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一腔彰、第九天 我趴在偏房一處隱蔽的房頂上張望叫编。 院中可真熱鬧,春花似錦霹抛、人聲如沸宵溅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恃逻。三九已至,卻和暖如春藕施,著一層夾襖步出監(jiān)牢的瞬間寇损,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工裳食, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矛市,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓诲祸,卻偏偏與公主長得像浊吏,于是被迫代替她去往敵國和親而昨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前一篇文章描述了Intel x86計算機主板和內(nèi)存映射圖找田,現(xiàn)在我們來解說一下計算機啟動的幾個階段歌憨。下面是一個簡單圖...
    Nuk閱讀 1,673評論 1 7
  • 姓名:朱佳男 學(xué)號:17021210978 專業(yè):信號與信息處理 轉(zhuǎn)載自:http://www.jianshu.c...
    DNYRoo7閱讀 2,692評論 0 1
  • 一.編程語言的作用及與操作系統(tǒng)和硬件的關(guān)系 編程語言是程序員用來控制計算機的工具,是一種標(biāo)準(zhǔn)化的交流技巧墩衙,使得人與...
    夢不覺_ac35閱讀 723評論 0 5
  • 計算機的啟動過程是一個復(fù)雜的過程务嫡,我們根據(jù)計算機的控制權(quán)在哪一部分手上,可以把這一過程劃分為以下四個階段: BIO...
    okcOu閱讀 2,388評論 1 0
  • 今天感恩節(jié)哎漆改,感謝一直在我身邊的親朋好友心铃。感恩相遇!感恩不離不棄挫剑。 中午開了第一次的黨會去扣,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,571評論 0 11