2011-02-11 52 views
58

Mọi người có thể vui lòng cho tôi biết sự khác biệt giữa bộ nhớ ảokhông gian hoán đổi không?Sự khác biệt giữa "bộ nhớ ảo" và "không gian hoán đổi" là gì?

Và tại sao chúng ta nói rằng đối với truy cập bộ nhớ ảo tối đa 32 bit chỉ là 4 GB?

+1

http://stackoverflow.com/questions/1688962/whats-the-difference-between-operating-system-swap-and-page/1689119#1689119 – starblue

+0

@startblue cách liên kết đưa ra bởi bạn là câu trả lời cho câu hỏi của tôi .. –

+0

@ algo-geeks - Quả thực nó không phải là câu trả lời, nhưng tôi nghĩ nó liên kết với một câu trả lời có thể khá hữu ích cho chủ đề này. Và được viết trong bình luận, chính xác nơi nó nên được, imho. :) –

Trả lời

91

Có một giải thích tuyệt vời về bộ nhớ ảo trên superuser.

Nói một cách đơn giản, bộ nhớ ảo là sự kết hợp giữa RAM và không gian đĩa mà các tiến trình đang chạy có thể sử dụng.

Khoảng trống hoán đổi là phần bộ nhớ ảo nằm trên đĩa cứng, được sử dụng khi RAM đầy.

Đối với lý do tại sao 32bit CPU được giới hạn 4GB bộ nhớ ảo, nó giải quyết tốt here:

Theo định nghĩa, một bộ xử lý 32bit sử dụng 32 bit để chỉ vị trí của mỗi byte của bộ nhớ . 2^32 = 4.2 tỷ, có nghĩa là địa chỉ bộ nhớ dài 32 bit chỉ có thể tham chiếu đến 4,2 tỷ vị trí duy nhất (tức là 4 GB).

+1

Vậy là * thực tế * RAM = ảo - trao đổi? – user48956

+0

Câu trả lời này hoàn toàn sai. Một người có thể nhớ bản đồ một tệp 1GB 100 lần và sử dụng 100 GB bộ nhớ ảo trên một máy chỉ với RAM 1 GB. Không có cách nào để thêm RAM và không gian đĩa để có được 100GB bộ nhớ ảo sẽ được sử dụng. –

52

Có một số nhầm lẫn về Virtual Memory hạn, và nó thực sự đề cập đến hai khái niệm rất khác nhau sau

  1. Sử dụng trang đĩa để kéo dài thời lượng khái niệm của bộ nhớ vật lý một máy tính có - Sự đúng thuật ngữ cho điều này thực sự là Phân trang
  2. Sự trừu tượng được sử dụng bởi nhiều hệ điều hành/CPU khác nhau để tạo ảo tưởng cho mỗi quá trình chạy trong một không gian địa chỉ liền kề riêng biệt.

Không gian hoán đổi, OTOH, là tên của phần đĩa được sử dụng để lưu trữ các trang RAM bổ sung khi không sử dụng.

Một thực hiện quan trọng để thực hiện là trước đây là minh bạch có thể do sự hỗ trợ phần cứng và hệ điều hành của sau này.

Để hiểu rõ hơn về tất cả điều này, bạn nên xem xét cách "Bộ nhớ ảo" (như trong định nghĩa 2) được CPU và OS hỗ trợ.

Giả sử bạn có con trỏ 32 bit (điểm 64 bit tương tự, nhưng sử dụng các cơ chế hơi khác nhau). Khi "Bộ nhớ ảo" đã được bật, bộ xử lý xem xét con trỏ này được tạo thành ba phần.

  • 10 bit cao nhất là một trang Directory Entry
  • 10 bit Sau đây là một Entry Trang Bảng
  • 12 bit cuối cùng tạo nên Trang offset

