Geleneksel bellek - Conventional memory

IBM PC ailesinin bellek alanları

In DOS hafıza yönetimi , geleneksel bellek olarak da adlandırılan, temel bellek , ilk 640 olan kilobayt bellek IBM PC veya uyumlu sistemler. İşletim sistemi ve uygulama programları tarafından kullanılmak üzere işlemci tarafından doğrudan adreslenebilen okuma-yazma belleğidir. Bellek fiyatları hızla düştüğü için, bu tasarım kararı, işletim sistemleri ve işlemcilerin tanıtılmasına kadar büyük bellek kapasitelerinin kullanımında bir sınırlama haline geldi ve bu da onu alakasız hale getirdi.

640 KB bariyer

IBM PC, PC/XT , 3270 PC ve PCjr bellek blokları
0-blok 1. 64 KB 64 KB'ye kadar normal kullanıcı belleği (düşük bellek alanı)
1-blok 2. 64 KB 128 KB'a kadar sıradan kullanıcı belleği
2 blok 3. 64 KB 192 KB'ye kadar sıradan kullanıcı belleği
3 blok 4. 64 KB Sıradan kullanıcı belleği 256 KB'a kadar
4 blok 5. 64 KB 320 KB'ye kadar normal kullanıcı belleği
5 blok 6. 64 KB 384 KB'a kadar normal kullanıcı belleği
6 blok 7. 64 KB 448 KB'a kadar sıradan kullanıcı belleği
7 blok 8. 64 KB 512 KB'a kadar normal kullanıcı belleği
8 blok 9. 64 KB 576 KB'a kadar sıradan kullanıcı belleği
9 blok 10. 64 KB 640 KB'a kadar normal kullanıcı belleği
Bir blok 11. 64 KB Genişletilmiş video belleği ( EGA )
B bloğu 12. 64 KB Standart video belleği ( MDA / CGA )
C bloğu 13. 64 KB ROM genişletme (XT, EGA, 3270 PC)
D bloğu 14. 64 KB diğer kullanımlar (PCjr kartuşları, LIM EMS )
E-blok 15. 64 KB diğer kullanım (PCjr kartuşları, LIM EMS)
F bloğu 16. 64 KB Sistem ROM-BIOS ve ROM-BASIC

640 KB bariyer bir mimari kısıtlamasıdır IBM PC uyumlu PC. Intel 8088 yılında kullanılan işlemci, orijinal IBM PC , 1 MB (2 hitap edebildi 20  yonga 20 teklif beri, bayt) adres hatları . PC'nin tasarımında, 640 KB'nin altındaki bellek , anakart veya genişletme kartları üzerindeki rastgele erişimli bellek içindi ve buna geleneksel bellek alanı deniyordu.Geleneksel bellek alanının ilk bellek bölümü (64 KB), alt bellek veya düşük bellek alanı olarak adlandırılır . Üst bellek alanı (UMA) olarak adlandırılan geleneksel bellek alanının ötesinde kalan 384 KB , sistem kullanımı ve isteğe bağlı cihazlar için ayrıldı. UMA, ROM BIOS , ek salt okunur bellek , sabit disk sürücüleri ve video bağdaştırıcıları için BIOS uzantıları, video bağdaştırıcı belleği ve bellek eşlemeli diğer giriş ve çıkış aygıtları için kullanıldı . Orijinal IBM PC'nin tasarımı, Renkli Grafik Adaptörü (CGA) bellek haritasını UMA'ya yerleştirdi.

Daha fazla RAM ihtiyacı, ayrılmış adresleri kullanmak için donanım ihtiyaçlarından daha hızlı büyüdü, bu da RAM'in sonunda tüm kullanılabilir adreslenebilir alanı kullanmak için bu kullanılmayan üst alanlara eşlenmesiyle sonuçlandı. Bu, isteğe bağlı veriler için kullanılabilecek donanım tarafından işgal edilen adres kümesine ayrılmış bir "delik" (veya birkaç delik) oluşturdu. Böyle bir delikten kaçınmak zor ve çirkindi ve DOS veya üzerinde çalışabilecek çoğu program tarafından desteklenmiyordu . Daha sonra, delikler arasındaki boşluk üst bellek blokları (UMB'ler) olarak kullanılacaktır.

