Tải bản đầy đủ (.pdf) (55 trang)

Giáo trình Kiến trúc hệ điều hành: Phần 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.38 MB, 55 trang )

Phần III

Chương 7: Bộnhớvậ
t lý
7.1 Mởđầu
Việ
c tổchức và điều khiển bộnhớvậ
t lý là một trong những yế
u tốquan trọng
nhấ
t xác đị
nh cách xây dựng HĐH. Đểthực hiện các chương trình hay truy nhậ
p
dữliệu, chúng cần được nạ
p vào bộnhớvậ
t lý. Bộnhớngoài (bộnhớthứcấ
p như
ổđĩ
a cứng) thường có dung lượng rấ
t lớn và giá rẻdùng đểchứa chương trình và
dữliệ
u.

7.2 Tổchức bộnhớ
Trước kia bộnhớvậ
t lý là tài nguyên đắ
t nhấ
t. Do đó nó cần được tổchức tốtđểcó
thểsửdụng với hiệu quảcao nhấ
t. Tổchức bộnhớlà cách mà chúng ta hình dung
và sửdụng bộnhớvậ


t lý. Ví dụnhưchúng ta sẽnạp vào bộnhớmột chương trình
hay nhiề
u chương trình cùng một lúc? Nế
u nhưtrong bộnhớcó một sốchương
trình thì mỗi chương trình sẽđược cấ
p vùng nhớbằ
ng nhau hay chia bộnhớthành
các phầ
n (section, part) với kích thước khác nhau. Chúng ta có cầ
n đòi hỏi các
chương trình ứng dụng được thiế
t kếđểnạ
p vào phầ
n bộnhớcốđị
nh hay cho phép
nạ
p vào bấ
t cứvùng nào phù hợp. Chúng ta có cầ
n mỗi chương trình nằ
m trong
một vùng nhớliên tục hay có thểchia chương trình thành các khối nằ
m trong các
vùng nhớbấtkỳ.

7.3 Điều khi ển bộnh ớ.
Không phụthuộc vào cách tổchức bộnhớ, chúng ta cầ
n giải quyế
t cầ
n dùng các
tiêu chuẩn nào đểđạ

t được các thông sốtối ưu. Các phương pháp điề
u khiển bộ
nhớxác đị
nh cách làm việc của bộnhớvới tổchức cụthểnào đó trong các cách
giải quyế
t khác nhau các vấn đề: chúng ta nạ
p chương trình vào chỗnào, nêu như
không còn đủbộnhớtrống thì chương trình nào đang nằ
m trong bộnhớsẽphải
đưa ra...

7.4 Phân lớp bộnh ớ
Vào những năm 50/60 bộnhớvậ
t lý rấ
t đắ
t. Do đó việc chọn lựa kích thước bộnhớ
vậ
t lý cầ
n phải tính toán trước. Khách hàng không muốn mua lớn hơn anh ta có
thể, mặt khác anh ta phả
i mua một sốít nhất nào đó đểđảm bảo hoạ
t động của


HH v slng
nh trc cỏc user. V
n l xỏc
nh dung lng bnhti
thi
u thomón bi toỏn v ng thi n

m trong khnng ti chớnh cho phộp.
cú thch
y chng trỡnh hay truy nhp dliu, chỳng c
n ph
i c np vo
bnhv
t lý. Cỏc chng trỡnh v dli
u cha c
n cú thlu trong bnhngoi,
khi c
n thi
t s
c np vo bnhvt lý. Bnhngoi (
a cng,...) thng r
hn v cú dng lng ln hn nhng thi gian truy c
p bnhv
t lý l
i nhanh
hn nhi
u. Vớ dvtc truy c
p, bnhvtlý: 60ns, HDD: 9ms.
Hthng vi cỏc lp bnhcú
c tỡnh t
n su
t trao i chng trỡnh, dli
u
gia cỏc lp khỏc nhau tng i ln. Strao i ú cng lm hao ht ti nguyờn
hthng vớ dthi gian BXL,...
Vo nhng n
m 60 xut hi

n thờm mt lp (ngoi bnhv
t lý v bnhngoi)
na, ú l cache memory, cho phộp lm tng tc v hi
u qusdng bnh.
Cache memory cú tc truy cp nhanh hn nhiu (15ns) so vi bnhv
t lý.
Nhng nú cng
t hn nhi
u, do ú trong hthng thụng thng dung lng
cache khụng ln.
Cache memory lm tng thờm mt lp trao i nhng chi phớ ú c bự l
i bi
tc truy cp. V do ú tc ca chthng c nõng lờn nhi
u.
Hỡnh v
Cache Memory





Thời gian truy
cập giảm
Tốc độ truy
cập tăng
Giá thành
tăng
Dung l-ợng
giảm


BXL có thể truy
cập trực tiếp mã
lệnh, dữ liệu
Physical Memory

Secondary Memory

BXL không truy
cập trực tiếp, cần
nạp vào Physical
Memory

7.5 Cỏc chi n lc iu khi n bnh

m b
o sdng ttcỏc ti nguyờn giỏ tr
, chỳng cn c iu khi
n mtcỏch
cú hi
u qu. Cỏc chin lc i
u khi
n bnhtheo hng m b
o sdng tt
nh
t bnhv
t lý, v chia theo cỏc hng sau:
1/ Chi
n lc la chn
a- chi
n lc la chn theo yờu c

u (demand fetch)
b- chi
n lc la chn trc
2/ Chi
n lc phõn b


3/ Chiế
n lược loạ
i ra
Mục đích của chiến lược lựa chọn là xác đị
nh xem khi nào phả
i nạ
p block chương
trình hay dữliệu vào bộnhớvậ
t lý. Trong nhiều nă
m người ta cho rằ
ng cách tốt
nhấ
t là lựa chọn theo yêu cầ
u: theo đó block chương trình hay dữliệu được nạ
p
vào bộnhớkhi chương trình đang hoạ
t động đòi hỏi đế
n. Bởi vì rằ
ng nói chung
khó mà nói trước được điều khiể
n sẽđược chuyể
n đế


âu (đị
a chỉlệ
nh tiếp theo)
và chi phí thêm gắ
n với việc dựđoán trước sẽtă
ng đáng kểthời gian chờ. Còn
ngày nay, nhiề
u nhà thiếtkếtin rằ
ng lựa chọn dựđoán trước hoàn toàn có thểđảm
bả
o tă
ng tốc độcủa hệthống.
Các chiế
n lược phân bốcó mục đích xác đị
nh xem chương trình mới sẽđược nạ
p
vào vịtrí nào của bộnhớ. Chúng ta sẽxem xét mộtsốchiế
n lược như'first suitalbe'
(chọn block đầu tiên phù hợp), 'most suitable' (chọn block phù hợp nhất) và 'least
suitable' (block ít phù hợp nhấ
t), theo kích thước các vùng trống.
Các chiến lược loạ
i bỏxác đị
nh xem block chương trình hoặc dữliệu nào sẽbịloại
ra khỏi bộnhớđểgiả
i phóng chỗcho việc nạ
p chương trình hay dữliệ
u.

7.6 Phân bốbộnhớli ên tục và khôn g l iên tục

Trong các máy tính đầ
u tiên bộnhớđược phân bốliên tục- tức là mỗichương trình
phả
i nằ
m trong một vùng nhớ.Chỉsau khi xuấthiện khái niệ
m đa chương trình với
phân đoạn thay đổi (variable partition multi programming) thì việ
c phân bốbộnhớ
không liên tục mới chứng tỏsựhiệu quảcủa mình.
Trong phân bốbộnhớkhông liên tục, chương trình được chia làm nhiề
u phân đoạ
n
(block hay segment), và chúng có thểnằm tạ
i các vùng nhớkhác nhau, không nhất
thiế
t phả
i liền nhau. Vềphía HĐH, việc đảm bảo phân bốbộnhớkhông liên tục là
rấ
t phức tạ
p, nhưng nó đem lạinhiề
u ưu thế
: nếu bộnhớcó nhiều vùng nhớtrống
thay vì một vùng lớn thì HĐH vẫ
n có thểnạp và thực hiện chương trình mà trong
trường hợp ngược lạ
i sẽphả
i chờ.

