原创 連續內存分配 讀操作系統概念第六版

內存通常分爲兩個區域:一個用於駐留操作系統,另一個用於用戶進程。 保護操作系統不受用戶進程所影響,保護用戶進程不受其他用戶進程所影響。通過採用重定位寄存器和界限寄存器,可以實現這種保護。重定位寄存器含有最小的物理地址值;界限寄存器含有邏輯

原创 解讀城市

 沒有機遇,沒有驚才,難以留在城市; 沒有技能,難以謀生,即使積累再豐富,坐喫山空,幾代甚至幾十代,也會離開城市。   別給自己太多的壓力,前路一片荊棘,走到最後的人寥寥無幾,都抱着雄偉壯志,挫傷的心遠比自豪的多。

原创 分頁一 讀操作系統概念第六版

 分頁(paging)內存管理方案允許進程的物理地址空間可以是非連續的。分頁避免了將不同大小的內存塊備份到交換空間上的麻煩問題。   物理內存分爲固定大小的塊,稱爲幀(frame)。邏輯內存也分爲同樣大小的塊,稱爲頁。當進程需要執行時,其

原创 [轉]50個c/c++源代碼網站

C/C++是最主要的編程語言。這裏列出了50名優秀網站和網頁清單,這些網站提供c/c++源代碼 。這份清單提供了源代碼的鏈接以及它們的小說明。我已盡力包括最佳的C/C++源代碼的網站。這不是一個完整的清單,您有建議可以聯繫我,我將歡迎

原创 處理器讀並解釋儲存在存儲器中的指令 讀深入理解計算機系統

hello.c源程序已經被編譯系統轉換成了可執行目標文件hello,並被存放在磁盤上。爲了在Unix系統上運行該可執行文件,我們將它的文件名輸入到稱爲shell的應用程序中: unix> ./hello hello,world unix>

原创 鏈接 讀深入理解計算機系統

 鏈接(linking)就是將不同部分的代碼和數據收集和組合成爲一個單一文件的過程,這個文件可被加載(或被拷貝)到存儲器並執行。鏈接可以執行於編譯時(compile time),也就是在源代碼被翻譯成及其代碼時;也可以執行於加載時(loa

原创 程序被其他程序翻譯成不同的格式

在hello程序生命週期的一開始時是一個高級C程序,因爲當處於這種形式時,它是能夠被人讀懂的。然而,爲了在系統上運行hello.c程序,每條C語句都必須被其他程序轉化爲一系列的低級機器語言指令。然後這些指令按照一種稱爲可執行目標程序(ex

原创 信息就是位+上下文 讀深入理解計算機系統

  我們的hello程序的生命是從一個源程序(或者說源文件)開始的,該源程序由程序員通過編輯器創建並保存爲文本文件,文件名就是helloc.c。源程序實際上就是一個由0和1組成的位(又稱爲比特)序列,這些位被組織8個一組,稱爲字節。每個字

原创 地址捆綁 讀操作系統概念第六版

 通常,程序以二進制可執行文件形式存儲在磁盤上。爲了執行,程序應被調入內存並放在進程內。根據所使用的內存管理方案,進程在執行時可以在磁盤和內存之間移動。在磁盤上等待調入內存以便執行的進程形成了輸入隊列。 通常的步驟是從輸入隊列中選一個進程

原创 數組分配和訪問 讀深入理解計算機系統

T A[N]; 它在存儲器中分配了L×N字節的連續區域,這裏L是數據類型T的大小(單位爲字節)。我們用XA來表示起始位置。其次,它引入了標識符A,A可以用來作爲指向數組開頭的指針。這個指針的值就是XA。可以用0~N-1之間的整數索引來訪問

原创 虛擬內存 讀操作系統概念第六版

 虛擬內存技術允許進程的執行不必完全在內存中。這種方案的一個很大的優點就是程序可以比物理內存大。而且,虛擬內存將內存抽象成一個巨大的、統一的存儲數組,進而將用戶看到的邏輯內存與物理內存分開。這種技術允許程序員不受內存存儲的限制。虛擬內存也

原创 分頁 讀操作系統概念第六版

 每個操作系統都有自己的方法來保存頁表。絕大多數都爲每個進程分配一個頁表。頁表的指針與其他信息(如指令計數器)一起存入進程控制塊中。當分派程序需要啓動一進程時,它必須首先裝入用戶寄存器,並根據所保存的用戶頁來定義正確的硬件頁表值。   標

原创 分段 讀操作系統概念第六版

採用分頁內存管理有一個不可避免的問題:用戶觀點的內存和實際內存的分離。用戶觀點的內存和實際內存不一樣。用戶觀點的內存需要映射到實際內存。該映射允許邏輯內存和物理內存的不同。   想一下你在寫程序時是如何考慮程序的。你會認爲程序是由主程序加