Professional Documents
Culture Documents
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
Bai on tap 3 :
ap an : a
11/8/2005
Bai on tap 3 :
ap an : c
11/8/2005
Bai on tap 3 :
ap an : d
11/8/2005
Bai on tap 3 :
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
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
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();
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
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 );
Cau 11 :
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
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()
{
down(ba);
down(ab);
Bi;
Ai;
up(ab);
up(ba);
}
}
}
11/8/2005
Cau 13 :
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 ;
}
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
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
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
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()
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
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
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
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
Cau 16.a: ap an
Semaphore max=3;
EnterTunnel(direction)
{
ExitTunnel()
{
down(max);
...
...
up(max);
11/8/2005