İşletim Sistemlerinde Proses Kavramı

advertisement
İşletim Sistemlerinde Proses Kavramı
Kaan Aslan
21 Şubat 2006
Program çalıştırılabilen bir dosyanın diskteki durumunu ya da kaynak kodu
belirtmek için kullanılan bir terimdir. Çalışmakta olan programlara proses denir.
İşletim sistemi çalıştırdığı programların kullandığı kaynakları çeşitli tablolar
oluşturarak izler. Program belleğin neresine yüklenmiştir, hangi dosyaları
kullanmaktadır, ne kadar süredir çalışmaktadır? Buna benzer pek çok temel
sorunun yanıtı işletim sistemi tarafından bilinmek zorundadır.[1]
Her işletim sistemi prosesleri izlemek için o prosese ilişkin bilgileri çeşitli veri
yapılarında tutar. Biz kitabımızda işletim sistemlerinin prosesleri izlemek için
oluşturduğu veri yapısına proses tablosu diyeceğiz. Proses tablosu yerine değişik
sistemlerde başka isimlerin kullanıldığına tanık olabilirsiniz. Örneğin başka
kaynaklarda proses tablosu yerine proses kontrol bloğu (process control block) ya da
process veritabanı (process database) gibi isimlerle karşılaşırsanız şaşırmayınız.
Proses tablolarının gerçek veri yapısı sistemler arasında farklılık gösterse de genel
hatlarıyla birbirlerine benzer. Örneğin, prosesin yetkisel hakları, prosesin açmış
olduğu dosyalara ilişkin bilgiler, prosesin çalışma süresine ilişkin istatistikler pek çok
işletim sisteminde şu ya da bu biçimde proses tablosunda tutulmaktadır. İşletim
sistemleri tüm proseslerin proses tablolarını belli bir düzen içerisinde (örneğin tipik
olarak bağlı listeler biçiminde) tutar. Böylece işletim sistemi gerektiğinde tüm
prosesleri gözden geçirebilir, herhangi bir proses üzerinde işlem uygulayabilir.
POSIX sistemlerindeki ps kabuk programı sistemdeki proseslere ilişkin bilgileri
almakta kullanılır. Aşağıda örnek bir ps çıktısını görüyorsunuz:
Çalışmakta olan bir program başka bir programı çalıştırabilir. Başka bir deyişle bir
proses başka bir prosesi yaratabilir. Örneğin siz UNIX türevi bir sistemde ya da
Windows’da komut satırından bir programı çalıştırdığınızda aslında çalıştırdığınız
programı siz değil komut satırı programı (örneğin UNIX türevi sistemde bash gibi bir
kabuk program, Windows’da cmd.exe) çalıştırmaktadır. Siz yalnızca çalıştırılacak
programı belirlemektesiniz. Ya da IDE kullanarak bir program yazıp çalıştırdığınızı
düşünün. Bu durumda da programı siz değil aslında IDE çalıştırıyor durumdadır.
Bir prosesin başka bir prosesi oluşturması durumunda oluşturan prosese üst
proses (parent process), yeni oluşturulan prosese ise alt proses (child process) denir.
Örneğin, disk üzerinde a ve b isimli iki çalıştırılabilir program dosyası bulunuyor
olsun. Biz kabuk üzerinden a programını çalıştıralım. Çalışmakta olan a programı da
1
Kaan Aslan Makale Arşivi – www.kaanaslan.net
b programını çalıştırıyor olsun. Bu durumda a prosesi b prosesinin üst prosesi, b
prosesi de a prosesinin alt prosesidir. UNIX/Linux sistemlerinde prosesler arasında
her zaman altlık-üstlük (parent-child) ilişkisi vardır. a prosesini çalıştırmakta
kullandığımız kabuk da aslında bir prosestir. Bu durumda a prosesinin üst prosesi de
kabuktur. a programı b programını çalıştırdıktan sonra bir de c programını çalıştırsa b
ile c prosesleri kardeş prosesler olacaktır.
Kabuk prosesi ve init prosesi nasıl yaratılmaktadır? Bu soruların yanıtlarını
proseslerin ayrıntılı bir biçimde incelendiği 4. Bölümde bulacaksınız. Şimdilik
proseslerin birbirlerini yaratabildiğini ve init prosesi dışında her prosesin bir üst
prosesi olduğunu bilmeniz yeterlidir. Ayrıca, UNIX/Linux sistemlerinde proseslerin
yaratılmasıyla programların çalıştırılması iki ayrı işlem olarak gerçekleştirilmektedir.
Prosesler arasındaki altlık-üstlük ilişkisinin anlamı nedir diye merak edebilirsiniz.
Alt proses (İngilizcesiyle çocuk proses) yaratılırken , üst prosesten (İnglizcesiyle
ebeveyn proses) bazı özellikleri almaktadır. Pek çok işletim sisteminde prosesin
erişim hakları, çalışma dizini (current working directory), dosya betimleyicileri, çevre
değişkenleri yaratım sırasında üst prosesten alt prosese aktarılır. Alt proses aktarılan
özellikleri daha sonra değiştirmeden kullanabilir ya da değiştirebilir. Windows
sistemlerinde altlık-üstlük ilişkisi UNIX/Linux sistemlerinden daha zayıftır. Yani göreli
olarak daha az özellik alt prosese aktarılır.
Prosesler arasında altlık ve üstlük ilişkisi olduğuna göre kabuk prosesinin de bir
üst prosesi var mıdır? Yani kabuk programı da başka bir program tarafından
çalıştırılmış mıdır? UNIX/Linux init denilen bir prosesten yaratılmıştır. Kabuk
prosesinin üst prosesi init olmasa da prosesleri bir ağaç biçiminde gösterirsek bu
ağacın en tepesinde init prosesinin bulunduğunu söyleyebiliriz. sistemlerinde her
proses doğrudan ya da dolaylı olarak init prosesinden yaratılmıştır.
2
Kaan Aslan Makale Arşivi – www.kaanaslan.net
[1]
İnglizce process terimi ile task terimi tamamen aynı anlamda kullanılmaktadır.
3
Kaan Aslan Makale Arşivi – www.kaanaslan.net
Download