BÖLÜM 4 EŞ ZAMANLI İŞLEMLER.

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 6: CPU Planlama Temel Kavramlar Planlama Kriteri
Advertisements

İşlemci Zaman Planlaması
IIS 6.0. Giriş  Geçtiğimiz yıllarda, Microsoft güvenlik açıkları nedeniyle IIS 4/5 üstünden bir çok saldırıya uğradı.  Bu sebepten Microsoft’un geliştirdiği.
TEMEL AĞ TANIMLARI.
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
BLG 201 ŞAHİN AKDAĞ.
 Meltem KORCAY  Ayşe KUBİLAY
Visual Basic 6.0 Ders Notları
Öğr.Gör. Dr. Şirin KARADENİZ
Değişken Bildirimleri
Bellek Yönetimi Process H 2 KB
Bölüm 1: Introductions (Tanıtım,Tanım)
P p 8. Ünitede yinelemeli programlamanın teknikleri anlatılmaktadır. p p Gördüğünüz gibi, yinelemeli programlama bir problemin içinde problemin küçük parçalarını.
Bellek Yönetimi.
AĞ PROTOKOLÜ.
BTP 108 BİLGİSAYAR AĞ SİSTEMLERİ AĞ KAVRAMI Birden çok bilgisayarın birbirine bağlı olarak kullanılmasıyla oluşturulan çalışma biçimine bilgisayar ağı.
CPU (Merkezi İşlem Ünitesi)
BÖLÜM 2: BİLGİSAYAR SİSTEM YAPILARI
Chapter 8: Deadlocks (ölümcül kilitlenmeler)
İŞLETİM SİSTEMLERİ Ders İçeriği
Chapter 4: Processes Proces Kavramı Proces Planlama
Register ve Türleri Nihal GÜNGÖR.
Kabuk ve Kısayollar BİLGİSAYAR PROGRAMCILIĞI BÖLÜMÜ
MART 2013 İŞLETİM SİSTEMLERİ.
BİLGİSAYAR AĞLARI.
İş Parçacıkları Thread(s)
İnternet Teknolojisi Temel Kavramlar
İŞLETİM SİSTEMLERİ Öğr. Gör. S.Serkan TAN.
DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ
MESAJ GEÇİŞİ(MESSAGE PASSİNG)
BÖLÜM 4 EŞ ZAMANLI İŞLEMLER.
CPU DÜZENLEME.
3. Bölüm Taşıma Katmanı Computer Networking: A Top Down Approach 4th edition. Jim Kurose, Keith Ross Addison-Wesley, July Transport Layer.
Yrd.Doç.Dr. Sevinç İlhan Omurca - OS Bölüm 12
EYLÜL 2014 İŞLETİM SİSTEMLERİ Bilgisayar Uygulamaları.
Sistem Çağrıları Proses Kontrol Çağrıları Bellek Yönetim Çağrıları
TCP Akış Kontrolü Akış kontrolü
Ders İçeriği Liste Soyut veri yapısı (ADT)
Aşağıdakilerden hangisi işletim sistemi değildir?
İnternet Teknolojisi Temel Kavramlar
İşletim Sistemleri Operation Systems Fon müziği.
Microsoft Windows Server 2003
Microsoft Windows Server 2003 © Yenilikler ERCAN SAPMAZ.
Ethernet Anahtarlama.
Chapter 11: Dosya Sistem Arayüzü
Bölüm 13: I/O Sistemleri Giriş/Çıkış Donanımı
BİL İŞLETİM SİSTEMLERİ
Bilgisayar Sistemlerine Giriş
Chapter 5: Threads (İş Parçacıkları)
BÖLÜM 4 EŞ ZAMANLI İŞLEMLER. Kapsam... İşlem Kavramı İşlem Düzenleme Prosesler üzerinde gerçekleştirilen işlemler Proses İletişimi.
Görevler Arası İletişim(Eş Zamanlılık) IPC
BİLGİSAYAR MİMARİLERİ 12.Hafta: Çok İşlemcili Sistemler
KIRKLARELİ ÜNİVERSİTESİ
İŞLETİM SİSTEMLERİ ISE 206 DR. TUĞRUL TAŞCI. Dersin Amacı Bilgisayar sistemlerinin temel organizasyonunu tanımak İşletim sistemlerinin ana bileşenlerini.
Ağ Donanımları Ağ Nedir ? Ağ Donanımları Bridge Hub Switch Router
1. HAFTA Giriş, Tarihçe ve Kavramlar
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
BÖLÜM 4 EŞ ZAMANLI İŞLEMLER.
Bellek Yönetimi(Memory management)
Fork(), Exec(), Wait() Sistem Çağrıları
Hafta_3 Process (İşlem-Süreç)
Açılış yoklama İşletim Sistemleri. Bilgisayarlarda işletim sistemi, donanımın doğrudan denetimi ve yönetiminden, temel sistem işlemlerinden ve uygulama.
Hafta_3 Process (İşlem-Süreç)
İşletim Sistemleri (Operating Systems)
Bilgisayar Mühendisliğine Giriş
İşletim Sistemleri (Operating Systems)
ETHERNET KARTI(AĞ KARTI)
Sunum transkripti:

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

