Programları kabuktan çalıştırdığınız zaman ne olur?

Kabuk, girmiş olduğunuz komutlar için Unix'in yorumlayıcısıdır; kabuk diye çağırılmasının sebebi işletim sistemi çekirdeğini sarıyor ve gizliyor olmasıdır. Unix'in önemli bir özelliği; kabuğun ve çekirdeğin sistem çağrılarının küçük bir kısmı ile iletişim kuran ayrı programlar olmasıdır. Bu durum, arayüzlerde farklı tatlar sağlayan çoklu kabuğu mümkün kılıyor.

Giriş yaptıktan sonra, normal kabuğun vermiş olduğu '$' bilgi ekranını görürsünüz (başka birşey olacak şekilde özelleştirmediyseniz). Ekranda görebileceğiniz kabuk sözdizimi ve kolay şeylerden bahsetmeyeceğiz; onun yerine bilgisayarınızdaki görüntünün arkasındaki kısım olan sahne arkasına bakacağız.

Önyükleme anından sonra ve bir program çalıştırmadan önce bilgisayarınızı, birşeyler yapmak için bekleyen süreçlerden oluşan bir hayvanat bahçesi olarak düşünebilirsiniz. Bunların tümü olaylara hizmet vermek için beklerler. Bir olay bir tuşa basmanız veya fareyi hareket ettirmeniz olabilir. Ya da eğer makineniz bir ağa takılmış durumda ise, ağ üzerinden bir veri paketinin gelmesi de bir olay olabilir.

Çekirdek bu süreçlerden biridir. Özel bir tanesidir, çünkü diğer süreçler çalışabilirliğini o kontrol eder ve doğal olarak makinenin donanımına direk erişebilen tek süreç çekirdektir. Aslında, kullanıcı süreçleri klavye girişi almak, ekranınıza yazmak, diskten okuma ve yazma yapmak ya da bellekteki bitleri tek tek hesaplamak dışında herhangi birşey yapmak istediğinde, çekirdekten istekte bulunmak zorundadır. Bu istekler sistem çağrıları olarak bilinirler.

Genelde, tüm giriş/çıkış'lar çekirdek üzerinden yürür, böylelikle çekirdek işlemleri planlayabilir ve süreçlerin birbirinin üzerine çıkmasına engel olur. Genellikle giriş/çıkış portların direk erişim verilerek birkaç özel kullanıcı sürecinin çekirdeği es geçmesine izin verilmiştir. X sunucuları (çoğu Unix makinelerinde ekran grafiklerini oluşturmak için öteki program isteklerini idare eden programlardır) bunun en genel örneğidir. Ancak henüz bir X sunucumuz yok; şu an komut satırına bakıyor durumdasınız.

Kabuk yalnızca bir kullanıcı sürecidir ve bilhassa özel bir süreç değildir. Klavye giriş/çıkış portlarını dinleyerek (çekirdek vasıtasıyla) tuş darbelerini bekler. Çekidek bunları görecek olursa, ekranınıza yansıtır. Eğer çekirdek bir 'Enter' gördüğü zaman, metninizin satırını kabuğa geçirir. Kabuk da bu tuş darbelerini komut olarak yorumlamaya çalışır.

Diyelim ki Unix dizin listeleyicisini çağırmak için 'ls' yazdınız ve 'Enter'a bastınız. Kabuk, sizin /bin/ls dosyası içindeki komutları çalıştırma isteğinizi anlamak için kendisiyle tümleşik kuralları uygular. /bin/ls'yi bir alt süreç olarak başlatmak ve çekirdek vasıtasıyla ekrana ve klavyeye erişim izni vermek için çekirdeğe bir sistem çağrısı yapar. Daha sonra kabuk, ls'nin bitmesi için bekleyerek uykuya geçer.

/bin/ls bittiği zaman, çekirdeğe bir sistem çağrısı yayarak bittiğini söyler. Daha sonra çekirdek kabuğu uyandırır ve çalışmaya devam edebileceğini söyler. Kabuk başka bir bilgi sistemi yayınlar ve başka bir giriş satırı için bekler.

Bununla birlikte 'ls' çalıştığı sırada başka şeyler çalışıyor olabilir (çok uzun bir dizin listelediğinizi farzetmek zorundayız). Başka bir sanal konsol açabilir, giriş yapabilir ve bir Quake oyununa başlayabilirsiniz örneğin. Ya da, Internet'e takıldığınızı farzedin. /bin/ls çalıştığı sırada, makineniz posta gönderiyor veya alıyor olabilir.