Paralel çalışan iki prosese ait kodlar aşağıdaki gibidir. Öyle bir işletim şekli bulun ki ekrana x = 10
yazılsın?
Shared int x;
Proses_1 l Proses_2
x=10; l x=10;
while(true) { l while(true) {
x=x-1; l x=x-1;
x=x+1; l x=x+1
if (x !=10){ l if (x !=10){
printf("x = %d",x); l printf("x = %d",x);
} l }
} l }
NOTLAR
‐ x değişkeni, her iki proses tarafından paylaşılmaktadır.
‐ xin 1 arttırılması ve azaltılması atomiktir yani bölünemez.
‐ İstenen şey, planlayıcının ne şekilde anahtarlanacağı ile ilgilidir.
ÖRNEK ÇÖZÜM ŞABLONU
Satır No Proses_1 Satır No Proses_2
1 x=10
2 x=9
3 x=10
4 x=10 (şart sağlanmıyor)
2 x=9
4 x=11 (şart sağlanıyor)
5 x=11 (yanlış çözüm 􀀯)
Ok işaretleri CPUnun anahtarlandığı zamanları göstermektedir. Bulunması gereken şey de bu okların nerelere yerleştirileceği ile ilgilidir.
yazılsın?
Shared int x;
Proses_1 l Proses_2
x=10; l x=10;
while(true) { l while(true) {
x=x-1; l x=x-1;
x=x+1; l x=x+1
if (x !=10){ l if (x !=10){
printf("x = %d",x); l printf("x = %d",x);
} l }
} l }
NOTLAR
‐ x değişkeni, her iki proses tarafından paylaşılmaktadır.
‐ xin 1 arttırılması ve azaltılması atomiktir yani bölünemez.
‐ İstenen şey, planlayıcının ne şekilde anahtarlanacağı ile ilgilidir.
ÖRNEK ÇÖZÜM ŞABLONU
Satır No Proses_1 Satır No Proses_2
1 x=10
2 x=9
3 x=10
4 x=10 (şart sağlanmıyor)
2 x=9
→ 1 x=10
←
3 x=11←
4 x=11 (şart sağlanıyor)
5 x=11 (yanlış çözüm 􀀯)
Ok işaretleri CPUnun anahtarlandığı zamanları göstermektedir. Bulunması gereken şey de bu okların nerelere yerleştirileceği ile ilgilidir.