Bellek eşleme dosyaları, dosyaları sürecin adres uzayına eşlemek için sanal bellek kullanır; ardından süreç, dosyayı süreç alanındaki adres gibi manipüle eder; örneğin C dilinde memcpy ve diğer bellek işlem fonksiyonları kullanılarak. Bu yöntem, bir dosyanın veya büyük bir dosyanın sıkça işlenmesi gerektiğinde ve IO işleme verimliliğinin sıradan IO'dan daha yüksek olduğu durumlarda iyi kullanılabilir Paylaşılan bellek, disk üzerindeki dosya yerine bir parça belleği eşleyen bellek-eşlemeli dosyaların özel bir durumudur. Paylaşılan belleğin konusu Süreçtir ve işletim sistemi varsayılan olarak her sürece bir bellek alanı tahsis eder; her proses yalnızca işletim sistemi tarafından tahsis edilen bir bellek parçasına erişebilir, diğer süreçlere erişemez. Ve bazen farklı süreçler arasında aynı hafıza parçasına erişmen gerekir, ne yapmalısın? İşletim sistemi, paylaşılan belleğe erişim oluşturmak için bir API sağlar ve bellek paylaşması gereken süreçler, bu tanımlanmış API seti aracılığıyla birden fazla prosesin paylaştığı belleğe erişebilir ve her süreç bu belleğe sabit diskteki bir dosyaya erişiyormuş gibi erişir. .Net 4.0 ise System.IO tanıtıyor. MemoryMappedFiles isim alanı, Windows Paylaşılan Bellek ile ilgili API'leri kapsayan ve .Net programcılarının bellek eşleme dosyalarını kullanmasını kolaylaştıran bir sınıftır. C#'da paylaşılan bellek kullanın. App1 için aşağıdaki kod, kullanıcının paylaşılan belleğe bir satır metin girmesini sağlar; App2 konsolu sürekli yeniler ve en son paylaşılan bellek içeriğini çıkarır; App3, App2 ile aynı işlevleri uygular, ancak okuma yöntemi farklıdır.
Verileri okumak için iki yöntem kullanıldı. Süreçler arasındaki iletişim daha önce nadiren kullanıldığı için, bu yöntem sadece ön bir anlayıştır. Program çok ilkel ve birçok şey yargılanmıyor. Örneğin, paylaşılan bir bellek nasıl oluşturulur, nasıl alınır ve silinir vb.
|