CHƯƠNG 3 : QUẢN LÝ BỘ NHỚ
3.8. CẤP PHÁT KHUNG TRANG
3.8.1. Giới hạn số lượng khung
Với bộ nhớ ảo, tiến trình khơng nhất thiết phải nằm hồn tồn trong bộ nhớ máy tính. Một số trang của tiến trình được cấp phát khung nhớ trong khi những trang khác tạm nằm trên đĩa. Vấn đề đặt ra với hệ điều hành là cấp phát bao nhiêu khung cho mỗi tiến trình. Số khung cấp cho mỗi tiến trình càng nhỏ thì càng chứa được nhiều tiến trình trong bộ nhớ tại mỗi thời điểm. Tuy nhiên, khi lựa chọn số lượng khung tối đa cho mỗi tiến trình, cần chú ý hai nhận xét sau:
- Khi số lượng khung cấp tối đa cấp cho mỗi tiến trình giảm xuống tới một mức nào đó, lỗi thiếu trang sẽ diễn ra thường xuyên. Chẳng hạn, khi việc thực hiện một lệnh yêu cầu truy cập tới nhiều trang hơn số khung được cấp thì việc thiếu trang sẽ lặp đi lặp lại do không bao giờ các trang nhớ yêu cầu có mặt đồng thời trong bộ nhớ. - Việc cấp thêm khung cho tiến trình sẽ làm giảm tần suất thiếu trang. Tuy nhiên, khi
số lượng khung cấp cho tiến trình tăng lên đến một mức nào đó, thì việc tăng thêm khung cho tiến trình khơng làm giảm đáng kể tần suất thiếu trang nữa. Lý do chủ yếu là do số lượng khung đã trở nên bão hòa (xấp xỉ yêu cầu bộ nhớ tối đa của tiến trình), hoặc do nguyên tắc cục bộ, theo đó, tại mỗi thời điểm, những trang nhớ cần truy cập đồng thời đã được tải đủ vào số khung được cấp phát.
Từ nhận xét thứ nhất, hệ điều hành thường được đặt một giới hạn tối thiểu các khung cấp phát cho mỗi tiến trình. Mỗi tiến trình sẽ được cấp phát số lượng khung không nhỏ hơn giới hạn này. Giới hạn tối thiểu được xác định dựa trên kiến trúc phần cứng máy tính. Những yếu tố cơ bản để xác định giới hạn là số toán hạng trong một lệnh máy và kích thước trang nhớ.
Trên cơ sở nhận xét thứ hai, có hai phương pháp thường được hệ điều hành sử dụng để quyết định số lượng khung tối đa cấp phát cho mỗi tiến trình: phương pháp cấp phát số lượng khung cố định và cấp phát số lượng khung thay đổi.
a) Cấp phát số lượng khung cố định.
Theo cách cấp phát này, hệ điều hành cấp cho tiến trình một số lượng cố định khung để chứa trang nhớ của mình. Số lượng này được xác định vào thời điểm tạo mới tiến trình và khơng thay đổi trong q trình tiến trình tồn tại. Đến đây lại có hai cách tính số lượng khung tối đa.
Cấp phát bằng nhau. Theo cách này, mỗi tiến trình được cập một số lượng khung tối
đa giống nhau, không phụ thuộc vào đặc điểm riêng của tiến trình. Số lượng khung tối đa khi đó được xác định dựa trên kích thước bộ nhớ và mức độ đa chương trình mong muốn.
Cấp phát khơng bằng nhau. Số lượng khung tối đa cấp cho tiến trình có thể khác nhau
và được tính tốn dựa trên đặc điểm tiến trình như kích thước khơng gian nhớ lơ gic, dạng tiến trình (tiến trình nền, tiến trình tương tác trực tiếp .v.v.). Cách đơn giản nhất là cấp cho mỗi tiến trình số lượng khung tỷ lệ thuận với kích thước tiến trình. Trong những hệ thống có
quy định mức ưu tiên cho tiến trình, tiến trình với mức ưu tiên cao hơn có thể được cấp nhiều khung hơn tiến trình với mức ưu tiên thấp.
b) Cấp phát số lượng khung thay đổi
Theo phương pháp này, số lượng khung tối đa cấp cho mỗi tiến trình có thể thay đổi trong q trình thực hiện. Việc thay đổi số khung tối đa phụ thuộc vào tình hình thực hiện của tiến trình. Tiến trình có tần suất đổi trang cao sẽ được cấp thêm khung nhớ, trong khi đó tiến trình có tần suất đổi trang thấp có thể bị thu hồi bớt khung.
Phương pháp cấp phát số lượng khung thay đổi cho phép sử dụng bộ nhớ hiệu quả hơn phương pháp cố định. Tuy nhiên, để thay đổi số lượng khung tối đa một cách hợp lý, hệ điều hành cần theo dõi và xử lý thơng tin về tình hình sử dụng bộ nhớ của tiến trình.
Phương pháp cấp phát số lượng khung thay đổi có liên quan chắt chẽ với phạm vi cấp phát khung được trình bày ngay sau đây.
3.8.2. Phạm vi cấp phát khung
Phạm vi cấp phát là vấn đề quan trọng khác khi cấp khung cho tiến trình. Phạm vi cấp phát được phân thành cấp phát toàn thể (global) và cấp phát cục bộ (local).
Chiến lược cấp phát toàn thể cho phép tiến trình đổi trang mới vào bất cứ khung nào (khơng bị khóa), kể cả khung đã được cấp phát cho tiến trình khác. Ngược lại, với phương pháp cấp phát cục bộ, trang chỉ được đổi vào khung đang được cấp cho tiến trình.
Phạm vi cấp phát có quan hệ mật thiết với số lượng khung tối đa trình bày ở trên. Cụ thể là, số lượng khung cố định tương ứng với phạm vi cấp phát cục bộ. Khi đạt tới số lượng khung tối đa cho phép, nếu muốn nạp trang mới vào, tiến trình phải giải phóng một khung đang sử dụng để đảm bảo không tăng số lượng khung, tức là tiến trình phải đổi trang với một trang của mình.
Trong khi đó, với số lượng khung tối đa thay đổi, tiến trình có thể đổi trang vào một khung khơng phải của mình, qua đó tăng số lượng khung được sở hữu. Việc đổi trang mới vào khung của tiến trình khác cũng đồng thời làm giảm số lượng khung của tiến trình kia.