it-swarm-vi.com

Windows - Cam kết kích thước so với kích thước ảo

tôi muốn biết sự khác biệt chính xác giữa Kích thước cam kết (hiển thị trong Trình quản lý tác vụ ) và Kích thước ảo (hiển thị trong SysIternals ' Process Explorer ).

Tham số Kích thước ảo trong Process Explorer trông giống như một chỉ báo chính xác hơn về Tổng số sử dụng bộ nhớ ảo theo một quy trình. Tuy nhiên, Kích thước cam kết luôn nhỏ hơn Kích thước ảo và tôi đoán nó không bao gồm tất cả bộ nhớ ảo được sử dụng trong quá trình này. Tôi muốn ai đó giải thích chính xác những gì được bao gồm trong các tham số này.

33
Faris Zacina

Bộ nhớ có thể được bảo lưu, cam kết, truy cập đầu tiên và là một phần của bộ làm việc. Khi bộ nhớ được dành riêng , một phần không gian địa chỉ được đặt sang một bên, không có gì khác xảy ra.

Khi bộ nhớ được được cam kết , hệ điều hành đảm bảo rằng các trang tương ứng có thể về nguyên tắc tồn tại hoặc trong vật lý RAM hoặc trên tệp trang. Nói cách khác, nó được tính vào giới hạn cứng của tổng số trang có sẵn trên hệ thống và nó chính thức tạo ra các trang. Đó là, nó tạo ra các trang và giả vờ rằng chúng tồn tại (khi thực tế chúng chưa tồn tại).

Khi bộ nhớ được lần đầu tiên truy cập , các trang chính thức tồn tại được tạo để chúng thật sự tồn tại. Một trang số 0 được cung cấp cho quy trình hoặc dữ liệu được đọc vào một trang từ ánh xạ. Trang được chuyển vào tập làm việc của quy trình (nhưng sẽ không nhất thiết tồn tại ở đó mãi mãi).

Mỗi quy trình đang chạy đều có một số trang thực tế và hợp lý trong RAM, đó là những trang này tồn tại và chúng cũng tồn tại "chính thức". Đây là bộ quy trình làm việc.
[.__.] Hơn nữa, mọi quy trình đang chạy đều có các trang trên thực tế trong RAM, nhưng không chính thức tồn tại trong RAM any hơn. Chúng có thể nằm trên cái được gọi là "danh sách chờ" hoặc một phần của bộ đệm bộ đệm, hoặc một cái gì đó khác. Khi chúng được truy cập, HĐH có thể chỉ cần di chuyển chúng vào bộ làm việc một lần nữa.
[.__.] Cuối cùng, mọi quy trình đều có các trang không nằm trong RAM (trên trao đổi hoặc chúng chưa tồn tại).

Kích thước ảo bao gồm kích thước của tất cả các trang mà quy trình có dành riêng .

Kích thước cam kết chỉ bao gồm các trang đã được cam kết .

Đó là, theo thuật ngữ của cư sĩ, "kích thước ảo" là vấn đề của riêng bạn và chỉ bị giới hạn bởi kích thước không gian địa chỉ của bạn, trong khi "kích thước cam kết" là vấn đề của mọi người vì nó tiêu tốn tài nguyên giới hạn toàn cầu (RAM cộng với trao đổi). Do đó ảnh hưởng đến các quá trình khác .

52
Damon

Kích thước cam kết là lượng không gian dành cho tệp hoán trang cho quy trình. Được sử dụng khi các trang của nó cần được hoán đổi để tạo khoảng trống trong RAM cho các quy trình khác.

Và đúng vậy, kích thước bộ nhớ ảo sẽ lớn hơn vì nó bao gồm các trang không được hỗ trợ bởi tệp hoán trang. Ít nhất là các phần mã và tài nguyên trong EXE và các DLL không di dời. Khi cần thiết, những trang đó có thể được loại bỏ và tải lại từ tệp. Tất cả các DLL hệ điều hành phù hợp với thể loại này. Ngoài ra, bất kỳ tập tin ánh xạ bộ nhớ được sử dụng bởi quá trình. Tiện ích VMMap của SysIternals có thể cung cấp cái nhìn sâu sắc.

10
Hans Passant

Kích thước ảo là kích thước của không gian địa chỉ ảo của quy trình.

Khi phân bổ bộ nhớ, bạn có thể yêu cầu một dải địa chỉ mà không thực sự cam kết bộ nhớ phía sau nó. Các địa chỉ đó không trỏ đến bộ nhớ vật lý cho đến khi một cuộc gọi phân bổ thứ hai được sử dụng để cam kết chúng.

Đọc thêm về Virtual ALLoc . Linux có chức năng mmap làm điều tương tự.

2
egur