sự khác biệt và mối quan hệ giữa bộ nhớ logic và ảo?


1

Tôi đã tự hỏi sự khác biệt và mối quan hệ giữa bộ nhớ logic và ảo? Làm thế nào để mục đích của họ khác nhau?

Là các mối quan hệ và sự khác biệt giống nhau cho các địa chỉ logic và ảo?


Trước tiên, hãy cho chúng tôi khung tham chiếu của bạn. Không có một danh pháp duy nhất cho việc này. Trong thế giới x86, chẳng hạn, có (theo danh pháp của Intel) hợp lý , tuyến tính vật lý địa chỉ. Bạn đang sử dụng danh pháp nào và cho kiến ​​trúc bộ xử lý nào? Không có bối cảnh đó, câu hỏi của bạn là vô nghĩa.
JdeBP

@JdeBP: Tôi đang xem xét để hiểu ở cấp độ độc lập với hệ điều hành và kiến ​​trúc cụ thể. Bối cảnh sẽ giống như khi một sinh viên đang học các khóa học về kiến ​​trúc và hệ điều hành, sử dụng các hệ điều hành và kiến ​​trúc cụ thể làm ví dụ thay vì cống hiến cho chúng.
Tim

Sau đó, câu hỏi của bạn là vô nghĩa, bởi vì những điều này không độc lập với kiến ​​trúc.
JdeBP

Câu trả lời:


4

Trước tiên, hãy đi qua sự khác biệt giữa địa chỉ ảo và logic. Tôi tin rằng sự khác biệt là "địa chỉ logic" có nghĩa là địa chỉ mà chương trình nhìn thấy khác với địa chỉ vật lý của dữ liệu được lưu trữ trong RAM.

Nếu bạn có bộ nhớ ảo, có thể không có địa chỉ vật lý nào cả, vì dữ liệu được lưu trữ có thể được hoán đổi ra đĩa. Tuy nhiên, có thể có một hệ thống không có bộ nhớ ảo trong đó các địa chỉ logic khác với địa chỉ vật lý, nhưng mỗi địa chỉ logic được ánh xạ tới một địa chỉ vật lý. Điều này sẽ giúp việc chạy nhiều chương trình dễ dàng hơn mà không cần chúng dẫm lên nhau, nhưng sẽ không để các chương trình sử dụng nhiều bộ nhớ hơn bộ nhớ vật lý có sẵn cho hệ thống.

Vì vậy, không có "bộ nhớ logic" riêng biệt trong máy tính, mặc dù tôi cho rằng bạn có thể nói rằng một máy tính có địa chỉ logic nhưng không có hệ thống bộ nhớ ảo nào có hệ thống bộ nhớ logic. Tôi chỉ muốn nói rằng bộ nhớ logic là bộ nhớ được xử lý thông qua một số phương pháp gián tiếp. Có một số hệ thống máy tính cụ thể mà bạn có trong tâm trí?

-

Đưa ý kiến ​​của bạn vào tài khoản:

Địa chỉ logic cho cùng một bộ nhớ vật lý có thể giống hoặc khác nhau. Thông thường, hai tiến trình sẽ không có quyền truy cập vào cùng một bộ nhớ, từ đó một tiến trình có thể bị hỏng. Tuy nhiên, nếu họ đã sắp xếp sử dụng một số dạng bộ nhớ dùng chung, họ sẽ thường ánh xạ bộ nhớ dùng chung đó đến các địa chỉ khác nhau. Địa chỉ ảo ít nhiều là một loại địa chỉ logic, vì vậy nếu bạn có một hệ điều hành hỗ trợ VM và hai quy trình ánh xạ bộ nhớ dùng chung, chúng thường sẽ thấy bộ nhớ đó ở các địa chỉ khác nhau, giống như không có ảo ký ức.

Theo hiểu biết của bạn về mục đích của logic so với ảo, bộ nhớ ảo là để sử dụng HD để mở rộng bộ nhớ mà bạn có sẵn cho các chương trình. Địa chỉ logic có thể được sử dụng cho nhiều hơn phân tách quá trình, nhưng đó sẽ là một sử dụng chính.


