Bellek bölümleme - Memory segmentation

Bellek bölümleme bir bilgisayardır (birincil ) hafıza yönetimi bir bölme tekniği bilgisayar birincil hafızası segmentler veya bölümler. İçinde bilgisayar sistemi bölümleme kullanarak, bir bellek konumuna yapılan bir referans, bir bölümü tanımlayan bir değer ve bir ofset (bellek konumu) bu segment içinde. Segmentler veya bölümler de kullanılır nesne dosyaları derlenmiş programların bağlantılı birlikte bir program görüntüsü ve görüntü olduğunda yüklendi hafızaya.

Segmentler genellikle bir programın bireysel rutinler veya veri tabloları gibi doğal bölümlerine karşılık gelir.[1] bu nedenle, bölümleme genellikle programcı tarafından sayfalama tek başına.[2]Farklı program için farklı segmentler oluşturulabilir modüller veya gibi farklı bellek kullanım sınıfları için kodu ve veri segmentleri.[3] Programlar arasında belirli bölümler paylaşılabilir.[1][2]

Segmentasyon, başlangıçta bir yöntem olarak icat edildi. sistem yazılımı farklı yazılımları izole edebilir süreçler (görevler ) ve kullandıkları veriler. Aynı anda birden çok işlemi çalıştıran sistemlerin güvenilirliğini artırmak amaçlanmıştır.[4] İçinde x86-64 mimarisi eski kabul edilir ve x86-64 tabanlı modern sistem yazılımlarının çoğu bellek bölümleme kullanmaz. Bunun yerine, programları ve verilerini kullanarak bellek sayfalama bu aynı zamanda hafıza korumasının bir yolu olarak hizmet eder. Ancak x86-64 uygulamalarının çoğu, geriye dönük uyumluluk nedenleriyle hala desteklemektedir.[4]

Donanım uygulaması

Bölümleme kullanan bir sistemde, bilgisayar bellek adresleri bir bölüm kimliğinden ve bölüm içindeki bir ofsetten oluşur.[3]Bir donanım bellek yönetim birimi (MMU), segment ve ofseti bir fiziksel adres ve çevirinin yapılabildiğinden ve bu segmente ve ofsete referansa izin verildiğinden emin olmak için kontroller yapmak için.

Her segmentin bir uzunluğu ve izinleri vardır (örneğin, okumak, yazmak, yürütmek) ile ilişkili.[3] Bir süreç izinler tarafından referans türüne izin veriliyorsa ve segment içindeki uzaklık, segmentin uzunluğu ile belirtilen aralık dahilindeyse segmente referans yapmaya izin verilir. Aksi takdirde, bir donanım istisnası gibi Segmentasyon hatası yükseltilir.

Segmentler ayrıca uygulamak için kullanılabilir sanal bellek Bu durumda, her bölümün ana bellekte bulunup bulunmadığını gösteren ilişkili bir bayrağı vardır. Ana bellekte bulunmayan bir bölüme erişilirse, bir istisna oluşur ve işletim sistemi bölümü ikincil depolamadan belleğe okuyacaktır.

Segmentasyon, uygulama yöntemlerinden biridir hafıza koruması.[5] Çağrı başka bir şeydir ve birleştirilebilirler. Bir bellek bölümünün boyutu genellikle sabit değildir ve tek bir bellek kadar küçük olabilir. bayt.[6]

Segmentasyon, sayfalandırmalı veya sayfasız, farklı donanımlarda birkaç farklı şekilde uygulanmıştır. Intel x86 bellek bölümleme her iki modele de uymamaktadır ve aşağıda ayrı ayrı ve ayrıca ayrı bir makalede daha ayrıntılı olarak ele alınmıştır.

Sayfalandırmadan segmentasyon

Her bölümle ilişkili, bölümün bellekte nerede bulunduğunu gösteren bilgilerdir. segment tabanı. Bir program bir bellek konumuna başvurduğunda, bir fiziksel bellek adresi oluşturmak için ofset bölüm tabanına eklenir.

