2012-07-19 77 views
0

我知道每個進程都有一個內存塊,它包含代碼段,數據段,堆和堆棧。並且代碼段也是隻讀的。但是當一個進程開始運行時,這個在哪裏只讀內存分配以及操作系統如何區分每個進程的只讀內存部分 ?操作系統內存分配

+0

它在RAM(或虛擬內存)中,它通過在頁表中設置「只讀」屬性進行區分。 – 2012-07-19 15:44:39

回答

0

每個進程都有所謂的頁表,它將實際的物理RAM映射到進程的虛擬內存空間。該表爲每個「頁面」分配屬性,通常爲4kb。其中一些屬性包括將頁面設置爲只讀,不可執行,具有特權代碼等。操作系統基本上告訴硬件屬性是什麼,以便它不必微處理每個內存訪問,因爲這樣做會效率非常低。

有關低級別詳細信息,請參閱this osdev wikipage以獲取典型x86機器中的說明和示例。