You are on page 1of 29

Bai on tap:

ong bo hoa tien trnh

Cau 1 : 2 nhu cau trao oi thong tin cua tien trnh nham :
a. Chia se tai nguyen chung, Phoi hp hoat ong
b. X ly song song , Phoi hp hoat ong
c. Bao am oc lap, Thong bao loi

ap an : a

11/8/2005

Tran Hanh Nhi

Bai on tap 3 :

ong bo hoa tien trnh

Cau 2 : Race Condition la


a. Ket qua thc hien tien trnh phu thuoc vao ket qua ieu phoi
b. Hien tng cac tien trnh chia se tai nguyen chung
c. Ket qua tien trnh thc hien luon luon sai

ap an : a

11/8/2005

Tran Hanh Nhi

Bai on tap 3 :

ong bo hoa tien trnh

Cau 3 : Critical section la


a.
b.
c.
d.

Tai nguyen dung chung gia cac tien trnh


C che bao ve tai nguyen dung chung
oan chng trnh co kha nang gay ra hien tng race condition
oan chng trnh co truy cap tai nguyen dung chung

ap an : c

11/8/2005

Tran Hanh Nhi

Bai on tap 3 :

ong bo hoa tien trnh

Cau 4 : 2 nhu cau ong bo tien trnh la :


a.
b.
c.
d.

Ho hen , Phoi hp hoat ong


Trao oi thong tin, Phoi hp hoat ong
oc quyen truy xuat , Giai quyet tranh chap
Khong co cau nao ung

ap an : d

11/8/2005

Tran Hanh Nhi

Bai on tap 3 :

ong bo hoa tien trnh

Cau 5 : Cho biet cac ieu kien cho mot giai phap ong bo
tot
ap an :
Mutual Exclusion : Khong co hai tien trnh cung trong mien
gang cung luc
Progess : Mot tien trnh tam dng ben ngoai mien gang
khong c ngan can cac tien trnh khac vao mien gang
Bounded Waiting : Khong co tien trnh nao phai ch vo han
e c vao mien gang.
Khong co gia thiet nao at ra cho s lien he ve toc o
cua cac tien trnh, cung nh ve so lng bo x ly trong
he thong
11/8/2005

Tran Hanh Nhi

Cau 6 : Xet giai phap phan mem do Dekker e ngh e to chc truy xat oc quyen cho hai
tien trnh . Hai tien trnh P0, P1 chia se cac bien sau :
var flag : array [0..1] of boolean; (khi ong la false)
turn : 0..1;
Cau truc mot tien trnh Pi ( i =0 hay 1, va j la tien trnh con lai ) nh sau :
repeat
flag[i] := true;
while flag[j] do
if turn = j then
begin
flag[i]:= false;
while turn = j do ;
flag[i]:= true;
end;
critical_section();
turn:= j;
flag[i]:= false;
non_critical_section();
until false;
Giai phap nay co phai la mot giai phap ung thoa man 4 yeu cau khong ?

Cau 6: ap an

ung.
Giai phap nay bao am yeu cau oc quyen truy xuat v khi
ca 2 tien trnh Pi va Pj ong thi quan tam en viec vao mien
gang (flag[i]=true va flag[j]=true) th ch co mot tien trnh
c vao mien gang tuy theo gia tr cua turn.

11/8/2005

Neu tien trnh Pi ang x ly Non_criticalsection, th trc o


flag[i] a c gan gia tr false, do vay khong ngan can Pj
quay lai criticalsection

Tran Hanh Nhi

Cau 7 : Xet giai phap ong bo hoa sau :


while (TRUE) {
int j = 1-i;
flag[i]= TRUE; turn = i;
while (turn == j && flag[j]==TRUE);
critical-section ();
flag[i] = FALSE;
Noncritical-section ();
}
ay co phai la mot giai phap bao am c oc quyen truy xuat khong ?

ap an :
Khong. Xet tnh huong khi flag[0] =1; turn =0=> P0
vao CS, neu luc o flag[1]= 1, P1 co the gan turn = 1
va vao luon CS !

Cau 8 : Gia s mot may tnh khong co ch th TSL, nhng co ch th Swap co kha nang hoan
oi noi dung cua hai t nh ch bang mot thao tac khong the phan chia :
procedure Swap() var a,b: boolean);
var temp : boolean;
begin
temp := a;
a:= b;
b:= temp;
end;
S dung ch th nay co the to chc truy xuat oc quyen khong ? Neu co, xay dng cau
chng trnh tng ng.

Cau 8: ap an