Sayfalandırma olmadan bölümleme kullanan bir sistemde sanal belleğin uygulanması, tüm bölümlerin ana bellek ve ikincil depolama arasında ileri ve geri değiştirilmesini gerektirir. Bir segment takas edildiğinde, işletim sisteminin tüm segmenti tutmaya yetecek kadar bitişik boş bellek ayırması gerekir. Sıklıkla bellek parçalanması toplamda yeterli olsa bile, yeterli bitişik bellek yoksa sonuç verir.

Sayfalandırma ile segmentasyon

Gerçek bir bellek konumu yerine bölüm bilgisi, bir sayfa tablosu Bir program bir hafıza konumuna referans verdiğinde, ofset sayfa tablosu kullanılarak bir hafıza adresine çevrilir. Bir segment, başka bir bellek sayfası tahsis ederek ve bunu segmentin sayfa tablosuna ekleyerek genişletilebilir.

Bir uygulaması sanal bellek sayfalandırmalı bölümleme kullanan bir sistemde, sayfalı bölümlenmemiş bir sisteme benzer şekilde, genellikle tek tek sayfaları ana bellek ile ikincil depolama arasında ileri geri hareket ettirir. Segmentin sayfaları ana bellekte herhangi bir yerde bulunabilir ve bitişik olmaları gerekmez. Bu genellikle birincil ve ikincil depolama arasında giriş / çıkış miktarının azalmasına ve bellek parçalanmasının azalmasına neden olur.

Tarih

Burroughs Corporation B5000 bilgisayar, segmentasyonu ilk uygulayanlardan biriydi ve "belki de sanal bellek sağlayan ilk ticari bilgisayardı"[7] segmentasyona dayalı. Sonra B6500 bilgisayar ayrıca bölümleme uyguladı; mimarisinin bir sürümü, Unisys ClearPath Libra sunucularında bugün hala kullanılıyor.

GE-645 Segmentasyon ve sayfalama desteği eklenen GE-635'in bir modifikasyonu olan bilgisayar, 1964'te desteklemek için tasarlandı Multics.

Intel iAPX 432,[8] 1975'te başladı, bir mikroişlemcide bellek korumalı gerçek bir bölümlü mimari uygulamaya çalıştı.

960MX sürümü Intel i960 işlemciler, kaynak veya hedefin bir nesne için bir "erişim tanımlayıcısı" ve nesneye bir ofset olmasıyla yükleme ve saklama talimatlarını destekledi; erişim tanımlayıcı 32 bitlik bir kayıtta ve ofset, bir temel ofsetten hesaplandı. sonraki kayıt ve ek bir ofsetten ve isteğe bağlı olarak talimatta belirtilen bir indeks kaydından. Bir erişim tanımlayıcı izin bitlerini ve 26 bitlik bir nesne dizini içerir; nesne dizini, nesne tanımlayıcıları tablosuna bir dizindir, bir nesne türü, bir nesne uzunluğu ve nesnenin verileri için fiziksel bir adres, nesne için bir sayfa tablosu veya iki seviyeli bir üst düzey sayfa tablosu verir. nesne türüne bağlı olarak nesne için sayfa tablosu.[9]

önemli, Stratus, Apollo, IBM Sistemi / 38, ve IBM AS / 400 bilgisayarlar bellek bölümleme kullanır.

x86 mimarisi

Erken dönemlerde kullanılan bellek bölümleme x86 işlemcilerden başlayarak Intel 8086 herhangi bir koruma sağlamaz. Bu işlemciler üzerinde çalışan herhangi bir program, herhangi bir sınırlama olmaksızın herhangi bir segmente erişebilir. Bir segment yalnızca başlangıç ​​konumu ile tanımlanır; uzunluk kontrolü yoktur. Segment başlangıç ​​adresi ayrıntı düzeyi 16 bayttır ve uzaklık 16 bittir, 64 KiB'ye kadar segment boyutlarını destekler, böylece segmentler üst üste gelebilir (ve genellikle yapar) ve her fiziksel adres 4096 farklı segment ofset çifti ile gösterilebilir (adrese izin verilir) ofset sarmalı).

Segmentasyon Intel 80286 ve daha sonra koruma sağlar: 80286'nın piyasaya sürülmesiyle, Intel geriye dönük olarak önceki x86 CPU modellerinin tek işletim modu olarak adlandırıldı "gerçek mod "ve yenisini tanıttı"korumalı mod "koruma özellikleriyle." Geriye dönük uyumluluk için, tüm x86 CPU'lar bellek koruması olmadan, sabit 64 KiB segmenti ve yalnızca 20 bit (1024 KiB) adresleme olmadan "gerçek modda" başlar. 80286 veya sonraki bir işlemci başka bir moda geçirilmelidir tam adres alanını ve gelişmiş MMU özelliklerini kullanmak için yazılım tarafından.

Intel 80386 ve sonraki işlemciler de sayfalamayı destekler; bu işlemcilerde, segment tablosu, segment için bir sayfa tablosuna işaret etmek yerine, segment adresini içerir. doğrusal bellek. Doğrusal bellekteki adresler, sayfalama etkinleştirilmişse, ayrı bir sayfa tablosu kullanılarak fiziksel adreslerle eşleştirilir.

x86-64 mimari, uzun modda (64 bit modu) segmentasyonu kullanmaz.[10] İçinde x86-64 mimarisi eski kabul edilir ve x86-64 tabanlı modern sistem yazılımlarının çoğu bellek bölümleme kullanmaz. Bunun yerine, programları ve verilerini kullanarak bellek sayfalama bu aynı zamanda bir bellek koruma yolu olarak hizmet eder. Çoğu x86-64 uygulaması, geriye dönük uyumluluk nedenleriyle hala desteklemektedir.[4] Segment kayıtlarından dördü: CS, SS, DS ve ES 0'a zorlanır ve limit 2'ye getirilir64. Segment kayıtları FS ve GS yine de sıfır olmayan bir temel adrese sahip olabilir. Bu, işletim sistemlerinin bu segmentleri özel amaçlar için kullanmasına izin verir.

Ayrıca bakınız

Referanslar

  1. ^ a b Holt, A.W. (1961). Dinamik Depolama Tahsisi için "Program Organizasyonu ve Kayıt Tutma". ACM'nin iletişimi.
  2. ^ a b Englander, Irv (2003). Bilgisayar donanımı ve sistem yazılımı mimarisi (3. baskı). Wiley. ISBN  0-471-07325-3.
  3. ^ a b c Glaser, E. L .; Couleur, J. F .; Oliver, G.A. (1965). Zaman Paylaşımlı Uygulamalar İçin Bir Bilgisayarın Sistem Tasarımı. 1965 Güz Ortak Bilgisayar Konferansı.
  4. ^ a b c "1.2 Bellek Yönetimi". AMD64 Teknolojisi AMD64 Mimarisi Programcı El Kitabı 2. Cilt: Sistem Programlama (PDF). 2. Gelişmiş mikro cihazlar. 2018. s. 5.
  5. ^ Arpacı-Dusseau, Remzi H .; Arpacı-Dusseau, Andrea C. (2014). "Segmentasyon" (PDF). İşletim Sistemleri: Üç Kolay Parça. Arpacı-Dusseau Kitapları.
  6. ^ Intel® 64 ve IA-32 Mimarileri Yazılım Geliştirici Kılavuzu Cilt 3 (3A, 3B ve 3C): Sistem Programlama Kılavuzu (PDF). Intel Kurumu. 2012. sayfa 3–13.
  7. ^ Mayer, Alastair J.W. "Burroughs B5000'in Mimarisi - 20 Yıl Sonra ve Hala Zamanın Ötesinde mi?". Alındı 15 Mart, 2012.
  8. ^ IAPX 432 Mimarisine Giriş (PDF). Intel Kurumu. 1981. s. 78.
  9. ^ BiiN CPU Mimarisi Referans Kılavuzu (PDF). BiiN. Temmuz 1998.
  10. ^ AMD64 Teknolojisi AMD64 Mimarisi Programcı El Kitabı 2. Cilt: Sistem Programlama (PDF). 2. Gelişmiş mikro cihazlar. 2018.

Dış bağlantılar