Phân tran g Paging

Một phần của tài liệu Bài giảng Hệ thống máy tính: Chương 7 - TS. Trần Thị Minh Khoa (Trang 32 - 63)

 Các trang cĩ kích thước cố định

 Bộ nhớ vật lý tương ứng với trang gọi là page frame

 Chuyển đổi địa chỉ thơng qua bảng trang, được đánh chỉ mục bằng page number

 Mỗi mục tin trong bảng trang lưu một con số đại diện page frame mà trang đĩ ánh xạ tới và trạng thái của trang trong bộ nhớ

 Trạng thái: valid/invalid, access permission, reference bit, modified bit, caching

Paging (1)

 Hỗ trợ HĐH khắc phục bài tốn cấp phát bộ nhớ động và loại bỏ external fragmentation

 Mơ hình Paging

 KGĐC: Phân chia chương trình thành các page cĩ kích thước bằng nhau

 KGVL ( bộ nhớ) được tổ chức thành các fixed partitions cĩ kích thước bằng nhau, gọi là frame

 Page size = frame size

 Nạp tiến trình:

 Mỗi page cần được nạp vào 1 frame tự do

 Các pages của cùng 1 chương trình cĩ thể được nạp vào những frames khơng kế cận nhau

Paging (3)

 Địa chỉ logic: <page-number, offset>

 Địa chỉ physic: <frame-number, offset>

 Chuyển đổi địa chỉ: <p,d>  <f,d>

 Chuyển đổi địa chỉ vào thời điểm thi hành

 MMU thi hành

 Sử dụng Page table để luu thơng tin cấp phát BNC, làm cơ sở thực hiện ánh xạ địa chỉ

 Mội tiến trình cĩ 1 page table

 Page table

 Số phần tử của Page table = số page trong KGĐC của chương trình  Mỗi phần tử của bảng page table mơ tả cho 1 page, và cĩ cấu trúc:

 Frame: số hiệu frame trong BNC chứa page

 Lưu trữ page table?

 Cache: khơng đủ

Paging (4)

Paging (6)

 Bài tập : Một tiến trình được nạp vào bộ nhớ theo mơ hình phân trang với kích thước trang là 1024 byte. Bảng trang P F 0 1 1 4 2 2 3 6

Chuyển địa chỉ logic thành địa chỉ vật lý :

1642 3671 3671

 1642 xác định p? d? 1642 div 1024 = 1 => p =1 1642 mod 1024 = 618 => d = 618 Xác định f ? Theo bảng trang : f =4 Xác định địa chỉ vật lý : 1642 => 4 * 1024 + 618 = 4714

 3671 Xác định p? d? 3671 div 1024 = 3 => p =3 3671 mod 1024 = 599 =>d = 599 Xác định f ? F = 6 Xác định địa chỉ vật lý ? 3671 => 6 * 1024 + 599 = 6743

Paging (7)

NHẬN XÉT MƠ HÌNH PAGING

Loại bỏ

 Dynamic Allocation

 External Fragmentation

Hỗ trợ bảo vệ và chia sẻ ở mức page

 Internal Fragmentation

 Lưu trữ Page Table trong bộ nhớ

 Tốn chỗ

Paging (8)

 Lưu trữ Page table : tiết kiệm khơng gian

 Sử dụng bảng trang đa cấp

 Chỉ lưu thường trực bảng trang cấp 1, sau đĩ khi cần sẽ nạp bảng trang thích hợp

 Sử dụng bảng trang nghịch đảo

Paging (11)

 Bảng trang nghịch đảo :

 Sử dụng duy nhất một bảng trang nghịch đảo cho tất cả các tiến trình

 Mỗi phần tử trong bảng trang nghịch đảo mơ tả một frame cĩ cấu trúc

 <page> : số hiệu page mà frame đang chứa  <idp> : id của tiến trình đang sở hữu trang  Địa chỉ ảo là <idp, p, d>

000 000 000 000 000 111 000 101 000 000 000 011 100 000 110 001 010 0 00 00 00 01 00 01 00 00 00 01 01 01 01 01 01 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bảng trang Bit trạng thái 110 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0

Giá trị trang ảo =2, cũng là chỉ mục của bảng trang 12 bit địa chỉ offset chép nguyên qua địa chỉ vật lý địa chỉ ảo (8196) địa chỉ vật lý (24580) Bảng trang 16-bit, Mỗi trang kích thước 4KB

Ví dụ bảng trang 2 cấp

 Một địa chỉ logic (máy 32-bit kích thước trang 4K) được

chia thành:

 Page number: 20 bits.

 Page offset: 12 bits.

 Vì bảng trang lại được phân trang, page number lại được

chia thành:

 10-bit: page number.

Bảng trang nghịch đảo

 Mục tiêu của bảng trang là để tìm ra trang vật lý tương ứng của từng trang ảo

 Tuy nhiên, số lượng trang ảo rất lớn  kích thước bảng trang cĩ thể chiếm một khơng gian lớn trên bộ nhớ

 Ví dụ hệ thống 64-bit địa chỉ, kích thước mỗi trang là 4KB, vậy bảng trang cần 252 mẫu tin. Nếu mỗi mẫu tin 8 bytes thì bảng trang chiếm 30 triệu GB.