7.7 Ph ân bốbộnh ớl iên tục đối với một u ser
Trong các máy đầu tiên tạ

i mỗi thời điể
m chỉcó một user (một chương trình ứng
dụng) và tấ
t cảtài nguyên đề
u thuộc quyề
n của anh ta. Và tiền sửdụng máy được
tính theo nguyên tắ
c đơn giả
n- bởi vì user toàn quyề
n sửdụng các tài nguyên do đó
anh ta phả
i trảcho tấtcả
, không phụthuộc việc chương trình của anh ta có sửdụng
hế
t các tài nguyên hay không. Do đó cơchếtính tiền thực hiệ
n theo thời gian máy
đã sửdụng. Trong các hệlàm việ
c trong chếđộphân chia thời gian thì việ
c tính
toán sửdụng các thuậ
t toán phức tạ
p hơn nhiề
u.


Đầ
u tiên mỗi user đều phải tựmình viế
t toàn bộchương trình kểcảcác hàm thực
hiện vào/ra bằ
ng ngôn ngữmáy. Sau đó thì phầ

n lệ
nh thực hiệ
n các thao tác vào/ra
cơbả
n được đưa vào IOCS- hệthống điều khiển vào/ra, và người dùng không phải
viết lạ
i các hàm vào/ra mà chỉphải gọi các hàm tương ứng của hệthống. Điề
u đó
làm đơn giả
n và tă
ng hiệu quảlập trình và có thểcho rằ
ng đó là bắt đầ
u sựphát
triể
n khái niệ
m vềOS hiệ
n đạ
i. Tổchức bộnhớtrong trường hợp phân bốliên tục
đốivới một người dùng được biểu diễ
n bằng h.7.2
Hình 7.2
OS

Ch-¬ng tr×nh øng
dông

Vïng nhí
trèng

Thông thường thì kích thước chương trình phụthuộc dung lượng bộnhớ(hay

không gian quả
n lý bởi HĐH), nếu kích thước chương trình nhỏhơn kích thước bộ
nhớthì không có vấn đềnảy sinh, còn khi kích thước chương trình vượt quá thì
sao? Nhờcơchếoverlay cho phép chúng ta có thểviế
t các chương trình lớn hơn
giới hạ
n trên. Khái niệm của nó được thểhiệ
n trong hình 7.3. Nếu nhưmodule nào
đó của chương trình không hoạ
t động trong cảquá trình thực hiện chương trình thì
nó hoàn toàn có thểđược lưu trong bộnhớngoài, khi cầ
n thiế
t mới được nạ
p vào
bộnhớvật lý và sau khi kế
t thúc nó lại được ghi ra bộnhớngoài, giải phóng bộ
nhớvậtlý cho module tiếp theo.
Chếđộoverlay cho phép lập trình viên thiế
t kếcác chương trình lớn vượt qua hạ
n
chếbộnhớ.Nhưng việc thiế
t kếoverlay module đòi hỏinhiề
u công sức và trí tuệ
.
Các chương trình với cấu trúc overlay phức tạp rất khó thay đổi. Ngày nay chúng
ta không còn phả
i dùng chếđộoverlay đểvượt qua giới hạn vềbộnhớdo đã có
các hệthống vớibộnhớả
o - virtual memory


Hình 7.3 Cấ
u trúc overlay


a

0
OS
a

b

Phần ch-ơng
trình, dữ liệu cần
có trong suốt quá
trình

Module
điều khiển

b
Module
Overlay 1

Module
Overlay 2

Module
Overlay 3


Vùng Overlay

Bo vbnhtrong hthng n nhi
m
Trong hthng n nhi
m, user
c cp vựng nhliờn tc v núi chung l cú
quy
n iu khi
n, truy nhp ton bbnhv
t lý. Trong trng hp ny bnh
thng chia lm 3 vựng: vựng cho HH, vựng cho chng trỡnh ng dng v vựng
trng. V
n b
o vbnhtrong trng hp ny cng tng i n gi
n. B
o
vbnhtrong trng hp ny l b
o vHH chng trỡnh ng dng khụng
lm hng nú.
N
u nhchng trỡnh ho
t ng khụng ỳng, iu ú cú thdn ti phỏ vHH,
n
u nhHH bhng
n mc chng trỡnh khỏc ng dng khụng thti
p tc
ho
t ng thỡ ngi dựng ớt nht cng nh
n th

y, sa li v ch
y li chng trỡnh.
Trong trng hp ny thỡ scn thitb
o vHH khụng ph
i l rừ rng.
N
u trong trng hp khỏc, chng trỡnh ng dng phỏ hng HH mt cỏch 'tinh
vi'. Vớ dnhnú 'vụ tỡnh' lm thay i mt hm vo/ra ca hthng. Khi ú
chng trỡnh cú thv
n ho
t ng nhng tt ck
t qucú thbm
t. Cũn cú th
x
y ra trng hp ti thn l hthng a ra kt qusai m vic phỏt hi
n ra
khụng ddng.
Do ú rừ rng cn phibo vHH. Vi
c b
o vcú ththc hi
n b
ng thanh ghi
biờn n
m trong BXL (h.7.4)
Hỡnh 7.4


S
XL


Ch
-¬ng tr×nh

hanh ghi
iªn

nhí trèng

T

Vïng

Thanh ghi biên chứa đị
a chỉthấ
p nhấ
t của lệ
nh. Nế
u nhưuser cốgắ
ng truy nhậ
p
vào vùng của HĐH thì lệ
nh đó bịcấ
m và sẽđưa ra thông báo lỗi.
Tấtnhiên, user cũng cầ
n truy nhậ
p đến HĐH, ví dụnhưthực hiệ
n các thao tác vào/
ra. Đểphục vụđiề
u này user có thểdùng các lệ
nh đặc biệt, với chúng anh ta có thẻ

yêu cầ
u dị
ch vụnào đó của HĐH (ví dụnhưngắ
t SVC) Trong trường hợp này OS
thực hiệ
n dị
ch vụđược yêu cầu và sau đó trảlại điề
u khiển cho chương trình ứng
dụng.
Với việ
c OS ngày càng phức tạp, cần phảicó các cơchếtốt hơn đểbảo vệOS đối
với user cũng nhưgiữa các user vớinhau.

7.8 Đa chươn g
multi programmin g)

trì nh

với

các

đoạn

nh
cố đị

