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

Benzer belgeler
İşlem Yönetimi (Process Management)

Bilgisayar İşletim Sistemleri BLG 312

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

YZM 3102 İşletim Sistemleri

Bilgisayar İşletim Sistemleri BLG 312

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

& WIN 32 DEN BAKIŞ AÇISI İSMAİL YALÇIN

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

İşletim Sistemlerine Giriş

Proses. Prosesler 2. İşletim Sistemleri

İşletim Sistemleri. Bilgisayar Mühendisliğine Giriş. Teknoloji Fakültesi / Bilgisayar Mühendisliği. Öğr.Gör.Günay TEMÜR

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

PROSESLER. Proses. Proses

İşletim Sistemleri (Operating Systems)

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

İşletim Sistemlerine Giriş

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

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

YZM 3102 İşletim Sistemleri

İŞ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

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

DERS 10 İŞLETİM SİSTEMİ ÇALIŞMA PRENSİBLERİ VE HATA MESAJLARI

BİT in Temel Bileşenleri (Yazılım-1)

Bilgisayar İşletim Sistemleri BLG 312

En yaygın kullanılan işletim sistemlerine örnek olarak; Microsoft Windows, Mac OS X, Linux, Android ve ios örnek verilebilir.

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

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

BÖLÜM 3 3. İŞLETİM SİSTEMİNİN BAŞLICA ÖZELLİKLERİ

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

Linux Dosya ve Dizin Yapısı

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

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

EME 3105 SİSTEM SİMULASYONU (ARENA) Hafta 3

Kabuk Programlama (Bash)

Bilgisayar İşletim Sistemleri BLG 312

Çekirdek Nedir? Ne yapar?

Trickbot Zararlı Yazılımı İnceleme Raporu

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Yazılım Türleri

İşletim Sistemlerine Genel Bakış

9. MERKEZİ İŞLEM BİRİM MODÜLÜ TASARIMI

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

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

-Bilgisayarı oluşturan iki temel unsurdan diğeri ise YAZILIM dır.

İşletim Sistemlerine Giriş

Görsel Programlama DERS 11. Görsel Programlama - Ders11/ 1

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

BM-311 Bilgisayar Mimarisi

SIMAN KULLANIM KILAVUZU

İşletim Sistemleri. Discovering Computers Living in a Digital World

POSTGRESQL'de İleri Seviyede Veri Kurtarma ve Yedekleme

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

CYGWIN KURULUMU ve KULLANIMI

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

ANAKART. Çıkış Birimleri. Giriş Birimleri. İşlem Birimi. Depolama Birimleri. İletişim. Birimleri. Bellek. Birimleri

Pardus 2013 te Metin Editörleri

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

Yazılım Mühendisliğine Giriş 4. Hafta 2016 GÜZ

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

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

İşletme ve Devreye Alma Planı Yerel Okul Sunucusu Uygulama Yazılımları Prototipi TRscaler Technology Solutions

İşletim Sistemleri (Operating Systems)

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

İşletim Sistemi. BTEP205 - İşletim Sistemleri

TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü

İşletim Sistemlerine Giriş

Veritabanı. Ders 2 VERİTABANI

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

ÇOK ÇEKİRDEKLİ İŞLEMCİLER VE PARALEL YAZILIM GELİŞTİRME OLANAKLARI HAKKINDA BİR İNCELEME

NACA PROFİL AİLE GEOMETRİSİ HESAP PROGRAMI KULLANMA KILAVUZU

İŞLETİM SİSTEMLERİ. Enformatik Bölümü

BTP205 İŞLETİM SİSTEMLERİ

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : Tarih : Copyright 2008 AKINSOFT

Yazılım Mühendisliğine Giriş 2018 GÜZ

İşletim Sistemleri. B L M Mesleki Te r minoloji I I Ö ğ r e n c i S unumu

Binnur Kurt İstanbul Teknik Üniversitesi Bilgisayar MühendisliM

Yazılım Mühendisliğine Giriş 2018 GÜZ

İŞLETİM SİSTEMLERİ DERSİ 1 İÇİNDEKİLER

WINDOWS VE PARDUS İÇİN İMZAGER KURULUM TALİMATI

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.

Dosya Yönetim Sistemi Hazırlayan : mustafa kaygısız Kaynak: megep.meb.gov.tr

Yrd. Doç. Dr. İlhan AYDIN Güz Dönemi Fırat Üniversitesi Bilgisayar Mühendisliği Bölümü

BELLEK YÖNETY. Bellek Yönetimi

ALGORİTMA VE PROGRAMLAMA I

İşletim Sistemleri (Operating Systems)

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

İşletim Sisteminin Katmanları

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Armitage Nedir? Kullanım Öncesi

OMNET Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

