呼,呼,起床干活一大早,我在睡夢中被吵醒

我是CPU一號車間的Q,好久不見,不知道大家想我了嗎。
今天不是星期六嗎我怎么還能工作我有點不開心我想我可以睡懶覺誰知道程序員周末還在工作這是要加班嗎
一邊抱怨,我還得趕緊起床干活。
當我來到我的車間時,提取指令的小啊,小胖和負責寫回結果的老k已經到了,我是唯一需要執行指令的人。
我們幾個人各就各位,做好了準備。
小A,報一下每個寄存器的值我告訴小A,這是我們每天上班前必須做的檢查。
每次接通電源,我們的電路就會開始自檢,復位所有寄存器如果有任何異常,錯誤將被記錄在EAX登記簿中如果發現EAX的值不為0,這將是一件大事
報告,注冊確認:
EAX,EBX,ECX,ESI,EDI,EBP,ESP: 0x00000000
EFLAGS: 0x00000002
CS: 0xF000
EIP: 0xFFF0
似乎沒有問題,尤其是CS和IP寄存器,它們決定了以后從哪里開始執行代碼。
我們是64位CPU,通常工作在保護模式下,使用虛擬地址訪問內存,MMU即工廠中的內存管理單元,負責將其轉換為真實的物理地址。
但是在啟動的瞬間,虛擬地址翻譯所需的頁目錄和頁表的信息還沒有準備好,MMU還不能工作這時候只能用16位寄存器,工作在實地址模式,用段+基址來處理內存,最多只能用1MB的內存空間,有點局促
開始執行。
大家都準備好了嗎。振作起來,準備開始今天的工作!
Q哥,這個剛剛通電有記憶模塊的人應該還是空白的我們去哪里執行指令,小啊問道
你不用擔心這個主板上離我們CPU不遠處有個叫BIOS的家伙,是rom芯片我們已經和他約定好了,一上電他就映射到地址空間按照CS:IP指的地方開始取指令就行了,他會安排的
原來如此,小啊點了點頭,似乎有些不解。
正式開始工作,小啊熟練地得到了F000的第一條指令:FFF0,也就是0xFFFF0: jmp xxxx。
好家伙,接下來是一個大跳躍我們來到BIOS家伙的領地中央,開始執行他準備的程序
這堆指令我做了無數遍,測試主板上的所有單元看有沒有異常,初始化我們工作需要的中斷向量表等等我已經很熟悉了
你們幾個忙啊我們正熱火朝天時,發現有人在門口監視回頭一看,原來是隔壁二車間,五車間,八車間的幾個家伙
你們這幫人這么閑,愿意幫我們干點活嗎。
嘿,你想變漂亮你們一號核心是開機處理器,待遇比我們好怎么才能搶到這個開機工作,2號車間虎子說
我真的很羨慕他們他們比我們一號車間工作得晚,每次都能多睡一會兒
主引導記錄
我繼續執行BIOS里的代碼,一切檢查完畢,沒有任何異常,準備啟動操作系統大佬。
接下來我查了BIOS里配置的啟動順序,硬盤哥排第一。
于是我把硬盤兄弟的0盤0軌第一扇區的內容讀到內存中0x7C00位置他們把這個東西叫做MBR,總共有512個字節
聽聽硬盤上的哥們這是操作系統的老板給他裝的時候寫的
他還告訴我,這個職位很重要一旦有病毒占據這個位置,最后沒辦法只能重裝系統
主引導記錄
讀取MBR后,我們仍然要檢查最后兩個字節必須是0x55和0xAA好像沒什么問題,而且是合法的MBR我們再次跳到0x7C00開始執行
操作系統
最后,我們來到了操作系統的網站。在操作系統的指令下,我們切換了工作模式,開始在保護模式下工作!
剛切換到保護模式,MMU還是不能做地址翻譯我們還是要直接用物理地址去聯系內存,所以要趕緊把頁目錄和頁表準備好
經過一段忙碌的時間,我終于得到了我需要的一切我興奮地打開內存分頁開關,通知MMU部門開始工作
這時,在一旁觀望的2號車間,5號車間,8號車間的伙計們趕緊往回走,因為他們知道馬上就要輪到他們干活了。
我們繼續執行操作系統代碼,為CPU的所有其他核心準備數據和指令,創建多線程,并調用它們一起工作我們的八核CPU終于進入了高潮,一下子還挺熱鬧的
后來不知道執行了多少條指令,創建了多少個線程,讓操作系統boss完整運行,成功完成了這次啟動。
這是我們的CPU在通電后開始工作的日常我記不清這是第幾次啟動了,也不知道我們還能啟動多少次
。聲明:本網轉發此文章,旨在為讀者提供更多信息資訊,所涉內容不構成投資、消費建議。文章事實如有疑問,請與有關方核實,文章觀點非本網觀點,僅供讀者參考。

