Yükleyici (bilgi işlem) - Loader (computing) - Wikipedia

İçinde bilgisayar sistemleri a yükleyici bir parçası işletim sistemi yüklemeden sorumlu programları ve kütüphaneler. Programları hafızaya yerleştirdiği ve uygulamaya hazırladığı için, bir programın başlatılması sürecindeki temel aşamalardan biridir. Bir programın yüklenmesi, içeriğin okunmasını içerir. çalıştırılabilir dosya program talimatlarını hafızaya almak ve ardından yürütülebilir dosyayı çalışmaya hazırlamak için gerekli diğer hazırlık görevlerini yerine getirmek. Yükleme tamamlandığında, işletim sistemi kontrolü yüklenen program koduna geçirerek programı başlatır.

Program yüklemeyi destekleyen tüm işletim sistemlerinde, yalnızca sabit bir dizi özel programa sahip olan oldukça özelleşmiş bilgisayar sistemleri dışında yükleyiciler bulunur. Gömülü sistemler tipik olarak yükleyicileri yoktur ve bunun yerine kod doğrudan ROM'dan yürütülür. İşletim sisteminin kendisini yükleme işleminin bir parçası olarak önyükleme uzman önyükleyici kullanıldı. Birçok işletim sisteminde, yükleyici kalıcı olarak bellekte bulunur, ancak bazı işletim sistemleri sanal bellek yükleyicinin bir bellek bölgesinde bulunmasına izin verebilir sayfalanabilir.

Sanal belleği destekleyen işletim sistemleri söz konusu olduğunda, yükleyici çalıştırılabilir dosyaların içeriğini belleğe gerçekten kopyalayamayabilir, bunun yerine, sanal bellek alt sistemine, çalışmayı içermek için ayrılmış bellek bölgesi arasında bir eşleme olduğunu bildirebilir. programın kodu ve ilişkili yürütülebilir dosyanın içeriği. (Görmek bellek eşlemeli dosya.) Daha sonra, sanal bellek alt sistemi, programın yürütülmesi gerçekten doldurulmamış belleğin bu alanlarına çarptığında, bu bellek bölgesine sahip sayfaların talep üzerine doldurulması gerektiği konusunda bilgilendirilir. Bu, bir programın kod bölümlerinin gerçekten kullanılana kadar belleğe kopyalanmayacağı ve kullanılmayan kodun belleğe hiçbir zaman yüklenemeyeceği anlamına gelebilir.

Sorumluluklar

İçinde Unix, yükleyici işleyici için sistem çağrısı execve ().[1] Unix yükleyicinin görevleri şunları içerir:

  1. doğrulama (izinler, bellek gereksinimleri vb.);
  2. program görüntüsünü diskten diske kopyalamak ana hafıza;
  3. kopyalamak komut satırı argümanları üzerinde yığın;
  4. başlatılıyor kayıtlar (örneğin, yığın işaretçisi);
  5. program giriş noktasına atlama (_Başlat).

İçinde Microsoft Windows 7 ve üzeri, yükleyici, LdrInitializeThunk içerdiği işlev ntdll.dll, aşağıdakileri yapar:

  1. DLL'nin kendisindeki yapıların ilklendirilmesi (ör. kritik bölümler modül listeleri);
  2. Yüklenecek yürütülebilir dosyanın doğrulanması;
  3. bir yaratılış yığın (işlev aracılığıyla RtlCreateHeap);
  4. ortam değişkeni bloğunun ve PATH bloğunun tahsisi;
  5. çalıştırılabilir ve NTDLL'nin modül listesine eklenmesi (bir çift ​​bağlantılı liste );
  6. yükleniyor KERNEL32.DLL örneğin birkaç önemli işlevi elde etmek için BaseThreadInitThunk;
  7. yürütülebilir dosyanın içe aktarmalarının yüklenmesi (yani dinamik bağlantı kitaplıkları ) yinelemeli olarak (ithalatın ithalatını, ithalatını vb. kontrol edin);
  8. hata ayıklama modunda, sistem kesme noktasının yükseltilmesi;
  9. DLL'lerin ilklendirilmesi;
  10. çöp toplama;
  11. arama NtContinue yükleyici işlevine verilen bağlam parametresinde (yani, RtlUserThreadStart, çalıştırılabilir dosyayı başlatacak)

Yükleyicilerin yerini değiştirme

Bazı işletim sistemlerinin ihtiyacı yükleyicilerin yerini değiştirmek, yüklemenin başladığı adresteki değişiklikleri telafi etmek için yürütülebilir dosyadaki adresleri (işaretçileri) ayarlayan. Yükleyicilerin yerini değiştirmeye ihtiyaç duyan işletim sistemleri, bir programın adres alanında her zaman aynı konuma yüklenmediği ve işaretçilerin programın temel adres. Bazı iyi bilinen örnekler, IBM'in OS / 360 onların için Sistem / 360 ana bilgisayarlar ve soyundan gelenler dahil z / OS için z / Mimarlık anabilgisayarlar.

OS / 360 ve Türevleri

OS / 360 ve alt sistemlerde, (ayrıcalıklı) işletim sistemi tesisi IEWFETCH olarak adlandırılır,[2] ve OS Süpervizörünün dahili bir bileşenidir, oysa (ayrıcalıklı olmayan) LOADER uygulaması aynı işlevlerin çoğunu ve Bağlantı Düzenleyicisinin işlevlerini gerçekleştirebilir ve tamamen İşletim Sistemi Süpervizörünün dışındadır (kesinlikle birçok Süpervizör hizmetini kullanmasına rağmen) ).

