Bộ nhớ ảo (Virtual Memory)

Một phần của tài liệu Khái niệm hệ điều hành pptx (Trang 25 - 29)

1. Đặt vấn đề : Các tiến trình đòi hỏi kích thước bộ nhớ lớn hơn kích thước bộ nhớ vật lý. bộ nhớ vật lý.

Có thể giải quyết vấn đề này bằng 2 cách :

-Người lập trình sử dụng kỹ thuật viết chương trình Overlay : người lập trình xác định tiến trình nào cần giữ lại trong bộ nhớ (vì còn được sử dụng tiếp tục và thường xuyên), tiến trình nào cần phải trả lại vùng nhớ ngay khi có thể. Đây là giải pháp đòi hỏi người lập trình phải hiểu biết kỹ thuật viết chương trình Overlay và vận dụng đúng kỹ thuật này. MS DOS sử dụng kỹ thuật này.

-Hệ điều hành sử dụng kỹ thuật bộ nhớ ảo. Kỹ thuật bộ nhớ ảo là kỹ thuật áp dụng một chiến lược nào đó để tự động đưa một vùng bộ nhớ vật lý ra đĩa (swapping) để có thể nạp một tiến trình khác vào bộ nhớ vật lý

Có 2 cách cài đặt bộ nhớ ảo :

a.Phân trang theo yêu cầu (Demand Paging) và

b.Phân đoạn theo yêu cầu (Demand Segmentation) : phức tạp hơn nhiều vì kích thước các đoạn khác nhau.

2. Phân trang theo yêu cầu :

P1P0 P0 P3 P2 P5 P4 P7 P6 P8

Mô tả : Kỹ thuật này dùng Bảng trang gồm các phần tử , trong đó mỗi một phần tử tương ứng với một trang và có 1 bit để phân biệt trường hợp trang đang ở trong bộ nhớ chính (valid) hoặc trang đang ở trên bộ nhớ phụ (invalid). Khi CPU truy xuất đến một trang X, trước hết nó tìm trang X này trong bảng trang. Nếu bit tương ứng với trang này là invalid (“lỗi trang”, “page fault”), hệ điều hành sẽ tìm khung trang còn trống để nạp từ bộ nhớ phụ hay trong trường hợp không còn khung trang nào trống, OS sẽ chọn một trang “nạn nhân” để swap ra đĩa, rồi nạp trang X từ bộ nhớ phụ vào

3, Các chiến lược thay thế trang : là các cách chọn trang “nạn nhân” sao cho quá trình truy xuất trang có ít trường hợp “lỗi trang” nhất. cho quá trình truy xuất trang có ít trường hợp “lỗi trang” nhất.

FIFO : ghi nhận thời điểm khi trang được nạp vào bộ nhớ chính, và trang ở lâu nhất trong bộ nhớ chính sẽ bị chọn làm trang thay thế. Nếu không lưu trữ thời điểm nạp trang vào bộ nhớ thì dùng một hàng đợi để quản lý các trang trong bộ nhớ. Khi đó trang ở đầu hàng đợi là trang sẽ bị chọn làm trang thay thế. 1. Fifo: 7 0 1 2 0 3 0 4 Fr0 7 7 7 2 2 2 2 4 Fr1 0 0 0 0 3 3 3 Fr2 1 1 1 1 0 0 Page faults * * * * * * * Tổng lỗi trang : 7

LRU (Least Recently Used) : cập nhật thời điểm khi trang được truy cập, và trang lâu nhất chưa được truy xuất là trang sẽ bị chọn làm trang thay thế.

7 0 1 2 0 3 0 4

Fr0 7 7 7 2 2 2 2 4

Fr1 0 0 0 0 0 0 0

Fr2 1 1 1 3 3 3

Lỗi * * * * * *

Thuật toán tối ưu : trang sẽ được truy cập ở tương lai xa nhất sẽ bị chọn làm trang thay thế. (Yêu cầu biết ở thời điểm nào trang được sử dụng ). 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 7 7 7 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 4 4 4 0 0 0 0 0 1 1 1 3 3 3 3 3 3 3 3 1 1 * * * * * * * *