while (TRUE)
{

11/8/2005

key = TRUE;
while ( key = TRUE)
Swap(lock,key);
critical-section ();
lock = false;
Noncritical-section();

Tran Hanh Nhi

Cau 9 : Xet hai tien trnh sau :


process A {
while (TRUE) na = na +1;
}
process B {
while (TRUE) nb = nb +1;
}
a. ong bo hoa x ly cua hai tien trnh tren, s dung hai semaphore
tong quat, sao cho tai bat ky thi iem nao cung co nb < na <= nb
+10
b. Neu giam ieu kien ch la na <= nb +10, giai phap cua ban se c
sa cha nh the nao ?
c. Giai phap cua ban co con ung neu co nhieu tien trnh loai A va B
cung thc hien?

Cau 9: ap an
ap an : semaphore a = 0 ; b = 10 ;
Process A()
{

Process B()
{

int item;

int item;

while (TRUE)

while (TRUE)

{
down(b);

down(a);

na = na + 1;

nb = nb + 1;

up(a);

up(b);

}
11/8/2005

Tran Hanh Nhi

Cau 10 :

Mot bien X c chia se bi hai tien trnh cung thc hien oan code
sau :
do
X = X +1;
if ( X == 20) X = 0;
while ( TRUE );
Bat au vi gia tr X = 0, chng to rang gia tr X co the vt qua 20.
Can sa cha oan chng trnh tren nh the nao e bao am X
khong vt qua 20 ?

Cau 10: ap an
ap an :

11/8/2005

Semaphore mutex = 1;
do
{
down(mutex);
X = X +1;
if ( X == 20) X = 0;
up(mutex);
}while ( TRUE );

Tran Hanh Nhi

Cau 11 :

Xet hai tien trnh x ly oan chng trnh sau :


process P1 { A1 ; A2 }

process P2 { B1 ; B2 }

ong bo hoa hoat ong cua hai tien trnh nay sao cho ca A1 va B1 eu
hoan tat trc khi A2 hay B2 bat au .

Cau 11: ap an
ap an : semaphore ab = 0 ; ba = 0 ;
Process A()

Process B()
{

B1;

A1;
up(ba);

up(ab);

down(ab);

down(ba);

A2;

B2;
}

11/8/2005

Tran Hanh Nhi

Cau 12 :

Tong quat hoa cau hoi 8) cho cac tien trnh x ly oan chng trnh
sau :
process P1 { for ( i = 1; i <= 100; i ++) Ai }
process P2 { for ( j = 1; j <= 100; j ++) Bj }
ong bo hoa hoat ong cua hai tien trnh nay sao cho ca vi k bat ky
( 2 k 100), Ak ch co the bat au khi B(k-1) a ket thuc, va Bk ch
co the bat au khi A(k-1) a ket thuc.

Cau 12: ap an
ap an : semaphore ab = 1 ; ba =1 ;
Process A()

Process B()
{

for ( i = 1; i<=100; i++)

for ( i = 1; i<=100; i++)

down(ba);

down(ab);

Bi;

Ai;

up(ab);

up(ba);
}

}
}

11/8/2005

Tran Hanh Nhi

Cau 13 :

S dung semaphore e viet lai chng trnh sau theo mo hnh x ly


ong hanh:
w := x1 * x2
v := x3 * x4
y := v * x5
z := v * x6
y := w * y
z := w * z
ans := y + z

ap an :

process P1
P1
P2
{ w := x1 * x2 ;
up(s15) ;
P3
up(s16) ;
P5
P6
}
process P2
P7
{ v := x3 * x4 ;
up(s23) ;
up(s24) ;
}
process P3
{
down(s23) ;
y := v * x5 ;
up(s35) ;
}
process P4
{
down(s24) ;
z := v * x ;
up(s46) ;
}
11/8/2005

P4

process P5
{
down(s15) ;
down(s35) ;
y := w * y ;
up(s57) ;
}
process P6
{
down(s16) ;
down(s46) ;
z := w * z ;
up(s67) ;
}
process P7
{
down(s57) ;
down(s67) ;
ans := y + z ;
}

Tran Hanh Nhi

Cau 14:
Cho mng sau:
int x[20];
S dng c ch ng b ho l semaphore vit code cho 3 threads
B,C,D cng thc hin ng thi cc thao tc trn mng x tho mn
cc yu cu sau:
a. B tnh tng gi tr cc phn t mng x c ch s chn.
b. C tnh tng gi tr cc phn t mng x c ch s l.
c. D tnh tng gi tr tt c cc phn t ca mng x, da trn kt qu tr
v ca B v C.
d. Cc threads c khi ng cng lc.
e. Cc threads kt thc khi xong cng vic ca mnh, khng cn ch ln
nhau.
f. Phi khai thc ti a kh nng x l song song,chia s ti nguyn dng
chung ca cc threads.