(fi xed

partitio n


Đốivới các hệthống đơn nhiệ
m và ngay cảhệthống xửlý gói (packeg processing)
thì vẫ
n bịlãng phí một phần đáng kểtài nguyên. Trên h.7.5 ta thấ
y rằng chương
trình chỉthực sựsửdụng BXL khi mà nó không thực hiệ
n thao tác vào/ra. Sau khi
bắ
t đầu thao tác vào/ra chương trình không thểtiế
p tục cho đế
n khi kết thúc thao
tác. Tốc độthực hiệ
n thao tác vào/ra thường chậ
m hơn nhiều so với tốc độcủa
BXL. Nhưvậy BXL bịbỏphí trong suốt thời gian chờthực hiện tác vụvào/ra, và
phầ
n này chiếm đáng kểthời gian chung.
Hình 7.5 Sửdụng BXL trong hệthống đơn nhiệ
m
Sö dông BXL cña øng
dông tÝnh to¸n nhiÒu
BXL thùc sù ho¹t ®éng
Sö dông BXL cña øng
dông thùc hiÖn nhiÒu
thao t¸c I/O

chê kÕt thóc thao t¸c I/O



Cỏc nh thit kthy r
ng hon ton cú tht
ng hi
u qusdng BXL. Hó
thc hi
n cỏc hthng a nhi
m, trong ú cỏc user cựng 'cnh tranh' cú c ti
nguyờn. Chng trỡnh ang chk
t thỳc thao tỏc vo/ra sph
i nhng BXL cho
chng trỡnh ó sn sng ho
t ng (ttnhiờn nu cú chng trỡnh nhth
). Do ú

m b
o khnng cựng thc hin thao tỏc vo/ra v BXL- nõng cao hi
u qus
dng BXL v chthng.
Cỏc u thca multiprogramming chcú thtn dng h
t khi trong bnhcú
nhiu chng trỡnh. Nhú khi mt chng trỡnh thc hi
n thao tỏc vo/ra thỡ
BXL cú thchuy
n sang phc vchng trỡnh khỏc v thc hi
n tớnh toỏn vi thi
gian trnhnh
t. Khi chng trỡnh thhai gii phúng BXL thớ
n chng trỡnh
thba khỏc l
i cú thsn sng sdng nú.

Multiprogramming ũi hi dung lng bnhln hn so vi trng hp n
nhim nhng chi phớ ú c bự l
i bi vi
c sdng hi
u qucỏc ti nguyờn khỏc
(BXL, thi
t bvo/ra)
7.8.1 Fixed partition multiprogramming (a nhi
m vi phõn on c
nh)
d
ch v np theo chng trỡnh theo
a chtuy
t i
Trong cỏc ha nhi
m
u tiờn, bnhc chia thnh cỏc phn (phõn o
n) vi
kớch thc c
nh. Trong mi o
n chcú thn
p mt chng trỡnh. Cũn BXL
nhanh chúng chuy
n tchng trỡnh ny sang chng trỡnh khỏc, do ú to ra hi
u
qul ttcchng trỡnh dng nhc thc hin ng thi.
Vi
c biờn d
ch chng trỡnh c thc hin bi assembler v compiler vi
a ch

tuyti bgii h
n bi vi
c chng trỡnh chcú thch
y trong mtphõn o
n c
th(h.7.6)
Hỡnh 7.6
hàng đợi các ứng dụng chỉ chạy trong phân đoạn 1

....
hàng đợi các ứng dụng chỉ chạy trong phân đoạn 2

OS

Phân đoạn 1

....
Phân đoạn 2
hàng đợi các ứng dụng chỉ chạy trong phân đoạn 3

....

Phân đoạn 3

N
u nhchng trỡnh ó s
n sng nhng phõn o
n ca nú ó cú chng trỡnh
khỏc thỡ nú ph
i i dự r

ng cỏc phõn o
n khỏc cú thtrng (h.7.7). i
u ny d
n
ti slóng phớ bnhnhng vic thi
t kOS litng in gi
n.
Trờn hỡnh 7.7 thhi
n tỡnh hung x
u nh
t ca phng phỏp phõn bbnhliờn
tc vi phõn on c
nh v chng trỡnh c d
ch v np vo
a chtuyt i
(phõn on c
nh). Chai phõn o
n mt v hai
u bphớ cũn hng chca


phõn o
n ba quỏ nhi
u trong khi chỳng ó cú thc n
p vo phõn o
n mt v
hai.
Hỡnh 7.7
hàng đợi các ứng dụng chỉ chạy trong phân đoạn 1


OS

....

Phân đoạn 1
(trống)

hàng đợi các ứng dụng chỉ chạy trong phân đoạn 2

....

Phân đoạn 2
(trống)

hàng đợi các ứng dụng chỉ chạy trong phân đoạn 3

....

task
D

task
C

task
B

task
A


Phân đoạn 3
(bận)

7.8.2 a nhi
m vi phõn on c
nh: d
ch v np chng trỡnh cỏc module
tdo.
Cỏc chng trỡnh d
ch, assembler v loader tdo c sdng d
ch v np cỏc
chng trỡnh cú ththc hi
n t
i b
t cphõn on trng no ln (hỡnh 7.8).
Phng phỏp ny khc phc c mt snhc im vsdng bnhtrong
trng hp trc (a nhi
m vi phõn o
n c
nh, d
ch v n
p chng trỡnh theo

a chtuy
t i). Nhng
t c iu ú, vi
c thitkliphc tp hn nhiu.
Hỡnh 7.8
OS
Phân đoạn 1


hàng đợi tất cả các ứng dụng

....

task
D

task
C

task
B

task
A
Phân đoạn 2

Phân đoạn 3
ứng dụng có thể đ-ợc nạp vào phân đoạn trống bất kỳ

7.8.3 Bo vbnhtrong cỏc ha nhi
m
Trong cỏc hthng a nhi
m vi phõn bbnhliờn tc (contiguous memory
allocation), thng ngi ta sdng cỏc thanh ghi biờn b
o vbnh. Hai
thanh ghi chra c
n di v cn trờn ca phõn o
n, ho

c mt c
n v kớch thc
ca phõn o
n; chng trỡnh cú yờu c
u truy nh
p n cỏc d
ch vca OS phi
dựng ng
t SVC yờu c
u.
Hỡnh 7.9


0
OS
a
BXL
Ph©n ®o¹n 1
b
Ph©n ®o¹n 2

2

sè hiÖu curent process
b

cËn d-íi

c


cËn trªn

c
Ph©n ®o¹n 3
d

B¶o vÖ bé nhí trong hÖ ®a nhiÖm
ph©n ®o¹n cè ®Þnh

7.8.4 Vấn đềchia nhỏbộnhớ(fragmentation) trong đa chương trình với phân
đoạn cốđị
nh
Fragmentation xả
y ra trong bấ
t kỳhệthống nào không phụthuộc vào tổchức bộ
nhớ. Trong các hệđa nhiệ
m với các phân đoạn cốđị
nh, fragmentation xả
y ra do
các chương trình ứng dụng không chiế
m hế
t toàn bộphân đoạn của nó hoặc là do
các phân đoạn quá nhỏđểcó thểnạp các chương trình đang chờvào đó.

7.9 Đa nhi ệm với các p hân đoạn th ay đổi
Khi xem xét các vấ
n đềcủa đa nhiệm với phân đoạ
n cốđị
nh, các kỹsưthiếtkếOS
thấy rằ

ng tốt hơn là cho phép các chương trình chỉchiế
m bộnhớkích thước vừa đủ
kích thước nó cầ
n. Không chia bộnhớthành các đoạn cốđị
nh mà có kích thước
thay đổi theo chương trình ứng dụng. Phương pháp đó gọi là đa nhiệm với các
phân đoạn thay đổi. Sựphân bốbộnhớban đầ
u được thểhiện trong h.7.10
Chúng ta chỉxem xét phương pháp phân chia bộnhớliên tục tức là mỗi chương
trình nạp vào vùng nhớliên tục. Trong phương pháp đa nhiệ
m với các phân đoạ
n
thay đổi chúng ta không đềra bấ
t cứgiảsửgì vềchương trình (trừkhi kích thước
của chúng không vượt quá kích thước bộnhớ). Các chương trình khi được nạ
p
(thực hiện) sẽđược cấ
p vùng nhớchúng cầ
n. Mỗi phân đoạn có kích thước đúng
bằ
ng kích thước chương trình nằm trong đó.
Hình 7.10


App D: 14k
App C: 20k
App B: 10k
App A: 15k

OS


OS

OS

OS

App A: 15k

App A: 15k

App A: 15k

App A: 15k

App B: 10k

App B: 10k

App B: 10k

App C: 20k

App C: 20k

Free Memory

App D: 14k

Free Memory

Free Memory

Free Memory

Mỗi sơđồtổchức bộnhớđề
u có sựlãng phí nhất đị
nh. Trong trường hợp đa
nhiệm với các phân đoạn thay đổi, sựlãng phí này xuất hiệ
n khi các chương trình
kế
t thúc và trong bộnhớxuấ
t hiệ
n các vùng trống (hole) nhưh.7.11. Các vùng
trống này có thểsửdụng đểnạ
p các chương trình khác nhưng dù sao vẫn sẽcòn
các vùng trống vì không phả
i các chương trình đề
u có kích thước đúng bằ
ng vùng
trống. Nhưvậ
y đa nhiệ
m với các phân đoạ
n thay đổivẫn không tránh khỏi lãng phí
bộnhớ.
Hình 7.11
OS

App A kÕt thóc
& gi¶i phãng
bé nhí


OS

OS
App C kÕt
thóc
& gi¶i phãng
bé nhí

App A: 15k

Hole

Hole

App B: 10k

App B: 10k

App C: 20k

App C: 20k

Hole

App D: 14k

App D: 14k

App D: 14k


Free Memory

Free Memory

Free Memory

App B: 10k

7.9.1 Hợp nhất các vùng trống liề
n nhau
Đểkhắ
c phục tình trạ
ng bộnhớbịchia nhỏchúng ta có thểdồn các vùng nhớ
trống kểnhau.
Trong đa nhiệm với các phân đoạ
n thay đổi, khi một chương trình kế
t thúc chúng
ta có thểkiểm tra xem vùng được giải phóng có nằ
m liề
n kềvới vùng trống khác
không? Nế
u tồn tạ
i thì chúng ta có thểhoặ
c đưa thêm vào danh sách các phân đoạ
n


trống thêm một bả
n ghi nữa hoặ

c nối liề
n với vùng trống liền kềthành một vùng
trống. Quá trình hợp nhấ
t (nối liền) các vùng trống kềnhau biểu diễ
n trên hình
7.12. Nhờsựhợp nhấ
t này mà chúng ta tạo được các vùng nhớliên tục với kích
thước lớn nhấ
t có thể.
Hình 7.12
OS

OS

App B: 10k

App B: 10k

Free

H§H hîp c¸c
vïng trèng
liÒn nhau

Free

Free
App D: 14k

App D: 14k


Free Memory

Free Memory

7.9.2 Dồn bộnhớ
Nhưchúng ta thấy sau khi thực hiệ
n hợp nhấ
t các vùng trống (holes) liề
n kềnhau
thì nhìn tổng thểthì trong bộnhớvẫn tồn tạicác vùng trống - cho dù ít hơn và kích
thước lớn hơn. Đôi khi chương trình cầ
n thực hiện tiế
p theo lại khó lớn đế
n mức
không có vùng trống nào đủlớn đểnạp cho dù tổng cộng kích thước các vùng
trống vẫn lớn hơn cầ
n thiế
t.
Vấ
n đềnày được khắ
c phục nhờphương pháp gọi là dồn bộnhớ(h.7.13) và bả
n
chất là chuyể
n (dồn) tấ
t cảcác phân đoạn đang có chương trình vềmột phía bộ
nhớ. Nhờđó thay vì có nhiều phân đoạn trống (vùng trống) vụn vặt chúng ta có
được một vùng trống lớn duy nhấ
t trong bộnhớ. Khi đó chương trình tiế
p theo có

xác suấ
t lớn sẽcó đủbộnhớcần thiế
t đểchạy. Đôi khi phương pháp 'dồn bộnhớ'
còn gọi là 'dọn rác'.
Tuy có nhiều ích lợi nhưng phương pháp dồn bộnhớvẫ
n có những nhược điểm
nhấ
t đị
nh:
1. Nó cũng làm hao phí tài nguyên hệthống có thểđược sửdụng vào mục đích
khác tốt hơn.
2. Vào thời gian dồn bộnhớ, hệthống phải dừng tấ
t cảcác công việc khác. Kết
quảdần tới thời gian không thểdựđoán trước trong việc phả
n ứng lại các sự
kiện (trảlời user trong chếđộdialog chẳ
ng hạn) và điều đó có thểkhông chấ
p
nhậ
n được trong các hệthống thờigian thực.
3. Dồn bộnhớdị
ch chuyể
n các task trong bộnhớ. Điều đó có nghĩ
a là thông tin
vềsựphân bốchương trình phả
i được lưu lạ
i ởdạ
ng nào đó.



4. Trong TH cỏc bi toỏn thc hi
n liờn tc thỡ t
n sthc hi
n thao tỏc dn b
nhcú thtrnờn thng xuyờn v hao phớ thc hin nú cú thvt quỏ li
ớch nú mang l
i.
Hỡnh 7.13
OS

OS

Free

App B: 10k

App B: 10k

HĐH dồn các
vùng trống

App D: 14k

Free
App D: 14k

Free

Free Memory


7.9.3 Cỏc chin lc phõn bthụng tin trong bnh.
Cỏc chi
n lc phõn bbnhc ỏp dng xỏc
nh chng trỡnh v dli
u
sc ti
p tc np vo vựng no ca bnh. Chỳng ta thng g
p 3 chin lc
c biu di
n trờn h.14
1. Chin lc 'first suitable': chng trỡnh sc n
p vo vựng trng g
p u tiờn
(trong danh sỏch cỏc vựng trng) cú kớch thc ln. Chi
n lc ny cú vtrc
giỏc v thc tvỡ nú cho phộp tỡm li giinhanh nht.
2. Chi
n lc 'most suitable': Chng trỡnh c np vo vựng trng 'va nh
t' do
ú khụng gian lóng phớ l ớt nht. Vi nhiu ngi thỡ chi
n lc ny trc giỏc cú
vl ỳng nh
t.
3. Chi
n lc 'least suitable': u tiờn thỡ chin lc ny cú vllựng, nhng xem
xột kthỡ nú cng cú cỏc u i
m nht
nh. Vi chi
n lc ny chng trỡnh n
p

vo vựng trng ln nh
t. u i
m l sau khi ó n
p chng trỡnh, vn cũn
khụng gian trng tng iln cú thnp thờm chng trỡnh mi khỏ ln.
Hỡnh 7.14

Địa chỉ đầu

Kích th-ớc

a

16 k

c

14 k

e

5k

g

30 k

OS

a


Danh sách các vùng trống

Free 16k
b

c
Yêu cầu 13k

Free 14k
d

e
f

( Sắp theo địa chỉ hoặc
thứ tự bất kỳ )

14(a): Chiến l-ợc FS

App A

App B
Free 5k

App C

g
Free 30k



Địa chỉ đầu

Kích th-ớc

e

5k

c

14 k

a

16 k

g

30 k

OS

a

Danh sách các vùng trống

Free 16k
b


c
Yêu cầu 13k

Free 14k
d

e
f

( Sắp theo thứ tự kích
th-ớc tăng dần )

App A

App B
Free 5k

App C

g
Free 30k

14(b): Chiến l-ợc MS

Địa chỉ đầu

Kích th-ớc

g


30 k

a

16 k

c

14 k

e

05 k

OS

a

Danh sách các vùng trống

Free 16k
b

c
Yêu cầu 13k

Free 14k
d

e

f

( Sắp theo thứ tự kích
th-ớc giảm dần )

App A

App B
Free 5k

App C

g
Free 30k

14(c): Chiến l-ợc LS

7.10 a n him vi sw ap pin g
Trong cỏc ha nhi
m ó xem xột trờn thỡ chỳng ta
u gisrng chng trỡnh
ng dng luụn n
m trong bnh
n khi nú k
t thỳc. Cũn cú cchkhỏc gi l
swapping m khụng c
n i
u kin ú.
Trong mt shthng dựng swapping (h.7.15) thỡ mi thi im trờn cbnh
chcú mt chng trỡnh ng dng. Chng trỡnh ú thc hi

n
n khi cú thsau
ú nú gi
i phúng cBXL v bnhcho chng trỡnh tip theo. Nhth
, ton
bbnhc ginh cho mtchng trỡnh trong kho
ng thi gian ng
n, v sb
a ra khi bnh, chng trỡnh tip theo c np vo bnh. Bỡnh thng thỡ
mt chng trỡnh trong quỏ trỡnh ch
y tu
n lỳc k
t thỳc sbswap nhiu l
n.
Trong cỏc hthng phõn chia thi gian cú sdng swapping, khi schng trỡnh
khỏ ớt thỡ hthng cú thm bo thi gian trli ch
p nhn c, cũn khi s
chng trỡnh nhi
u thỡ cỏc nh thi
t khiu rng cn cú cỏc phng phỏp v cụng
chi
u quhn. Trờn cshthng viswapping
u nhng n
m 60, ngi ta ó
xõy dng nhiu hthng vi stchc bnhtheo trang (page) v ngy nay tr
nờn thụng dng.
Cng ó cú xõy dng cỏc hthng phc t
p hn vi swapping, trong ú cho phộp
phõn btrong bnhnhiu chng trỡnh. Trong cỏc hthng ú, chng trỡnh b
a ra khibnhchkhi vựng bnhca nú c

n thi
t np chng trỡnh khỏc.


Trong TH dung lượng bộnhớkhá lớn thì các hệthống đó hoạt động tốt hơn đáng
kểdo giả
m được thờigian thực hiệ
n swapping.
Hình 7.15
a

A

a

B

a

C

0
a

OS

e
f

Vïng

Swapping

d

¶nh bé nhí, ®-îc l-u trªn bé nhí ngoµi
b

Hệthống đa nhiệ
m với swapping, tạ
i mỗi thời điể
m chỉcó một chương trình trong
bộnhớ. Chương trình đó tiếp tục đến khi có mộttrong các sựkiệ
n sau xảy ra:
1. Xuấ
t hiệ
n tín hiệ
u timer
2. Nó kế
t thúc
Vùng swapping của chương trình đó sẽđược copy vào bộnhớngoài, còn ả
nh bộ
nhớcủa chương trình tiế
p theo sẽđược nạ
p vào vùng swapping. Chương trình thứ
hai tiếp tục được thực hiệ
n, quá trình cứthếtiếp tục.

Chương 8: Tổchức bộnhớảo
8.1 Mởđầu
Thuật ngữvirtual memory thường gắn liền với khảnă

ng đánh đị
a chỉcho không
gian nhớlớn hơn nhiề
u dung lượng bộnhớvậ
t lý. Virtual memory xuấ
t hiệ
n (ứng
dụng) lần đầ
u vào năm 1960 tạ
i trường đạihọc Manchester và sau đó nhanh chóng
được phổbiến.
Có hai phương pháp được chấ
p nhận một cách tựnhiên khi thực hiệ
n (tổchức) bộ
nhớảo: đó là tổchức theo trang (page) và theo phân đoạn (segment). Trong mộtsố
hệthống, ứng dụng một trong hai phương pháp đó còn trong một sốkhác thì áp
dụng tổhợp cảhai phương pháp.
Tấtcảcác cơchếbộnhớảo đề
u đặ
c trưng bởi tính chấ
t rằ
ng đị
a chỉđược tính bởi
chương trình, không nhấtthiế
t phả
i trùng với đị
a chỉbộnhớ(vậ
t lý). Trong thực tế
đị
a chỉảo thểhiệ

n không gian lớn hơn nhiề
u so với thực tếbộnhớvậ
t lý.
8.2 Qu á trì nh phát triển các dạng tổch ức b ộn hớ
H.8.1 biể
u diễ
n quá trình phát triể
n từcác hệthống bộnhớthực đơn nhiệm (1 user)
đế
n các hệthống bộnhớảo sửdụng tổhợp cảhai phương pháp page và segment.


Vỡ tchc bnh
o phc tp hn nhiu nờn cú hai chng: C8: tchc bnh
o
v C9: i
u khi
n bnho
Hỡnh 8.1
Bộ nhớ vật lý
Hệ thống đơn
nhiệm

Bộ nhớ ảo

Hệ đa nhiệm, bộ nhớ vật lý
Phân đoạn cố định
Địa chỉ
tuyệt đối


Phân đoạn thay đổi

Hệ đa nhiệm, bộ nhớ ảo
Tổ chức theo
trang

Tổ chức theo
segment

Tổ chức kết
hợp

Địa chỉ
thay đổi

8.3 Bnho: cỏc khỏi ni
m cbn
Ctlừi cỏc khỏi ni
m vbnh
o l ch
a chm process cú thtruy nhp gi
l khụng gian
a ch
o V ca process ú, cũn vựng
a chthc tn ti trong b
nhgi l khụng gian
a chthc R.
Dự r
ng process lm vi
c vi

a ch
o thỡ thtschỳng ph
i lm vi
c vibnh.
Do ú vo thi gian thc hi
n process, cỏc
a ch
o cn ph
i bin i thnh
a
chthc, ngoi ra vic xlý phi nhanh chúng vỡ nu khụng thỡ hiu quca mỏy
tớnh cú thgim ti mc khụng ch
p nh
n c v li ớch ca tchc bnh
o
khụng thng dng c.
Hỡnh v
: ỏnh xcỏc ụ nhtbnhv
t lý sang bnh
o

Bộ nhớ ảo

Bộ nhớ vật lý

xỏc
nh ỏnh xgia
a chthc v o, ngi ta ó thi
t kcỏc phng phỏp
khỏc nhau. Cchbi

n i
a chng (DAT-dynamic address translation) m
b
o sbin i
a ch
o sang
a ch
o vo thi gian thc hi
n process. T
t c
cỏc hthng ú
u cú tớnh ch
t chung: ú l cỏc
a cho lin nhau cha ch
c ó
tng ng vi cỏc
a chthc li
n nhau (h.8.3). Nhthuser khụng cn ph
i quan
tõm n vi
c n
p chng trỡnh hay dliu ca mỡnh trong bnh(v
t lý). Anh ta
cú c khnng vitchng trỡnh mtcỏch tnhiờn hn, chphiquan tõm
n
cỏc v
n thi
t kchng trỡnh, thu
t toỏn m khụng c
n ý n chi ti

t cth


ca thớờt b
. Khi ú mỏy tớnh (cú th) c coi nhl mtci gỡ ú tru tng hnmt cụng clogic no ú ch
y chng trỡnh chkhụng ph
i nhmt cỏi mỏy
v
t lý vi cỏc chi ti
t c
n ý, lm khú kh
n cho quỏ trỡnh thi
t kchng trỡnh.
Hỡnh 8.3

Bộ nhớ ảo

Cơ chế
ánh xạ
DAT

Bộ nhớ vật lý

8.4 Tchc bnhnh iu l p
N
u nhchỳng ta ra r
ng khụng gian
a ch
o ca user sln hn khụng gian


a chthc, v n
u chỳng ta
nh hng rng hthng slm vi
c tttrong ch
a nhi
m v ti nguyờn bnhc chia s(dựng chung), thỡ chỳng ta c
n cú mụi
trng, cụng clu trchng trỡnh, dliu trong bnhthc
p. Thng thỡ
ngi ta sdng mụ hỡnh bnhhai c
p (h.8.4). Lp thnh
t- bnhv
t lý, ti
ú c
n np cỏc chng trỡnh c thc hi
n v cỏc dliu c
n truy cp. Lp th
hai- bnhngoi cú dung lng ln lu trcỏc chng trỡnh, dli
u lỳc ú
cha cn n
p.
chy chng trỡnh, code v dliu ca nú c
n c a vo bnh
Hỡnh 8.4
Bộ nhớ vật lý

BXL

Bộ nhớ
ngoài


HDD
TAPE
...

Bi vỡ bnhthc hi
n c chia sgia nhiu chng trỡnh v mi chng trỡnh
(process) cú thcú khụng gian
a ch
o ln hn khụng gian
a chthc do ú
vo thigian thc hi
n, chcú mtph
n mó (code) v dliu ca miprocess nm
trong bnhthc. Trờn h.8.5 thhin c
u trỳc bnhhai lp, trong bnhthc
lu chmtph
n bnh
o ca cỏc chng trỡnh.


Hỡnh 8.5

Vùng làm bộ nhớ ảo

B

Bộ nhớ ảo
ứng dụng B


C

Bộ nhớ ảo
ứng dụng C

A

Bộ nhớ ảo
ứng dụng A

A

Bộ nhớ vật lý
ứng dụng A

B

Bộ nhớ vật lý
ứng dụng B

A
C

Bộ nhớ vật lý
Bộ nhớ ngoài

8.5 Blocking map pin g: ỏnh xtheo khi
Cchbi
n i
a chng (DAT) ph

i sdng cỏc b
ng ỏnh x- chr
ng cỏc ụ
nho no t
i thi im hin thi nm trong bnhv ụ nhthc no. N
u nh
ỏnh xc thc hi
n theo tng byte hay word thỡ rừ rng thụng tin vỏnh xcũn
ln hn b
n thõn bnhthc. Do ú cú thỏp dng bnho, c
n cú phng
phỏp cho phộp gim kớch thc ca b
ng ỏnh x.
Vỡ ỏnh xtng ụ nhl khụng thch
p nhn, chỳng ta ph
i gp theo cỏc khi block, v hthng theo dừi xem cỏc block ca bnho nm õu trong bnh.
Kớch thc block cng ln thỡ thụng tin vỏnh xcng nh, nhng cỏc block ln
licn nhiu thi gian n
p hn v ngoi ra vi xỏc sutln cũn h
n chsprocess
cú thchia schung bnhv
t lý.
Khi thi
t kcchbnho xu
t hin cõu hi l cỏc block cú kớch thc nh
nhau hay khỏc nhau. N
u cỏc block cú kớch thc nhnhau thỡ chỳng (block) c
gi l cỏc trang (page), cũn tchc bnh
o tng ng gil tchc theo trang.
N

u cỏc block cú thcú kớch thc khỏc nhau thỡ chỳng c gi l cỏc o
n
(segment), tchc bnh
o l tchc theo o
n. Trong mt shthng chai
cỏch c thp tc l cỏc segment c to thnh tcỏc page cú kớch thc nh
nhau.
Cỏc
a chtrong cỏc hthng ỏnh xtheo khi l cỏc
a chgm hai thnh ph
n
(hai chiu). truy nh
p n mt dli
u cth, program chra block v offset
ca dli
u trong block ca dli
u trong block ú (h.8.6)
b (Block No)

d (Offset )

Địa chỉ ảo v = (b,d)


a cho V c chra vi cp sv=(b,d) trong ú b- sblock (stht) cũn doffset (l
ch) tng i so vi
u block.


Sbi

n i t
a cho v=(b,d) thnh
a chthc r c thc hi
n nhtrờn hỡnh
8.7. Mi process cú b
ng ỏnh xblock ca mỡnh (n
m trong bnhthc).
a ch
thc a ca bng ny c n
p vo thanh ghi riờng ca BXL gi l thanh ghi
a ch
(
u) ca b
ng ỏnh x(block table origin register). Midũng ca b
ng ỏnh xcha
ỏnh xca mt block ca process, ngoi ra cỏc dũng c sp xp theo thts
block, tblock 0, block 1. Sblock b c cng vi
a chcsca b
ng ỏnh x
a, ta c
a chthc ca dũng cha ỏnh xca block b. Dũng ny cha
a ch
thc b' ca block b. Sau ú cng thờm vo
a chb' ny vi offset d ta c
a
chthc c
n tỡm r=b'+d. T
t ccỏc phng phỏp block mapping dựng trong cỏc h
thng tchc theo trang, segment hay thp c thhin trờn h.8.7
Hỡnh 8.7

Block table origin
Register
a
Địa chỉ ảo v = (b,d)

+

b

d

a+b
Bảng ánh xạ
b
l

b'

Độ dài

b'

Địa chỉ thực

+

r

Địa chỉ
block

trong bộ
nhớ vật


C
n ph
i ý r
ng block mapping c thc hi
n ng (dynamic) ngay trong thi
gian thc hin process. Nu cchbi
n i
a chDAT khụng hiu qu
, thỡ
chi phớ ca nú cú thlm gim hi
u su
t ca hthng ti mc vt quỏ u thm
bnho mang l
i.
8.6 Tchc theo trang: cỏc khỏi n im cbn
Chỳng ta xem xột ỏnh xtheo khi vi kớch thc c
nh tc l tchc bnh
theo trang. Trong ph
n ny chỳng ta chxem xột tchc theo trang thun tuý.

a cho trong hthng theo trang c thhi
n b
ng c
p v=(p,d) trong ú p- s
thttrang trong bnh
o cũn d-offset trong trang p (h.8.8)

Hỡnh 8.8
p (Page No)

d (Offset )

Địa chỉ ảo v = (p,d)

Process cú thc thc hi
n ti
p n
u trang hin thi cn
n ca nú n
m trong b
nhthc. Cỏc trang
c ghi tbnhngoi vo bnhthc, theo cỏc block gi


l page frame v cú kớch thc ỳng b
ng kớch thc trang. Cỏc page frame bt

u tcỏc
a ch(trong bnhthc) l bi sca kớch thc trang (h.8.9). Cỏc
trang cú thc n
p vo btkpage frame trng no.
Hỡnh 8.9
0
page frame 0

Số trang


p
page frame 1
2p
page frame 2

Kích th-ớc Vùng địa chỉ

0

p

0

p-1

1
2

p

p

2p-1

p

2p

3p-1


3p

Bin i
a chng trong hthng tchc theo trang, thc hin theo cỏch sau:
Process truy nh
p n
a ch
o v=(p,d). Cchỏnh xtrang thhin trờn h.8.10,

u tiờn tỡm strang p trong bng ỏnh xtrang v xỏc
nh c page frame p'
tng ng vitrang p.
a chthc c tớnh b
ng tng ca p' v d.
Hỡnh 8.10
Bộ nhớ vật lý
page frame 0

p'

page frame 1

Địa chỉ ảo
p

d

....

offset d


DAT
page frame p'

Page frame p' t-ơng ứng
với trang ảo p

Chỳng ta sxem xột quỏ trỡnh ny khn. Trong thc t
, thng thỡ khụng phitt
ccỏc page ca process
u n
m trong bnh, do ú bng ỏnh xphi chra l
trang c
n truy nh
p cú n
m trong bnhkhụng v n
m õu, cũn nu khụng thỡ
nú n
m õu trong bnhngoi. Trờn h.8.11 biu di
n mtdũng dli
u trong b
ng
ỏnh xtrang. Bit flag r chra shin di
n ca trang trong bnh: n
u r=1 tc l
trang n
m trong bnhthc, cũn n
u r=0 thỡ trang ú hi
n khụng cú trong bnh
thc. Nu nhtrang ú khụng cú trong bnhthỡ s l

a ch(vtrớ) ca trang
trong bnhngoi, cũn n
u nú n
m trong bnhthỡ p' l spage frame. Chỳ ý
r
ng p' khụng ph
i l
a chthc th
t s.
a chthc a - ca page frame p' c
tớnh b
ng a=(p)*(p') (strang p cú giỏ trt0.1.2.3...)
Hỡnh 8.11


Bit flag

§Þa chØ trong bé nhí
ngoµi (nÕu kh«ng cã
trong bé nhí)

r

s

Page frame (nÕu
trang cã trong bé
nhí)

p


Đểtiế
t kiệm bộnhớ(giả
m kích thước của bả
ng ánh xạ
) thì mỗi dòng có thểkhông
cần chứa thông tin đị
a chỉcủa trang trong bộnhớngoài.

8.6.1 Biến đổiđị
a chỉ
, ánh xạtrực tiế
p
Chúng ta sẽxem xét một sốphương pháp biế
n đổi đị
a chỉtrang. Đầ
u tiên chúng ta
sẽxem xét biế
n đổi(ánh xạ
) trực tiế
p, được biể
u diễn trên h.8.12
Hình 8.12

Process đưa yêu cầ
u truy cậ
p đị
a chỉả
o v=(p,d). Trước khi process tiếp tục thực
hiện, OS nạp đị

a chỉthực của bả
ng ánh xạtrang vào thanh ghi. Đị
a chỉcơsởb này
được cộng với sốtrang p, thu được đị
a chỉthực b+p của dòng chứa ánh xạtrang p.
Dòng này chỉra page frame p' của p. Sau đó page frame được cộng với offset d và
ta có đị
a chỉthực r. Cách tính này gọi là phương pháp biến đổi trực tiế
p (ánh xạ
trực tiếp), bởi vì bả
ng ánh xạtrang chứa từng dòng cho mỗi trang bộnhớảo của
process. Nế
u process có n trang bộnhớả
o thì bả
ng ánh xạtrong phương pháp ánh
xạtrực tiế
p chứa n dòng liên tiếp cho các trang từ0 đến n-1
Đị
a chỉả
o cần tính và đị
a chỉbảng ánh xạđề
u chứa trong các thanh ghi của BXL
do đó các thao tác với chúng có thểthực hiện rấ
t nhanh trong vòng xửlý lệ
nh.
Nhưng còn bảng ánh xạ
, kích thước khá lớn, thường nằ
m trong bộnhớ, do đó để
truy nhậ
p nó cầ

n một thao tác đọc bộnhớ. Vì thời gian đọc dữliệ
u từbộnhớlớn
hơn nhiề
u thời gian xửlý lệnh và chúng ta cần thêm một lầ
n đọc bộnhớđểlấ
y
được dòng cầ
n thiết của bảng anhý xạ
, điề
u đó có nghĩ
a là phương pháp ánh xạ
trực tiế
p có thểlàm giả
m tốc độcủa hệthống khi thực hiện chương trình gầ
n hai
lần. Điề
u đó tấ
t nhiên không chấp nhận được, do đó cầ
n có các phương pháp biế
n
đổi đị
a chỉnhanh hơn. Nhưng điề
u đó cũng không có nghĩ
a là phương pháp này
hoàn toàn không thểáp dụng, ví dụnhưtrong một sốhệthống đã sửdụng phương
pháp này thành công bằ
ng cách lưu toàn bộbả
ng ánh xạtrong cache memory có
tốc độrấ
t cao.

8.6.2 Biến đổiđị
a chỉtrang dùng bộnhớkế
t hợp associative memory


Một trong sốcác phương pháp cải thiệ
n tốc độcủa DAT là lưu toàn bộbảng ánh
xạtrang trong associative memory (bộnhớkế
t hợp)- với associative memory thời
gian truy nhậ
p (access cycle) nhỏhơn nhiều lần so với bộnhớthông thường. Trên
h.8.13 biể
u diễ
n quá trình thực hiệ
n biế
n đổi đị
a chỉđộng chỉdùng associative
memory. Chương trình truy nhậ
p đế
n đị
a chỉảo v=(p,d). Tất cảcác dòng (record)
của bả
ng (nằ
m trong associative memory) được so sánh đồng thời với p.
Associative memory trảlạ
i giá trịp' - đị
a chỉcủa page frame của p. Sau đó cộ
ng p'
với offset d ta có đị
a chỉthực r.

Hình 8.13

Chúng ta đểý rằ
ng các mũi tên đi đi tới associative memory tới tấ
t cảcác bả
n ghi
(dòng) của bả
ng. Điều đó có nghĩ
a là mỗi phần tửcủa associative memory được
phân tích đồng thờivới đị
a chỉp. Cũng vì tính chấ
t này mà bộnhớkế
t hợp rấ
t đắt.
ởđây chúng ta lạ
i gặ
p vấ
n đềkinh tế: đểcó thểứng dụng thành công bộnhớả
o
cần có cơchếbiến đổi đị
a chỉđộng (DAT) tốc độcao. Nhưng dù sao sửdụng
cache memory hay associative memory thì đề
u quá đắ
t. Chúng ta cần có một giải
pháp trung gian nào đó vẫ
n đả
m bả
o tốc độnhưng giá cảphảichăng.
8.6.3 Biến đổiđị
a chỉtrang sửdụng kế

t hợp associative với ánh xạtrực tiế
p.
Đế
n lúc này chúng ta luôn đị
nh hướng đến các công cụphầ
n cứng đểthực hiện bộ
nhớả
o. Nhưng chúng ta sẽxem xét các thiếtbịmột cách logic (trừu tượng) hơn là
vậ
t lý. Chúng ta quan tâm không phải là một thiế
t bịcụthể(vậ
t lý) mà là tổchức,
chức nă
ng và tốc độcủa chúng.
Vì giá của cache memory và associative mrmory quá đắ
t so với RAM do đó chúng
ta cầ
n giả
i pháp trung gian đểthực hiện ánh xạtrang. Trong giảipháp này chúng ta
sửdụng associative memory đểlưu giữmột phầ
n của bả
ng ánh xạ(h.8.14). Trong
bả
ng đó chỉchứa các ánh xạtrang được truy nhậ
p gầ
n nhấ
t (vềthời gian)- điều đó
xuấ
t phát từkế
t quảtương đối là trang đã được truy nhậ

p trong thời gian gần nhất
hoàn toàn có thể(với xác suấ
t lớn) lạ
i được truy nhậ
p tiế
p. Trong các hệthống hiệ
n
đạ
i sửdụng phương pháp kết hợp này, chỉsốtốc độđạ
t tới 90% hoặc hơn nữa so
với khi hoàn toàn chỉdùng associative memory.
Hình 8.14


Sựbiế
n đổiđị
a chỉđộng được thực hiệ
n theo cách sau: Chương trình cầ
n truy nhậ
p
theo đị
a chỉả
o v=(p,d). Cơchếbiế
n đổiđị
a chỉđầ
u tiên sẽthửtìm ánh xạcủa trang

o p trong phần bả
ng ánh xạnằ
m trong associative memory. Nế

u nhưánh xạtrang
p có ởđó thì bả
ng ánh xạtrong associative memory trảlạ
i kế
t quảsốpage frame p'
tương ứng với trang ảo p và giá trịp' này được cộng với offset d, ta có được đị
a chỉ
thực r tương ứng với đị
a chỉả
o v=(p,d).
Đểđả
m bả
o chỉsốtốc độcao, bảng ánh xạtrong asociative memory phải không
lớn quá. Thậ
t vậy, trong thực tế
, với các hệthống sửdụng chỉ8 hoặ
c 16 thanh ghi
asociative memory, có thểđạ
t được 90% hoặ
c hơn nữa tốc độkhi sửdụng hoàn
toàn associative memory (khi đó kích thước associative memory có thểlớn gấ
p
hàng chục đế
n 100 lầ
n). Có được kết quảđó là nhờtính chấ
t đặ
c biệ
t của các
process hoạt động, gọi là tính đị
a phương - locality, hiệ

n tượng này chúng ta sẽ
xem xét sau.
Sửdụng cơchếkế
t hợp đó là lời giảikỹthuậtdựa trên các thông sốkinh tếcủa các
thiế
t bịhiệ
n có.

8.6.4 Chia sẻ(dùng chung) chương trình và dữliệ
u trong hệthống tổchức trang
Trong các hệđa nhiệ
m, đặc biệ
t các hệphân chia thời gian, thường xả
y ra trường
hợp nhiề
u user cùng chạ
y các chương trình giống nhau. Nế
u mỗi user đều dùng
riêng một bản copy của chương trình thì một phần đáng kểbộnhớbịlãng phí. Rõ
ràng có mộtgiả
i pháp- đó là sửdụng chung (chia sẻ) các trang có thểchia sẻ
.
Sửdụng chung cầ
n phảixửlý , theo dõi cẩ
n thậ
n đểngă
n chặ
n tình huống khi một
process cốthay đổidữliệ
u mà cùng lúc đó process khác đang đọc. Trong nhiề

u hệ
thống tiên tiến, có sửdụng chung bộnhớ, thường các chương trình cấ
u tạ
o từhai
phầ
n riêng biệ
t- vùng chương trình (procedure) và vùng dữliệ
u (data). Các
procedure cốđị
nh (không thay đổi) hay còn gọi là reentrant procedure, có thểdùng
chung. Các dữliệ
u tĩ
nh (ví dụbả
ng thông tin cốđị
nh nào đó)- có thểdùng chung.
Các procedure động (thay đổi) cũng không thểdùng chung.


Tấtcảđiề
u đó nói lên rằ
ng mỗi trang bộnhớcần xác đị
nh xem có thểdùng chung
hoặ
c không. Sau khi các trang của mỗi process được chia ra hai loạ
i, trong hệ
thống tổchức theo trang thuầ
n tuý việ
c chia sẻbộnhớđược biể
u diễ
n trên h.8.15.

Việ
c chia sẻbộnhớlàm giả
m dung lượng bộnhớsửdụng và hệthống có thểphục
vụsốlượng user lớn hơn.
Hình 8.15

8.7 Tổchức theo đoạn (segmen t)
Trong chương trước nói vềbộnhớthực, chúng ta đã thấy rằng trong các hệthống
đa nhiệm với phân đoạn thay đổi, việc phân bốbộnhớthường thực hiện theo các
thuậttoán 'first suitable', 'most suitable' hay 'least suitable' theo tương quan vềkích
thước các vùng trống. Nhưng vẫ
n có hạn chếlà chương trình phải nạ
p vào một
vùng liên tục.
Trong các hệthống tổchức theo segment, sựhạn chếđó có thểvượt qua, và cho
phép chương trình (và dữliệu) có thểnằm trong nhiề
u khối nhớkhông liên tục
(h.8.16); Tuy rằ
ng bả
n thân các khối nhớlà mộtvùng nhớliên tục nhưng chúng có
thểcó kích thước khác nhau.
Hình 8.16

Trong giải pháp này xuấ
t hiệ
n một sốvấ
n đềthú vị
. Ví dụnhưvấn đềbảo vệ
chương trình, bộnhớ. Sửdụng cặ
p thanh ghi biên không còn tác dụng nữa. Vấ

n đề
tương tựnhưthếvới việ
c kiể
m soát việc truy nhập bộnhớcủa một chương trình


nào đó. Một trong những phương pháp thực hiệ
n bảo vệbộnhớtrong các hệthống
tổchức theo segment- đó là sửdụng khoá bảo vệ,nhưtrên h.8.17
Hình 8.17

Hình8.17: Bả
o vệbộnhớdùng khoá trong các hệđa nhiệm với phân bốbộnhớ
thành các block. Khi giá trịkhoá trong BXL được đặtbằ
ng hai- tương ứng với user
B, chương trình của user B chỉcó thểtruy nhậ
p đến các block bộnhớcó cùng khoá
(2) Việ
c điề
u khiể
n khoá bảo vệđược thực hiệ
n bởi OS.

Đị
a chỉảo trong các hệthống segment- là cặ
p sốv=(s,d) trong đó s- sốsegment
của bộnhớả
o, còn d- offset trong đoạn đó.
Hình 8.18: dạng đị
a chỉả

o

Process có thểtiế
p tục chỉtrong trườngh hợp segment hiện tạ
i nằm trong bộnhớ.
Segment được nạ
p từbộnhớngoài vào bộnhớvậtlý theo cảsegment, và segment
phả
i được nạ
p vào một vùng nhớliên tục. Segment có thểđược nạp vào bấ
t kỳ
vùng trống liên tục nào đủlớn. Các chiến lược phân bốsegment cũng giống như
trong các hệthống đa nhiệ
m với phân đoạ
n thay đổi, thường thì các thuậ
t toán '
first suitable' và 'most suitable' hay được áp dụng.
Quá trình biế
n đổiđị
a chỉđộng được thực hiệ
n nhưh.8.19. Process truy nhậ
p theo
đị
a chỉả
o v=(s,d). Cơchếánh xạsegment tìm và (nế
u có) thì xác đị
nh đị
a chỉđầ
u
segment s'. Sau đó đị

a chỉthực r được tính bằ
ng tổng s' và d. Các chi tiế
t của quá
trình biế
n đổi đị
a chỉchúng ta sẽxem xét sau.
Hình 8.19


8.7.1 Điề
u khiể
n truy nhập trong hệthống tổchức segment
Cho phép mỗiprocess truy nhậ
p không hạ
n chếđế
n segment bất kỳlà không thực
tế. một trong những ưu thếcủa hệthống tổchức theo segment là khảnă
ng kiểm
soát truy nhậ
p chặt chẽ
. Mỗi process được trao một sốquyề
n truy nhập xác đị
nh
đối với một sốsegment nào đó còn phầ
n lớn segment khác là hoàn toàn không
được truy nhập.
Trong bảng 8.20 có liệ
t kê những dạ
ng quyề
n truy nhập phổthông nhấ

t được áp
dụng trong các hệthống tiên tiế
n. Nếu process có quyề
n read thì nó có thểđọc
(truy nhậ
p) đến bấtkỳô nhớnào trong segment và khi cầ
n nó có thểcopy toàn bộ
cảsegment.
Nế
u nhưprocess có quyề
n write thì nó có thểthay đổi nội dung của bấ
t kỳô nhớ
nào trong segment, và có thểthêm thông tin bổsung vào segment. Khi cần nó cũng
có thểxoá toàn bộsegment. Process có quyề
n execute thì nó có thểlàm việ
c với
segment nhưlà với chương trình. Còn quyề
n truy nhập đế
n các segment dữliệ
u
thường là bịcấm.
Khi process có quyền append thì nó có thểthêm thông tin vào cuốisegment, nhưng
không được phép thay đổithông tin đã có.
Bả
ng 8.20

Trong bảng hệthống có phân biệ
t 4 loạ
i quyền truy nhậ
p nhưtrên, có thểcó 16 chế

độđiều khiể
n truy nhậ
p- cho phép hay cấm mỗi loạ
i. Tuy nhiên một sốtrong
chúng là không có ý nghĩ
a, còn mộtsốkhác thì có. Đểđơn giản chúng ta xem xét 8
tổhợp quyền truy nhậ
p đối với các quyền read, write và execute- nhưtrong bả
ng
8.21
Hình 8.21

Trong chếđộ0 tấtcảcác hình thức truy nhậ
p đều bịcấm. Chếđộnày ngă
n chặn sự
truy nhậ
p bấthợp pháp, process sẽkhông thểtruy nhập đế
n segment. Chếđộ1 chỉ
cho phép thực hiệ
n. Chếđộnày cần thiết khi process chỉcầ
n được phép sửdụng
chương trình trong segment nhưng không được thay đổi nó hay copy.


×