mantıksal ve sanal bellek arasındaki farklar ve ilişkiler nelerdir?


1

Mantıksal ve sanal bellek arasındaki fark ve ilişkilerin ne olduğunu merak ediyordum? Amaçları nasıl farklı?

İlişkiler ve farklılıklar mantıksal ve sanal adresler için aynı mıdır?


İlk önce bize referans çerçevenizi söyleyin. Bunun için tek bir isimlendirme yoktur. Örneğin, x86 dünyasında (Intel'in isimlendirmesinde) mantıksal , doğrusal ve fiziksel adresler var. Kim terminolojiyi kullanıyorsunuz ve hangi işlemci mimarisi için kullanıyorsunuz? Bu bağlam olmadan, sorunuz anlamsız.
JdeBP

@JdeBP: Özel işletim sisteminden ve mimariden bağımsız bir seviyede anlamayı düşünüyorum. Bağlam, bir öğrencinin işletim sistemi ve mimarlık derslerini okurken, belirli işletim sistemlerini ve mimarileri kendilerine adamak yerine örnek olarak kullanması gibi olacaktır.
Tim

O zaman sorunuz anlamsız, çünkü bunlar mimariden bağımsız değil .
JdeBP

Yanıtlar:


4

Önce sanal ve mantıksal adresleme arasındaki farkı gözden geçirelim. Buradaki ayrımın “mantıksal adres” in, programın gördüğü adresin RAM’de depolanan verinin fiziksel adresinden farklı olduğu anlamına geldiğine inanıyorum.

Sanal belleğiniz varsa, saklanan veriler diske aktarılabileceği için hiçbir fiziksel adres olmayabilir. Bununla birlikte, mantıksal adreslerin fiziksel adreslerden farklı olduğu sanal belleğe sahip olmayan bir sisteme sahip olmak mümkündür, ancak her mantıksal adres fiziksel bir adresle eşleştirilir. Bu, birbirlerine basmadan çoklu programları çalıştırmayı kolaylaştıracak, ancak programların sistemde mevcut fiziksel bellekten daha fazla bellek kullanmasına izin vermeyecektir.

Dolayısıyla, bilgisayarda ayrı bir "mantıksal bellek" yoktur, bununla birlikte, mantıksal adresleri olan ancak sanal bellek sistemi olmayan bir bilgisayarın mantıksal bir bellek sistemine sahip olduğunu söyleyebilirim. Mantıksal hafızanın bazı dolaylı yöntemlerle ele alınan hafıza olduğunu söyleyebilirim. Aklınızda bulundurduğunuz belirli bir bilgisayar sistemi var mı?

-

Yorumlarınızı dikkate alarak:

Aynı fiziksel belleğin mantıksal adresleri aynı veya farklı olabilir. Genellikle iki işlem aynı belleğe erişemez, çünkü o zaman biri diğerini bozabilir. Ancak, bir tür paylaşılan hafıza kullanacaklarsa, genellikle paylaşılan hafızayı farklı adreslere eşlerler. Sanal adresler aşağı yukarı bir mantıksal adres türüdür, bu nedenle VM'yi destekleyen bir işletim sisteminiz varsa ve iki harita paylaşılan hafızayı işlerse, bu hafızanın sanal olmadığı gibi aynı adreslerde olduğu gibi genellikle farklı adreslerde olduğunu görürler. hafıza.

Mantıksal vs sanal amacı anladığınıza gelince, sanal bellek, programlarda kullanabileceğiniz belleği genişletmek için HD'yi kullanmak içindir. Mantıksal adresleme, işlem ayrılmasından daha fazlası için kullanılabilir, ancak bu büyük bir kullanım olacaktır.


Belirli bir mimari değil, X86 ve X86-64 kullanabildiğim kadarıyla. (1) Mantıksal adreslerin bir süreç açısından olup olmadığını merak ediyorum? Farklı süreçlerden aynı fiziksel adres için mantıksal adresleri aynı mı yoksa farklı mı? Aksine, aynı fiziksel adres için sanal adresler aynıdır, hangisi bunu görürse görsün? (2) Mantıksal bellek / adresler, farklı işlemler tarafından kullanılan belleği ayırmak amacıyla, yani bellek koruması, sanal bellek ise ana bellekmiş gibi sabit disk kullanmak içindir mı?
Tim

Mantıksal adresleme süreçler açısındandır. Dolayısıyla, aynı fiziksel adresi paylaşan iki işlem aynı mantıksal adrese sahip olabilir veya olmayabilir. Sanal adres == mantıksal adres. Yani onlar aynı olabilir veya olmayabilir. Not: Bellek sayfası tablosundan bahsetmedik. (2) Tüm amaçlar için, Sanal hafıza == mantıksal hafıza. Bahsettiğiniz sabit sürücüdeki sanal belleğe sayfa dosyası denir. Onlar bilgilerin sayfalarında yer açmak için kullanılmayan zaman fiziksel bellekte bilginin sayfalar sayfa dosyasına yazılır edilir kullanılıyor.
surfasb

Bu nedenle, her x86 işleminde, kullanılabilir durumda yalnızca 2 GB fiziksel bellek olmasına rağmen, 4 GB virütal / mantıksal bellek bulunur.
surfasb

3

"Mantıksal" bellek adresleri bir işlem tarafından koduna ve verilerine referans vermek için kullanılır. Mantıksal bir adresden fiziksel bir adrese çeviri, bellek modeline bağlıdır.

Hafıza doğrudan eşlendiğinde (yani gerçek mod), mantıksal hafıza adresi fiziksel hafıza adresi ile aynıdır.

Fiziksel bellek, işlemcinin adres alanından (16 bit işlemcideki gibi) daha büyükse, kullanılabilir fiziksel belleğin miktarını genişletmek için genellikle bellek bankası donanımı kullanılır. Intel 8086/8088 işlemciler , sabit bir banka planı yerine esnek segment kayıtları kullandı. (16-bit) bir mantıksal adresin (20-bit) bir fiziksel adrese çevrilmesi, banka haritası tablolarını kullanır. X86 için mantıksal adres muhtemelen bir bölüm kaydının belirtimini içerecektir.

Fiziksel adres aralığı tipik fiziksel bellekten daha büyükse (on yıl önce 32 bit işlemciler gibi), tam adres aralığının kullanılmasını sağlamak için sanal bellek donanımı kullanılır. Mantıksal adresler talep üzerine fiziksel hafıza ile desteklenir. Tam sanal / mantıksal adres alanını barındırmak ve / veya her bir işleme kendi adres alanını sağlamak için, sanal belleğin değiştirilmiş kopyalarını saklamak için bir destek deposuna ihtiyaç vardır. Değiştirilen hafıza bölümlere veya sayfalara veya bölümlere ayrılmış sayfalara göre düzenlenebilir.

BTW Unix çekirdeği hack ettiğim yıllarda nadiren "mantıksal (bellek) adres" ifadesini duydum ya da kullandım. Fiziksel bellek adresine atıfta bulunmadıysanız, sanal adresdi. Yani, "mantıksal adres" == "sanal adres" (MMU’da sanal bellek etkinleştirildiğinde).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.