Bài giảng Hệ điều hành - Chương 8: Vitual Memory - Hà Duy An

pdf 64 trang huongle 4351
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 8: Vitual Memory - Hà Duy An", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_8_vitual_memory_ha_duy_an.pdf

Nội dung text: Bài giảng Hệ điều hành - Chương 8: Vitual Memory - Hà Duy An

  1. Khoa Công Nghệ Thông Tin & Truyền Thông ĐạihọcCầnThơ Giảng viên: Hà Duy An
  2. 1. Tổng quan 2. Phân trang theo yêu cầu 3.Thay thế trang 4.C ấp phát khung trang 5. Thrashing 6.M ộtsố tác vụ vớikỹ thuậtbộ nhớảo 10/28/20132 Chương 8: Virtual Memory
  3. • Cácmãlệnh phải trong bộ nhớđểthực thi, nhưng toàn bộ chương trình hiếm khi được dùng o Các lệnh xử lý lỗi, các cấutrúcdữ liệulớn, các tùy chọnvàtính năng ít dùng. • Toàn bộ chương trình không phải đượcsử dụng cùng mộtlúc • Khả năng nạpchương trình từng phầnvàobộ nhớđểthực thi: o Giải phóng sự ràng buộcvớigiớihạncủabộ nhớ thực o Nhiềuchương trình có thể thựcthiđồng thời o Thao tác I/O để nạp và hoán vị tiếntrìnhcầníthơn 10/28/20134 Chương 8: Virtual Memory
  4. • Bộ nhớảo (Virtual memory):táchbiệtbộ nhớ luậnlýcủangười dùng ra khỏibộ nhớ vậtlý: o Chỉ mộtphầncủachương trình cần ở trong bộ nhớđểthựcthi không gian địachỉ luậnlýcóthể lớnhơnnhiềusovới không gian địa chỉ vậtlý. o Chophépkhônggianđịachỉ có thể trảirộng ra với các khoảng trống dành cho việcsử dụng trong tương lai o Các thư việnchiasẽ hay bộ nhớ chia sẽ có thểđượccàiđặtbằng cách ánh xạđốitượng cầnchiasẽ vào trong không gian luậnlýcủa các tiến trình o Các trang có thểđượcchiasẽ trong suốtthờigiantạotiếntrìnhvớilời gọihệ thống fork() => tăng tốc độ tạotiếntrình o Nhiềuchương trình có thểđược đưavàobộ nhớđểthựcthiđồng thời o CầnítthaotácI/Ohơn khi nạp hay khi hoán vị 10/28/20135 Chương 8: Virtual Memory
  5. 10/28/20136 Chương 8: Virtual Memory
  6. 10/28/20137 Chương 8: Virtual Memory
  7. 10/28/20138 Chương 8: Virtual Memory
  8. • Bộ nhớảocóthểđược cài đặt: o Phân trang theo yêu cầu o Phân đoạntheoyêucầu 10/28/20139 Chương 8: Virtual Memory
  9. 10/28/201310 Chương 8: Virtual Memory
  10. • Mang toàn bộ tiến trình vào trong bộ nhớ (phân trang thông thường) • Hay chỉ mang một trang vào bộ nhớ khi cầnthiết(phân trang theo yêu cầu – Demand Paging) o CầnítthaotácI/Ohơn o Cầnítbộ nhớ vậtlýhơn o Rút ngắnthờigianđáp ứng o Phụcvụ nhiềungười dùng hơn • Khi cầnmộttrang ⇒ tham khảotớinó o Tham khảo không hợplệ ⇒ thoát o Trang không có trong bộ nhớ ⇒ đem nó vào bộ nhớ • Lazy swapper (bộ hoán vị lười) – không bao giờ hoán vị mộttrang vào bộ nhớ trừ khi trang đócần dùng o Swapper xử lý với các trang gọilàpager 10/28/201311 Chương 8: Virtual Memory
  11. 10/28/201312 Chương 8: Virtual Memory
  12. • Kếthợpvớimỗimụctừ trong bảng trang một bit valid/invalid (v (1) ⇒in-memory, i (0) ⇒ not-in-memory) • Khởi đầu bit valid/invalid củamọimụctừđược đặtlài. • Ví dụ về thựctrạng mộtbảng trang: Frame # valid‐invalid bit v v v v • Trong tiếntrìnhdịch địachỉ,nếu i bit valid/invalid trong mộtmục . từ của bảng trang = 0 ⇒ i có lỗi trang (Page Fault). i page table 10/28/201313 Chương 8: Virtual Memory
  13. 10/28/201314 Chương 8: Virtual Memory
  14. • Nếucómộtthamkhảo đếnmột trang, tham khảo đầutiênđến trang đó luôn được giao cho hệđiềuhànhxử lý: lỗitrang • Các bướcxử lý lỗi trang củaHĐH: o H ệđiềuhànhsẽ nhìn vào internal table (chứa trong PCB) để xác định: • Tham khảo không hợplệ ⇒ kết thúc tiến trình. • Hay là trang không có trong bộ nhớ => mang nó vào 1. Tìm một khung trang còn trống 2. Hoán vị trang vào khung trang. 3. Thiết lập lại bảng trang bằng cách đặt bit kiểm tra = v. 4. Khởi động lại chỉ thị đã bị ngắt bởi lỗi trang 10/28/201315 Chương 8: Virtual Memory
  15. 10/28/201316 Chương 8: Virtual Memory
  16. • Khi tiến trình bắt đầu đượcthực thi – không có trang nào trong bộ nhớ,lỗi trang (page fault): o Tham khảo đếnlệnh đầu tiên củatiếntrình o Mỗitrangcủatiếntrìnhđượctruycậplần đầu Pure demand paging • Mộtlệnh có thể truy cậpnhiều trang cùng lúc => nhiềulỗi trang o Chương trình khuynh hướng tham chiếucụcbộ • Phầncứng hỗ trợ phân trang theo yêu cầu: o Bảng trang: valid/invalid bit o Bộ nhớ phụ (thiếtbị hoán vị với không gian hoán vị) o Khởi động lạimộtlệnh 10/28/201317 Chương 8: Virtual Memory
  17. • Mộtlệnh có thể truy cậpvàivị trí khác nhau: o Lệnh move o Lỗi trang khi đã di chuyểndữ liệumộtphần? o Nguồnvàđích phủ lấp lên nhau? • Phương pháp giải quyết: o Truy cậpthămdò o Lưugiữ giá trị bị ghi đè 10/28/201318 Chương 8: Virtual Memory
  18. • Các bướcthựchiện phân trang theo yêu cầu: 1. Thông báo cho HĐH 2. Lưulại các thanh ghi và trạng thái củatiến trình người dùng 3. Xác định ngắtlàmộtlỗitrang 4. Kiểm tra tính hợplệ của trang tham khảo, xác định vị trí củatrangtrênđĩa 5. Đọctrangtừđĩa vào khung trống: a. Chờ trong hàng đợithiếtbị cho đến khi yêu cầu đọc đượcphụcvụ b. Chờ thiếtbị tìm kiếm(độ trễ thời gian - latency time) c. Bắt đầu chuyển trang vào khung trống 6. Trong khi chờđợi, cấpCPUchongười dùng khác 7. Nhậnmộtngắttừ hệ thống I/O đĩa (I/O completed) 8. Lưu các thanh ghi và trạng thái củatiếntrìnhđang thựcthi(củangười dùng khác) 9. Xác định ngắt phát ra từđĩa 10. Điềuchỉnh bảng trang và các bảng khác có liên quan để cho thấyrằng trang bây giờđang nằm trong bộ nhớ 11. Chờđểđượccấp phát CPU lầnnữa 12. Khôi phụclại các thanh ghi, trạng thái củatiến trình, và bảng trang mới, sau đó khởi động lạilệnh đãbị ngắt 10/28/201319 Chương 8: Virtual Memory
  19. • Tỉ lệ lỗi trang 0 ≤ p ≤ 1.0 o if p=0không có lỗivề trang o if p=1,mọithamkhảotrangđềubị lỗi • Thờigiantruyxuấtthực (Effective Access Time - EAT) EAT = (1 – p) x [memory access] + p x [page fault time] • [ page fault time] = [page fault overhead] + [swap page out ] + [swap page in] + [restart overhead] + 10/28/201320 Chương 8: Virtual Memory
  20. • Memory access time = 200 nanoseconds • Average page-fault service time = 8 milliseconds • EAT = (1 – p) x 200 + p (8 milliseconds) = (1 – p x 200 + p x 8,000,000 = 200 + p x 7,999,800 • Nếu trong 1,000 lần truy xuất có một lỗi trang thì EAT = 8.2 microseconds. => Chậm hơn 40 lần khi không dùng phân trang theo yêu cầu • Nếu muốn truy xuất chỉ chậm hơn 200 + 7,999,800 x p 20 > 7,999,800 x p p Cần giữ cho tỉ lệ lỗi trang thấp nhất có thể trong hệ thống phân trang theo yêu cầu, nếu không sự thực thi của tiến trình có thể rất chậm 10/28/201321 Chương 8: Virtual Memory
  21. • Sao chép toàn bộảnh củatiến trình vào không gian hoán chuyển(swap space)vàothờigiannạptiếntrình o Hoán vị trang vào/ra swap space o Được dùng trong các phiên bảncũ củaBSDUnix • Lấy trang từ chương trình nhị phân trên đĩa, nhưng chỉ xóa trang (không hoán vị trang ra đĩa) khi cần khung trống o Được dùng trong Soloris và BSD Unix hiệnhành 10/28/201322 Chương 8: Virtual Memory
  22. 10/28/201323 Chương 8: Virtual Memory
  23. 10/28/201324 Chương 8: Virtual Memory
  24. • Điềugìxảy ra khi không còn khung trống? • Ngănchặnviệccấpphátbộ nhớ vượtquámứcbằng cách dùng giải pháp thay thế trang. o Chọnmộttrangđã đượcnạp và không đang được dùng, giải phóng nó bằng cách viếtnội dung của nó vào không gian hoán chuyển(swap space). o Dùng khung đã đượcgiải phóng này để nạptrangđượcyêucầu. • Sử dụng bit modify (dirty) để làm giảm chi phí cho việc chuyển trang ra đĩa. • Giảiphápthaythế tranghoànthiện thêm công việctáchbiệt hóa bộ nhớảovàbộ nhớ vậtlý: o Bộ nhớảocóthể lớnhơnbộ nhớ thực o Thựchiệnchương trình trong một vài khung, và tìm một khung trống mỗi khi cầnthiết. 10/28/201325 Chương 8: Virtual Memory
  25. 1. Tìm vị trí của trang mong muốntrênđĩa. 2. Tìm một khung trang còn trống: o Nếu còn khung trống, sử dụng nó. o Nếu không còn khung trống, sử dụng giảithuậtthaythế trang để tìm ra khung nạn nhân. 3. Đọc trang mong muốn vào khung trống mớitìmra.Cậpnhật lại trang và các bảng trang. 4. Tiếptụctiến trình. => Có thể phảicần hai thao tác chuyển trang khi có một lỗi trang xuấthiện->EATtăng 10/28/201326 Chương 8: Virtual Memory
  26. 10/28/201327 Chương 8: Virtual Memory
  27. • Giảithuậtcấp phát khung xác định: o Bao nhiêu khung sẽ cấp phát cho mỗitiếntrình • Giảithuậtthaythế trang: o Khung nào sẽđược thay thế o Mong muốntỉ lệ lỗitrangthấpnhất. • Đánh giá giảithuậtbằng cách chạynótrênmộtchuỗithamkhảobộ nhớ cụ thể và tính toán số lỗivề trang phát sinh. o Chuỗi tham khảochỉ là số hiệucủa trang, không phải địachỉđầy đủ o Ví dụ chuỗithamkhảo trang như sau: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1 10/28/201328 Chương 8: Virtual Memory
  28. • Nhậnxét: khi số khung tăng lên, số lượng lỗi trang giảm xuống mộtmức độ tốithiểu. 10/28/201329 Chương 8: Virtual Memory
  29. • Chuỗi tham khảolà:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • Có 3 khung (3trangcóthể nằm trong bộ nhớ cho mỗitiến trình) 1 1 4 5 2 2 1 3 9 page faults 3 3 2 4 • 4 khung 1 1 5 4 2 2 1 5 10 page faults 3 3 2 434 10/28/201330 Chương 8: Virtual Memory
  30. • Có thể rất khác nhau với các chuỗi tham khảo trang khác nhau 10/28/201331 Chương 8: Virtual Memory
  31. • Thay thế trang kiểuFIFO⇒ Nghịch lý Belady (Belady’s Anomaly) o Càng nhiều khung trang ⇒ càng nhiềulỗivề trang 10/28/201332 Chương 8: Virtual Memory
  32. • Thay thế trang sẽ không đượcsử dụng trong mộtthờigiandài. • 4 frames example 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 4 2 6 lỗi về trang 3 4 5 • Bảo đảmtỉ lệ lỗitrangthấpnhấtcóthể cho mộtsố lượng khung trang cốđịnh • Khó cài đặt– đòi hỏiphảibiếtchuỗithamkhảo trang trong tương lai Thường được dùng để nghiên cứusosánh, đo lường các giảithuật. 10/28/201333 Chương 8: Virtual Memory
  33. 10/28/201334 Chương 8: Virtual Memory
  34. • Thay thế trang không đuợc dùng trong một khoảng thờigian dài nhất • Chuỗi tham khảo trang: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1 1 1 1 5 2 2 2 2 2 3 5 5 4 4 4 4 3 3 3 10/28/201335 Chương 8: Virtual Memory
  35. 10/28/201336 Chương 8: Virtual Memory
  36. • Cài đặtbộđếm: o Mỗimộtmụctừ trong bảngtrangcómộtbộđếm (time-of-used field) , mỗikhitrang đượcthamkhảo đến, chép nộidungcủa đồng hồ hệ thống vào bộđếmnày. o Khi mộttrangcần đượcthayđổi, nhìn vào các bộđếm để quyết định trang sẽđượcthayđổi. • Cài đặtstack–tạomột stack chứa các số thứ tự trang: o Khi mộttrangđượcthamkhảo: • Di chuyểnsố thứ tự củanólên đỉnh củastack.=>trangLRUnằm ởđáy của stack o Không phải tìm kiếm để thay thế trang. 10/28/201337 Chương 8: Virtual Memory
  37. 10/28/201338 Chương 8: Virtual Memory
  38. • LRU cầncóphầncứng hỗ trợ • Bit tham khảo (Reference Bit - RB) o Bit tham khảo được đặtbởiphầncứng. o Mỗitrangđượckếthợpvới 1 bit, khởi đầulà0. o Khi trang đượcthamkhảo, bit này được đặtlà1. o Thựchiệnthế trang có bit này là 0 (nếucó). o Tuy nhiên chúng ta không biếtthứ tự. • Giảithuật thêm vào bit tham khảo o Ghi lại các bit tham khảotheonhững thờigianđều đặn o Dùng mụctừ 8 bit (8-bits entry) cho mỗi trang. • 00000000 : trang không được dùng trong 8 chu kỳ. • 11111111 : trang đã được dùng tạiítnhấtmột trong 8 chu kỳ. • Trang vớisố thấpnhấtlàtrangLRU. 10/28/201339 Chương 8: Virtual Memory
  39. • Giảithuật Second- Chance o Kiểmtrabit tham khảo của trang đượcchọn o Nếu bit tham khảo là 0, thay thế trang o Nếutrangcóbitnàybằng 1, cho nó cơ hộithứ 2 (second-chance) • Đặt bit tham khảo là 0 • Để lại trang trong bộ nhớ • Xét trang kế tiếpvới cùng qui tắt o Cài đặtnhư mộthàng đợi vòng tròn như trong hình. 10/28/201340 Chương 8: Virtual Memory
  40. 10/28/201341 Chương 8: Virtual Memory
  41. • Tạobộđếm đếmsố lầnmộttrangđượctruycập. o Ít được dùng • GiảithuậtLFU(Least Frequently Used): thay thế trang với giá trị bộđếmnhỏ nhất. • GiảithuậtMFU(Most Frequently Used): dựatrênlýluậnlà một trang có giá trị bộđếmlànhỏ nhấtthìmới được đem vào bộ nhớ và sẽ còn đượcsử dụng nhiềuhơnsaunày. 10/28/201342 Chương 8: Virtual Memory
  42. 10/28/201343 Chương 8: Virtual Memory
  43. • Mỗitiến trình cầnmộtsố lượng khung trang tốithiểu • Ví dụ:IBM370–6trangđể xử lý lệnh SS MOVE: o Lệnh dài 6 bytes => có thể trãi dài 2 trang o 2trangđể xử lý from o 2trangđể xử lý to • Số khung tối đalàsố tổng số khung có trong hệ thống • Có hai chiếnlượccấp phát khung trang chính: o Cấpcốđịnh o Cấptheođộ ưu tiên • Có nhiểubiếnthể khác nhau 10/28/201344 Chương 8: Virtual Memory
  44. • Cấp công bằng - ví dụ:nếu có 100 khung trang và 5 tiến trình, thì cấp cho mỗitiến trình 20 khung trang. • Cấptương xứng – cấp khung trang dựatrênkíchcỡ củatiến trình. m 64 si size of process pi s 10 S si 1 m total number of frames s2 127 si 10 ai allocation for pi m a 64 5 S 1 137 127 a 64 59 2 137 10/28/201345 Chương 8: Virtual Memory
  45. • Sử dụng sơđồcấppháttương xứng, nhưng thay vì sử dụng kích cỡ củatiến trình, ta dùng độ ưu tiên. • Nếutiến trình Pi sinh ra lỗivề trang thì o Chọnmột khung trang củachínhtiếntrìnhnàylàmnạn nhân (thay thế cụcbộ - local replacement) o Chọnmộtkhungtrangcủatiến trình khác có độ ưu tiên thấphơnlàm nạn nhân (thay thế toàn cục – global replacement). • Thay thế toàn cục:tiếntrìnhchọnmột khung từ tậphợptấtcả các khung; mộttiếntrìnhcóthể lấymột khung từ tiến trình khác => có thểảnh hưởng đếnsự thực thi trên toàn hệ thống • Thay thế cụcbộ:mỗitiếntrìnhchỉ có thể sử dụng từ các khung trang mà nó đượccấp phát o Sự thựcthicủamỗitiếntrìnhđược đảmbảo độclập o Nhưng có thể không tậndụng tốtbộ nhớ 10/28/201346 Chương 8: Virtual Memory
  46. • Nếumộttiếntrìnhkhôngcó đủ các trang theo yêu cầu, thì tỉ lệ lỗi trang sẽ rất cao o Bởivìcáctrangtrongtrạng thái đang dùng, bấtkỳ lỗi trang nào cũng dẫn đếnthaythế mộttrangcầnlại ngay sau đó. o Tiếntrìnhtiếptụclỗi, thay thế các trang mà sẽ lạibị lỗivàphải được mang vào trở lại ngay sau đó. o Điềunàysẽ dẫn đến: • Hiệunăng sử dụng CPU thấp. • Hệđiềuhànhnghĩ rằng nó cầnphảităng mức độ đachương lên bởivì bộđịnh thờiCPUthấyrằng việcsử dụng CPU thấp. • Tiến trình khác đượcthêmvàohệ thống mỗitiến trình nhậnít khung trang hơn lỗi trang càng nhiềuhơn. • Thrashing ≡ tiến trình luôn bậnrộn cho việcchuyểncáctrangravà vào. o Dùng nhiềuthờigiancholỗitranghơnchothựcthi 10/28/201348 Chương 8: Virtual Memory
  47. • Khi mức độ đachương tăng lên, việcsử dụng CPU cũng tăng lên, mặcdùchậmhơn, đến mộtngưỡng cực đại. • Nếumức độ đachương tiếp tụctăng, thrashing sẽ xảyra. • Giảithuậtthế trang cụcbộ có thể giớihạn ảnh hưởng của thrashing o Nếumộttiếntrìnhbắt đầu thrashing, nó không đượclấy các khung từ các tiến trình khác và gây ra thrashing cho tiếntrình sau. o Nhưng mộttiếntrìnhthrashingcóthểảnh hưởng đến các tiến trình không thrashing vì nó làm chậm đihàngđợithiếtbị phân trang. 10/28/201349 Chương 8: Virtual Memory
  48. • Để ngănngừa thrashing, chúng ta phải cung cấpchotiếntrình số khung mà nó cần o Vấn đề là làm sao biết đượcsố khung mà tiếntrìnhcần o Mộtvàikỹ thuật đượcsử dụng • Hai giải pháp ngănngừa thrashing o Mô hình tậplàmviệc (Working set model) o Sơđồtầnsuấtlỗi trang (Page-fault frequency scheme) 10/28/201350 Chương 8: Virtual Memory
  49. • Mô hình tậplàmviệcbắt đầubằng cách xem xét có bao nhiêu khung mộttiếntrìnhđang dùng. o Phương pháp này định nghĩa mô hình cụcbộ (locality model) củaviệc thựcthitiến trình. o Mộtcụcbộ là tậphợp các trang được dùng cùng với nhau. o Khi mộttiếntrìnhthựcthi,nósẽ di chuyểntừ cụcbộ này sang cụcbộ khác. o Mộtchương trình nói chung đượctạothànhtừ mộtvàicụcbộ khác nhau, có thể phủ lấp nhau. • Giả sử cấp phát khung đủ cho mộtcụcbộ. o Tiếntrìnhsẽ lỗi (fault) cho các trang củanó đến khi các trang này trong bộ nhớ. o Tiếntrìnhsẽ không lỗinữachođến khi nó thay đổicụcbộ. o Nếucấp phát số khung ít hơnkíchthướccụcbộ, thrashing sẽ xảyra. 10/28/201351 Chương 8: Virtual Memory
  50. • Δ≡ cửasổ tậplàmviệc (working-set window) ≡ mộtsố lượng cốđịnh các tham khảotrang o Xác định Δ tham khảotrangmớinhất o Ví dụ: 10,000 tham khảo • WSi (tậplàmviệccủatiến trình Pi) = tậphợpcáctrangtrong Δ tham khảo trang gần đây nhất o Nếutrangđang được dùng, nó sẽ trong tậplàmviệc. Nếu không còn dùng nữa, nó sẽ ra khỏitậplàmviệcsauΔđơnvị thờigian. o Nếu Δ quá nhỏ: không bao quát đượctoànbộ nhóm cụcbộ. o Nếu Δ quá lớn: có thểđãphủ lấp vài nhóm cụcbộ. o Nếu Δ = ∞⇒ ta sẽ xem xét toàn bộ chương trình. 10/28/201352 Chương 8: Virtual Memory
  51. 10/28/201353 Chương 8: Virtual Memory
  52. • Thuộc tính quan trọng nhấtcủatậplàmviệclàkíchthướccủa nó. o GọiWSSi là kích thướctậplàmviệcchotiếntrìnhi. o D=Σ WSSi ≡ tổng số các khung cầnthiết. o mlàtổng số khung bộ nhớ sẵn dùng. o NếuD>m thrashing. • Chính sách: nếuD>m,tạmdừng mộtsố tiến trình. 10/28/201354 Chương 8: Virtual Memory
  53. • Sử dụng bộđịnh thời+bitthamkhảo • Ví dụ: Δ = 10,000 o Bộđịnh thời phát ra ngắtmỗi 5000 tham khảo. o Giữ trong bộ nhớ 2bitchomột trang. o Mỗikhibộđịnh thời phát ra ngắt thì chép và xóa nộidungcủa các bit tham khảo. o Khi có mộtlỗi trang xuấthiện, kiểmtrabitthamkhảohiệntạivà2bit trong bộ nhớđểxác định là trang có được dùng trong khoảng 10,000 đến 15,000 tham khảocuối cùng không. o Nếucóítnhất 1 trong các bit bằng 1 ⇒ trang nằm trong tậplàmviệc. • Giải pháp trên không thậtsự chính xác, bởivìkhôngthể biết được tham khảo trang xuấthiện lúc nào trong khoảng 5,000 tham khảo. • Cảitiến: dùng 10 bits và phát ngắtmỗi 1000 tham khảo. 10/28/201355 Chương 8: Virtual Memory
  54. • Thrashing đượcxemnhư là hiệntượng tỷ lệ lỗi trang cao kiểmsoáttỷ lệ lỗitrangđể hạnchế thrashing. • Page-Fault Frequency Scheme (PFF) = số lỗitrang/số chỉ thịđãthựcthi • Nếu PFF quá cao, tiến trình cần thêm khung. Ngượclại, nếu PFF quá thấp, tiến trình có quá nhiều khung. • Đặtcậntrênvàdưới (upper and lower bound) cho PFF. • Nếu PFF > cận trên, cấp thêm khung cho tiến trình. Nếu không có khung sẵn dùng chuyểntiến trình ra ngoài. • Nếu PFF < cậndưới có thể lấybớtbộ nhớ củatiếntrình này. 10/28/201356 Chương 8: Virtual Memory
  55. 10/28/201357 Chương 8: Virtual Memory
  56. 10/28/201358 Chương 8: Virtual Memory
  57. • Copy-on-Write (COW) cho phép cả tiến trình cha và con ban đầuchiasẻ cùng các trang trong bộ nhớ. o Nếumộttiếntrìnhchahoặcconsửa đổimộttrang đượcchiasẻ, thì chỉ trang đó được sao chép thành mộtbảnmới. Trang mới này sẽđược đưa vào không gian địachỉ củatiếntrìnhđã đãsửa đổi nó. • COW cho phép việctạotiếntrìnhhiệuquả hơnbởivìnóchỉ sao chép các trang bị sửa đổi. • Được dùng bởi các nhiềuHĐH, bao gồm Windows XP, Linux, Solaris 10/28/201359 Chương 8: Virtual Memory
  58. • Trước khi tiếntrình1cậpnhật trang C 10/28/201360 Chương 8: Virtual Memory
  59. • Sau khi tiếntrình1cậpnhật trang C 10/28/201361 Chương 8: Virtual Memory
  60. • Giải pháp Memory-mapped file I/O cho phép việc đọc ghi lên tập tin đượcxemnhư thao tác đọc ghi bộ nhớ bằng cách ánh xạ mộtkhối đĩa đếnmột trang trong bộ nhớ. • Đầutiên,mộttậptin được đọcbằng cách sử dụng giảiphápphân trang theo yêu cầu. Mộtphầncókíchthướcbằng mộttrangcủatập tin được đọctừ hệ thống tập tin vào trong trang vậtlý.Sauđócác thao tác đọc ghi lên tập tin đượccoinhư các thao tác đọc ghi bộ nhớ thông thường. • Đơngiảnhóaviệctruyxuấttập tin bằng cách xử lý vào ra tập tin thông qua bộ nhớ hơnlàbằng cách gọicáclờigọihệ thống read(), write(). • C ũng cho phép nhiềutiếntrìnhánhxạ cùng một file để các trang trong bộ nhớ có thểđượcsử dụng chia sẽ giữa các tiếntrìnhđó. 10/28/201362 Chương 8: Virtual Memory
  61. 10/28/201363 Chương 8: Virtual Memory