İşletim Sistemleri Günlüğüm-1 : PROCESS
PROCESS :
Process çalışmakta olan bir programı ifade etmektedir.
Aslında bir program ile Process arasındaki fark da bu noktada meydana gelir.
Program bilgisayar tarafından yapılmasını istediğimiz talimatların hafızadaki
gösterimi olarak düşünülebilir. Process olmadan herhangi bir işlem
gerçekleştiremezler. Process ise bu talimatları gerçekleştiren işlem olarak
düşünülebilir. Ayrıca processler tek bir işlemci (CPU) üzerinde birden fazla
işlemciye sahipmiş gibi işlem yapabilmemize olanak sağlarlar.
Processler arasında “yazılabilen hafıza” paylaşımı yoktur.
Yani bir process başka bir processin işlem yaptığı bir alanda doğrudan doğruya
değişiklik yapamaz/yapmamalı. Processlerin aralarında haberleşmeleri (Inter-Process
Communication (IPC)) için bazı özelleşmiş yapılar kullanılmaktadır. Bu aşamada
senkronizasyon önemlidir ve programcının bunu sağlaması gereklidir.
Senkronizasyonu sağlanmamış bir program önemli problemler çıkarabilir. Ve bu
problemlerin onarılması güçtür. Bunun için processlerin çalışma mantığının
kavranmış olması gereklidir.
Bir program içerisinde ana process işlerken başka bir
process oluşturduğunuzda ana process’in özelliklerine eşdeğer özellikte bir
process meydana gelir. Ancak bütün bu özellikler (Program Counter, Stack
Pointer, Memory Allocation, Open Files) kendine özeldir. Örneğin oluşan yavru
process ana process’in program akışında kaldığı yerden (Program Counter) devam
edecektir. Aynı şekilde ana process de akışını sürdürecektir. (Tabi ki bu
istenmemektedir. Asıl amaç programın parçalara ayrılıp farklı parçalarını aynı
anda başka bir processe yaptırmaktır. Aynı programı iki farklı processin aynı
anda gerçekleştirmesi anlamsız olacaktır. Bu kısımda da çeşitli senkronizasyon
yöntemleri mevcuttur.) Başka bir örnek vermek gerekirse yavru process daha
önceden ana process tarafından oluşturulmuş yerel değişkenlere de sahip
olacaktır. Ancak bu yerel değişkenler yine sadece değişiklik yapan processe
özeldir. Ve değişiklik diğer processleri ilgilendirmeyecektir.
Bir Process'i oluşturmak için UNIX sistemlerde işletim
sisteminden “fork” sistem çağrısı yapılır. Windows’ta aynı işlem
“CreateProcess” kullanarak gerçekleştirilebilir. Bu Sistem Çağrıları (System
Calls) arasında küçük farklar olsa da genel itibariyle aynı işlemi
gerçekleştirirler. UNIX sistemlerde bütün processler birbirinden türer
(parent-child ilişkisi) ve her birinin kökü “init” processine dayanır. Windows
sistemlerinde ise bütün processler hiyerarşik olarak eşittir.
Daha sonraki yazılarımda processlerin CPU kullanım
durumlarından (Process States) ve birbirleri arasında haberleşme için
kullanılan yapılardan (Inter-Process Communication) bahsedeceğim.
Sürçülisan etmişsem affola…
Referans : Modern Operating Systems, Andrew S. Tanenbaum,
Herbert Bos
Yorumlar
Yorum Gönder