bÖlÜm 4

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

Upload: marcellus-alston

Post on 30-Dec-2015

26 views

Category:

Documents


5 download

DESCRIPTION

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) - PowerPoint PPT Presentation

TRANSCRIPT

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)

Program Counter

Parent PID

Handle Table

Process ID (PID)

Registers

Next Process Block

Image File Name

PCB

List of ThreadControl Blocks

List of open files

This is an abstract view Windows implementation of PCB is

split in multiple data structures

Next TCB

Thread Control Block (TCB)

Process Block (!process)

PROCESS ff704020 Cid: 0075 Peb: 7ffdf000 ParentCid: 005d DirBase: 0063c000 ObjectTable: ff7063c8 TableSize: 70. Image: Explorer.exe VadRoot ff70d6e8 Clone 0 Private 229. Modified 236. Locked 0. FF7041DC MutantState Signalled OwningThread 0 Token e1462030 ElapsedTime 0:01:19.0874 UserTime 0:00:00.0991 KernelTime 0:00:02.0613 QuotaPoolUsage[PagedPool] 18317 QuotaPoolUsage[NonPagedPool] 3824 Working Set Sizes (now,min,max) (727, 20, 45) (2908KB, 80KB, 180KB) PeakWorkingSetSize 757 VirtualSize 29 Mb PeakVirtualSize 31 Mb PageFaultCount 1396 MemoryPriority FOREGROUND BasePriority 8 CommitCharge 250

EPROCESS address Process ID Address of process environment block

Process ID ofparent process

Time the processhas been running,divided into Userand Kernel time

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

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

inc countadd data, valwrite file

wait for I/O

load valinc valread from file

wait for I/O

CPU burst

CPU burst

CPU burst

I/O burst

I/O burst

I/O burst

…load valinc valread file

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 Processessmss.exe Session Manager

The first “created” process Takes parameters from \HKEY_LOCAL_MACHINE\System\CurrentControlSet

\Control\Session ManagerLaunches required subsystems (csrss) and then winlogon

csrss.exe Windows subsystemwinlogon.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 Serveruserinit.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;

{

İletişim Modelleri

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

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.

...

Mesajlar: Prosesler tarafından gönderilen mesajlar 3 şekilde olabilirler : Sabit boyda Değişken boyda Özel tipli

Ö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 addressspace

Kernel addressspace

Server addressspace

Messagequeue

Connection port

Client process Server process

Handle

Handle

Server viewof section

Handle

Client viewof section

Sharedsection

Clientcommunication

port

Servercommunication

port

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 (196.110.25.11:1625 ). 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.

Soket İletişimi

Her bağlantı bir çift unique soket çiftinden oluşur.

Soket Bağlantı Örneği

Time-Of-Day-Server The Client

Remote Procedure Call

Bunun en bildik paradigmalarından birisi RPC diagramıdır.

Bu diagram, procedure-call mekanizmasının sistem ve network bağlantıları arasıda kullanılması içindir.

...

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 bekletici programa sahip olmalıdır. Bu bekletici program bir porta (örn 3027) atanmış bir RPC’yi desteklemelidir. Şu halde, herhangi bir uzak sistem, ihtiyacı olan bilgiyi, RPC mesajını Serverdaki port 3027 ye göndererek sağlayabilir. Veri bir reply mesajı ile iletilecektir.

RPC işletimi