intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hệ điều hành: Chương 8 - Hà Duy Anh

Chia sẻ: Thanh Hoa | Ngày: | Loại File: PDF | Số trang:64

91
lượt xem
8
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Lập trình hệ điều hành - Chương 8: Virtual Memory" cung cấp cho người học các kiến thức: Tổng quan, phân trang theo yêu cầu, thay thế trang, cấp phát khung trang, thrashing, một số tác vụ với kỹ thuật bộ nhớ ảo. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình hệ điều hành: Chương 8 - Hà Duy Anh

  1. Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ 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ột số tác vụ với kỹ thuật bộ nhớ ảo 10/28/2013 2 Chương 8: Virtual Memory
  3. • Các mã 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ấu trúc dữ liệu lớn, các tùy chọn và tính năng ít dùng. • Toàn bộ chương trình không phải được sử dụng cùng một lúc • Khả năng nạp chương trình từng phần vào bộ nhớ để thực thi: o Giải phóng sự ràng buộc với giới hạn của bộ nhớ thực o Nhiều chương trình có thể thực thi đồng thời o Thao tác I/O để nạp và hoán vị tiến trình cần ít hơn 10/28/2013 4 Chương 8: Virtual Memory
  4. • Bộ nhớ ảo (Virtual memory): tách biệt bộ nhớ luận lý của người dùng ra khỏi bộ nhớ vật lý: o Chỉ một phần của chương trình cần ở trong bộ nhớ để thực thi  không gian địa chỉ luận lý có thể lớn hơn nhiều so với không gian địa chỉ vật lý. o Cho phép không gian địa chỉ có thể trải rộng ra với các khoảng trống dành cho việc sử dụng trong tương lai o Các thư viện chia sẽ hay bộ nhớ chia sẽ có thể được cài đặt bằng cách ánh xạ đối tượng cần chia sẽ vào trong không gian luận lý của các tiến trình o Các trang có thể được chia sẽ trong 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 có thể được đưa vào bộ nhớ để thực thi đồng thời o Cần ít thao tác I/O hơn khi nạp hay khi hoán vị 10/28/2013 5 Chương 8: Virtual Memory
  5. 10/28/2013 6 Chương 8: Virtual Memory
  6. 10/28/2013 7 Chương 8: Virtual Memory
  7. 10/28/2013 8 Chương 8: Virtual Memory
  8. • Bộ nhớ ảo có thể được 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 9 Chương 8: Virtual Memory
  9. 10 10/28/2013 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ần thiết (phân trang theo yêu cầu – Demand Paging) o Cần ít thao tác I/O hơn o Cần ít bộ nhớ vật lý hơn o Rút ngắn thời gian đáp ứng o Phục vụ nhiều người dùng hơn • Khi cần một trang ⇒ tham khảo tới nó o Tham khảo không hợp lệ ⇒ 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ột trang vào bộ nhớ trừ khi trang đó cần dùng o Swapper xử lý với các trang gọi là pager 10/28/2013 11 Chương 8: Virtual Memory
  11. 10/28/2013 12 Chương 8: Virtual Memory
  12. • 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 v v v v • Trong tiến trình dịch địa chỉ, nếu i bit valid/invalid trong một mục …. từ của bảng trang = 0 ⇒ i có lỗi trang (Page Fault). i page table 10/28/2013 13 Chương 8: Virtual Memory
  13. 10/28/2013 14 Chương 8: Virtual Memory
  14. • 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ó 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/2013 15 Chương 8: Virtual Memory
  15. 10/28/2013 16 Chương 8: Virtual Memory
  16. • 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 của tiến trình được truy cập lần đầu  Pure demand paging • Một lệnh có thể truy cập nhiều trang cùng lúc => nhiều lỗi trang o Chương trình khuynh hướng tham chiếu cục bộ • Phần cứng hỗ trợ phân trang theo yêu cầu: o Bảng trang: valid/invalid bit o Bộ nhớ phụ (thiết bị hoán vị với không gian hoán vị) o Khởi động lại một lệnh 10/28/2013 17 Chương 8: Virtual Memory
  17. • Một lệnh có thể truy cập vài vị trí khác nhau: o Lệnh move o Lỗi trang khi đã di chuyển dữ liệu một phần? o Nguồn và đích phủ lấp lên nhau? • Phương pháp giải quyết: o Truy cập thăm dò o Lưu giữ giá trị bị ghi đè 10/28/2013 18 Chương 8: Virtual Memory
  18. • Các bước thực hiện phân trang theo yêu cầu: 1. Thông báo cho HĐH 2. Lưu lại các thanh ghi và trạng thái của tiến trình người dùng 3. Xác định ngắt là một lỗi trang 4. Kiểm tra tính hợp lệ của trang tham khảo, xác định vị trí của trang trên đĩa 5. Đọc trang từ đĩa vào khung trống: a. Chờ trong hàng đợi thiết bị cho đến khi yêu cầu đọc được phục vụ b. Chờ thiết bị 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ấp CPU cho người dùng khác 7. Nhận một ngắt từ hệ thống I/O đĩa (I/O completed) 8. Lưu các thanh ghi và trạng thái của tiến trình đang thực thi (của người dùng khác) 9. Xác định ngắt phát ra từ đĩa 10. Điều chỉnh bảng trang và các bảng khác có liên quan để cho thấy rằng trang bây giờ đang nằm trong bộ nhớ 11. Chờ để được cấp phát CPU lần nữa 12. Khôi phục lại các thanh ghi, trạng thái của tiến trình, và bảng trang mới, sau đó khởi động lại lệnh đã bị ngắt 10/28/2013 19 Chương 8: Virtual Memory
  19. • Tỉ lệ lỗi trang 0 ≤ p ≤ 1.0 o if p = 0 không có lỗi về trang o if p = 1, mọi tham khảo trang đều bị lỗi • Thời gian truy xuất thự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/2013 20 Chương 8: Virtual Memory
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2