Khi thay thế trang cần phải chọn lựa một trang “nạn nhân” để chuyểân ra ngồi bộ nhớ phụ. Mục tiêu của sự thay thế trang là sau khi thay thế ít gây ra hiện tượng lỗi trang.
Cĩ thể đánh giá hiệu quả của thuật tốn bằng cách xử lý trên một chuỗi các địa chỉ và tính tốn lỗi trang phát sinh.
Thí dụ : Khi truy cập các địa chỉ sau :
0100, 0432, 0101, 0162, 0102, 0103, 0104, 0101, 0611, 0102, 0103, 0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102 , 0105.
Giả sử 1 trang cĩ kích thước là 100 byte thì cĩ thể truy xuất các trang như sau: 1,4,1,6,1,6,1,6,1
Để xác định lỗi trang xảy ra khi sử dụng một thuật tốn thay thế trang cần biết một chuỗi truy xuất cụ thể, cịn phải biết số lượng khung trang sử dụng trong hệ thống.
Để minh hoạ các thuật tốn thay thế trang, chuỗi truy xuất giả định là : 7, 0 ,1,2,0 ,3,4,2,3,0,0,3,2,1,2,0,1,7,0,1
5.5.1 Thuật tốn Random
Các trang được thay thế một cách ngẫu nhiên. Thuật tốn khơng ước lượng số lỗi trang xảy ra nên ít áp dụng.
5.5.2 Thuật tốn FIFO ( First In First Out)
Ghi nhận một thời điểm một trang được mang vào bộ nhớ chính. Khi cần thay thế trang, trang ở trong bộ nhớ lâu nhất sẽ được chọn
Thí dụ: Sử dụng 3 khung trang, ban đầu cả 3 đều trống và cĩ thể thay thế như sau: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7 7 0 0 0 3 3 3 3 2 2 2 2 2 1 1 1 1 1 0 0 1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2 1 * * * * * * * * * * * * * * * trong đĩ: * : cĩ lỗi trang
Nhận xét
- Để áp dụng thuật tốn FIFO hiệu quả ta chỉ cần tổ chức quản lý các trang trong bộ nhớ trong một danh sách FIFO, khi đĩ trang đầu danh sách được thay thế.
- Thuật tốn thay thế FIFO dễ cài đặt nhưng các tiến trình đến ngẫu nhiên , nên nhiều khi chọn trang để thay thế cĩ thể là mảng chứa nhiều dữ liệu (như trang văn bản), thường xuyên được sử dụng nên được nạp sớm, chuyển ra ngồi bộ nhớ phụ sẽ sinh ra lỗi trang.
- Số lượng lỗi trang xảy ra sẽ tăng lên khi số lượng khung trang sử dụng tăng. Hiện tượng này gọi là nghịch lý Belady .
5.5.3 Thuật tốn tối ưu
Thay thế trang sẽ lâu được sử dụng nhất trong tương lai.
Thí dụ: Sử dụng 3 khung trang, ban đầu cả 3 đều trống và cĩ thể thay thế như sau: 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 2 7 7 7 0 0 0 0 0 0 4 4 4 0 0 0 0 0 0 0 0 0 0 1 1 1 1 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 * * * * * * * * * Nhận xét
Thuật tốn này đảm bảo số lượng lỗi trang phát sinh là thấp nhất, nĩ cũng khơng gánh chịu nghịch lý Belady , tuy nhiên đây là một thuật tốn khơng khả thi trong thực thế, vì khơng biết trước chuỗi truy xuất của tiến trình.
5.5.4 Thuật tốn LRU ( Least Recently -Used)
Với mỗi trang, ghi nhận thời điểm cuối cùng trang được truy cập, trang được chọn để thay thế sẽ là trang lâu nhất chưa sử dụng.
Thí dụ: Sử dụng 3 khung trang, ban đầu cả 3 đều trống và cĩ thể thay thế như sau:
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 7 7 7 2 2 2 2 4 4 4 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 0 1 1 1 3 3 3 2 2 2 2 2 2 2 2 2 7 7 7 * * * * * * * * * * * * Nhận xét
-Trong các thuật tốn trên các tiến trình đến ngẫu nhiên, nên khĩ xác định thời điểm tối ưu . Nên thuật tốn LRU phải dùng thời điểm cuối cùng của trang được truy xuất – dùng quá khứ gần để dự đốn tương lai.
-Thuật tốn dùng cơ chế phần cứng để hỗ trợ các trang truy xuất cuối cùng. Cĩ hai cơ chế thực hiện điều này:
a. Sử dụng bộ đếm : bảng trang thêm vào trường count ghi nhận thời điểm
truy xuất. CPU sẽ sử dụng một bộ đếm để cập nhật trường này. Khi truy xuất dữ liệu đến một trang thì giá trị của trường count tương ứng bảng trang tăng lên 1. Thay thế trang mà cĩ trường count cĩ giá trị nhỏ nhất.
b. Sử dụng stack: Tổ chức một stack để lưu trữ số hiệu trang. Khi truy xuất
đến 1 trang thì số hiệu của trang đĩ sẽ được xố vị trí hiện hành trong stack và đưa lên đầu stack. Trang ở đỉnh stack là trang truy xuất gần nhất và trang đáy stack là trang lâu nhất chưa sử dụng.
5.5.5 Các thuật tốn xấp xỉ LRU
Cĩ ít hệ thống cĩ cơ chế phần cứng cĩ thể cài đặt ngay thuật tốn LRU thật sự. Một số thuật tốn xấp xỉ thuật tốn này trong điều kiện cho phép của phần cứng. Nhiều hệ thống trang bị thêm bit referrence (bit tham khảo) bit này khởi tạo là 0, được gắn một phần tử của bảng trang.
Khi cĩ một trang được truy cập bit này được gán 1 và gán lại bằng 0 sau một chu kỳ của phần cứng. Bit reference cĩ thể biết được trang nào được truy cập nhưng chưa biết thứ tự của nĩ, nên xuất hiện nhiều thuật tốn khác nhau để xấp xỉ LRU.
a. Thuật tốn với các bit reference phụ trợ
Cĩ thể thu thập thêm nhiều thơng tin về thứ tự truy cập bằng cách lưu trữ các bit references sau một thời gian đều đặn .
- Với mỗi trang sử dụng thêm 8 bit lịch sử bảng trang.
- Sau từng khoảng thời gian nhất định (khoảng 100 ms ), mỗi ngắt đồng hồ được phát sinh và quyền điều khiển được trả về cho hệ điều hành . Hệ điều hành đặt bit reference vào bit cao nhất trong 8 bit phụ trợ của trang đĩ bằng cách đẩy các bit khác sang phải 1 vị trí, bỏ luơn bit thấp nhất.
- 8 bit này sẽ lưu trữ tình hình truy cập của một trang trong 8 chu kỳ cuối cùng.
- Nếu xét 8 bít phụ trợ này là số nguyên khơng dấu thì trang LRU là trang phụ trợ cĩ giá trị nhỏ nhất.
Nhận xét: Số lượng bit lịch sử này cĩ thể thay đổi theo cơ chế phần cứng, phải chọn sao việc cập nhật là nhanh nhất.
b. Thuật tốn FIFO cĩ sửa đổi
Sử dụng một bit reference duy nhất. Thuật tốn này trên cơ sở cùa FIFO, tuy nhiên khi một trang được chọn theo tiêu chuẩn FIFO là kiểm tra bit reference của trang đĩ:
- Nếu trang cĩ bit reference=0 thì chọn trang đĩ.
- Ngược lại cho trang này một cơ hội thứ 2 sẽ được quay về cuối hàng đợi và chọn trang cĩ chuẩn FIFO tiếp theo.
- Trang cĩ cơ hội thứ 2 được gán lại bit reference=0 vào thời điểm ở đầu hàng đợi.
- Trang cĩ cơ hội thứ 2 sẽ khơng bị thay thế trước khi hệ thống thay thế hết những trang khác. Hơn nữa, nếu trang thường xuyên sử dụng thì bị reference=1 và trang này hầu như khơng thay thế .
Nhận xét : Cĩ thể cài đặt thuật tốn này với một xâu vịng
c. Thuật tốn NRU (Not Recently Used)
Xem bit refence và dirty là một cặp để xác định độ ưu tiên Với hai bit này thành lập độ ưu tiên sau:
Độ
ưu tiên ReferenceBít BitDirty Ý nghĩa
1 0 0 Trang tốt nhất thay thế
2 0 1 Trang cần lưu trữ lại trước khi thay thế
3 1 0 Trang cĩ thể sử dụng lại
4 1 1 Trang cĩ thể được sử dụng khi thay thế phải lưu trữ.
Trang được chọn để thay thế là trang đầu tiên tìm thấy cĩ độ ưu tiên thấp nhất và khác rỗng.
d. Các thuật tốn thống kê
Sử dụng một biến đếm lưu trữ số lần truy xuất một trang và phát triển thành hai thuật tốn sau:
a. Thuật tốn LFU: thay thế trang cĩ giá trị biến đếm nhỏ nhát , nghĩa là trang ít sử dụng nhất.
b. Thuật tốn MFU: thay thế trang cĩ giá trị biến đếm cĩ giá trị lớn nhất, nghĩa là trang được sử dụng nhiều nhất ( most frequently used)
CÂU HỎI VAØ BAØI TẬP
1. Giải thích tại sao ta phải dùng bộ nhớ ảo ?
2. Giải thích sự khác nhau giữa địa chỉ lơgic và vật lý. 3. Trình bày các cơ chế ánh xạ bộ nhớ ảo và thực.
4. Nêu rõ sự khác nhau cơ bản giữa chế độ phân trang và phân đoạn.
5. Trình bày chi tiết cơ chế bảo vệ và chia sẻ giữa kiểu kết hợp giữa phân đoạn và phân trang.
6. Trình bày chi tiết kiểu phân đoạn và phân trang trong kiến trúc vi xử lý 80386 và hệ điều hành MS-DOS, Window 95.
7. Lỗi trang là gì ? Tại sao ta phải thay thế trang. Nêu vai trị của cache trong việc thay thế trang.
8. Tại sao nĩi LRU là thuật tốn thay thế trang phổ biến nhất hiện nay. Minh hoạ bằng 2 hệ điều hành Window 9x và Unix. Trình bày cơ chế thuật tốn này.
Chương 6
HỆ THỐNG QUẢN LÝ TẬP TIN