DGridSim Gerçek Zamanlı Veri Grid Simülatörü. Yazılım Tasarımı Dokümanı v Mustafa Atanak Sefai Tandoğan Doç. Dr.

VISUAL BASIC DE İŞLETİM SİSTEMİ DENETİM KOMUTLARI VE FONKSİYONLARI

Ünite-3 Bilgisayar Yazılımı.

PASCAL EDİTÖRÜ BÖLÜM Giriş. 2.2 Pascal Menüleri

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

İşletim Sistemlerine Giriş

İŞLETİM SİSTEMLERİ TANIMI

Transkript:

İşletim Sistemlerinde Çok Prosesli Çalışma Kaan Aslan 4 Mart 2008 İşletim sistemlerini proses yönetimine göre kabaca tek prosesli (single processing) ve çok prosesli (multiprocessing) olmak üzere iki gruba ayırabiliriz. Tek prosesli sistemlerde aynı anda tek bir program çalışıyor durumda olabilir. Yani kullanıcı eğer yeni bir programı çalıştıracaksa önce o anda çalışmakta olan programı sonlandırmak zorundadır. Örneğin DOS işletim sistemi tek prosesli bir sistemdi. Biz bu sistemlerde diyelim ki bir muhasabe programı çalıştırıyorsak, başka bir programı çalıştırmak istediğimizde önce muhasebe programını sonlandırıp komut satırına düşmemiz, daha sonra diğer programı çalıştırmamız gerekiyordu. Halbuki şimdilerde kullandığımız modern ve güçlü sistemlerin hemen hepsi çok proseslidir. Çok prosesli sistemlerde aynı anda birden fazla program çalışıyor durumda bulunabilir. Örneğin biz Windows ya da Linux sistemlerinde bir programı derlerken bir yandan da bir dökümanı düzeltebiliriz. Aynı anda nasıl birden fazla program birlikte çalışabiliyor? Eğer donanımınızda tek çekirdekli bir işlemci varsa gerçek anlamda bir aynı andalıktan söz edemeyiz. Birden fazla programın aynı anda çalışması ancak çok işlemcili ya da çok çekirdekli sistemlerde söz konusu olabilir. Fakat çok prosesli çalışma denildiğinde gerçek anlamda bir aynı andalık anlaşılmamalıdır. İşletim sistemleri prosesleri zaman paylaşımlı olarak biraz ondan biraz bundan biçiminde çalıştırır. Çok prosesli işletim sistemlerini zorlamalı olan (preemptive) ve zorlamalı olmayan (non-preemptive) biçiminde ikiye ayırabiliriz. Zorlamalı olan sistemlerde işletim sistemi bir prosesi belli bir süre çalıştırır, sonra onun çalışmasına ara verir ve başka bir prosese geçer. Sonra ara verilen prosese yeniden çalışma sırası geldiğinde çalışma kalınan yerden devam eder.. Bir prosesin çalıştırılıp çalışmasına ara verilmesi arasında geçen süreye parçalı çalışma süresi (time slice / quantum) denilmektedir. Örneğin sistemimizdeki parçalı çalışma süresinin 20 ms. olduğunu düşünelim. Bu durumda her 20 ms. dolduğunda o anda çalışmakta olan prosese ara verilip, ara verilmiş olan bir prosesin kaldığı yerden çalışmasına devam ettirileceğini düşünebiliriz. Zorlamalı sistemlerde parçalı çalışma süresi dolduğunda herhangi bir noktada donanım kesmesi yoluyla çalışmaya ara verilmektedir. Ara verilme işlemi parçalı çalışma süresi dolduğunda bıçakla kesilir gibi gerçekleştirilir. Kesilmenin hangi makina komutunda yapılacağını programcı önceden kestiremez. Kullanıcılar dışarıdan baktıklarında programların aynı anda çalıştığını sanabilirler fakat aslında zaman paylaşımlı bir çalışma söz konusudur. Tabi bu tür bir çalışma fikri ilk bakışta size biraz tuhaf gelebilir. Fakat pek çok sistemde prosesler gerçekten de buna benzer bir biçimde çalıştırılırlar. Halbuki zorlamalı olmayan sistemlerde proseslerarası geçiş işlemi çalışmakta olan prosesin isteği ile gerçekleştirilmektedir. Yani çalışmakta olan proses ben çok çalıştım biraz da başkaları çalışsın ya da benim şimdilik yapacak bir şeyim kalmadı, o halde başkaları çalışsın diyerek çalışmaya ara verir. Zorlamalı olmayan sistemlerin gerçekleştirilmesi göreli olarak daha kolaydır. Örneğin 16 bit Windows (Windows 3.X), 9 lu versiyonlara kadar Mach OS, zorlamalı olmayan çok prosesli sistemlerdi. Halbuki bugün kullandığımız Windows sistemleri, UNIX türevi 1

