Chapter 3: İşlemler İşletim sisteminde çeşitli işlemler yürütülmektedir. işletim sistemi işlemleri yürütme kullanıcı işlemlerini yürütme. İki tür işlem genelde birlikte yürütülmektedir. CPU işlemler arasında geçiş yaparak, işletim sistemi bilgisayar sistemini daha üretken yapabilmektedir. Bu bölümde işlemler ve nasıl çalıştıkları ele alınacaktır. Operating System Concepts 3.2 Silberschatz, Galvin and Gagne ©2005 Chapter 3: İşlemler İşlem Kavramı İşlem Planlaması (Process Scheduling) İşlemlerin Çalışması İşlem İşbirliği İşlemlerler arası iletişim (Interprocess Communication) Operating System Concepts 3.3 Silberschatz, Galvin and Gagne ©2005 İşlem Kavramı İşlem, bir programın yürütülmesi olarak adlandırılır. İşlemin yürütülesi sıralı bir biçimde olur. İşlemde herhangi bir zamanda sadece bir komut yürütülebilir. Process – a program in execution; process execution must progress in sequential fashion İşlem aşağıdaki içermektedir: program counter (İşlemcide bir sonraki işletilecek komutun ana bellekteki adresi tutan 'register' dır. Stack (yığın), (alt program değişkenleri, dönüş adresleri vb. değerleri içerir) Veri Program tek başına bir işlem değildir. Program sistemin pasif bir parçasıdır. Örneğin diske kaydedilen bir dosya içeriğidir. İşlem ise program sayacının belirttiği komutları yürüten ve bütünleşmiş kaynaklardan oluşan aktif bir parçadır. Operating System Concepts 3.4 Silberschatz, Galvin and Gagne ©2005 Örneğin, Windows işletim sisteminde Word programı, web tarayıcı, e-posta kontrolüne ait programlar aynı anda çalışabilmektedir. İş(job) veye işlem (process) aynı anlamda kullanılmaktadır. Exe bir dosya ya tıklayarak çalıştırmak işlemi başlamaktadır. İşlemler program counter, register, stack, heap(işleme atanan dinamik bellek) alanlarını kullanırlar. Operating System Concepts 3.5 Silberschatz, Galvin and Gagne ©2005 Benzetme Program: derse katılma adımları 1. 2. 3. 4. Mühendislik binasına yürü E-210 sınıfına gir Oturacak bir yer bul Dinle ve not al Process: yukarıdaki programın hayata geçirilmesi = yani, derse katılma işi Eylem Şu anda, bu processin içindesiniz Her saniye değişen bir “durum”unuz (condition) var Aynı programın farklı processleri farklı davranışlar gösterebilir Operating System Concepts 3.6 Silberschatz, Galvin and Gagne ©2005 Bellekte İşlem Operating System Concepts 3.7 Silberschatz, Galvin and Gagne ©2005 İşlem Durumları Bir islemin hangi durumda oldugunu gösteren ve islemin ömrü boyunca degisken bir durumu bulunmaktadır. Bunlar; Yeni: İslemin olusturuldugunu gösterir. Çalısıyor: İslemin komutları yürütülmektedir. Bekliyor: İslem bir olayın gerçeklesmesini beklemektedir. Örnegin bir GÇ islemi. Hazır: İslem bir islemciye atanmak için beklemektedir. Bitti: İslem çalısmasını bitirdi. Operating System Concepts 3.8 Silberschatz, Galvin and Gagne ©2005 İşlem Durumları Operating System Concepts 3.9 Silberschatz, Galvin and Gagne ©2005 İşlem Kontrol Bloğu (Process Control Block , PCB) İşletim sisteminde her işlem, işlem kontrol bloğu ile temsil edilir İşlem Durumu: İşlem yeni başlamış, hazır, yürütülüyor, beklemekte vb. durumlarda olabilmektedir. Program Sayacı: Sayaç, işlem için yürütülmesi gereken bir sonraki komutun adresini gösterir. Mikroişlemci Kayıt Edicileri : Kayıt ediciler bilgisayar mimarisine göre sayı ve çeşit olarak değişebilmektedir. Kayıt ediciler; akümülatör, indeks kayıt edicileri, yığın göstergeci ve genel amaçlı kayıt edicileri kapsamaktadır. Program sayacı sayesinde kesme oluştuğunda durum bilgileri kaydedilerek, sonradan doğru olarak yürütülmesi sağlanmıştır. Operating System Concepts 3.10 Silberschatz, Galvin and Gagne ©2005 Mikroişlemci Programlama Bilgileri: Bu bilgiler , işlem önceliğini, programın sıra göstergecini ve diğer programlama değişkenlerini içermektedir. Bellek Yönetim Bilgileri: Bu bilgiler taban ve limit kayıtçılarının değerlerin, sayfa tablolarını veya işletim sistemi tarafından kullanılan bellek sistemine göre değişen segment tablosunu içerir. Hesaplama Bilgileri: Bu bilgiler, mikroişlemcini kullandığı gerçek zaman sınırlamaları, hesap numaraları, iş ve işlem numaraları gibi bilgileri içerir. Giriş/çıkış durum bilgileri; işlem için ayrılmış giriş/çıkış aygıtlarının ve açık dosyaların listesi gibi bilgileri kapsar. Operating System Concepts 3.11 Silberschatz, Galvin and Gagne ©2005 İşlem Kontrol Bloğu, Process Control Block (PCB) Operating System Concepts 3.12 Silberschatz, Galvin and Gagne ©2005 İşlem/İş Parçacığı(Thread ) İşlemin eş zamanlı olarak işlenen her bir bölümüdür. İ İş parçacığı ve işlem arasındaki fark bir işletim sisteminden iş parçacığının oluşturuluşu ve kaynakların paylaşılmasıdır. Çoğu durumda iş parçacıkları işlemlerin içinde yer alır, onları oluştururlar. Çoklu iş parçacıkları paralel olarak pek çok bilgisayar sisteminde uygulanabilir. İşlemler aynı kaynakları paylaşmazlar (bellek gibi). Fakat aynı işlem içindeki farklı thread ler aynı kaynakları paylaşabilirler. Operating System Concepts 3.13 Silberschatz, Galvin and Gagne ©2005 CPU Switch From Process to Process Operating System Concepts 3.14 Silberschatz, Galvin and Gagne ©2005 İşlem Planlama (Process Scheduling ) Multiprogramming’in amacı CPU kullanımını maksimize etmek için, her zaman çalışan işlemler olmasını sağlamaktır. Zaman paylaşımlı sistemlerde mikroişlemci işlemler arasında çok sık geçiş yaparak, kullanıcının işlemlerin yürütmesi sırasında yürütülen her programa ulaşabilmesini sağlayabilir. Bunun için İşlem Planlama mevcut işlemler içerisinden CPU nun yürütmesi için işlem seçer. Tek işlemcili sistemlerde ise aynı anda birden fazla işlem yürütülemez. Birden fazla işlem olduğunda, işlemler mikroişlemcinin görevi bitinceye kadar beklemek zorundadır. Operating System Concepts 3.15 Silberschatz, Galvin and Gagne ©2005 İşlem Planlama sıraları (Process Scheduling Queues) İş kuyruğu - Sistemdeki tüm işlemlerin kümesi Hazır kuyrukları - ana bellekde bulunan hazır ve yürütmek için bekleyenler Aygıt kuyrukları - Bir G / Ç aygıt için bekleyen işlemleri kümesi Süreçler çeşitli kuyruklar arasında hareket eder. Operating System Concepts 3.16 Silberschatz, Galvin and Gagne ©2005 İşlem Planlama sıraları Sisteme giren işlemler bir sırasının içinde yer alırlar. Bu işlem sırası sistemdeki bütün işlemleri içerir. İşlemler ana bellekte yer alırlar ve yürütülmek için hazır durumda beklemektedirler. Bu işlemler “hazır sıra” isimli listede bulunurlar. Hazır sırada bekleyen işlemler LINKED LIST yöntemi ile tutulmaktadır. Hazır sıra başlığı (header) listedeki ilke ve son PCB leri göstermektedir. Her PCB hazır sıradaki bir sonraki PCB’yi göstermektedir. Operating System Concepts 3.17 Silberschatz, Galvin and Gagne ©2005 Aygıt Kuyrukları Sistemde başka sıralarda da mevcuttur. Mikroişlemcide yürütülen bir işlem kesintiye uğradığında veya belirli bir olayın sistemde oluşması için beklendiğinde (örneğin giriş/çıkış isteğinin tamamlanması için ) işlem bir listeye konulmak zorundadır. Örneğin, işlem paylaşılan bir aygıt olan diskin işleminin bitmesi için bekliyor olabilir. Belli bir giriş/çıkış aygıtı için bekleyen işlem listesine “aygıt sırası” denilmektedir ve her aygıtın kendi aygıt sırası mevcuttur. Hazır sıraya bir işlem eklendiğinde yeni eklenen işlem, mikroişlemciye gidene kadar sırada bekler Operating System Concepts 3.18 Silberschatz, Galvin and Gagne ©2005 Hazır Kuyruğu Ve Çeşitli I / O Aygıt Kuyrukları Operating System Concepts 3.19 Silberschatz, Galvin and Gagne ©2005 İşlem yürütme sıraları Işlem zamanlama için yaygın bir temsil bir sonraki slaytta olduğu gibi bir kuyruk şeması vardır. Her bir dikdörtgen kutu bir kuyruk temsil eder. Kuyrukların iki tür ü mevcuttur: hazır kuyruğu ve aygıt kuyruğu Daireler kuyruklara hizmet eden kaynakları, oklar ise işlemlerin sistemdeki akışını göstermektedir. İşlem mikroişlemciye yürütülmek üzere geldiğinde ve yürütüldüğünde çeşitli olaylar oluşmaktadır,bunlar: İşlem giriş/çıkış isteğini gerçekleştirebilir, bu durumda giriş/çıkış sırasına yerleştirilir. İşlem yeni alt sistemler yaratabilir ve bunların bitmesi için bekler İşlem kesme sonucunda mikroişlemciden zorunlu olarak kaldırılabilir ve bu durumda işlem “hazır sıra” listesine tekrar yerleştirilir. Operating System Concepts 3.20 Silberschatz, Galvin and Gagne ©2005 İşlem Planlama (Process Scheduling ) Operating System Concepts 3.21 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts 3.22 Silberschatz, Galvin and Gagne ©2005 Planlayıcılar Uzun Dönem Planlayıcı (Long-term scheduler ) (or job scheduler) – Hangi işlemlerin Hazır kuyruğuna getirileceğini seçer Kısa Dönem Planlayıcı (Short-term scheduler) (or CPU scheduler) – Yürütülmek üzere hazır durumda bekleyen işlemlerden birisini işlemciye göndermektedir. Operating System Concepts 3.23 Silberschatz, Galvin and Gagne ©2005 Planlayıcılar Bu iki planlayıcı arasındaki en büyük fark işlem yürütme frekansı (sıklık derecesi)dir. Kısa-dönem planlayıcılar mikroişlemci için yeni bir işlemi seçme olayını sık sık yapar. Örneğin, Kısa- dönem planlayıcılarda işlem süresi 100 milisaniye, karar verme süresi 10 ms olduğunda CPU kullanımının %9 luk kısmı planlayamaya ayrılıyor demektir. İşlem yürütümlerinin arasındaki kısa zamandan dolayı, kısadönem planlayıcılar oldukça hızlıdır. Uzun-dönem planlayıcılarda işlem yürütümleri arasındaki zaman daha fazla olmaktadır. Bu yüzden işlem yürütme sıklığı da bu programlarda daha azdır. Operating System Concepts 3.24 Silberschatz, Galvin and Gagne ©2005 Planlayıcılar Sistemde yeni bir olayın başlaması için dakikalar geçebilmektedir. Uzun-dönem planlayıcılar bellekteki işlemlerin kontrolünü sağlamaktadırlar. İşlemlerin yürütülmesi arasındaki zaman uzun olduğu için, planlayıcının hangi işlemin yürütülebileceğini seçme süresi de uzun olmaktadır. Uzun –dönem planlayıcıların işlem seçimini dikkatli yapması gerekmektedir. İşlemler genellikle giriş/çıkış bağlı (bound) veya mikroişlemci bağlı (bound olarak adlandırılırlar. Giriş/çıkış bağlı işlemde, giriş/çıkış işlemleri için harcanan zaman, hesaplama için harcanan zamandan daha fazladır. Mikroişlemci bağlı işleminde ise giriş/çıkış isteklerini gerçekleştirmek için az zaman, hesaplama için ise çok zaman harcanır. Bu yüzden bu tip işlemlerin sistemde dengeli bir biçimde dağıtılması gerekmektedir. İyi performans için sistemde mikroişlemci sekme ve giriş/çıkış sekme işlemleri birlikte bulunmalı; böylece hem hesaplama,hem de giriş/çıkış işlemlerinin yapılabilmesi sağlanmalıdır. Operating System Concepts 3.25 Silberschatz, Galvin and Gagne ©2005 Planlayıcılar Short-term scheduler sık çalışır (milliseconds) (must be fast) Long-term scheduler nadiren çalışır (seconds, minutes) (may be slow) Uzun vadeli programlayıcı multiprogramming derecesini kontrol eder Windows, Unix uzun dönem planlayıcı kullanmaz, kısa dönem planlayıcı ile çalışır. Uzun dönem planlama toplu işlem sistemleri, bilgisayar kümeleri, süper bilgisayarlar gibi büyük ölçekli sistemlerde önemlidir Operating System Concepts 3.26 Silberschatz, Galvin and Gagne ©2005 Orta dönem planlayıcı Operating System Concepts 3.27 Silberschatz, Galvin and Gagne ©2005 Orta dönem planlayıcı Bazı sistemler, örneğin (zaman paylaşımlı sistemler) ek olarak orta dereceli programlamayı da kullanmaktadırlar. İşlemlerin bellekten kaldırılması, daha sonra ise işlemin tekrar belleğe yüklenmesi ve kaldığı yerden devam etmesi gerekmektedir. Bu sistemde orta dereceli programlama ile yer değiştirme işlemi yapılması sağlanmıştır. Operating System Concepts 3.28 Silberschatz, Galvin and Gagne ©2005 İçerik değişimi (concept swıtchıng) Mikroişlemcinin başka işlemlere geçebilmesi için, önceki işlemin durumunu kaydetmesi ve yeni işlem için kaydettiği durumu sisteme tekrar yüklemesi gerekmektedir. Bu işleme içerik değişimi denilmektedir. İçerik değişiminin hızı makinadan makinaya, bellek hızına, kayıt edici sayısına bağlı olarak değişmektedir. Context-switch time is overhead; the system does no useful work while switching Operating System Concepts 3.29 Silberschatz, Galvin and Gagne ©2005 İşlem Sırasındaki Operasyonlar İşlemler sistemde eş zamanlı olarak yürütülebilir. İşlemlerin sistemde dinamik olarak yaratılması ve silinmesi sağlanmalıdır. Bu yüzden, işletim sistemi işlem yaratılması ve durdurulması için bir mekanizma sağlamak zorundadır. Parent and children share all resources Children share subset of parent’s resources Parent and child share no resources Execution Parent and children execute concurrently Parent waits until children terminate Operating System Concepts 3.30 Silberschatz, Galvin and Gagne ©2005 İşlem Oluşturulması İşlem yaratma sistem çağrısı ile bir işlem birden fazla yeni işlemi yaratabilmektedir. Bu yeni üretilen işlemler de başka işlemleri üreterek “işlem ağacını” oluşturmaktadırlar. Yaratılan işlemler işlem ailesi olarak adlandırılırken, yeni işlemler bu işlemin çocuğu olarak adlandırılır. İşlemler görevlerini yerine getirirken belli kaynaklara ihtiyaç duymaktadırlar( bellek, dosyalar, giriş/çıkış aygıtları vb.). Bir işlemin alt işlemleri yaratıldığında, bu alt işlem kaynaklara işletim sisteminden direkt olarak ulaşabilmekte veya işlem ailesinin alt kaynaklarıyla sınırlandırılabilmektedir. Operating System Concepts 3.31 Silberschatz, Galvin and Gagne ©2005 İşlem Oluşturulması İşlem ailesi çocuk işlemlerin de kaynaklarının dağılımını yapabilir. Aile farklı çocuk işlemlerle bazı kaynakları paylaşabilir. Çocuk işlemleri, işlem ailesinin kaynakları ile sınırlandırmak fazla alt işlemin yaratılmasını ve sisteme çok yükleme yapılmasını engeller. Bir işlem yeni bir işlem yarattığında yürütme sırasında olabilecek iki farklı durum mevcuttur: Aile işlem, çocuk işlemlerle birlikte işlemi yürütmeye devam eder. Aile işlem, çocukların tümünün veya bir kısmının işlemi bitene kadar bekler. Operating System Concepts 3.32 Silberschatz, Galvin and Gagne ©2005 İşlem Oluşturulması Birçok işletim sisteminde (Windows, Unix) her işlemin bir işlem tanımlayıcısı mevcuttur, bu özel bir tamsayıdan oluşur. Yeni bir işlem sistem çağrısı ile üretilir. Yeni işlem orijinal işlemin bir kopyası durumundadır. Bu şekilde aile ve çocuk işlemler kolayca iletişim kurabilmektedirler. Komut işletilmesi sırasında ise her işlem (çocuk ve aile işlemleri)birlikte yürütülür. Operating System Concepts 3.33 Silberschatz, Galvin and Gagne ©2005 C Program Forking Separate Process int main() { Pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); } else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0); } } Operating System Concepts 3.34 Silberschatz, Galvin and Gagne ©2005 A tree of processes on a typical Solaris Operating System Concepts 3.35 Silberschatz, Galvin and Gagne ©2005 İşlem Sonlandırma (Process Termination) İşlem, yapacağı görevleri tamamladığında durarak, işletim sistemine “çıkış sistem çağrısı” nı kullanarak durdurulması gerektiğini bildirir. Bu durumda işlem, kendi işlem ailesine durumu bildiren çıkış gönderebilir. İşlemin kullandığı bütün kaynaklar ise işletim sistemi tarafından tekrar paylaştırılabilir. Some operating system do not allow child to continue if its parent terminates – Operating System Concepts All children terminated - cascading termination 3.36 Silberschatz, Galvin and Gagne ©2005 İşlem Sonlandırma (Process Termination) İşlem bittiğinde farklı durumlar da olabilmektedir. İşlem uygun bir sistem çağrısı ile başka bir işlemin bitmesini da sağlayabilir. Ayrıca, bir işlem yeni bir işlem yarattığında,yeni yaratılan işlemin bütün özellikleri aile işlem tarafından bilinir. Aile işlem, çocuk işlemlerin farklı sebeplerden dolayı durdurulmasına sebep olabilmektedir. Bu sebepler: Çocuk işlem kendisi için ayrılmış kaynakların dışında, başka kaynakları da kullanıyor olabilir. Çocuk işleme verilen göreve artık ihtiyaç kalmamıştır. Aile işlem sistemden çıkmıştır ve işletim sistemi çocuk işlemin çalışmasına ailesi olamadan izin vermemektedir. Operating System Concepts 3.37 Silberschatz, Galvin and Gagne ©2005 İşlem işbirliği İşletim sistemindeki işlemler bağımsız veya işbirliği halinde olmak üzere iki şekilde faaliyet gösterirler. Eğer işlem, başka bir işlemi etkilemiyor, başka bir işlemden etkilenmiyor ve başka bir işlemle veri paylaşmıyorsa böyle işlemlere “bağımsız işlem” denilmektedir. Başka işlemlerden etkilenen , başka işlemleri etkileyen veya başka işlemlerle veri paylaşan işlemlere ise “işbirlik işlemleri” denilmektedir. Operating System Concepts 3.38 Silberschatz, Galvin and Gagne ©2005 İşlem işbirliği İşbirlik işlemlerinin sistemde kullanılmasının birçok nedeni vardır, bunlar: Bilgi Paylaşımı:Birçok kullanıcı aynı veriye ulaşmak istediğinde, çoklu erişim sağlayacak ortamı sağlamak gerekmektedir. İşlem Hızı: Bir görevin hızlı yürütülmesini istediğimizde, bunu alt görevlere bölmek ve birbirleriyle paralel çalışmasını sağlamak gerekmektedir. Modülerlik/Esneklik: Sistem fonksiyonlarını ayrı işlemlere bölerek, sistemde esnekliğin olması sağlanmaktadır. Rahatlık: Kişisel bir kullanıcının aynı anda yapması gereken birçok işlemi olduğunda (yazdırma, görüntüleme, yorumlama vb.) sistemde bu işlerin aynı anda yapılması mümkün olmaktadır. Operating System Concepts 3.39 Silberschatz, Galvin and Gagne ©2005 Süreçler Arası İletişim İletişim Niçin Yapılır ? 1.Kaynak paylaşımı (dosya, I/O aygıtı,...) 2.Karşılıklı haberleşme (iki süreç birbirine haber gönderir) 3.Senkronizayon (Bir sürecin çalışması başka bir sürecin belirli işlemleri tamamlamış olmasına bağlı olabilir Operating System Concepts 3.40 Silberschatz, Galvin and Gagne ©2005 Süreçler Arası İletişim Süreçler Arası İletişim veri ve bilgi alışverişi sağlayacak iletişim (Interpocess Mechanism ,IPC) mekanizmasını gerektirir. (1) paylaşımlı bellek ve (2) mesaj geçişi olarak iletişim iki temel model vardır. Paylaşılan bellek modelinde, işbirliği süreçleri tarafından paylaşılan bellek bir bölge kurulmuştur. Süreçler sonra paylaşılan bölgeye veri okuma ve yazma yoluyla bilgi alışverişi yapabilir. Mesaj geçiş modelinde işbirliği halindeki süreçler arasında mesajların alınıp verilmesi vasıtasıyla iletişim gerçekleşir. Operating System Concepts 3.41 Silberschatz, Galvin and Gagne ©2005 İletişim Modelleri Mesaj Geçişi Operating System Concepts Paylaşılan Bellek 3.42 Silberschatz, Galvin and Gagne ©2005 Paylaşılan Bellek Alanı Paylaşılan bellek alanına erişmek isteyen bir işlemin geçerli bir erişim yapabilmesi için bu alanın onun adresleme yapabileceği alan sınırları içerisinde olmalıdır. Başak işlemler de bu paylaşılan bellek alanını kullanmak istediklerine bu alanı kendi adres alanlarına eklemelidirler. Hatırlarsak, normal olarak, bir işletim sistemi bir işlemin belleğine, başka bir işlemin erişmesini önlemektedir. Paylaşılan hafıza, iki veya daha fazla sürecin bu kısıtlamayı kaldırmak anlaşmasınıgerektirir. Daha sonra ortak alanlarda veri okuma ve yazma yoluyla bilgi alışverişi yapılabilir. . Veri ve konumu bu süreçler tarafından belirlenir ve işletim sisteminin kontrolü altında değildir. Süreçler aynı anda, aynı bellek noktasına yazma işlemi yapamazlar. Operating System Concepts 3.43 Silberschatz, Galvin and Gagne ©2005 Mesaj Geçişi (Message Passing) Süreçler arasında mesaj gönderip, almak için send ve receive şeklinde iki sistem çağrısı bulunur. Bu çağrılar aşağıdaki gibi kütüphane fonksiyonu olarak tanımlansınlar. send (varış,&mesaj); //varış ile verilmiş olan sürece mesajı gönderir receive(kaynak,&mesaj);//kaynakdan gelen mesajı alır. Eğer mesaj yoksa gelene kadar bloklanır ya da bir hata kodu geriye çevirir. Operating System Concepts 3.44 Silberschatz, Galvin and Gagne ©2005 Mesaj Geçişi (Message Passing) Bu işlemlerde çeşitli problemler çıkabilir. Örneğin, mesaj gidecek olan bilgisayar ağ üzerinde başka bir bilgisayarda ise mesaj ağda kaybolabilir. Bu yüzden gönderici mesaj göndermeli, alıcı mesajı aldığını belirten kabul (ackowledge) mesajı geriye göndermelidir. Eğer gönderici kabul mesajını belirli bir süre alamazsa mesajı tekrar gönderir. Mesaj ulaşmış fakat kabul mesajı ağda kaybolmuş olabilir. Gönderici mesajı iki kez göndermiş, alıcıda mesajı iki kez almış olur. Bu problem mesaja sıra numarası verilerek çözülür, aynı numaralı iki mesaj gelirse sadece biri kabul edilir. Mesajlar alıcı tarafından alınmadığında postakutusu (mailbox) adı verilen yapılarda depolanır. Depolanan mesajlar, alıcı tarafından alınır. Operating System Concepts 3.45 Silberschatz, Galvin and Gagne ©2005 İşlem Tüm modern bilgisayarlarda bir çok iş aynı anda yapılabilir. *kullanıcı programları çalışır *disk okunabilir. *yazıcıya ya da ekrana çıktı verilebilir. *cd ye veri yazılabilir. *... Çoklu programlamalı sistemlerde, işlemci bir programdan diğerine çok küçük sürelerde geçerek tüm programların aynı anda çalışıyormuş izlenimini verilir. Operating System Concepts 3.46 Silberschatz, Galvin and Gagne ©2005 İşlem Bilgisayarda bulunan tüm çalışabilir programlar işlemler şeklinde organize edilir. İşlem yürütme anında(execution) bulunan bir programdır. Her işlemin kendine özel değişkenleri vardır. Operating System Concepts 3.47 Silberschatz, Galvin and Gagne ©2005 İşlem Her işlem farklı birer varlık olmasına rağmen birbirleri ile etkileşimde bulunabilir ve birbirleri ile haberleşebilirler. Bir işlemin çıktısı başka bir işlemin girdisi olabilir.Bu tip durumlarda örneğin, girdiyi alan işlem çıktıdan daha hızlı çalışırsa girdinin olmadığı durumlarda bekler(bloklanır). İkinci durum ise işlemcinin çalışan süreci durdurarak başka bir işlemi çalıştırmasıdır. Operating System Concepts 3.48 Silberschatz, Galvin and Gagne ©2005 İş parçacığı (Thread) Geneleksel işletim sistemlerinde, her sürecin belirli bir adres uzayı vardır. Bu adres uzayında yapması gerekli olan işlemleri kendisi işlemcide çalışırken yapar. İşlemci aynı anda sadece tek bir komut(instruction) çalıştırabilir. İşlemcide çalışacak olan süreç seçildikten sonra işlemcide belirli bir süreye kadar çalışır. Bazen aynı adres uzayında başka bir ifadeyle aynı süreç içerisinde aynı programın farklı bölümleri (iş parçacığı , thread) yarı paralel olarak çalıştırılabilir. Bu şekilde aynı süreç içerisinde birden fazla süreç parçacıkları paralel olarak işlem yaparlar. Bu modele iş parçacığı modeli denilir. Operating System Concepts 3.49 Silberschatz, Galvin and Gagne ©2005 End of Chapter 3 Ölümcül Kilitlenme (Deadlock) İki ya da daha fazla işlemin, diğerinin bir kaynağı bırakmasını beklediği ya da ikiden fazla işlemin döngüsel bir sırada birbirlerinden kaynak beklediği özel durumları belirtmek için kullanılır. Deadlock, birçok işlemin lock (kilit) olarak bilinen özel bir tür kaynağı paylaştığı çoklu işlemede sık karşılaşılan bir sorundur Operating System Concepts 3.51 Silberschatz, Galvin and Gagne ©2005 Ölümcül Kilitlenme (Deadlock) Deadlock'un oluşması için Coffman şartları olarak bilinen dört adet gerekli şart vardır: Karşılıklı dışlama: Aynı zamanda birden fazla işlem tarafından kullanılamayan bir kaynak Tut ve Bekle: Kaynakları elinde tutan işlemlerin yeni kaynaklar talep edebilmesi İşlem üstünlüğü yok: Hiçbir kaynak onu tutan işlemden zorla alınamaz, kaynaklar sadece işlemlerin kendileri tarafından bırakılabilir. Dairesel bekleme: İki ya da daha fazla işlem, her işlemin bir sonraki işlemin elindeki kaynakları bırakmasını beklediği döngüsel bir zincir oluşturur. Yemek yiyen filozoflar problemi (Dining Philosophers) Semafor kullanımı Operating System Concepts 3.52 Silberschatz, Galvin and Gagne ©2005