Transcript BÖLÜM 4

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)
Parent PID
 This is an abstract view
 Windows implementation of PCB is
split in multiple data structures
…
Next Process Block
List of open files
PCB
Handle Table
Image File Name
List of Thread
Control Blocks
…
Thread Control Block (TCB)
Next TCB
Program Counter
Registers
…
Process Block (!process)
E P R O C E S S a d d re ss
Physical address
of Page Directory
P ro ce ss ID
A d d re ss o f
p ro ce ss e n viro n m e n t b lo ck
P ro ce ss ID o f
p a re n t p ro ce ss
PROCESS ff704020
Cid: 0075
Peb: 7ffdf000
ParentCid: 005d
DirBase: 0063c000
ObjectTable: ff7063c8
TableSize:
70.
root of the process’s
Image: Explorer.exe
Virtual Address
VadRoot ff70d6e8 Clone 0 Private 229. Modified 236. Locked 0.
Descriptor tree
FF7041DC MutantState Signalled OwningThread 0
Token
e1462030
T im e th e p ro ce ss
ElapsedTime
0:01:19.0874
h a s b e e n ru n n in g ,
UserTime
0:00:00.0991
d ivid e d in to U se r
KernelTime
0:00:02.0613
a n d K e rn e l tim e
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
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
…
load val
inc val
read file
wait for I/O
CPU burst
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
Ü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 address
space
Kernel address
space
Server address
space
Connection port
Client process
Message
queue
Server process
Handle
Handle
Client view
of section
Client
communication
port
Server
communication
port
Shared
section
Handle
Server view
of 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 (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