Giáo trình Hệ điều hành - Chương 3: Quản lý lưu trữ - Phạm Ngọc Hưng

HỆ ĐIU HÀNH  
Chương 3  
QUN LÝ LƯU TRỮ  
9. Qun lý bnhớ  
9.1. Tng quan  
Như chúng ta đã thy chương trước, bnhlà trung tâm để thc  
hin ca các máy tính hin đại. Bnhbao gm mt mng ln các từ  
(words) hoc bytes nh, mi phn tử đều có địa chriêng mình. CPU nhn  
các lnh tbnhtutheo giá trca bộ đếm lnh. Các lnh này được  
np tthiết blưu trvào mt địa chxác định trong bnh.  
Mt chu kthc hin lnh thông thường, chthlnh được nhn từ  
bnh, sau đó được gii mã và ly các toán ttbnh. Sau khi chthị  
lnh được thc hin, kết quli được np trli bnh.  
Sliên kết địa chỉ  
Thông thường, chương trình được lưu trtrên đĩa như mt file thi  
hành. Chương trình phi được np vào bnhđặt trong mt tiến trình  
để được thc hin. Tuthuc vào cách qun lý bnhớ được sdng, các  
tiến trình có thchuyn qua li gia bnhđĩa. Tp hp các tiến trình  
trên đĩa là đang chờ đợi để được np vào bnhớ để thc hin hàng đợi  
vào (input queue).  
Thtc thông thường la chn mt tiến trình trong hàng đợi vào  
và np tiến trình đó vào bnh. Trong khi tiến trình được thc hin, nó  
truy nhp các lnh và dliu tbnh. Khi tiến trình kết thúc, vùng nhớ  
ca nó được gii phóng và có thể đáp ng cho tiến trình khác.  
Hu hết các hthng đều cho phép các tiến trình người dùng được  
lưu trú trong mt phn bt kca bnhvt lý. Mc dù không gian địa  
chỉ được bt đầu t00000, địa chỉ đầu tiên tiến trình người dùng không  
được t00000. Ssp xếp này có nh hưởng ti địa chmà chương trình  
người dùng có thsdng. Trong hu hết các trường hp, chương trình  
người dùng phi tri qua mt sbước trước khi có thể được thc hin.  
Địa chcó thể được biu din theo nhiu cách khác nhau mi bước. Địa  
chtrong chương trình ngun được biu din bng các ký t(dưới dng  
Phm Ngc Hưng  
95  
Qun lý lưu trữ  
mt cái tên). Mt chương trình dch stiến hành liên kết các địa chký tự  
này thành các địa chtương đối (tính từ đầu chương trình, đầu module).  
Bliên kết hay bnp schuyn các địa chtương đối này thành các địa  
chtuyt đối. Mi sliên kết địa chlà mt sánh xtkhông gian địa  
chnày sang mt không gian địa chkhác.  
Sliên kết các lnh và dliu vào địa chbnhcó thhoàn tt  
qua các bước sau:  
- Thi đim dch: Trong thi đim này, tiến trình được np vào bộ  
nhvà các mã lnh tuyt đối được to ra. Các mã lnh được phát trin và  
tham chiếu tính tvtrí bt đầu np. Nếu sau này vtrí bt đầu np bị  
thay đổi thì các lnh cn phi được dch li.  
- Thi đim np: trong thi đim dch, tiến trình được np vào bộ  
nhvà các mã lnh tương đối được to ra. Vic liên địa chỉ được để dành  
li cho thi đim np. nếu địa chbt đầu np thay đổi chcn np li các  
mã lnh người dùng kết hp vi giá trthay đổi này.  
- Thi đim thc hin: Nếu tiến trình có thchuyn đổi quá li gia  
đon này sang đon khác trong quá trình thc hin thì vic liên kết địa chỉ  
có thể để dành cho thi đim thc hin. Phn cng đặc bit sphi được  
chun bsn cho cách làm vic này. Hu hết các hệ điu hành mc tiêu  
chung đều sdng phương pháp này.  
Không gian địa chlogic và không gian địa chvt lý  
Mt địa chỉ được sinh bi CPU thường là mt địa chlogic:  
Địa chlogic - còn gi là địa chỉ ảo, là tt ccác địa chdo bxlý  
to ra.  
Địa chvt lý - là địa chthc tế mà trình qun lý bnhnhìn thy  
và thao tác.  
Không gian địa chlogic - là tp hp tt ccác địa chỉ ảo phát sinh  
bi mt chương trình.  
Không gian địa chvt lý - là tp hp tt ccác địa chvt lý tương  
ng vi các địa chỉ ảo.  
96  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
Địa chỉ ảo và địa chvt lý là như nhau trong phương thc liên kết  
địa chvào thi đim biên dch cũng như vào thi đim np. Nhưng có sự  
khác bit gia địa chỉ ảo và địa chvt lý trong phương thc kết buc vào  
thi đim xlý.  
9.2. Các phương pháp np chương trình  
Np mt ln  
Toàn bmã lnh và dliu ca chương trình được np vào bnhớ  
mt ln. Đây là mt phương pháp đơn gin để np chương trình.  
Theo cách này, thi gian thc sự để np chương trình là nhnht  
có thvà tc độ thc hin chương trình cũng cao nht vì tt ccác mã  
lnh và dliu đã sn sàng trong bnh. Do np mt ln tt cmã lnh  
và dliu ca chương trình nên đòi hi bnhphi có đủ theo yêu cu  
ca chương trình trong mt thi đim. Đây là mt yêu cu không phi lúc  
nào cũng thomãn được vì không gian nhvt lý ca máy thường là rt  
nh. Vì lý do này nên chnhng chương trình có kích thước cũng như yêu  
cu vbnhkhông ln mi np đợc.  
Np động  
Toàn bchương trình và dliu phi được np vào bnhớ để các  
tiến trình thc hin. Kích thước ca bnhbgii hn bi kích thước bộ  
nhvt lý. Để khai thác tt hơn không gian còn trng ca bnh, ta có  
thsdng phương pháp np động. Vi phương pháp này, mt chương  
trình con schỉ được np vào khi nó được gi. Tt ccác chương trình  
con đều được lưu trên đĩa theo. Khi cn, mt chương trình con gi đến  
mt chương trình con khác, trước hết nó skim tra xem chương trình đó  
đã được np vào bnhhay chưa. Nếu chưa thì bnp stiến hành np  
chương trình con đó vào bnhvà cp nht vào bng địa chnhng thay  
đổi. Sau khi chương trình con đã được np vào bnhthì quyn điu  
khin mi được trao cho nó.  
Phương pháp này có nhiu ưu đim: các chương trình con không  
được thc hin thì skhông bao giờ được np vào bnh. Toàn bmã  
lnh ca chương trình có thrt ln nhưng nó li được thc hin trong  
không gian nhnhhơn rt nhiu.  
Phm Ngc Hưng  
97  
Qun lý lưu trữ  
Phương pháp np động này không đòi hi shtrợ đặc bit nào  
ca hệ điu hành.  
Thư vin chia svà liên kết động  
Trong phương pháp np mt ln hay np động, các chương trình  
được liên kết ttrước. Trong các chương trình có thcha nhng đon  
mã ging nhau cùng thc hin mt schc năng nào đó. Các đon mã  
này có thể được tp hp thành các thư vin. Khi liên kết, các đon mã  
trong thư vin chương trình có sdng đến sẽ được sao chép và liên kết  
định ngay từ đầu vào chương trình. Vic này làm cho kích thước  
chương trình ln lên. Trong hthng có thcó nhiu chương trình đang  
thc hin vi nhiu bn sao ca cùng mt đon mã.  
Thay vì liên kết cố định các đon mã trong thư vin tĩnh vào  
chương trình thì người ta có thtchc các đon mã này trong mt thư  
vin liên kết động. Nhng đon mã này không được ghép ngay trong  
chương trình mà chkhi chương trình được thc hin thì đon mã mi  
được tham kho đến và liên kết vi chương trình. Các chương trình khác  
nhau cùng tham kho đến mt đon mã có thto ra mt bn sao riêng  
cho mình hoc sdng chung đon mã đã được np trong bnh.  
Vi các thư vin liên kết động, người ta có thddàng cp nht,  
nâng cp lên phiên bn mi mà không phi thay đổi chương trình sdng  
thư vin. Tt ccác chương trình có tham chiếu đến thư vin này đều  
được tự động cp nht phiên bn mi. Nếu nâng cp thư vin tĩnh thì tt  
ccác chương trình đã tham chiếu đến thư vin này trước kia đều phi  
liên kết li thì mi có thsdng được phiên bn mi đó. Các thư vin  
liên kết động có thtn ti nhiu phiên bn khác nhau và chúng có thể  
cùng được np trong bnh. Tunhu cu sdng, chương trình có thể  
la chn phiên bn cũ hoc mi da vào các thông tin mô ta cho mi  
phiên bn (thông tin này scho biết phiên bn mi thay đổi nhng gì).  
Các thư vin liên kết động còn được gi là các thư vin chia s.  
Không ging như np động, thư vin liên kết động cn ti shtrợ  
ca hệ điu hành. Nếu các tiến trình được bo vkhi sxâm phm ca  
98  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
các tiến trình khác thì hệ điu hành cn can thip để cho phép mt tiến  
trình có ththam chiếu đến mt đon lnh ca tiến trình khác hoc tt cả  
các tiến trình đều được phép truy nhp vào mt không gian địa ch.  
Np kiu Overlay  
Để mt chương trình ln có thể được thc hin trong mt không  
gian nhvt lý nhta có thsdng cu trúc overlay. Trong cu trúc  
này, chnhng đon mã hin đang sdng mi được np vào bnhớ để  
thc hin, các đon mã khác vn được lưu trtrên đĩa. Khi cn đến đon  
mã nào mà nó hin chưa có trong bnhthì sẽ được tìm trên đĩa và np  
vào bnhsau đó được thc hin.  
9.3. Các cu trúc chương trình  
Cu trúc đơn gin (cu trúc tuyến tính)  
Toàn bchương trình được dch và biên tp thành mt module duy  
nht. Khi thc hin, toàn bmã lnh, dliu ca chương trình được np  
vào bnhmt ln.  
Ưu đim ca cu trúc này là chương trình chy nhanh hơn. Chi phí  
cho np chương trình thp nht. Để tchc chương trình  
Nhược đim là đòi hi bnhphi thomãn yu cu ca chương  
trình trong cùng thi đim. Vi không gian bnhớ để thc thi chương  
trình hn chế, cu trúc này chcho phép phát trin các chương trình có  
nhu cu bnhít. Phù hp cho các bài toán nh.  
Cu trúc động  
Chương trình được chia thành nhiu module có thể được np chy  
độc lp. Mi module thường có cu trúc logic hoàn chnh. Có hai phương  
pháp để np chương trình.  
Phương pháp thnht, trong các module ca chương trình có mt  
module chính. Module này sẽ được np chy từ đầu và nm cố định trong  
bnhcho đến khi chương trình kết thúc. Module chính có nhim vụ điu  
khin np các module còn li và cho thc thi các module đó. Bphn  
mm tin ích NC chy trên môi trường DOS là mt ví dcho chương trình  
có cu trúc động.  
Phm Ngc Hưng  
99  
Qun lý lưu trữ  
Phương pháp thhai là coi tt ccác module như nhau, module  
nào cũng có nhim vnp module kế tiếp (nếu có) trước khi tgii  
phóng. Trong scác module, chcn xác định module được np đầu tiên.  
Trong bnhthường chtn ti module hin đang thi hành. Khi mt  
module mi được np, nó sthay thế cho module đã được np trước.  
Phương pháp tchc chương trình này đòi hi người lp trình phi ttổ  
chc np các module. Mi module phi có khnăng tgii phóng và np  
các module khác.  
Cu trúc ph(Overlay)  
Mt chương trình được viết theo cu trúc overlay bao gm các  
thành phn sau:  
- Bộ điu khin overlay  
- Bng điu khin overlay  
- Các đon mã được gi overlay  
- Các đon mã dùng chung được np mt ln  
Bộ điu khin overlay sẽ điu khin vic np các đon mã gi  
overlay ttrên đĩa da trên bng điu khin overlay theo yêu cu ca  
đon mã đang thc hin.  
Chương trình viết theo cu trúc này thường được biên tp thành  
hai phn. Mt phn được thc thi ban đầu và nm cố định trong bnh.  
Phn còn li cha các module overlay. Các module này sẽ được np vào  
bnhvà thc hin khi nó được tham chiếu đến.  
Bnhớ để chy chương trình overlay được chia thành các mc  
được gi là các mc overlay.  
Các module được chia thành các nhóm tương ng vi các mc  
overlay. Mi mc overlay yêu cu bnhđộ ln bng kích thước bộ  
nhca module ln nht trong mc. Mc 0 là mc dành cho các module  
được np từ đầu và nm cố định trong bnhsut quá trình chương trình  
thi hành. Các lp còn li sẽ được để dành sn không gian nh. Mt  
module thuc mc nào thì sẽ được np vào vùng nhtương ng vi mc  
đó. Module np sau sghi đè lên mã lnh và dliu ca module được  
100  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
np trước đó (tính cht ph). Các li gi đồng mc cn được tránh sử  
dng để không gây li khi trvề địa chỉ đã bthay đổi bi module np  
sau.  
Mc 0 (9Kb)  
Mc 1 (35Kb)  
Mc 2 (48Kb)  
M3(32Kb)  
M4(40Kb)  
M2(28Kb)  
M1(35Kb)  
M5(48Kb)  
M6(25Kb)  
M0  
(9Kb)  
Hình 9.1: Chương trình cu trúc overlay  
Quan sát trên hình 9.1, ta thy chương trình có tng s7 module  
(M0 đến M6) vi tng bnhcác module là 217 Kb. Vi cu trúc overlay,  
chương trình yêu cu 3 vùng nhớ để thc hin vi tng kích thước chcn  
92 Kb, nhhơn nhiu so vi kích thước ca chương trình.  
9.4. Tráo đổi bnhớ  
Trong quá trình thc hin, tiến trình phi được np vào bnhớ  
nhưng chúng cũng có thể được lưu tm ra bnhngoài để ri li được  
np tbnhngoài vào thc hin phiên tiếp theo. Quantum (khong  
thi gian nhdành cho mi tiến trình) phi được la chn sao cho đủ ln  
để đủ thi gian cho vic tráo đổi các tiến trình gia bnhtrong và bộ  
nhlưu trtm thi bên ngoài.  
9.5. Phương pháp cp phát bnhliên tc  
Bo vbnh:  
Bo vbnhphi đảm bo để các tiến trình không xâm phm  
vào vùng nhca hthng, bo vcác tiến trình sao cho vùng nhca  
chúng không bxâm phm bi các tiến trình khác.  
Phm Ngc Hưng  
101  
Qun lý lưu trữ  
Để thc hin bo vbnhngười ta sdng hai thanh ghi: thanh  
ghi gii hn (limit register) và thanh ghi định li địa ch(relocation  
register).  
Mt địa chlogic được đưa ra tCPU trước hết phi được kim tra  
gii hn theo thanh ghi limit register. Nếu địa chkhông vượt gii hn so  
vi thanh ghi này thì tiến hành cng địa chlogic này vi mt sgia cha  
trong thanh ghi relocation register cho ra mt địa chvt lý ca ô cn truy  
nhp.  
Cp phát bnh:  
Phân chia tĩnh: theo cách này, bnhớ được chia thành nhiu  
phn (partition) cố định ngay từ đầu có kích thước không nht thiết phi  
bng nhau. Mi mt partition schỉ đáp ng yêu cu ca duy nht mt  
tiến trình.  
Mc độ đa chương trình (hssong song) ca hthng lthuc  
vào slượng các phn. Mi phn chia sphc vcho mt tiến trình.  
Khi mt tiến trình vào hthng, nó được đưa vào hàng đợi vào và  
để tiến trình có ththc hin nó phi được cp phát bnh. Hthng  
tiến hành tìm xem có phn nào còn trng hay không, nếu có thì tiến hành  
cp phát cho tiến trình. Khi mt tiến trình kết thúc, phn nhdo nó  
chiếm dng sẽ được gii phóng và sn sàng cho tiến trình khác.  
Vic la chn mt phn trng để cp phát cho tiến trình có thể  
được thc hin theo nhiu cách khác nhau:  
First fit: Tiến hành cp phát cho tiến trình ngay khi tìm thy phn  
bnhcòn trng đầu tiên có kích thước đủ để đáp ng yêu cu tiến trình.  
Best fit: Tìm và cp phát cho tiến trình phn nhcòn trng có kích  
thước nhnht thomãn yêu cu ca tiến trình.  
Worst fit: Tìm và cp phát cho tiến trình vùng nhcòn trng ln  
nht thomã yêu cu ca tiến trình.  
Sphân mnh:  
Khi bnhớ được chia thành các phn cố định và cp phát cho các  
tiến trình, sau khi tiến trình hoàn tt công vic, nó trli vùng nhớ đã  
được cp phát. Cách qun lý này có thdn đến hin tượng phân mnh  
102  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
bnh. Mi mt tiến trình được cp phát mt phn đã được chia ttrước.  
Tiến trình có thkhông dùng hết phn bnhớ được cp phát nhưng phn  
còn tha li không thdùng cho tiến trình khác. Điu này khiến cho hệ  
thng có thrơi vào tình trng thiếu bnhgito (thc sbnhcòn  
trng nhưng li không thsdng và các tiến trình nhn được thng báo  
là hết bnh). Sthiếu bnhgii to có thrơi vào mt trong hai  
trường hp sau:  
- Tt cvùng nhớ đều chưa dùng, nhưng kích thước ca vùng ln  
nht vn nhhơn kích thước bnhtiến trình yêu cu. Khi đó tiến trình  
skhông được cp phát bnhvà nhn được trli là hết bnh, nhưng  
thc stoàn bkhông gian nhớ đều tdo  
- Tng kích thước các vùng còn tha ca mi phn nhớ đã chia cho  
các tiến trình ln hơn kích thước vùng nhtiến trình mi yêu cu nhưng  
không thể đáp ng yêu cu ca tiến trình này vì các vùng nhbphân  
mnh, nm ri rác nhiu nơi.  
Phân chia động: theo cách này, bnhkhông được chia sn từ  
đầu mà chkhi tiến trình có yêu cu thì bnhmi được chia và cp cho  
tiến trình vi kích thước va đủ kích thước mà tiến trình yêu cu.  
Phương pháp phân chia động hn chế được tình trng các vùng  
nhcòn dư tha cui mi partition khi tiến trình dùng không hết như  
trong phương pháp phân chia tĩnh. Tuy nhiên vn đề phân mnh bnhớ  
vn xy ra. Ta xem xet tình hung sau khi mt stiến trình hoàn tt công  
vic và kết thúc. Bnhdo chúng chiếm dng sẽ được trli và các vùng  
nhnày có thể đang nm xem gia các vùng nhớ đã được cp phát và  
chưa trli. Như vy hin tượng phân mnh đã xut hin và trong trường  
hp đó có thdn đến tình hung thiếu bnhgito như trong phân  
chia tĩnh.  
9.5. Kthut phân trang  
Phân trang là lược đồ qun lý bnhcho phép không gian địa chỉ  
vt lý ca mt tiến trình không lin knhau.  
Phm Ngc Hưng  
103  
Qun lý lưu trữ  
Theo truyn thng thì vic phân trang được htrbi phn cng.  
Vi các thiết kế gn đây, vic phân trang có thể được thc hin bng sự  
phi hp gia phn cng và hệ điu hành.  
Phương pháp:  
Bnhvt lý được chia thành các khi có kích thước cố định, đều  
nhau được gi là các khung (frame). Bnhlogic cũng được chia thành  
các khi có cùng kích thước tương tự được gi là trang (page).  
Khi mt tiến trình thc hin, các trang ca nó được np vào mt số  
khung còn trng tthiết blưu trngoài. Thiết blưu trngoài cũng chia  
thành các khi có cùng kích thước vi frame.  
Khi mt địa chỉ được to ra bi CPU nó cha hai thành phn thông  
tin và shiu trang (p) và độ lch (d). Shiu trang được dùng làm chsố  
truy nhp vào bng trang (page table). Bng trang cha địa chcơ sca  
mi trang trong bnhvt lý. Địa chcơ snày kết hp vi độ lch xác  
định định địa chvt lý ca ô nhcn truy nhp. Hình 9.2 thhin sự  
phân trang vi htrca phn cng.  
F000...0000  
Địa chlogic  
Địa chv
t lý  
CPU  
p d  
f d  
F111..1111  
p
f
Bnhvt lý  
Bng trang  
Hình 9.2: Phân trang bng phn cng  
104  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
Kích thước ca page hay frame được định nghĩa bi phn cng.  
Thông thường nó là 2n, thay đổi trong khong 512 bytes đến 16 Mb. Nếu  
kích thước không gian địa chlogic là 2m, và kích thước mt trang là 2n  
đơn vị địa ch(bytes hoc words) thì m-n bit cao xác định chstrang, n  
bits thp lưu địa chỉ độ lch trong trang.  
page number  
page offset  
p
d
n
m-n  
Hình 9.3 (trang sau) minh hocho kthut phân trang vi kích  
thước mi trang là 4 byte, không gian nhlogic (logical memory) 16 byte  
và không gian nhvt lý (physical memory) 32 byte.  
Htrca phn cng:  
Mi hệ điu hành có phương pháp riêng để lưu trcác bng trang.  
Hu hết là cp phát cho mi tiến trình mt bng trang. Mt con trỏ để trỏ  
đến bng trang được lưu cùng các giá trca thanh ghi trong bng điu  
khin tiến trình (PCB).  
Scài đặt vphn cng ca bng trang có thể được tiến hành  
theo nhiu các khác nhau. Cách đơn gin nht là bng trang được ci đặt  
như mt tp các thanh ghi riêng. Vic sdng các thanh ghi để lưu bng  
trang là mt gii pháp đơn gin, có tc độ truy cp cao tuy nhiên chthích  
hp cho các bng trang có kích thước nh. Trong thc tế, bng trang  
thường có kích thước khá ln, vì vy nó thường được lưu trong bnhvà  
truy cp đến thông qua PTBR (page-table base register). Để thay đổi địa  
chbng trang chcn thay đổi ni dung thanh ghi này.  
Vn đề xy ra đối vi phương phương pháp lưu bng trang trong  
bnhớ đó là thi gian truy cp. Để truy cp đến mt vtrí trong bnhớ  
phi mt 2 ln truy cp bnh. Ln thnht là truy cp bn trang để xác  
định địa chô nh, ln thhai truy cp ni dung ô nh. Quá trình truy cp  
như vy tiêu tn thi gian đáng k.  
Phm Ngc Hưng  
105  
Qun lý lưu trữ  
Mt phương pháp chun để gii quyết vn đề nêu trên là sdng  
mt bộ đệm phn cng (hardware cache) có kích thước nhnhưng tc  
độ truy cp cao được gi là TLB (translation lock-aside buffer). Mi đề  
mc trong TLB cha hai thành phn là chsvà mt giá tr.  
Địa Dữ  
frame  
chliu  
Địa  
chỉ  
0
1
2
3
4
5
6
7
8
9
10  
11  
12  
13  
14  
15  
Dữ  
liu  
a
b
c
d
e
page  
0
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
page  
frame  
0
1
2
3
5
6
2
3
0
f
1
2
3
g
h
i
j
k
m
l
o
p
q
page table  
i
j
k
m
l
o
p
q
9
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
logical momory  
a
b
c
d
e
f
g
h
physical memory  
Hình 9.3: Minh hosphân trang  
Sbo v:  
Vic bo vbnhtrong môi trường phân trang được thc hin  
bi các bit bo vệ được cp phát tương ng vi mi frame. Thông thường  
các bit này được lưu trong bng trang. Mt bit này có thxác định được  
106  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
trang có thghi-đọc hay chỉ đọc. Mi khi tham chiếu đến bnhớ đều  
thông qua bng trang để xác định mt shiu trang đúng. Trong khi đó,  
địa chvt lý sẽ được tính toán, các bit bo vsẽ được đánh du để kim  
tra sao cho không xy ra vic ghi vào trang chỉ đọc.  
Để tn dng các đon code đã được np, tiết kim bnh, các  
chương trình có thchia scùng mt strang nh.  
Cu trúc ca bng trang  
Trong các hthng máy tính hin đại htrkhông gian địa chỉ  
logic rt ln (t232 đến 264). Điu này dn đến kich thước cn thiết ca  
bng trang cũng phi ln. Ví dtrong hthng vi không gian địa chỉ  
logic 32 bit. Nếu kích thước ca trang là 4 KB (212) thì bng trang có thể  
lên đến mt triu đề mc (232/212=220). Mi đề mc tương ng 4 byte thì  
mi tiến trình cn đến 4 MB để cha mt bng trang. Để có thcp phát  
bnhmt cách liên tc, thun tin cho vic qun lý bng trang, ta có  
thchia bng trang thành các phn nhhơn và đợc qun lý bi mt bng  
phân trang ngoài (outer-page table) hay mt thư mc trang (page  
directory). Mt địa chtuyến tính 32 bit bây giờ được chia thành 2 phn:  
phn thnht là shiu trang (20 bit), phn thhai là độ lch trong  
trang (12 bit). Trong đó shiu trang li được chia thành hai phn: 10 bit  
đầu trỏ đến mt đề mc trong bng phân trang ngoài (hay thư mc  
trang), 10 bit tiếp là chsca trang trong bng trang xác định đợc tthư  
mc trang. Cu trúc ca địa chtuyến tính này đợc thhin hình sau:  
page number  
p1  
10  
page offset  
p2  
10  
d
12  
hình trên, p1 trỏ đến mt đề mc trong bng phân trang ngoài,  
p2 là độ lch ca trang trong bng trang ngoài.  
Quá trình để chuyn đổi mt địa chtuyến tính thành địa chvt lý  
được thc hin qua các bước thhin hình 9.4.  
Phm Ngc Hưng  
107  
Qun lý lưu trữ  
logic address  
p1 p2  
d
p1  
p2  
outer-table  
d
page  
Hình 9.4: Quá trình chuyn đổi địa chhai mc, kiến trúc phân trang 32 bit  
9.5. Phân đon  
Phương pháp cơ bn:  
Phân đon là mt lược đồ qun lý bnhmà không gian nhlogic  
được chia thành các đon. Mi đon có mt tên và độ dài. Địa chỉ được  
xác định bao gm ctên đon và độ lch (offset) trong đon. Mt chương  
trình người dùng khi được dch thành cũng bao gm nhiu đon, mi  
đon cha mt loi dliu mang ý nghĩa riêng. Ví dmt chương trình  
pascal có thgm các đon sau:  
- Các biến toàn cc  
- Ngăn xếp gi chương trình con, truyn các tham sđịa chtrở  
về  
- Đon mã cha mã chính và các chương tình con  
- Các biến cc bca mi chương trình con  
108  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
Phân đon bng phn cng:  
Mc dù người dùng có ththam chiếu đến các đối tượng thông qua  
địa chgm 2 thành phn segment và offset, địa chvt lý vn cn để truy  
cp vào không gian nhvt lý. Địa chvt lý chđịa chmt chiu, gm  
mt chui các byte. Vì vy chúng ta phi ct đặt mt ánh xcác địa chỉ  
hai chiu do người dùng to ra vào địa chmt chiu trong không gian địa  
chvt lý, vic này được thc hin bi bng đon (segment table). Mi đề  
mc (entry) trong bng đon cha mt địa chcơ sca đon và gii hn  
đon. Địa chcơ sở đon là địa chvt lý bt đầu đon trong bnhvt  
lý. Gii hn đon chính là độ dài ca đon.  
0
seg0  
200  
300  
Subroutine  
stack  
seg0  
segment limit base  
seg1  
seg2  
0
1
2
3
100 200  
200 1200  
250 700  
300 400  
400  
symbol  
table  
seg3  
seg2  
page table  
700  
seg3  
main  
proram  
950  
1200  
1400  
logical address space  
seg1  
physical memory  
Hình 9.5: Minh hosphân đon  
Phm Ngc Hưng  
109  
Qun lý lưu trữ  
Sphân mnh:  
Phương pháp qun lý bnhtheo kiu phân đon có thlàm xy  
ra hin tượng phân mnh ngoài. Phân mnh ngoài là hin tượng các vùng  
nhcòn trng và các vùng nhớ đã cp phát nm xen knhau. Phân mnh  
trong là hin tượng vùng nhớ đã cp phát còn trng mt phn. Sphân  
mnh dn đến hin tượng thiếu bnhgito (không thể đáp ng được  
yêu cu các chương trình mc dù bnhcòn trng thc s). Thiếu bộ  
nhgito có thxy ra hai tình hung sau:  
-
Toàn bbnhcòn trng nhưng các đon có kích thước nh,  
không đủ đáp đáp ng yêu cu ca bt kchương trình nào (do  
phân mnh ngoài).  
-
Các vùng nhớ đã được cp phát nhưng sdng không hết, tng  
các vùng trng còn li đủ để dáp ng yêu cu chương trình mi  
nhưng do nm ri rác trong các đon đã cp phát nên không  
thcp phát cho chương trình mi (do phân mnh trong).  
9.6. Kết hp phân trang-phân đon  
Chai kthut phân trang và phân đon đều có nhưng ưu đim và  
nhược đim riêng. Trong thc tế chai kthut này đều được áp dng  
trong các bvi xđang được sdng phbiến hin nay.  
Hệ điu hành OS/2 cu IBM phiên bn 32 bit chy trên kiến trúc  
Intel 386 sdng ckthut phân đon và phân trang để qun lý bộ  
nh. Slượng ti đa các đon cho mi tiến trình là 16 và kích thước mi  
đon có thlên đến 4 Gb. Kích thước trang là 4 Kb.  
Trong kthut qun lý phi hp phân đon và phân trang, không  
gian địa chlogic ca chương trình được chia thành 2 phn. Phn thnht  
bao gm các đon 8KB dành riêng cho mi tiến trình. Phn thhai bao  
gm các đon 8KB được chia scho các tiến trình. Thông tin vphn thứ  
nht được cha trong bng LDT (Local Descriptor Table), thông tin về  
đon thhai cha trong bng GDT (Global Descriptor Table). Mi đề mc  
trong LDT và GDL có kích thước 8 bytes cha thông tin chi tiết vmi  
đon bao gm địa chcơ sở đon, độ ln mi đon.  
110  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
Địa chlogic là mt cp bchn (selector) và độ lch (offset). Bộ  
chn là mt sđộ dài 16 bit, được chia thành 3 phn s, g, p:  
s
g
1
p
2
13  
Trong đó s (13 bit) là chsố đon, g (1 bit) cho biết đon trong  
LDT hay GDT và p (2 bit) được dùng cho mc đích bo v.  
Độ lch (offset) là mt s32 bit xác định vtrí ca byte trong đon.  
Máy có 6 thanh ghi cho phép 6 đon có thể được đánh định chbi  
mt tiến trình bt clúc nào. Nó có 6 thanh ghi chương trình nh8 byte  
cha các mô ttương ng trong LDT và GDT. Bnhcache này cho phép  
386 bqua vic đọc bmô ttbnhmi khi tham chiếu đến bnh.  
Địa chvt lý ca 386 là mt sđộ dài 32 bit được định dng  
như sau: Thanh ghi đon trỏ đến mt đề mc trong LDT hay GDT. Thông  
tin về địa chcơ sở đon, gii hn đon được dùng để to ra mt địa chỉ  
tuyến tính. Trước tiên, gii hn đon được sdng để kim gii hn  
được phép ca địa chtruy cp. Nếu địa chtruy cp nm ngoài gii hn  
thì mt li truy cp bnhsphát sinh và yêu cu truy cp sbtchi.  
Nếu địa chnm trong gii hn cho phép thì địa chỉ độ lch (offset) sẽ  
được cng vi địa chcơ sở đon to ra địa chtuyến tính. Địa chnày sau  
đó sẽ được chuyn thành địa chvt lý.  
Như đã đề cp phn đầu, mi đon li được chia thành các trang  
(áp dng kthut phân trang cho tng đon), mi trang có kích thước  
4KB. Mi bng trang có thcha đến 1 triu đề mc vì mi đề mc chỉ  
cha có 4 byte. Mi tiến trình vì vy có thphi cn đến 4MB bnhvt  
để cha mt bng trang. Và rõ rànglà chúng ta mong mun rng bng  
trang sẽ được cp phát bnhmt cách liên tc. Vn đề này được đáp  
ng 386 bng cách sdng lược đồ phân trang 2 cp. Địa chtuyến  
tính được chia thành các phn trong đó có mt shiu trang vi độ dài 20  
bit và độ lch trong trang vi độ dài 12 bit. Bng trang li được qun lý  
theo thư mc vì vy mà shiu trang 20 bit li đợc chia thành hai phn.  
Phm Ngc Hưng  
111  
Qun lý lưu trữ  
Trong đó, phn thnht 10 bit trỏ đến thư mc trang, 10 bit tiếp theo trỏ  
đến mt đề mc trong bng trang.  
p1  
10  
p2  
10  
d
12  
Lược đồ chuyn đổi địa chcũng tương tlược đồ chuyn đổi địa  
chỉ đã gii hiu hình 9.4. Quá trình chuyn đổi địa chca 386 áp dng kỹ  
thut kết hp phân đon vi phân trang có thể được mô tchi tiết hình  
9.6 dưới đây:  
Selector  
offset  
descriptor table  
+
segment descriptor  
directory  
page frame  
page  
offset  
physical  
address  
page directory  
dircetory entry  
page table  
page table  
entry  
page directory  
base register  
Hình 9.6: Lược đồ chuyn đổi địa ch80386  
112  
Phm Ngc Hưng  
HỆ ĐIU HÀNH  
9.7. Bài tp  
1. Hãy chra 2 đim khác nhau gia không gian địa chlogic và không  
gian địa chvt lý  
2. Hãy gii thích skhác nhau gia phân mnh trong và phân mnh  
ngoài.  
3. Gii thích các thut toán:  
a. First Fit  
b. Best Fit  
c. Worst Fit  
4. Khi mt tiến trình bcun ra ngoài nó smt khnăng sdng CPU  
(hoc ít nht trong mt khong thi gian). Hãy chra mt tình hung  
mà tiến trình bmt khnăng sdng CPU ngay ckhi nó không bị  
cun ra ngoài.  
5. Cho các đon nhcó kích thước 100 KB, 500 KB, 200 KB, 300 KB và  
600 KB (theo trt này). Nếu tiến hành cp phát bnhcho các tiến  
trình ln lượt có kích thước 212 KB, 417 KB, 112 KB và 426 KB theo ba  
gii thut First Fit, Best Fit và Worsd Fit thì gii thut nào sdng bộ  
nhhiu quhơn? Gii thích.  
6. Hãy da trên bng phân đon sau:  
Segment  
Base  
219  
Length  
600  
14  
0
1
2
3
4
2300  
90  
100  
580  
96  
1327  
1952  
Xác định địa chvt lý cho các địa chlogic sau:  
a. 0430  
b. 0110  
c. 2500  
d. 3400  
e. 4112  
Phm Ngc Hưng  
113  
Qun lý lưu trữ  
10. Bnhớ ảo  
10.1. Tng quan  
Trong thc tế, khi chy các chương trình thường gp phi mt số  
vn đề sau:  
- Yêu cu ca các chương trình thường vượt quá không gian nhớ  
tht ca máy tính.  
- Nhiu tiến trình thc hin đồng thi trong bnh, cn mt dung  
lượng ln bnh.  
Để tăng slượng tiến trình được thc hin đồng thi thì phi gim  
kích thước (yêu cu bnh) ca mi tiến trình và ngược li. Nếu mun có  
nhiu tiến trình cùng chy song song mà kích thước mi tiến trình không  
bthu nhthì chcòn cách là tăng bnh. Bnhvt lý có thtăng  
nhưng không phi là gii pháp hiu quvì slàm tăng giá thành hoc bị  
cn trbi các kthut, công nghhin ti. Gii pháp to ra bnhớ ảo tỏ  
ra hiu qu, đáp ng tt yêu cu vbnhmà chi phí li không cao. Bộ  
nhớ ảo là gì?  
- Bnhớ ảo là sphân chia bnhlogic ca người dùng trong  
không gian nhvt lý. Sphân chia này cung cp mt vùng nhớ ảo rt  
ln cho người lp trình trên cơ skhông gian nhhn chế ca bnhvt  
lý.  
- Bnhớ ảo có thể được to ra tchiến lược qun lý bnhtheo  
kthut phân trang áp dng phương pháp đổi trang.  
10.2. Phân trang theo yêu cu  
Các khái nim cơ bn  
Khi mt tiến trình được đưa vào thc hin, thay vì np toàn bcác  
trang ca tiến trình, chnhng trang thc scn thiết mi được np vào.  
Phương pháp này sgim thi gian và không gian nhớ để np nhng  
trang không được thc hin ln nào.  
Cn shtrca phn cng, sdng bnhthcp để hoán  
chuyn các trang.  
Sdng bng trang để qun lý các trang.  
114  
Phm Ngc Hưng  
Tải về để xem bản đầy đủ
pdf 34 trang Thùy Anh 05/05/2022 4560
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành - Chương 3: Quản lý lưu trữ - Phạm Ngọc Hưng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_he_dieu_hanh_chuong_3_quan_ly_luu_tru_pham_ngoc_h.pdf