Theo khái niệm của Virtual Memory, để thực hiện một số tiến trình, chỉ một phần của tiến trình cần có mặt trong bộ nhớ chính, nghĩa là chỉ có một số trang sẽ chỉ hiện diện trong bộ nhớ chính bất kỳ lúc nào.
Tuy nhiên, việc quyết định trang nào cần được lưu trong bộ nhớ chính và trang nào cần được lưu trong bộ nhớ phụ, sẽ rất khó khăn vì chúng ta không thể nói trước rằng một quá trình sẽ yêu cầu một trang cụ thể tại một thời điểm cụ thể.
Do đó, để khắc phục vấn đề này, có một khái niệm gọi là Demand Paging được đưa ra. Nó gợi ý giữ tất cả các trang của khung trong bộ nhớ phụ cho đến khi chúng được yêu cầu. Nói cách khác, nó nói rằng không tải bất kỳ trang nào trong bộ nhớ chính cho đến khi nó được yêu cầu.
Bất cứ khi nào trang bất kỳ được giới thiệu lần đầu tiên trong bộ nhớ chính, thì trang đó sẽ được tìm thấy trong bộ nhớ phụ.
Sau đó, nó có thể có hoặc có thể không xuất hiện trong bộ nhớ chính tùy thuộc vào thuật toán thay thế trang sẽ được đề cập ở phần sau của hướng dẫn này.
Xem thêm Tìm hiểu về Paging trong hệ điều hành
Khái niệm về Demand Paging
Khái niệm về Demand Paging là một yếu tố quan trọng trong hệ điều hành mà cần được hiểu rõ. Demand Paging là kỹ thuật cho phép hệ điều hành tải các trang từ ổ cứng vào bộ nhớ vật lý chỉ khi cần thiết, giúp giảm tải lượng bộ nhớ cần sử dụng và tăng hiệu suất của hệ thống.
Demand Paging hoạt động dựa trên nguyên tắc trang bị trao đổi, trong đó quá trình chỉ tải trang vào bộ nhớ khi cần truy cập đến nó và nếu trang đó không tồn tại trong bộ nhớ vật lý. Quá trình trang chuyển tự động diễn ra mà không cần sự can thiệp từ người dùng hay chương trình.
Việc áp dụng Demand Paging trong hệ điều hành mang lại nhiều lợi ích, bao gồm giảm tải lượng bộ nhớ vật lý sử dụng, tăng hiệu suất hệ thống và hỗ trợ quản lý bộ nhớ linh hoạt. Điều này đóng góp vào việc tối ưu hóa việc sử dụng bộ nhớ và cải thiện trải nghiệm người dùng.
Tìm hiểu về khái niệm Demand Paging trong hệ điều hành là một bước quan trọng để hiểu cách hệ thống quản lý bộ nhớ và tối ưu hóa hiệu suất.
Lỗi trang là gì?
Nếu trang được giới thiệu không xuất hiện trong bộ nhớ chính thì sẽ có lỗi và khái niệm được gọi là lỗi trang.
CPU phải truy cập trang bị bỏ lỡ từ bộ nhớ phụ. Nếu số lượng trang bị lỗi nhiều thì thời gian truy cập hiệu quả của hệ thống sẽ rất cao.
Thrashing là gì?
Nếu số lỗi trang bằng số trang được giới thiệu hoặc số lỗi trang quá nhiều khiến CPU vẫn bận chỉ đọc các trang từ bộ nhớ phụ thì thời gian truy cập hiệu quả sẽ là thời gian được thực hiện bởi CPU để đọc một từ từ bộ nhớ phụ và nó sẽ rất cao. Khái niệm này được gọi là đập.
Nếu tỷ lệ lỗi trang là PF%, thời gian lấy một trang từ bộ nhớ phụ và khởi động lại là S (thời gian phục vụ) và thời gian truy cập bộ nhớ là ma thì thời gian truy cập hiệu quả có thể được đưa ra là;
- EAT = PF X S + ( 1 – PF) X (ma)
Bảng trang đảo ngược
Bảng trang đảo ngược là bảng trang chung được Hệ điều hành duy trì cho tất cả các quy trình. Trong bảng trang đảo ngược, số mục nhập bằng số khung hình trong bộ nhớ chính. Nó có thể được sử dụng để khắc phục những hạn chế của bảng trang.
Luôn luôn có một không gian dành riêng cho trang bất kể thực tế là nó có hiện diện trong bộ nhớ chính hay không. Tuy nhiên, đây chỉ đơn giản là sự lãng phí bộ nhớ nếu trang không xuất hiện.
Chúng ta có thể tiết kiệm sự lãng phí này bằng cách đảo ngược bảng trang. Chúng tôi chỉ có thể lưu thông tin chi tiết cho các trang có trong bộ nhớ chính. Khung là các chỉ số và thông tin được lưu bên trong khối sẽ là ID quy trình và số trang.
Xem thêm Page table trong hệ điều hành
Lợi ích của Demand Paging
Lợi ích của Demand Paging trong hệ điều hành là:
- Giảm lượng bộ nhớ vật lý sử dụng: Demand Paging cho phép chỉ tải các trang cần thiết vào bộ nhớ vật lý khi cần. Điều này giúp tiết kiệm dung lượng bộ nhớ vật lý, đặc biệt quan trọng khi hệ thống có nhiều quá trình chạy đồng thời hoặc khi bộ nhớ vật lý có dung lượng hạn chế.
- Tăng hiệu suất hệ thống: Kỹ thuật Demand Paging giúp tăng hiệu suất của hệ thống bằng cách chỉ tải các trang cần thiết vào bộ nhớ vật lý khi cần. Điều này giảm thời gian truy cập vào ổ cứng và tối ưu hóa việc sử dụng bộ nhớ. Khi một trang bị yêu cầu và không có trong bộ nhớ vật lý, chỉ có một lượng nhỏ dữ liệu cần được truy cập từ ổ cứng.
- Hỗ trợ quản lý bộ nhớ linh hoạt: Demand Paging cho phép hệ điều hành quản lý bộ nhớ một cách linh hoạt. Các trang không cần thiết có thể được xóa khỏi bộ nhớ vật lý để làm chỗ cho các trang mới. Hệ điều hành có thể điều chỉnh việc trao đổi trang giữa bộ nhớ vật lý và ổ cứng dựa trên nhu cầu và ưu tiên của các quá trình đang thực thi.
- Tiết kiệm tài nguyên: Demand Paging giúp tận dụng tối đa dung lượng bộ nhớ vật lý và ổ cứng. Chỉ các trang thực sự cần thiết được tải vào bộ nhớ vật lý, giúp giảm lượng dữ liệu không cần thiết và tối ưu hóa việc sử dụng tài nguyên hệ thống.
Với những lợi ích trên, Demand Paging là một kỹ thuật quan trọng trong hệ điều hành để cải thiện hiệu suất và hiệu quả của việc quản lý bộ nhớ.
Xem thêm Virtual Memory trong hệ điều hành
Các thành phần trong Demand Paging
Trong Demand Paging, có ba thành phần chính:
- Bảng trang (Page Table): Bảng trang là một cấu trúc dữ liệu được sử dụng để lưu trữ thông tin về các trang trong bộ nhớ. Mỗi trang được gán một địa chỉ ảo và một địa chỉ vật lý. Bảng trang giúp hệ điều hành biết địa chỉ vật lý tương ứng của mỗi trang khi cần truy cập.
- Trình quản lý bộ nhớ (Memory Manager): Trình quản lý bộ nhớ là thành phần trong hệ điều hành quản lý việc trao đổi dữ liệu giữa bộ nhớ vật lý và ổ cứng. Nó đảm nhận nhiệm vụ tải các trang từ ổ cứng vào bộ nhớ khi cần thiết, cũng như xóa các trang không cần thiết khỏi bộ nhớ để tạo chỗ cho các trang mới.
- Trình quản lý trang (Page Manager): Trình quản lý trang là thành phần trong hệ điều hành quản lý việc truy cập và sử dụng các trang trong bộ nhớ. Nó kiểm tra xem một trang đã được tải vào bộ nhớ vật lý hay chưa và quyết định trang chuyển (page fault) xảy ra khi một trang không có sẵn trong bộ nhớ vật lý và cần được tải lên từ ổ cứng.
Các thành phần này là cốt lõi trong quá trình hoạt động của Demand Paging, đảm bảo việc quản lý và truy cập trang hiệu quả trong hệ điều hành.
Cách thức hoạt động của Demand Paging
Cách thức hoạt động của Demand Paging trong hệ điều hành được mô tả như sau:
- Khởi đầu: Ban đầu, không có trang nào trong bộ nhớ vật lý, chỉ có bảng trang được tạo ra và các trang đều được đánh dấu là không được tải lên bộ nhớ.
- Truy cập vào trang: Khi một quá trình cần truy cập vào một trang nào đó, hệ điều hành kiểm tra bảng trang để xem trang đó có được tải lên bộ nhớ vật lý hay không.
- Trang chuyển (Page Fault): Nếu trang không có sẵn trong bộ nhớ vật lý, một trang chuyển (page fault) xảy ra. Hệ điều hành phát hiện điều này và thực hiện các bước sau:
- Tìm trang trống: Hệ điều hành tìm một trang trống trong bộ nhớ vật lý để tải trang cần thiết từ ổ cứng.
- Đọc từ ổ cứng: Trang được đọc từ ổ cứng và tải vào trang trống trong bộ nhớ vật lý.
- Cập nhật bảng trang: Bảng trang được cập nhật để chỉ định rằng trang đã được tải lên bộ nhớ vật lý và ánh xạ địa chỉ ảo của trang đó sang địa chỉ vật lý tương ứng.
- Truy cập trang đã được tải: Sau khi trang đã được tải lên bộ nhớ vật lý, quá trình có thể truy cập và sử dụng trang đó bình thường.
- Xóa trang không cần thiết: Nếu không có đủ trang trống trong bộ nhớ vật lý để tải một trang mới, hệ điều hành phải xóa một trang không cần thiết khỏi bộ nhớ để tạo chỗ cho trang mới. Trang không cần thiết có thể được lựa chọn dựa trên các thuật toán quản lý bộ nhớ như LRU (Least Recently Used).
Cách thức hoạt động của Demand Paging cho phép hệ điều hành chỉ tải các trang cần thiết vào bộ nhớ vật lý khi cần, giúp tiết kiệm tài nguyên và tối ưu hóa hiệu suất hệ thống. Quá trình trang chuyển được thực hiện tự động và không gây gián đoạn đối với quá trình đang thực thi.