Proseslerin Durum Diagramları

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

PCB

Process Control Block (PCB) Process ID (PID) This is an abstract view Windows implementation of PCB is split in multiple data structures Parent PID … Next Process Block PCB List of open files Handle Table Image File Name Thread Control Block (TCB) List of Thread Control Blocks Next TCB Program Counter … Registers …

Process Block (!process) Physical address of Page Directory root of the process’s Virtual Address Descriptor tree Lab objective: Using the Kernel Debugger !process Command The kernel debugger !process command displays a subset of the information in an EPROCESS block. This output is arranged in two parts for each process. First you see the information about the process, as shown here (when you don’t specify a process address or ID, !process lists information for the active process on the current CPU): lkd> !process PROCESS 8575f030 SessionId:0 Cid: 08d0 Peb:7ffdf000 ParentCid:0360 DirBase:1a81b000 ObjectTable:e12bd418 HandleCount: 65. Image:windbg.exe VadRoot 857f05e0Vads 71Clone0 Private 1152. Modified98.Locked1. DeviceMape1e96c88 Token e1f5b8a8 ElapsedTime 1:23:06.0219 UserTime 0:00:11.0897 KernelTime 0:00:07.0450 QuotaPoolUsage[PagedPool] 38068 QuotaPoolUsage[NonPagedPool] 2840 Working Set Sizes (now,min,max) (2552, 50, 345)(10208KB,200KB, 1380KB) PeakWorkingSetSize 2715 VirtualSize 41 Mb PeakVirtualSize 41 Mb PageFaultCount 3658 MemoryPriority BACKGROUND BasePriority 8 CommitCharge 1566 After the basic process output comes a list of the threads in the process. Other commands that display process information include !handle, which dumps the process handle table .

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 currentstate = 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

Değişik Kuyruk Yapıları

Proses Düzenleme

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.

Medium Term Düzenleyici

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 wait for I/O wait for I/O wait for I/O … 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.

İçerik Anahtarlaması

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’a child’ı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);

Proses Yaratma

Linux Process Tree

Windows/ create process

Windows’da Processes Tree

Process-Based Windows Code: System Startup Processes smss.exe Session Manager The first “created” process Takes parameters from \HKEY_LOCAL_MACHINE\System\CurrentControlSet \Control\Session Manager Launches 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 services Starts 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

Interprocess Communication Systems(IPC)

Ü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:

Sınırlı Buffer Durumu (Insert) Üretici proses paylaşılmış bellek alanını kullanıyor Tüketici proses paylaşılmış bellek alanını kullanıyor:

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

