Bakınız: Linux Çekirdeğini Anlamak , 3. Baskı, Daniel P. Bovet, Marco Cesati
- Yayıncı: O'Reilly
- Yayın Tarihi: Kasım 2005
- ISBN: 0-596-00565-2
- Sayfalar: 942
Girişlerinde Daniel P. Bovet ve Marco Cesati şunları söyledi:
Teknik olarak konuşursak, Linux tam bir Unix işletim sistemi olmamasına rağmen gerçek bir Unix çekirdeğidir, çünkü dosya sistemi yardımcı programları, pencere sistemleri ve grafik masaüstleri, sistem yöneticisi komutları, metin editörleri, derleyiciler vb.Gibi tüm uygulamaları içermez. üzerinde. Bu kitapta okuduğunuz ve Linux çekirdeğinde gördükleriniz, diğer Unix varyantlarını da anlamanıza yardımcı olabilir.
Bir sonraki paragraflarda, bakış açınızı "Linux Çekirdeğini Anlamak" bölümünde sunulan ve büyük ölçüde Unix'tekilere benzer gerçeklere dayanarak ele almaya çalışacağım.
Bir süreç ne anlama geliyor? :
Süreçler insan gibidir, üretilirler, az ya da çok önemli bir yaşamları vardır, isteğe bağlı olarak bir ya da daha fazla alt süreç üretir ve sonunda ölürler. Bir işlemin beş temel bölümü vardır: kod ("metin"), veri (VM), yığın, dosya G / Ç ve sinyal tabloları
Çekirdek içindeki bir işlemin amacı, sistem kaynaklarının (CPU zamanı, bellek, vb.) Tahsis edildiği bir varlık olarak hareket etmektir. Bir işlem yaratıldığında, üst öğesiyle neredeyse aynıdır. Üst öğenin adres alanının (mantıksal) bir kopyasını alır ve süreç oluşturma sistemi çağrısını izleyen bir sonraki talimattan başlayarak üst öğeyle aynı kodu yürütür. Ebeveyn ve çocuk, program kodunu (metin) içeren sayfaları paylaşabilse de, verilerin ayrı kopyaları (yığın ve yığın) vardır, böylece çocuk tarafından bir bellek konumuna yapılan değişiklikler ebeveyn tarafından görünmez (ve tersi) .
Süreçler Nasıl Çalışır?
Yürütme programı, bilgisayara ne yapması gerektiğini söyleyen ikili koddan daha fazlasına ihtiyaç duyar. Programın çalışması için bellek ve çeşitli işletim sistemi kaynaklarına ihtiyacı vardır. “İşlem”, çalışması gereken tüm kaynaklarla birlikte belleğe yüklenmiş bir program olarak adlandırdığımız şeydir. İş parçacığı, bir işlem içindeki yürütme birimidir. Bir işlem yalnızca bir iş parçacığından birçok iş parçacığına kadar her yere sahip olabilir. Bir işlem başladığında, belleğe ve kaynaklara atanır. İşlemdeki her iş parçacığı bu belleği ve kaynakları paylaşır. Tek iş parçacıklı işlemlerde, işlem bir iş parçacığı içerir. Süreç ve iplik bir ve aynıdır ve sadece bir şey oluyor. Çok iş parçacıklı işlemlerde, işlem birden fazla iş parçacığı içerir ve işlem aynı anda birkaç şeyi gerçekleştirir.
Çok işlemcili bir sistemin mekaniği, hafif ve ağır süreçleri içerir:
Ağır bir işlemde, birden çok işlem paralel olarak birlikte çalışır. Paralel olan her ağır işlemin kendi bellek adres alanı vardır. İşlemler farklı bellek adreslerine sahip oldukları için süreçler arası iletişim yavaştır. İşlemler arasında bağlam geçişi daha pahalıdır. İşlemler belleği diğer işlemlerle paylaşmaz. Bu işlemler arasındaki iletişim, soketler veya borular gibi ek iletişim mekanizmalarını içerecektir.
Hafif bir süreçte, iplik olarak da adlandırılır. Konular iş yükünü paylaşmak ve bölmek için kullanılır. Konular ait oldukları sürecin hafızasını kullanır. İş parçacıkları arası iletişim, süreçler arası iletişimden daha hızlı olabilir, çünkü aynı işlemin iş parçacıkları, ait oldukları işlemle belleği paylaşır. sonuç olarak iplikler arasındaki iletişim çok basit ve verimlidir. Aynı işlemin iş parçacıkları arasında bağlam geçişi daha ucuzdur. İş parçacıkları aynı işlemin diğer iş parçacıkları ile belleği paylaşır
İki tür iş parçacığı vardır: kullanıcı düzeyi iş parçacıkları ve çekirdek düzeyi iş parçacıkları. Kullanıcı düzeyi evreler çekirdeği önler ve işi kendi başlarına yönetir. Kullanıcı düzeyinde iş parçacığı, tek bir iş parçacığının zaman dilimini tekelleştirebilmesi ve böylece görev içindeki diğer iş parçacıklarını aç bırakması sorununa sahiptir. Kullanıcı düzeyinde iş parçacıkları genellikle kullanıcı alanında çekirdeğin üzerinde desteklenir ve çekirdek desteği olmadan yönetilir. Çekirdek, kullanıcı düzeyinde iş parçacıkları hakkında hiçbir şey bilmez ve bunları tek iş parçacıklı süreçler gibi yönetir. Bu nedenle, kullanıcı seviyesi iş parçacıkları çok hızlıdır, çekirdek iş parçacıklarından 100 kat daha hızlı çalışır.
Çekirdek düzeyindeki iş parçacıkları genellikle çekirdekte çeşitli görevler kullanılarak uygulanır. Bu durumda, çekirdek her iş parçacığını her işlemin zaman dilimi içinde zamanlar. Burada, saat işareti anahtarlama sürelerini belirleyeceğinden, bir görevin zaman dilimini görev içindeki diğer iş parçacıklarından geçirme olasılığı daha düşüktür. Kullanıcı düzeyindeki iş parçacıkları ile Çekirdek düzeyindeki iş parçacıkları arasındaki ilişki tamamen bağımsız değildir, aslında bu iki düzey arasında bir etkileşim vardır. Genel olarak, kullanıcı seviyesi iş parçacıkları dört modelden biri kullanılarak uygulanabilir: çoktan bire, bire bir, çoktan çoka ve iki düzeyli modeller. Tüm bu modeller, kullanıcı düzeyindeki iş parçacıklarını çekirdek düzeyindeki iş parçacıklarıyla eşleştirir ve her iki düzey arasında farklı derecelerde etkileşime neden olur.
Konular ve Süreçler
- Program, programlama kodunun bir metin dosyası olarak başlar,
- Program derlenmiş veya ikili biçimde yorumlanmış,
- Program belleğe yüklenir,
- Program bir veya daha fazla çalışan işlem haline gelir.
- İşlemler tipik olarak birbirinden bağımsızdır,
- İş parçacıkları bir işlemin alt kümesi olarak bulunurken.
- İş parçacıkları birbirleriyle süreçlerden daha kolay iletişim kurabilir,
- Ancak, iş parçacıkları aynı işlemdeki diğer iş parçacıklarının neden olduğu sorunlara karşı daha savunmasızdır
Referanslar:
Linux Çekirdeğini Anlama, 3. Baskı
Fazlası 1 2 3 4 5
...............................................
Şimdi tüm bu terimleri basitleştirelim ( bu paragraf benim bakış açımdan ). Çekirdek, yazılım ve donanım arasındaki bir arabirimdir. Başka bir deyişle, çekirdek bir beyin gibi davranır. Genetik materyal (kodlar ve türev yazılımı) ve vücut sistemleri (yani donanım veya kaslar) arasındaki ilişkiyi manipüle eder.
Bu beyin (yani çekirdek) buna göre hareket eden süreçlere sinyaller gönderir. Bu işlemlerin bazıları kaslar (yani iplikler) gibidir, her kasın kendi işlevi ve görevi vardır, ancak hepsi iş yükünü bitirmek için birlikte çalışır. Bu iplikler (yani kaslar) arasındaki iletişim çok verimli ve basittir, bu nedenle işlerine sorunsuz, hızlı ve etkili bir şekilde ulaşırlar. İpliklerin bazıları (kaslar) kullanıcının kontrolü altındadır (ellerimizdeki ve bacaklarımızdaki kaslar gibi). Diğerleri beyin kontrolü altındadır (midemizde, gözümüzde, kalbimizde kontrol etmediğimiz kaslar gibi).
Kullanıcı-alanı iş parçacıkları çekirdeği önler ve görevleri kendisi yönetir. Genellikle buna "kooperatif çoklu görev" denir ve aslında üst ve alt ekstremitelerimiz gibidir, kendi kontrolümüz altındadır ve işe ulaşmak için birlikte çalışır (yani egzersizler veya ...) ve doğrudan siparişlere ihtiyaç duymaz. beyin. Diğer tarafta, Kernel-Space iş parçacıkları, çekirdek ve programlayıcısı tarafından tamamen kontrol edilir.
...............................................
Sorularınıza yanıt olarak:
Bir süreç her zaman bir veya daha fazla hafif işleme dayalı mıdır? Şekil 3.4 evet diyor. Şekil 3.5 (a) neden işlemleri doğrudan CPU'ların üzerinde gösteriyor?
Evet, iş parçacıkları adı verilen hafif işlemler ve ağır işlemler var.
Ağır bir işlem (buna sinyal iş parçacığı işlemi diyebilirsiniz) işlemcinin yürütülmesini sipariş etmek için daha fazla iş yapmasını gerektirir, bu nedenle Şekil 3.5 (a) işlemleri doğrudan CPU'ların üstünde gösterir.
Hafif bir işlem her zaman bir çekirdek iş parçacığına dayalı mıdır? Şekil 3.4 evet diyor. Şekil 3.5 (b) neden hafif işlemleri doğrudan işlemlerin üstünde gösteriyor?
Hayır, hafif işlemler iki kategoriye ayrılır: yukarıda belirtildiği gibi kullanıcı düzeyinde ve çekirdek düzeyinde işlemler. Kullanıcı düzeyinde işlem, görevlerini işlemek için kendi kütüphanesine dayanır. Çekirdeğin kendisi çekirdek düzeyindeki işlemi zamanlar. Kullanıcı seviyesi iş parçacıkları dört modelden biri kullanılarak uygulanabilir: çoktan bire, bire bir, çoktan çoğa ve iki düzeyli. Tüm bu modeller, kullanıcı düzeyindeki iş parçacıklarını çekirdek düzeyindeki iş parçacıklarıyla eşler.
Çekirdek iş parçacıkları zamanlanabilecek tek varlık mı?
Hayır, Çekirdek düzeyindeki iş parçacıkları, çekirdeğin kendisi tarafından oluşturulur. Çekirdek düzeyindeki iş parçacıklarının sınırlı adres alanı olmaması nedeniyle kullanıcı düzeyindeki iş parçacıklarından farklıdırlar. Sadece çekirdek alanında yaşarlar, asla kullanıcı-toprak alanına geçmezler. Ancak, bunlar normal süreçler gibi tamamen programlanabilir ve önlenebilir varlıklardır (not: önemli çekirdek eylemleri için neredeyse tüm kesintileri devre dışı bırakmak mümkündür). Çekirdeğin kendi iş parçacıklarının amacı esas olarak sistem üzerinde bakım görevleri yapmaktır. Bir çekirdek iş parçacığını yalnızca çekirdek başlatabilir veya durdurabilir. Öte yandan, kullanıcı düzeyinde süreç kendi kütüphanesine bağlı olarak kendini planlayabilir ve aynı zamanda iki seviyeli ve çoktan çok modele (yukarıda belirtilen) dayalı olarak çekirdek tarafından programlanabilir,
Hafif işlemler altta yatan çekirdek iş parçacıklarının zamanlanmasıyla yalnızca dolaylı olarak mı planlanıyor?
Çekirdek iş parçacıkları çekirdek zamanlayıcısının kendisi tarafından denetlenir. Kullanıcı düzeyinde iş parçacığı destekleme, uygulama ile bağlantılı bir kullanıcı düzeyi kitaplığı olduğu anlamına gelir ve bu kitaplık (CPU değil), iş parçacığı için çalışma zamanı desteğindeki tüm yönetimi sağlar. İş parçacığı soyutlamasını uygulamak için gereken veri yapılarını destekleyecek ve bu iş parçacıkları için kaynak yönetimi kararı vermek için gereken tüm zamanlama senkronizasyonunu ve diğer mekanizmaları sağlayacaktır. Şimdi, kullanıcı seviyesi iş parçacığı işlemlerinin bazıları temeldeki çekirdek düzeyi iş parçacıklarıyla eşleştirilebilir ve buna bire bir, bire çok ve çoktan çoğa eşleme dahildir.
Süreçler, temeldeki hafif süreçlerin zamanlanmasıyla yalnızca dolaylı olarak mı planlanıyor?
Ağır veya hafif bir işlem olup olmadığına bağlıdır. Ağır, çekirdeğin kendisi tarafından planlanan süreçlerdir. ışık işlemi çekirdek düzeyinde ve kullanıcı düzeyinde yönetilebilir.