Dường như với tôi chúng khá giống nhau. Vậy mối quan hệ giữa hệ sàn và hệ thống bạn thân là gì?Sự khác nhau giữa hệ thống sàn và hệ thống bạn thân là gì?
Trả lời
Sàn là tập hợp các đối tượng có cùng kích thước. Nó tránh phân mảnh bằng cách phân bổ một khối bộ nhớ khá lớn và chia nó thành các phần có kích thước bằng nhau. Số lượng các mảnh thường lớn hơn nhiều so với hai, nói 128 hoặc hơn.
Có hai cách bạn có thể sử dụng bảng. Đầu tiên, bạn có thể có một tấm chỉ cho một kích thước mà bạn phân bổ rất thường xuyên. Ví dụ, một hạt nhân có thể có một bản inode. Nhưng bạn cũng có thể có một số phiến ở các kích thước tiến bộ, như một tấm 128-byte, một tấm 192-byte, một tấm 256-byte, và vân vân. Sau đó, bạn có thể phân bổ một đối tượng có kích thước bất kỳ từ kích thước bản in tiếp theo. Lưu ý rằng trong cả hai trường hợp, không sử dụng bộ nhớ tái sử dụng phiến cho một đối tượng có kích thước khác trừ khi toàn bộ bản được giải phóng trở lại bộ cấp phát "khối lớn" toàn cục.
Hệ thống bạn thân là phương pháp không liên quan trong đó mỗi đối tượng có đối tượng "bạn thân" được đối chiếu khi nó được giải phóng. Các khối được chia làm đôi khi cần các khối nhỏ hơn. Lưu ý rằng trong hệ thống bạn bè, các khối được chia và kết hợp thành các khối lớn hơn làm phương tiện phân bổ chính và trả lại để sử dụng lại. Điều này rất khác với cách làm việc của tấm.
Hoặc để đặt nó đơn giản hơn:
hệ thống Buddy: khối với kích thước khác nhau được chia khi phân bổ và coalesced khi giải phóng để chia một cách hiệu quả một khối lớn thành các khối nhỏ hơn kích cỡ khác nhau khi cần thiết.
Sàn: Các khối rất lớn được phân bổ và chia thành các khối có kích thước bằng nhau. Không có sự phân chia hoặc kết hợp nào khác diễn ra và các khối được giải phóng chỉ được giữ trong một danh sách được gán cho các phân bổ tiếp theo.
Trình phân bổ lõi của hạt nhân Linux là người cấp phát hệ thống bạn bè linh hoạt. Bộ cấp phát này cung cấp các tấm cho các tấm phủ sàn khác nhau.
Trong bảng phân bổ bản đồ chung là danh sách các bản có kích thước cố định phù hợp để đặt các phần tử kích thước được xác định trước. Vì tất cả các đối tượng trong cùng một kích thước không có phân mảnh.
Trình phân bổ bạn bè chia bộ nhớ thành các khối có kích thước gấp đôi. Ví dụ nếu min chunk là 1k, tiếp theo sẽ là 2K, sau đó 4K vv Vì vậy, nếu chúng ta sẽ yêu cầu phân bổ 100b, sau đó đoạn với kích thước 1k sẽ được chọn. Điều gì dẫn đến phân mảnh nhưng cho phép phân bổ các đối tượng kích thước tùy ý (vì vậy nó rất phù hợp với phân bổ bộ nhớ người dùng, nơi kích thước đối tượng chính xác có thể có kích thước bất kỳ).
Xem thêm:
Ngoài ra tồi tệ hơn kiểm tra bài thuyết trình này: http://events.linuxfoundation.org/images/stories/pdf/klf2012_kim.pdf Slides từ trang 22 tiết lộ bản tóm tắt của differencies.
- 1. Sự khác nhau giữa hình ảnh hệ thống Intel x86 Atom và Atom_64 là gì?
- 2. Sự khác biệt giữa "hệ thống" và "exec" trong Linux?
- 3. Hệ thống kiểu thống nhất là gì?
- 4. Sự khác biệt giữa hệ thống và đường sau và đường ống trong Perl là gì?
- 5. sự khác biệt giữa popen() và hệ thống() trong C
- 6. Sự khác biệt giữa tài khoản SYS và hệ thống Oracle là gì?
- 7. Sự khác biệt giữa theo dõi lỗi và hệ thống theo dõi vấn đề là gì?
- 8. Sự khác biệt giữa push và offset trong hệ thống lưới điện là gì?
- 9. Hệ thống vs ShellExecute - Sự khác biệt?
- 10. Sự khác biệt giữa Cơ sở dữ liệu Quan hệ và Không Quan hệ là gì?
- 11. Sự khác nhau giữa việc chạy trong tài khoản hệ thống và tài khoản người dùng là gì?
- 12. Kết quả khác nhau trên hệ thống khác nhau
- 13. Sự khác biệt giữa đường dẫn lớp, hệ thống tệp là gì?
- 14. Sự khác nhau giữa RTOS và Embedded Linux là gì?
- 15. Sự khác biệt và điểm tương đồng của hệ thống kiểu Scala và Haskell là gì?
- 16. uvm_event và sự khác biệt về hệ thống verilog
- 17. Sự khác biệt giữa tài khoản 'Hệ thống Cục bộ' và tài khoản 'Dịch vụ Mạng' là gì?
- 18. Sự khác biệt giữa hệ thống RPC và Bus dịch vụ doanh nghiệp
- 19. Sự khác nhau giữa Surfaceview và TextureView là gì?
- 20. Sự khác nhau giữa rpm và yum là gì?
- 21. Adobe AIR và các hệ thống tệp hệ điều hành khác nhau
- 22. Một số cách khác nhau để triển khai hệ thống plugin là gì?
- 23. Sự khác biệt giữa "cuộc gọi hệ thống C" và "thói quen thư viện C" là gì?
- 24. hệ thống khác nhau chữ Medium trên iOS 7
- 25. Cuộc gọi hệ thống: sự khác biệt giữa sys_exit(), SYS_exit và thoát()
- 26. Mutex truy cập và hệ thống gọi
- 27. Sự khác nhau giữa gấu trúc ACF và ACM thống kê mô-đun là gì?
- 28. Kích thước khối của hệ thống tệp iphone là gì?
- 29. Tên hệ thống của bạn với hằng số PHP_OS là
- 30. Nhà phát triển thân thiện với hệ thống ERP
Cũng sẽ khá đẹp nếu bạn có thể giải thích kết nối giữa cấp phát buddy và bảng phân bổ bản đồ trong câu trả lời của bạn (ví dụ như [this] (http://image.slidesharecdn.com/mm-121212232739-phpapp02/95/linux- memory-management-11-638.jpg? cb = 1355354903), nhưng có lẽ với nhiều chi tiết hơn). Cảm ơn. –