apa perbedaan dan hubungan antara memori logis dan virtual?

1

Saya bertanya-tanya apa perbedaan dan hubungan antara memori logis dan virtual? Bagaimana perbedaan tujuan mereka?

Apakah hubungan dan perbedaannya sama untuk alamat logis dan virtual?

Tim
sumber
Beri tahu kami kerangka referensi Anda, pertama. Tidak ada nomenklatur tunggal untuk ini. Di dunia x86, misalnya, ada (dalam nomenklatur Intel) alamat logis , linier , dan fisik . Nomenklatur siapa yang Anda gunakan, dan untuk arsitektur prosesor apa? Tanpa konteks itu, pertanyaan Anda tidak ada artinya.
JdeBP
@ JdeBP: Saya sedang mempertimbangkan untuk memahami pada tingkat yang tidak tergantung pada OS dan arsitektur tertentu. Konteksnya akan seperti ketika seorang siswa mempelajari OS dan kursus arsitektur, menggunakan OS dan arsitektur tertentu sebagai contoh alih-alih dedikasi kepada mereka.
Tim
Maka pertanyaan Anda tidak ada artinya, karena hal-hal ini tidak terlepas dari arsitektur.
JdeBP

Jawaban:

4

Mari kita membahas perbedaan antara pengalamatan virtual dan logis terlebih dahulu. Saya percaya perbedaannya adalah bahwa "alamat logis" berarti bahwa alamat yang dilihat oleh program berbeda dari alamat fisik dari data yang disimpan dalam RAM.

Jika Anda memiliki memori virtual, mungkin tidak ada alamat fisik sama sekali, karena data yang disimpan dapat ditukar dengan disk. Namun, dimungkinkan untuk memiliki sistem tanpa memori virtual di mana alamat logis berbeda dari alamat fisik, tetapi setiap alamat logis dipetakan ke alamat fisik. Ini akan membuatnya lebih mudah untuk menjalankan beberapa program tanpa mereka saling menginjak, tetapi tidak membiarkan program menggunakan lebih banyak memori daripada memori fisik yang tersedia untuk sistem.

Jadi tidak ada "memori logis" yang terpisah di komputer, meskipun saya kira Anda bisa mengatakan bahwa komputer dengan alamat logis tetapi tidak ada sistem memori virtual yang memiliki sistem memori logis. Saya hanya akan mengatakan bahwa memori logis adalah memori yang dialamatkan melalui beberapa metode tipuan. Apakah ada sistem komputer tertentu yang Anda pikirkan?

-

Mempertimbangkan komentar Anda:

Alamat logis untuk memori fisik yang sama dapat sama atau berbeda. Biasanya dua proses tidak akan memiliki akses ke memori yang sama, karena satu dapat merusak yang lain. Namun, jika mereka telah mengatur untuk menggunakan beberapa bentuk memori bersama, mereka biasanya akan memetakan memori bersama itu ke alamat yang berbeda. Alamat virtual lebih atau kurang merupakan jenis alamat logis, jadi jika Anda memiliki sistem operasi yang mendukung VM, dan dua proses memetakan memori bersama, mereka biasanya akan melihat memori itu berada di alamat yang berbeda, sama seperti jika tidak ada virtual ingatan.

Adapun pemahaman Anda tentang tujuan logis vs virtual, memori virtual adalah untuk menggunakan HD untuk menambah memori yang Anda miliki untuk program. Pengalamatan logis dapat digunakan untuk lebih dari pemisahan proses, tetapi itu akan menjadi salah satu penggunaan utama.

dsolimano
sumber
Bukan arsitektur tertentu, meskipun X86 dan X86-64 yang bisa saya gunakan. Terima kasih! (1) Saya ingin tahu apakah alamat logis dari sudut pandang suatu proses? Dari proses yang berbeda, apakah alamat logis mereka untuk alamat fisik yang sama sama atau berbeda? Sebaliknya, alamat virtual untuk alamat fisik yang sama adalah sama, terlepas dari proses mana yang memandang ini? (2) Apakah memori logis / alamat untuk tujuan memisahkan memori yang digunakan oleh proses yang berbeda, yaitu perlindungan memori, sedangkan memori virtual untuk menggunakan hard disk seolah-olah mereka adalah memori utama?
Tim
Pengalamatan logis adalah dari perspektif proses. Jadi dua proses berbagi alamat fisik yang sama mungkin atau mungkin tidak memiliki alamat logis yang sama. Alamat virtual == alamat logis. Jadi mereka mungkin atau mungkin tidak sama. Catatan kami belum menyebutkan tabel halaman memori. (2) Untuk semua tujuan, Memori virtual == memori logis. Memori virtual pada hard drive yang Anda maksud disebut file halaman. Halaman informasi dalam memori fisik ditulis ke file halaman ketika mereka tidak sedang digunakan untuk membuat ruang untuk halaman informasi yang sedang digunakan.
surfasb
Jadi setiap proses x86 memiliki 4GB memori virutal / logis yang tersedia untuk itu, walaupun hanya ada, katakanlah, 2GB memori fisik tersedia untuk itu.
surfasb
3

Alamat memori "logis" digunakan oleh suatu proses untuk merujuk kode dan datanya. Terjemahan dari alamat logis ke alamat fisik tergantung pada model memori.

Ketika memori dipetakan secara langsung (yaitu mode nyata), alamat memori logis identik dengan alamat memori fisik.

Jika memori fisik lebih besar dari ruang alamat prosesor (seperti pada prosesor 16-bit), maka perangkat keras bank memori sering digunakan untuk memperluas jumlah memori fisik yang dapat digunakan. Prosesor Intel 8086/8088 menggunakan register segmen fleksibel bukan skema bank tetap. Terjemahan dari alamat logis (16-bit) ke alamat fisik (20-bit) akan menggunakan tabel peta bank. Untuk x86, alamat logis mungkin akan menyertakan spesifikasi register segmen.

Jika rentang alamat fisik lebih besar dari memori fisik tipikal (seperti prosesor 32-bit satu dekade lalu), maka perangkat keras memori virtual digunakan untuk menyediakan penggunaan rentang alamat lengkap. Alamat logis didukung oleh memori fisik sesuai permintaan. Untuk mengakomodasi ruang alamat virtual / logis penuh dan / atau untuk menyediakan setiap proses dengan ruang alamatnya sendiri, toko dukungan diperlukan untuk menyimpan salinan dari memori virtual yang ditukar. Memori yang ditukar dapat diatur oleh segmen atau halaman atau halaman tersegmentasi.

BTW selama bertahun-tahun saya meretas kernel Unix, saya jarang mendengar atau menggunakan ungkapan "alamat logis (memori)". Jika Anda tidak merujuk ke alamat memori fisik, maka itu adalah alamat virtual. Yaitu, "alamat logis" == "alamat virtual" (ketika memori virtual diaktifkan dalam MMU).

serbuk gergaji
sumber