640 likes | 840 Views
BÖLÜM 4. EŞ ZAMANLI İŞLEMLER. Kapsam. İşlem Kavramı İşlem Düzenleme Prosesler üzerinde gerçekleştirilen işlemler Proses İletişimi. İşlem(process) Kavramı. Bir işletim sistemi programlar işletir: Toplu işletimde jobs (işler)
E N D
BÖLÜM 4 EŞ ZAMANLI İŞLEMLER
Kapsam... • İşlem Kavramı • İşlem Düzenleme • Prosesler üzerinde gerçekleştirilen işlemler • Proses İletişimi
İşlem(process) Kavramı • Bir işletim sistemi programlar işletir: • Toplu işletimde jobs (işler) • Zaman Paylaşımlı Sistemlerde kullanıcı programları ya da görevler • İşlem=Yürütümdeki program • Bir program çalıştırılabilir bir dosya belleğe yüklendiği anda işlem halini alır. (komut satırından yada mouse+click yöntemi ile) • Bir çok kullanıcı aynı web browser programını işletiyor olabilir bunların hepsi ayrı proseslerdir.
Bir proses şunları içerir • Program Counter (process registers) • Stack(function parameters, return address, local variables ) • Data Area (global variables) • CPU state (bir ya da daha çok thread) • Kaynaklar (açık dosyalar, işleyici programlar vs)
İşlem Durumları (Current activity) • New: Yeni bir proses yaratılıyor • Running: Prosese ait talimatlar işletiliyor • Waiting: Proses herhangi bir olay için bekliyor • Ready: Proses CPU için bekliyor • Terminated: Proses işletimini tamamlıyor
İşlem Kontrol Blok (PCB)/Task Control Block • İşletim Sisteminde her proses kendi PCB’si ile temsil edilir. PCB içeriği: • İşlem durum bilgisi • Program counter’ı • CPU register’lar • Bellek bilgisi • Hesaplama bilgisi • I/O durum bilgisi • CPU kullanım bilgisi
Process Control Block (PCB) Process ID (PID) Parent PID • This is an abstract view • Windows implementation of PCB is split in multiple data structures … Next Process Block PCB List of open files Handle Table Image File Name Thread Control Block (TCB) List of ThreadControl Blocks Next TCB Program Counter … Registers …
Process Block (!process) Physical address of Page Directory root of the process’sVirtual AddressDescriptor tree
Linux da Proses Temsili • Task_struct in <linux/sched.h> • long state /*state of the process*/ • struct sched_entity se; /*scheduling information*/ • struct task_struct *parent /*this process’s parent*/ • struct list_head children; /*this process’s children*/ • struct files_struct *files /*list of open files*/ • struct mm_struct *mm /*address space of process*/ • Linux kernel’da tüm aktif prosesler task_struct yapısı double links list kullanılarak tutulur. • Örn. Proses durumu değiştiriliyor • currentstate = new state
İşlem Düzenleme Kuyrukları • Sisteme dahil olan prosesler kuyruklara alınırlar. • İş Kuyruğu (Job Queue): Sistemdeki tüm proseslerin kuyruğu • Hazır Kuyruğu (Ready Queue): Ana bellekte, CPU için bekleyen proseslerin kuyruğu • Aygıt Kuyrukları (Device Queue): G/Ç cihazları için bekleyen proseslerin kuyruğu
Düzenleyiciler • Long Term (Job) Düzenleyici: Sisteme dahil olan proseslerden hangilerinin hazır kuyruğuna seçileceğine karar verir. • Short Term (CPU) Düzenleyici: Hazır kuyruğundan hangi prosesin seçilip CPU’ya gönderileceğine karar verir.
Düzenleyiciler • Temel fark: çalışma sıklıklarıdır. • Long Term multiprogramming’in derecesini (bellekteki proses sayısını) düzenler. • Prosesler iki şekilde tanımlı olabilirler: • I/O Bound: CPU üzerinde çok az zaman işletilir. İşletiminden fazla zamanı I/O işlemleri için geçirir. • CPU Bound: Daha az sıklıkta I/O isteği yapar.
CPU ve I/O Bursts … load val inc val read file CPU burst wait for I/O I/O burst inc count add data, val write file CPU burst wait for I/O I/O burst load val inc val read from file CPU burst wait for I/O I/O burst
Optimizasyon kriterleri • Maximize CPU utilization • Maximize throughput • Minimize turnaround time • Minimize waiting time • Minimize response time
Dispatcher • Dispatcher modulü, CPU kontrolünü Short-term düzenleyici tarafından seçilmiş olan thread’e verir; şu basamaklardan oluşur: • İçerik anahtarlaması (switching context) • User moda geç (switching to user mode) • Kullanıcı programında uygun yere zıplamak (yeniden başlatmak için) • Dispatch latency (gecikme zamanı)– dispatcher’ın bir thread’i durdurup diğerini başlatmasına kadar geçen süre.
Proses yaratma • İşlem tablosunda bu işlem için bir kısım yaratılır • Bu işlemin adı veya numarası işletim sistemin sakladığı işlemler listesine eklenir. • İşlem isimlendirilir. Örneğin UNIX işletim sistemi işlemleri tamsayılarla isimler (30127 gibi). • İşleme öncelik değeri verilir. • İşleme başlangıçta ihtiyaç duyduğu kaynaklar tahsis edilir.
UNIX’de Proses Yaratma • fork sistem çağrısı ile yaratılır • çağrıyı yapan proses: parent proses • Yaratılan proses: child proses • pid=fork() • Her iki proses de aynı bağlama sahip • Parent prosese child ın kimlik değeri döner • Child prosese 0 değeri döner • 0 numaralı prosesi açılışta çekirdek tarafından yaratılır; fork ile yaratılmayan tek prosestir.
UNIX’de Proses Yaratma • fork sistem çağrısı yapıldığında çekirdeğin yürüttüğü işlemler: • proses tablosunda (varsa) yer ayırılır (maksimum proses sayısı belli) • Child prosese yeni bir kimlik numarası atanır (sistemde tek) • Parent prosesin bağlamının kopyası çıkarılır. • Parent’achild’ın kimliğini, child’a da 0 değerini döndürür
UNIX’de Proses Sonlanması • exit sistem çağrısı ile • exit(status) • “status” değeri parent prosese aktarılır • Tüm kaynakları geri verilir • Dosya erişim sayaçları düzenlenir • Proses tablosu kaydı silinir.
Proses Yaratma (fork) • 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); • } • }
Process-Based Windows Code:System Startup Processes smss.exe Session ManagerThe first “created” process Takes parameters from \HKEY_LOCAL_MACHINE\System\CurrentControlSet \Control\Session ManagerLaunches required subsystems (csrss) and then winlogon csrss.exe Windows subsystem winlogon.exe Logon process: Launches services.exe & lsass.exe; presents first login prompt When someone logs in, launches apps in \Software\Microsoft\Windows NT\WinLogon\Userinit services.exe Service Controller; also, home for many Windows-supplied servicesStarts processes for services not part of services.exe (driven by \Registry\Machine\System\CurrentControlSet\Services ) lsass.exe Local Security Authentication Server userinit.exe Started after logon; starts Explorer.exe (see \Software\Microsoft\Windows NT\CurrentVersion\WinLogon\Shell) and exits (hence Explorer appears to be an orphan) explorer.exe and its children are the creators of all interactive apps
İşlemi Kesme • Bir Kesme Oluştuğunda: • OS denetimi eline alır. • OS kesilen işlemin durumunu saklar. • OS, kesmeyi analiz eder ve kontrolü kesmeyi işlemek için uygun olan yordama geçirir.
Kesme Tipleri • IBM işlemcilerde • SVC kesmeleri: G/Ç yapma, daha fazla bellek alma, sistem operatörleri ile iletişim kurma gibi özel sistem hizmetleri için kullanıcının ürettiği bir istektir. • G/Ç Kesmeleri: CPU ‘ ya kanal veya aygıtın durumunun değiştiğini bildirirler. • Dış Kesmeler: Kesme saatindeki sürenin dolması, operatör tarafından sistem konsolundaki kesme düğmesine basılması veya çok kullanıcılı sistemlerde başka bir işlemciden bir sinyal gelmesi gibi durumlarda oluşur. • Yeniden Başlatma Kesmeleri : Operatör konsolunun yeniden başlat düğmesine basıldığında veya çok kullanıcılı sistemler başka bir işlemciden gelen başlat komutu geldiğinde görünürler. • Program Kontrol Kesmeleri : Sıfıra bölme veya kullanıcının ayrıcalıklı bir komutu kullanması, geçersiz bir işlemi yürütmeye kalkması gibi çalışıyor işlemi tarafından oluşan hatalardan kaynaklanır. • Makina Kontrol Kesmeleri : Bozuk donanımın sebep olduğu kesmelerdir.
PSW (Program Status Word) • Program Durum Sözcüğü(PSW) komut yürütme sırasını denetler ve bu işlem durumu hakkında çeşitli bilgi içerir. Üç tip PSW vardır: • güncel PSW: yürütülecek bir sonraki komutun adresi saklanır. Kesme tiplerinin aktif/pasif olma bilgilerini tutar. • yeni PSW ve eski PSW
PSW... • Bir kesme olduğunda eğer işlemci bu tip kesme için pasif değilse, o zaman donanım PSW'leri aşağıdaki gibi değiştirir: • Kesmenin tipine bağımlı olarak güncel PSW eski PSW'ye konulur (A) • Yeni PSW güncel PSW'ye konulur.(B) • Bu PSW değişimlerinden sonra, güncel PSW o anda uygun kesme işlemcisinin(IH) adresini içerir. Daha sonra kesme işlemcisi kesme'yi çalıştırır.
Birlikte Çalışan Prosesler • Bağımsız Proses: Sistemdeki başka proseslerin çalışmalarından etkilenmez. • Birlikte Çalışan Proses: Diğer proseslerin çalışmasından etkilenebilirler. • Birlikte çalışmanın avantajları: • Bilgi paylaşımı • Bilgi işleme hızında artış • Modülerlik • Uygunluk
Üretici-Tüketici Problemi • Üretici ve tüketicinin bir arada çalışabilmesi için buffer havuzları oluşturmalıyız. • Bu havuzları üretici doldurmalı , tüketici boşaltmalı. Bu sayede üretici , tüketici diğer taraftan havuzu boşaltırken havuzu doldurabilmeli. • Üretici proses bir veriyi tüketici proses için üretir ve tüketici proses bu veriyi kullanır.
... • Üretici ve tüketicinin sınırlı bir veri alanına (buffer) erişebildiklerini varsayalım. • Üretici üretmiş olduğu ürünü (veriyi) Buffer’da boş yer varsa koyabilir. Yer yok ise tüketicinin Buffer’dan bir veriyi almasını beklemek durumundadır. • Tüketici ise ancak Buffer boş değilse veri tüketebilir, aksi taktirde üreticinin Buffer’a veri girmesini bekmelesi gerekir. • Unbounded (sınırlanmamış) – buffer üretici tüketici probleminde bufferların sayısında bir sınır yoktur. Tüketici yeni ürünler bekler , ve gelenleri tüketir , sadece ürün bitince bekler fakat üretici daima yeni ürün üretip koyabilir. Bounded producer / consumer probleminde ise n adet sabit buffer vardır. Üretici n buffer dolunca bekler , tüketici n adet buffer boşalınca bekler.
Sınırlı Buffer Durumu • Paylaşılan veri: #define BUFFER_SIZE 10 Typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0;
Sınırlı Buffer Durumu (Insert) while (true) { /* Produce an item */ while (((in + 1) % BUFFER SIZE ) == out) ; /* do nothing -- no free buffers */ buffer[in] = item; in = (in + 1) % BUFFER SIZE; {
Sınırlı Buffer Durumu (Remove) while (true) { while (in == out); // do nothing -- nothing to consume // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; {
Interprocess Communication (IPC) • IPC özelliği iki operasyon sağlar: • Send(P,message) send a message to process P • Receive (Q,message) receive a message from process Q • <256 byte kısa mesajlar göndericiden alıcıya kopyalanır. • Geniş mesajlar shared memory segment üzerinden erişilir. • Server (kernel) client’ın adres alanına direk olarak yazabilir. • Buradaki link şu özelliklere sahiptir. • İletişim isteyen 2 proses arasında otomatik link kurulur. İletişim için sadece prosesler birbirlerinin tanımını bilirler. • Link tam olarak 2 proses arasındadır. • Bir çift prosesin iletişimi için 1 adet link vardır. • Link tek yönlüdür.
Dolaylı İletişim • Send ( A , message) Send a message to mailbox A • Receive (A, message) Receive a message from mailbox A • Burada link şu özelliklere sahiptir. • Prosesler sadece ortak mailboxları varsa link kurabilirler • Link birden fazla proses arasında kurulabilir. • Her iletişimdeki proses çifti için değişik sayıda aynı mailboxu kullanan link bulunabilir. • Link tek yönlü veya çift yönlü olabilir