以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,其上是核心位址空間。使用...