sistemler çok prosesli sistemlerdir. Zorlamalı olmayan çok prosesli sistemlere aynı zamanda işbirliğiyle çalışan çok prosesli (cooperative multitasking) sistemler de denilmektedir İşletim sistemlerinde proseslerle ilgili işlemlere proses yönetimi (process management), bu işlemleri yapan alt sisteme ise proses yöneticisi (process manager) denilmektedir. Proseslerin yaratılması, ara verilip çalıştırılması ve sonlandırılması gibi işlemler proses yöneticisi tarafından gerçekleştirilir. Zorlamalı çok prosesli sistemlerde proseslerin zaman paylaşımlı olarak parçalı bir biçimde çalıştırıldığını belirttik. Peki her prosesin parçalı çalışma süresi aynı mıdır? Proseslere çalışma fırsatı adil olarak mı verilmektedir? Belli bir zaman dilimi içerisinde tüm prosesler aynı oranda mı çalıştırılır, yoksa bir öncelik durumu söz konusu olabilmekte midir? İşte proseslerin parçalı olarak çalıştırılması proses yöneticisinin çizelgeleyici (scheduler) denilen kısmı tarafından gerçekleştirilir. Proseslerin hangi kurala göre parçalı çalıştırılacağı çizelgeleme algoritmasına bağlıdır. Hepimizin hemen aklına gelen sırasıyla ve adil çalıştırma biçimine döngüsel çizelgeleme (round robin scheduling) deniyor. Örneğin bu biçimde çizelgelemeyi aşağıdaki bir şekille temsil edebiliriz < Basit dönüsel çizelgelemede işletim sistemi prosesleri zaman paylaşımlı olarak sırasıyla çalıştırır. Yani yukarıdaki şekle göre P1 prosesi biraz çalıştırılır, sonra çalışmasına ara verilir. P2 biraz çalıştırılır. Tüm prosesler çalıştırıldıktan sonra yeniden P1 prosesi ele alınarak işlemler gerçekleştirilir. Temel kavramları açıklayabilmek için yazımızın geri kalan kısmında çizelgeleme algoritması olarak basit döngüsel çizelgeleme yönteminin kullanıldığını varsayacağız. İşletim sistemi aktif bir biçimde işlemciye atayıp çalıştırdığı prosesleri bir veri yapısında tutar. Bu veri yapısına çalıştırma kuyruğu (run queue) denilmektedir. Çalıştırma kuyruğu -her ne kadar ismine kuyruk deniliyorsa da- genellikle proses 2

tablolarından oluşturulan döngüsel bir bağlı liste biçiminde gerçekleştirilmektedir. Böylece prosesin çalışmasına ara verildiğinde çizelgeleyici alt sistem ara verilen prosesten sonraki prosesi kuyruktan alarak onu işlemciye atar. Tabi çalıştırma kuyruklarının düzenlenmesine ilişkin sistemden sisteme değişebilen ayrıntılar söz konusu olabilmektedir. Biz yazımızda bu ayrıntılara değinmeyeceğiz. Birden fazla işlemciye ya da çok çekirdekli bir işlemciye sahip (çok çekirdekli bir işlemci de birden fazla işlemci gibi değerlendirilir) bir sistemde çizelgeleme nasıl yapılır? İşlemcileri birer gişe, çalıştırma kuyruğundaki prosesleri de müşteriler gibi düşünebilirsiniz. Örneğin iki işlemcili (ya da iki çekirdekli tek işlemcili) bir sistemde her işlemcinin ayrı bir çalıştırma kuyruğu ya da iki işlemci için ortak tek bir çalıştırma kuyruğu oluşturulabilir. Çok işlemcili sistemlerdeki çizelgelemenin de çeşitli düzeyde ayrıntılarının olduğunu belirtelim. Yine biz bu yazımızda bu ayrıntılara girmeyeceğiz. Özellikle çevre birimlerine ilişkin bazı olaylar göreli olarak uzun (ve belki de sonsuz) bir beklemeye yol açabilmektedir. Klavyeden bir bir tuşun beklenmesi, bir dosya üzerinde okuma/yazma gibi bir işlemin uygulanması, seri porttan bilgi okunması gibi birtakım dışsal olaylarda işlemci zamanı harcamadan etkin bir bekletmenin sağlanması önemlidir. Örneğin, klavyeden bir tuş okumak istediğimizi düşünelim. Çok prosesli çalışmada parçalı çalışma süresi (quantum) boyunca meşgul bir döngü içerisinde sürekli klavyenin yoklanması (polling) etkin bir yöntem değildir. Ya da programımızda 1 saniyelik bir gecikme yaratmak istediğimizi düşünelim. Bunun meşgul bir döngüyle yapılması gereksiz bir işlemci zamanının harcanmasına yol açmaz mı? İşte işletim sistemleri dışsal bir olayı başlatan bir prosesi çizelgeden (yani çalıştırma kuyruğundan) geçici bir süre çıkartarak onun bekleme sırasında gereksiz bir işlemci zamanı harcamasını engeller. Örneğimizde klavyeden tuş bekleyen proses çizelgeden çıkartılır, klavyeden tuş girildiğinde yeniden çizelgeye dahil edilir. Ya da 1 saniye gecikme sağlamak için çağırdığımız sistem fonksiyonu prosesi çizelge dışında tutarak onun bekleme sırasında işlemci zamanı harcamasını engeller. 1 saniye dolduğunda onu yeniden çizelgeye dahil eder. Bu tür olaylarda bekleyen proses için değişen birşey yoktur. Fakat işlemci meşgul edilmediği için kullanım oranı yükseltilmiş olur. Dışsal bir olayı bekleyen prosesin o olay gerçekleşene kadar geçici süre çizelgeden çıkartılmasına ilgili prosesin bloke edilmesi (blocking) denilmektedir. Bloke edilen prosesler çalıştırma kuyruğundan çıkartılarak bekleme kuyruğu (wait queue) denilen başka bir kuyruğa alınırlar. İşletim sistemleri genellikle her olay için ayrı bir bekleme kuyruğu oluşturmaktadır. Aşağıda prosesin çalıştıma kuruyğundan bekleme kuyruğuna aktarımını görüyorsunuz: 3

