Bài giảng Lập trình hệ điều hành: Chương 8 - Hà Duy Anh
lượt xem 8
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hệ điều hành: Chương 8 - Hà Duy Anh
- Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ Giảng viên: Hà Duy An
- 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
- • 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
- • 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
- 10/28/2013 6 Chương 8: Virtual Memory
- 10/28/2013 7 Chương 8: Virtual Memory
- 10/28/2013 8 Chương 8: Virtual Memory
- • 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
- 10 10/28/2013 Chương 8: Virtual Memory
- • 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
- 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 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
- 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ó 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
- 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 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
- • 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
- • 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
- • 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình Windows - ĐH Hàng Hải
96 p | 211 | 41
-
Bài giảng Lập trình hệ điều hành: Chương 1 - Hà Duy Anh
52 p | 125 | 14
-
Bài giảng Lập trình hệ nhúng: Chương 1 - Phạm Ngọc Hưng
56 p | 124 | 12
-
Bài giảng Lập trình hệ điều hành: Chương 7 - Hà Duy Anh
57 p | 116 | 11
-
Bài giảng Lập trình hệ nhúng: Chương 2 - Phạm Ngọc Hưng
23 p | 105 | 10
-
Bài giảng Lập trình di động: Bài 1 - Trương Xuân Nam
65 p | 135 | 10
-
Bài giảng Lập trình hệ điều hành: Chương 6 - Hà Duy Anh
45 p | 111 | 9
-
Bài giảng Lập trình di động - Bài 1: Giới thiệu về lập trình java trên Android OS
64 p | 49 | 9
-
Bài giảng Lập trình hệ điều hành: Chương 3 - Hà Duy Anh
57 p | 92 | 8
-
Bài giảng Lập trình hệ điều hành: Chương 4 - Hà Duy Anh
44 p | 98 | 8
-
Bài giảng Lập trình hệ điều hành: Chương 5 - Hà Duy Anh
55 p | 90 | 7
-
Bài giảng Nguyên lý hệ điều hành (Bài giảng tuần 3) - Nguyễn Hải Châu
8 p | 110 | 5
-
Bài giảng Lập trình hệ nhúng: Chương 1 - Phạm Văn Thuận
31 p | 71 | 5
-
Bài giảng Nguyên lý hệ điều hành (Bài giảng tuần 2) - Nguyễn Hải Châu
6 p | 106 | 4
-
Bài giảng Lập trình hệ nhúng: Chương 2 - Phạm Văn Thuận
27 p | 62 | 3
-
Bài giảng Lập trình hệ điều hành: Chương 2 - Hà Duy Anh
45 p | 92 | 3
-
Bài giảng môn Lập trình hệ điều hành - Hà Duy Anh
6 p | 105 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn