Tài nguyên Thư viện

Thành viên trực tuyến

8 khách và 0 thành viên

Thống kê

  • truy cập   (chi tiết)
    trong hôm nay
  • lượt xem
    trong hôm nay
  • thành viên
  • Menu Thư viện

    Bài giảng HĐH 10

    Wait
    • Begin_button
    • Prev_button
    • Play_button
    • Stop_button
    • Next_button
    • End_button
    • 0 / 0
    • Loading_status
    Nhấn vào đây để tải về
    Báo tài liệu có sai sót
    Nhắn tin cho tác giả
    (Tài liệu chưa được thẩm định)
    Nguồn:
    Người gửi: Đỗ Trung Thành (trang riêng)
    Ngày gửi: 10h:14' 15-03-2009
    Dung lượng: 151.5 KB
    Số lượt tải: 8
    Số lượt thích: 0 người
    BÀI 10 : BỘ NHỚ ẢO
    Cho đến nay : Nạp toàn bộ tiến trình vào bộ nhơ rồi thực hiện nó...
    Chậm, lãng phí bộ nhớ
    Nếu kích thước tiến trình lớn hơn dung lương bộ nhớ chính ?
    Lưu ý : tại 1 thời điểm chỉ có một chỉ thị được thực hiện
    0x1000
    test.exe
    0x3000
    0x3000
    test.exe
    jump 0x2000
    jump 0x5000
    0x7000
    OS
    (base)
    Giải pháp
    Nạp từng phần chương trình khi cần thiết
    Demand paging
    Real memory
    Real memory
    emacs
    Time
    t2
    t1
    Page1
    Page2
    Cơ chế
    Sử dụng bộ nhớ phụ để lưu trữ tạm thời các trang chưa sử dụng
    Ai chịu trách nhiệm chuyển đổi ?
    Lập trình viên : Overlay
    Hệ điều hành : Bộ nhớ ảo (Virtual Memory)
    Bộ nhớ ảo = "lời nói dối vĩ đại"
    Người dùng : sở hữu bộ nhớ "vô hạn", "riêng biệt"
    Hệ điều hành : "thầm lặng" thực hiện quá trình swapping
    RAM
    Thực hiện Bộ nhớ ảo
    Bảng trang : thêm 1 bit valid/invalid để nhận diện trang
    đã hay chưa được nạp vào RAM
    Truy xuất đến một trang chưa được nạp vào bộ nhớ :
    lỗi trang (page fault)
    Xử lý lỗi trang
    Bộ nhớ vật lý
    M
    Bộ nhớ ảo


    nạp M

    OS
    Bảng trang
    frame trống
    i
    Các câu hỏi
    Chọn trang nạn nhân ? => Chiến lược thay thế trang
    Chọn trang nào để nạp ? => Chiến lược nạp
    Chiến lược thay thế trang
    FIFO: trang "già" nhất
    Công bằng ?
    Không xét đến tính sủ dụng !
    TỐI ƯU : trang lâu sử dụng đến nhất trong tương lai
    Tần suất lỗi trang thấp nhất
    Không khả thi !
    LRU :trang lâu nhất chưa sử dụng đến trong quá khứ
    Dự đoán tương lai LRU = MIN ?
    Chiến lược nạp
    Demand paging : nạp trang được yêu cầu
    Khi nào ?
    Nạp sau : tần suất lỗi trang cao ? => pure demand paging
    Nạp trước : làm sao biết ? =>prepaging
    init pages = ?
    Thrashing = ảo tưởng sụp đổ !
    Tất cả tiến trình đầu bận rộn xử lý lỗi trang !
    IO hoạt động 100 %, CPU rảnh !
    Hệ thống ngừng trệ
    Các tiến trình trong hệ thống yêu cầu bộ nhớ nhiều hơn khả năng cung cấp của hệ thống !
    Nguyên nhân Thrashing
    Chỉ có thể kiểm soát thrashing do nguyên nhân 3.
    Tiến trình không tái sử dụng bộ nhớ (quá khứ != tương lai)
    Tiến trình tái sử dụng bộ nhớ, nhưng với kích thươc lớn hơn
    Quá nhiều tiến trình trong hệ thống

    Giải quyết thrasing với mô hình Working set
    Working set = tập hợp các trang tiến trình đang truy xuất tại 1 thời điểm.
    Hệ điều hành :
    Chỉ nạp một tiến trình khi có đủ khung trang tự do cho working set của nó.
    Kiểm soát mức độ đa chương của hệ thống : Nếu tổng số khung trang yêu cầu của các tiến trình trong hệ thống vượt quá các khung trang có thể sử dụng, chọn một tiến trình để tạm dừng, ngược lại, khi tổng working set bé hơn số khung trang tự do, nạp thêm tiến trình.
     
    Gửi ý kiến