「首先表示下就剛剛九寨溝發生7級**,成都震感強烈」
1.記憶體與位址
乙個位址所對應的記憶體單元不能存很多東西,只能存乙個位元組,以前講過的int、float等多位元組的資料型別儲存在記憶體中要占用連續的多個位址,這種情況下資料的位址是它所佔記憶體單元的起始位址。
2.cpu
處理器是32位的,那麼乙個字就是32位;32位計算機即有32條位址線
本節所說的位址線、資料線是指cpu的內匯流排,是直接和cpu的執行單元相連的,內匯流排經過mmu和匯流排介面的轉換之後引出到晶元引腳才是外匯流排,外位址線和外資料線的位數都有可能和內匯流排不同
3.裝置
訪問裝置是相當複雜的,計算機的裝置五花八門,各種裝置的效能要求都不一樣,有的要求頻寬大,有的要求響應快,有的要求熱插拔,於是出現了各種適應不同要求的裝置匯流排,比如pci、agp、usb、1394、sata等等,這些裝置匯流排並不直接和cpu相連,cpu通過記憶體對映i/o或埠i/o訪問相應的匯流排控制器,通過匯流排控制器再去訪問掛在匯流排上的裝置。所以上圖中標有「裝置」的框可能是實際的裝置,也可能是裝置匯流排的控制器。
在x86平台上,硬碟是掛在ide、sata或scsi匯流排上的裝置,儲存在硬碟上的程式是不能
被cpu直接取指令執行的,作業系統在執行程式時會把它從硬碟拷貝到記憶體,這樣cpu才
能取指令執行,這個過程稱為載入(load)。程式載入到記憶體之後,成為作業系統排程執行的乙個任務,就稱為程序(process)。程序和程式不是一 一對應的。乙個程式可以多次載入到記憶體,成為同時執行的多個程序 。
作業系統和其它使用者程式的不同之處在於:作業系統是常駐記憶體的,而其它使用者程式則不一定;作業系統最核心的功能是管理程序排程、管理記憶體的分配使用和管理各種裝置,做這些工作的程式稱為核心(kernel) 。
每個裝置都有一條中斷線,通過中斷控制器連線到cpu,當裝置需要主動通知cpu時就引發乙個中斷訊號,cpu正在執行的指令將被打斷,程式計數器(eip)會指向某個固定的位址,於是cpu從這個位址開始取指令(或者說跳轉到這個位址),執行中斷服務程式(isr),完成中斷處理之後再返回先前被打斷的地方執行後續指令。
4.mmu(記憶體管理單元)
現代作業系統普遍採用虛擬記憶體管理機制,這需要處理器中的mmu(memory management unit)提供支援。cpu執行單元發出的記憶體位址將被mmu截獲,從cpu到mmu的位址稱為虛擬位址(virtual address,以下簡稱va),而mmu將這個位址翻譯成另乙個位址發到cpu晶元的外部位址引腳上,也就是將va對映成pa 。
如果是32位處理器,則內位址匯流排是32位的,與cpu執行單元相連,而經過mmu轉換之後的外位址匯流排則不一定是32位的,32位處理器的虛擬位址空間是4gb 。虛擬記憶體的哪個頁面對映到物理記憶體的哪個頁幀是通過頁表(page table)來描述的,頁表儲存在物理記憶體
中, mmu會查詢頁表來確定乙個va應該對映到什麼pa,所以在啟用mmu的情況下,程式中使用的位址都是虛擬位址,都會引發mmu做查表和位址轉換操作。
4.1 多了一層va到pa的轉換到底換來了什麼好處?
mmu除了做位址轉換之外,還提供記憶體保護機制。 各種體系結構都有使用者模式(user mode)和特權模式(privileged mode)之分 。
(1)作業系統可以在頁表中設定每個記憶體頁面的訪問許可權 。這樣設定好之後,當cpu要訪問乙個va時, mmu會檢查cpu當前處於使用者模式還是特權模式,訪問記憶體的目的是讀資料、寫資料還是取指令,如果和作業系統設定的頁面許可權相符,就允許訪問,把它轉換成pa,否則不允許訪問,產生乙個異常(exception) 。(異常的處理過程和中斷類似,不同的是中斷由外部裝置產生而異常由cpu內部產生)
通常作業系統把虛擬位址空間劃分為使用者空間(前3g)和核心空間(後1g) 。使用者程式載入到使用者空間,在使用者模式下執行,不能訪問核心中的資料,也不能跳轉到核心**中執行(這樣即使使用者程式崩潰,僅會造成該程序崩潰,而不會影響到核心空間,保護了核心的穩定性)。
(2)cpu在產生中斷或異常時不僅會跳轉到中斷或異常服務程式,還會自動切換模式,從使用者模式切換到特權模式,因此從中斷或異常服務程式可以跳轉到核心**中執行 。
總結:總結一下:在正常情況下處理器在使用者模式執行使用者程式,在中斷或異常情況下處理器切換到特權模式執行核心程式,處理完中斷或異常之後再返回使用者模式繼續執行使用者程式 。
段錯誤我們已經遇到過很多次了,它是這樣產生的:
1. 使用者程式要訪問的乙個va,經mmu檢查無權訪問。
2. mmu產生乙個異常, cpu從使用者模式切換到特權模式,跳轉到核心**中執行異常服務程式。
3. 核心把這個異常解釋為段錯誤,把引發異常的程序終止掉。
5.memory hierarchy (儲存器階級)
按照離cpu由近到遠的順序依次是cpu暫存器、 cache、記憶體、硬碟,越靠近cpu的儲存器容量越小但訪問速度越快 。
cpu大部分時間是在和cache打交道,有cache的計算機明顯會快很多
計算機體系結構
計算機體系結構 計算機體系機構指計算機中部件和部件之間的聯絡 一 馮 諾依曼體系 1 計算機處理的資料和指令用二進位制數表示 2 採用儲存程式方式,指令和資料儲存在同乙個儲存器中。3 指令由操作碼和位址組成。操作碼指明指令的操作型別,位址指明運算元和位址。4 以運算器為中心,i o裝置與儲存器間的資...
計算機體系結構
2.計算機體系結構 經典計算機體系結構概念的實質是計算機系統中軟硬體介面的確定,其介面之上的是軟體的功能,介面之下的是硬體和韌體的功能。廣義 現代 的計算機體系結的構概念,它除了包括經典的計算機體系結構的概念範疇 指令集結構 還包括計算機組成和計算機實現的內容。計算機體系結構是程式設計師所看到的計算...
計算機體系結構
現在的計算機都是基於馮 諾依曼體系結構的,其中,cpu和記憶體是兩個主要組成部分。記憶體主要儲存資料和指令,而cpu從記憶體中取出指令執行。為了讀取方便管理記憶體,每乙個記憶體單元都進行了編址,這些編址是從 開始的整數,我們稱之為位址。cpu可以通過位址找到相應的記憶體單元。而乙個位址的記憶體單元只...