CHƯƠNG 3 : QUẢN LÝ BỘ NHỚ
3.7. ĐỔI TRANG
3.7.1. Tại sao phải đổi trang
Khi xẩy ra thiếu trang, hệ điều hành tìm một khung trống trong bộ nhớ, đọc trang thiếu vào khung và tiến trình sau đó hoạt động bình thường. Tuy nhiên, do kích thước của các tiến trình có thể lớn hơn kích thước bộ nhớ thực rất nhiều nên tới một lúc nào đó sẽ xảy ra tình trạng tồn bộ bộ nhớ đã được cấp phát, hệ điều hành khơng thể tìm được khung trống để tải trang mới vào.
Cách giải quyết đơn giản nhất trong trường hợp đó là hệ điều hành kết thúc tiến trình do không thoả mãn được nhu cầu bộ nhớ. Nhưng, như ta đã biết, mục đích của bộ nhớ ảo là cho phép các tiến trình sử dụng được khơng gian nhớ lớn hơn khơng gian nhớ thực và tăng tính đa chương trình của hệ thống. Tiến trình và người dùng cần được đáp ứng nhu cầu về bộ nhớ.
Cách giải quyết thứ hai là tạm trao đổi tiến trình ra đĩa, giải phóng tồn bộ khơng gian mà tiến trình chiếm trong bộ nhớ và chờ tới khi thuận lợi (nhiều bộ nhớ trống hơn) mới nạp lại tiến trình vào bộ nhớ để thực hiện tiếp. Cách giải quyết này là cần thiết trong một số trường hợp.
Cách giải quyết thứ ba được áp dụng trong đa số trường hợp. Đó là sử dụng kỹ thuật đổi trang.
Thao tác đổi trang
Bản chất của việc đổi trang như sau. Nếu khơng có khung nào trống, hệ điều hành chọn một khung đã cấp phát nhưng hiện giờ khơng dùng tới và giải phóng khung trang này. Nội dung của khung được trao đổi ra đĩa, trang nhớ chứa trong khung sẽ được đánh dấu khơng cịn nằm trong bộ nhớ (bằng cách thay đổi bit P tương ứng) trong bảng phân trang có chứa trang này. Khung đã được giải phóng được cấp phát cho trang mới cần nạp vào.
Cụ thể, quá trình đổi trang diễn ra qua một số bước sau: Bước 1: Xác định trang cần nạp vào trên đĩa
Bước 2: Nếu có khung trống trống thì chuyển sang bước 4. Bước 3:
a) Lựa chọn một khung để giải phóng. Khung được lựa chọn theo một thuật tốn hay chiến lược đổi trang nào đó.
b) Ghi nội dung khung bị đổi ra đĩa (nếu cần); cập nhật bảng trang và bảng khung.
Bước 4: Đọc trang cần nạp vào khung vừa giải phóng; cập nhật bảng trang và bảng khung để thể hiện thay đổi này.
Bước 5: Thực hiện tiếp tiến trình từ điểm bị dừng trước khi đổi trang. PTIT
Đổi trang có ghi và đổi trang không ghi. Nếu nhu cầu đổi trang xuất hiện khi nạp trang mới, thời gian nạp trang sẽ tăng đáng kể do xuất hiện thêm nhu cầu ghi trang bị đổi ra đĩa. Để giảm thời gian này, các trang nhớ có nội dung khơng thay đổi từ lúc nạp vào được hệ điều hành nhận biết và không ghi ngược ra đĩa. Việc nhận biết được thực hiện bằng cách sử dụng một bit trong khoản mục của trang gọi là bit sửa đổi (ta sẽ ký hiệu là bit M). Mỗi khi có một byte hay từ của trang bị sửa đổi, bit này sẽ được xác lập bằng 1. Một trang nhớ có bit sửa đổi bằng 1 sẽ được ghi ra đĩa khi đổi trang.
Các khung bị khố: Khi tìm các khung để giải phóng và đổi trang, hệ điều hành sẽ trừ
ra một số khung. Các khung và trang chứa trong khung này được đánh dấu bị khố và sẽ khơng bao giờ bị đổi ra đĩa. Đó thường là các khung chứa trang nhớ thuộc các tiến trình nhân của hệ điều hành hoặc chứa những cấu trúc thông tin điều khiển quan trọng. Những phần bộ nhớ này cần thiết cho việc hoạt động của hệ thống và do vậy cần thường xuyên được giữ trong bộ nhớ, không được đổi ra đĩa. Các khung bị khoá được nhận biết bởi một bit riêng chứa trong bảng khung.