探索開機的秘密

2021-08-29 00:05:52 字數 1051 閱讀 6216

我們知道計算機的主要由 cpu、記憶體、外存、外部裝置等組成,其中 cpu 是計算機的心臟,cpu 從記憶體中讀取指令,一條條不知疲倦的執行,實際上我們所說的記憶體也就是 ram 在掉電之後裡面的內容

會隨之清空,這樣開機時 cpu 就不能從記憶體中正常的讀取指令了,怎麼辦呢?實際上還有一種叫做 rom 的儲存器,rom 中的內容時可以永久儲存的,計算機開機的過程就從 rom 中開始。

在 8086 系列的計算機啟動過程中,計算機處於實模式下,一開始可以訪問到的儲存空間只有 1m,其中實體地址範圍 0xf0000~0xfffff 這 64 kb 用於訪問 rom,計算機開機時會自動跳轉到這部分空間執行,也就是將**段暫存器 cs 設定為 0xf000,將指令暫存器 ip 設定為 0xfff0,將 cs 左移四位加上 ip 就得到了計算機執行的第一條指令的位址0xffff0,從 0xffff0 到 0xfffff 只有 16 個位元組,顯然是不夠的,因此這裡存放的一般是跳轉指令 jmp,使處理器從較低的位址空間開始執行。這裡 64kb 空間所存放的就是我們通常所說的 bios,bios 通常用於檢查計算機的硬體是否正常,讀取鍵盤的輸入以及向螢幕輸出等,當然最為重要的是從外存如硬碟中讀取作業系統。

現在大部分的計算機都允許安裝多個不同的作業系統到不同的硬碟分割槽上,bios 在完成自檢以後會從外存上讀取最開始的 512 個位元組,這 512 個位元組叫做主引導記錄(mbr),mbr會告訴電腦從該裝置的某乙個分割槽(partition)來裝載引導引導程式(boot loader),mbr 的前面 446 個位元組用於存放啟動**,最後的 2 個位元組是結束標誌字,中間的 64 個位元組用於存放最多 4 個分割槽表,這就是為什麼我們在安裝系統是只能格式化出 4 個主分割槽的原因。啟動**會告訴計算機從哪乙個分割槽中讀取引導扇區的**。

這裡有人可能會有疑問,直接從分割槽中讀取作業系統不就可以了,為啥還要通過引導扇區來讀取作業系統,事實上檔案系統多種多樣,我們不能事先知道作業系統使用的是哪一種檔案格式,因此需要多這麼一層,引導扇區的一部分**就是我們常說的 bootloader,bootloader 通過檔案系統中的配置資訊以及額外的啟動引數比如以安全模式啟動,就可以載入作業系統的核心,到這裡計算機從上電到載入作業系統的全部過程就完成了。

探索式測試的秘密

探索式測試的秘密 我們是測試工程師,我們是專門幹這個的 我們很好地理解了需求,我們使用了很多且很好的測試設計技術 我們有較多時間進行測試執行 開發人員或使用者沒有時間去進行測試 開發人員或使用者沒有時間不知道怎麼去進行測試 我們的運氣好,突然發現了這些好的bug 當然還有很多其他的因素,這裡就不列出...

探索式測試的秘密

我們是測試工程師,我們是專門幹這個的 我們很好地理解了需求,我們使用了很多且很好的測試設計技術 我們有較多時間進行測試執行 開發人員或使用者沒有時間去進行測試 開發人員或使用者沒有時間不知道怎麼去進行測試 我們的運氣好,突然發現了這些好的bug 當然還有很多其他的因素,這裡就不列出所有的了 其他測試...

探索C 的秘密之詳解extern 「C」

時常在cpp的 之中看到這樣的 ifdef cplusplus extern c endif 這樣的 到底是什麼意思呢?首先,cplusplus是cpp中的自定義巨集,那麼定義了這個巨集的話表示這是一段cpp的 也就是說,上面的 的含義是 如果這是一段cpp的 那麼加入extern c 處理其中的 ...