Mỗi lần truy xuất 1 ô nhớ có thể dẫn ₫ến lỗi truy xuất trang page fault nếu trang này chưa có trong bộ nhớ RAM, ₫iều này dẫn ₫ến việc tìm trang thật ₫ể nạp trang ảo ₫ang cần vào.. Trong
Trang 1Bài thực hành số 8.1 : Các chiến lược thay thế trang
I Mục tiêu :
Giúp SV củng cố các kiến thức về các chiến lược tìm và giải phóng trang mỗi khi có lỗi truy xuất trang
II Nội dung :
Cố gắng trả lời các câu hỏi ₫ề ra về các chiến lược thay thế trang
III Chuẩn ₫ầu ra :
Sinh viên nắm vững kiến thức về các chiến lược thay thế trang
IV Qui trình :
1 Nhắc lại lý thuyết :
Việc thực thi một chương trình kéo theo 1 chuỗi các hoạt ₫ộng truy xuất bộ nhớ Để thực hiện 1 lệnh, cần nhiều lần truy xuất bộ nhớ ₫ể lấy mã lệnh, lấy dữ liệu bị tác ₫ộng bởi lệnh mà chương trình thì gồm rất nhiều lệnh, có khi hàng tỉ lệnh cần thực thi Mỗi lần truy xuất 1 ô nhớ có thể dẫn ₫ến lỗi truy xuất trang (page fault) nếu trang này chưa có trong bộ nhớ RAM, ₫iều này dẫn ₫ến việc tìm trang thật ₫ể nạp trang ảo ₫ang cần vào Việc tìm trang thật thường yêu cầu việc giải phóng trang thật ₫ang dùng Các hoạt ₫ộng thực hành trong bài này sẽ giúp SV hiểu rõ các cơ chế làm việc của các chiến lược thay thế trang khác nhau Tại sao việc thực thi chương trình dẫn ₫ến nhiều lỗi truy xuất trang ? Trong khoảng thời gian ngắn, chương trình chỉ cần truy xuất 1 vùng rất nhỏ của không gian làm việc tổng thể của nó, do ₫ó sẽ là rất lãng phí và không cần thiết ₫ể nạp toàn bộ không gian làm việc của chương trình vào bộ nhớ RAM trước khi chạy, nhưng nếu chỉ nạp từng phần nhỏ (page) thì sẽ
có lúc chương trình cần truy xuất ô nhớ nằm trong trang mà chưa ₫ược nạp, lúc này hệ thống
có thể nạp trang mới ₫è lên vùng RAM mà trang cũ ₫ang chiếm : chiến lược thay thế trang sẽ xác ₫ịnh trang cũ nào là nạn nhân bị chiếm lại
Trong trường hợp mỗi process ₫ược cấp phát vùng nhớ RAM cố ₫ịnh (chiếm n trang thật), ta có thể thêm từng trang mới cần dùng vào vùng nhớ ₫ược cấp phát cho chương trình, tuy nhiên ₫ến lúc nào ₫ó, vùng nhớ này sẽ hết, lúc này ta phải giải phóng trang cũ khi cần nạp trang mới vào Kích thước vùng nhớ cấp phát cho 1 process thay ₫ổi theo yêu cầu của process ₫ó, ta có thể dùng chiến lược kiểu "Working set" ₫ể giải quyết việc cấp phát hợp lý cho từng process
1 Giải thuật tối ưu :
Mỗi khi có lỗi truy xuất trang, nếu ta biết trang nào mà thời ₫iểm truy xuất lại nó xa nhất
so với hiện tại thì ta sẽ giải phóng trang này vì như vậy sẽ gây ít rủi ro nhất Tuy nhiên, khó lòng thực hiện ₫ược chính xác ý tưởng trên vì ta không thể tiên ₫oán chính xác cái gì sẽ xảy
ra trong tương lai
Giả sử process P1 truy xuất bộ nhớ theo thứ tự các trang sau ₫ây :
5 0 1 2 0 3 0 4 2 3 0 3 2 1 2
Trang 2Giả sử hệ thống không hạn chế số trang thật dành cho process P1, việc truy xuất trang của process P1 ở trên sẽ gây ra bao nhiêu lỗi truy xuất trang ? Tối thiểu cần phân phối cho P1 bao nhiêu trang thật ₫ể ₫ạt ₫ược số lỗi truy xuất trang tối thiểu như trên ?
Xét trình tự truy xuất trang ở trên, ta thấy process cần truy xuất 6 trang ảo khác nhau (chỉ số từ 0 tới 5), do ₫ó tối thiểu là tạo ra 6 lỗi truy xuất trang khác nhau
Để số lỗi truy xuất trang tối thiểu như trên, ₫ừng bao giờ giải phóng trang mà sau ₫ó ta cần truy xuất lại Khi cần nạp trang 0, thay vì nạp vào trang thật mới, ta có thể nạp vào trang thật ₫ang chứa trang 5 vì trang 5 không bao giờ cần truy xuất lại Ngược lại khi nạp trang 1 thì không nên ₫è lên trang 0 vì trang 0 sẽ ₫ược truy xuất lại, ta nên dùng thật khác Tương tự, khi nạp trang 2 thì nên dùng trang thật mới Tương tự, khi nạp trang 3 thì nên dùng trang thật mới Tương tự, khi nạp trang 4 thì nên dùng trang thật mới Tóm lại tối thiểu cần cấp phát cho P1 5 trang thật thì việc nạp trang ảo ₫ể thực thi P1 mới hiệu quả nhất (số lần gây lỗi truy xuất trang thấp nhất = 6 lần) Ta nói việc cấp phát này là tối ưu, với ₫iều kiện là P1 chỉ tham khảo trang 5, không ghi nội dung vào trang 5, vì nếu ghi nội dung vào trang 5 thì hệ thống phải tốn nhiều thời gian ₫ể ghi nội dung trang 5 lên ₫ĩa trước khi dùng lại nó ₫ể chứa trang khác (trang 0), ₫iều này làm chậm việc thi hành P1 lại
1.2 Câu hỏi 2
Miêu tả qui trình tiến triển của bảng quản lý trang và số lần lỗi truy xuất trang nếu hệ thống chỉ cấp phát cho P1 3 trang thật
Có tất cả 8 lần lỗi truy xuất trang như sau :
5 0 1 2 0 3 0 4 2 3 0 3 2 1 2
5 0 0 0 X
2 Giải thuật thây thế trang FIFO (First in - First out)
Tinh thần của giải thuật này là mỗi lần có lỗi truy xuất trang, hệ thống tìm và giải phóng trang ₫ược nạp vào bộ nhớ thật cũ nhất (lâu nhất so với hiện tại)
2.1 Câu hỏi 3
Giả sử process P1 truy xuất bộ nhớ theo thứ tự các trang sau ₫ây :
5 0 1 2 0 3 0 4 2 3 0 3 2 1 2
Miêu tả qui trình tiến triển của bảng quản lý trang và số lần lỗi truy xuất trang nếu hệ thống chỉ cấp phát cho P1 3 trang thật
Có tất cả 12 lần lỗi truy xuất trang như sau :
Trang 30 1 1 1 1 X 2 2 2 X 0 0 0 0 0
3 Giải thuật thay thế trang cho cơ hội lần 2 hay còn gọi là FINUFO (First in Not Used First Out)
Trong record chứa các thông tin quản lý trang, ta thêm 1 bit R ₫ể miêu tả tình trạng truy xuất trang theo ý nghĩa sau : mỗi lần nạp trang vào bộ nhớ, bit R của trang ₫ược set lên 1, mỗi lần process truy xuất trang, bit R của trang ₫ược set lên 1 Các record quản lý trang ₫ược sắp xếp theo thứ tự nạp : trang ở ₫ầu danh sách là trang ₫ược nạp mới nhất, trang ở ₫uôi là trang ₫ược nạp cũ nhất Mỗi khi có lỗi truy xuất trang, trang ₫ược nạp cũ nhất (₫uôi danh sách) ₫ược xem xét Nếu bit R của nó là 1, ta xóa R =0 và dời nó lên ₫ầu danh sách chứ chưa giải phóng nó (cho nó cơ hội lần 2) Như vậy, trang ₫ược chọn giải phóng là trang ₫ược nạp vào cũ nhất mà có bit R = 0
3.1 Câu hỏi 4
Giả sử process P1 truy xuất bộ nhớ theo thứ tự các trang sau ₫ây :
5 0 1 2 0 3 0 4 2 3 0 3 2 1 2
Miêu tả qui trình tiến triển của bảng quản lý trang và số lần lỗi truy xuất trang nếu hệ thống chỉ cấp phát cho P1 3 trang thật
Có tất cả 11 lần lỗi truy xuất trang như sau :
5,1 0,1
5,1
1,1 0,1 5,1
2,1 1,0 0,0
2,1 1,0 0,1
3,1 0,0 2,1
3,1 0,1 2,1
4,1 3,0 0,0
2,1 4,1 3,0
2,1 4,1 3,1
0,1 2,0 4,0
3,1 0,1 2,0
3,1 0,1 2,1
1,1 3,0 0,0
2,1 1,1 3,0
4 Giải thuật thay thế trang LRU (Least Recently Used)
Mỗi khi có lỗi truy xuất trang, ta chọn và giải phóng trang ₫ược sử dụng cũ nhất so với hiện tại
Trang 4Giả sử process P1 truy xuất bộ nhớ theo thứ tự các trang sau ₫ây :
5 0 1 2 0 3 0 4 2 3 0 3 2 1 2
Miêu tả qui trình tiến triển của bảng quản lý trang và số lần lỗi truy xuất trang nếu hệ thống chỉ cấp phát cho P1 3 trang thật
Có tất cả 10 lần lỗi truy xuất trang như sau :
5 Giải thuật dùng Working set
Working set là 1 chuỗi có thứ tự các hoạt ₫ộng truy xuất trang theo thời gian Số trang trong working set thay ₫ổi theo chức năng truy xuất Định kỳ, working set ₫ược cập nhật ₫ể chỉ giữ lại các trang ₫ược truy xuất trong khoảng thời gian gần nhất so với hiện tại
5.1 Câu hỏi 6
Giả sử process P1 truy xuất bộ nhớ theo thứ tự các trang sau ₫ây :
5 0 1 2 0 3 0 4 2 3 0 3 2 1 2
Giả sử working set ₫ược cập nhật theo chu kỳ có 3 lần truy xuất bộ nhớ và ta chỉ giữ lại các trang ₫ược truy xuất trong 3 lần cuối Miêu tả qui trình tiến triển của working set và số lần lỗi truy xuất trang
Có tất cả 9 lần lỗi truy xuất trang như sau :
5