IEWFETCH, son derece uzmanlaşmış kanal programları ve DASD ortamının bir devri dahilinde tüm bir yürütülebilir dosyayı yüklemek ve yeniden konumlandırmak teorik olarak mümkündür ("eski" 3.600 rpm sürücülerde yaklaşık 16.6 ms maksimum, 8.3 ms ortalama). Bir parça boyutunu aşan yükleme modülleri için, ortamın bir devrini kaybetmeden tüm modülü yüklemek ve yeniden konumlandırmak da mümkündür.

IEWFETCH ayrıca üst üste bindirme yapıları adı verilen ve minimum bellek modelinde (işletim sisteminin bazı sürümlerinde 44 KB kadar küçük, ancak 88 KB ve 128 KB daha yaygındır) potansiyel olarak çok büyük yürütülebilir dosyaları çalıştırmayı kolaylaştıran olanakları da içerir.

İşletim sistemleri çekirdek (Süpervizörün her zaman ikamet eden bölümü) kendisi, IEWFETCH'in basitleştirilmiş bir sürümüyle uyumlu olacak şekilde biçimlendirilir. Normal çalıştırılabilir dosyaların aksine, işletim sisteminin çekirdeği "dağılım yüklüdür": çekirdeğin bazı kısımları belleğin farklı bölümlerine yüklenir; özellikle, bazı sistem tablolarının ilk 64 KB'nin altında kalması gerekirken, diğer tablolar ve kodlar başka bir yerde bulunabilir.

Sistemin Bağlantı Düzenleyici uygulama IEWL olarak adlandırılır.[3] IEWL'nin ana işlevi, kitaplıklara "otomatik çağrılar" (üst düzey dil "yerleşik işlevler") dahil olmak üzere yükleme modüllerini (yürütülebilir programlar) ve nesne modüllerini (örneğin, derleyiciler ve derleyicilerden gelen çıktılar) bir formatta ilişkilendirmektir. IEWFETCH tarafından en verimli şekilde yüklenebilir. Çok sayıda düzenleme seçeneği vardır, ancak geleneksel bir uygulama için bunlardan yalnızca birkaçı yaygın olarak kullanılmaktadır.

Yükleme modülü formatı, bir ilk "metin kaydı", ardından hemen o metin kaydı için "yeniden konumlandırma ve / veya kontrol kaydı", ardından metin kaydı ve yeniden konumlandırma ve / veya kontrol kaydı çiftlerinin daha fazla örneğini, sonuna kadar içerir. modül.

Metin kayıtları genellikle çok büyüktür; IEWFETCH'in üç yer değiştirme ve / veya kontrol kaydı arabelleği 260 bayta sabitlendiğinden yeniden konumlandırma ve / veya kontrol kayıtları küçüktür (daha küçük yeniden konumlandırma ve / veya kontrol kayıtları kesinlikle mümkündür, ancak 260 bayt mümkün olan maksimumdur ve IEWL bu sınırlamayı sağlar gerekirse, bir sonraki metin kaydından önce ek yer değiştirme kayıtları eklenerek uyulur; bu özel durumda, kayıtların sırası şunlar olabilir: ..., metin kaydı, yeniden konumlandırma kaydı, ..., kontrol kaydı , metin kaydı, ...).

Yeniden konumlandırma ve / veya kontrol kaydı tamponu içindeki özel bir bayt, "devre dışı bit dönüşü" iletişim alanı olarak kullanılır ve benzersiz bir değerle başlatılır. Bu yeniden konumlandırma ve / veya kontrol kaydı için CCW Oku, Program Kontrollü Kesme bit setine sahiptir. İşlemci, CCW'ye kanal tarafından özel bir IOS çıkış. Bu noktada işlemci "devre dışı bırakılmış bit döndürme" döngüsüne girer (bazen "dünyadaki en kısa döngü" olarak adlandırılır). Bu bayt başlatılmış değerinden değiştiğinde, CPU bit dönüşünden çıkar ve yeniden konumlandırma ve / veya kontrol kaydı ile sonraki metin kaydı arasındaki ortam içindeki "boşluk" sırasında yeniden konumlandırma gerçekleşir. Yeniden konumlandırma bir sonraki kayıttan önce biterse, Okumayı izleyen NOP CCW bir TIC olarak değiştirilecek ve yükleme ve yeniden konumlandırma sonraki arabelleği kullanarak devam edecektir; aksi takdirde kanal, başka bir özel IOS çıkışı aracılığıyla IEWFETCH tarafından yeniden başlatılana kadar NOP CCW'de duracaktır. Üç arabellek sürekli bir dairesel sıradadır, her biri bir sonrakini gösterir ve sonuncusu birinciyi gösterir ve üç arabellek, yükleme ve yer değiştirme ilerledikçe sürekli olarak yeniden kullanılır.

IEWFETCH, böylelikle, herhangi bir pratik boyuttaki bir yük modülünü mümkün olan minimum sürede yükleyebilir ve yerini değiştirebilir.

Dinamik bağlayıcılar

Dinamik bağlantı yükleyiciler yükleyen ve bağlayan başka bir yükleyici türüdür paylaşılan kitaplıklar (sevmek .so dosyaları veya .dll dosyaları ) önceden yüklenmiş çalışan programlara.

Ayrıca bakınız

Referanslar

  1. ^ "exec". Açık Grup Temel Özellikleri Sayı 6, IEEE Std 1003.1, 2004 Sürümü. Açık Grup. Alındı 2008-06-23.
  2. ^ IBM Corporation (1972). IBM OS MVT Supervisor (PDF).
  3. ^ IBM Corporation (1972). IBM OS Linkage Editor ve Loader (PDF).