Chương II KIẾN TRÚC HỆ ĐIỀU HÀNH BỘ NHỚ ẢO I Mục đích Sau khi học xong chương này, người học nắm được những kiến thức sau • Hiểu kỹ thuật bộ nhớ ảo • Hiểu bộ nhớ ảo ở dạng phân trang theo yêu cầu • Hi[.]
BỘ NHỚ ẢO I Mục đích Sau học xong chương này, người học nắm kiến thức sau: • Hiểu kỹ thuật nhớ ảo • Hiểu nhớ ảo dạng phân trang theo yêu cầu • Hiểu độ phức tạp chi phí kỹ thuật để cài đặt nhớ ảo II Giới thiệu Trong chương trước, thảo luận chiến lược quản lý nhớ dùng hệ thống máy tính Tất chiến lược có mục đích: giữ nhiều q trình nhớ lúc phép đa chương Tuy nhiên, chúng có khuynh hướng u cầu tồn q trình nhớ trước q trình thực thi Bộ nhớ ảo kỹ thuật cho phép việc thực thi q trình mà q trình khơng hồn tồn nhớ Một lợi điểm quan trọng chế chương trình lớn nhớ vật lý Ngồi ra, nhớ ảo phóng đại nhớ thành nhớ luận lý cực lớn hiển thị người dùng Kỹ thuật giải phóng người lập trình từ việc quan tâm đến giới hạn kích thước nhớ Bộ nhớ ảo cho phép trình dễ dàng chia sẻ tập tin không gian địa chỉ, cung cấp chế hữu cho việc tạo q trình Tuy nhiên, nhớ ảo khơng dễ cài đặt thực chất giảm lực dùng thiếu thận trọng Trong chương này, thảo luận nhớ ảo dạng phân trang theo yêu cầu xem xét độ phức tạp chi phí III Kiến thức Các giải thuật quản lý nhớ chương trước cần thiết yêu cầu bản: thị thực thi phải nhớ vật lý Tiếp cận để thoả mãn yêu cầu đặt tồn khơng gian địa luận lý nhớ vật lý Phủ lắp nạp động giúp làm giảm hạn chế chúng thường u cầu đề phịng đặc biệt cơng việc phụ thêm người lập trình Hạn chế dường cần thiết phù hợp khơng may mắn giới hạn kích thước chương trình kích thước nhớ vật lý Thật vậy, xem xét chương trình thực thi nhận thấy nhiều trường hợp toàn chương trình khơng cần thiết Thậm chí trường hợp tồn chương trình u cầu khơng phải tất chương trình yêu cầu lúc Khả thực thi chương trình phần chương trình nhớ có nhiều lợi điểm: • Chương trình khơng cịn bị ràng buộc khơng gian nhớ vật lý sẳn có Người dùng viết chương trình có khơng gian địa ảo lớn, đơn giản hố tác vụ lập trình • Vì chương trình người dùng lấy nhớ vật lý nên nhiều chương trình thực thi thời điểm Điều giúp gia tăng việc sử dụng CPU thơng lượng khơng tăng thời gian đáp ứng • u cầu nhập/xuất để nạp hay hốn vị chương trình người dùng nhớ chương trình người dùng chạy nhanh Do đó, chạy chương trình mà khơng nằm hồn tồn nhớ có lợi cho người dùng hệ thống Bộ nhớ ảo tách biệt nhớ luận lý từ nhớ vật lý Việc tách biệt cho phép nhớ ảo lớn cung cấp cho người lập trình nhớ vật lý nhỏ sẳn dùng (hình VIII-1) Bộ nhớ ảo thực tác vụ lập trình dễ nhiều người lập trình khơng cần lo lắng lượng nhớ vật lý sẳn có hay mã thay việc phủ lắp; thay vào đó, người lập trình quan tâm vấn đề lập trình Trên hệ thống hỗ trợ nhớ ảo, việc phủ lắp biến Hình 0-1 Lưu đồ minh hoạ nhớ ảo lơn nhớ vật lý Thêm vào đó, việc tách biệt nhớ luận lý từ nhớ vật lý, nhớ ảo cho phép tập tin nhớ chia sẻ q trình khác thơng qua việc chia sẻ trang Ngoài ra, chia sẻ trang cho phép cải tiến lực tạo trình Bộ nhớ ảo thường cài đặt phân trang theo yêu cầu (demand paging) Nó cài đặt chế phân đoạn Một vài hệ thống cung cấp chế phân đoạn phân trang Trong chế phân đoạn chia thành trang Do đó, tầm nhìn người dùng phân đoạn, hệ điều hành cài đặt tầm nhìn với chế phân trang theo yêu cầu Phân đoạn theo yêu cầu dùng để cung cấp nhớ ảo Các hệ thống máy tính Burrough dùng phân đoạn theo yêu cầu Tuy nhiên, giải thuật thay đoạn phức tạp giải thuật thay trang đoạn có kích thước thay đổi Chúng ta không đề cập phân đoạn theo yêu cầu giáo trình IV Phân trang theo yêu cầu Một hệ thống phân trang theo yêu cầu tương tự hệ thống phân trang với hốn vị (hình VIII-2) Các trình định vị nhớ phụ (thường đĩa) Khi muốn thực thi trình, hốn vị vào nhớ Tuy nhiên, thay hốn vị tồn q trình nhớ, dùng hoán vị lười (lazy swapper) Bộ hốn vị lười khơng hoán vị trang vào nhớ trừ trang u cầu Vì xem trình chuỗi trang khơng gian địa liên tục có kích thước lớn, nên dùng hốn vị khơng phù hợp kỹ thuật Một hoán vị thao tác tồn q trình, ngược lại phân trang (pager) quan tâm với trang riêng rẻ q trình Do đó, dùng phân trang (hơn hoán vị) nối kết với phân trang theo yêu cầu Hình 0-2 Chuyển nhớ phân trang tới không gian đĩa liên tục IV.1 Các khái niệm Với chế này, cần số dạng phần cứng hỗ trợ để phân biệt trang nhớ trang đĩa Cơ chế bit hợp lệ-không hợp lệ dùng cho mục đích Tuy nhiên, thời điểm bit đặt “hợp lệ”, giá trị hiển thị trang tham chiếu tới hợp lệ nhớ Nếu bit đặt “không hợp lệ”, giá trị hiển thị trang không hợp lệ (nghĩa trang không không gian địa trình) hợp lệ đĩa Mục từ bảng trang cho trang không nhớ đơn giản đánh dấu không hợp lệ, hay chứa địa trang đĩa Trường hợp mơ tả hình VIII-3 Hình 0-3 Bảng trang số trang không nhớ Chú ý rằng, đánh dấu trang “khơng hợp lệ” khơng có tác dụng q trình khơng truy xuất trang Do đó, đoán tất trang thật cần nhớ, trình chạy xác mang tất trang vào nhớ Trong trình thực thi truy xuất trang định vị nhớ, việc thực thi xử lý bình thường Nhưng điều xảy trình cố gắng truy xuất trang mà trang khơng mang vào nhớ? Truy xuất trang đánh dấu “không hợp lệ” gây trap lỗi trang (page-fault trap) Phần cứng phân trang, dịch địa thông qua bảng trang, thông báo bit không hợp lệ đặt, gây trap tới hệ điều hành Trap kết lỗi hệ điều hành mang trang mong muốn vào nhớ (trong cố gắng tối thiểu chi phí chuyển đĩa yêu cầu nhớ) lỗi địa không hợp lệ kết việc cố gắng dùng địa nhớ không hợp lệ (như ký hiệu mảng không hợp lệ) Do đó, phải sửa trường hợp sơ xuất Thủ tục cho việc quản lý lỗi trang khơng phức tạp (hình VIII-4) 1) Chúng ta kiểm tra bảng bên (thường giữ với khối điều khiển trình) cho trình này, để xác định tham chiếu truy xuất nhớ hợp lệ hay không hợp lệ 2) Nếu tham chiếu khơng hợp lệ, kết thúc q trình Nếu hợp lệ, chưa mang trang vào nhớ, mang trang vào 3) Chúng ta tìm khung trống (thí dụ, cách mang trang từ danh sách khung trống) 4) Chúng ta lập thời biểu thao tác đĩa để đọc trang mong muốn vào khung trang vừa cấp phát 5) Khi đọc đĩa hoàn thành, sửa đổi bảng bên với trình bảng trang để hiển thị trang nhớ 6) Chúng ta khởi động lại thị mà bị ngắt trap địa khơng hợp lệ Bây q trình truy xuất trang ln nhớ Hình 0-4 Các bước quản lý lỗi trang Vì lưu trạng thái (thanh ghi, mã điều kiện, đếm thị lệnh) trình bị ngắt lỗi trang xảy ra, nên khởi động lại q trình xác nơi trạng thái, ngoại trừ trang mong muốn nhớ truy xuất Trong cách này, thực thi trình phần chưa nhớ Khi q trình cố gắng truy xuất vị trí khơng nhớ, phần cứng trap tới hệ điều hành (lỗi trang) Hệ điều hành đọc trang yêu cầu vào nhớ khởi động lại trình thể trang nhớ Trong trường hợp xấu nhất, bắt đầu thực thi trình với không trang nhớ Khi hệ điều hành đặt trỏ thị lệnh tới thị trình Tuy nhiên, thị trang khơng nằm nhớ, q trình báo lỗi trang Sau trang mang vào nhớ, trình tiếp tục thực thi, báo lỗi cần trang cần nhớ Tại thời điểm đó, thực thi với khơng có lỗi Cơ chế phân trang yêu cầu (pure demand paging): không mang trang vào nhớ yêu cầu Về lý thuyết, số q trình truy xuất nhiều trang nhớ với thực thi thị (một trang cho thị nhiều trang cho liệu), gây lỗi nhiều trang thị Trường hợp dẫn đến lực thực hệ thống chấp nhận May thay, phân tích q trình thực thi thể hành vi khơng hồn tồn xảy Các chương trình có khuynh hướng tham chiếu cục dẫn đến lực phù hợp từ phân trang yêu cầu Phần cứng hỗ trợ phân trang theo yêu cầu tương tự phần cứng phân trang hốn vị • Bảng trang: bảng có khả đánh dấu mục từ không hợp lệ thông qua bit hợp lệ-không hợp lệ hay giá trị đặc biệt bit bảo vệ • Bộ nhớ phụ: nhớ quản lý trang không diện nhớ Bộ nhớ phụ thường đĩa tốc độ cao Nó xem thiết bị hốn vị phần đĩa dùng cho mục đích gọi khơng gian hốn vị Ngồi hỗ trợ phần cứng này, phần mềm xem xét yêu cầu Ràng buộc kiến trúc phải áp đặt Ràng buộc quan trọng yêu cầu khởi động lại thị sau lỗi trang Trong hầu hết trường hợp, yêu cầu dễ dàng thoả mãn Lỗi trang xảy tham chiếu nhớ Nếu lỗi trang xảy việc lấy thị, khởi động lại cách lấy lại thị Nếu lỗi trang xảy lấy toán hạng, phải lấy giải mã lại thị, sau lấy tốn hạng IV.2 Năng lực phân trang theo yêu cầu Phân trang theo yêu cầu có ảnh hưởng lớn lực hệ thống máy tính Để thấy sao, tính thời gian truy xuất hiệu (effective access time) cho nhớ phân trang theo yêu cầu Đối với hầu hết hệ thống máy tính, thời gian truy xuất nhớ, ký hiệu ma, nằm khoảng từ 10 đến 200 nano giây Với điều kiện khơng có lỗi trang, thời gian truy xuất hiệu với thời gian truy xuất nhớ Tuy nhiên, lỗi trang xảy ra, trước hết phải đọc trang tương ứng từ đĩa sau truy xuất từ mong muốn Gọi p xác suất lỗi trang (0 ≤ p ≤ ) Chúng ta mong đợi p gần 0; nghĩa có vài lỗi trang Thời gian truy xuất hiệu là: Thời gian truy xuất hiệu = (1 – p) x ma + p x thời gian lỗi trang Để tính tốn thời gian truy xuất hiệu quả, phải biết phải để phục vụ lỗi trang Để trì mức độ chấp nhận chậm trễ hoạt động hệ thống phân trang, cần phải trì tỷ lệ phát sinh lỗi trang thấp V Thay trang Thay trang thực tiếp cận sau Nếu khơng có khung trống, tìm khung khơng dùng giải phóng Khi giải phóng khung cách viết nội dung tới khơng gian hốn vị thay đổi bảng trang (và bảng trang khác) để hiển thị trang khơng cịn nhớ (hình VIII5) Bây dùng khung giải phóng để quản lý trang cho q trình bị lỗi Chúng ta sửa đổi thủ tục phục vụ lỗi trang để chứa thay trang: 1) Tìm vị trí trang mong muốn đĩa 2) Tìm khung trang trống a) Nếu có khung trống, dùng b) Nếu khơng có khung trống, dùng giải thuật thay trang để chọn khung “nạn nhân” c) Viết trang “nạn nhân” tới đĩa; thay đổi bảng trang khung trang tương ứng 3) Đọc trang mong muốn vào khung trang trống; thay đổi bảng trang khung trang 4) Khởi động lại trình Hình 0-5 Thay trang Chúng ta phải giải hai vấn đề để cài đặt phân trang theo yêu cầu: phát triển giải thuật cấp phát khung giải thuật thay trang Nếu có nhiều q trình nhớ, phải định khung cấp phát tới q trình Ngồi ra, thay trang yêu cầu, phải chọn khung để thay Thiết kế giải thuật hợp lý để giải vấn đề tác vụ quan trọng nhập/xuất đĩa đắt Thậm chí cải tiến nhỏ phương pháp phân trang theo yêu cầu sinh lượng lớn lực hệ thống Có nhiều giải thuật thay trang khác Mỗi hệ điều hành có chế thay Chúng ta chọn giải thuật thay trang nào? Thông thường, muốn giải thuật tỉ lệ lỗi trang nhỏ Chúng ta đánh giá giải thuật cách chạy chuỗi tham chiếu nhớ cụ thể tính số lượng lỗi trang Chuỗi tham chiếu nhớ gọi chuỗi tham chiếu Chúng ta phát sinh chuỗi tham chiếu giả tạo (thí dụ, phát sinh số ngẫu nhiên) Chọn lựa sau tạo số lượng lớn liệu (trên thứ tự triệu địa giây) Để làm giảm số lượng liệu này, có hai cách Cách thứ nhất, kích thước trang cho (và kích thước trang thường cố định phần cứng hay hệ thống), cần xét số trang toàn địa Cách thứ hai, có tham chiếu tới trang p, tham chiếu tức theo sau tới trang p không gây lỗi trang Trang p nhớ sau tham chiếu đầu tiên; tham chiếu theo sau tức khơng bị lỗi V.1 Thay trang FIFO Giải thuật thay trang đơn giản giải thuật FIFO Giải thuật gắn với trang thời gian trang mang vào nhớ Khi trang phải thay thế, trang cũ chọn Chú ý rằng, khơng u cầu nghiêm ngặt để ghi thời gian trang mang vào Chúng ta tạo hàng đợi FIFO để quản lý tất trang nhớ Chúng ta thay trang đầu hàng đợi Khi trang mang vào nhớ, chèn vào hàng đợi Cho thí dụ chuỗi tham khảo, khung ban đầu rỗng tham khảo (7, 0, 1) gây lỗi trang mang vào khung rỗng Tham khảo (2) thay trang 7, trang mang vào trước Vì tham khảo nhớ rồi, khơng có lỗi trang cho tham khảo Tham khảo tới dẫn đến trang thay trang trang nhớ (0, 1, 2) để mang vào Bởi thay này, tham khảo tiếp theo, tới 0, bị lỗi Sau đó, trang thay trang Quá trình tiếp tục hiển thị hình VIII-6 Mỗi lỗi xảy ra, hiển thị trang khung Có 15 lỗi thảy Hình 0-6 giải thuật thay trang FIFO Giải thuật thay trang FIFO dễ hiểu lập trình Tuy nhiên, lực khơng ln tốt Trang cho để thay trang chức nhiều liệu cần thiết, thường xuyên sử dụng nên nạp sớm, chuyển nhớ phụ nhanh chóng gây lỗi trang Để hiển thị vấn đề phát sinh với giải thuật thay trang FIFO, xem xét chuỗi tham khảo sau: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, Hình VIII-7 hiển thị đường cong lỗi trang so sánh với số khung sẳn dùng Chúng ta ý số lượng lỗi cho khung (10) lớn số lượng lỗi cho khung (9) Hầu hết kết không mong đợi gọi nghịch lý Belady; số giải thuật thay trang, tỉ lệ lỗi trang tăng số lượng khung cấp phát tăng Chúng ta mong muốn cho nhiều nhớ tới trình cải tiến lực Trong vài nghiên cứu trước đây, nhà điều tra kết luận giả thuyết khơng ln Sự khơng bình thường Belady phát kết Hình 0-7 Đường cong lỗi trang cho thay FIFO chuỗi tham khảo V.2 Thay trang tối ưu hoá Kết phát nghịch lý Belady tìm giải thuật thay trang tối ưu Giải thuật thay trang tối ưu có tỉ lệ lỗi trang thấp tất giải thuật không gặp phải nghịch lý Belady Giải thuật tồn gọi OPT hay MIN Nó đơn giản là: thay trang mà khơng dùng cho khoảng thời gian lâu Sử dụng giải thuật thay trang đảm bảo tỉ lệ lỗi trang nhỏ cho số lượng khung cố định Thí dụ, chuỗi tham khảo mẫu, giải thuật thay trang tối ưu phát sinh lỗi trang, hiển thị hình VIII-8 tham khảo gây lỗi điền vào khung trống Tham khảo tới trang thay trang không dùng tham khảo 18, trái lại trang dùng trang 14 Tham khảo tới trang thay trang trang trang cuối trang nhớ tham khảo lần Với lỗi trang, thay tối ưu tốt nhiều giải thuật FIFO, có 15 lỗi (Nếu bỏ qua lỗi đầu mà tất giải thuật phải gặp thay tối ưu tốt gấp lần thay FIFO.) Thật vậy, giải thuật thay xử lý chuỗi tham khảo khung với lỗi Tuy nhiên, giải thuật thay trang tối ưu khó cài đặt u cầu kiến thức tương lai chuỗi tham khảo Do đó, giải thuật tối ưu dùng chủ yếu cho nghiên cứu so sánh Thí dụ, có ích để biết rằng, giải thuật không tối ưu nằm 12.3% tối ưu tệ, 4.7% trung bình Hình 0-8 giải thuật thay trang tối ưu V.3 Thay trang LRU Nếu giải thuật tối ưu khơng khả thi, có lẽ xấp xỉ giải thuật tối ưu Sự khác biệt chủ yếu giải thuật FIFO OPT FIFO dùng thời gian trang mang vào nhớ; giải thuật OPT dùng thời gian trang sử dụng Nếu dụng khứ gần xấp xỉ tương lai gần thay trang mà khơng dùng cho khoảng thời gian lâu (hình VIII-9) Tiếp cận giải thuật dùng gần (least-recently-used (LRU) ) Hình 0-9 giải thuật thay trang LRU Thay trang LRU gắn với trang thời gian sử dụng cuối trang Khi trang phải thay thế, LRU chọn trang không dùng khoảng thời gian lâu Chiến lược giải thuật thay trang tối ưu tìm kiếm lùi theo thời gian hướng tới (gọi SR trình tự ngược chuỗi tham khảo S tỉ lệ lỗi trang cho giải thuật OPT S tương tự tỉ lệ lỗi trang cho giải thuật OPT SR Tương tự, tỉ lệ lỗi trang giải thuật LRU S giống tỉ lệ lỗi trang cho giải thuật LRU SR) Kết ứng dụng thay LRU chuỗi tham khảo điển hình hiển thị hình VIII-10 Giải thuật LRU sinh 12 lỗi lỗi giống thay tối ưu Tuy nhiên, tham chiếu tới trang xảy thay LRU thấy khung nhớ, trang dùng gần Trang dùng gần trang 0, trước trang dùng Do đó, giải thuật LRU thay trang 2, trang để dùng Sau đó, gây lỗi trang 2, giải thuật LRU thay trang 3, trang nhớ {0, 3, 4} trang sử dụng gần Mặc dù vấn đề thay LRU với 12 lỗi tốt thay FIFO với 15 Hình 0-10 giải thuật thay trang Chính sách LRU thường dùng giải thuật thay trang xem tốt Vấn đề cách cài đặt thay LRU Một giải thuật thay trang LRU yêu cầu trợ giúp phần cứng Vấn đề xác định thứ tự cho khung định nghĩa thời gian sử dụng gần Hai cách cài đặt khả thi là: • Bộ đếm: trường hợp đơn giản nhất, gắn mục từ bảng trang trường số lần sử dụng thêm CPU đồng hồ luận lý hay đếm Đồng hồ tăng cho tham khảo nhớ Bất tham khảo tới trang thực hiện, nội dung ghi đồng hồ chép tới trường số lần sử dụng mục từ bảng trang cho trang Trong cách này, ln có thời gian tham khảo cuối tới trang Chúng ta thay trang với giá trị số lần sử dụng nhỏ Cơ chế yêu cầu tìm kiếm bảng trang để tìm trang LRU viết tới nhớ (tới trường thời gian dùng bảng trang) cho truy xuất nhớ Số lần phải trì bảng trang bị thay đổi (do định thời CPU) Vượt giới hạn đồng hồ phải xem xét • Ngăn xếp: tiếp cận khác để cài đặt thay LRU giữ ngăn xếp số trang Bất trang tham khảo, bị xố từ ngăn xếp đặt đỉnh Trong cách này, đỉnh ngăn xếp trang dùng gần đáy trang LRU (hình VIII-11) Vì mục từ phải xố từ ngăn xếp, cài đặt tốt danh sách liên kết kép với trỏ đầu Xố trang đặt đỉnh ngăn xếp sau yêu cầu thay đổi trỏ trường hợp xấu Mỗi cập nhật chi phí khơng cần tìm thay thế; trỏ tới đáy ngăn xếp trang LRU Tiếp cận đặc biệt phù hợp cho cài đặt phần mềm hay vi mã thay LRU Thay tối ưu hố LRU khơng gặp phải nghịch lý Belady Có lớp giải thuật thay trang gọi giải thuật ngăn xếp, mà khơng hiển thị nghịch lý Belady Một giải thuật ngăn xếp giải thuật mà hiển thị tập hợp trang nhớ n khung trang tập hợp tập hợp trang mà nhớ với n + khung Đối với thay LRU, tập hợp trang nhớ n trang tham khảo gần Nếu số trang gia tăng n trang trang tham khảo gần nhớ Chú ý cài đặt LRU khơng có trợ giúp phần cứng ngoại trừ ghi TLB Cập nhật trường đồng hồ hay ngăn xếp phải thực cho tham khảo nhớ Nếu sử dụng ngắt cho tham khảo nhớ, cho phép phần mềm cập nhật cấu trúc liệu làm chậm tham khảo nhớ gần phần 10 Rất hệ thống chịu cấp độ chi phí cho việc quản lý nhớ Hình 0-11 sử dụng ngăn xếp để ghi tham khảo trang gần V.4 Giải thuật thay trang xấp xỉ LRU Rất hệ thống máy tính cung cấp đầy đủ hỗ trợ phần cứng cho thay trang LRU Một số hệ thống không cung cấp hỗ trợ phần cứng giải thuật thay trang khác (như giải thuật FIFO) phải dùng Tuy nhiên, nhiều hệ thống cung cấp vài hỗ trợ dạng bit tham khảo Bit tham khảo cho trang đặt phần cứng, trang tham khảo (đọc hay viết tới bit trang) Các bit tham khảo gắn liền với mục từ bảng trang Ban đầu, tất bit xoá (tới 0) hệ điều hành Khi trình người dùng thực thi, bit gán với trang tham khảo đặt (tới 1) phần cứng Sau thời gian đó, chúng xác định trang dùng trang không dùng cách xem xét bit tham khảo Chúng ta thứ tự sử dụng biết trang dùng trang không dùng Thông tin thứ tự phần dẫn tới nhiều giải thuật thay trang xấp xỉ thay LRU V.4.1 Giải thuật bit tham khảo phụ Chúng ta nhận thêm thơng tin thứ tự cách ghi nhận bit tham khảo khoảng thời gian đặn Chúng ta giữ byte cho trang bảng nằm nhớ Tại khoảng thời gian đặn (mỗi 100 mili giây), ngắt thời gian chuyển điều khiển tới hệ điều hành Hệ điều hành chuyển bit tham khảo cho trang vào bit có trọng số lớn byte, dịch bit lại sang phải bit Xố bit có trọng số thấp Thanh ghi dịch bit chứa lịch sử việc sử dụng trang lần gần Nếu ghi dịch chứa 00000000, trang không dùng cho thời điểm; trang dùng lần thời điểm có giá trị ghi dịch 11111111 Một ghi với giá trị ghi lịch sử 11000100 dùng gần trang với 01110111 Nếu thông dịch bit số nguyên không dấu, trang với số thấp trang LRU thay Tuy nhiên, số không đảm bảo nhất, thay tất trang với giá trị nhỏ hay dùng FIFO để chọn chúng Dĩ nhiên, số lượng bit lịch sử khác chọn (phụ thuộc phần cứng sẳn có) để thực cập nhật nhanh Trong trường hợp cực độ, số giảm 0, bit tham khảo Giải thuật gọi giải thuật thay trang hội thứ hai (second-chance page-replacement algorithm) V.4.2 Giải thuật hội thứ hai Hình 0-12 giải thuật thay trang hội thứ hai Giải thuật thay trang hội thứ hai giải thuật thay FIFO Tuy nhiên, trang chọn, xét bit tham khảo Nếu giá trị bit 0, xử lý để thay trang Tuy nhiên, bit tham khảo đặt tới 1, cho trang hội thứ hai di chuyển để chọn trang FIFO Khi trang nhận hội thứ hai, bit tham khảo xố thời gian đến đặt lại thời gian hành Do đó, trang cho hội thứ hai không thay tất trang khác thay (hay cho hội thứ hai) Ngoài ra, trang dùng đủ thường xuyên để giữ bit tham khảo đặt, không bị thay Một cách để cài đặt giải thuật hội thứ hai hàng đợi vòng Một trỏ hiển thị trang thay Khi khung yêu cầu, trỏ tăng tìm trang với bit tham khảo Khi tăng, xố bit tham khảo (hình VIII-12) Một trang nạn nhân tìm thấy, trang thay trang chèn vào hàng đợi vịng vị trí Chú ý rằng, trường hợp xấu tất bit đặt, trỏ xoay vòng suốt toàn hàng đợi, cho trang hội thứ hai Thay hội thứ hai trở thành thay FIFO tất bit đặt V.4.3 Giải thuật hội thứ hai nâng cao Chúng ta cải tiến giải thuật hội thứ hai cách xem xét hai bit tham khảo sửa đổi cặp xếp thứ tự Với hai bit , có trường hợp có thể: 1) (0,0) không dùng không sửa đổi-là trang tốt để thay 2) (0,1) không dùng sửa đổi-không thật tốt trang cần viết trước thay 3) (1,0) dùng không sửa đổi-nó nhanh chóng dùng lại 4) (1,1) dùng sửa đổi-trang nhanh chóng dùng lại trang cần viết đĩa trước thay Khi thay trang yêu cầu, trang bốn trường hợp Chúng ta dùng chế giải thuật đồng hồ, thay xem xét trang trỏ tới có bit tham khảo đặt tới hay không, xem xét trường hợp mà trang thuộc Chúng ta thay trang gặp trường hợp thấp không rỗng Có thể phải qt hàng đợi vịng nhiều lần trước tìm trang thay Giải thuật dùng chế quản lý nhớ ảo Macintosh Sự khác chủ yếu giải thuật giải thuật đồng hồ đơn giản cho tham khảo tới trang mà chúng sửa đổi để cắt giảm số lượng nhập/xuất yêu cầu V.4.4 Thay trang dựa sở đếm Có nhiều giải thuật khác dùng để thay trang Thí dụ, giữ đếm số lần tham khảo trang phát triển hai chế sau: • Giải thuật thay trang dùng thường xuyên (the least frequently used (LFU) page-replacement algorithm) yêu cầu trang với số đếm nhỏ thay Lý cho chọn lựa trang dùng nên có đếm tham khảo lớn Giải thuật gặp phải trường hợp: trang dùng nhiều q trình khởi tạo khơng dùng lại Vì dùng nhiều nên có đếm lớn nhớ khơng cịn cần Một giải pháp dịch đếm sang phải bit khoảng thời gian đặn, hình thành đếm sử dụng trung bình giảm theo hàm mũ • Giải thuật thay trang dùng thường xuyên (the most frequently used (MFU) page-replacement algorithm) thay trang có giá trị đếm lớn nhất, nghĩa trang sử dụng nhiều VI Cấp phát khung trang Chúng ta cấp phát lượng nhớ trống cố định trình khác nào? Nếu có 93 khung trang trống q trình, khung trang trình nhận? Trường hợp đơn giản nhớ ảo hệ thống đơn nhiệm Xét hệ thống đơn nhiệm với 128 KB nhớ hình thành từ trang có kích thước KB Do đó, có 128 khung trang Hệ điều hành lấy 35 KB, cịn lại 93 khung trang cho trình người dùng Dưới phân trang yêu cầu, tất 93 khung trang đặt vào danh sách khung trống Khi q trình người dùng bắt đầu thực thi, sinh chuỗi lỗi trang Những lỗi trang 93 nhận khung trống từ danh sách khung trống Khi danh sách khung trống hết, giải thuật thay trang dùng để chọn 93 trang nhớ để thay với trang thứ 94, …Khi trình kết thúc, khung trang 93 lần thay danh sách khung trang trống Có nhiều thay đổi chiến lược đơn giản Chúng ta yêu cầu hệ điều hành cấp phát tất vùng đệm khơng gian bảng từ danh sách khung trống Khi không gian không dùng hệ điều hành, dùng để hỗ trợ phân trang người dùng Chúng ta cố gắng giữ khung trang trống dự trữ danh sách khung trang trống tất thời điểm Do đó, lỗi trang xảy có khung trống sẳn có trang Trong hốn vị trang xảy ra, thay chọn, sau trang viết tới đĩa trình người dùng tiếp tục thực thi Một thay đổi khác thực chiến lược trình người dùng cấp phát khung trang trống Một vấn đề khác phát sinh phân trang yêu cầu kết hợp với đa chương Đa chương đặt hai hay nhiều trình nhớ thời điểm VI.1 Số khung trang tối thiểu Những chiến lược cấp phát khung trang bị ràng buộc nhiều cách khác Chúng ta cấp phát nhiều toàn số khung trang sẳn có (nếu khơng có chia sẻ trang) Chúng ta cấp phát số khung trang tối thiểu Chú ý, số khung trang cấp phát tới trình giảm, tỉ lệ lỗi trang tăng, giảm việc thực thi q trình Ngồi ra, lực thực việc cấp phát ngồi mong muốn có vài khung trang, có số khung trang tối thiểu phải cấp phát Số lượng tối thiểu Số tối thiểu qui định kiến trúc máy tính Nhớ rằng, lỗi trang xảy trước thị thực thi hoàn thành, thị phải bắt đầu lại Do đó, phải có đủ khung trang để giữ tất trang khác mà thị đơn tham khảo Thí dụ, xét máy tất thị tham khảo nhớ có địa nhớ Do đó, cần khung trang cho thị khung trang cho tham khảo nhớ Ngoài ra, định địa gián tiếp cấp phép (thí dụ, thị load trang 16 tham khảo tới địa nhớ trang 0, mà tham khảo gián tiếp tới trang 23), phân trang u cầu khung q trình Điều xảy q trình có hai khung trang VI.1.1 Các giải thuật cấp phát trang Có hai tiếp cận: Cấp phát cố định • Cấp phát cơng bằng: có m khung trang n q trình, q trình cấp m/n khung trang • Cấp phát theo tỉ lệ: dựa vào kích thước tiến trình để cấp phát số khung trang: i Gọi si = kích thước nhớ ảo cho q trình pi ii S = ∑ si iii m = tổng số khung trang sử dụng iv Cấp phát khung trang tới trình pi: = (si / S) m Cấp phát theo độ ưu tiên Sử dụng ý tưởng cấp phát theo tỷ lệ, lượng khung trang cấp cho trình phụ thuộc vào độ ưu tiên q trình phụ thuộc kích thước trình Nếu trình pi phát sinh lỗi trang, chọn khung trang để thay thế, chọn khung trang trình khác với độ ưu tiên thấp để thay • Thay trang tồn cục hay cục Có thể phân thuật toán thay trang thành hai lớp chính: i Thay tồn cục: lỗi trang xảy với trình, chọn trang “nạn nhân” từ tập tất khung trang hệ thống, khung trang cấp phát cho trình khác ii Thay cục bộ: yêu cầu chọn trang thay tập khung trang cấp cho trình phát sinh lỗi trang Một khuyết điểm giải thuật thay toàn cục q trình khơng thể kiểm sốt tỷ lệ phát sinh lỗi trang Vì thế, giải thuật thay tồn cục nhìn chung cho phép hệ thống có nhiều khả xử lý hơn, dẫn hệ thống đến tình trạng trì trệ tồn hệ thống (thrashing) VII Trì trệ tồn hệ thống Nếu q trình khơng có đủ khung trang để chứa trang cần thiết cho xử lý thường xun phát sinh lỗi trang phải dùng đến nhiều thời gian sử dụng CPU để thực thay trang Một hoạt động phân trang gọi trì trệ (thrashing) Một trình lâm vào trạng thái trì trệ sử dụng nhiều thời gian để thay để xử lý Hiện tượng ảnh hưởng nghiêm trọng đến hoạt động hệ thống, xét tình sau: 1) Hệ điều hành giám sát việc sử dụng CPU 2) Nếu hiệu suất sử dụng CPU thấp, hệ điều hành nâng mức độ đa chương cách đưa thêm trình vào hệ thống 3) Hệ thống sử dụng giải thuật thay toàn cục để chọn trang nạn nhân thuộc tiến trình để có chỗ nạp q trình mới, thay trang tiến trình xử lý hành 4) Khi có nhiều q trình hệ thống hơn, q trình cấp khung trang phát sinh nhiều lỗi trang 5) Khi trình phát sinh nhiều lỗi trang, chúng phải trải qua nhiều thời gian chờ thao tác thay trang hồn tất, lúc hiệu suất sử dụng CPU lại giảm 6) Hệ điều hành lại quay trở lại bước Theo kịch đây, hệ thống lâm vào tình trạng luẩn quẩn việc giải phóng trang để cấp phát thêm khung trang cho trình, trình khác lại thiếu khung trang q trình khơng thể tiếp tục xử lý Đây tình trạng trì trệ tồn hệ thống Khi tình trạng trì trệ xảy ra, hệ thống gần khả xử lý, tốc độ phát sinh lỗi trang tăng cao khơng cơng việc kết thúc tất trình bận rộn với việc phân trang Để ngăn cản tình trạng trì trệ xảy ra, cần phải cấp cho trình đủ khung trang cần thiết để hoạt động Vấn đề cần giải biết trình cần trang? VII.1 Mơ hình cục Theo lý thuyết cục trình xử lý có khuynh hướng di chuyển từ nhóm trang cục đến nhóm trang cục khác Một nhóm trang cục tập trang trình dùng đến khoảng thời gian Một chương trình thường bao gồm nhiều nhóm trang cục khác chúng giao VII.2 Mơ hình tập làm việc Mơ hình tập làm việc (working set model) dựa sở lý thuyết cục Mơ hình sử dụng tham số ∆ để định nghĩa cửa sổ cho tập làm việc Giả sử, khảo sát ∆ đơn vị thời gian (lần truy xuất trang) cuối cùng, tập trang trình truy xuất đến ∆ lần truy cập cuối gọi tập làm việc trình thời điểm Nếu trang trình truy xuất tới, nằm tập làm việc khơng sử dụng nữa, bị loại khỏi tập làm việc trình sau ∆ đơn vị thời gian kể từ lần truy xuất cuối đến Như vậy, tập làm việc xấp xỉ khái niệm nhóm trang cục Hình 0-13 Mơ hình tập làm việc Thuộc tính quan trọng tập làm việc kích thước Nếu tính tốn kích thước tập làm việc WSSi, cho tiến trình hệ thống xem: D = ∑ WSSi Với D tổng số khung trang u cầu cho tồn hệ thống Mỗi q trình sử dụng trang tập làm việc nó, nghĩa trình i yêu cầu WSSi khung trang Nếu tổng số trang yêu cầu vượt tổng số trang sử dụng hệ thống (D > m), xảy tình trạng trì trệ tồn Dùng mơ hình tập làm việc đơn giản Hệ điều hành kiểm soát tập làm việc trình cấp phát cho trình tối thiểu khung trang để chứa đủ tập làm việc Nếu có đủ khung trang bổ sung q trình khác khởi tạo Nếu tổng kích thước tập làm việc gia tăng vượt tổng số khung sẳn có, hệ điều hành chọn q trình để tạm dừng Những trang trình viết đĩa khung trang cấp phát lại cho trình khác Quá trình tạm dừng khởi động lại sau Chiến lược tập làm việc ngăn chặn trì trệ giữ cấp độ đa chương cao Do đó, tối ưu việc sử dụng CPU Khó khăn với mơ hình tập làm việc giữ vết tập làm việc Cửa sổ tập làm việc cửa sổ di chuyển Tại tham khảo nhớ, tham khảo xuất tham khảo trước kết thúc tham khảo cũ trở thành điểm kết thúc khác Một trang tập làm việc tham khảo nơi cửa sổ tập làm việc Chúng ta xem mơ hình tập làm việc gần xấp xỉ với ngắt đồng hồ sau chu kỳ cố định bit tham khảo VII.3 Tần suất lỗi trang Tần suất lỗi trang cao khiến tình trạng trì trệ hệ thống xảy Khi tần suất lỗi trang cao, trình cần thêm số khung trang Ngược lại, tần suất thấp, trình sở hữu nhiều khung trang mức cần thiết Có thể thiết lập giá trị cận cận cho tần suất xảy lỗi trang trực tiếp ước lượng kiểm soát tần suất lỗi trang để ngăn chặn tình trạng trì trệ xảy ra: • Nếu tần suất lỗi trang vượt cận trên, cấp cho q trình thêm khung trang • Khi tần suất lỗi trang thấp cận dưới, thu hồi bớt khung trang từ trình Với chiến lược tập làm việc, có phải tạm dừng trình Nếu tỉ lệ lỗi trang tăng khơng có trang trống, phải chọn số q trình tạm dừng Sau đó, khung trang giải phóng phân phối lại cho trình với tỉ lệ lỗi trang cao VIII Các vấn đề khác VIII.1 Kích thước trang Kích thước trang thơng thường xác định phần cứng Khơng có chọn lựa lý tưởng cho kích thước trang: • Kích thước trang lớn kích thước bảng trang giảm • Kích thước trang nhỏ cho phép tổ chức nhóm trang cục tốt giảm phân mãnh • Thời gian nhập xuất nhỏ kích thước trang lớn • Kích thước trang nhỏ giảm số lượng thao tác nhập xuất cần thiết xác định nhóm trang cục xác • Kích thước trang lớn giảm tần xuất lỗi trang Đa số hệ thống chọn kích thước trang KB VIII.2 Cấu trúc chương trình Về nguyên tắc, kỹ thuật phân trang theo yêu cầu thiết kế nhằm giúp người dùng khỏi bận tâm đến việc sử dụng nhớ cách hiệu Tuy nhiên, hiểu rõ tổ chức nhớ kỹ thuật phân trang, lập trình viên giúp cho hoạt động hệ thống tốt với chương trình xây dựng phù hợp Thí dụ, giả sử trang có kích thước 128 bytes, chương trình khởi tạo gán giá trị mảng có kích thước 128x128 sau: Var A: array[1 128] of array [1 128] of byte; For i:= to 128 For j:=1 to 128 A[i][j]:=0; Trong Pascal, C, PL/I, mảng lưu trữ theo thứ tự dòng, dòng mảng chiếm trang nhớ, tổng số lỗi trang phát sinh 128 Trong Fortran, mảng lại lưu trữ theo thứ tự cột, tổng số lỗi trang phát sinh 128x128 = 1638 VIII.3 Neo trang nhớ Khi áp dụng kỹ thuật phân trang đơi lúc có nhu cầu “neo” nhớ số trang quan trọng thường sử dụng chuyển nhớ phụ để bảo toàn liệu Khi sử dụng thêm bit khố gán tương ứng cho khung trang Một khung trang có bit khố đặt khơng bị chọn để thay IX Tóm tắt Mong muốn thực thi q trình có khơng gian địa luận lý lớn khơng gian địa vật lý sẳn có Người lập trình làm q trình thực thi cách cấu trúc lại dùng chế phủ lắp, thực điều thường tác vụ lập trình khó Bộ nhớ ảo kỹ thuật cho phép không gian địa luận lý ánh xạ vào nhớ vật lý nhỏ Bộ nhớ ảo cho phép trình cực lớn chạy cho phép cấp độ đa chương gia tăng, tăng khả sử dụng CPU Ngồi ra, giải phóng người lập trình ứng dụng từ việc lo lắng khả sẳn có nhớ Thuần phân trang theo yêu cầu mang vào trang trang tham khảo Tham khảo gây lỗi trang tới hệ điều hành Hệ điều hành xem xét bảng trang bên để xác định nơi trang định vị vùng nhớ phụ Bảng trang cập nhật để phản ánh thay đổi này, cho phép q trình chạy tồn hình ảnh nhớ khơng nhớ Khi tỉ lệ lỗi trang tương đối thấp, lực chấp nhận Chúng ta dùng phân trang theo yêu cầu để giảm số khung trang cấp phát tới q trình Sắp xếp tăng cấp độ đa chương (cho phép nhiều trình sẳn sằng thực thi thời điểm) Nó cho phép trình thực thi yêu cầu nhớ vượt toàn bộ nhớ vật lý sẳn có Những q trình chạy nhớ ảo Nếu tổng số yêu cầu nhớ vượt q nhớ vật lý, cần thay trang từ nhớ tới khung trang trống cho trang Những giải thuật thay trang khác dùng Thay trang FIFO dễ dàng chương trình gặp phải lỗi Belady Thay trang tối ưu yêu cầu kiến thức tương lai Thay LRU xấp xỉ tối ưu khó cài đặt Hầu hết giải thuật thay trang giải thuật hội thứ hai xấp xỉ thay LRU Ngoài giải thuật thay trang, sách cấp phát khung trang yêu cầu Cấp phát cố định, đề nghị thay trang cục bộ, hay động, đề nghị thay tồn cục Mơ hình tập làm việc cho trình thực thi vị trí Tập làm việc tập trang vị trí hành Theo đó, q trình nên cấp phát đủ khung cho tập làm việc hành Nếu q trình khơng có đủ nhớ cho tập làm việc nó, bị trì trệ Cung cấp đủ khung cho q trình để tránh trì trệ u cầu q trình hốn vị định thời Ngồi ra, để yêu cầu giải vấn đề thay trang cấp phát khung trang, thiết kế hợp lý hệ thống phân trang yêu cầu xem xét kích thước trang, nhập/xuất, khố, phân lại trang, tạo trình, cấu trúc chương trình, trì trệ, Bộ nhớ ảo xem cấp chế phân cấp cấp lưu trữ hệ thống máy tính Mỗi cấp có thời gian truy xuất, kích thước tham số chi phí ... trang cục tập trang trình dùng đến khoảng thời gian Một chương trình thường bao gồm nhiều nhóm trang cục khác chúng giao VII.2 Mơ hình tập làm việc Mơ hình tập làm việc (working set model) dựa... định bit tham khảo VII.3 Tần suất lỗi trang Tần suất lỗi trang cao khiến tình trạng trì trệ hệ thống xảy Khi tần suất lỗi trang cao, trình cần thêm số khung trang Ngược lại, tần suất q thấp, q... đặc biệt bit bảo vệ • Bộ nhớ phụ: nhớ quản lý trang khơng diện nhớ Bộ nhớ phụ thường đĩa tốc độ cao Nó xem thiết bị hoán vị phần đĩa dùng cho mục đích gọi khơng gian hốn vị Ngồi hỗ trợ phần cứng