Ch4.pdf

#$
%
, #< 9'
' )" *
6 .5
:5
!"
& !"
4 /
6 7 8 " 9 ! ' : )" *
." =* , #<
)" #
)" *
9 ! '
! 9 *
" " ?@'
. "
A
"#B 5C 8 6
&
:)
)" *
'( )
) " * + , -.
)" *
)" * / ' 0
12 "0
. )" * : % @
5C 8
.5
" D 4) 9' ) " * :
.5 6 7 8 " ) " *
-EC # " :
. " F " + 5 G )" * : !
."# " " H B !) " * : 9' 5 " I ) " * : "
.5 9
* ( * ) " * 6 :# $ %
/ - 9 4 M"#
6 !) " *
+ ) " * : JK 9GLC
"
. ' G ! 5C 8 " + 6 " I " )
)" * 5
" )" *
1
(PCB)
)" * 7
:
N# ' : ) " O
'
),. Q
&' (
'
. 1 2 " )" *
."#
P@
PCB
) " * 5C 8
9 ! ' ! !) " *
, R
!) " *
'( ),. Q
9G 8 5
,. Q
Accounting , . Q
6+ B / "+ + 5 ES+ , . Q
(PCB)
&' (
-
#
+
!
,!
2
%
./
%<
)" * # O
%
) " * + , -.
)" *
)" * / ' 0
12 "0
4 /
2
3/
-0
./
" ./
12
) " * - 9.#-D
9' " I %<
G + " I+
2
. !#
< 9G 8 (+ " 9
) " * - 9.#-D
. 6
'
&! link list : , #< 9' T#-E
& "
%<
6+ B / "+ + & " : U * G 9
) " * 9.#-D
." " "#B 9' 0#' %< & " . 2
%
2(&
4!
3
%
%< / '
'
(#
.12
'( )5
V
' )" *
)" * @ ! .
5 8
'( )% @
."#
D! ' ( ) J # %< " D' 6
/ ' ' M"#
! #B
!#
9'
'9
) " * :(
.
'( ) ),
@ ! !# K
=C "#
) " * :( !) " * ' ( ) ) ,
(I B "
!) " * +
(#
)
# '( )
@ ! "# 6
C # , #< 9' ,
# '( )
. 'Y
2' '
! #B
, ! 9' ,
' '( )
. '
96 " ,
' '( )
& !'
7
, #< 9' ! #
9 ! '" E 9
. !#
%
...5 / - ) " * :
7 -. 9'
'( ) E M
9EZ[ 9' ) ! ) " * / ., L
." "
H B , L 9'
'( )
C+ '
9EZ[ 9' ) ! ) " * / .
%
' '( )
" I %<
.
'9
." =4
)
' 6+ B/ "+ + 9' "+ L
" H B 6+ B/ "+ +
!) " * ( ) " E C+ #
E M ' !) " * 9' "+ L
6+ B/ "+ + 7 -.
"
." " !) " * ( ) " E 1
P@
'( )/
=4 ' 9G 8 " ( -
(#
9
9
, (
'( ):
." "
& ! '
< 9G 8 (+ " 9'
%
.
12
B '
) " * 9C" 5 C#\2
. '
96 " / ' ' + " "
)
'
< 9G 8 )
)" *
. " ?
&" )" *
) ]* 5 / .
! #B
4
5
%6
%
(Context Switch) # 6 8 9:
% & #$ 7
9' " %[#
) " * 6 #B
!) " * [+
7+ ) " * , . Q ' 1 2 M") " $' & " ) " * 6
.
=4 ' +" ) " * 9' 0#' , . Q +
B^
( )/ "12 +5
, -. / )
5@
!
' : 9 ) _ #E ( )
. " D!
O
! # -!
*(
) 9 ) _ #E ( )
." =*
R
;
)" * # O
)" *
'( )
5 6(4
) " * 5 / - "#B 9
) " * 5B " :
Y'
;
2
4 /
!)
"D
N
)" * * )" *
& " !)
. "
% @
. ! =4 N
9' "#B Y' 9- ( !) + *
. ! ' N
9'
* Y' ) 9.#-D ) ( !)
. ! =4 -! N
9'
E ` ( !) + *
%
)" *
)" * / ' 0
12 "0
"D
)" * / .
) " * 9 "#
Y!
-L ' [ 8 )
* Y'
12
)
9.#-D ) 9' ( !) (" "+ L
' )" * ) " ) " E " D '
.
'
5
(#
)
)" *
. !#
.
6 % @
) " * 9G 8
>?6! < =60 +
3
5C 8
6 !+ - , #< 9' ( !) + *
< !)
)" * (
( * 9'
.5
* ) " * 9 ! ' 9!
.
;
)" *
* )" *
a % @
5C 8
* )" * )
$ : !)
6 b"#B 9 ! ' !)
)" *
)" *
] !# ) 7 c :
.
"D
6 ) " * : fork - 2
! #B
6 9 ! ' "#
" O exec - 2
! #B ) ]$
.
=4 '
" D ) " * 9G 8 a
"
2
(I
) "O
9'
"
." 4
' "#B -EC # " / BI 6 ) ]* ) " *
#B
. 1 2 ) exit - 2
! #B
. "( *
* ) " * 9' (I 6+ B
]* ) '
%
) " * 9'
' !)
"" H
)" * : )" * 4
."#
B Y'
.12
(#
( * ?! !)
6 9' )
)
2
T" 9' 5 / -
%
* )" * :
: "
.5 9
(I 9'
" " H B Y' ) !)
.52 ! ) ! " # & " !) 9'
=4 + 9O d+
)6
. 1 2 + " ( * "#B 9' #B
* )" *
" 9 " "#B 4 !) 9' * e " !)
) " * " -!
.(
'I " ( *)
6
?4
R
)" * # O
)" *
'( )
) " * + , -.
?4
)" * / ' 0
12 "0
4 /
&A B -
& 6 :# =
-
)" * J # 9
C#
. ! 4
+
&!
9G 8 :" " "#6+ 9C 2
)" * )
. Q
[ "O " #
8
.
9G 8 +
)" * / ' 0
."#
&"
. ! =&' R
)" *
&
6 + ! # -! K 2 ) " * :
."# R
!I 6 ) + " =&'
+ 5 / )" *
)" *
- Y
,. Q
=4 N
9'
, L 5. ?
&! - *
'
8
' D # $
2
6-! 6 # $
9!#-!
N
""
#define BUFFER_SIZE 10
Typedef struct {
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
C# ) " *
f
' ,+ O g +"
! &! 9G 8
:" " "#6+ Q
! +"
9 B " * +" " # 9' ?@' / " .N
C
"
. BUFFER_SIZE – 1 c 8 #a8 ) 6 8 /
. "
&! 9G 8
7
& 6 :
item nextProduced;
&A B
item nextConsumed;
while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
6 E F:
4 /
)" * # O
)" *
'( )
) " * + , -.
)" *
6 E F:
12 "0
' !# ' )" * 5
! IPC
)" * / ' 0
.
( - "#B
5CE +
[ '0 1
9' ) ! (+ ' "
)6
) " * 9'
!
*12
.
[ '0
&
'N
9G 8
: !#
1 IPC J # ) , -. +"
send (message)
receive (message)
... ' M
.
.
[ '0
&
'
#@' Q + P 4
[ ' "#B / ' (comm. link) Q 7
:
9C"
* receive + send ) " O '
8
0
6
G0
9' '
)" * /' 0
..." " U * ,T #\ B '
)
<6, = E F:
" *) ?*
.
P@
i < , #< 9'
.
.
h !#
[ ' ,T
9!#&
h" " H B ) " * +" ) ? ' 9' 7
: (#
I
9 " "#6+ A * 9C" 7 8 " ) " * +" / ' ! #
7
" E 9
h '
h5
K 7
: 5 d
h A 5 5' R
7
!#
7
9
A * 7#Q I
h9 Q+" 5 9 Q : 7
I
"Q
5
j+ < : 9
"
( 4" )
." " " 9'
[ '0
2*
L 9
!#
.
Q
2* j+ < : ) " * +" 9 "#
"D
Q
(#
, @
) <6, = 6H E F:
Q
, -.
6
: 2* j+ <
#< "
)" *
'9 "N
2*
2*
, @
#< "
7
. '9 "N
. '
"" H B " E
) " * 9' 5 / - 7
:
. ! =&' N
9' Q 7
/
5 / ) " * +"
. ' 9 Q +" 9 Q : 5 / - 7
,T
"D
"#B , #< 9' ,T
. '
H B Q
" 1 ' 9 ) " * +" 9' K [" 7
." " "#6+ 7
: K [" M0
" ) " * +" / '
.5 9 Q+" , #< 9' T#-E M ' 9 Q : 5 / - 7
j+ < 9'
A*
. !#
5 "
,T
' )" *
) " * 9'
A * : Msend (P, message)
)" * )
A * : Mreceive (P, message)
. !#
<6, = 6H E F:
!I ) +
&" )" * !
P
7
2* j+ < " D
j+ < ) A * 5 " + 7
2* j+ < : (" ' / ')
Q
.
A
7
5
"A
, # "
2* j+ < 9'
A * : Msend (A, message)
2* j+ < )
A * : Mreceive (A, message)
.
9
(#
) <6, = 6H E F:
N
. ! =4
.
2 -4
2* j+ <
%[#
9' A 2* j+ < P3 + P2 + P1
" P3 + P2 k
7
A * P1
h
5 "
A* 2 9
N
5
8
.
.
. ' H B ) " * +" c 8 9' 7
"< 5 "(
' ) 6 ) " * : 9' c 8 ( )
"
@ ! #@C" , #< 9'
)" * )
9 ' ) 6 1 2 9'
. 'l Q
!) " * 9'
! 4 )" *
6-! 6 # $
e (blocking)
%[# 5 / -
* 9C"
. '
+ &- m 9'
%[# e +
%[#
* 9C"
. !#
9 4 G! " &- e
+
%[# 5 / - receive + send , # "
. '
%[# e
) " * +" / ' 4" E : M '
%[# # " +"
4
.5 " 1 #B
63I
."
9 S 7
9' A * %< : ( #
:
' 9 " 5C 8 9 %< / 5 / O< 7#Q 9' M O< 5 d
.( 4" E ) ! -'
! 4 G
'
"+ L 5 d
.
' *7
9
!
G
#< "
"+ L ! 5 d
. !
-! G
JK &/
D
)" * # O
)" *
'( )
) " * + , -.
)" *
)" * / ' 0
< =60 E F:
&n
10
& 0
9 4 G! " 0
P@
.25 .19 .8 ( '
& 0 E F:
[ '
' ! * 9ZK! : ( # . 9' 5 #
."#
- : + IP V "I : ' 5 # :
."#
, #*
+ 1625 , #* 9' 161 .25 .19 .8 :1625 5 #
.
161
." =*
, #< 5 # +" / ' 0
4:
.
"U *
( * ,T # / 9'
8 M7 M6 M5 M 4 M 3 M 1
.
7
"
" 9' #
" c 8
"#B
U *
B
-! )
-!
- ! (" " 5 " ) =
- (" " 5 " ) =
U *7
U *7
!
" )+ 9 ) - B
" )+ 9 ) ? ' B
11