Bây giờ, khi CPU cố gắng truy cập nội dung của một con trỏ, đầu tiên nó sẽ tra cứu tab Page Directory e - một bảng gồm 1024 mục (trong kiến ​​trúc X86, vị trí được chỉ định bởi thanh ghi CR3). Mục nhập thư mục trang 10 bit là một chỉ mục trong bảng này, trỏ đến vị trí thực tế của Bảng Trang. Điều này, đến lượt nó, là một bảng của 1024 mục mỗi trong số đó là một con trỏ trong bộ nhớ vật lý, và một số bit điều khiển quan trọng. (Chúng tôi sẽ quay lại những điều này sau). Khi một trang đã được tìm thấy, 12 bit cuối cùng được sử dụng để tìm địa chỉ trong trang đó.

nhiều chi tiết chi tiết hơn (TLB, Trang lớn, PAE, Bộ chọn, Bảo vệ trang) nhưng giải thích ngắn ở trên nắm bắt được ý chính của mọi thứ.

Sử dụng cơ chế dịch này, một hệ điều hành có thể sử dụng một bộ khác nhau của các trang vật lý cho mỗi quá trình, do đó đem lại từng xử lý ảo tưởng của việc có tất cả các bộ nhớ cho bản thân (như mỗi quá trình được trang thư mục riêng của mình)

Trên đầu trang của Bộ nhớ ảo Hệ điều hành này cũng có thể thêm khái niệm về Phân trang. Một trong các bit điều khiển được thảo luận trước đó cho phép xác định xem một mục có là "Hiện tại" hay không. Nếu không có, nỗ lực truy cập mục nhập đó sẽ dẫn đến một ngoại lệ Page Fault. Hệ điều hành có thể nắm bắt ngoại lệ này và hành động tương ứng. Do đó, các hệ điều hành hỗ trợ trao đổi/phân trang có thể quyết định tải một trang từ Hoán đổi không gian, sửa các bảng dịch và sau đó phát hành lại quyền truy cập bộ nhớ. Đây là nơi mà hai thuật ngữ kết hợp, một hệ điều hành hỗ trợ bộ nhớ ảo và phân trang có thể cung cấp cho các quá trình ảo tưởng của việc có nhiều bộ nhớ hơn thực tế hiện tại bằng cách hoán trang (hoán đổi) các trang trong và ngoài vùng trao đổi.

Đối với câu hỏi cuối cùng của bạn (Tại sao CPU 32 bit bị giới hạn ở bộ nhớ ảo 4GB). Điều này đề cập đến "Bộ nhớ ảo" của định nghĩa 2 và là kết quả ngay lập tức của kích thước con trỏ. Nếu CPU chỉ có thể sử dụng con trỏ 32 bit, bạn chỉ có 32 bit để thể hiện các địa chỉ khác nhau, điều này cho bạn 2^32 = 4GB bộ nhớ địa chỉ.

Hy vọng điều này sẽ giúp mọi việc trở nên rõ ràng hơn một chút.

+0

+1 Câu trả lời hay! –

12

IMHO gây nhầm lẫn khủng khiếp khi sử dụng khái niệm không gian hoán đổi tương đương với bộ nhớ ảo. VM là một khái niệm tổng quát hơn nhiều so với không gian hoán đổi. Trong số những thứ khác, VM cho phép các quy trình tham chiếu các địa chỉ ảo trong quá trình thực hiện, được dịch thành các địa chỉ vật lý với sự hỗ trợ của các bảng phần cứng và trang. Do đó các quy trình không quan tâm đến bao nhiêu bộ nhớ vật lý mà hệ thống có, hoặc nơi lệnh hoặc dữ liệu thực sự nằm trong hệ thống phân cấp bộ nhớ vật lý. VM cho phép ánh xạ này. Các mục tham chiếu (hướng dẫn hoặc dữ liệu) có thể được cư trú trong L1, hoặc L2, hoặc RAM, hoặc cuối cùng trên đĩa, trong trường hợp nó được nạp vào bộ nhớ chính.