Eski işletim sistemleri ve uygulamalarla uyumluluğu korumak için, 640 KB engeli, 8086/8088 , korumalı modda 16 MB'a kadar belleğe hitap edebilen Intel 80286 işlemci ile değiştirildikten sonra bile bilgisayar tasarımının bir parçası olarak kaldı . 1 MB engeli, 286 gerçek modda çalıştığı sürece de kaldı , çünkü DOS, segment ve ofset kayıtlarını örtüşen bir şekilde kullanan ve 20 bitten fazla olan adreslerin mümkün olmadığı şekilde kullanan gerçek modu gerektiriyordu. DOS tarafından kullanıldığı gibi gerçek modda çalışıyorlarsa, bugün IBM PC uyumlularında hala mevcuttur. En modern Intel PC'ler bile 640 ile 1024 KB arasında ayrılmış alana sahiptir  . Ancak bu, sanal bellek kullanan daha yeni işletim sistemlerindeki ( Windows , Linux veya Mac OS X gibi) programlara (hatta işletim sisteminin çoğuna) görünmez , çünkü fiziksel bellek adresleri hakkında hiçbir farkındalıkları yoktur. Bunun yerine, kullanılabilir RAM adreslerinden bağımsız olarak tanımlanan bir sanal adres alanı içinde çalışırlar.

Bazı anakartlarda, video belleği için belirli bir megabayta özel erişim gerektiren belirli VGA video kartları için gerekli olan "15 Megabaytta Bellek Deliği" seçeneği bulunur. AGP (PCI bellek alanı) veri yolunu kullanan sonraki video kartları , 1 GB açıklık boyutuna sahip 256 MB belleğe sahip olabilir .

Ek bellek

İlk IBM XT bilgisayarlarında kullanılan bir teknik , video belleği adres aralığına ek RAM takmak ve sınırı Monokrom Ekran Bağdaştırıcısının (MDA) başlangıcına kadar zorlamaktı . Bunun çalışması için bazen yazılım veya özel bir adres kod çözücü gerekliydi. Bu, bariyeri 704 KB'ye (MDA/HGC ile) veya 736 KB'ye (CGA ile) taşıdı.

386 tabanlı sistemlerdeki ( DR-DOS'ta QEMM veya MEMMAX (+V) gibi) bellek yöneticileri , 640 KB'de geleneksel bellek ekleyerek ve engeli 704 KB'ye taşıyarak (segment B000'e kadar) aynı etkiyi elde edebilir. MDA/HGC) veya 736 KB (CGA'nın başlangıcı olan segment B800'e kadar). Bu durumda yalnızca CGA kullanılabilir, çünkü Gelişmiş Grafik Bağdaştırıcısı (EGA) video belleği, 640 KB satırının altındaki geleneksel bellek alanına hemen bitişiktir; aynı bellek alanı hem video kartının çerçeve arabelleği hem de geçici programlar için kullanılamaz.

Tüm Bilgisayarların bindirmeli eklenti bellek yönetim birimleri XT için AllCard ve 286/386SX sınıfı bilgisayarlar için Chargecard ile MicroWay'in ECM (Genişletilmiş Konvansiyonel Bellek) eklentisi, normal belleğin A0000 ile eşlenmesine izin verdi. -EFFFF ( hex ) adres aralığı, DOS programları için 952 KB'a kadar çıkabilmektedir . Video belleğine doğrudan erişen Lotus 1-2-3 gibi programların bu bellek düzenini işlemek için yama yapılması gerekiyordu . Bu nedenle, donanım uyumluluğu pahasına 640 KB engeli kaldırıldı.

