程序虛擬記憶體模型

2022-06-21 23:03:14 字數 945 閱讀 6696

以32位的作業系統為例,32位的作業系統每個程序對應的虛擬記憶體為4g(232),其中核心區1g,使用者區3g

程序控制塊pcb

1.pcb是程序存在的資料結構,系統通過pcb的存在而感知程序的存在

2.系統通過pcb對程序進行排程和管理

3.程序(pcb)與pid是一對一關係,而與程式檔案之間是多對一關係

pcb管理和訪問

process control block,是由作業系統維護的用來記錄程序相關資訊的一塊記憶體。

每個程序在os中的登記表項,os根據此pcb來對程序進行管理。

pcb位於核心段中,通常不能由應用程式自身的**來直接訪問,需要通過系統呼叫或unix中的程序檔案系統(/proc)直接訪問程序映像。

pcb中主要結構

程序描述資訊

process id、程序名、user id、process group

程序控制資訊

當前狀態、優先順序、**執行入口位址、程式的外存位址、程序間同步和通訊

資源占用資訊

虛擬位址空間的現狀、開啟檔案列表

cpu現場保護結構

暫存器值、pc、棧指標位址等。

管理命令:ps、top、nice、renice、bg、fg

pcb的組織方式

鍊錶:同一狀態的程序使用乙個鍊錶。

如就緒鍊錶、阻塞鍊錶

索引表:同一狀態的程序歸入乙個索引表,再指向pcb table(更常用)

程序的虛擬記憶體

程序屬性資訊的task struct結構體,其中包含程序使用的記憶體資訊。在32位的作業系統中,當程序建立的時候 程式執行時 系統會為每乙個程序分配大小為4gb的虛擬記憶體空間,用於儲存程序屬性資訊。c語言中的變數,通常使用 運算子來獲得其位址,那麼,這個位址就是虛擬位址,在簡單的微控制器中,編寫的...

Linux程序虛擬記憶體簡介

使用者態和核心態 程序在執行時一般存在兩種狀態 使用者態 核心態。使用者態是指程序在執行使用者 核心態時指程序在執行核心 所以在linux中每個程序都存在兩個棧分別使用者使用者態和核心態的執行。使用者空間和核心空間 在32位系統中linux程序的虛擬記憶體為4gb,linux核心將這4g位元組的空間...

Linux程序的虛擬記憶體

使用者程序的虛擬位址空間是linux的乙個重要的抽象 它為每個執行程序提供了同樣的系統檢視,這使得多個程序可以同時執行,而不會干擾到其他程序記憶體中的內容。每個應用程式都有自己的線性位址空間,與所有其他應用程式隔開。各程序虛擬位址空間起始於0,延伸到task sieze 1,其上是核心位址空間。使用...