YZM 3102 İşletim Sistemleri

Benzer belgeler
Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

PROSESLER. Proses. Proses

Proses. Prosesler 2. İşletim Sistemleri

Bilgisayar İşletim Sistemleri BLG 312

İşlem Yönetimi (Process Management)

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

YZM 3102 İşletim Sistemleri Uygulama

YZM 3102 İşletim Sistemleri Uygulama

İşletim Sistemlerine Giriş

Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009

YZM 3102 İşletim Sistemleri

Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition

YZM 3102 İşletim Sistemleri

İşletim Sistemlerine Giriş

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İŞLETİM SİSTEMLERİ. (Operating Systems)

İşletim Sistemlerinde Çok Prosesli Çalışma

Giriş. geleneksel işletim sistemlerinde her prosesin. aynı adres uzayında birden fazla akış kontrolü gerekebilir

İşletim Sistemleri (Operating Systems)

Bilgisayar İşletim Sistemleri BLG 312

İşletim Sistemlerine Giriş

İŞ SIRALAMA. İş Sıralamanın Amaçları. İş Sıralama Türleri - 1. İş Sıralama. İş Sıralama Türleri - 2

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

ALGORİTMA VE PROGRAMLAMA II

YZM 2116 Veri Yapıları

İŞ SIRALAMA. İş Sıralama 6. İşletim Sistemleri

İşletim Sistemleri (Operating Systems)

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

PROCESS YARATIMI (TEKRAR):

Giriş. İplik Modeli. geleneksel işletim sistemlerinde her prosesin özel adres uzayı ve tek akış kontrolü var.

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Bölüm 4: Threads (İş Parçaları)

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition

YZM 3102 İşletim Sistemleri

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Bölüm 13: Giriş-Çıkış (I/O) Sistemleri

Background (Arka Plan)

YZM 2105 Nesneye Yönelik Programlama

Bilgisayar Sistemlerine Genel Bakış

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition

YZM 3102 İşletim Sistemleri

YZM 2116 Veri Yapıları

YZM 3102 İşletim Sistemleri

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

YZM 2116 Veri Yapıları

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

İŞLETİM SİSTEMLERİNE GİRİŞ. Modern bilgisayar çalışma prensipleri, Von Neumann ın 1945 de geliştirdiği

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

REALTIME LINUX. 3. Linux ve Özgür Yazılım Şenliği Murat Demirten, 16 Mayıs 2004, Ankara

İşletim Sistemleri (Operating Systems)

YZM 3102 İşletim Sistemleri

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

İşletim Sistemlerine Genel Bakış

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BM-311 Bilgisayar Mimarisi

İşletim Sistemlerine Giriş

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

İşletim Sistemleri. İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition

Bölüm 8: Ana Bellek 8.1

ALGORİTMA VE PROGRAMLAMA II

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.

ALGORİTMA VE PROGRAMLAMA II

İşletim Sistemlerine Giriş

Multicore/Multithread Programlama

Yrd. Doç. Dr. Caner ÖZCAN

İŞLETİM SİSTEMLERİ DÖNEMİÇİ SINAVI

Sistem Programlama. (*)Dersimizin amaçları Kullanılan programlama dili: C. Giriş/Cıkış( I/O) Sürücülerinin programlaması

YZM 3102 İşletim Sistemleri

İşletim Sistemlerine Giriş 2. Kaynakların Paylaşımı. Öğr.Gör. Dr. Şirin KARADENİZ

İşletim Sistemi. BTEP205 - İşletim Sistemleri

ALGORİTMA VE PROGRAMLAMA II

BİLGİSAYAR MİMARİSİ. << Bus Yapısı >> Özer Çelik Matematik-Bilgisayar Bölümü

Bilgisayar İşletim Sistemleri BLG 312

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

İŞLETİM SİSTEMLERİ DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

ALGORİTMA VE PROGRAMLAMA I

İŞLETİM SİSTEMLERİ TANIMI

HAFTA 09: CPU Planlama (MİB İş Sıralama-Scheduling)

ALGORİTMA VE PROGRAMLAMA I

Genel Programlama II

YZM 2116 Veri Yapıları

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri

İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Bölüm 7: Kilitlenme (Deadlocks)

PROGRAMLAMAYA GİRİŞ DERS 2

Pointer Kavramı. Veri Yapıları

Yrd. Doç. Dr. Caner ÖZCAN

Kap Temelli Özgür Sanallaştırma Çözümleri

ALGORİTMA VE PROGRAMLAMA II

Call Status. Çağrı İzleme. Uygulaması. CableNet AVAYA Call Status Uygulaması Kullanım Kılavuzu Vers Sayfa 1 / 6