Hoán đổi không gian, nó chỉ là một nơi trên bộ nhớ phụ nơi các trang được lưu trữ khi chúng không hoạt động.Nếu không có đủ RAM, hệ điều hành có thể quyết định trao đổi các trang của một quy trình, để nhường chỗ cho các trang quy trình khác. Bộ xử lý không bao giờ thực hiện lệnh hoặc đọc/ghi dữ liệu trực tiếp từ không gian hoán đổi.

Lưu ý rằng có thể có không gian hoán đổi trong hệ thống không có VM. Đó là, các quy trình truy cập trực tiếp vào địa chỉ vật lý, vẫn có thể có các phần của nó trên đĩa .

3

Mặc dù chủ đề khá cũ và đã được trả lời. Vẫn muốn chia sẻ liên kết này vì đây là giải thích đơn giản nhất mà tôi đã tìm thấy từ trước tới nay. Liên kết bên dưới có sơ đồ để hiển thị trực quan hơn.

Sự khác biệt chính: Bộ nhớ ảo là sự trừu tượng của bộ nhớ chính. Nó mở rộng bộ nhớ có sẵn của máy tính bằng cách lưu trữ các phần không hoạt động của RAM nội dung trên đĩa. Bất cứ khi nào nội dung được yêu cầu, nó sẽ lấy nó trở lại RAM. Bộ nhớ hoán đổi hoặc không gian hoán đổi là một phần của ổ đĩa cứng được sử dụng cho bộ nhớ ảo. Vì vậy, cả hai cũng được sử dụng thay thế cho nhau.

Bộ nhớ ảo khác với bộ nhớ vật lý khác. Các lập trình viên có thể truy cập trực tiếp vào bộ nhớ ảo thay vì bộ nhớ vật lý. Bộ nhớ ảo là một sự trừu tượng của bộ nhớ chính. Nó được sử dụng để ẩn thông tin của bộ nhớ vật lý thực của hệ thống. Nó mở rộng bộ nhớ có sẵn của máy tính bằng cách lưu trữ các phần không hoạt động của nội dung của bộ nhớ RAM trên đĩa. Khi nội dung được yêu cầu, nó sẽ lấy nó trở lại RAM. Bộ nhớ ảo tạo ra ảo tưởng về một không gian địa chỉ toàn bộ với các địa chỉ bắt đầu bằng không. Nó chủ yếu được ưu tiên cho tính năng tối ưu hóa của nó mà nó làm giảm các yêu cầu về không gian. Nó bao gồm RAM và không gian đĩa có sẵn.

Bộ nhớ hoán đổi thường được gọi là không gian hoán đổi. Không gian hoán đổi là phần của bộ nhớ ảo được dành riêng như một vị trí lưu trữ tạm thời. Không gian hoán đổi được sử dụng khi RAM sẵn có không thể đáp ứng yêu cầu của bộ nhớ của hệ thống. Ví dụ, trong hệ thống bộ nhớ Linux, hạt nhân định vị từng trang trong bộ nhớ vật lý hoặc trong vùng trao đổi. Hạt nhân cũng duy trì một bảng trong đó thông tin liên quan đến các trang được hoán đổi và các trang trong bộ nhớ vật lý được lưu giữ. Các trang chưa được truy cập từ lâu đã được gửi đến vùng không gian hoán đổi. Quá trình này được gọi là trao đổi. Trong trường hợp cùng một trang được yêu cầu, nó được hoán đổi trong bộ nhớ vật lý bằng cách hoán đổi một trang khác. Vì vậy, người ta có thể kết luận rằng bộ nhớ trao đổi và bộ nhớ ảo được kết nối với nhau như bộ nhớ trao đổi được sử dụng cho kỹ thuật bộ nhớ ảo.

difference-between-virtual-memory-and-swap-memory

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ đánh giá/bài viết chất lượng thấp/13923244) – coatless

+0

Cảm ơn, đã cải thiện bài đăng. – ram619

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