Konsol yeniden yönlendirmesini kullanmak (ya AUX gibi alternatif bir konsol cihazı belirterek : başlangıçta COMMAND.COM'u çağırırken ya da daha sonra CTTY kullanarak ), aptal bir terminale veya bir terminal öykünücüsü çalıştıran başka bir bilgisayara çıktıyı yönlendirmek ve bu bilgisayardan girdi almak için de mümkündü. . Sistem BIOS'unun hala makinenin önyüklenmesine izin verdiğini varsayarsak (en azından gömülü PC'ler için BIOS'larda genellikle durum böyledir), ardından video kartı tamamen çıkarılabilir ve sistem, programlar için toplam 960 KB'lık sürekli DOS belleği sağlayabilir. yüklemek için.

Benzer kullanım, parçalanmamış bellek düzenine sahip IBM uyumlu olmayan birçok DOS'ta mümkündü, örneğin Victor 9000 / Sirius 1 veya özel sürümü altında kullanılmak üzere 896 KB'ye kadar sürekli DOS belleğini destekleyen Apricot PC MS-DOS'un.

DOS sürücü yazılımı ve TSR'ler

DOS için yazılan çoğu standart program, mutlaka 640 KB veya daha fazla belleğe ihtiyaç duymadı. Bunun yerine, standart DOS yazılımına ek olarak Sonlandır ve Yerleşik Kal (TSR) programları olarak adlandırılan sürücü yazılımı ve yardımcı programları kullanılabilir. Bu sürücüler ve yardımcı programlar tipik olarak bazı geleneksel bellekleri kalıcı olarak kullandı ve standart DOS programları için kullanılabilir toplamı azalttı.

Geleneksel bellek kullanan bazı çok yaygın DOS sürücüleri ve TSR'ler şunları içerir:

  • ANSI.SYS - renkli metin ve farklı metin çözünürlükleri için destek
  • ASPIxDOS.SYS, ASPIDISK.SYS, ASPICD.SYS - Adaptec SCSI sürücülerinin ve CDROM'ların çalışması için hepsinin yüklenmesi gerekir
  • DOSKEY.EXE - yukarı ok kullanılarak önceden yazılmış DOS komutlarının geri çağrılmasına izin verir
  • LSL.EXE, E100BODI.EXE (veya başka bir ağ sürücüsü), IPXODI.EXE, NETX.EXE - NetWare dosya sunucusu sürücü harfi erişimi için tümü yüklenmelidir
  • MOUSE.EXE - DOS programlarında fare aygıtları için destek
  • MSCDEX.EXE - CDROM sürücü erişimi ve sürücü harfi desteği, üreticiye özel ayrı bir sürücüyle birlikte kullanılır. SCSI CDROM aygıtına erişim için yukarıdaki SCSI sürücülerine ek olarak gereklidir.
  • SBCONFIG.EXE - Sound Blaster 16 ses aygıtı desteği ; diğer çeşitli ses kartları için farklı adlandırılmış bir sürücü kullanıldı ve aynı zamanda geleneksel hafızayı da işgal etti.
  • SMARTDRV.EXE - disk okuma ve yazma işlemlerini hızlandırmak için sürücü önbelleğini kurun; Sürücüyü önbelleğe almak için 640 kb'nin ötesinde birkaç megabayt bellek ayırabilse de, çalışması için hala geleneksel belleğin küçük bir kısmına ihtiyacı vardı.

Yukarıda görülebileceği gibi, bu sürücülerin ve TSR'lerin çoğu, sistemin tam özellikli çalışması için pratik olarak gerekli kabul edilebilir. Ancak çoğu durumda, belirli standart DOS programlarını çalıştırıp çalıştırmamaya veya tüm favori sürücülerini ve TSR'lerini yüklemeye karar vermek için bilgisayar kullanıcısı tarafından bir seçim yapılması gerekiyordu. Kullanıcı aynı zamanda standart bir DOS programını da çalıştırmak istiyorsa, yukarıda gösterilen tüm listeyi yüklemek muhtemelen pratik değildir veya imkansızdır.

Bazı durumlarda, belirli programları çalıştırmak için sürücülerin veya TSR'lerin bellekten kaldırılması ve ardından programı çalıştırdıktan sonra yeniden yüklenmesi gerekir. Kaldırılamayan sürücüler için, DOS'un sonraki sürümleri, bilgisayar kullanıcısının belirli yüksek bellek kullanımlı standart DOS programlarını çalıştırmadan önce yüklenecek çeşitli sürücü gruplarını ve TSR'leri seçmesine olanak tanıyan bir başlangıç ​​menüsü özelliği içeriyordu.

Üst bellek blokları ve yüksek yükleme

DOS uygulamaları 1980'lerin sonlarında ve 1990'ların başlarında daha büyük ve daha karmaşık hale geldikçe, aygıt sürücülerini ve TSR programlarını önyükleme sırasında üst bellek alanındaki (UMA) üst bellek bloklarına (UMB'ler) taşıyarak geleneksel belleği boşaltmak yaygın bir uygulama haline geldi. , uygulamalar için mevcut olan geleneksel belleği en üst düzeye çıkarmak için. Bu, donanım değişikliği gerektirmeme ve uygulama uyumluluğunu koruma avantajına sahipti.

Bu özellik, 1990'da DR DOS 5.0'a , ardından 1991'de MS-DOS 5.0'a dahil edilmeden önce , ilk olarak QEMM gibi üçüncü taraf ürünler tarafından sağlandı . Çoğu kullanıcı , MS-DOS 5'te sağlanan beraberindeki EMM386 sürücüsünü kullandı , ancak üçüncü taraf ürünleri QEMM gibi şirketlerden de popüler olduğunu kanıtladı.

Başlangıçta sürücüler " DEVICEHIGH =" yönergesi kullanılarak yükseğe yüklenebilirken , TSR'ler " LOADHIGH ", " LH " veya " HILOAD " yönergeleri kullanılarak yüksek yüklenebilir . İşlem başarısız olursa, sürücü veya TSR bunun yerine otomatik olarak normal geleneksel belleğe yüklenir.

CONFIG.SYS , ANSI.SYS'yi UMB'lere yüklerken, EMS desteği etkin değil:

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS
DEVICEHIGH=C:\DOS\ANSI.SYS

AUTOEXEC.BAT , mümkünse MOUSE, DOSKEY ve SMARTDRV'yi UMB'lere yükleme:

LH C:\DOS\MOUSE.EXE
LH C:\DOS\DOSKEY.EXE
LH C:\DOS\SMARTDRV.EXE

DOS 5.0 ve sonraki sürümlerinin kendi sistem çekirdek kodunu DOS =HIGH komutu aracılığıyla yüksek bellek alanına (HMA) taşıma yeteneği, boş bellek için başka bir destek verdi.

Sürücü/TSR optimizasyonu

Donanım genişletme kartları, ROM adreslemesi için herhangi bir üst bellek alanını kullanabilir, bu nedenle üst bellek blokları, kurulu donanıma bağlı olarak her bilgisayar için farklı boyutlarda ve farklı konumlardaydı. Üst belleğin bazı pencereleri büyük, bazıları küçük olabilir. Sürücüleri ve TSR'leri yükseğe yüklemek, bir blok seçer ve uygun olduğu yerde bir blok bulunana veya geleneksel belleğe gidene kadar programı buna sığdırmaya çalışır.

Sürücülerin ve TSR'lerin alışılmadık bir yönü, yüklendikleri sıraya bağlı olarak farklı miktarlarda geleneksel ve/veya üst bellek kullanmalarıdır. Bu, programlar farklı sıralarda tekrar tekrar yüklendiyse ve her permütasyondan sonra ne kadar hafızanın boş olduğunu kontrol etmek için avantaj sağlamak için kullanılabilir. Örneğin, 50 KB UMB ve 10 KB UMB varsa ve 8 KB ve 45 KB gerektiren programlar yüklendiyse, 8 KB 50 KB UMB'ye gidebilir ve ikincinin yüklenmesini engelleyebilir. DOS'un sonraki sürümleri, sürücüleri/TSR'leri birbirine daha sıkı bir şekilde sığdırmak için bir sürücü veya TSR için belirli bir yükleme adresinin kullanılmasına izin verdi.

MS-DOS 6.0'da Microsoft MEMMAKER, bu blok eşleştirme sürecini otomatikleştiren ve üçüncü taraf bellek yöneticilerinin sunduğu işlevselliklerle eşleşen 'i tanıttı . Bu otomatik optimizasyon, çoğu zaman, en büyük boş geleneksel belleği sağlama anlamında, elle yapmakla aynı sonucu vermiyordu.

Ayrıca bazı durumlarda üçüncü taraf şirketler, birkaç standart DOS sürücüsünün ve TSR'nin yeteneklerini yalnızca birkaç kilobayt bellek kullanan tek bir çok kompakt programda birleştirecek çok işlevli özel sürücüler yazdı. Örneğin, fare sürücüsü, CD-ROM sürücüsü, ANSI desteği, DOSKEY komut geri çağırma ve disk önbelleğe alma işlevlerinin tümü, normal sürücü/kesme erişimi için yalnızca 1 - 2 kilobayt geleneksel bellek tüketerek tek bir programda birleştirilir ve çok işlevli program kodunun geri kalanını EMS veya XMS belleğinde saklamak.

DOS genişleticiler

Engel ancak DOS uygulamalarının 16 bit veya 32 bit korumalı modda çalışmasına izin veren DOS genişleticilerin gelmesiyle aşıldı , ancak bunlar bilgisayar oyunlarının dışında çok yaygın olarak kullanılmadı . 32-bit DOS genişletici ile, bir oyun 32-bit düz adres alanından ve 66s/67s işlenen/adres geçersiz kılma önekleri olmadan tam 32-bit komut setinden yararlanabilir. 32-bit DOS genişleticiler, derleyici desteği (32-bit derleyiciler) gerektirirken, XMS ve EMS, 16-bit gerçek kipli DOS uygulamalarını hedefleyen eski bir derleyici ile çalıştı. DOS genişleticiler için en yaygın iki belirtim, VCPI ve daha sonra Windows 3.x ile uyumlu DPMI idi .

En dikkate değer DPMI uyumlu DOS genişletici, Watcom ile birlikte gönderilen DOS/4GW olabilir . DOS için oyunlarda çok yaygındı. Böyle bir oyun, ya bir DOS/4GW 32-bit çekirdekten ya da yolda ya da aynı dizinde bulunan bir DOS/4GW çekirdeğini ve bir 32-bit "doğrusal yürütülebilir dosya"yı yükleyen bir saplamadan oluşacaktır. DOS/4GW'yi böyle bir programdan çıkarabilen ve kullanıcının çeşitli ve belki de geliştirilmiş DOS/4GW klonlarından herhangi biri ile deneme yapmasına izin veren yardımcı programlar mevcuttur.

DOS genişleticilerden önce, bir kullanıcı ek bellek takarsa ve bunu DOS altında kullanmak isterse, önce genişletilmiş bellek belirtimini (EMS) ya da genişletilmiş bellek belirtimini (XMS) desteklemek için sürücüleri kurmalı ve yapılandırmalı ve aşağıdakilerden birini destekleyen programları çalıştırmalıdır. bu özellikler.

EMS dayalı olanlar dahil tüm PC'lerde bir şartname sunulmuştu Intel 8086 ve Intel 8088 (giriş ve çıkış eklenti donanım sayfasına belleğin küçük parçalar izin banka anahtarlama "gerçek modu") alanı adresleme (0x0400- 0xFFFF). Bu, 16 bitlik gerçek kipte DOS programlarının, gerçek bellekteki bir delikten, tipik olarak (0xE000–0xEFFF) birkaç megabayt RAM'e erişmesine izin verdi. Daha sonra bir programın, kullanmadan önce sayfaya erişilmesini açıkça istemesi gerekir. Bu bellek konumları daha sonra başka bir sayfa ile değiştirilene kadar keyfi olarak kullanılabilir. Bu, modern disk belleğine alınmış sanal belleğe çok benzer . Ancak, bir sanal bellek sisteminde, sayfalama EMS ile açıkken , işletim sistemi tüm sayfalama işlemlerini gerçekleştirir.

XMS, 16-bit DOS programlarının 80286 veya 80386 genişletilmiş bellek parçalarını düşük bellekte (adres 0x0400-0xFFFF) yüklemesine izin veren temel bir protokol sağladı. Tipik bir XMS sürücüsünün bu belleği yüklemek için korumalı moda geçmesi gerekiyordu. Bu yaklaşımdaki sorun, 286 korumalı moddayken doğrudan DOS çağrılarının yapılamamasıdır. Çözüm, 286'nın sıfırlanmasını gerektiren bir geri arama mekanizması uygulamaktı. 286'da bu büyük bir sorundu. Intel 80386 "tanıtıldı, sanal 8086 modu ", konuk çekirdeği aslında "gerçek mod" içine işlemci geri zorlamak zorunda kalmadan ev sahibi işletim sistemini 8086 taklit ve çalıştırmak için izin verdi. HIMEM.SYS 2.03 ve üstü , 80386 ve üstü CPU'larda gerçek dışı modu kullanırken, HIMEM.SYS 2.06 ve üstü, 80286'daki belgelenmemiş dahili kayıtları değiştirmek için LOADALL'u kullandı ve tekrarlanan gerçek mod/korumalı mod geçişlerinden kaçınarak kesinti gecikmesini önemli ölçüde iyileştirdi.

Windows, kendi HIMEM.SYS sürümünü DOS 3.3 ve sonraki sürümlere yükler. Windows HIMEM.SYS, Windows Virtual Machine Manager için 32-bit korumalı mod XMS (n.0 hizmet sağlayıcısı) başlatır, bu daha sonra DOS kutularına ve 16-bit Windows makinesine (örn. DOS) XMS (n-1.0 hizmetleri sağlar) 7 HIMEM.SYS, XMS 3.0'dır ancak bir Windows 95 DOS penceresinde 'MEM' komutunu çalıştırmak XMS 2.0 bilgilerini gösterir).

Ayrıca bakınız

Referanslar

daha fazla okuma