İşletim Sistemlerinde Process Kavramı -3

İŞLETİM SİSTEMİNDEKİ PROCESSES (İŞLEMLER)


Processes ( İşlemler ) ne içermelidir ?
-Program Sayacı(Program Counter),
-Yığın(Stack),
-Veri Bölümü (Data Section)

Işlem Durumu

Bir işlem çalıştırılırken durumunu değiştirir.
yeni(new) : İşlem oluşturuldu
çalışıyor(running): İşlem komutları çalıştırılıyor.
bekliyor(waiting): İşlem olayın gerçekleşmesini bekliyor.
hazır(ready): İşlem bir işlemciye atanmayı bekliyor.
sonlandırılmış(terminated): İşlem çalışmayı bitirmiş



İşlem Kontrol Bloğu(PCB)

Herhangi bir işlem ile ilişkili bilgiler (Process Control Block.)

-İşlem Durumu
-İşlem sayacı
-CPU zamanlama bilgileri
-I/O Durum Bilgileri
-Hafıza Yönetim Bilgileri



İşlem Zamanlama Kuyrukları

İş Kuyruğu(Job Queue) :
Sistemdemi Tüm İşlemlerin Kümesi
Hazır Kuyruğu(Ready Queue): Ana hafızadaki, tüm işlemlerin kümesi – çalışmaya hazır veya çalıştırılmayı bekleyen
Cihaz Kuyrukları ( device queues) : Bir I/O cihazını kullanmayı bekleyen işlemler kümesi.

NOT: İşlemler değişik kuyruklar arasında geçişler yapar.


Zamanlayıcılar

Zamanlayıcılar iki kısımda incelenir Uzun Vadeli (Long Term) ve Kısa Vadeli ( Short Term.)

Uzun Vadeli Zamanlayıcılar(Long-term Scheduler)
-Job Scheduler yani iş zamanlayıcısı olarak da adlandırılabilir
-Hangi işlemlerin hazır kuyruğuna alınması gerektiğine karar verir.

Kısa Vadeli Zamanlaycılar (Short-Term Scheduler)
-CPU Zamanlaycısı olarak da bilinir
-Sıradaki hangi işlemin CPU tarafından çalıştırılacağının kararını verir.
-Kısa vadeli zamanlayıcılar çok sık çalıştırılır.Bu nedenle çok hızlıdır.
-Uzun vadeli zamanlayıcılar ise çok sık çalıştırılmaz. Bu nedenle yavaş olabilir
-Uzun vadeli zamanlayıcı çokluprogramlamanın (multiprogramming) seviyesini kontrol ede.

İşlemler aşağıdaki gibi iki kategoriye ayrılabilir;

I/O Ağırlıklı İşlemler:
CPU üzerinde kısa süreli işlemler yaparlar. Çoğunlukla zamanları I/O işlemleri yaparak geçer.
CPU ağırlıklı işlemler (CPU-bound Process)  : Zamanlarının çoğunu CPU üzerinde uzun işlemler yaparak geçirirler. I/O da yaptıkları işlemler yok danecek kadar azdır.

Ortam Değişikliği (Context Switch)

CPU başka bir işleme geçerken, sistem eski işlemin durumunu kayıt edimeli ve bu kayıt işleminden sonra yeni işlemin kaydedilmiş durumunu yüklemelidir.
Bir işlemin ortamı (Context.) Process Control Block(PCB) de tutulur
Ortam değişikliği için zaman harcanır. Ve bu da ek yüktür. Çünkü değişim sırasında işlemci kullanıcının işine direk yarayan bir iş yapmamaktadır.
Harcanan zaman donanım desteğine göre değişebilir.
-İşlemci anlık olarak (CPU) tek bir işle uğraşabilir
-Fakat işletim sistemi özelliğine göre ; aynı anda birden fazla iş çalıştırılıyormuş gibi hissetirme mümmkündür.
-Anlık olarak tek process çalıştırıp;birden fazla iş yapıyormuş gibi gösteren yapı; çok görevlilik(multi tasking) olarak adlandırılabilir.
-İşte bu prosesler arasındaki geçişin adı Context Switch olarak adlanıdırılır.

İşlem Oluşturma
Ana işlem (Parent Process) ve çocuk işlemleri (Children Processes) oluşturulur.
UNIX ‘te fork sistem çağırısı yeni bir işlem oluşturulur. EXEC sistem çağrısı, fork system çağırısı ile yeni bir işlem oluşturulduktan sonra işlemin hafıza alanına yeni bir program yüklemek için kullanılır.(Örnek olarak verilebilir.)


