Quản lý bộ nhớ là một trong những chức năng cơ bản của hệ điều hành. Các hệ điều hành hiện đại cho phép mỗi tiến trình có được nhiều bộ nhớ ảo hơn tổng kích thước của bộ nhớ thực (vật lý) trên một hệ thống máy tính nhất định. Mục tiêu chính của quản lý bộ nhớ là bằng cách kết hợp bộ nhớ lớn nhưng chậm với bộ nhớ nhỏ nhưng tốc độ cao, để đạt được hiệu quả của bộ nhớ tốc độ cao lớn hơn.
Việc phân tách giữa phân vùng cố định và biến là không hiệu quả về mặt sử dụng bộ nhớ, vì phân vùng cố định dẫn đến nội bộ, trong khi động trong phân mảnh bên ngoài. Một giải pháp khả thi cho vấn đề phân mảnh là cho phép quá trình không được ghi vào khối bộ nhớ liên tục. Chương trình có thể được phân tán tùy ý trong bộ nhớ. Trong trường hợp này, bộ nhớ làm việc được chia thành các khối nhỏ hơn có kích thước cố định được gọi là khung. Không gian địa chỉ logic của chương trình cũng được chia thành các khối có cùng kích thước, được gọi là các trang. Khi một chương trình được nhập vào bộ nhớ, các trang được ghi vào các khung bộ nhớ trống. Để dễ dàng chuyển các chương trình từ đĩa sang bộ nhớ làm việc, đĩa cũng được chia thành các khung có cùng kích thước với các khung bộ nhớ. Do đó, một khung hình từ đĩa được ghi vào một khung của bộ nhớ làm việc. Hệ thống phân trang hoạt động theo cách sau: khi chương trình được chấp nhận để thực thi, kích thước của nó được tính toán, được thể hiện với số lượng trang cần thiết. Nếu đủ số lượng khung hình là miễn phí, quy trình được ghi lại trong trang bộ nhớ trên mỗi trang. Đồng thời, số lượng khung hình trong đó mỗi trang được viết được nhập vào bảng khung.
Chương trình người dùng và dữ liệu liên quan có thể được chia thành một số phân khúc. Các phân đoạn của tất cả các chương trình không phải có cùng kích thước, mặc dù có độ dài phân khúc tối đa. Như với phân trang, địa chỉ logic sử dụng phân đoạn bao gồm hai phần, trong trường hợp này là số lượng phân đoạn và sai lệch trong phân khúc đó. Do sử dụng các phân đoạn có kích thước khác nhau, phân khúc tương tự như phân vùng động. Trong trường hợp không có sơ đồ lớp phủ hoặc sử dụng bộ nhớ ảo, yêu cầu tất cả các phân đoạn chương trình được tải vào bộ nhớ để thực thi. Sự khác biệt so với phân vùng động là phân đoạn có thể mất nhiều hơn một phân vùng và phân vùng đó không phải liền kề. Phân đoạn giải quyết vấn đề phân mảnh bên trong, nhưng cũng như phân vùng động, vấn đề phân mảnh bên ngoài vẫn còn. Tuy nhiên, do quá trình này được chia thành một số phần nhỏ hơn, nên sự phân mảnh bên ngoài thường nhỏ hơn. Không giống như phân trang vô hình đối với lập trình viên, phân đoạn thường hiển thị và phù hợp để tổ chức các chương trình và dữ liệu. Với mục đích lập trình mô-đun, chương trình hoặc dữ liệu có thể được chia thành nhiều phân đoạn nhỏ hơn. Nhược điểm của kỹ thuật này là lập trình viên phải biết giới hạn của kích thước phân khúc tối đa. Sự tiện lợi tiếp theo của việc sử dụng các phân đoạn có kích thước khác nhau là không có kết nối tiềm năng giữa các địa chỉ logic và vật lý. Tương tự như phân trang, kỹ thuật phân đoạn đơn giản sử dụng bảng phân đoạn cho từng quy trình và danh sách các khối có sẵn trong bộ nhớ chính.
Phân trang cung cấp một không gian địa chỉ ảo và địa chỉ vật lý và không gian bộ nhớ thứ cấp trên các khối (trang) có độ dài bằng nhau. Điều này cho phép không gian địa chỉ ảo liên tục được phân bổ cho quá trình phân tán (không nhất thiết phải được phân phối liên tục) trong không gian địa chỉ thực và bộ nhớ thứ cấp. Ngay cả trang, như một thuật ngữ, đề cập đến bộ nhớ hơn là các đối tượng logic có thể nhìn thấy ở cấp độ chương trình. Phân đoạn cung cấp một không gian địa chỉ ảo trên các khối (phân đoạn) tương ứng trực tiếp với các đối tượng ở cấp chương trình. Bởi vì điều này, phân khúc không có độ dài cố định, do đó, ngay cả kích thước phân khúc cũng có thể được thay đổi trong khi thực hiện chương trình. Do đó, bảo vệ và phân chia có thể ở cấp đối tượng và có các quy trình có thể nhìn thấy nơi phân đoạn được thực hiện.
Các nhà phát triển ứng dụng không biết về phân trang. Anh ta viết các chương trình như thể bộ nhớ là tuyến tính, và hệ điều hành và bộ xử lý quan tâm đến việc phân vùng và chuyển đổi thành địa chỉ ảo. Lập trình viên trên các hệ thống phân khúc, tuy nhiên, liệt kê hai phần của địa chỉ, phân khúc và trang trong các chương trình của họ. Tất cả các trang có cùng kích thước trong khi các phân đoạn khác nhau. Phân đoạn có nhiều không gian địa chỉ tuyến tính và chỉ phân trang một. Phân đoạn cho phép phân vùng hợp lý và bảo vệ các thành phần ứng dụng và các trang thì không.
Phân trang, trong suốt cho lập trình viên, loại bỏ sự phân mảnh bên ngoài và do đó đảm bảo sử dụng hiệu quả bộ nhớ chính. Các phần di chuyển vào và ra khỏi bộ nhớ chính được cố định và có cùng kích thước, do đó có thể phát triển các thuật toán quản lý bộ nhớ tinh vi khai thác hành vi của chương trình. Phân khúc được hiển thị cho nhà phát triển và có khả năng quản lý sự tăng trưởng của cấu trúc dữ liệu, mô đun hóa và hỗ trợ trao đổi và bảo vệ.
Phân trang | Phân khúc |
kích thước trang cố định | các phân đoạn không cố định về kích thước |
vô hình cho lập trình viên | hiển thị cho lập trình viên |
một không gian địa chỉ tuyến tính | nhiều không gian địa chỉ tuyến tính |
không cho phép phân vùng logic và bảo vệ các thành phần ứng dụng | cho phép |