Hayır, yapışkan bit, set-UID veya set-GID flagları gibi değildi. Kimlik bilgilerinde herhangi bir değişiklik yapılmamıştır.
Yapışkan bit program metnini “yapışkan” yapmaktı. Başlangıçta bir yanlış isim değildi.
arka plan: program görüntüsü bölümleri ve paylaşılan metin
Temel olarak, çalıştırılabilir dosya formatlarının ayrıntılarına fazla girmeden (kitapları doldurabilen ve dolduranlar): Programları çalıştırmak için doğrudan belleğe yüklenen program görüntüsü dosyalarının parçaları, makine kodunu, sabitleri, başlangıcı içerir. sıfır sıfırlanmamış ve başlatılmamış değişkenler için (sıfır olmayan başlatılmış) değişkenlerin değerleri (ve bir biçimde veya başka şekilde) boşluklar.
Bunlar "bölümler" olarak bilinen koleksiyonlar halinde gruplandırılmıştır ve geleneksel adlara sahiptirler. Makine kodu ve (bazen) sabitler, genellikle program görüntüsünün "metin" bölümü olarak bilinen şeyi oluşturur. Sıfırlanmamış sıfır değişkenler, benzer şekilde "veri" bölümüdür; ve sıfır başlatılmış ve başlatılmamış değişkenler "bss" dir (arkasında arkasındaki tüm folklorik geçmişe sahip bir isim).
Bir işlemin içine programlanabilir bir görüntü dosyası yüklendiğinde, çeşitli parçalar - metin, veri ve bss - görüntü dosyasının içeriğinden başlatılır.
"Metin" bölümünün özel özelliği, makine kodunun (ve sabitlerin) neredeyse her zaman yazılmamasıdır. Çalıştırılabilir görüntü dosyasına yüklenmiş tüm yürütme işlemlerinin sanal bellek görüntüleri arasında paylaşılma potansiyeli vardır . Program metninin paylaşılabildiği tam senaryo bu cevap için kapsam dışındadır ve yükleyici onarımı belirsizlik ve adres alanı düzeni kimliği gibi şeyleri içerir. İnsanlar da bu konuda da kitaplar yazmış ve yazmışlardır. ☺
Paylaşılan metin, çekirdek tarafından kullanılan bir optimizasyondur. Tek bir çalışan program görüntüsünün her bir örneğinin kendi bireysel bellek görüntüsüne sahip olma gereksinimini ortadan kaldırır, aynı makine kodunun (ve sabitlerinin) birden fazla kopyasıyla birlikte değerli fiziksel bellek kullanır.
yapışkan metin
Ancak bir kişi hala paylaşılan metinden daha iyisini yapabilir. Açıkçası, belirli bir paylaşılan metin programı görüntüsünü kullanan en az bir işlem yürütülürse, çekirdek programın yeni bir örneği çalıştırıldığında, yeni işlemlerin sanal bellek alanını varolan paylaşılan metin bölümüne eklemek için kullanılır. Bir örneği (diyelim) hemen hemen her zaman var /bin/login
ya /bin/sh
çalıştıran bir yere orta ölçekli bir sistemde, giriş programı ya da sadece çekirdek zaten belleğe yüklendikten onların metin bölümlerinin yüklü kopyalarına ekleyebileceğiniz varsayılan kabuk çok yeni örneklerini.
Yapışkan metin, bu fikri , şu anda hiçbir işlemin çalışmadığı görüntüleri programlamak için genişletir . Yürütülebilir bir görüntü dosyası yapışkan metin olarak işaretlenmişse, çekirdek son kullanımdan sonra metin bölümünü etrafında tutar; umarım programın bir başka örneği de yakında çalıştırılacak ve tekrar segmente eklenebilir.
Unices'in ilklerinde, yüklü yapışkan metin bölümleri, hiçbir işlem eklenmemişse depolamayı değiştirmek için değiştirilirdi. (Daha sonra Unices bunun için takas kullanmayı bıraktı.) Bunu, kaydedilmiş olan addan da duymuş olabilirsiniz .
Elbette, yapışkan metin bitini bir program görüntüsüne ayarlamak, dikkatle yapılması gereken bir şeydir. Hangi programlardan faydalanacağı, makinenin genel olarak ne için kullanıldığına bağlıdır. Ve şu anda eklenmemiş metin bölümleri çekirdek kaynaklarını alır, bu da herhangi bir sistemde kaç kişinin sahip olabileceğine dair pratik bir sınır olduğu anlamına gelir. Bu yüzden genellikle süper kullanıcı ayrıcalıkları gerektiren bir işlemdir.
kullanmama
Yapışkan metnin çalışmasının altında yatan ve artık doğru olmayan bir sürü varsayım var. Önceden yapılmış bir segmentin takas deposundan okunması, gerçek yürütülebilir görüntü dosyasındaki basit talep sayısından daha hızlı olmak zorunda değildir. Dosya sistemi formatları rastgele (sıralı olarak) okuma düzenleri için daha iyi hale geldi. Talep çağrı uygulamasının ortaya çıkışı, birleştirilmiş önbellek, ortak kütüphane araştırmasındaki farklılıklardan kaynaklanan belirsiz dış düzeltmeler ve adres düzenleme düzeni rastgele seçim gibi şeyleri değiştirir.
Yürütülebilir program görüntüleri için yapışkan metin bitlerinin günleri geride kaldı. Örneğin, 1980'lerin ortalarında, 4.3BSD yazarları tarafından çalıştırılabilir program görüntüleri için açık bir yapışkan metin işaretleyici bayrağı kullanılmıyordu.
daha fazla okuma
- Maurice J. Bach (1986). UNIX İşletim Sisteminin Tasarımı . Prentice-Hall. ISBN 9780132017992.