Paging là một phương thức ghi và đọc dữ liệu từ bộ nhớ thứ cấp (ổ đĩa cứng) để sử dụng trong bộ nhớ chính (RAM). Khi máy tính của bạn sử dụng vượt quá lượng RAM cho phép, hệ điều hành (OS) sẽ di chuyển các memory page qua ổ đĩa cứng của máy tính để giải phóng lượng RAM dành cho những process khác. Điều này giúp đảm bảo rằng hệ điều hành sẽ không bao giờ chạy vượt quá lượng RAM cho phép và bị crash. Tuy nhiên, quá nhiều sự phụ thuộc vào memory page có thể làm giảm performance của hệ thống, bởi Random Access Memory (RAM) hoạt động nhanh hơn nhiều so với tốc độ của ổ đĩa cứng. Nghĩa là hệ điều hành phải chờ để bắt kịp tốc độ của ổ đĩa cứng mỗi khi một memory page bị hoán đổi – dẫn đến việc phải xử lý nhiều công việc hơn tại thời điểm này.
Xem thêm: Phân biệt swapping và paging trong quản lý bộ nhớ
Memory page hoạt động như thế nào?
Hệ điều hành đọc dữ liệu từ các block được gọi là page, tất cả các page đều có kích thước là như nhau. Để làm được điều đó, đầu tiên hệ điều hành phải tham khảo page table – được sử dụng bởi virtual memory để lưu trữ ánh xạ giữa các địa chỉ ảo và địa chỉ vật lý. Phần physical memory được tổ chức thành “frame” hay “page frame”. Khi memory page được dùng, nó loại bỏ sự cần thiết của việc cấp phát physical memory liên tục.
Cách tiếp cận này cung cấp một lợi thế tốt hơn nhiều so với các phương thức quản lý memory trước đó, bởi vì nó tạo điều kiện sử dụng lưu trữ hiệu quả và nhanh hơn.
Khi một chương trình cố truy cập một memory page mà không được lưu trên RAM, vi xử lý sẽ coi hành động này là lỗi page (page fault). Khi điều này xảy ra thì hệ điều hành phải:
- Xác định vị trí của dữ liệu trên ổ đĩa cứng
- Lấy một page frame trống trên RAM để sử dụng như là một container cho dữ liệu.
- Tải dữ liệu được truy vấn sang page frame có sẵn trên RAM.
- Cập nhật page table để cập nhật page frame mới.
- Trả lại quyền kiểm soát cho chương trình, thử lại các chỉ thị gây ra lỗi page.
Khi tất cả page frame được sử dụng, hệ điều hành phải lựa chọn một page frame để tái sử dụng cho page mà chương trình đang cần. Nếu page frame được phân bổ động bởi một chương trình để giữ dữ liệu, hoặc nếu một chương trình chỉnh sửa nó vì nó được đọc từ RAM, nó phải được ghi vào đĩa cứng trước khi được giải phóng, lỗi page khác xảy ra và page phải được đọc lại từ RAM.
Ưu điểm
Bằng cách đẩy memory vào các khối cố định, nó loại bỏ vấn đề phân mảnh bên ngoài (External Fragmentation). Nó cũng hỗ trợ đa chương trình (Multiprogramming). Các chi phí đi kèm với việc nén dữ liệu trong quá trình di dời đều được loại bỏ. Dễ dàng để trao đổi vì mọi thứ có cùng kích cỡ, thường có cùng kích cỡ với các disk blocks đến và từ những page được chuyển đổi.
Nhược điểm
Paging làm tăng chi phí phần cứng máy tính, vì các địa chỉ của memory page được ánh xạ tới phần cứng. Memory bị ép lưu trữ các variable như page tables. Một số không gian memory vẫn không được sử dụng khi các blocks có sẵn không đủ cho không gian địa chỉ cho để chạy các jobs.
Làm sao để tạo paging hiệu quả hơn?
Mỗi khi hệ điều hành dịch từ logical sang phisical, đòi hỏi phải kiểm tra page table – được lưu trong RAM. Nghĩa là mỗi truy vấn process đòi hỏi hai lần truy cập bộ nhớ vật lý. Vấn đề này làm giảm tổng thể performance của các trang thiết bị.
Để giải quyết vấn đê này, mình sử dụng Translation Lookaside Buffer (TLB). TLB là memory cache lưu trữ các bản dịch virtual memory sang physical address gần để để truy xuất nhanh hơn.