19
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

Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

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

Page 2: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

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

Page 3: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

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

Page 4: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

ps Komutu Kullanımı (devam…)

Tüm aktif prosesleri tüm bilgileri ile listelemek istersek

• ps -el

4Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri

Page 5: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

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

Page 6: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Proses Sistem Çağrıları

6Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri

• getpid

• getppid

• fork

• exit

• wait

Page 7: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Ö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.

Page 8: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Ö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.

Page 9: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

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.

Page 10: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Örnek2: fork() ilk kullanım

10Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri

Derleyelim ve çalıştıralım.

Page 11: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Ö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?

Page 12: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Örnek3: fork() full kullanım

12Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri

Derleyelim ve çalıştıralım.

Page 13: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Ö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?

Page 14: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Örnek3: fork() full kullanım (devam…)

14Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri

Derleyelim ve çalıştıralım.

Page 15: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

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);

Page 16: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Örnek3: fork() full kullanım + exec()

16Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri

Derleyelim ve çalıştıralım.

Page 17: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

Ö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ı.

Page 18: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

18

İYİ ÇALIŞMALAR…

Celal Bayar Üniversitesi – YZM 3102 İşletim Sistemleri

Page 19: Algoritma ve Programlama I...fork() Sistem Çağrısı Celal Bayar Üniversitesi –YZM 3102 İşletim Sistemleri 9 • Prosesin tam bir kopyasıoluşur(pid hariç). • Parent’ın

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