Ai đó có thể giải thích tại sao ashmem được tạo ra?ashmem có quyền hạn đặc biệt nào?
Tôi đang duyệt qua mm/ashmem.c
ngay bây giờ. Gần như tôi có thể nói, hạt nhân đang nghĩ về ashmem như bộ nhớ hỗ trợ tập tin có thể là mmap'd. Nhưng sau đó, tại sao lại gặp rắc rối khi triển khai ashmem? Nó có vẻ giống như các chức năng tương tự có thể đạt được bằng cách gắn một fs RAM và sau đó sử dụng sơ đồ/mmap để chia sẻ bộ nhớ.
Tôi chắc chắn rằng ashmem có thể làm nhiều thứ lạ mắt hơn - từ việc xem mã, có vẻ như có liên quan đến việc ghim/bỏ ghim trang?
Nhưng ashmem yêu cầu chia sẻ thông qua bộ mô tả tệp. Tạo một tập tin sao lưu và cho phép mỗi quá trình để mmap nó chia sẻ sẽ thực hiện cùng một mục tiêu, không? Tôi thấy cách này tốt hơn so với shmem nhưng làm thế nào là nó tốt hơn so với việc có một tập tin sao lưu? –
Nó tốt hơn bởi vì, tốt, tạo ra một tập tin khi những gì bạn thực sự muốn là một phần chia sẻ của bộ nhớ là loại một mạch, hacky tuyến đường. (Có phải sử dụng một bộ mô tả tập tin vẫn còn hacky, nhưng ít hacky hơn là có một tập tin ở đó, quá. Mô tả tập tin đã tổng quát hóa các loại tài nguyên khác nhau, ví dụ như ổ cắm và các thiết bị.) – Kaz
Việc ghim và bỏ ghim đó dường như cho phép bạn triển khai bộ nhớ đệm bộ nhớ trong ứng dụng của bạn sẽ biến mất khi bộ nhớ là cần thiết, tương tự như bộ đệm hạt nhân. API cho bạn biết nếu bộ nhớ đã bị xóa (bạn vẫn có bộ nhớ cache của mình hay chưa). – Kaz