Transkript:

YZM 3102 İşletim Sistemleri 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 bölümde, Proses Kavramı Proses Üzerindeki Bilgiler Proses Durumları Proses Control Block Planlama Kuyrukları Planlayıcılar Proses Yaratma / Sonlandırma / Listeleme konularına değinilecektir. 2

Proses Kavramı Bir prosesi: Çalışmakta olan program (program in execution) olarak (bu tanım, kısa ve eksik de olsa) tanımlayabiliriz. Proses terimi yerine iş, görev, işlem ve süreç (job, task) gibi farklı terimler de sıkça kullanılmaktadır. Bir proses, bir program kodundan çok daha fazlasıdır ve çalıştığı sürece birçok kaynağa ihtiyaç duyar ve birçok bilgiyi barındırır. 3

Proses Üzerindeki Bilgiler Metin bölümü (text section) veya kod bölümü (code section) olarak adlandırılan, program kodlarının bulunduğu bölüm, Bir sonraki işletilecek olan komutu gösteren sayaç ve işlemci kayıtçılarının içeriği olan program sayacı (program counter) bölümü, Fonksiyon parametreleri, geri dönüş değerleri ve lokal değişkenler gibi geçici bilgileri (temporary data) tutan stack (yığın) bölümü, Global değişkenleri tutan veri bölümü (data section), Prosesler çalıştığı sürece kullandığı ve dinamik olarak tahsis edilen bir bellek alanı (heap) bölümü. 4

Proses Üzerindeki Bilgiler (devam ) 5

Proses Üzerindeki Bilgiler (devam ) Program, pasif bir varlıkken (içerisinde bir takım komutlar barındıran disk üzerindeki bir dosyadır çalıştırılabilir dosya executable file), Proses aktiftir. Program, diskten belleğe yüklendikten sonra prosese dönüşür. Bunun için program ikonuna çift tıklanır veya çalıştırılabilir dosyanın ismi CLI dan komut olarak girilir. 6

Proses Durumları Bir prosesin o anki aktivitesine göre ortaya çıkan durumları aşağıdaki gibidir: Yeni - New: Proses yaratıldı. Çalışıyor - Running: Proses komutları CPU da çalıştırıyor. Bekliyor - Waiting: Proses bir olayın gerçekleşmesi için bekliyor. Örneğin bir G/Ç işlemi. Hazır - Ready: Proses bir işlemciye atanmak için hazır ve bekliyor. Bitti - Terminated: Proses çalışmasını bitirdi. 7

Proses Durumları (devam ) Proses durumları işletim sistemlerinde farklılık gösterse de, bahsettiğimiz durumların her OS da mutlaka bir karşılığı vardır. Unutulmaması gereken önemli noktalardan bir tanesi, bir işlemcide bir anda sadece bir proses çalışıyor (running) durumdadır. Diğer taraftan, birden fazla proses, hazır (ready) vebekliyor (waiting) durumunda olabilir. 8

Proses Durumları (devam ) 9

PCB - Process Control Block İşletim sistemindeki her proses içerisinde prosese spesifik bilgiler barındıran PCB (Process Control Block) ile gösterilir. Proses Durumu: Yeni, çalışıyor, bekliyor, hazır veya bitti şeklinde durumlar olabilir. Program Sayacı: Proseste çalıştırılacak bir sonraki komutu gösterir. CPU Kayıtçıları (CPU Registers): İşlemci mimarisine göre kayıtçıların sayısı ve türü değişmektedir. Proseste kullanılan kayıtçıların (AX, BX vb.) sahip olduğu bilgiler ve program sayacı bilgisi bir kesme (interrupt) geldiğinde mutlaka saklanmalıdır. Çünkü kesme sonrası proses kaldığı yerden devam edebilmelidir. 10

PCB - Process Control Block (devam ) CPU Planlama Bilgisi (CPU-Scheduling Information): Proses öncelik (priority) bilgisi, planlama kuyruğuna olan işaretçiler ve diğer planlama parametreleri ile ilgili bilgiler bulunmaktadır. Bellek Yönetimi Bilgisi: İşletim sistemi tarafından kullanılan bellek sistemleri; taban ve limit (tavan) kaydedicileri, sayfa tablosu veya bölüm tablosu gibi bilgileri içermektedir. Hesap Bilgileri (Accounting Information): Proses tarafından kullanılan CPU miktarı ve diğer parametrelerin kulanım zamanlarını içermektedir. G/Ç durum bilgisi: Proses tarafından kullanılan G/Ç aygıtlarının listesi, açılan dosyaların listesi, ağ bağlantıları vb. bilgileri içermektedir. 11

PCB - Process Control Block (devam ) 12

