分頁(yè)式存儲(chǔ)管理方法
操作系統(tǒng)采用分頁(yè)式存儲(chǔ)管理方法,以解決連續(xù)分配內(nèi)存方式產(chǎn)生的碎片問(wèn)題。傳統(tǒng)的連續(xù)分配方式會(huì)形成許多“碎片”,為了解決這個(gè)問(wèn)題,可以通過(guò)緊湊的方式將碎片拼接成一塊大的空間,但是這個(gè)拼接過(guò)程會(huì)導(dǎo)致系統(tǒng)開銷
操作系統(tǒng)采用分頁(yè)式存儲(chǔ)管理方法,以解決連續(xù)分配內(nèi)存方式產(chǎn)生的碎片問(wèn)題。傳統(tǒng)的連續(xù)分配方式會(huì)形成許多“碎片”,為了解決這個(gè)問(wèn)題,可以通過(guò)緊湊的方式將碎片拼接成一塊大的空間,但是這個(gè)拼接過(guò)程會(huì)導(dǎo)致系統(tǒng)開銷過(guò)大。因此,人們開始探索一種新的存儲(chǔ)管理方式,即離散分配方式。
離散分配方式
離散分配方式允許將一個(gè)進(jìn)程直接分散地裝入到許多不相鄰的分區(qū)中,不需要進(jìn)行“緊湊”操作。根據(jù)離散分配的基本單位不同,可以有兩種存儲(chǔ)管理方式:分頁(yè)存儲(chǔ)管理方式和分段存儲(chǔ)管理方式。
在分頁(yè)管理方式中,基本單位是頁(yè),稱為分頁(yè)存儲(chǔ)管理方式。每個(gè)進(jìn)程的邏輯地址空間被分成若干個(gè)大小相等的頁(yè)面或者頁(yè),并為每個(gè)頁(yè)面加以編號(hào)。對(duì)應(yīng)地,內(nèi)存空間也被分成與頁(yè)面相同大小的若干個(gè)存儲(chǔ)塊,稱為物理塊或頁(yè)框,并加以編號(hào)。在為進(jìn)程分配內(nèi)存時(shí),將進(jìn)程中的若干個(gè)頁(yè)面分別裝入到多個(gè)可以不相鄰的物理塊中。但是,在分頁(yè)系統(tǒng)中,如果不具備頁(yè)面對(duì)換功能(將處于阻塞狀態(tài)且優(yōu)先級(jí)低的進(jìn)程對(duì)換到外存),則稱為基本的分頁(yè)存儲(chǔ)管理方式,或稱為純分頁(yè)存儲(chǔ)管理方式。它不具有支持實(shí)現(xiàn)虛擬存儲(chǔ)器的功能,要求把每個(gè)作業(yè)全部裝入內(nèi)存后才能運(yùn)行。
頁(yè)面與頁(yè)表
在分頁(yè)存儲(chǔ)管理方式中,頁(yè)面是邏輯地址空間的基本單位,物理塊是內(nèi)存空間的基本單位。頁(yè)面和物理塊之間通過(guò)頁(yè)表進(jìn)行映射。頁(yè)面和物理塊的大小對(duì)分頁(yè)系統(tǒng)的性能有著重要影響。
頁(yè)面大小的選擇需要權(quán)衡內(nèi)存利用率和頁(yè)表長(zhǎng)度。如果頁(yè)面太小,會(huì)減小內(nèi)存碎片的總空間,提高內(nèi)存利用率,但會(huì)導(dǎo)致頁(yè)表過(guò)長(zhǎng),占用大量?jī)?nèi)存,降低頁(yè)面換進(jìn)換出的效率。而如果選擇的頁(yè)面較大,可以提高頁(yè)面換進(jìn)換出的速度,減少頁(yè)表的長(zhǎng)度,但會(huì)增加頁(yè)內(nèi)碎片的大小。通常頁(yè)面的大小應(yīng)選擇適中,且為2的冪次方。
頁(yè)表和地址變換機(jī)構(gòu)
在分頁(yè)系統(tǒng)中,為了能夠找到每個(gè)頁(yè)面所對(duì)應(yīng)的物理塊,系統(tǒng)為每個(gè)進(jìn)程建立了一張頁(yè)表。頁(yè)表記錄著邏輯地址到物理塊號(hào)的映射關(guān)系。當(dāng)進(jìn)程執(zhí)行時(shí),通過(guò)查找頁(yè)表找到對(duì)應(yīng)的物理塊號(hào)。
為了實(shí)現(xiàn)從邏輯地址到物理地址的轉(zhuǎn)換,操作系統(tǒng)需要設(shè)置地址變換機(jī)構(gòu)。地址變換機(jī)構(gòu)的基本任務(wù)是將邏輯地址轉(zhuǎn)換為物理地址。在基本的地址變換機(jī)構(gòu)中,頁(yè)表的功能可以由一組專門的寄存器來(lái)實(shí)現(xiàn)。一個(gè)頁(yè)表項(xiàng)用一個(gè)寄存器表示。頁(yè)表大多數(shù)情況下駐留在內(nèi)存中,只有一個(gè)頁(yè)表寄存器用于存放頁(yè)表在內(nèi)存的起始地址和長(zhǎng)度。當(dāng)進(jìn)程要訪問(wèn)某個(gè)地址時(shí),地址變換機(jī)構(gòu)會(huì)自動(dòng)將邏輯地址分為頁(yè)號(hào)和頁(yè)內(nèi)地址兩部分,并根據(jù)頁(yè)號(hào)查找頁(yè)表,獲取對(duì)應(yīng)的物理塊號(hào),然后構(gòu)成物理地址。
具有快表的地址變換機(jī)構(gòu)
為了提高地址變換速度,可以在地址變換機(jī)構(gòu)中增設(shè)一個(gè)具有并行查詢能力的高速緩沖寄存器,也稱為聯(lián)想寄存器或塊表。這個(gè)高速緩沖寄存器用來(lái)存放當(dāng)前訪問(wèn)的頁(yè)表項(xiàng),以減少對(duì)內(nèi)存的訪問(wèn)次數(shù)。當(dāng)CPU給出一個(gè)邏輯地址后,地址變換機(jī)構(gòu)會(huì)將頁(yè)號(hào)與高速緩存中的所有頁(yè)號(hào)進(jìn)行比較,如果找到匹配的頁(yè)號(hào),則直接從快表中讀取物理塊號(hào),并構(gòu)成物理地址。如果沒(méi)有找到匹配的頁(yè)號(hào),則還需訪問(wèn)內(nèi)存中的頁(yè)表,找到對(duì)應(yīng)的物理塊號(hào),并將該頁(yè)表項(xiàng)存入快表中。
兩級(jí)和多級(jí)頁(yè)表
在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,邏輯地址空間很大,頁(yè)