Khi nào Windows quyết định rút các trang khỏi Bộ công việc?


2

Tôi đang xem xét việc phân phối bộ nhớ vật lý bằng công cụ RAMMap của SysIternals. Phân phối (xem hình ảnh bên dưới) cho thấy

  1. Danh sách bộ nhớ miễn phí (không có) 1.7 GB
  2. Danh sách nhóm làm việc 1,2 GB
  3. 550 MB trong danh sách chờ
  4. 125 MB trong danh sách đã sửa đổi

    nhập mô tả hình ảnh ở đây

Tôi hiểu rằng khi một quá trình yêu cầu bộ nhớ, Windows sẽ tìm kiếm bộ nhớ trong các danh sách theo thứ tự Miễn phí (Không) -> Chờ -> Sửa đổi. Do đó, miễn là chúng ta có các khung trang Miễn phí, mọi thứ sẽ nằm trong danh sách Nhóm làm việc hoặc danh sách Miễn phí.

  1. Là giả định này phải không?
  2. Nếu vậy, tại sao chúng ta thấy 125 MB trang trong danh sách Sửa đổi?
  3. Nói chung, khi nào Windows quyết định rút các trang từ danh sách Tập hợp hoạt động sang danh sách Sửa đổi / Chờ ngay cả khi còn bộ nhớ trống?

Tôi đang sử dụng Windows 7, với 4.0 GB RAM được cài đặt, 3,5 GB có thể sử dụng được.

Câu trả lời:


0
  1. Không. Nếu một trang sẽ được đọc từ đĩa hoặc nếu đó là phân bổ từ chế độ kernel, danh sách miễn phí sẽ được kiểm tra trước, sau đó là danh sách zeroed. Nếu nó không được đọc từ đĩa, danh sách zeroed sẽ được kiểm tra trước, sau đó danh sách miễn phí (nếu được phân bổ từ danh sách miễn phí, trang sẽ bị xóa thẳng hàng trước khi quá trình bị lỗi xuất hiện). Trong cả hai trường hợp, danh sách chờ tiếp theo. Tôi không tin rằng danh sách đã sửa đổi đã từng được sử dụng để đáp ứng các lỗi trang (ngoại trừ các lỗi mềm được giải quyết TO các trang trong danh sách đã sửa đổi) ... vì các trang phải được ghi ra đĩa trước khi chúng có thể được gán cho các mục đích sử dụng khác ... vì vậy, cũng có thể chờ người viết trang sửa đổi thực hiện công việc thường xuyên của mình, trong đó các trang sẽ hiển thị trên danh sách chờ.

1a. "Miễn là chúng tôi có khung trang miễn phí, mọi thứ nên có trong danh sách nhóm làm việc hoặc danh sách miễn phí." Không. Danh sách chờ được coi là "khả dụng" nhưng cho đến khi ai đó cần RAM đó, các trang của nó được sử dụng cho hai loại bộ đệm khác nhau.

Câu hỏi thứ hai (định dạng danh sách tự động ngu ngốc tiếp tục bắt đầu từ "1" ở đây): Đó là khá nhiều. Bạn đã xóa pagefile của bạn?

Câu hỏi thứ ba: Đầu tiên, hãy nhớ rằng có một danh sách tập hợp làm việc cho mọi quy trình, không chỉ một. Và mỗi cái có "giới hạn" riêng. Khi các giới hạn được thi hành (chúng không có nhiều RAM trống), quá trình này phải từ bỏ một trang cho mỗi trang mới mà nó bị lỗi. Ngoài ra, còn có một quy trình khai hoang được thiết lập cố gắng thu nhỏ lâu quá trình nhàn rỗi.

Khi một quá trình mất một trang, nó sẽ nằm trong danh sách đã sửa đổi nếu nó được chạm bằng toán hạng kiểu "sửa đổi" trong khi nó đang ở trong bộ làm việc hoặc trong danh sách chờ nếu không. Nếu quá trình sau đó bị lỗi với trang trước khi nó được gán cho một số sử dụng hoặc quá trình khác, nó có thể được đưa trở lại vào bộ quy trình làm việc mà không cần vào đĩa cho nó. (Đây là một ví dụ phổ biến về lỗi trang "mềm".) Theo cách này, các danh sách này tạo thành một loại tiện ích mở rộng toàn hệ thống chung cho tất cả các bộ làm việc của quy trình. Nhưng mọi thứ trong danh sách Chờ vẫn được tính là một phần của bộ nhớ "Có sẵn", bởi vì nó có thể được sử dụng bởi bất kỳ quy trình nào khác ngay lập tức - lưu ý phải được ghi ra đĩa.

Bắt đầu với Vista, có một khái niệm mới gọi là ưu tiên bộ nhớ. Các trang trong danh sách chờ có mức độ ưu tiên thấp có thể được chỉ định lại để sử dụng bởi bộ đệm tệp chủ động mới, SuperFetch. Nhưng điều này không tốn bất kỳ RAM "có sẵn" nào vì chúng vẫn nằm trong danh sách chờ. (Bộ đệm phản ứng cũ vẫn còn đó; nó từng là một phần của bộ làm việc hệ thống; kể từ Windows 7, nó có bộ đệm riêng.)

Đây là nhưng phần nổi của tảng băng chìm. Chương Mm của Windows Internals dài 200 trang, đủ cho một cuốn sách nhỏ. Nhưng nếu bạn thực sự muốn hiểu thứ này, thì thực sự không có gì thay thế được.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.