在操作系統中,分頁是一種存儲機制,用於以頁面形式從輔助記憶體檢索進程到主記憶體中。
分頁背後的主要思想是以頁面的形式劃分每個進程。 主存也將以幀的形式分割。
進程的一頁將被存儲在記憶體的一個幀中。 分頁可以存儲在內存的不同位置,但優先順序始終是查找連續的幀或空洞。
進程頁面只有在需要時才會被帶入主記憶體,否則它們將駐留在輔助存儲中。
不同的操作系統定義不同的幀大小。 每個幀的大小必須相等。 考慮到頁面被映射到頁面中的幀,頁面大小需要與幀大小相同。
示例
讓我們考慮主記憶體大小為16Kb,幀大小為1KB,因此主記憶體將被分成每個1KB的16個幀的集合。
系統中有4個進程,分別是4KB的P1,P2,P3和P4。 每個進程分為每個1 KB的頁面,以便一個頁面可以存儲在一個幀中。
最初,所有的幀都是空的,因此進程的頁面將以連續的方式存儲。
下圖顯示了框架,頁面兩者之間的映射。
讓我們考慮一下,P2和P4在一段時間後會轉移到等待狀態。 現在,8個幀變空了,因此可以將其他頁面加載到空閒的地方。 大小為8 KB(8頁)的進程P5正在就緒佇列內等待。
鑒於這一事實,在內存中有8個不連續的幀,分頁提供了將流程存儲在不同位置的靈活性。 因此,可以在P2和P4的地方加載進程P5的頁面。
記憶體管理單元
記憶體管理單元(MMU)的目的是將邏輯地址轉換為物理地址。 邏輯地址是CPU為每個頁面生成的地址,而物理地址是存儲每個頁面的幀的實際地址。
當CPU使用邏輯地址訪問頁面時,操作系統需要獲取物理地址以物理訪問該頁面。
邏輯地址有兩部分。
- 頁碼
- 偏移量
OS的記憶體管理單元需要將頁碼轉換為幀號。
示例
考慮到上面的圖像,假設CPU要求進程P3的第4頁的第10個字。 由於處理P1的第4號頁面被存儲在第9號幀,因此第9幀的第10個字將作為物理地址返回。