11/8/2005

Tran Hanh Nhi

Cau 14 Cach 1:
ap an : semaphore overB =0, overC =0 ;
Interger sumB, sumC = 0;
Process B()

Process C()

Process D()
{

{
for(i=0;i<9,i++) {

for(i=0;i<9,i++){

down(overB);

sumB +=x[2*i];

sumC +=x[2*i+1];

down(overC);

sum=sumB+sumC;

up(overB);

up(overC);

}
}
11/8/2005

Tran Hanh Nhi

Cau 14 Cach 2:
ap an : semaphore over=0;
Interger sumB, sumC = 0;
Process B()

Process C()

Process D()
{

{
for(i=0;i<9,i++) {

for(i=0;i<9,i++){

down(over);

sumB +=x[2*i];

sumC +=x[2*i+1];

down(over);

sum=sumB+sumC;

up(over);

up(over);

}
}
11/8/2005

Tran Hanh Nhi

Cau 14 Cach 3:
ap an : semaphore mutex=1;
Interger sum=0;
Process B()

Process C()

{
for(i=0;i<9,i++) {

for(i=0;i<9,i++){

down(mutex);

down(mutex);

sum +=x[2*i];

sum +=x[2*i+1];

up(mutex);

up(mutex);

}
11/8/2005

Process D()

Tran Hanh Nhi

Cau 14 Cach 3:
ap an : semaphore mutex=1, over=0;
Interger sum=0;
Process B()

Process C()

Process D()
{

{
for(i=0;i<9,i++) {

for(i=0;i<9,i++){

down(over);

down(mutex);

down(mutex);

down(over);

sum +=x[2*i];

sum +=x[2*i+1];

up(mutex);

up(mutex);

up(over);

up(over);

}
11/8/2005

Tran Hanh Nhi

Cau 15:
Mt hng sn xut xe t c cc b phn hot ng song song:
+ B phn sn xut khung xe:
MakeChassis() { //Sn xut ra mt khung xe
Produce_chassis();
}
+ B phn sn xut bnh xe:
MakeTire() {
//Sn xut ra mt bnh xe
Produce_tire();
}
+ B phn lp rp: Sau khi c c 1 khung xe v 4 bnh xe th tin hnh lp rp
4 bnh xe ny vo khung xe:
Assemble(){
//Gn 4 bnh xe vo khung xe
Put_4_tires_to_chassis();
}
Hy ng b hot ng ca cc b phn trn tho cc nguyn tc sau:
Ti mi thi im ch cho php sn xut ra 1 khung xe. Cn ch c 4 bnh xe
gn vo khung xe hin ti ny trc khi sn xut ra mt khung xe mi.
11/8/2005

Tran Hanh Nhi

Cau 15: ap an
Semaphore chassis=0, tire=0, wait=1;
Make_Chassis()

Make_Tire()

down(wait);

produce_Tire()

down(tire);

produce_chas();

up(tire);

down(chassis);

up(chassis);

down(chassis);

Assemble()
{

down(chassis);
Put_4_tires_to_chassis();
up(wait);
}

11/8/2005

Tran Hanh Nhi

Cau 16:
Trong giai on th nghim, hm ng b qua o Hi Vn ch cho php cc phng
tin lu thng qua hm vi s lng hn ch v vi nhng iu kin nghim ngt. Khi
mt phng tin n u hm s gi hm EnterTunnel(direction) kim tra iu kin
vo hm. Khi qua hm s gi hm ExitTunnel(direction) bo hiu kt thc v ri
hm.
Gi s hot ng ca mi mt phng tin c m t bng tin trnh Car() sau y:
Car(direction)
//Direction xc nh hng
di chuyn ca phng tin
{
RuntoTunnel();
//Phng tin di chuyn v pha hm
EnterTunnel(direction);
//i vo hm theo hng direction
PassTunnel();
//Qua hm
ExitTunnel(direction);
//Ri khi hm theo hng
direction.
}
Hy vit li cc hm EnterTunnel(direction) v ExitTunnel(direction) kim sot giao
thng qua hm sao cho:
a. Ti mi thi im ch cho php ti a 3 phng tin lu thng qua hm theo hng
bt k.
b. Ti mi thi im ch cho php ti a 3 phng tin lu thng cng hng qua hm.
11/8/2005

Tran Hanh Nhi

Cau 16.a: ap an
Semaphore max=3;
EnterTunnel(direction)
{

ExitTunnel()
{

down(max);

...

...

up(max);

11/8/2005

Tran Hanh Nhi

You might also like