Thuật toán xấp xỉ LRU : các phần tử trong bảng trang có thêm 1 bit gọi là bit tham khảo ref. Mỗi lần trang được truy xuất, bit này được gán bằng 1. Sau từng chu kỳ định trước, kiểm tra bit ref có thể biết trang có được truy xuất hay không.

Các thuật toán LRU :

Sử dụng các 8 bit history : sau chu kỳ 100milisec, bit ref được đưa vào vị trí cao nhất của 8 bit history, đẩy các bit này sang phải và do đó bit thấp nhất bị bỏ đi. Ví dụ 1: 00000000 nghĩa là trang đã không được truy xuất lần nào trong cả 8 chu kỳ; 11111111 nghĩa là trang được truy xuất ít nhất một lần trong mỗi chu kỳ; trang 11000100 được truy xuất gần thời điểm hiện tại hơn trang 01110111

Ví dụ 2 :

Giữa 2 trang sau, ta thấy P2 ít dùng hơn nên chọn P2 chép ra đĩa cứng Page 1 ở thời điểm t

1 1 0 1 1 1 0 1Page 1 ở thời điểm t+const Page 1 ở thời điểm t+const 1 0 1 1 1 0 1 1 Page 2

0 0 0 1 0 0 1 0

Thuật toán cơ hội thứ hai : thuật toán cơ bản là FIFO nhưng: Nếu bit ref = 0 thì thay thế trang này

Nếu bit ref = 1 thì cho trang này “cơ hội thứ hai” : xóa bit ref nhưng chọn trang FIFO tiếp.

8, 7 0 1 2 0 3 0 4 2 3 0 7 7 7 2 2 2 2 2 2 2 0 0 0 0 0 0 0 4 4 4 4 1 1 1 3 3 3 3 3 3 * * * * * * *

Thuật toán cơ hội thứ hai nâng cao (Not Rescently used NRU) bổ xung thêm bit dirty (bit dirty = 1 khi trang bị thay đổi) tạo thành cặp bit : 00 : không truy xuất, không sửa đổi. Nên chọn trang này để thay thế.

01 : không được truy xuất gần đây, nhưng đã bị sửa đổi 10 : được truy xuất gần đây, nhưng không bị sửađổi 11 : được truy xuất gần đây và bị sửa đổi

Các thuật toán thống kê : sử dụng biến đếm đếm số lần truy xuất trang, trong đó thuật toán LFU thay thế trang có biến đếm nhỏ nhất (ít sử dụng nhất) và thuật toán MFU ngược lại thay thế trang có biến đếm lớn nhất (sử dụng thường xuyên nhất)

1. Nên cấp cho một tiến trình bao nhiêu trang ? Cấp phát cố định :

-Cấp phát đồng đều cho các tiến trình -Cấp phát theo tỉ lệ kích thước của tiến trình Cấp phát theo độ ưu tiên của tiến trình:

2. Thay thế trang toàn cục / cục bộ :

Thay thế trang toàn cục là chọn trang bị thay thế trong số toàn bộ các trang của các tiến trình

Thay thế trang cục bộ là chỉ chọn trang bị thay thế trong số các trang của chính tiến trình

3. Hệ thống lâm vào tình trạng trì trệ ? (Trashing) là tình trạng hệ thống trong đó các tiến trình chủ yếu dảnh thời gian CPU vào việc thay thế trang nhiều hơn là thực hiện các yêu cầu xử lý

4. Mô hình Working Set là gì ? 5. Chọn kích thước trang bao nhiêu ?

Chọn lớn : kích thước bảng trang nhỏ, phù hợp với việc thay thế trang toàn cục

Bài 3 : Quản lý tập tin – Quản lý đĩa.

Một phần của tài liệu Khái niệm hệ điều hành pptx (Trang 25 - 29)