Burada sırasıyla P3 ve P5 proseslerinin X olayı yüzünden çalıştırma kuyruğundan çıkartılarak bekleme kuyruğuna alınmıştır. Artık bu süre içerisinde P3 ve P5 prosesleri zaman paylaşımlı çalışma işlemine sokulmayacaktır. Şüphesiz dışsal olayları bekleyen prosesleri işletim sistemi bekleme kuyruklarına yerleştirdikten sonra artık o olayları arka planda kendisi izlemek zorundadır. Yani örneğin klavyeden tuşa basıldığını, seri porta bilgi geldiğini, 1 saniye sürenin dolduğunu işletim sistemi bir yandan izlemelidir. Peki ama nasıl?.. Bu işlemlerin izlenmesi yoklama (polling) yoluyla değil kesme (interrupt) yoluyla gerçekleştirilir. Klavyeden tuşa basıldığında, seri porta bilgi geldiğinde donanım kesmeleri oluşur. İşletim sisteminin kesme kodları bekleme kuyruğundan prosesleri çıkartarak çalışma kuyruğuna yerleştirir. Bekleme kuyruklarının düzenlenmesi ve bekleme kuyruklarından çalıştırma kuyruklarına proseslerin aktarılması her işletim sisteminde o sisteme özgü bir biçimde yapılmaktadır Bir prosesin yaşam döngüsünü basit bir biçimde aşağıdaki gibi bir diyagramla gösterebiliriz: 4

Proses çalışmak üzere seçilmiş ve o anda işlemcide çalışıyor durumda (run) olabilir. Prosesin parçalı çalışma süresi bittiğinde proses çalışır durumdan çıkarılır ve çalışmaya hazır duruma getirilir (ready). Çalışmaya hazır olma durumu prosesin o anda çalışmadığı ancak kendi sırası geldiğinde yeniden çalıştırılmak üzere beklediği durumdur. Proses çalışırken klavye, disk gibi dışsal bir olayı bekleyecek bir işlem başlatırsa prosesin çalışıyor olma durumu sona erdirilir ve process bloke olmuş (wait) duruma getirilir. Sistem çalışmakta olan prosesi bloke ettikten sonra çalışmaya hazır olan proseslerden uygun olanını seçerek onun çalışmasını sağlar. Bloke edilen prosesler bekleme kuyruklarına alınmaktadır. Dışsal olayı beklemek için bloke olmuş bir prosesin blokesi dışsal olay gerçekleştiğinde çözülür ve process bloke olmuş durumdan çıkartılarak çalışmaya hazır (ready) duruma getirilir. Prosesin sonlanması genellikle (fakat her zaman değil) çalışır durumdayken (run) gerçekleşir. Biz konuyu açıklarken thread konusuna hiç değinmedik. Thread ler söz konusu olduğunda çizelgeleyici alt sistem proses temelinde değil de thread temelinde çizelgeleme yapar. Yani parçalı çalışma süresi dolduğunda o anda çalışmakta olan thread in çalışmasına ara verilir. İşlemciye çalıştırma kuyruğundaki diğer thread atanır. Geçiş yapılacak thread aynı prosesin bir thread i olabileceği gibi başka bir prosesin thread i de olabilir. Pek çok UNIX türevi sistem (örneğin tipik olarak Linux sistemleri) zaten proses ile thread arasında çekirdek veri yapısı bakımından fark gözetmemektedir. 5