PCB - Process Control Block (devam ) PCB ler prosesleri yönetmek için kullanılır. Örneğin CPU bir prosesten diğer prosese geçiş yaparken PCB kullanılır. 13

PCB - Process Control Block (devam ) P 0 prosesi çalışırken bir interrupt (kesme) veya sistem çağrısı geldiğinde P 0 ın durum (state) bilgisi (program sayacı bilgisi, CPU kayıtçıları vb.) PCB 0 da saklanmalıdır. Daha sonra P 1 prosesine ait durum bilgisi PCB 1 den yüklenir ve CPU yeni prosesi execute etmeye başlar. CPU nun bir prosesten diğerine geçiş işlemi context switch olarak adlandırılır. Sistem, Context switch süresince kullanılamaz olduğu için bu işlemin süresi önemli bir ek yüktür. Switch süresi bilgisayara, bellek hızına register sayısına göre değişkenlik gösterebilir. Tipik olarak birkaç milisaniye sürer. 14

PCB - Process Control Block (devam ) Linux işletim sistemindeki PCB, bir C structure olan ve kernel kaynak kod dizinindeki <linux/sched.h> dosyasında bulunan task_struct ile gösterilir. Aşağıda task_struct a ait bazı üye değişkenleri gösterilmektedir: 15

Proses Planlama(Process Scheduling) Çoklu programlamanın amacı sürekli çalıştırılacak bir proses bulunmasını sağlayarak CPU yu sürekli meşgul (çalışır) tutmaktır. Zaman paylaşımının amacı CPU yu prosesler arasında çok sık şekilde switch (yer değiştirerek) ederek, kullanıcının her programla etkileşimini devam ettirmektir. Bu amaçlara ulaşabilmek için proses planlayıcı (process scheduler) hazır birçok proses arasından uygun bir tanesini CPU execution için seçer. 16

Planlama Kuyrukları (Scheduling Queues) Prosesler sisteme girdiklerinde, tüm proseslerin yer aldığı iş kuyruğuna (job queue) girerler. Ana bellekteki, ready veya wait durumunda olan prosesler, ready queue isimli genelde linked-list türünde tasarlanmış bir listede tutulurlar. Her ready-queue, başlık değişkeni ilk ve son PCB leri gösteren işaretçilere sahiptir. Ready-queue daki her PCB de de bir sonraki PCB yi gösteren işaretçi mevcuttur. 17

Planlama Kuyrukları (Sched. Queues) (devam ) Bir proses CPU da bir süre çalışmışken er ya da geç CPU dan bir süreliğine ayrılır: Kesmeler nedeniyle ayrılabilir. Başka eventin sonucunun bitmesini beklemeye girebilir. Örneğin bir device için I/O talebinde bulunur ve beklemeye başlar. Bir prosesin (P) disk gibi paylaşımlı bir kaynağı kullanma talebinde bulunduğunu varsayalım. Sistemde birçok proses olduğu için disk diğer proseslerin I/O talepleriyle meşgul olabilir ve sonuç olarak, P prosesi disk için beklemeye girebilir. Spesifik bir I/O device için bekleyen proseslerin olduğu listeye device queue adı verilir. Her device a ait bir device queue bulunmaktadır. 18

Planlama Kuyrukları (Sched. Queues) (devam ) 19

Queueing Diagram (Kuyruk Diyagramı) Her kutu, bir kuyruğu ifade etmektedir. İki tip kuyruk: ready queue diğeri de device queue 20

Planlayıcılar (Schedulers) Bir proses, yaratılmasından sonlandırılmasına kadar olan yaşam sürecinde farklı kuyruklarda yer alır. Kuyruklardaki bu prosesler bir şekilde OS tarafından seçilmelidir. İlgili kuyruktaki seçme işlemini ilgili scheduler gerçekleştirir. Long-term Scheduler-LtS (job scheduler): Disk gibi cihazlarda kuyruklanan prosesleri bu havuzdan seçen ve belleğe yükleyen (aslında ready kuyruğuna taşıyan) scheduler türüdür. Short-term Scheduler-StS (CPU scheduler): Çalışmaya hazır olan proseslerden bir tanesini seçerek çalıştırılmasını sağlar. 21

Planlayıcılar (Schedulers) (devam ) Her iki planlayıcı arasındaki temel fark, çalıştırma sıklığıdır. StS çok daha sık ve hızlı şekilde CPU için proses seçmelidir. Genelde bir StS, en az 100 milisaniyede bir kez çalışır. Çalışma süresi çok hızlı olmalıdır. Örneğin: StS 10 milisaniyede karar verirse, 100 milisaniyede bir kez çalıştığını düşündüğümüzde 10/110 = ~%9 bir çalışma zamanı CPU adına boşa geçirilmiş bir zaman olarak düşünülebilir. LtS çok daha yavaş çalışabilir (saniye, dakika). 22