Message Passing Systems 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 kısa mesajlar göndericiden alıcıya kopyalanır. uzun 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) Receive (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

Dolaylı İletişim Mailbox Paylaşımı P1,P2,P3 prosesleri A mailbox’unu paylaşıyor P1 gönderiyor, P2 ve P3 bekliyor Mesajı kim alır? Çözümler Bu iki proses için de bir link kurulmasına izin verilebilir. Receive işlemini yapacak en fazla bir prosese izin verilebilir. Sistemin hangi prosesin alım işlemini yapacağına karar vermesi sağlanabilir. P2 veya P3 veya her ikisi birlikte.

Buffering Kapasite: Bir linkin , içinde geçici olarak barındırabileceği mesajların sayısını gösteren bir kapasite tanımlaması vardır. Bu özellik linkle ilişkili mesajların bir kuyruğu olarak düşünülebilir. Bu kuyruğun uygulanmasında 3 temel yol vardır : Zero Capacity: Kuyruğun maksimum boyu 0 ‘dır. Bu yüzden link bekleyen hiçbir mesaj içeremez. Bu durumda gönderici alıcının mesajı almasını beklemelidir. Bu senkronizasyona randevu denir. Bounded Capacity:Kuyruk sınırlı n boyuna sahiptir. Bu yüzden içinde n mesajı barındırabilir. Eğer kuyruk dolu değil ise yeni mesaj gönderildiğinde kuyrukta yerini alır. Bu göndericinin beklemeden yeni bir mesaj daha gönderebilmesini sağlar. Bunun yanında kuyruğun bir kapasitesi vardır. Kuyruk dolunca gönderici kuyrukta yer boşalıncaya kadar beklemek zorundadır. Unbounded Capacity:Kuyruk potansiyel olarak sınırsız büyüklüktedir. Bu yüzden istediği kadar mesaj gönderebilir. Gönderici asla beklemez.

Mesaj geçirme/senkronizasyon

Örnek: POSIX Shared Memory Posix paylaşılmış bellek alanı bellek-eşlemeli dosyalar kullanılarak organize edilmiştir. Bir proses öncelikle shm_open sistem çağrısını kullanarak bir shared-memory object yaratır. Parametreler: Name: shared memory object adı 0_CREAT: eğer name henüz ulaşılamıyorsa 0_RDRW: eğer name nesnesi okuma yada yazma için açılmış ise 0666:Shared-memory object için dizin erişimleri Sistem çağrısı başarılı olduğunda işletim sistemine shared-memory nesnesi için bir integer file descriptor döndürür. Nesne yaratılınca ftruncate(shm_fd,4096) nesnenin kaç byte lık olduğunu belirler. Son olarak mmap fonksiyonu shared-memory nesnesini içeren bir memory-mapped file oluşturur.

Örnek: Win 2000 Proses haberleşmesinde mesajlaşma kullanılır. Mesaj-geçirme özelliği, LPC(Local ProcedureCall) olarak adlandırılır. Win 2000, iki proses arasındaki iletişim için bir port nesnesi kullanır. Bağlantı portu İletişim portu

Win 2000 Bağlantı portları, uygulamalar için iletişim kanallarının kurulmasına olanak tanırlar: Client, alt sistemin bağlantı port nesnesine bir handle açar. Client, bağlantı isteği gönderir. Server, iki özel iletişim portu yaratır, handle’ı bunlardan birine client’a döndürür. Client yada server, port handle’ı, mesaj göndermek geri mesaj almak yada cevapları dinlemek için kullanır.

LPC Portaların Kullanımı Client address space Kernel address space Server address space Connection port Message queue Client process Client communication port Server process Server communication port Handle Client view of section Handle Server view of section Shared section

Client-Server İletişimi Sockets Remote Procedure Calls

Soketler Soket: İletişimin bitiş noktasıdır. Network üzerinden haberleşmek isteyen bir çift proses, bir çift soket kullanır. Soket: bir port numarası ile bitiştirilmiş bir IP adresi ile tanımlanır. Server, gelen Client istekleri için bir portu dinler. Bir istek cevaplandığında, client soketinden bir bağlantıyı iletişimi tamamlamak için kabul eder. Özel servisler uygulanır. telnet server 23 nolu portu dinler ftp server 21 nolu portu dinler http server 80 nolu portu dinler 1024 altındaki portlar standart servislerin sağlanması için ayrıllmış portlardır.

Soket İletişimi Client bir bağlantı isteği gönderiyor bu istek 1024 den büyük bir port ile ilişkilendiriliyor. Bir web server client isteğini 80 portu üzerinden dinliyor. Her bağlantı bir çift unique soket çiftinden oluşur.

Soket Bağlantı Örneği

Soket Bağlantı Örneği

Remote Procedure Call Port basit olarak bir mesaj paketinin başlangıcına dahil edilmiş bir numaradır. Eğer bir remote proses bir servise ihtiyaç duyarsa, o zaman mesajlarını uygun olan porta adresler. Örneğin, bir sistem, diğer sistemlerin kendi üzerindeki kullanıcılarını dinlemesine izin verdi. O zaman, bir daemon programa sahip olmalıdır. daemon program bir porta atanmış bir RPC’yi desteklemelidir (örn port 3027). Şu halde, herhangi bir uzak sistem, ihtiyacı olan bilgiyi serverdaki port 3027 ye rpc mesajını göndererek sağlayabilir. Veri bir reply mesajı ile iletilecektir.

RPC işletimi