SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/
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/

Weitere ähnliche Inhalte

Ähnlich wie Quan ly bo nho

De cuong mang may tinh 3f-hedspi.net
De cuong mang may tinh   3f-hedspi.netDe cuong mang may tinh   3f-hedspi.net
De cuong mang may tinh 3f-hedspi.net
Tonachi Shika
 
Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)
Trần Thiên Đại
 
Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...
Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...
Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...
Man_Ebook
 
[1]he thong thong tin quan ly th s_nguyenanhhao
[1]he thong thong tin quan ly th s_nguyenanhhao[1]he thong thong tin quan ly th s_nguyenanhhao
[1]he thong thong tin quan ly th s_nguyenanhhao
Bichtram Nguyen
 
Giáo trình kien trucmaytinh vd-lung[bookbooming.com]
Giáo trình kien trucmaytinh vd-lung[bookbooming.com]Giáo trình kien trucmaytinh vd-lung[bookbooming.com]
Giáo trình kien trucmaytinh vd-lung[bookbooming.com]
bookbooming1
 
Cac he co so tri thuc
Cac he co so tri thucCac he co so tri thuc
Cac he co so tri thuc
Floo258
 
THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)
THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)
THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)
CNTT-DHQG
 

Ähnlich wie Quan ly bo nho (20)

Android program 6167
Android program 6167Android program 6167
Android program 6167
 
De cuong mang may tinh 3f-hedspi.net
De cuong mang may tinh   3f-hedspi.netDe cuong mang may tinh   3f-hedspi.net
De cuong mang may tinh 3f-hedspi.net
 
Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)Nền tảng lập trình java (Core java)
Nền tảng lập trình java (Core java)
 
Bai giang ktlt-v2010_academia.edu-libre
Bai giang ktlt-v2010_academia.edu-libreBai giang ktlt-v2010_academia.edu-libre
Bai giang ktlt-v2010_academia.edu-libre
 
lam_chat_room_3348.pdf
lam_chat_room_3348.pdflam_chat_room_3348.pdf
lam_chat_room_3348.pdf
 
Giao trinh qlda tong hop
Giao trinh qlda tong hopGiao trinh qlda tong hop
Giao trinh qlda tong hop
 
Th 21-full-permission-
Th 21-full-permission-Th 21-full-permission-
Th 21-full-permission-
 
Tailieu.vncty.com nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
Tailieu.vncty.com   nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...Tailieu.vncty.com   nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
Tailieu.vncty.com nghien cuu-ve_mang_luu_tru_va_de_xuat_phuong_an_mang_luu_...
 
Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...
Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...
Quản lý sơ đồ nguyên lý lưới điện trung áp trong Tổng công ty điện lực Miền B...
 
Chuong 09 vb
Chuong 09   vbChuong 09   vb
Chuong 09 vb
 
Os php-7oohabits
Os php-7oohabitsOs php-7oohabits
Os php-7oohabits
 
Pdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vn
Pdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vnPdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vn
Pdf bai tap_nen_tang_lap_trinh_-_c#-mastercode.vn
 
Pascal 2
Pascal 2Pascal 2
Pascal 2
 
Tai lieu microsoft project 2007 smith.n
Tai lieu microsoft project 2007   smith.nTai lieu microsoft project 2007   smith.n
Tai lieu microsoft project 2007 smith.n
 
[1]he thong thong tin quan ly th s_nguyenanhhao
[1]he thong thong tin quan ly th s_nguyenanhhao[1]he thong thong tin quan ly th s_nguyenanhhao
[1]he thong thong tin quan ly th s_nguyenanhhao
 
Giáo trình kien trucmaytinh vd-lung[bookbooming.com]
Giáo trình kien trucmaytinh vd-lung[bookbooming.com]Giáo trình kien trucmaytinh vd-lung[bookbooming.com]
Giáo trình kien trucmaytinh vd-lung[bookbooming.com]
 
Quyhoachmangdien
QuyhoachmangdienQuyhoachmangdien
Quyhoachmangdien
 
Cac he co so tri thuc
Cac he co so tri thucCac he co so tri thuc
Cac he co so tri thuc
 
Giáo Trình Môn Đặc Tả Hình Thức-ICTU
Giáo Trình Môn Đặc Tả Hình Thức-ICTUGiáo Trình Môn Đặc Tả Hình Thức-ICTU
Giáo Trình Môn Đặc Tả Hình Thức-ICTU
 
THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)
THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)THCS_W03_BaiGiang_CÁC KIẾN THỨC CƠ BẢN VỀ CÔNG NGHỆ THÔNG TIN (1)
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/