CHƢƠNG 7 QUẢN Lí BỘNHỚ
7.2.7 PHÂN ĐOẠN THEO YấU CẦU
Mặc dự phõn trang theo yờu cầu được đỏnh giỏ là hệ thống bộ nhớ ảo hiệu quả nhất, nhưng cần nhiều phần cứng hỗ trợ. Đú chớnh là nguyờn nhõn ra đời phõn đoạn theo yờu cầu. Kiến trỳc Intel 80286 khụng phõn trang, nhưng phõn đoạn bộ nhớ. HĐH OS/2 khi chạy trờn kiến trỳc này sẽ dựng phần cứng phõn đoạn để cài đặt phõn đoạn theo yờu cầu - một cỏch thức gần giống phõn trang theo yờu cầu. OS/2 cấp phỏt bộ nhớ theo đoạn và kiểm soỏt cỏc đoạn thụng qua bộ mụ tả đoạn (segment descriptors) - chứa thụng tin về kớch thước, mức bảo vệ, vị trớ của đoạn. Khụng nhất thiết phải tải tất cả cỏc đoạn của tiến trỡnh vào trong bộ nhớ. Trong bộ mụ tả đoạn, mồi đoạn sẽ cú trường bit hợp lệ, nhằm xỏc định đoạn hiện cú nằm trong bộ nhớ hay khụng. Khi tiến trỡnh truy cập đến đoạn nào đấy, phần cứng sẽ kiểm tra mó họp lệ. Nếu đoạn đó nằm trong bộ nhớ, tiến trỡnh tiến hành truy cập bỡnh thường. Nếu đoạn chưa nằm trong bộ nhớ, phần cứng tạo ra ngắt (lồi đoạn) để HĐH nắm lấy quyền sử dụng CPU giống như phõn trang theo yờu cầu. Sau đú, OS/2 hoỏn chuyển một đoạn sang ổ cứng và tải đoạn được yờu cầu vào bộ nhớ chớnh. Chỉ thị bị tạm dừng trước khi phỏt sinh lỗi đoạn được khụi phục để tiếp tục thực hiện. Để xỏc định đoạn nào bị thay thế trong trường hợp lỗi đoạn, OS/2 sử dụng bit truy cập (accessed bit) trong bộ mụ lả đoạn. Bit truy cập giống bit tham chiếu trong phõn trang theo yờu cầu, được thiết lập (nhận giỏ trị 1) khi bất cứ byte nào trong đoạn được đọc hoặc ghi. Sừ dụng một hàng đợi duy trỡ chỉ mục cho mỗi đoạn trong bộ nhớ. Sau mồi khoảng thời gian xỏc định, OS/2 đưa danh sỏch cỏc đoạn vừa được truy cập vào đầu hàng đợi. Sau đú sẽ xúa bit truy cập của cỏc đoạn. Hàng đợi này sắp xếp theo thứ tự thời gian và đoạn được truy cập gần nhất nằm tại đinh. Bờn cạnh đú, OS/2 cú lời gọi hệ thống cho cỏc tiến trỡnh thụng bỏo cho HĐH cỏc đoạn khụng được loại bỏ, hoặc phải luụn nằm trong bộ nhớ. Thụng tin này giỳp cho HĐH sắp xếp thứ tự cỏc đoạn trong hàng đợi. Khi lỗi đoạn xuất hiện, trước tiờn bộ phận quản lý bộ nhớ phải xỏc định xem cú đủ bộ nhớ
trống để tải đoạn vào khụng. Thu gọn bộ nhớ cú thể dược thực hiện để làm giảm phõn mảnh ngoài. Nếu sau khi thu gọn mà vẫn khụng đủ bộ nhớ trụng, phỏi thực hiện thay thế đoạn. Đoạn nằm cuối hàng đợi sẽ dược thay thế bằng cỏch hoỏn chuyển ra ồ đĩa cứng. Nếu vựng trống trong bộ nhớ vừa được giải phúng đủ lớn, đoạn dược yờu cầu sẽ được lài vào bộ nhớ, bộ mụ tả đoạn được cập nhật. Nếu vẫn thiếu bộ nhớ, hệ thống lại phải thay thế thờm một đoạn khỏc và quỏ trỡnh này lại tiếp tục.