E pi A pi pi pi
I
A T
A T
Tfi B'Tfi B'
I
pi
piHPOOPIKH
APXE TEXNOOIA OIMIKOY
B'
I
K T M H/Y pi
ATPA 2001
pi
pi
HPOOPIKH
APXE TEXNOOIA OIMIKOY
B'
EITOYPIKA YTHMATA I
AYO YPAKH
K T M H/Y pi
AANAIO XATZHAKO
Api. K T
E A pi
pi pi pi
ANAITH INTEA
T M pi
pi pi pi pi
HIA TAYPOOYO
pi
IANNH AANOOYO
pi
pi, pi
TYPORAMA
pi pi pi
/ 19972001
ISBN: 9605383330
K : H 11/2
Copyright 2000
pi & , 26222 : (0610) 314094, 314206 : (0610) 317244
. 2121/1993, pi pipi
pi pipi .
fi
............................................................................................................................................................................. 11
K pi 1
: fi
pi, pi, , ............... 13
1.1 .............................................................................................................................................. 15
1.2 ................................................................................... 16
1.3 .................... 18
1.3.1 (1940) .......................................................................................................... 18
1.3.2 pi (1950 1960) .............................................................................................. 18
1.3.3 (1959 1965) .......................................................................................... 20
1.3.4 (1965 1980) ................................................................................................. 20
1.3.5 (1980 1990) .......................................................................................... 21
1.3.6 pipi (1990 ) ..................................................................................... 22
................................................................................................................................................................................... 23
......................................................................................................................................... 23
.................................................................................................................................................. 24
K pi 2
pi, pi, , ............... 25
2.1 ............................................................................................................................................................. 27
2.2 ...................................................................................................................... 27
2.3 pi .............................................................................................. 28
2.3.1 ........................................................................................................ 28
2.3.2 pi 20 .................................................................................. 29
2.4 pi .............................................................................................................. 31
6 E I T O Y P I K A Y T H M ATA I
2.5 pi ............................................................................................................................. 33
2.5.1 pi pi ................................................................................................................................ 34
2.5.2 pi .................................................................................................................... 35
2.6 pi .............................................................................. 37
................................................................................................................................................................................... 38
......................................................................................................................................... 39
.................................................................................................................................................. 40
K pi 3
fi
pi, pi, , ............... 41
3.1 ................................................................................................................................................................. 44
3.2 pi ........................................................................................................................ 44
3.3 ........................................................................................................................... 45
3.4 pi ........................................................................................................................................ 47
3.5 pi pi ............................................ 48
3.6 pi .............................................................................................................................. 56
3.7 (pi ) ........................................... 57
3.7.1 pi ........................................................................................................ 57
3.7.2 (Semaphores) ....................................................................................................... 58
3.7.3 pi pi ................................................ 60
3.7.4 pi pi ....................................................................................... 65
3.7.5 pi .............................. 75
3.7.6 pi V hardware ............................................................................... 76
3.7.7 ................................................................................................. 79
3.8 pi .......................................................... 79
3.9 pi ................................................ 80
3.9.1 pi (The Bakery Algorithm) ............. 81
................................................................................................................................................................................... 83
......................................................................................................................................... 85
.................................................................................................................................................. 85
K pi 4
(Memory Management)
pi, pi, , ............... 87
4.1 (Preliminaries) ................................................................................................................. 92
4.2 (Bare machine) .......................................................................................................... 96
4.3 pipi (Resident Monitor) ................................................................................ 98
4.3.1 pi (Protection Hardware) ................................................................ 98
4.3.2 pi (Relocation) ..................................................................................................... 100
4.4 (Swapping) ........................................................................................................................... 103
4.4.1 pi (Backing Store) ............................................................................ 103
4.4.2 (Swap Time) ................................................................................... 104
4.4.3 pipi (Overlapped Swapping) ................................... 105
4.5 pi pi (Multiple Partitions) ......................................... 108
4.5.1 pi ....................................................................................................................... 109
4.5.2 pi (Fixed Regions) ............................................................................. 111
4.5.3 (Memory Fragmentation) .................................................. 118
4.5.4 (Variable Partitions) ...................................................... 119
4.5.5 pi (Compaction) ........................................................................................................ 125
4.6 pi (Paging) ............................................................................................................... 128
4.6.1 (Hardware) ....................................................................................................................... 129
4.6.2 ................................................................................. 132
4.6.3 pi pi ..................................................................................... 135
4.6.4 ............................................................................................................................... 138
4.6.5 ......................................................................................................................................... 138
7EP I E XOMENA
8 E I T O Y P I K A Y T H M ATA I
4.6.6 (Two Views of Memory) ............................... 141
4.7 pi (Segmentation) .................................................................................................. 143
4.7.1 pi ................................................................... 143
4.7.2 ...................................................................................................................................................... 144
4.7.3 pi pi
(Implementation of Segment Tables) ......................................................................... 147
4.7.4 .............................................................................................. 148
4.7.5 pi ( ) ................................ 151
4.8 (Combined Systems) ............................................................ 152
4.8.1 pi pi (Segmented Paging) .............................. 152
4.8.2 pi pi (Paged Segmentation) .......................... 153
................................................................................................................................................................................ 156
...................................................................................................................................... 158
............................................................................................................................................... 159
K pi 5
pi (Virtual Memory)
pi, pi, , ........... 161
5.1 pi ................................................................................................................................................... 165
5.2 pi .......................................................................................................................... 166
5.3 pi pi ..................................................................................... 173
5.4 ....................................................................................................................... 177
5.5 ............................................................................................................. 180
5.6 ...................................................................................... 182
5.6.1 FIFO ....................................................................................................................................................... 183
5.6.2 (Optimal Replacement) ......................................... 186
5.6.3 LRU (Least Recently Used) ............................................................................................... 187
5.6.4 LRU .............................................................................................................. 189
5.6.5 bits .................................................................................................... 190
5.6.6 ........................................................................... 191
5.6.7 pi ...... 191
5.6.8 pi pi .................... 192
5.6.9 .......................................................................................................................... 196
5.6.10 Ad Hoc ................................................................................................................ 197
5.7 ......................................................................................................................... 198
5.7.1 pi ............................................................................................ 199
5.7.2 pi ................................................................................ 200
5.7.3 .......................................................................................................... 201
5.8 (Thrashing) ........................................................................................................................... 203
5.8.1 pi ........................................................................................................................................ 204
5.8.2 (Working Set Model) ....................................... 205
5.8.3 ...................................................................................... 208
5.9 pi ..................................................................................................................................... 209
5.9.1 pi ........................................................................................................... 209
5.9.2 I/O (/0 Interlock) ............................................................. 210
5.9.3 .......................................................................................................................... 212
5.9.4 (pi) ............................................................................. 214
5.9.5 pi ........................................................................................................... 216
................................................................................................................................................................................ 218
...................................................................................................................................... 220
............................................................................................................................................... 221
9EP I E XOMENA
fi
pi 1999 2000, -
pipi pi, -
. pi pi -
pi-
.
pi pi pi
pi , / & -
. pi
pi pi . pi pi-
pi pi .
pi
. pi, pi -
pi . / ( -
/ ) pi, pi
. pi
pi
pi .
, . . -
pi, pi () pi
.
, 2000
pi
/ &
pi
E: fi
fi
pi
pi,
.
, :
, , .
pi .
.
pi
pi
pi
pi
pi pi :
1 pi
1 4 K E A A I O 1 . E pi : pi pi pi pi pi
1.1
1.2
1.3
1.1
pi pi pi
(pi.. pi, , , -
pi) /. pi pi -
assembly, pi C. pi-
pi pi -
( , hardware).
, pi pi :
(pi.. , hardware) pi
/ pi pi ( pi pi-
pi, pi ,
.).
/.
1. pi pi pi
/. pi / :
E/E
pi
pi (pi.. , )
1 51 . 1 pi pi
X 1
X 4
X 2
X 3
YX( )
EpiX
E
X
M
Q
1.1
- - /
1 6 K E A A I O 1 . E pi : pi pi pi pi pi
2. pi / pi pi- pi pi pi, , - pi .
3. pi pi pi pipi ( pi, pipi pi .)
1.1 / .
1.2 fi
pi pi pi pi pipi pi- , pi pi pi pi- . pi pi pi :
1. pi. - pi ( pi) pi / . , - pi pi pi pi. pi / pi pi pi . pi pi pi .
2. . pi- pi pi pi pi, pipi- pi pi pi . - pi / pi. - ( pi) pi / pi , pi pi / . - pi pi pi pipi pi . pi, / pi . , pi pi pi
. pipi pi pi / ...
3. pi . -pi pi pi pi-. pi / . , pi, - . pi pi / pi pi . pipi pi / , - pi pi pi pi.
pi pi pi pi pi pi . - pi pi pi. pi pi, pi pi .
pi pi - . pi pipi. pipi - pi pi pi pi /., , pi / . pi pi - . pi pi pi /.
pi pi pipi . 1.2 pi .
1 71 . 2 pi pi pi
K M
E M
E
X( )
(1)X
X
1.2
1 8 K E A A I O 1 . E pi : pi pi pi pi pi
( ), ( ) pi -
. pi
pi pi . pi -
pi ,
. pi
.
pi
pipi, pipi. pipi pi-
pi , pi-
pi , .
pi , pipi. pi-
pipi pi -
pi pi pi, pi -
pi. pi
pi, pi , ,
pi .
pipi, pi ,
pi pi.
1.3 pi
, pi /, pi -
pi pi pi , pi
pi pi pi .
:
1.3.1 (1940)
pi pi .
pipi pi pi -
.
1.3.2 (1950 1960)
pi 1949 1956 pi /
. von Neumann
/ pi , pi-
.
(loading) pi, pi -
, pi ,
, , , pi /
pipi (). pi pi
(pi.. ) -
pi pi pi (loader), pi
pi pi pi -
. , -
pi (programming aids) pi. ,
, pi pi
(assemblers) -
, pi : -
assembler . assembler ( pi
) pi pi -
(library routines). pi pi pi
pi
( pi) (pi-
) pi.
pipi , (
pi pi , FORTRAN
, pi -
), pi pi
. pi batch pi :
, pi pi -
pi pi (system programms)
(pi.. assembler, compiler, ) pi
pi . ,
pi pi (relocatable) pi .
(linking loaders) . ,
pipi ( pi ) pi (source
code) pi (object code).
pi, pi pi pi -
pi .
, pi pi pi-
.
pi pi pi pi
1 91 . 3 pi pi pi pi pi
2 0 K E A A I O 1 . E pi : pi pi pi pi pi
pi , pi ( ) pi .
pi ( E/E)
.
1.3.3 (1959 1965)
1959 63 -
pipi . pi
hardware, pi, (data channel),
pi / /.
pi I/ pi pi (),
/ pi (-
) pi . pi
I/ () pi .
, pi pi pi
. , pi pi -
pi . -
pi pi pi
pi , pi I/ .
pipi pi pi
pi .
pi (software buffering), pi pipi,
pi, (queuing) pi -
. , pi
pi (interrupt handling), pi
(pi ) pipi I/ interrupt pi -
pi pi, pi pi.
1.3.4 (1965 1980)
() pi pi-
pi pi pi
pi pi IBM 360. pi 360
pi , , pi. -
(OS 360), pi ,
, pi pi .
, pi pipi (multi
programming). pi
(partitions), pi () pi -
. pi pi -
pi pi ( I/O) pi-
pi .
pi
pipi (pi ) , -
. Spooling (pi Simultaneous
Peripheral Operations on Line). Spooling pi
.
pi -
(time sharing), pi pipi, pi -
pi -
pi (interactive) pi -
CPU.
pi pi timesharing pi pi
MULTICS ( CTSS, pi MIT, Bell Labs General
Electric Unix), pi .
MULTICS Ken
Thomson ( Bell Labs) pi UNIX (
MULTICS PDP).
UNICS (Uniplexed Information and Computing Service), -
, B. Kernigham, UNIX.
pi pi Bell Labs, D. Ritchie, UNIX
() C (pi pi pi
Ritchie). Bell pi UNIX pi-
pi pi (pi..
VAX, Motorola .). .
1.3.5 (1980 1990)
pi
pipi pi (PCs). pi-
pi -
(user friendly) (pi.. XENIX, DOS .) ,
pi ,
pi pipi (multi tasking OS).
2 11 . 3 pi pi pi pi pi
2 2 K E A A I O 1 . E pi : pi pi pi pi pi
1.3.6 (1990 )
pi pi
(Internet Web) pi pi
pi . pipi pi-
, pi pi.
, processes (
), pi
Client Server ( pi) pi-
(pi.. sockets), pi IP.
pi pi pi hardware, pi pi pi . pipi PCs
Windows, pipi multi tasking -
UNIX (pi.. Solaris, POSIX .),
Windows N multi tasking . , pi-
pipi pi Windows
(pi.. 1998 2000).
pi (pi), pi pi /
, pi
pi [ (CDs), video
(DVD), ]. -
pi pi pi , pi-
pi pi pi pi -
pi pi.
pi (pipi high end) pi
pi , UNIX pi-
pi .
pi pi
/ , -
pi (interfaces) Web pi-
. pi pi. , pi-
pi
(WANs), pi pi
(NMS).
pi . -
pi
/ pi /
pi pi. pi, pi -
( ) /.
pi pi
pi pi pipi
pi , pi pi pi
pi . , -
: ()
pi, () () -
pi .
pi
pipi. , -
, ,
pi / .
pi , pi -
(swapping) pi pi pi pi-
pi.
, pi
, pi 1940 , pi pi
. pi -
, pi
pipi -
pi .
) pipi
Brooks, The mythical manmonth: Essays on software engineering, reading MA:
AddisonWesley, 1975.
Corbato, On building systems that will fail, commun. CACM, vol. 34, June 1991,
pp. 72 81.
Deitel, Operating Systems, 2nd edition, Reading MA: AddisonWesley, 1990.
2 31 . 3 pi pi pi pi pi
2 4 K E A A I O 1 . E pi : pi pi pi pi pi
Finkel, An operating systems vade mecum, 2nd edition, Englewood Cliffs, NJ:
Prentice Hall, 1988.
Lampson, Hints for computer systems design, IEEE software, vol. 1, Jan. 1984, pp.
11 28.
) pi
Silberschatz et al., Operating System Concepts, 3rd edition, reading, MA:
AddisonWesley, 1991.
Tanenbaum, , Prentice Hall and pi,
1993.
Assembler:
Batch system: pi
CPU: pi
Data channel:
I/O (input/output): /
Interrupt handling: pi
Library routines:
Linking loaders:
Load:
Multiprogramming: pipi
Object code: ,
Programming aids: pi
Queuing:
Real time system: pi
Relocatable code: pi
Software buffering:
Source code: pi
Swapping:
System program: pi
Timesharing:
fi
pi -
: pi. pi
pi, ,
pi, pi, pi pi .
, :
pi pi pipi
pi . PCB pi
pi .
pi pi pi ( pi
pio ) pipi pi .
pi pi .
pi pi pi .
pi.
pi pi
pi.
pi .
pipi.
pi pipi pi-
pi.
( pi pipi).
pipi.
pi pi .
pi pi -
.
2 pi
2 6 K E A A I O 2 : pi pi pi
( )
pi
pi pi
pi
pi
pi
pipi
pipi
pi pi
pi pi :
2.1
2.2
2.3 pi
2.4 pi
2.5 pi
2.6
2.1
pi
pi pi pi -
. pi pi
pi pi pi pi
.
pi, pi, pi pi -
, software hardware /.
pi pi
, pi pi (kernel). pi -
pi pi hardware.
2.2
pi pi pi pi -
. pi pi, pi pi pi -
/. -
.
:
pi .
.
pi pi .
pi pi pi (PCB)
.
pi pi pi
pi.
pi pi pi
pi .
pi pipi pi -
. pipi -
pi. pi, pi pi pi-
pi pi. , -
pi pi pi pi
( pi pi pi pi pi
2 72 . 2
2 8 K E A A I O 2 : pi pi pi
pi pi pi pi -
pi pi ).
2.3
.
pi pi pi
, pi -
pi .
pi -
.
2.3.1
pi pi pi pi pi-
(, , pi ),
CPU pi (
pi CPU) pi :
, , . pipi -
pi pi pi pi CPU
, pi pi (pi.. pi modem
) pi.
, pi pi -
: , pi. pi pi -
, ( ) ,
pi ( pi pi, pi -
), pi pi.
, , -
, pi ( quantum pi
pi), pi pi , CPU (-
/), pi pi pi pi ( pi-
).
pi pi : ( pi),
, pi pi pi (
pi, pi pi), -
pi pi , pi
pi pi pi pi
pi pi pi pi pi.
2.3.2
pi pipi
pi pi (Process
Control Block PCB). pi pi-
(process descriptor) (state vector).
, PCB.
2 92 . 3 pi pi pi pi
pi
(pi)
pi
E/E E/E
E T
2.1
K
pi
pi pi
2.2
pi
3 0 K E A A I O 2 : pi pi pi
, PCB pi pi pi pi
. PCB.
pi pi pi PCB :
.
. -
, .
pi ,
pi (
pi , ).
pi , pi, , pi
.
pi pi -
.
pi pi (resources) pi
.
pi pi pi pi (volatile environment)
.
pi pi, pipi
pi pi pi pi pi -
pi pi ,
pi PCB. pi pi
, pi pi pi -
, pi pi
. pi ,
pi PCB
. pi -
pi pipi .
pipi pi PCBs. ,
pipi PCB pi
pi pi. pi -
pipi PCB pi
, pi pi PCB . pi, -
pi pipi
pi pi pi PCB.
2.4
pipi pi . pi :
, pi , pi, pi , , pi pi pi pi . pi . , pi - , pi. , .
pi
pipi, pipi pi - . pi pipi pi pi , pi - pi pi pi pi . pi pi pi-pi pi pi. pi pi (pi..UNIX), pi .
pi
pi pi pi- (pi.. , - I/O .). pi pi PCB .
pi / pi
pipi . pi pi pi pi pi pi , pi pi pi .
pi, .
3 12 . 4 pi pi pi pi pi pi
3 2 K E A A I O 2 : pi pi pi
,
pipi .
/ pi (suspend / resume)
pi pipi .
. pi -
pi pi pi
pi . pi, -
pi pi. pi, pi pi
pi pi . pi ( -
pi) pi pi
.
pi pi pi pi -
:
pi (pi.. pi
pi), pi -
pi , pi-
pi.
pi pi
, pi, -
pi .
pipi pi pi , -
pi pi , pi-
pipi.
/ pi pi pipi pi-
(
2.3). , pi
pi. pi -
, . , -
, , pi, -
pi. pi pi
pi pi pi .
pi pi
pi pi (pi.. -
pi modem).
2.5
, pi pi pi pi pi
pi pi . -
pi pi pi pi pi pi-
, pi pi pi .
pi, :
pi pi.
pi . pi ,
pi pi
pi .
pi pi
pi pi pi.
3 32 . 5 pi pi
2.3
piX
pi pi
E/E
E/E
E/E
pi
Xpi
X
3 4 K E A A I O 2 : pi pi pi
pi pi pi pi , pi
. , -
pi pi.
2.5.1
pi pi, -
pi pi
pi. , pi :
pi pi pi pi pi pi ()
pi pi pi.
pi pi:
pi pipi (supervisor call). pi - , pi pi pi . -
pi ,
pi /, pi pi ,
pipi ., pi, , pi
pi . ,
pi pi
pi pipi pi pi
, , pi . pi -
pipi -
pi pi-
pi pi.
pi pi. pi pi pi , pi pipi ,
pipi pi pipi -
.
pi pi pi pi pi -, pi .
pi pi :
pi /. pi /. - pi pi pi-
. pi / -
pi, pi
.
pi pi pi pi pi pi restart interrupt pi pi pi .
, pi pi pi pi pi
pi (modes), (user mode)
pipi (supervisor mode). -
pi . pipi -
pi, pi -
pi . pi pi
pi pi pi pipi.
2.5.2 fi
pi pi,
pi pi pi pi pi.
pi pipi pi pi:
1. pi .
2. pi pi.
3. pi -
pi pi.
pipi pi pi -
pi pi pi pipi (). -
pi pi pipi pi pi pi
,
pi pi . , pi, -
pi pi pi , pi
. pi -
pi pi pi .
pi, pi pipi
pipi. pi pi pipi pi
pi pi-
.
pi , pi-
pi pi
.
pi, pi pi pi -
3 52 . 5 pi pi
3 6 K E A A I O 2 : pi pi pi
pi, pi pi. , pipi
pi pipi-
pi pi (status flags)
pi pi pi. pipi-
( 2.4) pi pipi pi,
pi pi .
2.4
pipi- pi- pi
NAI
NAI
NAI
YAE TOYXKATAXPHTEXPOPAMMATO
HHXIAKOHX
1
HHXIAKOHX
2
POYTINA AOYXIA ANTH IAKOH
EYHPETHEXTH POYTINA IAXTHN HH n
HHXIAKOHX
n
EYHPETHEXTH POYTINA IAXTHN HH 2
AYIAXYEPHHH
EYHPETHEXTH POYTINA IAXTHN HH 1
OXI
OXI
OXI
pi pi pi pi
pi pi
pi. pi
pi, pipi pi pi pi , -
, pi . pi -
pi, pi pi pi
pi pi. pi pi pi pi
, pipi, pi pi ,
.
pi pi , CPU pi
pi pi
pi. pi -
pi (preemptive) pi
(nonpreemptive). pipi pi
CPU pi pi . pipi
pi CPU.
pi, CPU pi pi
.
pipi, pi /
quantum . pi-
, pi pi -
.
2.6
pi pi pi
pi pi (kernel). pi pi
, pi
pi pi .[1]
pi, pi pi pi /,
pi pi
pi (assembly), -
. pi pi assembly
(pi.. UNIX pipi pi 1000 -
)
pi pi pi pi pi , -
pi (maintainable).
3 72 . 6 pi pi
[1] pi pi , - pi pi , pi.
3 8 K E A A I O 2 : pi pi pi
pi pi pi pi
pi :
pi (. 2.5.2)
(. 2.4)
(dispatching) (. 2.4)
pi (. 2.4)
(. 3.3)
pi (. 2.1)
pi / (. 2.4)
pi pi .
.
pi pi pi -
pi. pi pi : -
, pi.
( pi), pi
pi CPU ( ) .
( pi CPU) pi-
/. -
pi pipi,
pi pi pi pi pi, pi -
pipi. pi
pi pi , pi
pi CPU pi pi
pi . pi -
: , , pi, pi
pi, , pi.
2.5 pi pi
pi pi pi . -
pi pi pi : pi pi-
pi, pi pi, pi pi pi pi
pi , pi / pi pi
pi pi pi pi restart interrupt. -
pi pi , pi -
pi. pi pipi pi-
pi : )
pi pi, () pi pi ()
pi pi pi.
pi
pi pi pipi. pi pi -
, CPU pi pi pi pi,
pi pi pi-
, pi pi ,
pi.
, 2.6 pi , pi
pi pi -
pi . pi : -
pi, , ,
pi , () pi -
, pi /, pi
pi .
) pipi
Andrews and Schneider, Concepts and Notations for Concurrent Programming,
Computing Surveys, vol. 15, March 1983, pp. 3 43.
BenAri, Principles of Concurrent Programming, Englewood Cliffs, NJ: Prentice
Hall International, 1982.
Dubois et al., Synchronization, Coherence, and Event Ordering in Multiprocessors,
IEEE Computers, vol. 21, Feb. 1988, pp. 9 21.
) pi
Silberschatz et al., Operating System Concepts, 3rd edition, reading, MA:
AddisonWesley, 1991.
3 9B I B I O PA I A
4 0 K E A A I O 2 : pi pi pi
Blocked process: pi
Dispatching:
Dispatcher: pi
Hardware:
Interrupt: pi
Kernel: pi
Maintainable: pi
Mode:
nonpreemptive: pi
Preemptive: pi
Process Control Block (PCB): pi
Process descriptor: pi
Queue:
Qvantum:
Ready or runnable process:
Resource: pi
Resume: pi
Running process:
Software:
State vector:
Status flag:
Supervisor call: pipi
Supervisor mode: pipi
Suspend:
User mode:
Volatile environment: pi
fi
fi
pi pi -
pipi, pi pi pi
pipi, pi
. pi-
, pi pi pi
. pi pi
, pi pi .
pi pi
pi .
pi
pi pi ( pi
pi) pi . pi -
pi pi pi
pi , pi
pi .
pi
pi / . pi pi
pipi pi. pi
, pi pi pi-
pi. ( :
synchronization)
pi pi, pi pi
pi pi
pi.
:
pi Dekker pi pi-
pi pi .
pi -
3 pi
4 2 K E A A I O 3 : pi pi pi pi
pi pi pi.
.
pi.
pi pipi pi pi
pi pi. pi, pipi
pi
pipi.
pi pi.
pi send receive.
, pi pi pi pi
P(u) [wait(u)) V(u) (signal(u)];
pi ;
pi -
pi pi , pi
pi .
pi region b do
pi pi pi pi
. pi pi pi pi ;
: monitor , pi
pi pi .
pi pi block wakeup pi pi-
.
pi pi pi pipi -
pi pi pi pipi
.
pi .
pi
Cobegin, coend
pi
pi
pi
Send, receive
Wait, signal
Await
Test and set
Monitor
Block, wakeup
pi pi :
3.1
3.2
3.3
3.4
3.5 pi
3.6
3.7
3.8 pi
3.9 pi
4 3 pi
4 4 K E A A I O 3 : pi pi pi pi
3.1
pi , , -
pipi pi pi pi
(. pi ) -
pi pi pi .
pi (concurrent) pi-
pi . pi pipi, -
pi pi pipi pi (true
parallelism). pi pi,
pi pi pi -
. pi
(indeterminism). pi-
pi pipi pi pi
indetermision pi . pi pi
pipi ( pipi pi-
). pi pi pi
pi . pipi pi pi-
pi , pi -
, pi pi,
pi pi pi .
3.2
( )
cobegin s1 ; s2 ;; sn coend
S0
Sn
Sn+1
S1S2
parbegin s1 ; s2 ;; sn parend
3.1
pi s1 , s2 ,, sn pi (, -
). pi, pi s0 ; cobegin s1 ; s2;; sn coend ; sn+1 pi 3.1. pi,
pi pi , ,
pi pipi , pi pi
. pi pi pi
pi pipi .
3.3
pi pi-
. pi -
pi pi , pi-
pi pi pi pi pi -
.
pi, 1, 2 cursor
pi pi (1)
pi ( pi , -
) (2). pi pi -
pi (interactive text processing). pi i (i = 1, 2)
1 P2 [ -
i (i = 1, 2) , ]:
4 53 . 3 pi
BEGIN P1 BEGIN 2
cursor , cursor ,
1. cursor 1. cursor
I 2
2. 1 2. 2
CURSORPOSITION CURSORPOSITION
END END
CURSORPOSITION ( )
cursor . i (pi)
i.
CURSORPOSITION , pi.., 653.
4 6 K E A A I O 3 : pi pi pi pi
pi cursor , pipi pi ,
, pi . , pi
CURSORPOSITION pi -
CURSORPOSITION mod .
cursor pi 342, 1
CURSORPOSITION 342. ,
, 1
CURSORPOSITION 654.
pi cursor (pi..
). pi, pi
CURSORPOSITION 342.
P1 P2:
2: cursor 2 (2 = 654)
2 CPU,
. 1 .
1: cursor 1 (1 = 342)
1: 1 CURSORPOSITION (CURSORPOSITION = 342)
1 CPU,
. 2 .
2: 2 CURSORPOSITION (CURSORPOSITION = 654)
pi pipi
CURSORPOSITION! ( CURSORPOSITION
654 342).
total tally -
, pi pi :
Const n = 50;
var tally : shared integer;
procedure total begin (* main program *)
var count : integer; tally := 0;
begin cobegin
for count := 1 to n do total;
tally := tally + 1; total;
Afi 3.1
pipi : pi pi
, pi / pi-
( pi pi pi
, pi). pi
pi, pi pi pi -
! , pi-
.
pi, pi, , pi pi (
), pipi pi pi .
() pi -
( pi pi) . -
pi pi, pi, pi.., pi (,
I/O ) .
pi pi CURSORPOSITION pi.
pi 1 2 pi CURSORPOSITION ( 1 , 2 pi
). pi pi pi
pi , pi
pipi . pi ( -
) pi (mutual exclusion rule).
3.4
u pi pi pi, pi pi pi-
, pi pi , pi-
pi pi u
pi u pi
pi , -
pi / pi pi ( ). -
4 73 . 4 pi pi pi
end coend;
writeIn(tally)
end
pi pi
tally pipi pi, pi
total.
4 8 K E A A I O 3 : pi pi pi pi
: pi u pi T,
pi ( pi u) pi
pi pi .
pi (critical region) pi pi pi:
var u : shared T ;
pi u (pi pipi pi pi-
). pi u (pi.. INTEGER, QUEUE, LIST
.)
region u do S ;
pi S pi u.
pi :
pi pi pi (pi -
u) .
pi pi,
pipi .
pi pi pi.
3.5
( pi
) Q, pi pi pi
() R. pi Q pi R
pi ( pi pipi R). pi
pi pi pi pi
pi. Q pipi pi
pi R . pi-
, pi pi .
pi; pi -
P Q free pi pi -
. , (free = False), pi. (free
= True), pi.
, pi free, pi .
1
var free : shared boolean ;
begin
free := true ;
cobegin
P repeat Q repeat
repeat until free; repeat until free;
free := false ; free := false ;
[ R] [ R]
free := true ; free := true ;
forever forever
coend
end
free . pi Q -
free . (, pi.., Q -
repeat until free ). , -
free ( ) pi
R ! ( .)
: pi pi ,
. free, pi Pturn,pi
pi R. Pturn = True
( False Q).
2
var Pturn : shared boolean ;
begin
Pturn := true;
cobegin
P repeat Q repeat
repeat until Pturn ; repeat until (not Pturn) ;
[ R] [ R]
Pturn := false ; Pturn := true ;
forever forever
4 93 . 5 pi pi pi
5 0 K E A A I O 3 : pi pi pi pi
coend
end
H 2 pi pi, pi Pturn pi true
( false) .
pi pi R Q , pi ,
pi. , pi.., P pi R,
pi pi,
Q pi , R . pi -
pi pi pi-
loors ( repeat until), pi pi -
(busy waiting).
pi pi pi pi pi
;
Afi 3.2
pi , pi
boolean pi pi pi -
pi pi. : pi
pi (), pi () pi-
, pi pi , , pi
.
3
var Pturn , Qturn : shared boolean ;
begin
Pturn : false ; Qturn := false ;
cobegin
P repeat Q repeat
Pturn := true ; Qturn := true ;
repeat until (not Qturn) ; repeat until (not Pturn) ;
[x R] ; [x R];
Pturn := false ; Qturn := false ;
forever forever
coend
end
5 13 . 5 pi pi pi
pi : pi -
pi R. pi ( -
), pipi pi pi, -
pi -
. pi , pi
: ; pi
pi pi 1 pi pi
pi 2 :
;
.
_______________;
_______________.
pi.
_______________ pi.
A pi pi pi pi -
.
pi ( ) 2,
Pturn, Qturn, pi pi pi .
Afi 3.3
3. pi pi pi-
pi; pi pi;
Afi 3.4
pi pi pi pi Dekker
1965.
5 2 K E A A I O 3 : pi pi pi pi
4 (Dekker)
var outside 1, outside 2 : shared boolean ;
turn : shared 12 ;
begin
outside 1 : true ; outside 2 := true ; turn := 1 ;
cobegin
P repeat Q repeat
begin begin
repeat repeat
outside 1:= false ; outside 2:= false ;
repeat repeat
if outside 2 then go to enter ; if outside 1 then go to enter ;
until turn = 2 ; until turn = 1 ;
outside 1: = true ; outside 2: = true ;
repeat until turn = 1 ; repeat until turn = 2 ;
forever ; forever ;
end end
enter P inside ; enter Q inside ;
[ R] ; [ R] ;
turn: = 2 ; turn: = 1 ;
outside 1:= true ; outside 2:= true ;
P outside ; Q outside ;
forever forever
coend
end
Dekker pi pi R. Dijkstra
n .
pi :
Dekker pipi pi pi
pi -
. pi . pi-
pi -
. pi pi , ,
pi, pipi-
pi pi.
5 3X X X
pi:
outside 1 := false /* 1 pi pi
pi R */.
If outside 2 then goto enter /* 1 2 -
pi pi pi pi R.
pipi pi pi.
pi outside1, outside2 turn
pi pi 1; pi -
2; pi ; turn
, pi pi pi pi pi
2;
pi pipi pi -
. pi, loop pi pi:
(enter)
TON . .
(turn = 2)
(out 1 = True)
.
pi pi
pi; pi pi;
Afi 3.5
Dijkstra pi pi Hansen (1972)
pi region u do S.
. pi pi compiler ;
. Dekker pi pi pi-
Afi 3.6
5 4 K E A A I O 3 : pi pi pi pi
. pi pi pi . , region u do S pi-
pi Dekker ( ) pi .
. pi pi -
pi pipi Dekker pi pi.
pi:
. (, compiler pi pipi -
.)
. .. pi pi Dekker:
var R : shared T ;
cobegin
P Q
repeat repeat
region R do [ R]; region R do [ R];
forever forever
coend
. pi pipi Dekker.
, pi pipi pi
pi, pi pi pi .
pi pi-
, pi.
pi pi-
. (noop = pi pi)
var flag: shared array[0..1] of boolean; /* FALSE */
turn : shared 0..1;
pi (i = 0 1. i = 0, j = 1, ).
repeat
Afi 3.7
5 5X X X
flag[i] = TRUE;
while (turn != i) do begin
while (flag[j]) do noop;
turn := i;
end
pi
flag[i] = FLASE;
until FALSE;
pi pi pi pi
pi, pi -
p0 p1, pi pi -
pi. :
turn := 1,
P0: flag[0] := true;
P0: while (turn != 0)
P0: while (flag[1])
P0: turn := 0;
P0: pi
P0: flag[0] = false;
P1: flag[1] := true;
P1: while (turn != 1)
P1: while (flag[0])
P0: flag[0] = true;
P0: while (turn != 0)
P0: pi
P1: turn = 1;
P1: pi ].
5 6 K E A A I O 3 : pi pi pi pi
3.6
3 pi pi
pi pi pi (Pturn = true) pi
.
pi pi pi ,
pi , . pi
( ),
, pi pi, pi . pi -
3 pi;
pi:
repeat until (not Qturn)
repeat
begin
Pturn := false;
pi ;
Pturn := true;
end ;
until (not Qturn) ;
( Q), pi
pi pi pi pi
pi [pipi, , (Q)
pi Q (P)].
2. pi ,
pi pi pi pi R ( , , -
, pi pi ) pi-
(indefinite postponement). pi
pi pi indefinite postponement,
(fair).
3. pi pi pipi -
pi :
Afi 3.8
3.7 ( fi)
3.7.1
pipi pi P C, pi P
pi C, C pi
pi (Producer, Consumer). -
, pi (messages). pi P C pi -
, pi (P) pi -
pi pi pipi (C) pi pi (pi..
pi C pi pi ). -
pi, pi pi
pi , pi pi pi pi pi
. pi (buffer) (. 3.2). O
pi .
5 73 . 7 pi pi pi pi ( pi pi pi pi pi )
) pi pi, pi
pi pi: pi pipi pi pipi pipi-
.
) pi pi, pi pi-
: pipi pi.
) pi pi .
Bp q
3.2
pi-
, pipi pi pi pipi pi pi:
1. pi pi pi pi pipi-
.
2. pipi pi pi pi
pi pi.
pi -
:
5 8 K E A A I O 3 : pi pi pi pi
pi pi pi pi () pi
pipi pi pi pi pi-
pipi pi pi pi pi pi
pi pi pi.
pi pi pi pi pi -
pi.
. , pi, -
pi
var B: buffer max of T;
pi pi , max , pi .
pi pi pi
send (M,B);
pi ,
receive (M,B);
pi pi pi pi pi -
.
pi send receive ( ), pipi
pi , send receive pi
.
: send, receive pi - (by value) (by reference)
pi pi pipi pi pi-
pi pipi. pipi -
send receive;
Afi 3.9
3.7.2 fi (Semaphores)
pi pipi pi
pi pi pi .
pi.
pi , pi pi ,
. pi, pipi,
pi pi
pi. -
(semaphore). pi :
var v: semaphore;
send receive
signal (u) [ V(u)] wait (u) [ (u)].
V (pi ) pi , -
pi . pi P V
, pi pi .
5 93 . 7 pi pi pi pi ( pi pi pi pi pi )
V(u) P(u) pi sent receive.
pi u 3 :
1. s(u): pi
2. r(u): pi
3. c(u):
pi.
:
0 r(u) s(u) + c(u) r(u) + maxint
pi maxint pi pi .
, pi , u,
pi pi pi
u = s(u) + c(u) r(u)
[ u = c(u)].
:
1. P(u) [ wait(u)]: P(u) u > 0, u := u1 -
pi P(u) .
Afi 3.10
6 0 K E A A I O 3 : pi pi pi pi
3.7.3 fi
var R : shared T ;
cobegin
coend
pi pi pi P V :
var R : record content : T;
mutex : semaphore;
begin
mutex := 1;
cobegin
P1 Pn
begin begin
wait (mutex); wait (mutex);
process P1region R do S1
process P2region R do S2
process Pnregion R do Sn...
...
P(u) pi u = 0, pi-
u, qu, pi pi
pi.
2. V(u) [ signal (u)]: To V(u) u 1 qu ,
pi pi , pi
pipi ( pcb pi qu
ready queue), P(u) pi
, 1 pi u.
pi qu pi ( pi-
, pi pi pi-
, pi pi -
pipi pi pi
). pipi , pipi
pi qu pi.
S1; Sn ;
signal (mutex); signal (mutex);
end end
coend
end
pi:
pi wait (P) pi pi signal (V),
0 s(mutex) r(mutex)
,
0 r(mutex) s(mutex) + 1
0 r(mutex) s(mutex) 1
r(mutex) s(mutex) pi
pi P V,
pi . , pi (1) pi
pi.
:
6 13 . 7 pi pi pi pi ( pi pi pi pi pi )
, pi pi, pi -
(pi pi pi pi). pi
: , pi pi-
pi pi pi pi. pi pi pi
pi Dekker.
pi ,
hardware,
memory interlock, pi pi pi pi. ,
pi pi, pi pi pi pi
pipi pi -
pi hardware.
Afi 3.11
1.
6 2 K E A A I O 3 : pi pi pi pi
2. region v do S pi pi P
V, Compiler -
pi.
mutex :=1
wait(mutex); signal(mutex);
S; S;
wait(mutex); wait(mutex);
(A) (B)
pi pi pipi () () pi
pi pi ;
pi:
H pipi () . () pipi pi pi
pi.
Afi 3.12
pi ,
pi pi .
pi pi pi ,
pi () pi pi
. pi , pipi
pi . pi pi-
. pi pi pi
pi
pi pi .
Afi 3.13
6 33 . 7 pi pi pi pi ( pi pi pi pi pi )
pi:
#define TRUE 1
#define FALSE 0
typedef int semaphore;
semaphore mutex =1; /* pi pi
*/
semaphore west = 1; /* pi */
semaphore east = 1; /* pi */
share int west_count = 0, east_count = 0; /* pi
*/
void east(void) { void west(void) {
while (TRUE) { 0while (TRUE) {
wait(&east); wait(&west);
east_count++; west_count+;
if(east_count ==1) if(west_count==1)
wait(&mutex); wait(&mutex);
signal(&east); signal(&west);
move_east(); move_west();
wait(&east); wait(&west);
east_count; west_count;
if(east_count == 0) if(west_count == 0)
signal(&mutex); signal(&mutex);
signal(&east); signal(&west);
} }
} }
6 4 K E A A I O 3 : pi pi pi pi
pi pi pi, pi pi-
pi. pi pi
(pi.. ) pi pi
pi , pi , pipi
pi pi pi
.
pi:
#define TRUE 1
#define FALSE 0
typedef int semaphore;
semaphore mutex = 1; /* pi pi
east_count west_count*/
semaphore turn = 1;/* pi pi
*/
share int west_count = 0, east_count = 0; /* pi
*/
share int flag = 0; /* pi pi pi -
pi */
void east(void) { void west(void) {
while (TRUE) { while (TRUE) {
wait(&mutex); wait(&mutex);
east_count++; west_count+;
signal(&mutex); signal(&mutex);
if(flag ==0){ if(flag==1) {
move_east(); move_west();
wait(&mutex); wait(&mutex);
east_count; west_count;
Afi 3.14
3.7.4 fi
pi
pi .
pi pi
pi
pi , pi -
pi .
var u : shared T
region u do
begin
So ;
await B;
S1
end
pipi boolean , u.
pi u,
pi Qu ( u). pi
pi , ,
pi pi.
6 53 . 7 pi pi pi pi ( pi pi pi pi pi )
if(west_count != 0) if(east_count != 0)
flag = 1; flag = 0;
signal(&mutex); signal(&mutex);
} }
} }
} }
6 6 K E A A I O 3 : pi pi pi pi
pi, B(u)
( wait). , S1 pi
pi. , pi pi
pi , Qe,u [event queue Q(e,u)].
pi pi
Qu. pi await pi pi
boolean . pi,
pi Qe. pi
pi, Q(e,u) Qu, pi pi
pi pi .
u
Qe,u
Qe,u
3.3
pi
pi
6 73 . 7 pi pi pi pi ( pi pi pi pi pi )
1. pipi ; pi
;
2. pi pi pi Qu
;
pi:
1. pi pi pi pi
u, pi pi
.
2. pi Qu FIFO;
Afi 3.15
c
p
3.4
pi
pi pi . pi pi
c pi
. full pi pi
pi , empty, pi .
1. pi pi pi pi pi .
2. pi pi pi .
Afi 3.16
6 8 K E A A I O 3 : pi pi pi pi
pi:
pi full pi (pi
pi) pi. full = 0. -
empty pi pi. empty = max.
pi pi pi
type B = shared record /* record*/
buffer : shared array 0max 1 of T ;
p, c : shared 0max 1;
full : shared 0max 1;
p = c = full = 0;
procedure send (m : T ; var b : B) ;
region b do
begin
await full < max ;
buffer (p) := m ;
p := (p +1) mod max;
full := full + 1;
end
procedure receive(var m : T; b : B);
region b do
begin
await full > 0;
m := buffer(c);
c := (c + 1) mod max;
full := full 1;
end
6 93 . 7 pi pi pi pi ( pi pi pi pi pi )
pi
type B = record
v : shared record
buffer : shared array 0max 1 of T;
p,c : shared 0max 1;
full, empty : semaphore;
p = c = full = 0;
empty = max ;
procedure send (m : T; var b : B);
begin
with b do
begin
wait (empty);
region u do
begin
buffer (p) := m ;
p:= (p + 1) mod max;
end
signal(full);
end
end
procedure receive (var m : T; b : B) ;
begin
with b do
7 0 K E A A I O 3 : pi pi pi pi
begin
wait (full) ;
region u do
begin
m: = buffer(c);
c: = (c + 1) mod max ;
end
signal (empty);
end
end
3.1:
pi:
pi ( )
pi (pi.. multimedia web document). pi
, pipi pi pipi-
. , pipi -
pi .
pi (,
, , ,
, ).
:
:
1. multimedia web document
2. pi, ( )
3. document
pi pi -
pi pi. pi pi
pi document ( pi) pi
.
ar =
rr =
aw =
rw =
ar = rr = aw = rw = 0
:
1. 0 0 rw > 0) (pipi pi -
)
5. . pi
pi ( aw = 0).
7 13 . 7 pi pi pi pi ( pi pi pi pi pi )
pi . pi- pi pi grant reading, pi pi , pigrant writing, pi pi .( , pi! , pi pi . pi pi .
pi pi pi pi .
pi:
pi ()
type T = record
ar, rr, aw : shared integer ;
Afi 3.17
7 2 K E A A I O 3 : pi pi pi pi
var u : shared T ;
reading, writing, w : semaphore ;
pi ar = rr = aw = rw = reading = writing = 0, w = 1.
cobegin
begin reader
region u do
begin
ar : = ar + 1 ;
grant reading (u, reading);
end
wait (reading);
read ;
region u do
begin
rr := rr + 1;
ar := ar 1;
grant writing (u, writing) ;
end
end
begin writer
region u do
begin
aw := aw + 1;
grant writing (u, writing);
end
7 33 . 7 pi pi pi pi ( pi pi pi pi pi )
end
begin writer
region u do
begin
aw := aw + 1;
grant writing (u, writing);
end
wait (writing);
P(w);
write;
V(w);
Region u do
begin
rw := rw + 1;
aw := aw 1;
grant reading (u, reading);
end
end
coend
procedure grant reading (var u : T ; reading : semaphore) ;
begin
with v do
if rr = 0 then
while rw < aw do
7 4 K E A A I O 3 : pi pi pi pi
begin
rw : = rw + 1;
signal (writing);
end
end
pi pi pi
var u : shared record
rr, aw : shared integer
rr = aw = 0
cobegin
begin reader
region u do
begin await aw = 0; rr := rr + 1 end
read;
region u do rr := rr 1
end
begin writer
region u do
begin aw = aw + 1 ; await rr := 0 end
write;
region u do aw := aw 1;
end
coend
7 53 . 7 pi pi pi pi ( pi pi pi pi pi )
3.7.5 fi fi
S pi pi s ( pi pi true
false [ 0 1]) mutexS, delayS, (pi V
).
mutexS, delayS : binary semaphore;
S : semaphore;
NS : shared integer;
pi mutexS = 1, delayS = 0, NS = S;
cobegin
egin P (S)
P (mutexs);
Ns : = Ns 1;
if Ns
7 6 K E A A I O 3 : pi pi pi pi
3.7.6 V hardware
pi 1 pi
. pi pi -
pi . -
pipi pi
, , pi, 1
. To hardware pi / pi :
testandset, pi ( pi
pi)
var X : shared boolean
X : true;
pi :
egin P(S)
P V pi pipi
.
pi pi ; 0
pi 1;
pi
V(mutexs);
P (delays);
P;
pi pi pi -
pi:
P P, V V P V.
( !). pi-
pi 3.7.2.
pipi pi
P V; .
Afi 3.18
L: if TS(S) then go to L ;
End
Begin V(S)
S: = false;
End
7 73 . 7 pi pi pi pi ( pi pi pi pi pi )
FA(m,r) pi pi m r pi m pi pi m. pi pi pi FA .
pi:
procedure FA (var m: integer, r: integer)
var temp: integer;
begin
temp := m;
m := m + r;
return (temp);
end
pi pi pi pi pi FA :
var lock, key: shared integer;
noop pi pi.
procedure pi
begin
lock := 0;
key := 1;
Afi 3.19
7 8 K E A A I O 3 : pi pi pi pi
repeat
while (FA (lock, key) > 0) noop;
;
lock := 0;
pipi
until false;
end
:
pi pi (-pi pi 3.5);
pi:
pi pi . - , pi pi pi - pi pi , pi , pi pi pi , pi , pipi pi .
pi pi pi- pi FA pi pi pi - .
:
var lock: shared integer;
var waiting: shared array[0..n1] of boolean; false.
noop pi pi.
procedure pi
var j: integer; (j: 0 .. n1)
key: integer;
begin
key := 1;
repeat
7 93 . 8 pi pi pi pi pi
waiting[i] := true;
while (waiting[i] and (FA (lock, key) > 0)) do noop;
waiting[i] := false;
;
j := (i + 1) mod n;
while ((j != i) and (!waiting[j])) do
j := (j + 1) mod n;
if( j == i) then lock := 0;
else waiting[j] := false;
pipi
until false;
end
3.7.7
Monitor: ,
pi pi, pi .
(Event Queues)
:
var e : event u
( e u).
pi pi pi ( u) pi e
: await (e). pi
(pi pi (e) Qu u, : cause (e).
pi monitors pipi pi -
.
3.8 fi
pi pi
. pi (pi) pi pi-
Block Wakeup.
8 0 K E A A I O 3 : pi pi pi pi
3.9 fi fi
pi pi
. pi, pi pi pi
, . pi -
.
;
;
pi:
pi
pi pi pi pi pi -
pi. , pi,
. , pi pipi pi pi -
pi pi pi, -
. pi,
, pi pi pi
.
PCB i boolean wakeup waiting pi
wws(i). block wakeup :
Block (i):
if (not ww(i) then Block process(i)
else wws(i) := false;
Wakeup(i):
If ready (i) then wws(i) := true
else Activate process (i);
Block process(i) i . Activate i
ready queue. ready(i) pi true i
running ready. pi false pipi.
pi Block Wakeup , -
pi pi pi.
Afi 3.20
, pi pi-
pi pi pi
pi . pi, -
:
1. pi (local) , pi -
pi pipi pi ,
2. (specific flags), pi pi /
pipi pi , pi
.
, pi -
Pi : () pi pi
() pi pi pi
. , flags, pi pi -
pi pi pi-
.
pi pi -
. ( flags)
pi pi pi (
testing),
.
O pi pi
pi pi . , , pi -
pi pi : pi -
, pi.. pi (breakdown)
pi pi .
3.9.1 fi (The Bakery Algorithm)
pi Lamport 1974. ( pi -
) pi pi pi -
, pi
pi.
pi P0, P1,, Pn1 -
, pi pi pi .
pi , -
( ) pi pi.
8 13 . 9 pi pi pi pi pi pi pi
8 2 K E A A I O 3 : pi pi pi pi
:
var choice : array [0(n1)] of boolean;
number array [0(n1)] of integer ;
pi pi false 0 .
choice [i], number [i]
flags pi Pi. Pi pi pipi
. j (j i) pi .
[(a,b) < (c,d)] [a < c (a = c b < d)]
pi pi Pi (pi j pi
Pi).
choice [i] = true ;
number [i] = 1 + max(number [0]+number[n1]) ;
choice [i] = false ;
for j = 0 to n 1, i j
begin
wait until not choice [j] ;
wait until number [j] = 0 or
(number [j], i) < (number [j], j)
end ;
;
Number [i] = 0 ;
pi pi pi pipi-
pi ( pi pi n 1 pi
). value [i] pi
. pi pi pi -
(pi;)
pi pi-
pi, pi pi -
. pi -
pi pi, pi -
, pi pi .
pi
pi . pi
pi pi pipi -
pi pi
, pi pi -
pi pi. pi-
, pi pi-
. pi pi pi
pi ,
pi pi pi
pi
pi: () pi pi,
pipi , () pi -
pi pi ()
pi pi pi.
3.4 pi pi pi
pi Dekker, pi pi-
pi. pi
pipi pipi pi
. pi pi pi pi (
), pi pi pi pi pi -
pi .
pi pi pi pi: pi pi
pi pi pi pipi
pi pi pi .
pi pi :
pi pipi pi pi-
, pi pipi
pi pi pi , pipi pi-
pi pi pi pi, pipi
8 3 Y N O H
8 4 K E A A I O 3 : pi pi pi pi
pi pi-
. pi pi send(M, B) receive(M, B),
pi pi.
pi .
(var u: semaphore) pi
pi , . pi
[ : signal(u) V(u)] [
pi: wait(u) P(u)] . pi pi
pi ( pi pi pi) pi
, . , pi-
pi , pi
pi pi pi pi.
, pi: -
, pi , monitor
, pi pi
test and set . , pi -
pi -
pi.
pipi
Andrews and Schneider, Concepts and Notations for Concurrent Programming,
Computing Surveys, vol. 15, March 1983, pp. 343.
BenAri, Principles of Concurrent Programming, Englewood Cliffs, NJ: Prentice
Hall International, 1982.
Dubois et al., Synchronization, Coherence, and Event Ordering in Multiprocessors,
IEEE Computers, vol. 21, Feb. 1988, pp. 921.
Silberschatz et al., Operating System Concepts, 3rd edition, reading, MA:
AddisonWesley, 1991.
Breakdown: pi
Buffer: pi
Busy waiting: pi
By reference:
By value:
Concurrent:
Consumer: pipi,
Critical region/section: pi
Deadlock:
Fair:
False:
Indeterminism: pi (
pi pi)
Infinite postponement: pi
Memory interlock,
storage arbiter: pi
8 5B I B I O PA I A
8 6 K E A A I O 3 : pi pi pi pi
store pi ,
pi -
Message:
Monitor: pi
Mutual exclusion: pi
New line:
Producer: pi, pi
Reader:
Resource: pi
Semaphore:
True:
True parallelism: pi -
pipi
Writer:
(Memory Management)
pi pi , ,
pi:
pi pi pi /
(nonvolatility).
pi (
).
, pi
CPU, .
, pi pi, pipi -
,
pi. , pi pi , -
pi pi pi pi
CPU. pi, CPU pi pi pi. -
,
pi pi . 1,
pi . pi timespace tradeoffs (pi
)
( pi). pi
pi pi , pi
. pi pi, pipi,
pi pi pi-
. pi pi -
pi tradeoffs, pi
, pi .
pi .
, pi
. pi,
pi
.
4 pi
[1] pi .
8 8 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
fi
pi pi
, pi -
/ . pi pi pi-
pi, pi pi. -
, / -
pi . pi -
. -
pi pipi. pipi pi-
. pi pi.
pi pi pi pi pi-
. , pi pi pi,
pi pi pi
pi. pi pi
pi / pi pi
pi pi pi , pi -
pi , . pi-
, pi pi
pi .
, :
pi pi . pi,
pi pi pi
.
pi pi -
.
pi-
pi : , pi pipi,
pipi pi , pi, pi,
pi pi pi pi.
pi pi
pipi
pi pi pi pi .
pi pi.
pi pi .
pi pi pi pi pi.
pi
.
pipi pi pi.
pi pi pi pipi
pi pipi pi (pi )
pi .
.
pi pi pi -
.
pi pi pipi .
pi pipi
. pi
pi; pi ( pi) -
; pi pi pi
;
-
pi . ;
pi.
pi. pi, pi pi
pi . pi pipi ,
, pi pi pi pi , pi-
;
pi pi pipi pi pi-
.
pi pi
pi pi.
pi pi pi pi -
pi .
8 9
9 0 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
pi -
2, pi .
pi-
pi pi pi pi,
pi pi pi pi -
.
pi pi pi pi-
pi .
pi.
pipi pi pi;
pi
pipi
,
, , pipi
pi
pi
pi ()
pi ()
: ,
Round robin, FCFS
pi
pi
pi
, pi, pi , pi
( )
pi
pi
pi pi
pi pi
pi pi :
4.1
4.2
4.3 pipi
4.4
4.5 pi pi
4.6 pi
4.7 pi
4.8
9 1 pi pi pi
9 2 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
4.1 (Preliminaries)
. pi
4.1, pi /
(/) pi . pi
pi bytes, pi pi bytes -
. , pi pi
bytes ,
. pi
, .
byte m bits,
o m pi 2m = . pi CPU
I/O pi pi /
pi/ . pi, CPU (fetches)
pi pi (stores) .
MNHMHKMEYTHMAX
E/E
4.1
pi
pi pi (
pi ). pi pi pipi, -
pi pi . 4.2 pi
pi .
pi pi pi -
, . ,
pi pi (source program) .
pi pi pi -
. pi, pi
. , -
pi pi -
, pi -
. pi pi , , -
pipi . pi pi-
pi. / []
(bind) pi
(relocatable addresses). pi
(object module), . -
, pi, pi,
pi pi , pi..
01110 = 14 byte pi
pi pi. (linkage editor) -
(loader), , pi
pi (absolute addresses) (pi.. 000010000100000 = 1056 byte
32768 bytes).
pi (address space) .
/ pi pi-
, , pi , pipi
.
pi .
pi ( ) . pi pi-
pi pi (instruction cycle).
, pi
pi . pi-
pi pi -
. pi pi pi pi
pi / pi-
pi ( pi
pi pipi pi
pi , pi pipi pi
).
. pi pi pi (pi
), pi.. pipi pi pi
pi ( 4.5).
pi pi .
pi pipi pi
pi CPU. pi pi
pi.
9 34 . 1 pi pi ( P R E L I M I N A R I E S )
9 4 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
MXX
X
(Compiler or Assembler)
(Source Program)
(Object Module)
(Linkage Editor)
(Load Module)
(Loader)
(In-core core Image)
Xmodule
XX
XXE
4.2
pi - pi pi-
1. pi [2] / pi
R.[3]
2. PC[4] pi .
3. pi .
4. pi pi , pi pi -
.
5. , , pi CPU.
6. .
7. pi pi ( ).
8. 1 pi .
pi pi
(operands) ( ) pi
pi pi . 3 4 pi
pi pi pipi
. pi pi
pi . pi [5]
(opcode) pipi pi pi x bits (pi.. x = 8) -
pi . pi pi -
pi, pipi bits pi
pi . bits pi pi
pipi (pi,
pi, pi ) pi -
pi CPU. : (1)
, (2) , (3) . -
pi pi .
9 54 . 1 pi pi ( P R E L I M I N A R I E S )
[2] (control unit) pi pi .
[3] IR (instruction register) pi pi - pi CPU .
[4] pi PC (program counter register) pi pi pi CPU , pi , pi .
[5] (opcode) . pi pi (instruction set). O pi , pi pi , pi , pi , .
9 6 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
pi, pi pi pi
. pi pi pi-
pi pi pi, , pi pi pi,
.
pi .
pi -
, pi pi pi
, / pi-
, pi pi/ pi/
( ). pi -
, pi pi-
pi . pi, pi
pi pi
( 4.5.4), pi -
pi ( 4.6). pi-
pi /
pi pi pi, pi pi .
pipi, pi pi-
pi pi . pi pi
pi pi pipi .
pi. -
pi pi pi / pi , -
pi . -
pi , pi pi , ,
pi pi ,
pi, pi -
. , pi pi-
pi .
4.2 (Bare Machine)
, 4.3, 4.4 4.5, pi
pi pi pi. pi-
-
pi pi .
, pi pi pi pi
. pi pi -
( 4.3).
9 74 . 2 ( B A R E M A C H I N E )
XPHTH
0
32 K
4.3
pi pi. -
, pi pi pi
pi . pi . pi
.
pi: pi pi.
pi pi pi, -
pi[6] pi pipi (resident monitor) ( 4.3)
pi [7] (system calls)
. , pi (dedicated
systems), pi pi pi
pi.
[6] pi (interrupts) pi pi - . pi, pi pi pi pi I/O. pi I/O . I/O pi- , chip pi pi I/O. pi pi -pi, pi pipi pi pi.
[7] (system calls) pi pi pi- pi pi (). pi . pi pi .
9 8 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
4.3 fi (Resident Monitor)
pi pipi pi-
, (pi ) pi
pi pipi ( 4.4).
pi, , , pipi .
, pipi -
pipi (pi..
, , pi, pi.. pi
/, pi, pi.. pi .).
pi pipi pi
pi pipi pi -
. pi , pi pipi bytes pi-
, pi bytes ( pi
pi 010 110 pi ,
pi ) pi , bytes
pi . .
IAIKAIA
EOTH
K
(Fence Register)
0
M
E-1
4.4
pipi
pi pi Fortran Monitoring System 7094,
pi pi . pi pi
pi, pi CP/M.
4.3.1 fi (Protection Hardware)
pipi
(0 1). 1.
pi pipi pi -
( ) pi pi pi , pi-
pipi pi pi pi
.
pi pipi pi pi pi pi
pi. pi 4.5. (-
) pi pi pi
(fence address).
, pipi -
, . pi pi -
, pi pipi.
pi pi (trap or interrupt) pi
( ). (
pi (pi.. This program has
performed an illegal operation and will be shut down) pi-
(memory dump) pi .
9 94 . 3 ( R E S I D E N T M O N I T O R )
> =X
A
MNHMHKME 4.5
- pi pi- pipi
pi pipi .
, pipi
, pi 995ns 980ns.
pi pi
, pipi
(effective access time).
, pipi (monitor mode), pi pi-
pi pipi . pipi
, pipi
1 0 0 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
, pipi pi .
pi pi pi -
. pi -
(fixed constant). pi, 2116 pi
(basic binary loader) pi 777008 777778 ( 32 bytes).
pi pipi pi-
pi pi pi 777008, .
, pi pi ,
pi pipi,
, pi . -
pipi, pi
pi . pi pipi pi -
pipi (pi ) pi-
. .. pipi pi pi (buffer space)
(device drivers)[8]. ( pi-
) pi, pi pi
, pi pi
pi. -
pipi (transient monitor code), pi
pi pi.
pipi pi ( pipi).
pi pi pipi, pi-
pi . pi pi
pi pi pi
. pi
pi pi
(special privilege instruction). pi pi
pi pi pipi. pipi
pipi pi .
4.3.2 fi (Relocation)
pi . pi -
[8] (device drivers) pipi pi /. .
0, pi ,
pi . pi pi -
pi pi .
pi
. ,
pi pi (absolute code). -
pi pi. , , -
, pipi . , pi
pi pi (relocatable code). pipi,
. ,
pi pi . pipi-
, pi, pipi -
. ,
(pi) , -
. pi, pi
pi .
pi pi pi pi-
pipi pipi . -
PDP 11 pi pi 4.6. -
pi , pi , -
pi pi . pi
pipi pi-
pi .
1 0 1X X X
IAIKAIA
EOTH
0
64 K
K
4.6
1 0 2 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
pi pi pi pi pi CDC6600
.
pi (dynamic relocation) pi pi-
, pi 4.7.
pi (relocation or base register).
pi pi pi , -
pi . pi, 1400,
pipi pi 0 pi -
1400, pipi 346 pi 1746.
1400K B
+
17460346MNHMHKME
4.7
-pi
-pi
pi pi pi .
pi 346, pi-
, , , pi
346. pi (
pi ) pi .
pi -
. (memory mapping hardware) -
pi .
, pi -
(moving)
. pi pi pi
, pipi -
pipi .
, pi, pi : -
(pi 0 max) (pi R+0 R+max -
R). pi
0 max. pi pipi ,
pipi. pi pi pi
(pi pi ) pipi
pi pi pi pi. -
pi pi I/O.
pi pipi pi
pi. (logical address
space) .
4.4 (Swapping)
pi pi pipi pi
, .
: CTSS
Q32. pi pi pipi
pipi pi -
. pi , pi
pi ( pi-
) pi .
( 4.8).
1 0 34 . 4 ( S WA P P I N G )
XPOXIAIKAIA
EOTH
K
1
E M
E
2
4.8
- pi
4.4.1 (Backing Store)
pi pi . .
pi , pi
, pipi pi pi pipi-
. (ready queue) pi pi -
1 0 4 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
pi pi
pi . pi -
. -
, pi (dispatcher). pi
, , (swaps out)
(swaps in) pi .
pi pi pi
pi , pi pi-
, pi pi.
pi pi . -
pi .
4.4.2 fi (Swap Time)
pi pi -
.
34 . pi
2.
Afi 4.1
pi pi -
: pi pi
pi . , -
, pi pi pi ,
pi : CPU I/O
. pi , pi-
20 bytes pi pi-
(fixedhead drum) (average latency)
8ms (transfer rate) 250.000 bytes pi.
, 20 bytes pi pi :
8ms + (20K bytes / 250.000 bytes/sec) = 8ms + (2/25) sec
= 8 ms + (2000/25)ms
= 88ms
pi pipi , -
176ms.
Q32 pi pi 10ms
363.000 bytes/sec, pi -
130ms 20 bytes.
pi CPU,
. , pi.. round robin -
( 4.5) CPU (time
quantum) pipi pi 0,176 pi. -
(transfer time). pi
. pi 32, pi pi-
pi 12, 20. , pi pi
4. 4 pi 24ms
88ms pi 20. pi, -
pi pi pi pi pi-
pi. pi , pipi
pipi pi pi . , -
pi (dynamic memory requirements) pipi
(pi.. request memory / release memory), pi-
pipi .
pi pi pi pi-
pi . pi, Large Storage (LCS)
IBM Extended Core Storage CDC. LCS pipi
8ms 400.000 bytes/sec. 100ms
20. To ECS pipi 3ms 10.000.000
bytres/sec. , 20K 4ms.
pi (pi.. mass core, mass semiconductor bubble ) pipi pi-
pi pi pi . -
27 pi pi .
4.4.3 fi (Overlapped Swapping)
pi pi pi
pi pi . -
4.9. pi -
. , CPU pi (idle) -
1 0 54 . 4 ( S WA P P I N G )
1 0 6 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
. , pi
pi pi 1 pi pi pi-
pi 2.
X Epipi
K
Epipi
Api 1
Api 2
Xpi
4.9
pipi
pi pi pi
. pi pi pi; pi
, -
: pi (buffer).
Afi 4.2
pi , CPU, pipi
pi pi pi 2 pi -
. pi, pi -
pi pipi pi
pi . , pi -
pi 2 , pi
4.10. pi ( pi )
pi pi pi 2. pi,
pi pi (memorytomemory swap).
1 0 74 . 4 ( S WA P P I N G )
K
Epipi
Api 1
Api 2
X
4.10
pi -
pi pi pi pi pi-
;
pi:
pi pi 1 () pi-
2. 2 pi pi
( ) 1, pipi pi pi-
pi CPU pi/pi
/pi .
Afi 4.3
pi pi pi pipi . ECS, pi (memory cycles) -pi CPU. pi, CPU -pi ECS, pi CPU . pi, pi CPU -pi , pipi. pi pi CPU.
pi pi pi . , pipi . - pi I/O pi. - pi pi I/O, pi pi . , , I/O,, pipi pi I/O, - pipi . pi I/O pi pi I/O pi. 1
1 0 8 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
2, I/O pi pipi -pi pi . pi : () pi I/O(pending I/) () I/O pi- . - .
4.5 (Multiple Partitions)
pipi (configuration) pipi: - CPU pi pi . ; pi (regions) pi(partitions), pi pi pi . pi pi pi (pi..). pi pi , pi pi- pi, pi pi pipi . , pi - , pi , - pi . pi (pi) pi ( pi) ( pi , pi pi ). , , pi () - pipi .
, pi - (scheduler) pi pi , . pi pi- pi pi pi pi pi pi . pi , pi II. , pi - .
pi (ROUND ROBIN)
O pipi pi pi-, pi pi -. , pi
(quantum), pi pipi . - , CPU pi- . pi pi , CPU pi .
pi (FIRST COMEFIRST SERVE FCFS)
/ pi . , pi pi pi, -. pi -, pi pi pi, - pi CPU -pi /.
4.5.1 fi
: pi, pi pi pi pi- . pi pi pi ( pi 4.3.2). ( 4.10 4.11) - pi pipi pi pi . pi pi- .
1 0 94 . 5 pi pi pi ( M U LT I P L E PA R T I T I O N S )
Epipi
0
128 K
1
2
3
4
K
4.11
(bound registers). (pi. = 174640). pipi -
pi pi .
1 1 0 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
(base and limit registers). - (range)
(pi.. = 100040 = 74600). pipi
, 0 pi pi-
pi pi ( + ).
pi 4.12,
. pi pi
(assembly time). pi -
pi pipi . -
pi pi
pipi , pi ,
. pi .
pi CDC 6600 pi pi pi.
> =NAINAI
pi pipi
OXI
MNHMHKME
K
=
d
p d'
4.33
pipi GE 645(Multics)
1 5 6 K E A A I O 4 : pi pi pi ( M E M O R Y M A N A G E M E N T )
/ pi pipi -
pi pi pi pi pipi pi
pi. pi pi pi pi pi
pi
pi . pi pi
pi CPU, pipi,
. pi pi pi pi .
pi ( , pi pi-
pi, pi, , pi,
pi, ) pi . -
pi pi pi -
pi :
pi . pi -
pi pipi, pi-
, pi -
pi pi (mapping tables)
.
pi (Performance). pi pipi, pi
.
pi pi (;)
pi . pi -
pi pi pi pi -
. , , pi , pipi
pi pi pi. pi -
pi pi pi pi-
pipi.
pi (Fragmentation). , pi-
pi pipi pi pi pi-
. pi pi pipi -
pi pi .
pi (allocation units), pi pi
pi, pi pi pi. -
pi, pi -
pi, pi pi pi.
pi (Relocation). pi pi-
pi. pi pi
pi pipi .
pi , pi
pi . pi-
, pi pi pi-
.
(Swapping). pi pi .
, pi pi pi pi
CPU, pi
pi pi
. pipi pi pi
pi pi .
(Sharing). pi pipi pipi-
-
. , , pi pi
pi, pi pi pi ( -
) pi pi . pi pi pi-
pi pi pi pi ,
pipi pi.
(Protection). pi pi pi, -
pi ,
, . pi pi-
pi , -
pipi pi pi ,
Top Related