2010-11-03 26 views

Trả lời

12

File mapping

file mapping là sự kết hợp của nội dung của một tập tin với một phần của không gian địa chỉ ảo của một quá trình. Hệ thống tạo đối tượng ánh xạ tệp (còn được gọi là đối tượng phần ) để duy trì liên kết này. Chế độ xem tệp là phần không gian địa chỉ ảo mà quy trình sử dụng để truy cập nội dung của tệp. Ánh xạ tệp cho phép quá trình sử dụng cả đầu vào và đầu ra ngẫu nhiên (I/O) và I/O tuần tự. Nó cũng cho phép quá trình làm việc hiệu quả với một tệp dữ liệu lớn, chẳng hạn như cơ sở dữ liệu, mà không cần phải ánh xạ toàn bộ tệp vào bộ nhớ. Nhiều quy trình cũng có thể sử dụng các tệp ánh xạ bộ nhớ để chia sẻ dữ liệu.

Quy trình đọc từ và ghi vào chế độ xem tệp bằng con trỏ, giống như với bộ nhớ được cấp phát động. Việc sử dụng ánh xạ tệp cải thiện hiệu quả vì tệp nằm trên đĩa, nhưng chế độ xem tệp nằm trong bộ nhớ. Các tiến trình cũng có thể thao tác với chế độ xem tệp bằng hàm VirtualProtect.

+0

ít nhất là cung cấp liên kết lưu trữ web – beppe9000

9

Phụ thuộc vào chính xác những gì bạn muốn sử dụng. Nếu bạn muốn ánh xạ các tệp hiện có vào bộ nhớ, được hỗ trợ với memory-mapped files. Chúng cũng có thể được sử dụng để chia sẻ bộ nhớ giữa các quá trình (sử dụng đối tượng ánh xạ được đặt tên không có tệp cơ bản). Nếu bạn muốn ánh xạ bộ nhớ vật lý, thường không được hỗ trợ từ chế độ người dùng, mặc dù có một số thủ thuật.

+1

Tôi chỉ muốn ánh xạ tệp vào bộ nhớ để tôi có thể nhận được hiệu suất I/O cao hơn – Fernandez

+1

Điều đó sẽ hoạt động sau đó. Dưới đây là một số mã mẫu để thực hiện ánh xạ tệp trên Win32: http://mollyrocket.com/forums/viewtopic.php?p=2529 –

+0

@IgorSkochinsky: [CreateFileMapping] (http://msdn.microsoft.com/en-us/ thư viện/aa366537 (v = vs.85) .aspx) "Nếu hFile là INVALID_HANDLE_VALUE ... CreateFileMapping tạo một đối tượng ánh xạ tệp có kích thước được chỉ định được hỗ trợ bởi tệp hoán trang hệ thống thay vì bởi tệp trong hệ thống tệp." Đó có phải là những gì bạn có nghĩa là "lập bản đồ bộ nhớ vật lý"? –

Các vấn đề liên quan