Không phải kiến ​​trúc cụ thể, mặc dù X86 và X86-64 là tất cả những gì tôi có thể sử dụng. Xin cảm ơn! (1) Tôi tự hỏi nếu địa chỉ logic là từ quan điểm của một quá trình? Từ các quy trình khác nhau, địa chỉ logic của chúng cho cùng một địa chỉ vật lý giống nhau hay khác nhau? Ngược lại, các địa chỉ ảo cho cùng một địa chỉ vật lý là như nhau, bất kể quá trình nào xem điều này? (2) Bộ nhớ / địa chỉ logic có mục đích tách bộ nhớ được sử dụng bởi các quá trình khác nhau, tức là bảo vệ bộ nhớ, trong khi bộ nhớ ảo là để sử dụng đĩa cứng như thể chúng là bộ nhớ chính?
Tim

Địa chỉ logic là từ quan điểm quá trình. Vì vậy, hai quá trình chia sẻ cùng một địa chỉ vật lý có thể có hoặc không có cùng một địa chỉ logic. Địa chỉ ảo == địa chỉ logic. Vì vậy, họ có thể hoặc không thể giống nhau. Lưu ý chúng tôi chưa đề cập đến bảng trang bộ nhớ. (2) Đối với tất cả các mục đích, Bộ nhớ ảo == Bộ nhớ logic. Bộ nhớ ảo trên ổ cứng mà bạn đang đề cập được gọi là tệp trang. Các trang thông tin trong bộ nhớ vật lý được ghi vào tệp trang khi chúng không được sử dụng để tạo khoảng trống cho các trang thông tin đang được sử dụng.
surfasb

Vì vậy, mỗi quá trình x86 có 4GB bộ nhớ ảo / logic có sẵn cho nó, mặc dù chỉ có 2GB bộ nhớ vật lý có sẵn cho nó.
surfasb

3

Địa chỉ bộ nhớ "logic" được sử dụng bởi một quy trình để tham chiếu mã và dữ liệu của nó. Dịch từ một địa chỉ logic sang một địa chỉ vật lý phụ thuộc vào mô hình bộ nhớ.

Khi bộ nhớ được ánh xạ trực tiếp (tức là chế độ thực), địa chỉ bộ nhớ logic giống hệt với địa chỉ bộ nhớ vật lý.

Nếu bộ nhớ vật lý lớn hơn không gian địa chỉ của bộ xử lý (như trên bộ xử lý 16 bit), thì phần cứng ngân hàng bộ nhớ thường được sử dụng để mở rộng lượng bộ nhớ vật lý có thể sử dụng. Bộ xử lý Intel 8086/8088 được sử dụng linh hoạt phân khúc đăng ký thay vì một kế hoạch ngân hàng cố định. Dịch địa chỉ lôgic (16 bit) sang địa chỉ vật lý (20 bit) sẽ sử dụng các bảng bản đồ ngân hàng. Đối với x86, địa chỉ logic có thể bao gồm đặc điểm kỹ thuật của thanh ghi phân đoạn.

Nếu phạm vi địa chỉ vật lý lớn hơn bộ nhớ vật lý thông thường (như bộ xử lý 32 bit một thập kỷ trước), thì phần cứng bộ nhớ ảo được sử dụng để cung cấp việc sử dụng phạm vi địa chỉ đầy đủ. Các địa chỉ logic được hỗ trợ bởi bộ nhớ vật lý theo yêu cầu. Để chứa toàn bộ không gian địa chỉ ảo / logic và / hoặc để cung cấp cho mỗi quy trình một không gian địa chỉ riêng, một Kho lưu trữ là cần thiết để giữ các bản sao của bộ nhớ ảo. Bộ nhớ được hoán đổi có thể được sắp xếp theo các phân đoạn hoặc trang hoặc các trang được phân đoạn.

BTW trong những năm hack nhân Unix, tôi hiếm khi nghe hoặc sử dụng cụm từ "logic (bộ nhớ) địa chỉ". Nếu bạn không đề cập đến địa chỉ bộ nhớ vật lý, thì đó là địa chỉ ảo. Đó là "địa chỉ logic" == "địa chỉ ảo" (khi bộ nhớ ảo được kích hoạt trong MMU).

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.