28
İŞLETİM SİSTEMLERİ PROSESLER Dr. Mehmet SARIGÜL

İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

İŞLETİM SİSTEMLERİPROSESLER

Dr. Mehmet SARIGÜL

Page 2: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Prosesler

● Günümüz bilgisayarları eş zamanlı olarak bir çok görevi yerine getirmektedir. Modern işletim sistemleri bilgisayar üzerinde çalışan her yazılımı birer proses olarak görür. Kullanıcı bilgisayarını başlattığında birçok proses arkaplanda halihazırda çalışmaya başlar.

● Bir proses arkada mail trafiğini izlerken başka bir proses bilgisayarı virüslerden korumak için sistem taraması yapıyor olabilir. Kullanıcı aynı zamanda tarayıcı programları ile o anda web üzerinde gezinmekte, yada bir CD/DVD yazdırıyor olabilmektedir.

● Bütün bu işlemlerin eş zamanlı başarılı bir biçimde çalışması işletim sisteminin prosesleri doğru bir biçimde yönetmesi ile mümkün olur.

Page 3: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Prosesler

● Birçok prosesin eş zamanlı çalışmasına gereksinim duyulması çok işlemcili sistemlerin ortaya çıkmasına sebep olmuştur.

● İşletim sistemi bir işlemci üzerinde çalışıran prosesi 1/100 sn ya da 1/1000 sn gibi zaman aralıkları ile değiştirir. Bu da kullanıcıya herşeyin aynı zamanda çalıştığı ilüzyonunu yaşatır.

● Çok işlemcili sistemlerde ise birden fazla işlem gerçek anlamda farklı işlemciler üzerinde eş zamanlı olarak çalışmaktadır.

Page 4: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Prosesler

● Proseslerin hangi işlemciyi ne kadar süre kullanacağına karar vermek kullanıcı için zor bir iştir. İşletim sistemi bazı konseptler ile bu konuda en etkili yönetimi sağlamaya çalışır.

Page 5: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Modeli

● Bu modelde bir bilgisayar üzerinde çalışan tüm yazılımlar sıralı bir proses listesi halinde tutulur. Her bir proses için aşağıdaki veriler saklanır: – Program sayacı– Yazmaçlar (Registers)– Değişkenler

Page 6: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Modlei

● Bu konsepte göre her bir proses kendi sanal işlemcisine sahiptir, oysa gerçek işlemci aslında bir çok prosesi hızlı geçişler yaparak ardışıl olarak çalıştırmaktadır.

● Bu hızlı anahtarlama işlemine çoklu programlama adı verilir.

Page 7: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Modeli

● İlk figürde belleğe yüklü 4 farklı program olduğu görülmektedir. Her birinin kendine ait bir akışı vardır ve diğerlerinden bağımsız olarak çalışmaktadır. Her bir program çalışırken onun program sayacı gerçek(fiziksel) program sayacına yüklenerek o programın çalıştırılması sağlanır. Son figürde proseslerin işlemci üzerindeki çalışma durumu görülmektedir.

Page 8: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Modeli

● İşlemci üzerinde prosesler arası geçiş yapılırken yarım kalan prosesin program sayacı belleğe yazılırken yeni prosesin program sayacı fiziksel olarak yüklenir. Her proses işlem yapacak zamana sahip olur ama tek bir zaman anında işlemci üzerinde tek bir proses çalışmaktadır.

Page 9: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Modeli

● Burada fikir aslında şu şekildedir. Bir proses ne olduğundan bağımsız olarak çalıştırılacak kodu, girişi verisi, çıkış verisi ve durumu olan bir yapıdır.

● Bir işlemci birden çok proses arasında proseslerin hangi zamanda ve ne şekilde çalıştırılacağına karar veren bir anahtarlama algoritması kullanılarak paylaştırılabilir.

Page 10: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Yaratma

● Bir proses aşağıdaki durumlarda yaratılır: – Sistem başlangıcı– Bir proses tarafından sistem çağrısı ile başka bir

proses oluşturulması– Kullanıcının talebi ile yeni bir proses oluşturulması– Toplu bir iş akışı başlatılması (batch job)

Page 11: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Yaratma

● UNIX tabanlı işletim sistemlerinde yeni bir proses yaratmak için “fork” sistem çağrısı kullanılır. Bu çağrı çağıran prosesin birebir aynısı olan yeni bir proses oluşturur. Anne ve çocuk proses aynı hafıza imajına, aynı açık dosyalara, aynı çevresel katarlara(string) sahiptir.

● Genellikle çocuk proses “exec” sistem çağrısını çağırıp kendi hafıza imajını değiştirir ve yeni bir program çalıştırır.

Page 12: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Yaratma

● Windows işletim sisteminde ise “CreateProcess” çağrısı ile yeni bir proses oluşturulur. Bu çağrı hem yeni prosesi yaratır hem de ilgili programı belleğe yükler. Bu çağrı çalıştıracağı programı, bazı parametreleri, güvenlik seçeneklerini, kontrol bitlerini, öncelik bilgilerini, pencere bilgilerini ve yeni prosesin işaretçisini içeren 10 tane parametre alır.

● Buna ek olarak Win32 api’si prosesler ve işleyişleri ile ilgili 100den fazla farklı fonksiyon barındırmaktadır.

Page 13: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Prosesin Sonlanması

● Prosesler aşağıdaki konullarda sonlanır:– Normal sonlanma (olağan)– Hatalı sonlanma (olağan)– Ölümcül Hata (olağan dışı)– Başka bir proses tarafından öldürülme (olağan dışı)

Page 14: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Sonlanması

● Normal: Çoğu proses kendilerine atanmış işlemleri bitirdikten sonra sonlanırlar. Sonlanma işleminde işletim sistemine bunu bildirmek için sistem çağrısı yaparlar. Bu sistem çağrısı UNIX için exit(), Windows için exitprocess()’tir.

● Hata: Burada proses bir hata ile karşılaşır ve sonlanır. Program içerisindeki herhangi bir hatadan kaynaklı olabilir.

● Ölümcül hata: Proses ölümcül hata durumuna sebebiyet verdiği için zorunlu olarak sonlandırılır.

● Başka bir proses tarafından sonlandırılma: Bir proses işletim sistemi üzerinden sistem çağrısı kullanarak başka bir prosesi sonlandırabilir.

Page 15: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Hiyerarşisi

● Bazı sistemlerde bir proses yaratıldığında anne proses ve çocuk proses ilişkili bir halde bulunurlar. Çocuk proses kendisi de yeni prosesler oluşturabilir.

● UNIX tabanlı sistemlerde bir proses ve ailesi bir grup oluşturur. Kullanıcı klavye üzerinden bir sinyal yolladığında bu sinyal proses grubunun tüm fertlerine iletilir. Her proses bu sinyali işlemek ya da görmezden gelmek konusunda kendi karar verir.

Page 16: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Hiyerarşisi

● Windows OS’ta bunun aksine böyle bir hiyerarşi yoktur. Tüm prosesler eşittir.

● Yeni bir proses oluşturan anne proses bu prosesin id’sini alır, başka proseslere geçirebilir. Bu da üst alt ilişkisini bozar.

Page 17: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Durumları

● Bir proses 3 farklı durumda bulunabilir: – Çalışıyor (Halihazırda CPU üzerinde çalışıyor)– Hazır (CPU üzerinde çalışmayı bekliyor)– Bloklanmış (Dışarıdan bir olayın gerçekleşmesini

bekliyor)

Çalışıyor

HazırBloklanmış

1 2

3

4

Page 18: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Durumları

● 4 geçiş durumu mümkün olabilir. – 1. Proses giriş beklediği için blok duruma geçer– 2. Zamanlayıcı yeni bir prosesi seçer– 3. Zamanlayıcı bu prosesi seçer– 4. Beklenen giriş gelir.

Çalışıyor

HazırBloklanmış

1 2

3

4

Page 19: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Durumları

● 1. Geçiş proses dışarıdan bir bilgi bekleme durumuna geçtiğinde ve işlemci üzerinde bir işi kalmadığında olur.

● 2. ve 3. geçişler zamanlayıcının anahtarlama durumlarında gerçekleşirler. Zamanlayıcı istediği işlemci üzerindeki prosesi belleğe yazıp hazır durumuna alırken(2) bir diğer prosesi işlemci üzerine alarak çalışıyor duruma geçirir(3). Bu zamanlama işlemlerinin nasıl yapılması gerektiği ile ilgili bir çok farklı zamanlayıcı algoritması bulunmaktadır.

Page 20: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Durumları

● 4. geçiş ise ilgili prosesin beklediği giriş gerçekleştiğinde olur. Bu proses hazır duruma alınır ve zamanlayıcının kendisini işlemci üzerine almasını bekler.

Page 21: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Proses Yönetimi

● İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses için bir kayıt tutulur.

● Bu kayıt üzerinde proses ile ilgili önemli bilgiler tutulur. Bunlar; prosesin durumu, program sayacı, hafıza kaplama durumu, açık dosyaları, işlemci zaman bilgileri ve prosesin işlemesi için gerekli tüm bilgilerdir.

Page 22: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Sistem Programlama

● Bazı konseptleri tam anlayabilmek için bazı kod örneklerine bakılabilir. – Hatalı paralellik– Standart paralellik– Seri paralellik– Katil proses– Zombi proses– Öksüz proses

Page 23: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Hatalı Paralellik

#include <stdio.h>

#include <unistd.h>

main()

{fork();

execl(“hello”, “hello”, NULL , NULL );

printf(“I am parent process.”);

}

Page 24: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Standart Paralellik

#include <stdio.h>

#include <unistd.h>

main()

{int pid = fork();

if (pid==0)execl(“hello”, “hello”, NULL , NULL );

elseprintf(“I am parent process.”);

}

Page 25: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Sıralı Paralellik

#include <stdio.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <stdlib.h>

#include <unistd.h>

main(){pid_t pid;

int status;

pid = fork();

if (pid==0){execl(“hello”, “hello”, NULL , NULL );}

else{waitpid(pid, &status, 0);

printf(“I am parent process.”);}

}

Page 26: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Katil Proses

#include <stdio.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <stdlib.h>

#include <unistd.h>

#include <signal.h>

main(){

pid_t pid;

int status;

pid = fork();

if (pid==0){printf(“I am child process”);

sleep(5);printf(“I woke up”);}

else{kill(pid, SIGKILL);

waitpid(pid, &status, 0);

printf(“I killed my child.”);}

}

Page 27: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Zombi Proses

#include <stdio.h>

#include <sys/types.h>

#include <stdlib.h>

#include <unistd.h>

main()

{pid_t pid;

pid = fork();

if (pid==0)exit(0);

elsesleep(30);

}

Page 28: İŞLETİM SİSTEMLERİ · İşletim sistemi bütün çalışan prosesleri yönetmek için “Proses tablosu” adı verilen yapılardan oluşan bir dizi tutar. Burada her proses

Öksüz Proses

#include <stdio.h>

#include <sys/types.h>

#include <stdlib.h>

#include <unistd.h>

main(){pid_t pid;

pid = fork();

if (pid==0){sleep(5);

printf(“where is my mom?”);}

elseprintf(“I am parent process.”);

}