Việc quản lý bộ nhớ trong Linux Kernel được thực hiện bằng cách sử dụng phân trang hay phân đoạn hoặc cả hai?
Việc quản lý bộ nhớ trong Linux Kernel được thực hiện bằng cách sử dụng phân trang hay phân đoạn hoặc cả hai?
Câu trả lời:
Linux sử dụng cả hai. Nó sử dụng phân đoạn để ánh xạ tất cả không gian địa chỉ có sẵn trong khi cung cấp các quyền truy cập khác nhau: về cơ bản là hạt nhân và chế độ xem không gian người dùng. Bạn có thể grep mã nguồn Linux cho KERNEL_DS (phân đoạn dữ liệu kernel) cho một số ví dụ.
Phân trang sau đó được sử dụng để triển khai bộ nhớ ảo (Grep cho "struct gdt_page" trong kernel, cho điểm bắt đầu)
Quản lý bộ nhớ trong Linux hoạt động độc quyền bằng cách phân trang.
Linux hỗ trợ cả các trang "nhỏ" (thường là 4kB) và "lớn" (2M). Cái trước "chỉ hoạt động" mà bạn không biết hoặc làm bất cứ điều gì đặc biệt, và cái sau cần được đối xử đặc biệt (phải được bảo lưu khi khởi động và được ánh xạ qua một thiết bị đặc biệt).
Bối cảnh duy nhất trong đó "phân đoạn" xuất hiện trong Linux là tòa nhà brk () được sử dụng để tăng phân đoạn dữ liệu của một quy trình (thông thường bạn sẽ không cần điều này, malloc thực hiện nó mà không cần bạn phải quan tâm). Nhưng dù bằng cách nào, bộ nhớ đến trong các trang và được quản lý trong các trang và nó không liên quan gì đến phân đoạn x86.