Planlayıcılar (Schedulers) (devam ) Prosesleri I/O-ağırlıklı ve CPU-ağırlıklı olmak üzere ikiye ayırmak mümkündür. I/O-ağırlıklı olanlar, genelde I/O işlemi yapıp, CPU üzerinde hesaplama işlemi gerçekleştirmez. CPU-ağırlıklı olanlar ise tam aksine, neredeyse hiç I/O işlemi yapmazken, genelde hesaplama işlemi gerçekleştirir. LtS in en önemli görevi, her iki proses türünü dikkate olarak iyi bir proses karması (kombinasyonu) seçmesidir (process mix), hem I/O hem de ready kuyruğu boş kalmamalıdır. 23

Planlayıcılar (Schedulers) (devam ) Medium-term Scheduler-Mts: Bellek yönetimi sürecinde gerçekleşir. CPU daki prosesleri alır ve gerektiğinde tekrar CPU ya koyar (swap). Detayları bellek yönetiminde tartışılacaktır. Hızı LtS ve StS arasındadır. 24

Planlayıcılar (Schedulers) (devam ) 25

Prosesler Üzerindeki Operasyonlar OS prosesler üzerinde: Proses Yaratma Proses Sonladırma Proses İzleme ve Yönetme işlerini yönetebilecek mekanizmaya sahip olmalıdır. 26

Prosesler Üzerindeki Operasyonlar (devam ) Genelde tüm işletim sistemlerinde prosesler process identifier (pid) ile tanımlanır ve yönetilirler. Prosesler parent-child ilişkisi içerisinde birbirlerine bağlıdırlar. 27

Prosesler Üzerindeki Operasyonlar (devam ) Tüm UNIX ve Linux OS larda prosesleri listelemek için ps komutunu kullanabiliriz. Örneğin aşağıdaki şekilde bir kullanım sistemdeki aktif olan prosesleri tüm bilgileriyle listelememizi sağlar. ps el 28

Linux Proses Ağacı 29

Proses Yaratma (devam ) Parent proses çalışma süresince children prosesler yaratabilir. Bir child proses yaratıldığında kendi işlerini yapabilmek için kaynaklara (CPU time, bellek, dosyalar, I/O cihazları) ihtiyaç duyacaktır. Bu durumdaki kaynak paylaşımı aşağıdaki gibi üç şekilde olabilir: Parent ve children tüm kaynakları paylaşır. Children parent ın kaynaklarının bir kısmını alabilir. Parent ve children kaynak paylaşmaz. Direk olarak OS tarafından yeni kaynaklar child a atanır. 30

Proses Yaratma (devam ) Parent ve children yaratıldıktan sonraki çalışma durumlarını iki şekilde olabilir: Parent ve children concurrent çalışır. Parent, children terminate edene kadar bekler. Adres alanı (address space) durumlarına da baktığımızda aşağıdaki iki olasılık karşımıza çıkmaktadır: Child proses parent prosesin kopyasıdır (Aynı program ve veriye sahiptir). Child prosese yeni bir program yüklenir. 31

Proses Yaratma (devam ) getpid() ve getppid() Sistem Çağrıları UNIX de aktif prosesin, proses id sini (pid) almak için getpid() ve aktif prosesin Parent pid sini almak için de getppid() sistem çağrıları kullanılır. printf("the process ID is %d\n", (int) getpid()); printf("the parent process ID is %d\n", (int) getppid()); fork() Sistem Çağrısı UNIX de yeni bir proses fork() sistem çağrısı ile yaratılır. Neredeyse yaratıldığı parent 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. 32

Proses Yaratma (devam ) pid_t pid; pid = fork(); if (pid == -1) { printf("fork gerçekleştirilemedi...\n"); exit(1); } if (pid == 0) { printf("i am child \n"); } else { printf("i am parent \n"); } 33

Proses Yaratma (devam ) exec() Sistem Çağrısı 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 çalıştırılarak yeni prosesin dosyaları listelemesi sağlanabilir. execlp("/bin/ls","ls",null); 34

Proses Sonlandırma Çalışan her proses işi bittiğinde kendi kendine sonlanır. Ancak Parent proses bir child proses yarattığında, child prosesten önce sonlanması istenmiyorsa (orphan - öksüz bir proses olmasın), wait() sistem çağrısı kullanılarak önce child prosesin sonlanması beklenir. 35

Proses Sonlandırma (devam ) 36

İYİ ÇALIŞMALAR 37

Yararlanılan Kaynaklar 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ı 38