Phân trang (Paging) là một kỹ thuật quản lý bộ nhớ giúp cấp phát bộ nhớ một cách không liên tục.

Với kỹ thuật này:

  • Không gian địa chỉ luận lý (Logical Address) của bộ nhớ ảo được chia thành các trang (page).
  • Không gian địa chỉ vật lý (Physical Address) của bộ nhớ thực được chia thành các khung trang (frame).
  • Mỗi trang của bộ nhớ ảo sẽ tương ứng với một khung trang của bộ nhớ vật lý.
  • Kích thước của một trang và một khung trang là bằng nhau.
  • Mỗi chương trình (hoặc tiến trình) có thể sử dụng một hoặc nhiều trang bộ nhớ.

Minh họa:

Địa chỉ luận lý của kỹ thuật phân trang gồm hai giá trị là page number (p) và page offset (d). Địa chỉ vật lý cũng gồm hai giá trị là frame number (f) và frame offset (d).

Đơn vị của hai loại địa chỉ này có thể là byte hoặc word tùy theo kiến trúc máy tính.

Page Table

Kỹ thuật phân trang sử dụng một bảng trang để chuyển đổi địa chỉ luận lý sang địa chỉ vật lý.

  • Mỗi tiến trình đều có một bảng trang và được quản lý thông qua một con trỏ ở trong PCB.
  • Thiết lập bảng trang cho tiến trình là một phần công việc của context switch.
  • Bảng trang có bản chất là một danh sách liên kết. Do đó, để truy xuất đến một trang bất kỳ, hệ thống cần phải duyệt qua các entry có trong bảng một cách tuần tự.

Addressing

Nếu kích thước của không gian địa chỉ luận lý là và kích thước của mỗi trang là bytes thì:

  • Địa chỉ luận lý sẽ có bits dành cho page number và bits dành cho page offset.
  • Bảng trang sẽ có tổng cộng entry.

Table Entry

Minh họa một entry ở trong bảng trang:

Có thể thấy, một entry sẽ bao gồm một frame number và các thông tin phụ.

Trong đó, thông tin present/absent (hay valid/invalid) sẽ cho biết rằng khung trang có thể được sử dụng hay không. Nếu nó có giá trị là 0 (tương ứng với invalid) và có một tiến trình nào đó truy xuất thì sẽ xảy ra lỗi trang (Page Fault).

Address Translation

Để thực hiện chuyển đổi địa chỉ khi sử dụng kỹ thuật phân trang, ta cần phải dùng page number để tìm ra frame number ở trong bảng trang. Sau đó, kết hợp frame number và page offset để tạo thành địa chỉ vật lý.

Minh họa quá trình chuyển đổi địa chỉ:

Ví dụ dưới đây chuyển một địa chỉ luận lý có cấu trúc là 6 bits dành cho page number và 10 bits dành cho offset number sang địa chỉ vật lý:

Resources