-İşlemler son komutlarını çalıştırdıktan sonra iletim sistemine kendilerini silmelerini isterler. Bu durum EXIT olarak adlandırılır.
-İşlemin dönüş değerinin çocuktan ana işleme döndürülmesi (Wait)
-Ana işlem çocuk işlemlerin çalışmasını sonlandırırsa (Abort.)
-Tüm çocuk işlemlerin sonlandırılması (Peşpeşe –Cascading sonlandırma)

İşlemler Arası İletişim

Bir sitemdeki işlemler bağımsız(independent) ya da işbirliği yapıyor(Cooperating) durumda olabilir.
Bilgi paylaşımı, İşlem Hızını arttırmak, Modulerlik sağlamak için işbirliği yaparlar.
İşbirliği yapan işlemler (İşlemler arası iletişime) IPC ihtiyaç duyarlar.
IPC’nin iki modeli vardır;
-Shared Memory
-Message Passing

Üretici – Tüketici Problemi

Üretici(Producer) bilgi üretirken; tüketici(consumer) işlem üretilen bilgiyi tüketir.

Tampon Bellek Kullanımı

1-) Sıfır Kapasite -0 mesaj. Gönderici alıcıy beklemedilir. Randevu sistemi
2-) Sınırlı Kapasite – n mesajı alacak şekilde sınırlı kapasitelidir. Gönderici balantı kapasitesi dolu ise beklemeleidir.
3-) Sınırsız kapasite – Gönderi asla beklemez.

Özetle;

Time-sharing : Aynı anda birden fazla işlem çalıştırmayı sağlamaktadır.

MultiProgramming Programlama:
birden çok processin Concurrently(eş zamanlı) bir biçimde çalıştırılmasına denir. Burada çok önemli bir nokta var. Multiprogramming Tek işlemcili sistemler için söz konusu. Yani bir yerde multiprogramming varsa orada tek işlemci vardır.

Not: Hafıza Yüklenir => Sırada Bekler => Çalışma Durumuna Geçer => Waiting => Running => Terminated.   (Her işlem başlar ve terminated edilir. )

Not:
Process Control Block işlemin künyesidir. İşlemin durumu , geçmiş bilgileri ve hangi state’de olduğu bilgisini tutar. İşletim sistemi bu künyeye bakınca eçmişi hakkında bilgi sahibi olur.

Process State: Running,waiting,ready,terminated, new durumları
Process Number: Şu anki hangi process de çalışıldığını gösterir.
Program Counter: Sonraki işlenecek olan satırı tutar.
Memory Limits: Kullanılacak bellek miktarı, sınırı denilebilir.


Notlar

-Queeler Process Control Blockta beklerler. Yani künyelerde beklerler.
-Bekleme yerleri; Ready Quee’dir
-Ready Quee’de bekleyen CPU’ya gidecektir.
-CPU’dan çıkma yolu ise terminated olmasıdır.
-CPU’da ya terminated edilip Process bitecek ya da IO devicelera gidecektir. Wait statusune de düşebilir.

Short Term Scheduler : Hafızadan alınır, ready Quee’de alışır. CPU’da fazla kalması istenmez. Email kontrolü örnek olarak verilebilir. Çok uzun çalışmaz.
Long Term Scheduler : Saatlerce sürebilir. Bu süreç esnasında Tüm Ram Proses için ayrılır.
Swapping : Diski Ram gibi kullanmak
Context Switch: Bir CPU da prosesin durumunu kaydedip başka prosesesin çalışma durumudur. Process; Process Block Controller içerisinde gerçekleşir.

Proses Süreç Akışı

Diskten Alınır => Ram’e gider => Ready Quee’de bekletilir. => Children Processes ler paylaşır => Process ağacında ID ile beklerler.

Not: Chrome Browser’da her bir tab ayrı bir prosestir.

Özetle;

  • İlk sistemler interaktif olmayan sistemlerdir , batch mantığı ile çalışmaktadır.
  • Kullanıcının işletim sistemine operatör olmadan erişebilmesini sağlayan yapılara geçilmek istenmiştir. Multitasking olarak çalışma esas alınmıştır. Kullanıcı programlarına task adı verilmiştir. Job,Task ve Process aynı anlama gelmektedir.
  • Proses bir programın çalışan halidir. Program dizininde duran kısmıdır. Ama bunu çalıştırmak için Ana belleğe getirmek gerekir. Ana belleğe getirilmediği sürece bu program çalıştırılamaz. Disk biriminde duran programın çalıştırılmak üzere ana belleğe getirilmesi ve o getirilen programlarla ilgili gerekli bilgilerin sunulması sonucunda process oluşturulmaktadır. Aynı anda birden fazla programı çalıştırabilen multiprocessing değildir; multiprogramming’dir. Multiprocessing; aynı anda birden fazla işletim sistemi vardır demektir.
  • Her programın bir kodu vardır. Bu kod kısmı çalışan kısımdır. Buna text adı verilebilir. Programın çalışabilmesi için ; programı oluşturan komutların ard arda işlenebilmesi gerekir. O anda hangi programın çalıştırılması gerektiğini Program Counter gösterir. Her program bir veya birden fazla fonksiyon barındırabilir. Fonksiyonların kendilerine özgü “local” denilen değişkenleri vardır. Ayrıca fonksiyonlara argüman aktarılması gerekir. Bilgileri aktarmak ve fonksiyonun içindeki local değişkenleri kullandığımız alan Stack alanıdır.
  • Memory’nin ihtiyaca bağlı olarak tahsis edildiği noktasında kullanılan Memory alanı heap denilen ; Memory alanından ayrılıyor. Her program Process’e dönüştüğünde bir text,bir data,bir stack ,bir heap ve bir programming alanina sahiptir. Program pasiftir. Ve bu program diskte durabilir,Usb’de durabilir. Ancak programın aksine Process aktiftir. Çünkü program Memory’e aktarılmıştır. Programa ait dosya memory’e alınıp ;heap,stack alanı oluşturulursa o zaman artık o program Process’e dönüşmüş olur. Bir programda n tane Process oluşturulabilir. Aynı anda bir sistemde 3 Web Browser oluşturulmuş olabilir.
  • Bir programda n tane Process oluşturulabilir. Ancak bu Process sadece bir programa ait olabilir. Her programın başlangıç adresi sıfır olarak kabul edilsin. İşletim sisteminin tasarımına göre maksimum bir adrese sahip olabilir. Programın text alanının hemen bitiminde global değişkenler bulunur. Data ağının bittiği yerde heap alanı mevcuttur. Heap alanı yukarıya doğru artış gösterir. Stack alanı ise yukarıdan aşağı doğru azalış gösterir.

Program Process’e dönüştürüldükten sonra; process yaşamı boyunca toplam 5 farklı durumda olabilir.

New,Running,Waiting,Ready,Terminating

New: Prosesin oluşturulması, diskten programın memory’e aktarılması, o program için text,data,heap alanlarının yüklenmesidir. Ve o program için oluşturulan program bilgisinin işletim sistemi tarafından kayıt altına alınmasıdır.
Running: Prosesin aktif olarak çalıştığını göstermektedir.
Waiting: Prosesin bir olayı beklediğini göstermektedir. Bir prosesin üreteceği sonuç vardır onu beklemektedir; veya diskten bir dosyanın tanımlanması, USB’ye birşeyin yazılması ve sonuçlanması.
Ready: Prosesin işlemci beklediğini söyleyen yapıdır. Çalışmak için hazırdır fakat işlemci eksiktir.

Running’den çıkmanın üç tane yolu vardır

1-) Sonlanması

2-) Beklemeye neden olacak işlem ( Giriş çıkış )

3-) Kendisine ayrılan işlemci zamanını dolması

  • Waiting’e gelmenin yolu beklemeye neden olacak bir işin olması gerekir. Giriş çıkış işlemleri buna örnek olarak verilebilir. Giriş çıkış işlemi tamamlandığı takdirde; Waiting’den Ready’e alması gerekir. İşlem hemen Running’e gitmiyor. Running’e gitmek için önce Ready’e alınması gerekir.
  • Proses ile ilgili bilgilerin  tutulduğu yapı Process Control Block olarak adlandırılır. Process’in durumu yani State’yi bu alanda tutulur. Process’in numarası veya ID’si tutulur. Bu tanımlayıcının birbirinden farklı olması gerekir. Ek olarak; Program Counter,Registers gibi alanları da içerisinde barındırır. Memory kullanımında açık olan dosyaların haberleştiği proseslerin; o ana kadar ne kadar işlemci kullandığı , dosyadan ne kadar bilgi okuduğu, kısacası Process’in künyesi bu alanda tutulur.
  • Bir tane işlemci olduğunu varsayalım ; time sharing kullanarak T0 ve T1 anında processlerin çalışması isteniyor. T0 çalışıyor ve bir tane işlemcim var ise T1; Ready’de bekler. Çünkü işlemci bekliyor. Yani işlemcinin kendisine tahsis edilmesini bekliyor. T0 sistem çağrısı olarak belirlenebilir.İşletim sisteminin T0 için bazı işlemleri gerçekleştirmesi gerekir. Yani bir dosyadan bilgi okuması gerekebilir. Bu da işlemci hızına bağlı olarak çalışır. T0 ile ilgili en değerli bilgiler işlemcideki Registers alanındadır. İşlemcinin üzerinde T0’a ait olan bilgileri bir kenara kayıt etmem gerekir. Bunu güvenli olarak kaydedeceğim yer Process Control Block’tur. İşlemci en son hangi durumda kaldıysa o duruma dönmesi gerekir. Process Control Block’ta T1 e ait Program Counter ve Registers bilgileri işlemciye yüklenir. T0 Process’inden T1 Process’ine geçiş gerçekleştiğinde anahtarlama yani Switch işlemi gerçekleşti. T0’a ait Contex’ten T1 ait Context’e geçtiğinde Context Switch yapmış olunur. Ancak bu zaman kaybına yol açabilir.       
  • Normalde Process denildiğinde tek bir komut akışı bulunmaktadır. Programlar başlar ve arka arkaya işler gerçekleştirilir. Ve bu işler sonuçlanır. Bu durumda tek bir iş yani tek bir komut akışı  gerçekleşir. Bu tarz programlara Single Thread adı verilmektedir. Thread ; işlem parçacağı yani komutların arka arkaya işletilmesidir. Bir programa ait komutlar arka arkaya kadar eklendiğinde;thread oluşmaktadır. Single Thread’de o programdaki herşey sıra sıra gerçekleşecektir. Ancak bazı programlar çoklu akışa sahip olabilir. Bu MultiThread olarak adlandırılabilir. Program kendi içinde fonksiyonlardan oluşur ve fonksiyonlar Process’ten daha ufaktır. Ancak Process’in içerisinde yaşamaktadırlar.  
  • Çoğu zamanl MultiThread uygulama yazmak işimizi kolaylaştırabilir. Bir process’in içerisindeki aktif parça için fonksiyon olması gerekir. Her bir Thread için de aynı Process’teki gibi Thread Kontrol Bloğu olması gerekir. Bu kontrol blokları içerisinde de Registers,Program Counter bulunması gerekir.
  • Amaç CPU oranını en az seviyede tutmak ve bunun zaman yönetimini sağlamaktır. Bu yapıda Process Schedular yapısından yararlanılır. Process Scheduler işletim sisteminde her interrupt olduğunda bu Scheduler kendisini yeniler. İşletim sisteminde en fazla çalışan parça Scheduler’dır. İşletim Sistemi her çalıştıktan sonra Scheduler devreye girer.
  • I/O Request’I var ise I/O kuyruğuna gider. Kendine ait süre dolarsa;Ready kuyruğuna gider.
  • İşletim Sistemlerinde 3 tane Scheduler bulunmaktadır. Bunlardan iki tanesi bütün sistemlerde bulunmak zorundadır. Bir tanesi ise (Medium Scheduler)seçimlidir, bütün işletim sistemlerinde yoktur.

Short Term Scheduler : Bir sonraki adımda; işlemci ve kullanıcı Process’i seçen Schedulerdır. Her interrupt oluştuğunda devreye girmesi gerekir.

Long Term Scheduler: Sistemin yüküne bakarak; o anki toplam Process sayısı, memory durumu vs. Yeni bir Process’in başlatılıp başlatılmayacağına karar veren bir schedulerdır. Bu yüzden Long Term scheduler; sistemdeki multi programming program derecesini belirler. Processler iki kategoride düşünülebilir. I/O Band ve CPU Band’dır. I/O Processler bol miktarda giriş çıkış yapan processlerdir. CPU Bandlar ise bol miktarda işlemci kullanan processlerdir.

  • Processler arasında ebeveyn çocuk ilişkisi vardır. İşletim sistemi açıldığında init adı verilen bir process vardır. Bütün processler init processinden doğmaktadırlar.
  • Bir process oluşturmanın en kolay yolu; var olan bir Process’in yapısını almak ve daha sonra içeriğini değiştirmektir.
  • Fork ile sistemler kendisinin kopyasının oluşturulmasını talep edebilir. Fork; iki tane girdi dönüşü olan bir sistem çağrısıdır.
  • Process’in ebeyveni yok ise ; init process’i onun sahibidir. Aslında yapı bu şekilde olmaması gerekiyor. Bu duruma düşen Process’lere zombie adı verilmektedir. Process başladı; arka plana attı fakat execute edip çıktım; bu bir örnektir.
  • Bağımsız process; işi kendi başına yapan processtir.

Kaynakça

Operating System Concepts with Java – 8th Edition



Ders : İşletim Sistemleri( Doç. Dr. Ali Gökhan Yavuz )

Yıldız Teknik Ünviersitesi Bilgisayar Mühendisliği Bilgi Teknolojileri Programı





Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir