THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)
Quan ly bo nho
1. Connexions module: m29912 1
∗
Qu n lý b nh
Nguy n Phú Trư ng
This work is produced by The Connexions Project and licensed under the
Creative Commons Attribution License †
Tóm t t n i dung
1 M c đích Sau khi h c xong chương này, ngư i h c n m đư c nh ng ki n th c sau: - Hi u các cách
khác nhau đ qu n lý b nh - Hi u ti p c n qu n lý b phân trang và phân đo n - V n d ng m t ti p
c n qu n lý b nh phù h p v i h th ng xác đ nh
1 Gi i thi u
Trong chương này chúng ta s th o lu n nhi u cách khác nhau đ qu n lý b nh . Các gi i thu t qu n lý b
nh t ti p c n máy trơ cơ b n (primitive bare-machine) là chi n lư c phân trang và phân đo n. M i ti p
c n có l i đi m và như c c a chính nó. Ch n phương pháp qu n lý b nh cho m t h th ng xác đ nh ph
thu c vào nhi u y u t , đ c bi t trên thi t k ph n c ng c a h th ng. Chúng ta s th y nhi u gi i thu t
yêu c u h tr ph n c ng m c dù các thi t k g n đây đã tích h p ph n c ng và h đi u hành.
2Đ tv nđ
B nh là trung tâm đ đi u hành h th ng máy tính hi n đ i. B nh ch a m t m ng l n các t (words)
hay các bytes, m i ph n t v i đ a ch c a chính nó. CPU l y các ch th t b nh d a theo giá tr c a
thanh đ m chương trình. Các ch th này có th gây vi c n p b sung các t và lưu tr t i các đ a ch b
nh xác đ nh.
2.1 Liên k t đ a ch
Thông thư ng, m t chương trình n m trên đĩa như m t t p tin có th th c thi d ng nh phân. Chương trình
này đư c mang vào trong b nh và đư c đ t trong m t quá trình đ nó đư c th c thi. Ph thu c vào vi c
qu n lý b nh đang dùng, quá trình có th đư c di chuy n gi a đĩa và b nh trong khi th c thi. T p h p
các quá trình trên đĩa đang ch đư c mang vào b nh đ th c thi hình thành m t hàng đ i nh p (input
queue).
Th t c thông thư ng là ch n m t trong nh ng quá trình trong hàng đ i nh p và n p quá trình đó vào
trong b nh . Khi m t quá trình đư c th c thi, nó truy xu t các ch th và d li u t b nh . Cu i cùng,
m t quá trình k t thúc và không gian b nh c a nó đư c xác đ nh là tr ng.
H u h t các h th ng cho phép m t quá trình ngư i dùng n m b t c ph n nào c a b nh v t lý. Do
đó, m c dù không gian đ a ch c a máy tính b t đ u t i 00000, nhưng đ a ch đ u tiên c a quá trình ngư i
dùng không c n t i 00000. S p x p này nh hư ng đ n đ a ch mà chương trình ngư i dùng có th dùng.
Trong h u h t các trư ng h p, m t chương trình ngư i dùng s đi qua m t s bư c- m t vài trong chúng có
∗ Version 1.1: Jul 21, 2009 5:52 am GMT-5
† http://creativecommons.org/licenses/by/3.0/
http://cnx.org/content/m29912/1.1/
2. Connexions module: m29912 2
th là tuỳ ch n-trư c khi đư c th c thi (hình VII-1). Các đ a ch có th đư c hi n di n trong nh ng cách
khác trong nh ng bư c này. Các đ a ch trong chương trình ngu n thư ng là nh ng danh bi u. M t trình
biên d ch s liên k t các đ a ch danh bi u t i các đ a ch có th tái đ nh v (ch ng h n như 14 bytes t v trí
b t đ u c a module này). B so n th o liên k t hay b n p s liên k t các đ a ch có th tái đ nh v t i đ a
ch tuy t đ i (ch ng h n 74014). M i liên k t là m t ánh x t m t không gian đ a ch này t i m t không
gian đ a ch khác.
Figure 1
http://cnx.org/content/m29912/1.1/
3. Connexions module: m29912 3
Hình VII[U+2011]1 X lý nhi u bư c c a chương trình ngư i dùng
V truy n th ng, liên k t các ch th và d li u t i các đ a ch có th đư c th c hi n t i b t c bư c nào
theo cách sau đây:
• Th i gian biên d ch: n u t i th i đi m biên d ch có th bi t quá trình n m đâu trong b nh thì mã
tuy t đ i có th đư c phát sinh. Thí d , n u bi t trư c quá trình ngư i dùng n m t i v trí R thì mã
trình biên d ch đư c phát sinh s b t đ u t i v trí đó và m r ng t đó. N u t i th i đi m sau đó, v
trí b t đ u thay đ i thì s c n biên d ch l i mã này. Các chương trình đ nh d ng .COM c a MS-DOS
là mã tuy t đ i gi i h n t i th i đi m biên d ch.
• Th i đi m n p: n u t i th i đi m biên d ch chưa bi t nơi quá trình s n m đâu trong b nh thì
trình biên d ch ph i phát sinh mã có th tái đ nh v . Trong trư ng h p này, liên k t cu i cùng đư c trì
hoãn cho t i th i đi m n p. N u đ a ch b t đ u thay đ i, chúng ta ch c n n p l i mã ngư i dùng đ
h p nh t giá tr đư c thay đ i này.
• Th i gian th c thi: n u quá trình có th đư c di chuy n trong th i gian th c thi t m t phân đo n b
nh này t i m t phân đo n b nh khác thì vi c liên k t ph i b trì hoãn cho t i th i gian ch y. Ph n
c ng đ c bi t ph i s n dùng cho cơ ch này đ th c hi n công vi c. H u h t nh ng h đi u hành này
dùng phương pháp này.
Ph n ch y u c a chương này đư c dành h t đ hi n th các liên k t khác nhau có th đư c cài đ t h u hi u
trong m t h th ng máy tính và th o lu n s h tr ph n c ng tương ng.
2.2 Không gian đ a ch lu n lý và không gian đ a ch v t lý
M t đ a ch đư c t o ra b i CPU thư ng đư c g i là đ a ch lu n lý (logical address), ngư c l i m t đ a ch
đư c xem b i đơn v b nh -nghĩa là, m t đ a ch đư c n p vào thanh ghi đ a ch b nh -thư ng đư c g i
là đ a ch v t lý (physical address).
Các phương pháp liên k t đ a ch th i đi m biên d ch và th i đi m n p t o ra đ a ch lu n lý và đ a ch
v t lý xác đ nh. Tuy nhiên, cơ ch liên k t đ a ch t i th i đi m th c thi d n đ n s khác nhau gi a đ a ch
lu n lý và đ a ch v t lý. Trong trư ng h p này, chúng ta thư ng g i đ a ch lu n lý như là đ a ch o (virtual
address). T p h p t t c đ a ch lu n lý đư c t o ra b i chương trình là không gian đ a ch lu n lý ; t p h p
t t c đ a ch v t lý tương ng đ a ch lu n lý này là không gian đ a ch v t lý. Do đó, trong cơ ch liên k t
đ a ch t i th i đi m th c thi, không gian đ a ch lu n lý và không gian đ a ch v t lý là khác nhau.
Vi c ánh x t i th i đi m th c thi t đ a ch o t i đ a ch v t lý đư c th c hi n b i m t thi t b ph n
c ng đư c g i là b qu n lý b nh MMU (memory-management unit). Chúng ta có th ch n gi a nh ng
phương pháp khác nhau đ th c hi n vi c ánh x .
Như đư c hi n th trong hình VII-2 trên, phương pháp này yêu c u s h tr ph n c ng. Thanh ghi
n n bây gi đư c g i là thanh ghi tái đ nh v . Giá tr trong thanh ghi tái đ nh v đư c c ng vào m i đ a ch
đư c t o ra b i quá trình ngư i dùng t i th i đi m nó đư c g i t i b nh . Thí d , n u giá tr n n là 14000,
thì vi c c g ng b i ngư i dùng đ xác đ nh v trí 0 đư c t đ ng tái đ nh v t i v trí 14000; m t truy xu t
t i đ a ch 346 đư c ánh x t i v trí 14346.
http://cnx.org/content/m29912/1.1/
4. Connexions module: m29912 4
Figure 2
Hình VII[U+2011]2 đ nh v t đ ng dùng thanh ghi tái đ nh v
2.3 N p đ ng
Trong th o lu n c a chúng ta g n đây, toàn b chương trình và d li u c a m t quá trình ph i trong b
nh v t lý đ quá trình th c thi. Kích thư c c a quá trình b gi i h n b i kích thư c c a b nh v t lý. Đ
đ t đư c vi c s d ng không gian b nh t t hơn, chúng ta có th s d ng n p đ ng (dynamic loading). V i
n p đ ng, m t th t c không đư c n p cho t i khi nó đư c g i. T t c th t c đư c gi trên đĩa trong đ nh
d ng n p có th tái đ nh v . Chương trình chính đư c n p vào b nh và đư c th c thi. Khi m t th t c c n
g i m t th t c khác, th t c g i trư c h t ki m tra đ th y th t c khác đư c n p hay không. N u không,
b n p liên k t có th tái đ nh v đư c g i đ n p th t c mong mu n vào b nh và c p nh t các b ng đ a
ch c a chương trình đ ph n ánh thay đ i này. Sau đó, đi u khi n này đư c truy n t i th t c m i đư c
n p.
Thu n l i c a n p đ ng là đó m t th t c không đư c dùng thì không bao gi đư c n p. Phương pháp
này đ c bi t có ích khi lư ng l n mã đư c yêu c u qu n lý các trư ng h p x y ra không thư ng xuyên, ch ng
h n như các th t c l i. Trong trư ng h p này, m c dù kích thư c toàn b chương trình có th l n, nhưng
ph n đư c dùng (và do đó đư c n p) có th nh hơn nhi u.
N p đ ng không yêu c u h tr đ c bi t t h đi u hành. Nhi m v c a ngư i dùng là thi t k các chương
trình c a h đ đ t đư c s thu n l i đó. Tuy nhiên, h đi u hành có th giúp ngư i l p trình b ng cách
cung c p các th t c thư vi n đ cài đ t n p t đ ng.
2.4 Liên k t đ ng và các thư vi n đư c chia s
Trong hình VII-1 cũng hi n th thư vi n đư c liên k t đ ng. M t s h đi u hành h tr ch liên k t tĩnh
mà trong đó các thư vi n ngôn ng h th ng đư c đ i x như b t kỳ module đ i tư ng khác và đư c k t
http://cnx.org/content/m29912/1.1/
5. Connexions module: m29912 5
h p b i b n p thành hình nh chương trình nh phân. Khái ni m liên k t đ ng là tương t như khái ni m
n p đ ng. Liên k t b trì hoãn hơn là vi c n p b trì hoãn cho t i th i đi m th c thi. Đ c đi m này thư ng
đư c dùng v i các thư vi n h th ng như các thư vi n chương trình con c a các ngôn ng . Không có ti n
ích này, t t c chương trình trên m t h th ng c n có m t b n sao thư vi n c a ngôn ng c a chúng (hay
ít nh t thư vi n đư c tham chi u b i chương trình) đư c ch a trong hình nh có th th c thi. Yêu c u này
làm lãng phí c không gian đĩa và b nh chính. V i liên k t đ ng, m t stub là m t đo n mã hi n th cách
đ nh v chương trình con trong thư vi n cư trú trong b nh hay cách n p thư vi n n u chương trình con
chưa hi n di n.
Khi stub này đư c th c thi, nó ki m tra đ th y chương trình con đư c yêu c u đã trong b nh hay
chưa. N u chưa, chương trình này s n p chương trình con vào trong b nh . Dù là cách nào, stub thay th
chính nó v i đ a ch c a chương trình con và th c thi chương trình con đó. Do đó, th i đi m ti p theo phân
đo n mã đ t đư c, chương trình con trong thư vi n đư c th c thi tr c ti p mà không gây ra b t kỳ chi phí
cho vi c liên k t đ ng. Dư i cơ ch này, t t c các quá trình s d ng m t thư vi n ngôn ng th c thi ch
m t b n sao c a mã thư vi n.
2.5 Ph l p
Đ cho phép m t quá trình l n hơn lư ng b nh đư c c p phát cho nó, chúng ta s d ng cơ ch ph l p
(overlays). Ý tư ng ph l p là gi trong b nh nh ng ch th và d li u đư c yêu c u t i b t kỳ th i đi m
nào đư c cho. Khi nh ng ch th đó đư c yêu c u, chúng đư c n p vào không gian đư c chi m trư c đó b i
các ch th mà chúng không còn c n n a.
Thí d , xét trình d ch h p ng hai l n (two-pass assembler). Trong su t l n th 1, nó xây d ng b ng
danh bi u; sau đó, trong l n th 2, nó t o ra mã máy. Chúng ta có th phân chia trình d ch h p ng thành
mã l n 1, mã l n 2, b ng danh bi u, và nh ng th t c h tr chung đư c dùng b i l n 1 và l n 2. Gi s
kích thư c c a các thành ph n này như sau:
L n 170 KB
L n 280 KB
B ng danh bi u20 KB
Các th t c chung30 KB
Đ n p m i th m t l n, chúng ta c n 200KB b nh . N u ch có 150KB s n có, chúng ta không th
ch y quá trình c a chúng ta. Tuy nhiên, chú ý r ng l n 1 và l n 2 không c n trong b nh cùng m t lúc.
Do đó, chúng ta đ nh nghĩa hai ph l p. Ph l p A là b ng danh bi u, các th t c chung, l n 1, và ph l p
B là b ng bi u tư ng, các th t c chung và l n 2.
Chúng ta b sung trình đi u khi n ph l p (10 KB) và b t đ u v i ph l p A trong b nh . Khi chúng
ta k t thúc l n 1, chúng ta nh y t i trình đi u khi n ph l p, trình đi u khi n này s đ c ph l p B vào
trong b nh , vi t ch ng lên ph l p B và sau đó chuy n đi u khi n t i l n 2. Ph l p A ch c n 120KB,
ngư c l i ph l p B c n 130KB (hình VII-3). Bây gi chúng ta có th ch y trình h p ng trong 150KB b
nh . Nó s n p nhanh hơn vì r t ít d li u c n đư c chuy n trư c khi vi c th c thi b t đ u. Tuy nhiên, nó
s ch y ch m hơn do nh p/xu t ph đ c mã mã cho ph l p A qua mã cho ph l p B.
http://cnx.org/content/m29912/1.1/
6. Connexions module: m29912 6
Figure 3
Hình VII[U+2011]3- Các ph l p cho m t b h p ng d ch hai l n
Mã cho ph l p A và mã cho ph l p B đư c gi trên đĩa như nh ng hình nh b nh tuy t đ i, và đư c
đ c b i trình đi u khi n ph l p khi c n. Tái đ nh v đ c bi t và các gi i thu t liên k t đư c yêu c u xây
d ng các ph l p.
3 Hoán v
M t quá trình c n trong b nh đ đư c th c thi. Tuy nhiên, m t quá trình có th đư c hoán v (swapped)
t m th i kh i b nh t i vùng lưu tr ph backing store, sau đó mang tr l i b nh đ vi c th c thi đư c
ti p t c. Thí d , gi s m t môi trư ng đa chương v i gi i thu t l p th i bi u CPU round-robin. Khi đ nh
m c th i gian h t, b qu n lý b nh s b t đ u hoán v ra (swap out) vùng lưu tr ph quá trình v a m i
k t thúc và hoán v vào (swap in) m t quá trình khác t i không gian b nh đư c tr ng (hình VII-4). Do
đó, b đ nh th i bi u CPU s c p nh ng ph n th i gian t i nh ng quá trình khác trong b nh . Lý tư ng,
b qu n lý s hoán v các quá trình đ nhanh đ m t vài quá trình s trong b nh , s n sàng th c thi, khi
b đ nh th i CPU mu n đ nh th i l i CPU. Đ nh m c cũng ph i đ l n đ phù h p lư ng tính toán đư c
th c hi n gi a các hoán v .
http://cnx.org/content/m29912/1.1/
7. Connexions module: m29912 7
Figure 4
Hình VII[U+2011]4- Hoán v hai quá trình dùng đĩa như là backing store
M t bi n th c a chính sách hoán v này đư c dùng cho các gi i thu t đ nh th i trên cơ s ưu tiên. N u
m t quá trình có đ ưu tiên cao hơn đ n và mu n ph v , b qu n lý b nh có th hoán v ra quá trình có
đ ưu tiên th p hơn đ mà nó có th n p và th c thi quá trình có đ ưu tiên cao hơn. Khi quá trình có đ
ưu tiên cao hơn k t thúc, quá trình có đ ưu tiên th p hơn có th đư c hoán v vào tr l i và đư c ti p t c.
Bi n th c a hoán v này thư ng đư c g i là cu n ra (roll out), và cu n vào (roll in).
Thông thư ng, m t quá trình đư c hoán v ra s đư c hoán v tr l i vào cùng không gian b nh mà
nó đã chi m trư c đó. S gi i h n này đư c sai khi n b i phương pháp liên k t đ a ch . N u liên k t đ a ch
đư c th c hi n t i th i đi m h p d ch hay n p thì quá trình không th đư c di chuy n vào không gian b
nh khác vì các đ a ch v t lý đư c tính trong th i gian th c thi.
Hoán v yêu c u m t vùng lưu tr ph (backing store). Vùng lưu tr ph này thư ng là m t đĩa t c đ
cao. Nó ph i đ l n đ ch a các b n sao c a t t c hình nh b nh cho t t c ngư i dùng, và nó ph i cung
c p truy xu t tr c ti p t i các hình nh b nh này. H th ng này duy trì m t hàng đ i s n sàng ch a t t
c quá trình mà các hình nh b nh c a nó trong vùng lưu tr ph hay trong b nh và s n sàng đ th c
thi. B t c khi nào b đ nh th i CPU quy t đ nh th c thi m t quá trình, nó g i b phân phát (dispacher).
B phân phát ki m tra đ th y quá trình ti p theo trong hàng đ i trong b nh không. N u không, và
không có vùng b nh tr ng, b phân phát hoán v ra m t quá trình hi n hành trong b nh và hoán v vào
m t quá trình mong mu n. Sau đó, nó n p l i các thanh ghi và chuy n đi u khi n t i quá trình đư c ch n.
Trong các h hoán v , th i gian chuy n đ i gi a các tác v c n đư c quan tâm. M i quá trình c n đư c
phân chia m t kho ng th i gian s d ng CPU đ l n đ không th y rõ s ch m tr do các thao tác hoán v
gây ra. N u không, h th ng s dùng ph n l n th i gian đ hoán v các quá trình vào ra b nh chính, CPU
http://cnx.org/content/m29912/1.1/
8. Connexions module: m29912 8
như v y s không s d ng hi u qu .
Hoán v cũng b ràng bu c b i y u t khác. N u chúng ta mu n hoán v m t quá trình, chúng ta ph i đ m
b o r ng nó hoàn toàn r i. Quan tâm đ c bi t là vi c ch nh p/xu t. M t quá trình có th đang ch thao tác
nh p/xu t khi chúng ta hoán v quá trình đó t i nơi tr ng b nh c a nó. Tuy nhiên, n u nh p/xu t đang
truy xu t không đ ng b b nh ngư i dùng cho nh p/xu t vùng đ m, thì quá trình không th đư c hoán
v . Gi s r ng thao tác nh p/xu t đang x p hàng ch vì thi t b đang b n. Sau đó, n u chúng ta hoán v
quá trình P1 ra và hoán v P2 vào thì thao tác nh p/xu t có th c g ng s d ng b nh hi n thu c v quá
trình P2. Hai gi i pháp ch y u cho quá trình này là không bao gi hoán v quá trình đang ch nh p/xu t
hay th c thi các thao tác nh p/xu t ch trong vùng đ m c a h đi u hành. Chuy n gi a các vùng đ m
c a h đi u hành và b nh quá trình thì ch x y ra khi quá trình đư c hoán v vào.
4 C p phát b nh liên t c
B nh chính ph i cung c p cho c h đi u hành và các quá trình ngư i dùng khác nhau. Do đó, chúng ta
c n c p phát nh ng ph n khác nhau c a b nh chính trong nh ng cách hi u qu nh t có th . Ph n này
chúng ta gi i thích m t phương pháp thông d ng, c p phát b nh liên t c.
B nh thư ng đư c phân chia thành hai phân khu, m t cho h đi u hành đ nh v và m t cho các quá
trình ngư i dùng. Chúng ta có th đ t h đi u hành b nh cao hay b nh th p. Y u t quan tr ng nh
hư ng t i quy t đ nh này là v trí c a vector ng t. Vì vector ng t thư ng trong b nh th p nên các l p
trình viên thư ng cũng đ t h đi u hành trong b nh th p. Do đó, trong giáo trình này chúng ta s th o
lu n ch trư ng h p h đi u hành đ nh v trong b nh th p. Phát tri n c a trư ng h p khác là tương t .
Chúng ta thư ng mu n nhi u quá trình ngư i dùng đ nh v trong b nh t i cùng th i đi m. Do đó,
chúng ta c n xem xét cách c p phát b nh tr ng t i nh ng quá trình trong hàng đ i nh p đang ch đư c
mang vào b nh . Trong c p phát b nh liên t c, m i quá trình đư c ch a trong m t ph n b nh liên t c.
4.1 B o v b nh
Trư c khi th o lu n c p phát b nh chúng ta ph i th o lu n v n đ b o v b nh -b o v h đi u hành t
quá trình ngư i dùng, và b o v các quá trình t m t quá trình khác. Chúng ta có th cung c p b o v này
b ng cách dùng thanh ghi tái đ nh v . Thanh ghi tái đ nh v ch a giá tr đ a ch v t lý nh nh t; thanh ghi
gi i h n ch a dãy các đ nh ch lu n lý (thí d : tái đ nh v = 100040 và gi i h n = 74600). V i các thanh ghi
tái đ nh v và gi i h n, m i đ a ch lu n lý ph i ít hơn thanh ghi gi i h n; MMU ánh x đ a ch lu n lý đ ng
b ng cách c ng giá tr trong thanh ghi tái đ nh v . Đ a ch đư c tái đ nh v này đư c g i t i b nh (như
hình VII-5).
http://cnx.org/content/m29912/1.1/
9. Connexions module: m29912 9
Figure 5
Hình VII[U+2011]5 H tr ph n c ng cho các thanh ghi tái đ nh v và các gi i h n
Khi b đ nh th i CPU ch n m t quá trình th c thi, b phân phát n p thanh ghi tái đ nh v và gi i h n
v i các giá tr đúng như m t ph n c a chuy n đ i ng c nh. Vì m i đ a ch đư c phát sinh b i CPU đư c
ki m tra d a trên các thanh ghi này, chúng ta có th b o v h đi u hành và các chương trình và d li u
ngư i dùng khác t vi c s a đ i b i quá trình đang ch y này.
Cơ ch dùng thanh ghi tái đ nh v cung c p m t cách hi u qu đ cho phép kích thư c h đi u hành thay
đ i đ ng. Kh năng m m d o này có th mong mu n trong nhi u trư ng h p. Thí d , h đi u hành ch a
mã và không gian vùng đ m cho trình đi u khi n thi t b . N u m t trình đi u khi n thi t b (hay d ch v
h đi u hành khác) không đư c dùng ph bi n, nó không mu n gi mã và d li u trong b nh , khi chúng
ta có th dùng không gian đó cho m c đích khác. Nh ng mã như th thư ng đư c g i là mã h đi u hành
t m th i (transient operating system code); nó đ n và đi khi đư c yêu c u. Do đó, dùng mã này thay đ i
kích thư c c a h đi u hành trong khi th c thi chương trình.
4.2 H th ng đơn chương
Trong phương pháp này b nh đư c chia s cho h đi u hành và m t chương trình duy nh t c a ngư i s
d ng. T i m t th i đi m, m t ph n c a b nh s do h đi u hành chi m gi , ph n còn l i thu c v quá
trình ngư i dùng duy nh t trong h th ng (Hình VII-6). Quá trình này đư c toàn quy n s d ng b nh
dành cho nó.
User processOperating system0xFFF. . .0
Hình VII[U+2011]6 T ch c b nh trong h th ng đơn chương
Khi b nh đư c t ch c theo cách th c này, ch có th x lý m t chương trình t i m t th i đi m. Quan
sát ho t đ ng c a các quá trình, có th nh n th y r t nhi u ti n trình tr i qua ph n l n th i gian đ ch
các thao tác nh p/xu t hoàn thành. Trong su t th i gian này, CPU tr ng thái r i. Trong trư ng h p như
th , h th ng đơn chương không cho phép s d ng hi u qu CPU. Ngoài ra, s đơn chương không cho phép
http://cnx.org/content/m29912/1.1/
10. Connexions module: m29912 10
nhi u ngư i s d ng làm vi c đ ng th i theo cơ ch tương tác. Đ nâng cao hi u su t s d ng CPU, c n cho
phép ch đ đa chương mà trong đó các quá trình chia s CPU v i nhau đ ho t đ ng đ ng hành.
4.3 H th ng đa chương v i phân khu c đ nh
M t trong nh ng phương pháp đơn gi n nh t đ c p phát b nh là chia b nh thành nh ng phân khu có
kích thư c c đ nh. M i phân khu có th ch a chính xác m t quá trình. Do đó, c p đ đa chương đư c gi i
h n b i s lư ng phân khu. Trong phương pháp đa phân khu, khi m t phân khu r nh, m t quá trình đư c
ch n t hàng đ i nh p và đư c n p vào phân khu tr ng. Khi quá trình k t thúc, phân khu tr nên s n dùng
cho m t quá trình khác. Có hai ti p c n đ t ch c hàng đ i:
• S d ng nhi u hàng đ i: m i phân khu s có m t hàng đ i tương ng (hình VII-7a). Khi m t quá trình
m i đư c t o ra, nó đư c đưa vào hàng đ i c a phân khu có kích thư c nh nh t tho nhu c u ch a
nó. Cách t ch c này có khuy t đi m trong trư ng h p các hàng đ i c a m t s phân khu tr ng trong
khi các hàng đ i c a các phân khu khác l i đ y, bu c các quá trình trong nh ng hàng đ i này ph i
ch đư c c p phát b nh .
• S d ng m t hàng đ i: t t c các quá trình đư c đ t trong hàng đ i duy nh t (hình VII-7b). Khi có
m t phân khu tr ng, quá trình đ u tiên trong hàng đ i có kích thư c phù h p s đư c đ t vào phân
khu và cho x lý.
400K600K200KPartition 3Partition 4Partition Partition 1Partition 4Partition 3Operating sys-
1Operating systema. S d ng nhi u hàng đ i temb. S d ng m t hàng đ i
Table 1
Hình VII[U+2011]7 C p phát phân khu có kích thư c c đ nh
Khi s d ng gi i thu t này ngư i ta mu n tránh s hao phí m t phân khu l n cho m t công vi c nh ,
nhưng l i x y ra b t bình đ ng, b t l i đ i v i các công vi c nh . Đ gi i quy t ngư i ta thêm vào qui lu t
là m t công vi c s không b b qua n a n u nó đã b b qua k l n qui đ nh. M i l n m t công vi c b b
qua nó đư c đánh d u m t đi m. Khi đ t đư c s đi m qui đ nh, nó s không b b qua n a, s đư c n p
vào và th c hi n m c d u có th trên m t phân khu l n hơn.
Phương pháp này ban đ u đư c s d ng b i h đi u hành IBM OS/360, nó đư c g i là MFT (Multipro-
gramming with Fixed number of Tasks). Hi n nay nó không còn s d ng n a.
4.4 H th ng đa chương v i phân khu đ ng
Cơ ch này là t ng quát c a cơ ch phân khu c đ nh. Nó đư c dùng ch y u trong môi trư ng x lý theo lô.
Nhi u ý tư ng đư c trình bày đây cũng có th áp d ng t i môi trư ng chia th i mà trong đó phân đo n
thu n đư c dùng cho vi c qu n lý b nh .
H đi u hành gi m t b ng hi n th nh ng ph n nào c a b nh là s n dùng và ph n nào đang b n. Ban
đ u, t t c b nh là s n dùng cho quá trình ngư i dùng, và đư c xem như m t kh i l n b nh s n dùng
hay m t l . Khi m t quá trình đ n và c n b nh , chúng ta tìm ki m m t l tr ng đ l n cho quá trình này.
N u chúng ta tìm th y, chúng ta c p phát ch ph n b nh nhi u b ng lư ng đư c yêu c u, ph n còn l i s n
dùng đ tho mãn nh ng yêu c u tương lai (Hình VII-8).
http://cnx.org/content/m29912/1.1/
11. Connexions module: m29912 11
Figure 6
Khi các quá trình đi vào h th ng, chúng đư c đ t vào hàng đ i nh p. H đi u hành xem xét yêu c u
b nh c a m i quá trình và lư ng không gian b nh s n có đ xác đ nh các quá trình nào đư c c p phát
b nh . Khi m t quá trình đư c c p không gian, nó đư c n p vào b nh và sau đó nó có th c nh tranh
CPU. Khi m t quá trình k t thúc, nó gi i phóng b nh c a nó, sau đó h đi u hành có th đ t m t quá
trình khác t hàng đ i nh p.
T i b t c th i đi m đư c cho, chúng ta có m t danh sách kích thư c kh i tr ng và hàng đ i nh p. H
đi u hành có th x p hàng đ i nh p d a theo gi i thu t đ nh th i. B nh đư c c p phát t i quá trình cho
đ n khi các yêu c u b nh c a quá trình k ti p không th đư c tho ; không có kh i b nh tr ng (hay l )
đ l n đ qu n lý quá trình đó. Sau đó, h đi u hành có th ch cho đ n khi kh i đ l n s n dùng hay nó
có th di chuy n xu ng hàng đ i nh p đ xem các yêu c u b nh nh hơn c a các quá trình khác có th
đư c tho hay không.
Thông thư ng, m t t p h p các l có kích thư c khác nhau đư c phân tán kh p b nh t i b t c th i
đi m đư c cho. Khi m t quá trình đ n và yêu c u b nh , h th ng tìm t p h p này m t l tr ng đ l n
cho quá trình này. N u l tr ng quá l n, nó đư c chia làm hai: m t ph n đư c c p t i quá trình đ n; ph n
còn l i đư c tr v t p h p các l . N u l m i n m k v i các l khác, các l n m k này đư c gom l i đ
t o thành m t l l n hơn. T i th i đi m này, h th ng c n ki m tra có quá trình nào đang ch b nh và
b nh tr ng m i hay b nh v a đư c k t h p l i có th tho yêu c u c a b t c quá trình đang ch này
không.
Th t c này là m t trư ng h p đ c bi t c a v n đ c p phát lưu tr đ ng là làm cách nào đ tho mãn
m t yêu c u có kích thư c n t danh sách l tr ng. Có hai gi i pháp ch y u cho v n đ này.
1. Qu n lý b ng b n đ bit: b nh đư c chia thành các đơn v c p phát, m i đơn v đư c ánh x t i
m t bit trong b n đ bit (Hình VII-9). Giá tr bit này xác đ nh tr ng thái c a đơn v b nh đó: 0
đang t do, 1 đã đư c c p phát. Khi c n n p m t quá trình có kích thư c k đơn v , h th ng s tìm
trong b n đ bit m t dãy k bit có giá tr 0.
http://cnx.org/content/m29912/1.1/
12. Connexions module: m29912 12
Kích thư c c a đơn v c p phát là v n đ l n trong thi t k . N u kích thư c đơn v c p phát nh s làm
tăng kích thư c c a b n đ bit. Ngư c l , n u kích thư c đơn v c p phát l n có th gây hao phí cho đơn v
c p phát sau cùng. Đây là gi i pháp đơn gi n nhưng th c hi n ch m nên ít đư c dùng.
B n đ bit tương ngB nh có 5 quá trình và 3 l tr ng ***SORRY, THIS MEDIA TYPE IS NOT
SUPPORTED.***
Hình VII[U+2011]8 Qu n lý b nh b ng b n đ bit
1. Qu n lý b ng danh sách liên k t: dùng m t danh sách liên k t đ qu n lý các phân đo n b nh đã
c p phát và phân đo n t do, m t phân đo n có th là m t quá trình hay m t vùng nh tr ng gi a
hai quá trình. Danh sách liên k t g m nhi u m c t liên ti p. M i m c t g m 1 bit đ u đ xác đ nh
phân đo n đó là l tr ng (H) hay m t quá trình (P), sau đó là 3 t đ ch đ a ch b t đ u, chi u dài và
ch đi m t i m c k ti p. Vi c s p x p các phân đo n theo đ a ch hay theo kích thư c tuỳ thu c vào
gi i thu t qu n lý b nh . Sơ đ qu n lý b ng danh sách liên k t tương ng v i sơ đ qu n lý b ng
b n đ bit đư c minh ho trong hình VII-10.
***SORRY, THIS MEDIA TYPE IS NOT SUPPORTED.*** Hình VII[U+2011]9 Qu n lý b nh b ng
danh sách liên k t
T p h p các l tr ng đư c tìm th y đ xác đ nh l nào là t t nh t đ c p phát. Các chi n lư c first-fit,
best-fit, worst-fit là nh ng chi n lư c ph bi n nh t đư c dùng đ ch n m t l tr ng t t p h p các l tr ng.
• First-fit: c p phát l tr ng đ u tiên đ l n. Tìm ki m có th b t đ u t i đ u t p h p các l tr ng hay
t i đi m k t thúc c a tìm ki m first-fit trư c đó. Chúng ta d ng tìm ki m ngay khi chúng ta tìm th y
m t l tr ng đ l n.
• Best-fit: c p phát l tr ng nh nh t đ l n. Chúng ta ph i tìm toàn b danh sách, tr khi danh sách
đư c x p th t theo kích thư c. Chi n lư c này t o ra l tr ng nh nh t còn th a l i.
• Worst-fit: c p phát l tr ng l n nh t. Chúng ta ph i tìm toàn danh sách tr khi nó đư c x p theo th
t kích thư c. Chi n lư c này t o ra l tr ng còn l i l n nh t mà có th có ích hơn l tr ng nh t
ti p c n best-fit.
Các mô ph ng hi n th r ng c first-fit và best-fit là t t hơn worst-fit v vi c gi m th i gian và s d ng lưu
tr . Gi a first-fit và best-fit không th xác đ nh rõ chi n lư c nào t t hơn v s d ng lưu tr , nhưng first-fit
có t c đ nhanh hơn.
Tuy nhiên, các gi i thu t này g p ph i v n đ phân mãnh ngoài (external fragmentation). Khi các quá
trình đư c n p và đư c xoá kh i b nh , không gian b nh tr ng b phân rã thành nh ng mãnh nh . Phân
mãnh ngoài t n t i khi t ng không gian b nh đ đ tho mãn m t yêu c u, nhưng nó không liên t c;
vùng lưu tr b phân mãnh thành m t s lư ng l n các l nh . V n đ phân mãnh này có th r t l n. Trong
trư ng h p x u nh t, chúng có th có m t kh i b nh tr ng n m gi a m i hai quá trình. N u t t c b
nh này n m trong m t kh i tr ng l n, chúng ta có th ch y nhi u quá trình hơn.
Ch n l a first-fit so v i best-fit có th nh hư ng t i lư ng phân mãnh. (First-fit là t t hơn đ i v i m t
s h th ng, ngư c l i best fit là t t hơn cho m t s h th ng khác). M t y u t khác là ph n cu i c a kh i
tr ng nào đư c c p phát. (ph n còn dư nào-ph n trên đ nh, hay ph n dư i đáy?). V n đ không do gi i
thu t nào đư c dùng mà do phân mãnh ngoài.
4.5 Qu n lý b nh v i h th ng b n thân
Như ta đã th y trong ph n trư c, vi c qu n lý các l h ng trên nh ng b ng li t kê đư c s p x p theo kích
thư c làm cho vi c c p phát b nh r t nhanh, nhưng l i làm ch m cho vi c ngưng c p phát b i vì ta ph i
chú ý đ n các láng gi ng. H th ng b n thân (Buddy System) là m t gi i thu t qu n lý b nh t n d ng
thu n l i c a vi c máy tính dùng nh ng s nh phân cho vi c đánh đ a ch đ tăng t c đ k t h p nh ng l
h ng sát nhau khi m t quá trình hoàn thành ho c đư c hoán v ra ngoài.
V i phương pháp này, b qu n lý b nh s có m t b ng li t kê nh ng kh i còn t do có kích thư c 1,
2, 4, 16...bytes đ n kích thư c c a b nh , t c là có kích thư c b ng lũy th a c a 2. Khi có m t quá trình
http://cnx.org/content/m29912/1.1/
13. Connexions module: m29912 13
c n c p phát b nh , m t l h ng có kích thư c b ng lu th a c a 2 đ ch a quá trình s đư c c p phát.
N u không có l h ng yêu c u, các l h ng s đư c phân đôi cho đ n khi có đư c l h ng c n thi t. Khi m t
quá trình ch m d t, các l h ng k nhau có kích thư c b ng nhau s đư c nh p l i đ t o thành l h ng l n
hơn. Do đó, gi i thu t này đư c g i là h th ng b n thân.
Thí du: v i b nh 1M, c n ph i có 21 b ng li t kê như th s p t 1 bytes (20) đ n 1 byte (220). Kh i
đ u toàn b b nh còn t do và b ng li t kê 1M có m t m c t đ c nh t ch a đ ng m t l h ng 1M, t t
c các b ng li t kê khác đ u r ng. C u hình b nh lúc kh i đ u đư c ch ra trong hình VII-11.
Memory
0 128 K 256 K 384 K 512K 640 K 768 K 896 K 1M
Initially 1 Hole
request 70 A 128 256 512 3
request 35 A B 64 256 512 3
request 80 A B 64 C 128 512 3
return A 128 B 64 C 128 512 4
request 60 128 B D C 128 512 4
return B 128 64 D C 128 512 4
return D 256 C 128 512 3
return C 1024 1
Table 2
Hình VII[U+2011]10H th ng b n thân v i kích thư c 1M
Bây gi chúng ta hãy xem cách h th ng buddy làm vi c khi m t quá trình 70K đư c hoán v vào b
nh tr ng 1M. Do nh ng l h ng ch có th có kích thư c là lũy th a c a 2, 128K s đư c yêu c u, b i vì đó
chính là lũy th a nh nh t c a 2 đ l n. Không có kh i 128K s n, cũng không có các kh i 256K và 512K. Vì
v y kh i 1M s đư c chia làm hai kh i 512K, đư c g i là nh ng b n thân; m t t i đ a ch 0 và m t t i đ a
ch 512K. Sau đó kh i t i đ a ch th p hơn, chính là kh i t i 0 l i đư c phân làm hai kh i b n thân 256K,
m t t i 0 và m t t i 256K. Cái th p hơn c a chúng l i đư c phân làm hai kh i 128K, và kh i t i 0, đánh
d u là A trong hình đư c c p phát cho quá trình.
K đ n, m t quá trình 35K đư c hoán v vào. Khi đó ta c n kh i 64K, nhưng cũng không có s n, vì th
ph i phân ph i kh i 128K thành hai kh i b n thân 64K, m t t i đ a ch 128K, m t t i 192K. Kh i t i 128K
đư c c p cho quá trình, trong hình là B. Yêu c u th ba là 80K.
Bây gi ta hãy xem nh ng gì x y ra khi m t kh i đư c tr l i. Gi s t i th i đi m này kh i 128K (mà
ch dùng có 70K) đư c t do. Khi đó kh i 128K s đư c đưa vào b ng t do. Bây gi c n m t kh i 60K.
Sau khi ki m tra, kh i 64K t i 192K đư c c p phát và nó đư c đánh d u là C.
Bây gi kh i B đư c tr l i. T i th i đi m này có hai kh i 128K t do nhưng chúng không đư c k t h p
l i. Chú ý r ng ngay c khi kh i 128K t i 0 đư c phân ra làm 2, kh i t i 9 đư c dùng và kh i t i 84K còn
t do, s k t h p cũng không xãy ra. Khi D đư c tr l i, s có s k t h p l i thành kh i 256K t i 0. Cu i
cùng, khi C đư c tr l i, s có k t h p t o thành 1 l h ng 1M như ban đ u.
H th ng b n thân có s thu n l i so v i nh ng gi i thu t cùng s p x p theo kích thư c c a kh i. S
thu n l i này là khi có m t kh i 2k bytes t do, b qu n lý b nh ch c n tìm trong b ng li t kê l h ng có
kích thư c 2k đ xem chúng có kh năng k t h p đư c hay không. V i nh ng gi i thu t khác mà trong đó
cho phép các kh i b nh đư c phân chia m t cách tùy ý, vi c tìm ki m ph i di n ra trên t t c các b ng
li t kê. Do dó, h th ng b n thân làm vi c nhanh hơn.
Đáng ti c, nó l i c c kỳ kém hi u qu trong vi c s d ng b nh . M t quá trình 35K ph i đư c c p phát
đ n 64K, hao phí đ n 29K. S hao phí này đư c g i là s phân m nh trong (internal fragmentation), b i vì
http://cnx.org/content/m29912/1.1/
14. Connexions module: m29912 14
ph n b nh hao phí n m bên trong đo n đư c c p phát. Còn trong các ph n trư c ta th y nh ng l h ng
gi a các đo n, nhưng không có s hao phí bên trong các đo n, do đó ki u này đư c coi là s phân m nh
ngoài.
4.6 Phân mãnh
Phân mãnh b nh có th là phân mãnh trong ho c phân mãnh ngoài. Xét cơ ch c p phát nhi u phân khu
v i m t l tr ng có kích thư c 18,464 bytes. Gi s r ng quá trình ti p theo yêu c u 18,462 bytes. N u chúng
ta c p phát chính xác kh i đư c yêu c u, chúng ta đ l i m t l tr ng có kích thư c 2 bytes. Chi phí đ gi
v t c a l này s l n hơn kích thư c c a l tr ng. Ti p c n thông thư ng là chia b nh v t lý thành nh ng
kh i có kích thư c c đ nh, và c p phát b nh d a theo đơn v c a kích thư c kh i. V i ti p c n này, b
nh đư c c p phát t i m t quá trình có th là l n hơn m t chút so v i kh i đư c yêu c u. S chênh l nh
gi a hai s này là phân mãnh trong-b nh b phân mãnh trong đ i v i m t phân khu thì không th đư c
dùng.
M t gi i pháp đ i v i phân mãnh ngoài là k t l i thành kh i (compaction). M c tiêu là di chuy n n i
dung b nh đ đ t t t c b nh tr ng v i nhau trong m t kh i l n. K t kh i không ph i luôn th c hi n
đư c. N u vi c tái đ nh v là tĩnh và đư c th c hi n t i th i đi m h p d ch và n p thì vi c k t kh i là không
th th c hi n đư c. K t kh i ch có th th c hi n đư c ch n u tái đ nh v là đ ng và đư c th c hi n t i th i
đi m th c thi. N u đ a ch đư c tái đ nh v đ ng, tái đ nh v yêu c u ch di chuy n chương trình và d li u,
sau đó thay đ i thanh ghi n n đ ph n ánh đ a ch n n m i. Khi k t kh i là có th , chúng ta ph i xác đ nh
chi phí c a nó. Gi i thu t k t kh i đơn gi n nh t là di chuy n t t c quá trình t i cu i b nh ; t t c l
tr ng di chuy n theo hư ng ngư c l i, t o ra m t l tr ng l n c a b nh s n dùng. Cơ ch này có th đ t.
M t gi i pháp khác cho v n đ phân mãnh ngoài là cho phép không gian đ a ch lu n lý c a m t quá
trình là không liên t c, do đó cho phép m t quá trình đư c c p phát b nh v t lý b t c đâu sau khi s n
dùng. Hai k thu t bù tr đ đ t gi i pháp này là phân trang và phân đo n.
5 C p phát không liên t c
5.1 Phân trang
Phân trang là cơ ch qu n lý b nh cho phép không gian đ a ch v t lý c a quá trình là không k nhau.
Phân trang tránh v n đ đ t v a khít nhóm b nh có kích thư c thay đ i vào vùng lưu tr ph (backing
store) mà h u h t các cơ ch qu n lý b nh trư c đó g p ph i. Khi phân đo n mã và d li u n m trong b
nh đư c hoán v ra, không gian ph i đư c tìm th y trên vùng lưu tr ph . V n đ phân mãnh đư c th o
lu n trong s k t n i v i b nh chính cũng thông d ng như v i vùng lưu tr ph , ngo i tr truy xu t th p
hơn nhi u, vì th k t kh i là không th . Vì l i đi m c a nó so v i các phương pháp trư c đó nên phân trang
trong nh ng d ng khác nhau đư c dùng ph bi n trong h u h t các h đi u hành.
V truy n th ng, h tr phân trang đư c qu n lý b i ph n c ng. Tuy nhiên, nh ng thi t k g n đây cài
đ t phân trang b ng cách tích h p ch t ch ph n c ng và h đi u hành, đ c bi t trên các b vi x lý 64-bit.
Phương pháp cơ b n
http://cnx.org/content/m29912/1.1/
15. Connexions module: m29912 15
Figure 7
Hình VII[U+2011]11 Ph n c ng phân trang
B nh v t lý đư c chia thành các kh i có kích thư c c đ nh đư c g i là các khung (frames). B nh
lu n lý cũng đư c chia thành các kh i có cùng kích thư c đư c g i là các trang (pages). Khi m t quá trình
đư c th c thi, các trang c a nó đư c n p vào các khung b nh s n dùng t vùng lưu tr ph . Vùng lưu
tr ph đư c chia thành các kh i có kích thư c c đ nh và có cùng kích thư c như các khung b nh .
H tr ph n c ng cho phân trang đư c hi n th trong hình VII-12. M i đ a ch đư c t o ra b i CPU
đư c chia thành hai ph n: s trang (p) và đ d i trang (d). S trang đư c dùng như ch m c vào b ng trang.
B ng trang ch a đ a ch n n c a m i trang trong b nh v t lý. Đ a ch n n này đư c k t h p v i đ d i
trang đ đ nh nghĩa đ a ch b nh v t lý mà nó đư c g i đ n đơn v b nh . Mô hình phân trang b nh
đư c hi n th như hình VII-13.
Kích thư c trang (gi ng như kích thư c khung) đư c đ nh nghĩa b i ph n c ng. Kích thư c c a m t
trang đi n hình là lu th a c a 2, t 512 bytes đ n 16MB trên trang, ph thu c vào ki n trúc máy tính.
Ch n lu th a 2 cho kích thư c trang th c hi n vi c d ch đ a ch lu n lý thành s trang và đ d i trang r t
d dàng. N u kích thư c không gian đ a ch là 2m, và kích thư c trang là 2n đơn v đ a ch (byte hay t ) thì
m-n bits cao c a đ a ch lu n lý ch s trang, n bits th p ch đ d i trang. Do đó, đ a ch lu n lý như sau:
S trang Đ d i trang
P D
m –n N
Table 3
đây p là ch m c trong b ng trang và d là đ d i trong trang.
http://cnx.org/content/m29912/1.1/
16. Connexions module: m29912 16
Figure 8
Hình VII[U+2011]12 Mô hình phân trang c a b nh lu n lý và v t lý
Thí d : xét b nh trong hình VII-14. S d ng kích thư c trang 4 bytes và b nh v t lý 32 bytes (có
8 trang), chúng ta hi n th cách nhìn b nh c a ngư i dùng có th đư c ánh x t i b nh v t lý như th
nào. Đ a ch lu n lý 0 là trang 0, đ d i 0. Ch m c trong b ng trang, chúng ta th y r ng trang 0 trong
khung 5. Do đó, đ a ch lu n lý 0 ánh x t i đ a ch v t lý 20 (=(5x4)+0). Đ a ch lu n lý 3 (trang 0, đ d i
3) ánh x t i đ a ch v t lý 23 (=(5x4)+3). Đ a ch lu n lý 4 trang 1, đ d i 0; d a theo b ng trang, trang
1 đư c ánh x t i khung 6. Do đó, đ a ch lu n lý 4 ánh x t i đ a ch 24(=(6x4)+0). Đ a ch lu n lý 13 ánh
x t i đ a ch v t lý 9.
Có th chú ý r ng phân trang là m t d ng c a tái đ nh v đ ng. M i đ a ch lu n lý đư c gi i h n b i
ph n c ng phân trang t i đ a ch v t lý. S d ng phân trang tương t s d ng m t b ng các thanh ghi n n
(hay tái đ nh v ), m t thanh ghi cho m i khung b nh .
Khi chúng ta s d ng m t cơ ch phân trang, chúng ta không có phân mãnh bên ngoài: b t kỳ khung
tr ng có th đư c c p phát t i m t quá trình c n nó. Tuy nhiên, chúng ta có th có phân mãnh trong. Chú
ý r ng các khung đư c c p phát như các đơn v . N u các yêu c u b nh c a m t quá trình không x y ra
đ rơi trên gi i h n c a trang, thì khung cu i cùng đư c c p phát có th không đ y hoàn toàn. Thí d , n u
các trang là 2048 bytes, m t quá trình 72,766 bytes s c n 35 trang c ng v i 1086 bytes. Nó đư c c p phát
36 khung, do đó phân mãnh trong là 2048 - 1086 = 962 bytes. Trong trư ng h p x u nh t, m t quá trình
c n n trang c ng v i 1 byte. Nó s đư c c p phát n+1 khung, d n đ n phân mãnh trong g n như toàn b
khung.
N u kích thư c quá trình đ c l p v i kích thư c c a trang, thì chúng ta mong mu n phân mãnh trong
http://cnx.org/content/m29912/1.1/
17. Connexions module: m29912 17
trung bình là ½ trang trên m t quá trình. Xem xét này đ ngh r ng kích thư c trang nh là mong mu n.
Tuy nhiên, chi phí liên quan t i m i m c t b ng trang và chi phí này gi m khi kích thư c trang tăng. Vì
th nh p/xu t đĩa là hi u qu hơn khi s lư ng d li u đư c truy n l n hơn. Thư ng thì kích thư c trang
l n lên theo th i gian khi các quá trình, t p h p d li u, b nh chính tr nên l n hơn. Ngày nay, các trang
đi n hình n m trong kho ng 4 KB t i 8 KB, và m t s h th ng h tr kích thư c trang l n hơn. CPU và
nhân th m chí h tr nhi u kích thư c khác nhau. Thí d , Solaris dùng 8 KB và 4 MB kích thư c trang,
ph thu c d li u đư c lưu b i trang. Hi n nay, các nhà nghiên c u đang phát tri n vi c h tr kích thư c
trang khác nhau.
M i m c t b ng trang thư ng dài 4 bytes, nhưng kích thư c có th thay đ i. M t m c t 32-bit có th
ch t i m t khung trang v t lý 232. N u m t khung là 4 KB, thì h th ng v i nh ng m c t 4 bytes có th
đánh đ a ch cho 244 bytes (hay 16 TB) b nh v t lý.
Khi m t quá trình đi vào h th ng đ đư c th c thi, kích thư c c a nó, đư c di n t trong các trang,
đư c xem xét. M i trang c a quá trình c n trên m t khung. Do đó, n u quá trình yêu c u n trang, ít nh t
n khung ph i s n dùng trong b nh . N u n khung là s n dùng, chúng đư c c p phát t i quá trình đang đi
vào này. Trang đ u tiên c a quá trình đư c n p vào m t trong nh ng khung đư c c p phát, và s khung
đư c đ t vào trong b ng trang cho quá trình này. Trang k ti p đư c n p vào m t khung khác, và s khung
c a nó đư c đ t vào trong b ng trang, . . .(hình VII-15).
http://cnx.org/content/m29912/1.1/
18. Connexions module: m29912 18
Figure 9
Hình VII[U+2011]13 Thí d phân trang cho b nh 32 bytes v i các trang có kích th c 4 bytes
M t khía c nh quan tr ng c a phân trang là s phân chia rõ ràng gi a t m nhìn b nh c a ngư i dùng
và b nh v t lý th t s . Chương trình ngư i dùng nhìn b nh như m t không gian liên t c, ch a ch m t
chương trình. S th t, chương trình ngư i dùng đư c phân b kh p b nh v t lý mà nó cũng qu n lý các
quá trình khác. S khác nhau gi a t m nhìn b nh c a ngư i dùng và b nh v t lý th t s đư c làm cho
tương thích b i ph n c ng d ch đ a ch . Đ a ch lu n lý đư c d ch thành đ a ch v t lý. Ánh x này đư c che
gi u t ngư i dùng và đư c đi u khi n b i h đi u hành. Chú ý r ng như đ nh nghĩa, quá trình ngư i dùng
không th truy xu t b nh mà nó không s h u. Không có cách đ nh đ a ch b nh bên ngoài b ng trang
c a nó và b ng ch a ch nh ng trang mà quá trình s h u.
Vì h đi u hành đang qu n lý b nh v t lý nên nó ph i hi u nh ng chi ti t c p phát b nh v t lý;
khung nào đư c c p phát, khung nào còn tr ng, t ng khung hi n có là bao nhiêu,. . .Thông tin này đư c gi
trong m t c u trúc d li u đư c g i là b ng khung. B ng khung ch có m t m c t cho m i khung trang
v t lý, hi n th khung trang đó đang r nh hay đư c c p phát. N u khung trang đư c c p phát, thì xác đ nh
http://cnx.org/content/m29912/1.1/
19. Connexions module: m29912 19
trang nào c a quá trình nào đư c c p.
Figure 10
Hình VII[U+2011]14 các khung tr ng. (a) trư c khi c p phát. (b) sau khi c p phát
Ngoài ra, h đi u hành ph i bi t r ng quá trình ngư i dùng ho t đ ng trong không gian ngư i dùng, và
t t c đ a ch lu n lý ph i đư c ánh x đ phát sinh đ a ch v t lý. N u ngư i dùng th c hi n l i g i h th ng
(thí d : đ th c hi n nh p/xu t) và cung c p đ a ch như m t tham s (thí d : vùng đ m), đ a ch đó ph i
đư c ánh x đ sinh ra đ a ch v t lý đúng. H đi u hành duy trì m t b n sao c a b ng trang cho m i quá
trình, như nó duy trì b n sao c a b đ m ch th l nh và n i dung thanh ghi. B n sao này đư c dùng đ
d ch đ a ch lu n lý thành đ a ch v t lý b t c khi nào h đi u hành ph i ánh x đ a ch lu n lý t i đ a ch
v t lý d ng th công. Nó cũng đư c dùng b i b phân phát CPU đ đ a ch b ng trang ph n c ng khi m t
quá trình đư c c p phát CPU. Do đó, trang gia tăng th i gian chuy n đ i ng c nh.
H tr ph n c ng
M i h đi u hành có phương pháp riêng đ lưu tr các b ng trang. H u h t đ u c p phát m t b ng trang
cho m i quá trình. M t con tr ch t i m t b ng trang đư c lưu tr v i nh ng giá tr thanh ghi thanh ghi
khác nhau (gi ng như b đ m ch th l nh) trong kh i đi u khi n quá trình. Khi b phân phát đư c yêu c u
b t đ u m t quá trình, nó ph i n p l i các thanh ghi ngư i dùng và đ nh nghĩa các giá tr b ng trang ph n
c ng phù h p t b ng trang ngư i dùng đư c lưu tr .
Cài đ t ph n c ng c a b ng trang có th đư c th c hi n trong nhi u cách. Cách đơn gi n nh t, b ng
trang đư c cài đ t như t p h p các thanh ghi t n hi n. Các thanh ghi này nên đư c xây d ng v i tính logic
http://cnx.org/content/m29912/1.1/
20. Connexions module: m29912 20
t c đ r t cao đ th c hi n vi c d ch đ a ch trang hi u qu . M i truy xu t t i b nh ph i ki m tra k lư ng
b ng đ trang, vì v y tính hi u qu là v n đ xem xét ch y u. B phân phát CPU n p l i các thanh ghi
này ch khi nó n p l i các thanh ghi khác. Dĩ nhiên, các ch th đ n p hay hi u ch nh các thanh ghi b ng
trang ph i đư c c p quy n đ mà ch h đi u hành có th thay đ i b n đ b nh . DEC PDP-11 là m t thí
d v ki n trúc như th . Đ a ch ch a 16 bits, và kích thư c trang là 8 KB. Do đó, b ng trang ch a 8 m c
t mà chúng đư c gi trong các thanh ghi nhanh.
S d ng các thanh ghi cho b ng trang ch phù h p n u b ng trang có kích thư c nh (thí d : 256 m c
t ). Tuy nhiên, h u h t các máy tính tương th i cho phép b ng trang r t l n (thí d , 1 tri u m c t ). Đ i
v i nh ng máy này, vi c s d ng các thanh ghi nhanh đ cài đ t b ng trang là không kh thi. Hay đúng hơn
là, b ng trang đư c gi trong b nh chính, và thanh ghi n n b ng trang (page-table base register-PTBR)
ch t i thanh ghi b ng trang. Thay đ i các b ng trang yêu c u thay đ i ch m t thanh ghi, v căn b n c t
gi m th i gian chuy n ng c nh.
V n đ v i ti p c n này là th i gian đư c yêu c u đ truy xu t v trí b nh ngư i dùng. N u chúng ta
mu n truy xu t v trí i, đ u tiên chúng ta ph i xác đ nh ch m c trong b ng trang, s d ng giá tr trong đ
d i PTBR b i s trang cho i. Tác v này yêu c u m t truy xu t b nh . Nó cung c p chúng ta s khung
đư c n i k t v i đ d i trang đ sinh ra đ a ch th c. Sau đó, chúng ta có th truy xu t t i nơi đư c mong
mu n trong b nh . V i cơ ch này, hai truy xu t b nh đư c yêu c u đ truy xu t m t byte (m t cho m c
t b ng trang, m t cho byte đó). Do đó, truy xu t b nh b ch m b i m t trong hai y u t đó. S trì hoãn
này không th ch p nh n dư i h u h t trư ng h p vì th chúng ta ph i s d ng đ n hoán v !
Gi i pháp chu n cho v n đ này là dùng b lưu tr (cache) ph n c ng đ c bi t, nh , tìm ki m nhanh
đư c g i là translation look-aside buffer (TLB). TLB là b nh k t h p t c đ cao. M i m c t trong TLB
ch a hai ph n: m t khoá (key) và m t giá tr (value). Khi b nh k t h p đư c bi u di n v i m t thành
ph n, nó đư c so sánh v i t t c khoá cùng m t lúc. N u thành ph n đư c tìm th y, trư ng giá tr tương
ng đư c tr v . Tìm ki m nhanh nhưng ph n c ng đ t. Đi n hình, s lư ng m c t trong TLB nh , thư ng
t 64 đ n 1024.
TLB đư c dùng v i các b ng trang trong cách sau. TLB ch a ch m t vài m c t b ng trang. Khi m t
đ a ch lu n lý đư c phát sinh b i CPU, s trang c a nó đư c hi n di n trong TLB. N u s trang đư c tìm
th y, khung c a nó l p t c s n dùng và đư c dùng đ truy xu t b nh . Toàn b tác v có th m t ít hơn
10% th i gian n u dùng tham chi u b nh không đư c ánh x .
N u s trang không trong TLB (còn g i là m t TLB), tham chi u b nh t i b ng trang ph i đư c
th c hi n. Khi s khung đ t đư c, chúng ta có th dùng nó đ truy xu t b nh (như hình VII-16). Ngoài
ra, chúng ta thêm s trang và s khung t i TLB đ mà chúng có th đư c tìm th y nhanh trên tham chi u
ti p theo. N u m t TLB đã đ y các m c t , h đi u hành ph i ch n m t m c t đ thay th . Các chính sách
thay th r t đa d ng t ít đư c s d ng g n đây nh t (least recently used-LRU) t i ch n ng u nhiên. Ngoài
ra, m t s TLB cho phép các m c t đư c wired down. Nghĩa là, chúng không th đư c xoá kh i TLB. Đi n
hình, các m c t cho nhân thư ng đư c wired down.
M t s TLB lưu tr các đ nh danh không gian đ a ch (address-space identifers-ASID) trong m i m c t
c a TLB. M t ASID đ nh danh duy nh t m i quá trình và đư c dùng đ cung c p vi c b o v không gian
đ a ch cho quá trình đó. Khi TLB c g ng phân gi i các s trang o, nó đ m b o ASID cho m i quá trình
hi n đang ch y trùng kh p v i ASID đư c n i k t v i trang o. N u các ASID không kh p, chúng đư c xem
như m t TLB. Ngoài ra, đ cung c p vi c b o v không gian đ a ch , m t ASID cho phép TLB ch a các m c
t cho nhi u quá trình khác nhau cùng m t lúc. N u TLB không h tr các ASID riêng thì m i l n m t
b ng trang đư c ch n (thí d , m i chuy n ng c nh), m t TLB ph i đư c đ y (hay đư c xoá) đ đ m b o
r ng các quá trình đang th c thi ti p theo không s d ng thông tin d ch sai. Ngư c l i, có nh ng m c t cũ
trong TLB ch a các đ a ch o nhưng có các đ a ch không đúng hay không h p l đ l i t quá trình trư c.
http://cnx.org/content/m29912/1.1/
21. Connexions module: m29912 21
Figure 11
Hình VII[U+2011]15 ph n c ng phân trang v i TBL
Ph n trăm th i gian mà s trang xác đ nh đư c tìm th y trong TLB đư c g i là t l ch p (hit ratio).
T l ch p 80% có nghĩa là chúng ta tìm s trang mong mu n trong TLB 80% th i gian. N u m t 20 nano
giây đ tìm TLB và 100 nano giây đ truy xu t b nh , thì m t truy xu t b nh đư c ánh x m t 120
nano giây khi s trang trong TLB. N u chúng ta không tìm s trang trong TLB (20 nano giây) thì trư c
h t chúng ta ph i truy xu t b nh cho b ng trang và s khung (100 nano giây), thì sau đó truy xu t byte
mong mu n trong b nh (100 nano giây), t ng th i gian là 220 nano giây. Đ tìm th i gian truy xu t b
nh hi u qu , chúng ta ph i đo m i trư ng h p v i xác su t c a nó:
Th i gian truy xu t hi u qu = 0.80 x 120 + 0.2 x 220 = 140 nano giây
Trong thí d này, chúng ta g p ph i 40% ch m l i trong th i gian truy xu t b nh (t 100 t i 140 nano
giây).
Đ i v i m t t l ch m 98%, chúng ta có:
Th i gian truy xu t hi u qu = 0.98 x 120 + 0.02 x 220 = 122 nano giây
T l ch p đư c tăng này ch t o ra 22% ch m l i trong th i gian truy xu t.
S b ov
B o v b nh trong môi trư ng phân trang đư c th c hi n b i các bit b o v gán li n v i m i khung.
Thông thư ng, các bit này đư c gi trong b ng trang. M t bit có th đ nh nghĩa m t trang đ đ c-vi t hay
http://cnx.org/content/m29912/1.1/
22. Connexions module: m29912 22
ch đ c. M i tham chi u t i b nh s tìm kh p b ng trang đ xác đ nh s khung tương ng. T i cùng th i
đi m đ a ch v t lý đư c tính , các bit b o v có th đư c ki m tra đ th m đ nh r ng không có thao tác
vi t nào đang đư c th c hi n t i trang ch đ c. C g ng vi t t i m t trang ch đ c gây ra m t trap ph n
c ng t i h đi u hành (hay xung đ t b nh b o v ).
Chúng ta có th d dàng m r ng ti p c n này đ cung c p m t c p đ b o v chi ti t hơn. Chúng ta có
th t o ph n c ng đ cung c p b o v ch đ c, đ c vi t, ch th c thi. Hay b ng cách cung c p các bit b o
v riêng cho m i lo i truy xu t, chúng ta có th cho phép b t c k t h p c a các truy xu t này; các c g ng
không h p l s đư c trap t i h đi u hành.
M t bit n a thư ng đư c gán t i m i m c t trong b ng trang: m t bit h p l -không h p l . Khi bit này
đư c đ t là “h p l ” thì giá tr này hi n th r ng trang đư c gán trong không gian đ a ch lu n lý b nh là
trang h p l . N u bit này đư c đ t là “không h p l ”, giá tr này hi n th trang đó không trong không gian
đ a ch lu n lý c a quá trình. Các đ a ch không h p l đư c trap b ng cách s d ng bit h p l -không h p
l . H đi u hành thi t l p bit này cho m i trang đ cho phép hay không cho phép truy xu t t i trang này.
Thí d , trong m t h th ng v i không gian đ a ch 14 bit (0 t i 16383), chúng ta có th có m t chương trình
s d ng ch đ a ch 0 t i 10468. Cho kích thư c trang 2KB, chúng ta xem trư ng h p trong hình VII-17. Đ a
ch trong các trang 0, 1, 2, 3, 4, và 5 thư ng đư c ánh x kh p b ng trang. Tuy nhiên, b t c nh ng n l c
đ t o ra m t đ a ch trong trang 6 hay 7 nh n th y r ng bit h p l -không h p l đư c đ t là không h p l
và máy tính s trap t i h đi u hành (tham chi u trang không h p l ).
Vì chương trình m r ng ch t i đ a ch 10468, b t c tham chi u vư t ra ngoài đ a ch đó là không h p
l . Tuy nhiên, các tham chi u t i trang 5 đư c xem là h p l vì th nh ng đ a ch t i 12287 là h p l . Ch
nh ng đ a ch t 12288 t i 16383 là không h p l . V n đ này là do kích thư c trang 2KB và ph n ánh phân
mãnh trong c a vi c phân trang.
R t hi m khi m t quá trình dùng t t c dãy đ a ch c a nó. Th t v y, nhi u quá trình dùng ch m t
ph n nh không gian đ a ch còn tr ng cho chúng. Nó s lãng phí r t nhi u trong nh ng trư ng h p này đ
t o m t b ng trang v i các m c t cho m i trang trong dãy đ a ch . H u h t b ng này s không đư c dùng
nhưng s mang đ n không gian b nh có giá tr . M t s h th ng cung c p ph n c ng, trong d ng m t
thanh ghi có chi u dài b ng trang (page-table length register-PTLR) đ hi n th kích thư c c a b ng trang.
Giá tr này đư c ki m tra d a trên m i đ a ch lu n lý đ th m đ nh đ a ch đó n m trong dãy đ a ch h p
l cho quá trình. L i c a vi c ki m tra này gây ra m t trap l i t i h đi u hành.
http://cnx.org/content/m29912/1.1/
23. Connexions module: m29912 23
Figure 12
Hình VII[U+2011]16 Bit h p l (v) và không h p l (i) trong m t b ng trang
C u trúc b ng trang
Trong ph n này chúng ta s xem xét m t s k thu t thông d ng nh t đ xây d ng c u trúc b ng trang.
5.1.1 B ng trang phân c p
H u h t các h th ng máy tính hi n đ i h tr m t không gian đ a ch lu n lý l n (232 t i 264). Trong môi
trư ng như th , b ng trang tr nên quá l n. Thí d , xét m t h th ng v i không gian đ a ch lu n lý 32 bit.
N u kích thư c trang 4KB thì b ng trang có th ch a t i 1 tri u m c t (232/212). Gi s r ng m i m c
t ch a 4 bytes, m i quá trình có th c n t i 4MB không gian đ a ch v t lý cho m t b ng trang. Rõ ràng,
chúng ta s không mu n c p phát b ng trang liên ti p nhau. M t gi i pháp đơn gi n cho v n đ này là chia
b ng trang thành nh ng ph n nh hơn. Có nhi u cách đ đ t đư c s phân chia này.
M t cách là dùng gi i thu t phân trang hai c p, trong đó b ng trang cũng đư c phân trang như hình
VII-18.
Đây là thí d cho máy 32 bit v i kích thư c trang 4KB. Đ a ch lu n lý đư c chia thành s trang ch a
20 bit và đ d i trang ch a 12 bit. Vì chúng ta phân trang b ng trang, s trang đư c chia thành s trang
10 bit và đ d i trang 10-bit. Do đó, m t đ a ch lu n lý như sau:
http://cnx.org/content/m29912/1.1/
24. Connexions module: m29912 24
S trang Đ d i trang
P1 P2 d
10 10 12
Table 4
Hình VII[U+2011]17 Cơ ch b ng trang hai c p
đây p1 là ch m c trong b ng trang bên ngoài và p2 là đ d i trong trang c a b ng trang bên ngoài.
Phương pháp d ch đ a ch cho ki n trúc này đư c hi n th trong hình VII-19. Vì d ch đ a ch th c hi n t
nh ng ph n trong b ng trang bên ngoài, cơ ch này cũng đư c g i là b ng trang đư c ánh x chuy n ti p
(forward-mapped page table). Petium-II s d ng ki n trúc này.
Ki n trúc VAX cũng h tr m t bi n d ng c a phân trang hai c p. VAX là máy 32-bit v i kích thư c
trang 512 bytes. Không gian đ a ch lu n lý c a m t quá trình đư c chia làm 4 ph n b ng nhau, m i ph n
ch a 230 bytes. M i ph n bi u di n m t ph n khác nhau c a không gian đ a ch lu n lý c a m t quá trình.
Hai bit cao đ u tiên c a đ a ch lu n lý ch rõ ph n tương ng. 21 bits ti p theo bi u di n s trang lu n lý
c a ph n đó, và 9 bits cu i bi u di n đ d i trong trang mong mu n. B ng cách chia b ng trang như th ,
h đi u hành có th đ nh ng phân khu không đư c dùng cho t i khi m t quá trình yêu c u chúng. M t đ a
ch trên ki n trúc VAX như sau:
http://cnx.org/content/m29912/1.1/
25. Connexions module: m29912 25
Ph n Trang Đ d i
S P D
2 21 9
Table 5
đây s ch rõ s ph n, p là ch m c trong b ng trang và d là đ d i trong trang.
Kích thư c c a b ng trang c p m t cho m t quá trình VAX dùng m t ph n v n là 221 bits * 4 bytes/trang
= 8 MB. Đ vi c s d ng b nh chính b gi m nhi u hơn, VAX phân trang các b ng trang quá trình ngư i
dùng.
Đ i v i các h th ng có không gian đ a ch lu n lý 64 bits, cơ ch phân trang hai c p không còn phù
h p n a. Đ th hi n đi m này, chúng ta gi s r ng kích thư c trang trong h th ng là 4 KB (212). Trong
trư ng h p này, b ng trang s ch a t i 252 m c t . N u chúng ta dùng cơ ch phân trang hai c p thì các
b ng bên trong có th là m t trang dài ch a 210 m c t . Các đ a ch s như th này:
Figure 13
Hình VII[U+2011]18 D ch đ a ch cho ki n trúc phân trang hai c p 32-bit
Trang bên ngoài Trang bên trong Đ d i
P1 P2 D
42 10 12
Table 6
B ng trang bên ngoài s ch a 242 m c t , hay 244 bytes. Các phương pháp đư c chú tr ng đ tránh đ
trang l n là chia b ng trang bên ngoài thành nh ng ph n nh hơn. Ti p c n này cũng đư c dùng trên m t
vài b x lý 32-bit đ thêm kh năng m m d o và hi u qu .
Chúng ta có th chia b ng trang bên ngoài thành cơ ch phân trang 3 c p. Gi s r ng b ng trang bên
ngoài đư c t o ra t các trang có kích thư c chu n (210 m c t , hay 212 bytes); m t không gian đ a ch 64
bit v n có kích thư c r t l n:
http://cnx.org/content/m29912/1.1/
26. Connexions module: m29912 26
Trang bên ngoài c p 2 Trang bên ngoài Trang bên trong Đ d i
P1 P2 P3 D
32 10 10 12
Table 7
B ng trang bên ngoài v n l n 232.
Bư c ti p theo s là cơ ch phân trang c p b n, đây b ng trang bên ngoài c p hai cũng đư c phân
trang. Ki n trúc SPARC (v i 32-bit đánh đ a ch ) h tr cơ ch phân trang c p ba, trái l i ki n trúc Motorola
68030 32-bit h tr cơ ch phân trang b n c p.
Tuy nhiên, đ i v i ki n trúc 64-bit, các b ng trang phân c p thư ng đư c xem xét là không phù h p.
Thí d , UltraSPARC 64-bit s yêu c u phân trang b y c p – m t s truy xu t b nh không đư c phép đ
d ch m i đ a ch lu n lý.
5.1.2 B ng trang đư c băm
M t ti p c n thông thư ng cho vi c qu n lý không gian đ a ch l n hơn 32-bit là dùng b ng trang đư c băm
(hashed page table), v i giá tr băm là s trang o. M i m c t trong b ng trang ch a m t danh sách liên
k t c a các ph n t . Danh sách này băm t i cùng v trí (đ qu n lý đ ng đ ). M i ph n t ch a ba trư ng:
(a) s trang o, (b) giá tr khung trang đư c ánh x và con tr ch t i ph n t k ti p trong danh sách liên
k t.
Gi i thu t th c hi n như sau: s trang o trong đ a ch o đư c băm t i b ng băm. S trang o đư c
so sánh t i trư ng (a) trong ph n t đ u tiên c a danh sách liên k t. N u có ph n t trùng kh p, khung
trang tương ng (trư ng (b) đư c dùng đ hình thành đ a ch v t lý mong mu n). N u không có ph n t
nào trùng kh p, các m c t ti p theo trong danh sách liên k t đư c tìm ki m s trang o trùng kh p. Cơ
ch này đư c hi n th trong hình VII-20 dư i đây:
M t bi n th đ i v i cơ ch này cho không gian đ a ch 64-bit đư c đ ngh . B ng trang đư c nhóm
(Clustered page tables) tương t như b ng băm ngo i tr m i m c t trong b ng băm tham chi u t i nhi u
trang (ch ng h n như 16) hơn là m t trang. Do đó, m c t b ng trang đơn có th lưu nh ng ánh x cho
nhi u khung trang v t lý. B ng trang đư c nhóm đ c bi t có ích cho không gian đ a ch r i nhau (spare),
đó các tham chi u b nh là không liên t c và t p h p kh p không gian b nh .
http://cnx.org/content/m29912/1.1/
27. Connexions module: m29912 27
Hình VII[U+2011]19 B ng trang đư c băm
5.1.3 B ng trang đ o
Thông thư ng, m i quá trình có m t trang gán li n v i nó. B ng trang có m t m c t cho m i trang mà
quá trình đó đang s d ng (hay m t khe cho m i đ a ch o, không ph thu c tính h p l sau đó). Bi u
di n b ng trang này là bi u di n t nhiên vì tham chi u quá trình phân trang thông qua các đ a ch o c a
trang. Sau đó, h đi u hành ph i d ch tham chi u này vào m t đ a ch b nh v t lý. Vì b ng này đư c s p
x p b i đ a ch o, h đi u hành có th tính toán nơi trong b ng mà m c t đ a ch v t lý đư c n i k t t i
và s d ng giá tr đó tr c ti p. M t trong nh ng khó khăn c a phương pháp này là m i b ng trang có th
ch a hàng tri u m c t . Các b ng này có th tiêu t n lư ng l n b nh v t lý, đư c yêu c u ch đ gi v t
c a b nh v t lý khác đang đư c s d ng như th nào.
Đ gi i quy t v n đ này chúng ta có th s d ng m t b ng trang đ o (inverted page table). B ng trang
đ o có m t m c t cho m i trang th t (hay khung) c a b nh . M i m c t ch a đ a ch o c a trang đư c
lưu trong v trí b nh th t đó, v i thông tin v quá trình s h u trang đó. Do đó, ch m t b ng trang trong
h th ng và nó ch có m t m c t cho m i trang c a b nh v t lý. Hình VII-21 dư i đây hi n th ho t đ ng
c a b ng trang đ o.
So sánh nó v i hình VII-6, mô t ho t đ ng c a m t b ng trang chu n. Vì ch m t b ng trang trong h
th ng còn có nhi u không gian đ a ch khác ánh x b nh v t lý, nên các b ng trang đ o thư ng yêu c u
m t đ nh danh không gian đ a ch đư c lưu trong m i m c t c a b ng trang. Lưu tr đ nh danh không
gian đ a ch đ m b o r ng ánh x c a trang lu n lý cho m t quá trình xác đ nh t i khung trang v t lý tương
ng. Thí d , h th ng dùng b ng trang đ o g m UltraSPARC 64-bit và PowerPC.
http://cnx.org/content/m29912/1.1/
28. Connexions module: m29912 28
Figure 14
Hình VII[U+2011]20 B ng trang đ o
Đ hi n th phương pháp này, chúng ta mô t m t n b n đư c đơn gi n hoá cài đ t b ng trang đ o
dùng trong IBM RT. M i đ a ch o trong h th ng ch a b ba:
<process-id, page-number, offset>.
M i m c t b ng trang đ o là m t c p <process-id, page-number>, đây process-id đ m b o vai trò
đ nh danh không gian đ a ch . Khi m t tham chi u b nh x y ra, m t ph n c a đ a ch o, g m <process-id,
page-number>, đư c hi n di n trong h th ng b nh . Sau đó, b ng trang đ o đư c tìm ki m s trùng kh p.
N u s trùng kh p đư c tìm th y t i m c t i thì đ a ch v t lý <i, offset> đư c t o ra. N u không tìm th y
thì m t truy xu t đ a ch không h p l đư c c g ng th c hi n.
M c dù cơ ch này gi m lư ng b nh đư c yêu c u đ lưu m i b ng trang, nhưng nó gia tăng lư ng
th i gian c n cho vi c tìm ki m b ng khi có m t tham chi u x y ra. Vì b ng trang đ o đư c lưu b i đ a ch
v t lý nhưng tìm ki m x y ra trên đ a ch o, toàn b b ng trang có th c n đư c tìm ki m s trùng kh p.
S tìm ki m này có th m t th i gian quá dài. Đ làm gi m v n đ này, chúng ta s d ng m t b ng băm
đư c mô t trong hình dư i đây đ gi i h n vi c tìm ki m. Dĩ nhiên, m i truy xu t t i b ng băm thêm m t
tham chi u t i th t c, đ mà m t tham chi u b nh o yêu c u ít nh t hai thao tác đ c b nh th t: m t
cho m c t b ng băm và m t cho b ng trang. Đ c i ti n năng l c th c hi n, TLB đư c tìm ki m đ u tiên,
trư c khi b ng băm đư c tra c u.
Trang đư c chia s
http://cnx.org/content/m29912/1.1/
29. Connexions module: m29912 29
M t thu n l i khác c a phân trang là kh năng chia s mã chung. Vi c xem xét này đ c bi t quan tr ng
trong môi trư ng chia th i. Xét m t h th ng h tr 40 ngư i dùng, m i ngư i dùng th c thi m t trình so n
th o văn b n. N u trình so n th o văn b n ch a 150 KB mã và 50 KB d li u, chúng ta s c n 8000 KB đ
h tr 40 ngư i dùng. Tuy nhiên, n u mã là mã tái s d ng (reentrant code), nó có th đư c chia s như
đư c hi n th trong hình VII-22. đây chúng ta th y m t b so n th o ba trang-m i trang có kích thư c
50 KB; kích thư c trang l n đư c dùng đ đơn gi n hoá hình này-đang đư c chia s gi a ba quá trình. M i
quá trình có trang d li u riêng c a nó.
Mã tái s d ng (hay thu n mã-pure code) là mã không thay đ i b i chính nó. N u mã là tái s d ng thì
nó không bao gi thay đ i trong quá trình th c thi. Do đó, hai hay nhi u quá trình có th th c thi cùng mã
t i cùng th i đi m. M i quá trình có b n sao thanh ghi c a chính nó và lưu tr d li u đ qu n lý d li u
cho vi c th c thi c a quá trình. Dĩ nhiên, d li u cho hai quá trình khác nhau s khác nhau cho m i quá
trình.
Ch m t b n sao c a b so n th o c n đư c gi trong b nh v t lý. M i b ng trang c a ngư i dùng ánh
x t i cùng b n sao v t lý c a b so n th o nhưng các trang d li u đư c ánh x t i các khung khác nhau.
Do đó, đ h tr 40 ngư i dùng, chúng ta c n ch m t b n sao c a b so n th o (150 KB) c ng v i 40 b n
sao c a 50 KB không gian d li u trên m t ngư i dùng. Bây gi toàn b không gian đư c yêu c u là 2150
KB thay vì 8000 KB-m t ti t ki m l n.
Nh ng chương trình đư c dùng nhi u khác cũng có th đư c chia s - trình biên d ch, h th ng c a s ,
thư vi n th i đi m th c thi, h cơ s d li u,. . .Đ có th chia s , mã ph i đư c tái s d ng. Tính t nhiên
ch đ c c a mã đư c chia s s không đư c phó m c cho tính đúng đ n c a mã; h đi u hành nên tuân theo
thu c tính này. Chia s b nh gi a các quá trình trên h đi u hành tương t chia s không gian đ a ch c a
m t tác v b i lu ng. Ngoài ra, b nh đư c chia s như m t phương pháp giao ti p liên quá trình. M t s
h đi u hành cài đ t b nh đư c chia s dùng các trang đư c chia s .
H đi u hành dùng b ng trang bên trong g p khó khăn khi cài đ t b nh đư c chia s . B nh đư c
chia s thư ng đư c cài đ t như nhi u đ a ch o (m t đ a ch cho m i quá trình chia s b nh ) mà chúng
đư c ánh x t i m t đ a ch v t lý. Tuy nhiên, phương pháp chu n này không th đư c dùng khi có ch m t
m c t trang o cho m i trang v t lý vì th m t trang v t lý không th có hai (hay nhi u) đ a ch o đư c
chia s .
T ch c b nh d a theo trang cung c p nhi u l i đi m khác đ cho phép nhi u quá trình chia s cùng
trang v t lý.
http://cnx.org/content/m29912/1.1/
30. Connexions module: m29912 30
Figure 15
Hình VII[U+2011]21 chia s mã trong môi trư ng phân trang
5.2 Phân đo n
M t khía c nh quan tr ng c a vi c qu n lý b nh mà tr nên không th tránh v i phân trang là ngăn cách
t m nhìn b nh c a ngư i dùng và b nh v t lý th t s . T m nhìn b nh c a ngư i dùng không gi ng
như b nh v t lý. T m nhìn ngư i dùng đư c ánh x vào b nh v t lý. Vi c ánh x cho phép s khác nhau
gi a b nh lu n lý và b nh v t lý.
Phương pháp cơ b n
Ngư i dùng nghĩ b nh như m ng tuy n tính các byte, m t s byte ch a ch th l nh, m t s khác ch a
d li u hay không? H u h t m i ngư i nói không. Đúng hơn là, ngư i dùng thích nhìn b nh như t p h p
các phân đo n có kích thư c thay đ i, và không c n x p th t gi a các phân đo n (như hình VII-23).
Chúng ta nghĩ như th nào v m t chương trình khi chúng ta đang vi t nó? Chúng ta nghĩ nó như m t
chương trình chính v i m t t p h p các chương trình con, th t c, hàm, hay các module. Có th có các c u
trúc d li u khác nhau: b ng, m ng, ngăn x p, bi n,..M i module hay thành ph n d li u này đư c tham
chi u b i tên. Chúng ta nói “b ng danh bi u”, “hàm sqrt”, “chương trình chính” không quan tâm đ n đ a ch
trong b nh mà nh ng ph n t này chi m. Chúng ta không quan tâm b ng danh bi u đư c lưu tr trư c
hay sau hàm sqrt. M i phân đo n này có chi u dài thay đ i; th c ch t chi u dài đư c đ nh nghĩa b i m c
http://cnx.org/content/m29912/1.1/
31. Connexions module: m29912 31
đích c a phân đo n trong chương trình. Các ph n t trong m t phân đo n đư c đ nh nghĩa b i đ d i c a
chúng t đi m b t đ u c a phân đo n: l nh đ u tiên c a chương trình, m c t th mư i b y trong b ng
danh bi u, ch th th năm c a hàm sqrt,. . .
Figure 16
Hình VII[U+2011]22 T m nhìn chương trình c a ngư i dùng
Phân đo n là m t cơ ch qu n lý b nh h tr t m nhìn b nh c a ngư i dùng. Không gian đ a ch
lu n lý là t p h p các phân đo n. M i phân đo n có tên và chi u dài. Các đ a ch xác đ nh tên phân đo n
và đ d i trong phân đo n. Do đó, ngư i dùng xác đ nh m i đ a ch b ng hai lư ng: tên phân đo n và đ
d i. (tương ph n cơ ch này v i cơ ch phân trang, trong đó ngư i dùng ch xác đ nh m t đ a ch đơn, đư c
chia b i ph n c ng thành s trang và đ d i, t t c không th nhìn th y đ i v i ngư i l p trình).
Đ đơn gi n vi c cài đ t, các phân đo n đư c đánh s và đư c tham chi u t i b i s phân đo n, hơn là
b i tên phân đo n. Do đó, đ a ch lu n lý ch a m t b hai:
<s phân đo n, đ d i>
Thông thư ng, chương trình ngư i dùng đư c biên d ch, và trình biên d ch t đ ng t o ra các phân đo n
ph n ánh chương trình nh p. M t chương trình Pascal có th t o các phân đo n riêng như sau:
1. Các bi n toàn c c;
2. Ngăn x p g i th t c, đ lưu tr các tham s và tr v các đ a ch ;
3. Ph n mã c a m i th t c hay hàm;
4. Các bi n c c b c a m i th t c và hàm
M t trình biên d ch có th t o m t phân đo n riêng cho m i kh i chung. Các m ng có th đư c gán các
phân đo n riêng. B n p có th mang t t c phân đo n này và gán chúng s phân đo n.
Ph n c ng
http://cnx.org/content/m29912/1.1/
32. Connexions module: m29912 32
M c dù ngư i dùng có th tham chi u t i các đ i tư ng trong chương trình b i m t đ a ch hai chi u,
b nh v t lý là chu i m t chi u các byte. Do đó, chúng ta ph i xác đ nh vi c cài đ t đ ánh x đ a ch hai
chi u đư c đ nh nghĩa b i ngư i dùng vào đ a ch v t lý m t chi u. Ánh x này đư c tác đ ng b i m t b ng
phân đo n. M i m c t c a b ng phân đo n có m t n n phân đo n (segment base) và gi i h n phân đo n
(segment limit). N n phân đo n ch a đ a ch v t lý b t đ u, nơi phân đo n đ nh v trong b nh , ngư c l i
gi i h n phân đo n xác đ nh chi u dài c a phân đo n.
S d ng b ng phân đo n đư c hi n th như hình VII-24. M t đ a ch lu n lý có hai ph n: s phân đo n
s và đ d i phân đo n d. S phân đo n đư c dùng như ch m c trong b ng đo n. Đ d i d c a đ a ch lu n
lý ph i trong kho ng t 0 t i gi i h n đo n. N u không chúng ta s trap t i h đi u hành (đ a ch v t lý
vư t qua đi m cu i c a phân đo n). N u đ d i này là h p l thì nó đư c c ng thêm giá tr n n c a phân
đo n đ t o ra đ a ch trong b nh v t lý c a byte mong mu n. Do đó, b ng phân đo n là m t m ng c a
c p thanh ghi n n và gi i h n.
Figure 17
Hình VII[U+2011]23 Ph n c ng phân đo n
Xét trư ng h p như hình VII-25. Chúng ta có năm phân đo n đư c đánh s t 0 đ n 4. Các phân đo n
đư c lưu trong b nh v t lý như đư c hi n th . B ng phân đo n có m t m c t riêng cho m i phân đo n,
cho đ a ch b t đ u c a phân đo n trong b nh v t lý (hay n n) và chi u dài c a phân đo n đó (hay gi i
h n). Thí d , phân đo n 2 dài 400 bytes và b t đ u t i v trí 4300. Do đó, m t tham chi u byte 53 c a phân
đo n 2 đư c ánh x t i v trí 4300 + 53 = 4353. M t tham chi u t i phân đo n 3, byte 852, đư c ánh x
t i 3200 (giá tr n n c a phân đo n 3) +852=4052. M t tham chi u t i byte 1222 c a phân đo n 0 d n đ n
m t trap t i h đi u hành, khi phân đo n này ch dài 1000 bytes.
http://cnx.org/content/m29912/1.1/
33. Connexions module: m29912 33
Figure 18
Hình VII[U+2011]24 Thí d v phân đo n
B o v và chia s
L i đi m đ c bi t c a phân đo n là s g n li n b o v v i các phân đo n. Vì các phân đo n bi u di n
m t ph n đư c đ nh nghĩa c a chương trình, tương t như t t c m c t trong phân đo n s đư c dùng
cùng m t cách. Do đó, m t s phân đo n là ch th , trong khi m t s phân đo n khác là d li u. Trong m t
ki n trúc hi n đ i, các ch th không hi u ch nh chính nó vì th các phân đo n ch th có th đư c đ nh nghĩa
như ch đ c hay ch th c thi. Ph n c ng ánh x b nh s ki m tra các bits b o v đư c g n v i m i m c
t trong b ng phân đo n đ ngăn ch n các truy xu t không h p l t i b nh , như c g ng vi t t i phân
đo n ch đ c hay s d ng nh ng phân đo n ch đ c như d li u. B ng cách thay th m t m ng trong phân
đo n c a chính nó, ph n c ng qu n lý b nh s t đ ng ki m tra các ch s c a m ng là h p l và không
vư t ra ngoài gi i h n c a m ng. Do đó, nhi u l i chương trình s đư c phát hi n b i ph n c ng trư c khi
chúng có th gây ra tác h i l n.
M t l i đi m khác liên quan đ n chia s mã hay d li u. M i quá trình có m t b ng phân đo n g n v i
nó. B phân phát dùng b ng phân đo n này đ đ nh nghĩa phân đo n ph n c ng khi m t quá trình đư c
c p CPU. Các phân đo n đư c chia s khi các m c t trong b ng phân đo n c a hai quá trình khác nhau
ch t i cùng m t v trí v t lý (như hình VII-26).
http://cnx.org/content/m29912/1.1/
34. Connexions module: m29912 34
Figure 19
Hình VII[U+2011]25 Chia s các phân đo n trong m t h th ng b nh đư c phân đo n
Chia s x y ra t i c p phân đo n. Do đó, b t c thông tin có th đư c chia s n u nó đư c đ nh nghĩa
là m t phân đo n. M t s phân đo n có th đư c chia s vì th m t chương trình đư c hình thành t nhi u
phân đo n có th đư c chia s .
Thí d , xét vi c s d ng m t trình so n th o văn b n trong h th ng chia th i. Trình so n th o hoàn
ch nh có th r t l n, đư c hình thành t nhi u phân đo n có th đư c chia s gi a t t c ngư i dùng, gi i
h n đ a ch v t lý đư c yêu c u h tr các tác v so n th o. Thay vì n b n sao c a trình so n th o, chúng
ta ch c n m t b n sao. Đ i v i m i ngư i dùng, chúng ta v n c n các phân đo n riêng, duy nh t đ lưu các
bi n c c b . Dĩ nhiên, các phân đo n này s không đư c chia s .
Chúng ta cũng có th chia s m t s ph n chương trình. Thí d , các gói chương trình con dùng chung
có th đư c chia s gi a nhi u ngư i dùng n u chúng đư c đ nh nghĩa như các phân đo n chia s , ch đ c.
Thí d , hai chương trình Fortran có th dùng cùng hàm Sqrt, nhưng ch m t b n sao v t lý c a hàm Sqrt
đư c yêu c u.
M c dù vi c chia s này có v đơn gi n, nhưng có nh ng xem xét tinh t . Đi n hình, phân đo n mã ch a
http://cnx.org/content/m29912/1.1/
35. Connexions module: m29912 35
các tham chi u t i chính nó. Thí d , m t l nh nh y (jump) có đi u ki n thư ng có m t đ a ch chuy n g m
s phân đo n và đ d i. S phân đo n c a đ a ch chuy n s là s phân đo n c a phân đo n mã. N u chúng
ta c g ng chia s phân đo n này, t t c quá trình chia s ph i đ nh nghĩa phân đo n mã đư c chia s đ có
cùng s phân đo n.
Thí d , n u chúng ta mu n chia s hàm Sqrt và m t quá trình mu n th c hi n nó phân đo n 4 và m t
quá trình khác mu n th c hi n nó phân đo n 17, hàm Sqrt nên tham chi u t i chính nó như th nào? Vì
ch có m t b n sao v t lý c a Sqrt, nó ph i đư c tham chi u t i chính nó trong cùng cách cho c hai ngư i
dùng-nó ph i có m t s phân đo n duy nh t. Khi s ngư i dùng chia s tăng do đó khó khăn trong vi c tìm
s phân đo n có th ch p nh n cũng tăng.
Các phân đo n ch đ c không ch a con tr v t lý có th đư c chia s như s phân đo n khác nhau, như
các phân đo n mã tham chi u chính nó không tr c ti p. Thí d , các nhánh đi u ki n xác đ nh đ a ch nhánh
như m t đ d i t b đ m chương trình hi n hành hay quan h t i thanh ghi ch a s phân đo n hi n hành
nên cho phép mã tránh tham chi u tr c ti p t i s phân đo n hi n hành.
S phân mãnh
B đ nh th i bi u dài ph i tìm và c p phát b nh cho t t c các phân đo n c a chương trình ngư i
dùng. Trư ng h p này tương t như phân trang ngo i tr các phân đo n có chi u dài thay đ i; các trang
có cùng kích thư c. Do đó, v i cơ ch phân khu có kích thư c thay đ i, c p phát b nh là m t v n đ c p
phát lưu tr đ ng, thư ng gi i quy t v i gi i thu t best-fit hay first-fit.
Phân đo n có th gây ra s phân mãnh, khi t t c kh i b nh tr ng là quá nh đ ch a m t phân đo n.
Trong trư ng h p này, quá trình có th ph i ch cho đ n khi nhi u b nh hơn (hay ít nh t m t l l n hơn)
tr nên s n dùng, hay cho t i khi vi c h p nh t các l nh đ t o m t l l n hơn. Vì s phân đo n dùng gi i
thu t tái đ nh v đ ng nên chúng ta có th gom b nh b t c khi nào chúng ta mu n. N u b đ nh th i
bi u CPU ph i ch m t quá trình vì v n đ c p phát b nh , nó có th (hay không th ) b qua hàng đ t
CPU đ tìm m t quá trình nh hơn, có đ ưu tiên th p hơn đ ch y.
Phân mãnh ngoài đ i v i cơ ch phân đo n là v n đ quan tr ng như th nào? Đ nh th i bi u theo thu t
ng dài v i s cô đ c s giúp gi i quy t v n đ phân mãnh ph i không? Câu tr l i ph thu c vào kích thư c
trung bình c a phân đo n. m c đ cao nh t, chúng ta có th đ nh nghĩa m i quá trình là m t phân đo n.
Ti p c n này c t gi m cơ ch phân khu có kích thư c thay đ i. c p đ khác, m i byte có th đư c đ t
trong chính phân đo n c a nó và đư c c p phát riêng. S p x p này xoá đi vi c phân mãnh bên ngoài; tuy
nhiên m i byte c n m t thanh ghi n n cho m i tái đ nh v c a nó, g p đôi b nh đư c dùng! Dĩ nhiên, bư c
lu n lý ti p theo-các phân đo n nh có kích thư c c đ nh-là phân trang. Thông thư ng, n u kích thư c
phân đo n trung bình là nh , phân mãnh ngoài cũng s nh . Vì cá nhân các phân đo n là nh hơn toàn b
quá trình nên chúng có v thích h p hơn đ đ t vào trong các kh i b nh s n dùng.
5.3 Phân đo n v i phân trang
C hai phân đo n và phân trang có nh ng l i đi m và như c đi m. Th t v y, hai b vi x lý ph bi n nh t
hi n nay là: dòng Motorola 68000 đư c thi t k d a trên cơ s không gian đ a ch ph ng, ngư c l i, h Intel
80x86 và Petium d a trên cơ s phân đo n. C hai là mô hình b nh h p nh t hư ng t i s k t h p c a
phân trang và phân đo n. Chúng ta có th k t h p hai phương pháp đ t n d ng l i đi m c a chúng. S k t
h p này đư c th hi n t t nh t b i k t trúc c a Intel 386.
n b n IBM OS/2 32-bit là m t h đi u hành ch y trên đ nh c a ki n trúc Intel 386 (hay cao hơn). Intel
386 s d ng phân đo n v i phân trang cho vi c qu n lý b nh . S t i đa các phân đo n trên quá trình là
16KB và m i phân đo n có th l n t i 4GB. Kích thư c trang là 4 KB. Chúng ta s không cho m t mô t
đ y đ v c u trúc qu n lý b nh c a Intel 386 trong giáo trình này. Thay vào đó, chúng ta s trình bày
các ý tư ng quan tr ng.
Không gian đ a ch lu n lý c a quá trình đư c chia thành hai phân khu. Phân khu th nh t ch a t i 8
KB các phân đo n dành riêng cho quá trình đó. Phân khu th hai ch a t i 8 KB các phân đo n đư c chia s
gi a t t c quá trình. Thông tin v phân khu th nh t đư c gi trong b ng mô t c c b (Local Descriptor
Table-LDT), thông tin v phân khu th hai đư c gi trong b ng mô t toàn c c (Global Descriptor Table-
GDL). M i m c t trong LDT và GDT ch a 8 bytes, v i thông tin chi ti t v phân đo n xác đ nh g m v
http://cnx.org/content/m29912/1.1/
36. Connexions module: m29912 36
trí n n và chi u dài c a phân đo n đó.
Đ a ch lu n lý là m t c p (b ch n, đ d i), đây b ch n là m t s 16-bit
S G P
13 1 2
Table 8
Trong đó: s gán t i s phân đo n, g hi n th phân đo n trong GDT hay LDT, và p gi i quy t v n đ
b o v . Đ d i là m t s 32-bit xác đ nh v trí c a byte (hay t ) trong phân đo n.
Máy này có 6 thanh ghi, cho phép 6 phân đo n đư c xác đ nh t i b t c th i đi m nào b i m t quá
trình. Nó có 6 thanh ghi vi chương trình 8-byte đ qu n lý b mô t tương ng t LDT hay GDT. B lưu
tr này đ Intel 386 tránh ph i đ c b mô t t b nh cho m i l n tham chi u b nh .
Đ a ch v t lý trên 386 dài 32 bits và đư c hình thành như sau. Thanh ghi đo n ch t i m c t tương ng
trong LDT hay GDT. Thông tin n n và gi i h n v phân đo n đư c dùng đ phát sinh m t đ a ch tuy n
tính. Đ u tiên, gi i h n đư c dùng đ ki m tra tính h p l c a đ a ch . N u đ a ch không h p l , l i b nh
đư c t o ra, d n đ n m t trap t i h đi u hành. N u nó là h p l , thì giá tr c a đ d i đư c c ng vào giá
tr c a n n, d n đ n đ a ch tuy n tính 32-bit. Sau đó, đ a ch này đư c d ch thành đ a ch v t lý.
Như đư c nêu trư c đó, m i phân đo n đư c phân trang và m i trang có kích thư c 4 KB. Do đó, b ng
trang có th ch a t i 1 tri u m c t . Vì m i m c t ch a 4 bytes nên m i quá trình có th c n 4 MB không
gian đ a ch v t lý cho m t b ng trang. Rõ ràng, chúng ta không mu n c p phát b ng trang liên t c trong
b nh . Gi i pháp này đư c thông qua trong Intel 386 đ dùng cơ ch phân trang 2 c p. Đ a ch tuy n tính
đư c chia thành s trang ch a 20 bits, và đ d i trang ch a 12 bits. Vì chúng ta phân trang b ng trang, s
trang đư c chia nh thành con tr thư m c trang 10-bit và con tr b ng trang 10-bit. Đ a ch lu n lý như
sau:
P1 P2 D
10 10 12
Table 9
Cơ ch d ch đ a ch cho ki n trúc này tương t như cơ ch đư c hi n th trong hình VII-18. D ch đ a ch
Intel đư c hi n th chi ti t hơn trong hình VII-27dư i đây.
http://cnx.org/content/m29912/1.1/
37. Connexions module: m29912 37
Figure 20
Hình VII[U+2011]26 D ch đ a ch Intel 386
Đ c i ti n tính hi u qu c a vi c s d ng b nh v t lý, b ng trang Intel 386 có th đư c hoán v t i
đĩa. Trong trư ng h p này, m i bit đư c dùng trong m c t thư m c trang đ hi n th b ng mà m c t
đang ch t i trong b nh hay trên đĩa. N u b ng trên đĩa, h đi u hành có th dùng 31 bit còn l i đ
xác đ nh v trí đĩa c a b ng; sau đó b ng có th đư c mang vào b nh theo yêu c u.
6 Tóm t t
Các gi i thu t qu n lý b nh cho h đi u hành đa chương tr i dài t ti p c n h th ng ngư i dùng đơn t i
phân đo n đư c phân trang. Y u t quy t đ nh l n nh t c a phương pháp đư c dùng trong h th ng c th
là ph n c ng đư c c i thi n. M i đ a ch b nh đư c đư c t o ra b i CPU ph i đư c ki m tra h p l và có
th đư c ánh x t i m t đ a ch v t lý. Ki m tra không th đư c cài đ t (h u hi u) b ng ph n m m. Do đó,
chúng ta b ràng bu c b i tính s n dùng ph n c ng.
Các gi i th ât qu n lý b nh đư c th o lu n (c p phát liên t c, phân trang, phân đo n, và s k t h p
c a phân trang và phân đo n) khác nhau trong nhi u khía c nh. Trong so sánh các chi n lư c qu n lý b
nh , chúng ta nên s d ng các xem xét sau:
• H tr ph n c ng: thanh ghi n n hay c p thanh ghi n n và thanh ghi gi i h n là đ cho cơ ch phân
http://cnx.org/content/m29912/1.1/
38. Connexions module: m29912 38
khu đơn và đa, ngư c l i phân trang và phân đo n c n b ng ánh x đ xác đ nh ánh x đ a ch .
• Năng l c: khi gi i thu t qu n lý b nh tr nên ph c t p hơn thì th i gian đư c yêu c u đ ánh x đ a
ch lu n lý t i đ a ch v t lý tăng. Đ i v i các h th ng đơn gi n, chúng ta ch c n so sánh hay c ng đ a
ch lu n lý-các thao tác này ph i nhanh. Phân trang và phân đo n có th nhanh như n u b ng đư c
cài đ t trong các thanh ghi nhanh. Tuy nhiên, n u b ng trong b nh thì v th c ch t truy xu t b
nh c a ngư i dùng có th b gi m. M t TLB có th h n ch vi c gi m năng l c t i m c có th ch p
nh n.
• Phân mãnh: m t h th ng đa chương s th c hi n hi u qu hơn n u nó có c p đ đa chương cao hơn.
Đ i v i m t t p h p quá trình đư c cho, chúng ta có th tăng c p đ đa chương ch b ng cách đóng
gói nhi u quá trình hơn trong b nh . Đ hoàn thành tác v này, chúng ta ph i gi m s lãng phí hay
phân mãnh b nh . Các h th ng v i các đơn v c p phát có kích thư c c đ nh, như cơ ch đơn phân
khu và phân trang, g p ph i s phân mãnh trong. Các h th ng v i đơn v c p phát có kích thư c
thay đ i như cơ ch đa phân khu và phân đo n, g p ph i s phân mãnh ngoài.
• Tái đ nh v : m t gi i pháp cho v n đ phân mãnh ngoài là cô đ c. Cô đ c liên quan đ n vi c chuy n
d ch m t chương trình trong b nh không chú ý nh ng thay đ i c a chương trình. Xem xét này yêu
c u đ a ch lu n lý đư c tái đ nh v đ ng t i th i đi m th c thi. N u đ a ch đư c tái đ nh v ch t i
th i đi m n p, chúng ta không th lưu tr d ng cô đ c.
• Hoán v : b t c gi i thu t có th có hoán v đư c thêm t i nó. T i nh ng kho ng th i gian đư c xác
đ nh b i h đi u hành, thư ng đư c mô t b i các chính xác đ nh th i, các quá trình đư c chép t b
nh chính t i vùng lưu tr ph và sau đó đư c chép tr l i t i b nh chính. Cơ ch này cho phép
nhi u quá trình đư c ch y hơn là có th đ t vào b nh t i cùng m t th i đi m.
• Chia s : m t phương ti n khác đ gia tăng c p đ đa chương là chia s mã và d li u gi a các ngư i
dùng khác nhau. Thư ng vi c chia s yêu c u phân trang hay phân đo n đư c dùng, đ cung c p
nh ng gói thông tin nh (các trang hay các đo n) có th đư c chia s . Chia s là m t phương ti n ch y
nhi u quá trình v i lư ng b nh gi i h n nhưng các chương trình và d li u đư c chia s ph i đư c
thi t k c n th n.
• B o v : n u phân trang hay phân đo n đư c cung c p, các ph n khác nhau c a chương trình ngư i
dùng có th đư c khai báo ch th c thi, ch đ c, hay đ c-vi t. S h n ch này là c n thi t v i mã và
d li u đư c chia s và thư ng có ích trong b t c trư ng h p nào đ cung c p vi c ki m tra t i th i
gian th c thi cho các l i l p trình thông thư ng.
http://cnx.org/content/m29912/1.1/