Phân trang là một phương pháp giúp truy cập dữ liệu nhanh hơn. Khi một chương trình yêu cầu một trang, nó đã có sẵn trong bộ nhớ chính bởi vì hệ điều hành sao chép một số lượng cố định các trang từ thiết bị lưu trữ vào bộ nhớ chính. Phân trang cho phép không gian địa chỉ vật lý của một tiến trình không cần phải liên tục. Phân trang đề cập đến một chiến lược quản lý bộ nhớ loại bỏ nhu cầu phải cấp phát liên tục bộ nhớ vật lý.
Phân trang(Paging) là gì?
Phân trang(Paging) là một phương thức quản lý bộ nhớ giúp loại bỏ nhu cầu phải cấp phát liên tục cho bộ nhớ vật lý. Quá trình truy xuất các tiến trình dưới dạng các trang từ bộ nhớ phụ trợ vào bộ nhớ chính được gọi là phân trang. Mục đích cơ bản của phân trang là chia mỗi thủ tục thành các trang riêng biệt. Ngoài ra, bộ nhớ chính sẽ được chia thành các khung trang. Phương pháp này cho phép không gian địa chỉ vật lý của một tiến trình không cần phải liên tục.
Trong phân trang, bộ nhớ vật lý được chia thành các khối cố định gọi là khung trang, có kích thước giống như các trang được sử dụng bởi tiến trình. Không gian địa chỉ lôgic của tiến trình cũng được chia thành các khối cố định gọi là trang, có kích thước giống như các khung trang. Khi một tiến trình yêu cầu bộ nhớ, hệ điều hành sẽ cấp phát một hoặc nhiều khung trang cho tiến trình và ánh xạ các trang lôgic của tiến trình vào các khung trang vật lý.
Việc ánh xạ giữa các trang lôgic và các khung trang vật lý được duy trì bởi bảng trang, được sử dụng bởi đơn vị quản lý bộ nhớ để chuyển đổi địa chỉ lôgic thành địa chỉ vật lý. Bảng trang ánh xạ mỗi số trang lôgic với một số khung trang vật lý.
Bất lợi của Dynamic Partitioning
Nhược điểm chính của Dynamic Partitioning là Phân mảnh bên ngoài. Mặc dù, điều này có thể được loại bỏ bằng Compaction nhưng như chúng ta đã thảo luận trước đó, compaction làm cho hệ thống hoạt động kém hiệu quả.
Chúng ta cần tìm ra một cơ chế có thể tải các tiến trình trong các phân vùng theo cách tối ưu hơn. Hãy để chúng tôi thảo luận về một cơ chế động và linh hoạt được gọi là Paging.
Cách Hoạt Động của Paging và Khi Nào Nó Cần Thiết
Xét một tiến trình P1 cần 2 MB bộ nhớ để chạy. Bộ nhớ chính được chia thành ba phân vùng, trong đó có hai phân vùng trống, mỗi phân vùng 1 MB. Tuy tổng cộng có 2 MB trống, nhưng do hai phân vùng này không liền kề, P1 không thể tải trực tiếp vào bộ nhớ chính. Đây là lúc cần đến phân trang.
Paging giúp giải quyết vấn đề này bằng cách chia tiến trình thành các trang nhỏ hơn, mỗi trang có kích thước cố định và tương ứng với kích thước của một khung trong bộ nhớ chính.
- Quy Trình: Tiến trình được chia thành nhiều trang.
- Bộ Nhớ Chính: Chia thành các khung với kích thước bằng kích thước trang.
Một trang của tiến trình có thể được lưu trữ trong bất kỳ khung nào trong bộ nhớ chính, không nhất thiết phải liền kề. Điều này giúp tận dụng hiệu quả không gian bộ nhớ trống.
Paging và Quản Lý Bộ Nhớ
- Trang Yêu Cầu: Các trang chỉ được nạp vào bộ nhớ chính khi cần thiết, còn không thì chúng nằm trong bộ nhớ phụ.
- Kích Thước Khung và Trang: Kích thước trang và khung phải giống nhau và được xác định bởi hệ điều hành.
- Quản Lý Bộ Nhớ: Hệ điều hành sử dụng bảng trang để theo dõi và quản lý việc ánh xạ các trang tới các khung trong bộ nhớ.
Paging giúp giải quyết vấn đề không gian bộ nhớ không liền kề, tối ưu hóa việc sử dụng bộ nhớ và giảm thiểu phân mảnh. Đồng thời, nó cho phép các tiến trình lớn hơn không gian bộ nhớ vật lý có thể chạy mượt mà thông qua việc nạp các trang cần thiết vào bộ nhớ chính.
Ví dụ
Chúng ta hãy coi kích thước bộ nhớ chính là 16 Kb và kích thước khung hình là 1 KB do đó bộ nhớ chính sẽ được chia thành tập hợp 16 khung hình, mỗi khung hình 1 KB.
Có 4 quy trình trong hệ thống là P1, P2, P3 và P4, mỗi quy trình 4 KB. Mỗi tiến trình được chia thành các trang, mỗi trang 1 KB để một trang có thể được lưu trữ trong một khung.
Ban đầu, tất cả các khung đều trống do đó các trang của quy trình sẽ được lưu trữ theo cách liền kề.
Khung, trang và ánh xạ giữa hai thứ được hiển thị trong hình dưới đây.
Chúng ta hãy xem xét rằng, P2 và P4 được chuyển sang trạng thái chờ sau một thời gian. Bây giờ, 8 khung hình trở nên trống và do đó các trang khác có thể được tải vào nơi trống đó. Quá trình P5 có kích thước 8 KB (8 trang) đang đợi bên trong hàng đợi sẵn sàng.
Thực tế là, chúng ta có 8 khung không liền kề có sẵn trong bộ nhớ và việc Paging cung cấp sự linh hoạt trong việc lưu trữ quá trình ở những nơi khác nhau. Do đó, chúng ta có thể tải các trang của quá trình P5 thay cho P2 và P4.
Vai Trò của Đơn Vị Quản Lý Bộ Nhớ (MMU)
Đơn vị Quản lý Bộ nhớ (MMU) trong hệ điều hành có trách nhiệm chính là chuyển đổi địa chỉ lôgic do CPU tạo ra thành địa chỉ vật lý tương ứng trong bộ nhớ.
Quá Trình Chuyển Đổi Địa Chỉ
- Địa Chỉ Lôgic: Địa chỉ lôgic được tạo bởi CPU để xác định vị trí của một trang cụ thể. Địa chỉ này được phân chia thành hai phần chính: số trang và bù lại (offset).
- Số Trang: Phần này xác định trang nào trong không gian địa chỉ ảo đang được tham chiếu.
- Bù Lại: Phần này xác định vị trí cụ thể trong trang mà dữ liệu cần được truy cập.
- Địa Chỉ Vật Lý: Đây là địa chỉ thực tế trong bộ nhớ chính, nơi dữ liệu thực sự được lưu trữ.
Nhiệm Vụ Của MMU
- Chuyển Đổi Số Trang Thành Số Khung: MMU chuyển đổi số trang được tìm thấy trong địa chỉ lôgic thành số khung tương ứng trong bộ nhớ vật lý. Điều này được thực hiện thông qua bảng trang, nơi lưu trữ thông tin ánh xạ giữa số trang và số khung.
- Tính Toán Địa Chỉ Vật Lý Cuối Cùng: MMU cộng bù lại vào địa chỉ bắt đầu của khung để tính toán địa chỉ vật lý cuối cùng cần truy cập.
Quản Lý Bộ Nhớ Hiệu Quả
MMU đóng một vai trò quan trọng trong việc quản lý bộ nhớ hiệu quả. Nó giúp hệ điều hành sử dụng bộ nhớ ảo, giảm thiểu phân mảnh và tăng cường hiệu suất tổng thể của hệ thống bằng cách quản lý việc phân bổ bộ nhớ một cách linh hoạt và chính xác.