CHƢƠNG 7 QUẢN Lí BỘNHỚ
7.2.2 Phõn trang theo yờu cầu
Phõn trang theo yờu cầu tương tự phõn trang hoỏn chuyển. Cỏc tiến
trỡnh nằm trờn ổ đĩa được bộ phõn trang tải vào bộ nhớ khi thực thi. Chỳ ý, thay vỡ đưa toàn bộ tiến trỡnh vào, bộ phõn trang chỉ đưa vào bộ nhớ những trang mà liến trỡnh thực sự cần đến. ở đõy cú thể xem tiến trỡnh là tập hợp cỏc trang, chứ khụng phải một khụng gian địa chi liờn tục. Bộ hoỏn chuyển tỏc động lờn toàn bộ tiến trỡnh, trong khi đối tương của bộ phõn trang là từng trang riờng lẻ. Trước khi tải tiến trỡnh vào bộ nhớ, bộ phõn trang dự đoỏn những trang sẽ được sử dụng và chỉ đưa những trang này vào. Do khụng phải tải cỏc trang khụng dựng, nờn giảm thời gian chuyển đổi và tiết kiệm khụng gian bộ nhớ vật lý
Khi bị lỗi trang, HĐH lưu lại ngữ cảnh tiến trỡnh, nờn tiến trỡnh cú thể
khởi động lại tại đỳng vị trớ bị giỏn đoạn, ngoại trừ trang thiếu này đó cú trong bộ nhớ. tiến trỡnh cú thể bắt đầu thực thi khi chưa cú trang nào trong bộ nhớ. Khi thực thi chỉ thị đầu tiờn, ngay lập tức tiến trỡnh bị phong tỏa do lỗi trang. Sau khi tải trang cần thiết vào bộ nhớ, tiến trỡnh tiếp tục chạy, lỗi trang lại xuất hiện cho tới khi nào tất cả cỏc trang cần thiết được đưa vào bộ nhớ. phương phỏp này cú thể gọi là phõn trang theo yờu cầu thuần tủy (khụng tải trang khụng cần thiết vào bộ nhớ). về mặt lý thuyết, hoàn toàn cú khả năng chỉ thị của chương trỡnh tham
chiểu tới nhiều trang nhở (một trang cho chớnh chỉ thị và nhiều trang cho dữ liệu). Do vậy, một chỉ thị cú thể gõy ra nhiều lỗi trang. Điều này làm giảm đỏng kể hiệu suất mỏy tớnh. Thống kờ khi phõn tớch cỏc tiến trỡnh đang chạy
cho thấy khả năng trờn rất hiếm, vỡ cỏc chương trỡnh cú xu hướng sử dụng một miền tham chiếu cục bộ (locality of reference). Do vậy, phõn trang theo yờu cầu làm tăng hiệu suất hệ thống. Phần cứng hỗ trợ phõn trang theo yờu cầu giống phần cứng hỗ trợ phõn trang hay hoỏn chuyển.
- Bảng phõn trang: Cú thể đỏnh dấu trang là khụng hợp lệ thụng qua bit valid- invalid, hoặc giỏ trị đặc biệt nào đú của bit bảo vệ.
- Bộ nhớ thứ cấp: Dựng để lưu trữ tất cả trang chưa nạp vào bộ nhớ chớnh. Bộ nhớ thứ cấp thường là ổ đĩa cứng. Vựng trờn ổ đĩa dựng cho việc hoỏn chuyển được gọi là vựng hoỏn chuyển.
Để xỏc định trang nằm trong bộ nhớ hay nằm trờn ổ đĩa, HĐH sử dụng bit hợp lệ - khụng hợp lệ (valid-invalid) như trong mục 9.5.2. Khi bit cú giỏ trị valid, trang tương ứng hợp lệ và nằm trong bộ nhớ. Trong trường hợp ngược lại, trang tương ứng hoặc khụng hợp lệ (khụng nằm trong khụng gian địa chỉ của tiến trỡnh), hoặc hợp lệ nhưng hiện nằm trờn ổ đĩa. Tỡnh huống này được mụ tả trong Hỡnh 10.2a
Hỡnh 54 Xử lớ lỗi trang
Trang chưa đưa vào bộ nhớ khụng gõy ảnh hưởng gỡ nếu khụng được sử dụng. Do đú, nếu dự đoỏn đỳng và đưa vào bộ nhớ tất cả cỏc trang cần thiết
thỡ tiến trỡnh vẫn chạy như thể tồn bộ tiến trỡnh đó nằm trong bộ nhớ. vấn đề chỉ phỏt sinh khi tiến trỡnh truy cập đến trang chưa tải vào bộ nhớ. Tỡnh huống này gõy ra lỗi trang. Trong quỏ trỡnh giải mó địa chỉ, phần cứng phõn trang nhận ra trang khụng hợp lệ, nờn yờu cầu HĐH xừ lý. Lỗi này do HĐH chưa tải trang cần thiết vào bộ nhớ, chứ khụng phải do truy cập tới vựng địa chỉ khụng hợp lệ. Cỏc bước xử lý lồi được minh họa trờn Hỡnh 10.2b như sau:
- Kiểm tra địa chỉ truy nhập cú nằm trong vựng địa chỉ hợp lệ khụng.
- Nếu yờu cầu truy nhập khụng hợp lệ, kết thỳc cụng việc. Nếu yờu cầu hợp lệ nhưng trang yờu cầu chưa nằm trong bộ nhớ, thỡ HĐH tải trang vào bộ nhớ.
- Tỡm một frame trống (lấy từ danh sỏch frame trống).
- Yờu cầu đọc trang mong muốn từ ổ đĩa vào frame mới tỡm thấy.
- Khi hoàn tất việc đọc ổ đĩa, cập nhật bảng trạng thỏi của tiến trỡnh và bảng phõn trang để chi ra trang yờu cầu đó được đưa vào bộ nhớ.
- Khởi động lại chỉ thị bị ngắt do lồi trang. Lỳc này tiến trỡnh truy cập vào trang nhớ bỡnh thường như thể trang đú luụn nằm trong bộ nhớ.
Phõn trang theo yờu cầu chỉ lải những trang cần thiết vào bộ nhớ. Do đú, tăng mức độ đa nhiệm vỡ bộ nhớ chứa được nhiều tiến trỡnh. Tuy nhiờn, tăng mức độ đa nhiệm lại dẫn đến tỡnh trạng cấp phỏt bộ nhớ quỏ khả năng,
tức là khi tổng lượng bộ nhớ cỏc tiến trỡnh yờu cầu vượt quỏ khả năng hệ thống cú thể đỏp ứng. Khi xảy ra lỗi trang, phần cứng chuyển quyền điều khiển cho HĐH. HĐH kiểm tra để xỏc nhận đõy là sự kiện lỗi trang chứ khụng phải là lỗi
truy cập bộ nhớ trỏi phộp. HĐH xỏc định vị trớ trang trờn ổ đĩa cứng, nhưng sau dú nhận ra khụng cũn frame nào trống, vỡ toàn bộ bộ nhớ lỳc này đó
được sử dụng (Hỡnh 57)
Hỡnh 55 Thay thế trang
HĐH cú nhiều cỏch giải quyết, chẳng hạn chấm dứt tiến trỡnh hoặc hoỏn chuyển tiến trỡnh khỏc ra ngoài. Giải phỏp trỡnh bày ờ đõy là thay thế trang. Nếu khụng cú frame trống, HĐH thu hồi một frame bằng cỏch chuyển trang
năm trong frame ra ngoài (cập nhật lại bảng phõn trang để chỉ ra trang vừa chuyển hiện khụng nằm trong bộ nhớ). Sau đú, HĐH cú thể tải trang mà tiến trỡnh cần vào frame trống. Thủ tục xử lý lỗi trang được bổ sung thờm việc thay thế trang:
1. Tỡm trang cần tải trờn ổ đĩa cứng.
2. Tỡm một frame trống; nếu thấy frame trống thỡ sử dụng; nếu khụng thấy, dựng thuật toỏn thay trang để tỡm trang làm "nạn nhõn" chuyển ra ngoài. Ghi trang "nạn nhõn" vào ổ cứng, cập nhật bảng phõn trang và bảng frame.
3. Tải trang cần thiết vào frame vừa được giải phúng, cập nhật lại bảng phõn trang và bảng frame.
4. Khởi động lại tiến trỡnh.
7.2.5 Thuật toỏn thay thế trang
Cú nhiều thuật toỏn thay thế trang khỏc nhau và mỗi HĐH lựa chọn một phương phỏp thay thế cụ thể với tỷ lệ lỗi trang ớt nhất. Để đỏnh giỏ hiệu suất, cần thực hiện thuật toỏn trờn một dóy tham chiếu bộ nhớ cụ thể và tớnh toỏn số lỗi trang. Cú thể sinh ngẫu nhiờn dóy tham chiếu giả (thụng qua mốt bộ tạo số ngẫu nhiờn), hoặc theo dừi một hệ thống đang vận hành và ghi lai địa chỉ mỗi tham chiếu bộ nhớ. Cỏch sau tạo ra nhiều dữ liệu (khoảng 1 triệu địa chỉ/s). Để giảm lượng dữ liệu nhận được, cần chỳ ý hai điểm:
1. Với kớch thước trang xỏc định (trang thường cú kớch thước cổ định được quy định bởi phần cứng hoặc hệ thống), chỉ quan tõm đến địa chỉ trang chứ khụng quan tõm đến địa chỉ ụ nhớ. 2. Nếu tồn tại một tham chiếu tới trang p, thỡ cỏc tham chiếu liền kề tới trang p khụng gõy lồi trang, vỡ p đó nằm trong bộ nhớ sau tham chiếu đầu tiờn.
7.2.5.1 Thuật toỏn FIFO
FIFO là thuật toỏn thay thế trang đơn giản nhất. Thuật toỏn ghi lại thời điểm trang nhớ được đưa vào bộ nhớ và trang "cũ nhất" sẽ bị thay thế. Hỡnh 58 minh họa thuật toỏn FIFO với chuỗi tham chiếu R = 012301401234. Ta thấy xuất hiện 9 lỗi trang (cỏc trang cú gạch dưới).
Hỡnh 56 Bài toỏn FIFO
Mặc dự dễ hiểu, dễ lập trỡnh, nhưng hiệu suất FIFO khụng cao. Vớ dụ,
nờu trang bị thay thế là những trang chứa mó khởi tạo chương trỡnh được sử
dụng từ rất lõu và hiện nay khụng cũn cần nữa. Mặt khỏc, những trang này cú thể chứa những biến được sử dụng nhiều lần và khởi tạo ngay từ đầu
chương trỡnh. Dự trang đang được sử dụng bị thay thế, thỡ hệ thống vẫn hoạt động bỡnh thường. Sau khi bị đưa ra, lỗi trang sẽ xuất hiện gần như tức thời và HĐH phải tải lại trang đú vào bộ nhớ. Một trang nào đú lại bị đưa ra để đưa trang kia trở lại bộ nhớ. Thay thế sai làm tăng tỷ lệ lỗi trang và làm chậm tiến trỡnh.
7.2.5.2 Thuật toỏn tối ƣu (Optimal
Algorithm)
Thay thế trang tối ưu là thuật toỏn cú tỷ lệ lỗi trang thấp nhất. Thuật toỏn này được gọi là OPT hay MIN, và khụng cú dị thường Belady. Thuật toỏn tối ưu thay thế trang khụng được sử dụng trong thời gian dài nhất. Vớ dụ, trong chuỗi tham chiếu mẫu R = 2031203120316457, thuật toỏn thay thế trang tối ưu sinh ra 10 rỗi trang (Hỡnh 59). Thuật toỏn OPT khú cài đặt, vỡ cần phải biết trước về chuỗi tham chiếu, do đú thuật toỏn này sử dụng chủ yếu trong nghiờn cứu so sỏnh.
Hớnh 57 Thuật toỏn tối ƣu và LRU
7.2.5.3 Thuật toỏn ỡt đƣợc sử dụng
gần đõy nhất (LRU)
Cài đặt thuật toỏn tối ưu khụng khả thi, tuy nhiờn vẫn cú thể cài đặt thuật toỏn "tựa" thuật toỏn tối ưu. Khỏc với FIFO sử dụng thời điểm trang được đưa -vào bộ nhợ, LRU (Least Recently Used) sử dụng thời điểm trang được sử dụng và thay thể trang khụng được sử dụng trong khoảng thời gian dài nhất (Hỡnh 10.6b). Thuật toỏn LRU ghi lại thời điểm cuối cũng trang
được sử dụng. Khi thay thế, LRU chọn trang khụng được sử dụng trong khoỏng thời gian dài nhất. Phương phỏp này chớnh là thuật toỏn tối ưu,
nhưng nhỡn vào quỏ khứ, chứ khụng phải nhỡn vào tương lai (Nếu là nghịch đảo của chuồi tham chiếu S, thỡ tỷ lệ lỗi trang đối với thuật toỏn OPT ỏp dụng trờn S là tỷ lệ lồi trang của thuật toỏn LRU ỏp dụng trờn ). Thuật toỏn LRU cần nhiều sự trợ giỳp từ phần cứng. Cú hai cỏch để sắp xếp thứ tự cỏc frame theo thời điểm truy cập cuối cựng:
1. Bộ đếm (Counter): Bảng phõn trang cú trường thời gian sử dụng ghi lại thời điểm cuối cựng trang được tham chiếu. Hệ thống thay thế trang cú giỏ trị thời gian nhỏ nhất. Phương phỏp này đũi hũi tỡm kiếm trờn bảng phõn trang khi thay thế và cập nhật trường thời gian sử dụng trong mồi lần truy nhập bộ nhớ.
2. Ngăn xếp (Stack): Cú thể sử dụng ngăn xếp lưu trữ địa chỉ trang. Trang bị tham chiếu được chuyển lờn đỉnh ngăn xếp. Đỉnh ngăn xếp luụn là trang được sử dụng gần đõy nhất và đỏy ngăn xếp là trang ớt được sử dụng nhất. Vỡ cỏc trang cú thể được lấy ra từ giữa ngăn xếp, nờn cỏch cài đặt đơn giản nhất là sử dụng danh sỏch liờn kết kộp (với một con trỏ đầu và một con trỏ đuụi). Việc loại bỏ một trang và đưa lờn đỉnh ngăn xếp cần thay đổi ớt nhất 6 con trỏ. Tất nhiờn, mỗi lần cập nhật làm tăng chi phớ, nhưng bự lại khụng cần phải tỡm kiếm khi thay thế, trang nằm ở đỏy ngăn xếp là trang LRU. Chỳ ý, khụng thể cài đặt LRU nếu khụng cú phần cứng hỗ trợ. Phải thực hiện cập nhật đồng hồ hay ngăn xếp với mọi tham chiếu bộ nhớ. Nếu sử dụng ngắt để phần mềm thực hiện cập nhật trờn những cấu trỳc dữ liệu như vậy khi cú tham chiếu xảy ra, thi tốc độ truy xuất bộ nhớ giảm và kộo theo hiệu suất hệ thống giảm.
7.2.6 Cấp phỏt Frame
Cần cấp phỏt bao nhiờu bộ nhớ cho cỏc tiến trỡnh khỏc nhau? Trường hợp đơn giản nhất là hệ thống chỉ cú một tiến trỡnh. Xột hệ thống như vậy với kớch thước bộ nhớ vật lý là 64 frame. HĐH chiếm 10 frame, cũn lại 54 frame cho tiến trỡnh ứng dụng. Với phương phỏp phõn trang theo yờu cầu thuần tỳy, 54 frame ban đầu nằm trong danh sỏch frame trống. Khi bắt đầu thi hành, tiến trỡnh ứng dụng cú thề tạo ra một chuỗi lỗi trang, 54 lồi trang đầu tiờn lấy dần cỏc frame trong danh sỏch frame trống. Khi khụng cũn frame trống, hệ thống sử dụng thuật toỏn thay thế trang, chọn 1 trong 54 trang nhớ làm "nạn nhõn" chuyển ra ngoài. Quỏ trỡnh này cứ thế tiếp tục. Khi tiến trỡnh kết thỳc, cỏc frame được đưa trở lại danh sỏch trống, vấn đề nảy sinh khi phõn trang theo yờu cầu kết hợp với đa chương trỡnh. Đa chương trỡnh cho phộp tải nhiều tiến trỡnh vào bộ nhớ cựng một lỳc.
7.2.6.1 Số frame tối thiểu
Khụng thể cấp phỏt nhiều hơn tổng số frame của hệ thống (trừ khi cú
chia sẻ trang). Ngoài ra, tiến trỡnh muốn thực Khi cần cú một lượng tối thiểu frame (tựy thuộc vào kiến trỳc mỏy tớnh). Hiển nhiờn, khi số frame được cấp phỏt cho mỗi tiến trỡnh giảm, thỡ tỷ lệ lỗi trang tăng lờn và làm tiến trỡnh chạy chậm đi.
Nếu lồi trang xảy ra trước khi chỉ thị hoàn thành, chỉ thị phải khởi động lại từ trạng thỏi trước khi bắt đầu thực hiện. Vỡ vậy, hệ thống cần cú đủ frame để lưu giữ tất cả cỏc trang nhớ khỏc nhau mà chi thị tham chiếu lúi. Vớ dụ, xột dũng kiến trỳc mỏy tớnh nào đú mà chỉ thị tham chiếu bộ nhớ chỉ tham chiếu tới một địa chỉ duy nhất. Vỡ thế, cần ớt nhất một frame cho chi thị và một frame cho địa chỉ được tham chiếu. Nếu cho phộp đỏnh địa chỉ giỏn tiếp cấp 1 (vớ dụ: chỉ thị LOAD AX, [17689] ở trang 16 sẽ lấy nội dung ụ nhớ 17689 (giả sử là X) làm địa chỉ, tải nội dung ụ nhớ cú địa chi X vào thanh ghi AX), thỡ tối đa CPU cú thể phải truy xuất tới 3 frame khi thực thi chỉ thị này.
Tỡnh huống xấu nhất là trong kiến trỳc cho phộp địa chỉ cú nhiều cấp độ giỏn tiếp, về mặt lý thuyết, lệnh LOAD thụng thường cú thể tham chiếu đến một địa chỉ giỏn tiếp, địa chỉ này tham chiếu đến một địa chi giỏn tiếp khỏc (ở trang khỏc), và cứ như vậy, cho tới khi mọi trang trong bộ nhớ ảo được tham chiếu hết. Vỡ thế, trong trường hợp xấu nhất, toàn bộ bộ nhớ ào phải nằm trong bộ nhớ vật lý. Để khắc phục điều này, phải đặt một giới hạn cấp độ giỏn tiếp (vớ dụ: giới hạn cấp độ giỏn tiếp tối đa cho một chỉ thị là 16). Khi tham chiếu giỏn tiếp đầu tiờn xuất hiện, con đếm được đặt giỏ trị 16 và giỏ trị con đếm này tự động giảm đi 1 sau mỗi lần tham chiếu giỏn tiếp. Nếu con đếm giảm đến 0, lỗi quỏ tải tham chiếu giỏn tiếp xuất hiện để trả quyền điều khiển cho MĐH. Giới hạn này làm giảm số lượng tham chiếu bộ nhớ trờn mỗi chỉ thị xuống cũn 17, và do đú mỗi tiến trỡnh cần tối thiểu 17 frame. Số frame tối thiểu cho mỗi tiến trỡnh được quy định bời kiến trỳc mỏy tớnh, số frame tối đa bị giới hạn bởi bộ nhớ vật lý. Trong khoảng cận trờn và cận dưới này, hệ thống phải đưa ra phương phỏp cấp phỏt phự họp.
7.2.6.2 Thuật toỏn cấp phỏt
Để chia m frame chọ n tiến trỡnh, đơn giản nhất là phương phỏp cấp phỏt đều, mỗi tiến trỡnh được m/n frame.
Tuy nhiờn trờn thực tế, cỏc tiến trỡnh cú nhu cầu bộ nhớ khỏc nhau, Nếu hệ thống cú 60 frame và chi cú hai tiến trỡnh A (cú độ lớn 10KB) và B (140KB), thỡ khụng thể cấp phỏt cho mỗi tiến trỡnh đỳng 30 frame. Tiến trỡnh A chỉ cần đỳng 10 frame, vi thế lóng phớ 21 frame. Một cỏch giải quyết là sử dụng phương phỏp cấp phỏt tỷ lệ.
Chỳ ý, trong 2 phương phỏp cấp phỏt trờn, tiến trỡnh cú độ ưu tiờn cao cũng được đối xử giống tiến trinh cú độ ưu tiờn thấp. Mặc dự tiến trỡnh cú độ ưu tiờn cao nờn được ưu tiờn cấp phỏt bộ nhớ hơn để đảm bảo tốc độ thi hành. Cú thể vẫn sử dụng phương phỏp cấp phỏt tỷ lệ, nhưng tỷ lệ frame được cấp khụng chỡ phụ thuộc vào kớch thước tiến trỡnh mà cũn vào độ ưu liờn của tiến trỡnh.
7.2.6.3 Cấp phỏt toàn cục và cục bộ
Với nhiều tiến trỡnh cạnh tranh bộ nhớ, cú thể phõn thuật toỏn thay thế trang vào hai nhúm là thay thế toàn cục và thay thế cục bộ:
Thay thế toàn cho cho phộp tiến trỡnh lựa chọn frame để thay thế trong toàn bộ danh sỏch frame, cho dự frame đú đó cấp phỏt cho liến trỡnh khỏc. Như vậy, tiến trỡnh cú thể lấy frame từ tiến trỡnh khỏc.
Thay thế cục bộ yờu cầu tiến trỡnh chỉ cần thay thế trong những frame đó được cấp phỏt cho mỡnh.
Xột phương phỏp cho phộp tiến trỡnh cú độ ưu tiờn cao cú thể lấy frame từ tiến trỡnh cú độ ưu tiờn thấp. Tiến trỡnh cú độ ưu tiờn cao cú thể tăng số frame được cấp phỏt của mỡnh bằng cỏch lấy frame của cỏc tiến trỡnh cú độ ưu tiờn thấp. Với thay thế cục bộ, tổng sổ frame cấp phỏt cho mỗi tiến trỡnh khụng đồi. Với thay thế toàn cục, tiến trỡnh cú thể lấy frame từ tiến trỡnh