x86筆記 第 4 章 虛擬機器的安裝和使用

2021-10-02 19:16:59 字數 2204 閱讀 6732

對於 intel 8086 來說,復位將使**段暫存器(cs)的內容為 0xffff,其他所有暫存器的內容都為 0x0000,包括指令指標暫存器(ip)。8086 之後的處理器並未延續這種設計,但毫無疑問,無論怎麼設計,都是有目的的。

為了節約成本,並提高容量和整合度,在記憶體中,每個位元的儲存都是靠乙個極其微小的電晶體,外加乙個同樣極其微小的電容來完成的。

個人計算機中使用的記憶體需要定期補充電荷,這稱為重新整理,所以這種儲存器也稱為動態隨機訪問儲存器(dynamic random access memory,dram)

在記憶體重新整理期間,處理器將無法訪問它。這還不是最麻煩的,最麻煩的是,在它斷電之後,所有儲存的內容都會統統消失。所以,每當處理器加電之後,它無法從記憶體中取得任何指令。

intel 8086 可以訪問 1mb 的記憶體空間,位址範圍為 0x00000 到 0xfffff。出於各方面的考慮,計算機系統的設計者將這 1mb 的記憶體空間從物理上分為幾個部分。

8086 有 20 根位址線,但並非全都用來訪問 dram,也就是記憶體條。事實上,這些位址線經過分配,大部分用於訪問 dram,剩餘的部分給了唯讀儲存器 rom 和外圍的板卡,如 圖 4-2 所示。

與 dram 不同,唯讀儲存器(read only memory,rom)不需要重新整理,它的內容是預先寫入的,即使掉電也不會消失,但也很難改變。

在以 intel 8086 為處理器的系統中,rom 佔據著整個記憶體空間頂端的 64kb,實體地址範圍是 0xf0000~0xfffff,裡面固化了開機時要執行的指令;

這塊 rom 晶元中的內容包括很多部分,主要是進行硬體的診斷、檢測和初始化。所謂初始化,就是讓硬體處於乙個正常的、預設的工作狀態。最後,它還負責提供一套軟體例程,讓人們在不必了解硬體細節的情況下從外圍裝置(比如鍵盤)獲取輸入資料,或者向外圍裝置(比如顯示器)輸出資料。

以這塊 rom 晶元只針對那些最基本的、對於使用計算機而言最重要的裝置,而它所提供的軟體例程,也只包含最基本、最常規的功能。正因為如此,這塊晶元又叫基本輸入輸出系統(base input & output system,bios)rom

rom-bios 的容量是有限的,當它完成自己的使命後,最後所要做的,就是從輔助儲存裝置讀

取指令資料,然後轉到那裡開始執行。基本上,這相當於接力賽中的交接棒。

有多種輔助儲存裝置,比如軟盤、光碟、硬碟、u 盤等,相對於記憶體,它們就是人們常說的「外存」,即外儲存器(裝置)

軟盤(floppy disk)啟動計算機,這已經是過去的事了。軟盤的尺寸比菸盒稍大一點,比較薄,採用塑料作為基片,上面是一層磁性物質,可以用來記錄二進位制位。這種塑料介質比較柔軟,所以稱為軟盤。

在資料記錄原理上和軟盤很相似的裝置硬碟(hard disk,hdd),且幾乎是同乙個時代的產物,但是與軟盤不同,硬碟是多碟片、密封、高轉速的,採用鋁合金作為基片,並在表面塗上磁性物質來記錄二進位制位。這就使得它的碟片具有較高的硬度,故稱為硬碟。

為了進一步搞清楚硬碟的內部構造,圖 4-3 和圖 4-4 給出了更為詳細的圖示。

硬碟的第乙個扇區是 0 面 0 道 1 扇區,或者說是 0 頭 0 柱 1 扇區,這個扇區稱為主引導扇區

如果計算機的設定是從硬碟啟動,那麼,rom-bios 將讀取硬碟主引導扇區的內容,將它載入到記憶體位址 0x0000:0x7c00 處(也就是實體地址 0x07c00),然後用乙個 jmp 指令跳到那裡接著執行:

jmp 0x0000:0x7c00

通常,主引導扇區的功能是繼續從硬碟的其他部分讀取更多的內容加以執行。像 windows 這樣的作業系統,就是採用這種接力的方法一步一步把自己執行起來的。

說到這裡,我們可以想象,如果我們把自己編譯好的程式寫到主引導扇區,不也能夠讓處理器執行嗎?

對於這種想法,有乙個好訊息和乙個壞訊息。

書上已經很詳細了,安裝過程這裡不再贅述。

x86筆記 第 3 章 組合語言和彙編軟體

指令和被指令引用的資料在記憶體中都是一些或高或低的電平,每乙個電平都可以看成是乙個二進位制位 0 或者 1 8個二進位制位形成一位元組。要解讀記憶體中的東西,最好的辦法就是將它們按位元組轉換成數字的形式。比如,下面這些數字就是存放在記憶體中的8086指令,我們用的是十六進製制 b8 3f 00 01...

虛擬機器核心公升級(2 6 9 2 6 18)筆記

第一次make menuconfig啥也沒選,搞了半天總是無法啟動,後來網上搜了些資料,太多了,就不列出了,這裡只把步驟記錄一下 解壓新核心 usr src make menuconfig 配置核心各選項 device drivers scsi device support 此項不選的話,下面兩項就...

G3筆記本跑3節點虛擬機器效能測試報告

硬體環境 g3 cpu 9300h 16g記憶體 1g 固態硬碟 軟體環境簡介 3個vmware 3個節點跑centos7.4 每個節點都裝有etcd,flannel,haproxy,keepalived,apiserver,kube controller,kubesechuler kubectl ...