Bảng trang nghịch đảo

 Mỗi mẫu tin dành cho 1 trang thật (frame) trên bộ nhớ.

 Mỗi mẫu tin gồm địa chỉ ảo của trang, cùng với thơng tin về tiến trình đang dùng trang này. <pid, p>

 Giảm bộ nhớ cần thiết để lưu mỗi trang, nhưng tăng thời gian để tìm bảng trang.

Giải quyết vấn đề địa chỉ ảo > địa chỉ VLý ntn?

 Nếu khơng gian địa chỉ ảo của một tiến trình nhỏ hơn bộ nhớ vật lý thì khơng cĩ vấn đề gì

 Chỉ lo giải quyết vấn đề phân mảnh

 Khi bộ nhớ ảo của một tiến trình lớn hơn bộ nhớ vật lý

 Một phần lưu trên bộ nhớ

 Một phần lưu trên đĩa  Giải quyết ntn?

Nạp trang theo yêu cầu

 Để bắt đầu một tiến trình (chương trình), chỉ nạp trang chứa đoạn mã cho tiến trình bắt đầu thực thi

 Khi tiến trình cĩ yêu cầu tới vùng nhớ (chứa lệnh hay dữ liệu) nằm ngồi trang đã nạp, thì nạp trang đĩ lên

 Làm sao biểu diễn một trang của máy ảo mà nĩ chưa nạp lên bộ nhớ?

0 1 2 1 v i i A B C 0 1 2 3 A 0 1 2 B C VM

Lỗi trang

 Điều gì xảy ra khi tiến trình yêu cầu một trang bị đánh dấu lỗi?

 Trap lỗi trang

 Kiểm tra cĩ phải truy xuất hợp lệ (cĩ trang vật lý đúng)

 Tìm 1 frame bộ nhớ trống

 Đọc trang cần thiết từ bộ nhớ phụ (ổ đĩa)

 Đổi valid bit của trang thành v (hợp lệ)

 Bắt đầu lại lệnh bị ngắt bởi trap

Lỗi trang (tt)

 Các tình huống khi truy cập bộ nhớ?

 Nếu TLB miss  đọc mẫu tin trong bảng trang

 Và nếu, lỗi trang (=>thay trang)

 Và nếu, tất cả các frames đang dùng  cần thu hồi một trang  thay đổi giá trị trong bảng trang của tiến trình

Chi phí xử lý lỗi trang

 Trap, kiểm tra bảng trang, tìm frame trống (hoặc tìm trang thay thế) … khoảng 200 - 600 s

 Tìm và đọc trên đĩa … khoảng 10 ms

 Truy cập bộ nhớ … khoảng 100 ns

 Lỗi trang làm chậm thực thi khoảng ~100,000 lần!!!!!

 Đĩ là chưa kể phát sinh cĩ thể xảy ra trong các bước trên  Tốt nhất là khơng để xảy ra nhiều lỗi trang!

 Nếu muốn sự ảnh hưởng ít hơn 10%, chỉ cho phép 1 lỗi trang trong 1,000,000 lần truy cập bộ nhớ

Thay trang

 Nếu khơng cịn frame trống khi bị lỗi trang?

 Lấy lại một frame đang được sử dụng

 Chọn frame để thay thế (nạn nhân)

 Lưu trang nạn nhân vào ổ đĩa

 Cập nhật lại bảng trang (trang nạn nhân thành invalid)

 Đọc trang cần thiết vào frame vừa chọn

 Cập nhật lại bảng trang (trang vừa thay thế là valid)

 Bắt đầu lại lệnh đã gây ra lỗi trang

 Tối ưu hĩa: khơng phải ghi trang nạn nhân trở lại nếu như

nĩ vẫn chưa bị thay đổi (cần thêm dirty bit cho mỗi trang).

Thay trang

 Khơng dễ dàng để tìm được chính sách thay thế trang tốt

 Khi thu hồi một trang, làm sao chúng ta biết là trang tốt nhất cĩ thể giảm thiểu lỗi trang sau này?

 Cĩ tồn tại thuật tốn thay thế trang tối ưu?

 Nếu cĩ, thuật tốn thay thế trang tối ưu là gì?

 Xem ví dụ sau:

 Giả sử chúng ta cĩ 3 frames và chạy chương trình theo mẫu sau

 7, 0, 1, 2, 0, 3, 0, 4, 2, 3

Thay thế trang FIFO  First-in, First-out

 Cơng bằng, thời gian mỗi trang trên bộ nhớ gần như tương đương nhau

 Cĩ vấn đề gì khơng?

 Cĩ phù hợp với yêu cầu của một chương trình?  Cĩ hiệu quả với ví dụ của chúng ta?

Ví dụ khác FIFO

Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

Một phần của tài liệu Bài giảng Hệ thống máy tính: Chương 7 - TS. Trần Thị Minh Khoa (Trang 32 - 63)

Tải bản đầy đủ (PDF)

(86 trang)