Bài giảng lập trình hệ điều hành chương 8 virtual memory

64 425 0
Bài giảng lập trình hệ điều hành   chương 8  virtual memory

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ Giảng viên: Hà Duy An Tổng quan Phân trang theo yêu cầu Thay trang Cấp phát khung trang Thrashing Một số tác vụ với kỹ thuật nhớ ảo 10/28/2013 Chương 8: Virtual Memory • Các mã lệnh phải nhớ để thực thi, toàn chương trình dùng o Các lệnh xử lý lỗi, cấu trúc liệu lớn, tùy chọn tính dùng • Toàn chương trình sử dụng lúc • Khả nạp chương trình phần vào nhớ để thực thi: o Giải phóng ràng buộc với giới hạn nhớ thực o Nhiều chương trình thực thi đồng thời o Thao tác I/O để nạp hoán vị tiến trình cần 10/28/2013 Chương 8: Virtual Memory • Bộ nhớ ảo (Virtual memory): tách biệt nhớ luận lý người dùng khỏi nhớ vật lý: o Chỉ phần chương trình cần nhớ để thực thi  không gian địa luận lý lớn nhiều so với không gian địa vật lý o Cho phép không gian địa trải rộng với khoảng trống dành cho việc sử dụng tương lai o Các thư viện chia hay nhớ chia cài đặt cách ánh xạ đối tượng cần chia vào không gian luận lý tiến trình o Các trang chia suốt thời gian tạo tiến trình với lời gọi hệ thống fork() => tăng tốc độ tạo tiến trình o Nhiều chương trình đưa vào nhớ để thực thi đồng thời o Cần thao tác I/O nạp hay hoán vị 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory • Bộ nhớ ảo cài đặt: o Phân trang theo yêu cầu o Phân đoạn theo yêu cầu 10/28/2013 Chương 8: Virtual Memory 10 10/28/2013 Chương 8: Virtual Memory • Để ngăn ngừa thrashing, phải cung cấp cho tiến trình số khung mà cần o Vấn đề biết số khung mà tiến trình cần o Một vài kỹ thuật sử dụng • Hai giải pháp ngăn ngừa thrashing o Mô hình tập làm việc (Working set model) o Sơ đồ tần suất lỗi trang (Page-fault frequency scheme) 10/28/2013 50 Chương 8: Virtual Memory • Mô hình tập làm việc bắt đầu cách xem xét có khung tiến trình dùng o Phương pháp định nghĩa mô hình cục (locality model) việc thực thi tiến trình o Một cục tập hợp trang dùng với o Khi tiến trình thực thi, di chuyển từ cục sang cục khác o Một chương trình nói chung tạo thành từ vài cục khác nhau, phủ lấp • Giả sử cấp phát khung đủ cho cục o Tiến trình lỗi (fault) cho trang đến trang nhớ o Tiến trình không lỗi thay đổi cục o Nếu cấp phát số khung kích thước cục bộ, thrashing xảy 10/28/2013 51 Chương 8: Virtual Memory • Δ≡ cửa sổ tập làm việc (working-set window) ≡ số lượng cố định tham khảo trang o Xác định Δ tham khảo trang o Ví dụ: 10,000 tham khảo • WSi (tập làm việc tiến trình Pi) = tập hợp trang Δ tham khảo trang gần o Nếu trang dùng, tập làm việc Nếu không dùng nữa, khỏi tập làm việc sau Δ đơn vị thời gian o Nếu Δ nhỏ: không bao quát toàn nhóm cục o Nếu Δ lớn: phủ lấp vài nhóm cục o Nếu Δ = ∞⇒ ta xem xét toàn chương trình 10/28/2013 52 Chương 8: Virtual Memory 10/28/2013 53 Chương 8: Virtual Memory • Thuộc tính quan trọng tập làm việc kích thước o o o o • Gọi WSSi kích thước tập làm việc cho tiến trình i D = Σ WSSi ≡ tổng số khung cần thiết m tổng số khung nhớ sẵn dùng Nếu D > m  thrashing Chính sách: D > m, tạm dừng số tiến trình 10/28/2013 54 Chương 8: Virtual Memory • Sử dụng định thời + bit tham khảo • Ví dụ: Δ = 10,000 o Bộ định thời phát ngắt 5000 tham khảo o Giữ nhớ bit cho trang o Mỗi định thời phát ngắt chép xóa nội dung bit tham khảo o Khi có lỗi trang xuất hiện, kiểm tra bit tham khảo bit nhớ để xác định trang có dùng khoảng 10,000 đến 15,000 tham khảo cuối không o Nếu có bit ⇒ trang nằm tập làm việc • Giải pháp không thật xác, biết tham khảo trang xuất lúc khoảng 5,000 tham khảo • Cải tiến: dùng 10 bits phát ngắt 1000 tham khảo 10/28/2013 55 Chương 8: Virtual Memory • Thrashing xem tượng tỷ lệ lỗi trang cao  kiểm soát tỷ lệ lỗi trang để hạn chế thrashing • Page-Fault Frequency Scheme (PFF) = số lỗi trang / số thị thực thi • Nếu PFF cao, tiến trình cần thêm khung Ngược lại, PFF thấp, tiến trình có nhiều khung • Đặt cận (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 khung sẵn dùng  chuyển tiến trình • Nếu PFF < cận  lấy bớt nhớ tiến trình 10/28/2013 56 Chương 8: Virtual Memory 10/28/2013 57 Chương 8: Virtual Memory 58 10/28/2013 Chương 8: Virtual Memory • Copy-on-Write (COW) cho phép tiến trình cha ban đầu chia sẻ trang nhớ o Nếu tiến trình cha sửa đổi trang chia sẻ, trang chép thành Trang đưa vào không gian địa tiến trình đã sửa đổi • COW cho phép việc tạo tiến trình hiệu chép trang bị sửa đổi • Được dùng nhiều HĐH, bao gồm Windows XP, Linux, Solaris 10/28/2013 59 Chương 8: Virtual Memory • Trước tiến trình cập nhật trang C 10/28/2013 60 Chương 8: Virtual Memory • Sau tiến trình cập nhật trang C 10/28/2013 61 Chương 8: Virtual Memory • Giải pháp Memory-mapped file I/O cho phép việc đọc ghi lên tập tin xem thao tác đọc ghi nhớ cách ánh xạ khối đĩa đến trang nhớ • Đầu tiên, tập tin đọc cách sử dụng giải pháp phân trang theo yêu cầu Một phần có kích thước trang tập tin đọc từ hệ thống tập tin vào trang vật lý Sau thao tác đọc ghi lên tập tin coi thao tác đọc ghi nhớ thông thường • Đơn giản hóa việc truy xuất tập tin cách xử lý vào tập tin thông qua nhớ cách gọi lời gọi hệ thống read(), write() • Cũng cho phép nhiều tiến trình ánh xạ file để trang nhớ sử dụng chia tiến trình 10/28/2013 62 Chương 8: Virtual Memory 10/28/2013 63 Chương 8: Virtual Memory [...]... nghiên cứu so sánh, đo lường các giải thuật 10/ 28/ 2013 33 Chương 8: Virtual Memory 10/ 28/ 2013 34 Chương 8: Virtual Memory • Thay thế trang không đuợc dùng trong một khoảng thời gian dài nhất • Chuỗi tham khảo trang: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 10/ 28/ 2013 1 1 1 1 5 2 2 2 2 2 3 5 5 4 4 4 4 3 3 3 35 Chương 8: Virtual Memory 10/ 28/ 2013 36 Chương 8: Virtual Memory ... space o Được dùng trong các phiên bản cũ của BSD Unix • 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ện hành 10/ 28/ 2013 22 Chương 8: Virtual Memory 23 10/ 28/ 2013 Chương 8: Virtual Memory 10/ 28/ 2013 24 Chương 8: Virtual Memory • Điều gì xảy ra khi không còn khung trống? • Ngăn chặn việc cấp phát... v v v i … i i page table 10/ 28/ 2013 13 Chương 8: Virtual Memory 10/ 28/ 2013 14 Chương 8: Virtual Memory • Nếu có một tham khảo đến một trang, tham khảo đầu tiên đến trang đó luôn được giao cho hệ điều hành xử lý: lỗi trang • Các bước xử lý lỗi trang của HĐH: o Hệ điều hành sẽ nhìn vào internal table (chứa trong PCB) để xác định: • Tham khảo không hợp lệ ⇒ kết thúc tiến trình • Hay là trang không có... 10/ 28/ 2013 28 Chương 8: Virtual Memory • Nhận xét: khi số khung tăng lên, số lượng lỗi trang giảm xuống một mức độ tối thiểu 10/ 28/ 2013 29 Chương 8: Virtual Memory • Chuỗi tham khảo là: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • Có 3 khung (3 trang có thể nằm trong bộ nhớ cho mỗi tiến trình) 1 1 4 5 2 2 1 3 3 3 2 4 1 1 5 4 2 2 1 5 3 3 2 4 4 3 9 page faults • 4 khung 10/ 28/ 2013 30 10 page faults Chương 8: Virtual. .. vào 1 2 3 4 10/ 28/ 2013 Tìm một khung trang còn trống Hoán vị trang vào khung trang Thiết lập lại bảng trang bằng cách đặt bit kiểm tra = v Khởi động lại chỉ thị đã bị ngắt bởi lỗi trang 15 Chương 8: Virtual Memory 10/ 28/ 2013 16 Chương 8: Virtual Memory • Khi tiến trình bắt đầu được thực thi – không có trang nào trong bộ nhớ, lỗi trang (page fault): o Tham khảo đến lệnh đầu tiên của tiến trình o Mỗi trang... Swapper xử lý với các trang gọi là pager 10/ 28/ 2013 11 Chương 8: Virtual Memory 10/ 28/ 2013 12 Chương 8: Virtual Memory • Kết hợp với mỗi mục từ 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ủa mọi mục từ được đặt là i • Ví dụ về thực trạng một bảng trang: Frame # valid‐invalid bit • Trong tiến trình dịch địa chỉ, nếu bit valid/invalid trong... khung trống mới tìm ra Cập nhật lại trang và các bảng trang 4 Tiếp tục tiến trình => Có thể phải cần hai thao tác chuyển trang khi có một lỗi trang xuất hiện -> EAT tăng 10/ 28/ 2013 26 Chương 8: Virtual Memory 10/ 28/ 2013 27 Chương 8: Virtual Memory • Giải thuật cấp phát khung xác định: o Bao nhiêu khung sẽ cấp phát cho mỗi tiến trình • Giải thuật thay thế trang: o Khung nào sẽ được thay thế o Mong muốn... [swap page out ] + [swap page in] + [restart overhead] + 10/ 28/ 2013 20 Chương 8: Virtual Memory • • 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 ,80 0 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... 3 9 page faults • 4 khung 10/ 28/ 2013 30 10 page faults Chương 8: Virtual Memory • Có thể rất khác nhau với các chuỗi tham khảo trang khác nhau 10/ 28/ 2013 31 Chương 8: Virtual Memory • Thay thế trang kiểu FIFO ⇒ Nghịch lý Belady (Belady’s Anomaly) o Càng nhiều khung trang ⇒ càng nhiều lỗi về trang 10/ 28/ 2013 32 Chương 8: Virtual Memory • Thay thế trang sẽ không được sử dụng trong một thời gian dài •... > 200 + 7,999 ,80 0 x p 20 > 7,999 ,80 0 x p p < 0000025 < một lỗi trang trong 400,000 lần truy xuất bộ nhớ => 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/ 2013 21 Chương 8: Virtual Memory • Sao chép toàn bộ ảnh của tiến trình vào không gian hoán chuyển (swap space) vào thời gian nạp tiến trình o Hoán ... tác I/O nạp hay hoán vị 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory 10/28/2013 Chương 8: Virtual Memory • Bộ nhớ ảo cài đặt: o Phân... gọi pager 10/28/2013 11 Chương 8: Virtual Memory 10/28/2013 12 Chương 8: Virtual Memory • Kết hợp với mục từ bảng trang bit valid/invalid (v (1) ⇒in -memory, i (0) ⇒ not-in -memory) • Khởi đầu bit... trống o Được dùng Soloris BSD Unix hành 10/28/2013 22 Chương 8: Virtual Memory 23 10/28/2013 Chương 8: Virtual Memory 10/28/2013 24 Chương 8: Virtual Memory • Điều xảy không khung trống? • Ngăn

Ngày đăng: 14/04/2016, 15:59

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan