Upload
others
View
31
Download
0
Embed Size (px)
Citation preview
YZM 3102
İşletim Sistemleri
Uygulama
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi
Hasan Ferdi Turgutlu Teknoloji Fakültesi
Yazılım Mühendisliği
BÖLÜM - 3
Bu laboratuvarda,
• Proses görüntüleme
• Proses yaratma
• Proses sonlandırma
gerçekleştirilecektir.
2Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
ps Komutu Kullanımı
ps komutunu parametre vermeden kullandığımızda
• terminal (bash) ve
• çalıştırdığımız ps
Olmak üzere iki proses görürüz.
3Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
ps Komutu Kullanımı (devam…)
Tüm aktif prosesleri tüm bilgileri ile listelemek istersek
• ps -el
4Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
ps Komutu Kullanımı (devam…)
Tüm aktif prosesleri istediğimiz bilgilerini seçmek için
• ps –e –o uid,pid,ppid,cmd
5Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
Proses Sistem Çağrıları
6Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
• getpid
• getppid
• fork
• exit
• wait
Örnek1: Proses Id Alma
7Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
• Derleyelim ve çalıştıralım.
• Sonra arka arkaya
birkaç kez çalıştıralım.
Örnek1: Proses Id Alma (devam…)
8Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
• Proses listesi çekelim (Terminalde Open Tab ile yeni
tab açalım), kendi prosesimizi göremiyoruz. Neden?
Derleyelim, çalıştıralım ve listeleyelim.
fork() Sistem Çağrısı
9Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
• Prosesin tam bir kopyası oluşur (pid hariç).
• Parent’ın code, veri, stack, açık dosya
tanımlayıcıları ve sinyal tablosunu kopyalar.
• Farklı bellek alanına ve stack’e sahip olsalar da
her iki proses de aynı kod bloğu üzerinde
concurrent olarak çalışmaya devam ederler.
Örnek2: fork() ilk kullanım
10Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
Derleyelim ve çalıştıralım.
Örnek2: fork() ilk kullanım (devam…)
11Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
İki Soru:
1. Neden 2 tane printf() sonucu da yazıldı?
2. Neden terminalde bir kez daha enter’a
basmam gerekti ve aşağıdaki karmaşık
durum oluştu?
Örnek3: fork() full kullanım
12Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
Derleyelim ve çalıştıralım.
Örnek3: fork() full kullanım (devam…)
13Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
• Parent proses (3450) child’dan (3451) önce ölmüş.
Child öksüz kalmış (orphan) ve yeni parent olarak
init(1)’i seçmiş. Bu durumu önleyelim, child
sonlanmadan parent sonlanmasın?
Örnek3: fork() full kullanım (devam…)
14Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
Derleyelim ve çalıştıralım.
exec() Sistem Çağrısı
15Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
• Aktif prosesin bellek alanına yeni programı
yükleyerek, aslında bir şekilde yeni programın
çalıştırılmasını sağlar.
• fork() ve exec() genelde birlikte çalıştırılırlar.
• Örneğin child proses bloğunda aşağıdaki kod
eklenerek, yeni prosesin dosyaları listelemesi
sağlanabilir.
execlp("/bin/ls","ls",NULL);
Örnek3: fork() full kullanım + exec()
16Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
Derleyelim ve çalıştıralım.
Örnek3: fork() full kullanım + exec()
17Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
• Child exec ile birlikte başka bir programı
yükledi.
• Child ekrana listeleme işini yaptı.
• İşini bitirince kendi kendine terminate oldu.
• Child proses artık Parent kod bloğunda
çalışmadığı için ekrana,
• …. TERMINATES yazmadı.
18
İYİ ÇALIŞMALAR…
Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri
Yararlanılan Kaynaklar
19
• Ders Kitabı:
• Operating System Concepts, Ninth Edition, Abraham
Silberschatz, Peter Bear Galvin, Greg Gagne
• Yardımcı Okumalar:
• İşletim Sistemleri, Ali Saatçi
• Şirin Karadeniz, Ders Notları
• İbrahim Türkoğlu, Ders Notları
Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri