Bellek yönetimi (işletim sistemleri) - Memory management (operating systems)

In işletim sistemleri , bellek yönetimi bilgisayarın yönetmekten sorumlu fonksiyondur birincil bellek .

Bellek yönetimi işlevi, ayrılmış veya boş her bir bellek konumunun durumunu takip eder . Belleğin rekabet eden süreçler arasında nasıl ayrılacağını, hangisinin bellek alacağına, ne zaman alacağına ve ne kadar izin verildiğine karar verir. Bellek tahsis edildiğinde, hangi bellek konumlarının atanacağını belirler. Belleğin ne zaman boşaldığını veya ayrılmadığını izler ve durumu günceller.

Bu, bir işlemin işletim sistemi tarafından kendisine atanan belleği yönetme şekli olan uygulama belleği yönetiminden farklıdır .

Bellek yönetimi teknikleri

Tek bitişik tahsis

Tek ayırma , en basit bellek yönetimi tekniğidir. Genellikle işletim sistemi için ayrılmış küçük bir kısım dışında, bilgisayarın tüm belleği tek bir uygulamada kullanılabilir. MS-DOS , belleği bu şekilde ayıran bir sistem örneğidir. Bir gömülü sistem tek bir uygulama çalıştıran da bu tekniği kullanabilir.

Tek bir bitişik ayırma kullanan bir sistem hala olabilir çok sayı ile takas kullanıcılar arasında geçiş yapmak için, bellek içeriğinin. MUSIC işletim sisteminin ilk sürümleri bu tekniği kullandı.

Bölünmüş tahsis

Bölümlü ayırma , birincil belleği , genellikle bitişik bellek alanları olan birden çok bellek bölümüne böler . Her bölüm, belirli bir veya görev için tüm bilgileri içerebilir . Bellek yönetimi, bir işe başladığında bir bölüm tahsis etmekten ve iş bittiğinde işi ayırmadan oluşur.

Bölünmüş tahsis genellikle işlerin birbiriyle veya işletim sistemiyle karışmasını önlemek için bazı donanım desteği gerektirir. IBM System / 360 el kilit ve anahtar teknik. Diğer sistemler , bölümün sınırlarını içeren ve geçersiz erişimleri işaretleyen taban ve sınır kayıtlarını kullandı. UNIVAC 1108 Depolama Kayıt Limits talimatlar ve veriler için ayrı üs / bağlı setleri vardı. Sistem , i bankası ve d bankası olarak adlandırılanları ayrı bellek modüllerine yerleştirmek için bellek serpiştirmeden yararlandı .

Bölümler , Başlangıç ​​Program Yüklemesinde (IPL) veya önyükleme zamanında veya bilgisayar operatörü tarafından tanımlanan statik veya belirli bir iş için otomatik olarak oluşturulan dinamik olabilir . Sabit Sayıda Görev (MFT) ile IBM System/360 İşletim Sistemi Çoklu Programlama , statik bölümleme örneğidir ve Değişken Sayıda Görev (MVT) ile Çoklu Programlama , dinamik bir örnektir. MVT ve ardılları, dinamik bölümleri diğer sistemlerdeki statik bölümlerden ayırmak için bölge terimini kullanır .

Bölmeler olabilir yeri değiştirilebilir bir donanım kullanarak yazılan bellek gibi, Burroughs Corporation, B5500 , ya da bu gibi baz ve sınır kayıtlarından PDP-10 ya da GE-635 . Yeniden konumlandırılabilir bölümler, daha büyük bitişik fiziksel bellek parçaları sağlamak için sıkıştırılabilir . Sıkıştırma, daha büyük bitişik boş alanlar oluşturmak için işlemin sonlandırılmasının neden olduğu "delikleri" veya kullanılmayan bellek alanlarını ortadan kaldırmak için belleğin "kullanımdaki" alanlarını hareket ettirir.

Bazı sistemler bölümleri izin dışarı takas için ikincil depolama ücretsiz ek bellek. IBM'in Zaman Paylaşımı Seçeneğinin (TSO) ilk sürümleri, zaman paylaşımlı bölümlere giren ve çıkan kullanıcıları değiştirdi .

Sayfalanmış bellek yönetimi

Sayfa ayırma , bilgisayarın birincil belleğini sayfa çerçeveleri adı verilen sabit boyutlu birimlere ve programın sanal adres alanını aynı boyuttaki sayfalara böler . Donanım belleği yönetim birimi, sayfaları çerçevelere eşler. Adres alanı bitişik görünürken fiziksel bellek sayfa bazında tahsis edilebilir.

Genellikle, disk belleği yönetimi ile her iş kendi adres alanında çalışır. Ancak, bazı vardır tek adres alanı işletim sistemleri gibi tek adres alanı içinde tüm işlemleri çalıştırmak, IBM i büyük bir adres alanı içindeki tüm süreçleri çalışır, ve IBM OS / VS2 (SVS) a tüm işleri koştu tek 16MiB sanal adres alanı.

Sistem, sayfaları birincil ve ikincil bellek arasında gerektiği gibi taşıyabildiğinde, disk belleği belleği isteğe bağlı olarak disk belleğine alınabilir .

Bölümlere ayrılmış bellek yönetimi

Bölünmüş bellek , kullanıcının programına "doğrusal ve bitişik bir adres alanı" sağlamayan tek bellek yönetimi tekniğidir. Segmentler , genellikle bir kod prosedürü veya bir veri dizisi gibi mantıksal bir bilgi gruplamasına karşılık gelen bellek alanlarıdır. Segmentler bir şeklinde donanım desteği gerektiren kademeli bir tablo genellikle bellek, boyutuna segmentin fiziksel adres ihtiva eder ve bu erişim koruma bit ve durumu gibi diğer veriler (takas vb takas)

Segmentasyon, diğer şemalardan daha iyi erişim korumasına izin verir, çünkü bellek referansları belirli bir segmente göredir ve donanım, uygulamanın o segment için tanımlanmamış belleğe referans vermesine izin vermez.

Sayfalamalı veya sayfalamasız segmentasyon uygulamak mümkündür. Disk belleği desteği olmadan segment, gerektiğinde belleğe girip çıkan fiziksel birimdir. Sayfalama desteğiyle, sayfalar genellikle takas birimidir ve segmentasyon yalnızca ek bir güvenlik düzeyi ekler.

Segmentli bir sistemdeki adresler genellikle segment kimliğinden ve sıfır ofset olarak tanımlanan segment temel adresine göre bir ofsetten oluşur.

Intel IA-32 (x86) mimarisi, bir işlemin her biri 4 GiB'ye kadar olan 16.383'e kadar segmente sahip olmasına izin verir. IA-32 segmentleri, bilgisayarın doğrusal adres alanının , sayfalama donanımı tarafından sağlanan sanal adres alanının alt bölümleridir .

Multics işletim sistemi muhtemelen parçalı bellek uygulayan en iyi bilinen sistemdir. Multics segmentleri, bilgisayarın 256 sayfaya kadar fiziksel belleğinin alt bölümleridir , her sayfa boyutu 1K 36-bit word'dür ve maksimum 1MiB segment boyutuyla sonuçlanır (Multics'te kullanıldığı gibi 9-bit bayt ile). Bir proseste en fazla 4046 segment olabilir.

Kullanıma sunma/döndürme

Rollout/rollin (RO/RI), çalışan bir programın tüm paylaşılmayan kodunun ve verilerinin, ana depolamayı başka bir görev için boşaltmak üzere yardımcı belleğe (disk veya tambur) değiştirildiği bir bilgisayar işletim sistemi bellek yönetimi tekniğidir . Programlar "talep sonunda veya uzun bir etkinlik için beklerken" kullanıma sunulabilir. Rollout/rollin, kullanıcının "düşünme süresinin" takas yapma süresine kıyasla nispeten uzun olduğu zaman paylaşımlı sistemlerde yaygın olarak kullanılıyordu .

Sanal depolama — sayfalama veya segmentasyondan farklı olarak , kullanıma alma/rollin herhangi bir özel bellek yönetimi donanımı gerektirmez; bununla birlikte, sistemde bir bellek haritası veya taban ve sınır yazmaçları gibi yer değiştirme donanımı yoksa , programın orijinal bellek konumlarına geri döndürülmesi gerekir. Rollout/rollin'in yerini büyük ölçüde sanal bellek almıştır.

Kullanıma alma/rollin, Değişken Sayıda Görev (MVT) ile OS/360 Çoklu Programlamanın isteğe bağlı bir özelliğiydi

Rollout/rollin, belirli bir işin başlangıçta belirtilen bölgesinin ötesinde geçici, dinamik olarak genişletilmesine izin verir. Bir iş için daha fazla alana ihtiyaç duyulduğunda, kullanıma alma/rollin, işin kullanımı için atanmamış depolama elde etmeye çalışır. Böyle bir atanmamış depolama yoksa, başka bir iş dağıtılır - yani, yardımcı depolamaya aktarılır - böylece bölgesi ilk iş tarafından kullanılabilir. İlk iş tarafından serbest bırakıldığında, bu ek depolama ya (1) kaynağı buysa atanmamış depolama olarak veya (2) ana depolamaya geri aktarılacak (içe aktarılacak) işi almak için tekrar kullanılabilir.

OS/360'ta, kullanıma alma/dönüştürme yalnızca toplu işler için kullanıldı ve bölgeyi ödünç alan iş adımı sona erene kadar geri alma gerçekleşmez.

Ayrıca bakınız

Notlar

Referanslar