Chương 5 BỘ NHỚ ẢO
5.4 Thay thế trang
5.4.1 Hiện tượng lỗi trang
Bộ nhớ ảo thường được thực hiện với kỹ thuật phân trang theo yêu cầu. Kỹ thuật sử dụng này kết hợp kỹ thuật phân trang và kỹ thuật swapping. Một tiến trình được coi như một tập các trang, tại một thời điểm xử lý chỉ cĩ một số trang cần thiết mang vào bộ nhớ. Khi tiến trình truy cập một trang chưa được ánh xạ vào bộ nhớ thực gọi là bất hợp lệ sẽ làm phát sinh ra một lỗi trang ( page fault). Khi lỗi trang xuất hiện, thì CPU phát sinh ngắt báo cho hệ điều hành . Hệ điều hành sẽ xử lý như sau:
Bước 1: Kiểm tra truy xuất bộ nhớ cĩ hợp lệ khơng ?
Bước 2: Nếu truy xuất bất hợp lệ thì kết thúc tiến trình ngược lại chuyển
bước 3.
Bước 3: Tìm vị trí chứa trang muốn truy xuất trên đĩa. Bước 4: Tìm một khung trang trống trên bộ nhớ chính:
a. Nếu tìm thấy chuyển bước 5.
b. Nếu khơng cịn khung trang trống, chọn một khung trang “nạn nhân” và chuyển trang “nạn nhân” ra bộ nhớ phụ, cập nhật bảng trang và chuyển sang bước 5.
Bước 5: Chuyển trang muốn truy xuất từ bộ nhớ phụ vào bộ nhớ chính:
nạp trang cần truy xuất vào khung trang trống đã chọn (hay vừa mới làm trống); cập nhật lại nội dung bảng trang, bảng khung trang tương ứng.
5.4.2 Thay thế trang
Khi xảy ra lỗi trang, hệ thống phải mang một trang thiếu vào bộ nhớ. Nếu khơng cịn một trang trống trong bộ nhớ trong, hệ thống cần thực hiện thay thế trang tức là chọn một trang đang tồn tại bộ nhớ trong (khơng được sử dụng hiện tại) và đưa nĩ ra khơng gian swapping trên đĩa từ để giải phĩng một trang vật lý, dành chỗ nạp trang cần truy xuất vào bộ nhớ. Cĩ thể giảm bớt số lần chuyển trang bằng cách sử dụng thêm một bit cập nhật (dirty bit). Bit này được gắn vào mỗi trang để phản ánh co cập nhật hay khơng, nếu cĩ thay đổi thì bit này bằng1. Khi cần thay thế một trang, nếu bit cập nhật là 1 thì trang cần lưu lại trên đĩa, nếu bit là 0 thì trang khơng cần lưu trở lại đĩa.
Số hiệu Bit Dirty bit khung trang Valid - Invalid
Nhờ cơ chế hệ thống thay thế trang, hệ thống hồn tồn cĩ thể tách biệt bộ nhớ ảo và bộ nhớ vật lý, cung cấp cho lập trình viên một bộ nhớ ảo rất lớn trên bộ nhớ vật lý bé hơn rất nhiều lần.