Weitere ÃĪhnliche Inhalte Ãhnlich wie 4 ca-process structure (20) 4 ca-process structure2. āļ§āļąāļ āļāļļāļ āļĢāļ°āļŠāļāļāđāļ āļēāļĢāđāļĢāļĩāļĒ āļāļĢāļđāđ
āđāļāļ·āđāļāļĻāļķāļāļĐāļēāđāļāļ§āļāļīāļāđāļĨāļ°āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļ
āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ
āđāļāļ·āđāļāļĻāļķāļāļĐāļēāļāļēāļĢāļāļąāļāļāļēāļĢāļāļĢāļ°āļāļ§āļāļāļēāļĢ āļāļēāļĢ
āļāļĢāļ°āļŠāļēāļāļāļēāļāļĢāļ°āļŦāļ§āđāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ āđāļĨāļ°āļāļēāļĢ
āļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 2
3. Agenda
Process Concept
Process Scheduling
Operations on Processes
Cooperating Processes
Interprocess Communication
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 3
4. āđāļāļ§āļāļīāļ āđāļāļĩāđāļĒ āļ§āļāļąāļ āļāļĢāļ°āļāļ§āļāļāļēāļĢ
(Process Concept)
āļāļīāļāļāļĢāļĢāļĄāļāļļāļāļāļĒāđāļēāļāļāļĩāļŦāļāđāļ§āļĒāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĨāļēāļ
āđ
āļāļĢāļ°āļāļģāļēāļāļąāļ
āđ
ï§ āđāļāļĢāļ°āļāļāđāļāļīāļāļāļĨāļļāđāļĄ (batch) āđāļĢāļĩāļĒāļāļ§āđāļē āļāļēāļ (job)
ï§ āđāļāļĢāļ°āļāļāđāļāđāļāļāļąāļāđāļāđāđāļ§āļĨāļē (time-sharing) āđāļĢāļĩāļĒāļāļ§āđāļē
āđāļāļĢāđāļāļĢāļĄāļāļđāđāđāļāđ (user program) āļŦāļĢāļ·āļāļ āļēāļĢāļāļīāļ
(task)
ï§ āļāļģāļēāļ§āđāļē āļāļēāļ āđāļĨāļ° āļāļĢāļ°āļāļ§āļāļāļēāļĢ (process) āļāļķāļ
āļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāļāļāļąāļāđāļāđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 4
5. Process Concept (cont.)
āļāļĢāļ°āļāļ§āļāļāļēāļĢ āļāļ·āļāđāļāļĢāđāļāļĢāļĄāļāļĩāļāļđāļāļāļĢāļ°āļāļģāļēāļāļēāļĢ (a
āđ
program in execution)
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļ°āļāļĢāļ°āļāļāļāļāđāļ§āļĒ:
ï§ program counter
ï§ stack
ï§ data section
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 5
6. Process Concept (cont.)
āđāļĄāļ·āđāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļđāļāļāļĢāļ°āļāļģāļēāļāļēāļĢ āļāļ°āļāļđāļāđāļāļĨāļĩāđāļĒāļ
āļŠāļāļēāļāļ° (state)
āļŠāļāļēāļāļ°āļāļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ āļŦāļĄāļēāļĒāļāļķāļ āļāļāļ°āļāļąāļāļāļļāļāļąāļ
āļāļāļāļāļīāļāļāļĢāļĢāļĄāļāļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ āļāļĢāļ°āļāļāļāļāđāļ§āļĒ
ï§ āđāļŦāļĄāđ (new) āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļāļīāđāļāļāļđāļāļŠāļĢāđāļēāļāđāļŦāļĄāđ
āđ
ï§ āļāļģāļēāļĨāļąāļāļāļģāļēāđāļāļīāļāļāļēāļ (running) āļāļļāļāļāļģāļēāļŠāļąāđāļāļāļĩāļāļģāļēāļĨāļąāļāļāļđāļāļāļĢāļ°āļāļģāļēāļāļēāļĢ
āđ
ï§ āļĢāļ (waiting) āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļāļģāļēāļĨāļąāļāļĢāļāļāļāļĒāđāļŦāļāļļāļāļēāļĢāļāđāļāļēāļ
āļāļĒāđāļēāļ āđāļāđāļ āļĢāļāļŠāļąāļāļāļēāļ āļĢāļāđāļŦāđāđāļ/āđāļ āđāļŠāļĢāđāļ
ï§ āļāļĢāđāļāļĄ (ready) āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļāļģāļēāļĨāļąāļāļĢāļāđāļŦāđāđāļāđāļēāđāļāđāļŦāļāđāļ§āļĒ
āļāļĢāļ°āļĄāļ§āļĨāļāļĨ
ï§ āļŠāļīāđāļāļŠāļļāļ (terminated) āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļāļĢāļ°āļāļģāļēāļāļēāļĢāđāļŠāļĢāđāļāđāļĨāđāļ§
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 6
7. Diagram of Process State
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 7
8. āļāļĨāđāļ āļāļāļ§āļāļāļļāļĄ āļāļĢāļ°āļāļ§āļāļāļēāļĢ
(Process Control Block-PCB)
āļāļĨāđāļāļāļāļ§āļāļāļļāļĄāļāļĢāļ°āļāļ§āļāļāļēāļĢ āļāļ°āļāļĢāļ°āļāļāļāļāđāļ§āļĒāļāđāļāļĄāļđāļĨāļāļĩāđ
āđāļāļĩāđāļĒāļ§āļāļąāļ
ï§ āļŠāļāļēāļāļ°āļāļĢāļ°āļāļ§āļāļāļēāļĢ (process state)
ï§ āļāļąāļ§āļāļąāļāđāļāļĢāđāļāļĢāļĄ (program counter)
ï§ āđāļĢāļāļīāļŠāđāļāļāļĢāđāļāļāļāļāļĩāļāļĩāļĒāļđ (CPU register)
ï§ āļāđāļāļĄāļđāļĨāļāļēāļĢāļāļąāļāļĨāļģāļēāļāļąāļāļāļĩāļāļĩāļĒāļđ (CPU-scheduling
information)
ï§ āļāđāļāļĄāļđāļĨāļāļēāļĢāļāļąāļāļāļēāļĢāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļē (memory-
management information)
ï§ āļāđāļāļĄāļđāļĨāļāļąāļāļāļĩāļāđāļāđ (accounting information)
āļđāđ
ï§ āļāđāļāļĄāļđāļĨāļŠāļāļēāļāļ°āđāļ/āđāļ (I/O status information)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 8
9. Process Control Block (PCB)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 9
10. CPU Switch From Process to
Process
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 10
11. āļāļīāļ§ āļāļēāļĢāļāļąāļ āļĨāļģāļē āļāļąāļ āļāļĢāļ°āļāļ§āļāļāļēāļĢ
(Process Scheduling Queues)
āļāļīāļ§āļāļēāļ (Job queue) āļāļĨāļļāđāļĄāļāļāļāļāļļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ
āđāļāļĢāļ°āļāļ
āļāļīāļ§āļāļĢāđāļāļĄ (Ready queue) āļāļĨāļļāđāļĄāļāļāļāļāļļāļ
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāļāļąāļāļāļĒāļđāđāđāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļēāļŦāļĨāļąāļāļāļĩāļĢāļ
āđ āđ
execute
āļāļīāļ§āļāļļāļāļāļĢāļāđ (Device queues) āļāļĨāļļāđāļĄāļāļāļ
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļąāļāļŦāļĄāļāļāļĩāđāļāļģāļēāļĨāļąāļāļĢāļāļāļļāļāļāļĢāļāđ i/o
āđ
āļĄāļĩāļāļēāļĢāļĒāđāļēāļĒāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāļĄāļēāļĢāļ°āļŦāļ§āđāļēāļāļāļīāļ§āļāđāļēāļāđ
āļāđāļēāļāļāđāļ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 11
12. Ready Queue And Various I/O Device
Queues
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 12
13. Representation of Process
Scheduling
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 13
14. āļāļąāļ§ āļāļąāļ āļĨāļģāļē āļāļąāļ (Schedulers)
Long-term scheduler (or job scheduler)
ï§ āļāļģāļēāļŦāļāđāļēāļāļĩāđāļāļāđāļĨāļ·āļāļāļāļĨāļļāđāļĄāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļķāļāļĄāļēāļāļēāļāļāļĩāđāļāļāđāļāđāļ
āļą āđ āļą
āđāļāļĒāļąāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļēāļŦāļĨāļąāļāđāļāļĒāļąāļāļāļīāļ§āļāļĢāđāļāļĄ
ï§ āļāļ§āļāļāļļāļĄāļāļĩāļāļĢāļĩāļāļāļāļāļēāļĢāļāļģāļēāļāļēāļāđāļāļāļŦāļĨāļēāļĒāđāļāļĢāđāļāļĢāļĄ
(degree of multiprogramming) āđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄ
Short-term scheduler (or CPU scheduler)
ï§ āļāļģāļēāļŦāļāđāļēāļāļĩāđāļāļāđāļĨāļ·āļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļāļĢāđāļāļĄāļāļ°āļāļđāļāļāļĢāļ°āļāļģāļēāļāļēāļĢ
āļą
āļāļķāđāļāļĄāļēāļŦāļāļķāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļŦāđāđāļāđāļēāđāļāđāļāļĩāļāļĒāļđ
āđ āļĩ
āļāļąāļ§āļāļąāļāļĨāļģāļēāļāļąāļāļĢāļ°āļĒāļ°āļāļĨāļēāļ (medium-term
scheduler)
ï§ āļāļģāļēāļŦāļāđāļēāļāļĩāđāļāļāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļāļāļāļēāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļē āļāđāļ§āļĒ
āļĨāļāļāļĩāļāļĢāļĩāļāļāļāļāļēāļĢāļāļģāļēāļāļēāļāđāļāļāļŦāļĨāļēāļĒāđāļāļĢāđāļāļĢāļĄāļĨāļ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 14
16. Schedulers (cont.)
Short-term scheduler āļāļ°āļāļģāļēāļāļēāļāļāđāļāļĒāļĄāļēāļ
(milliseconds) â (āļāđāļāļāđāļĢāđāļ§).
Long-term scheduler āļāļģāļēāļāļēāļāđāļĄāđāļāđāļāļĒāļāļąāļ (seconds,
minutes) â (āļāļēāļāļāđāļēāđāļāđ)
long-term scheduler āļāļ°āļāļ§āļāļāļļāļĄ degree of
multiprogramming.
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāđāļ§āļāđāļŦāļāđāļāļ°āļĄāļĩāļāļļāļāļĨāļąāļāļĐāļāļ°āļāļĒāļđāđ 2 āļāļĢāļ°āđāļ āļ
ï§ āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāđāļāļāļĩāļāļĩāļĒāļđ (CPU-bound process) āđāļāđāļāļāļĢāļ°āļāļ§āļ
āļāļēāļĢāļāļĩāđāđāļāđāļēāļāļĢāļāļāļāļĢāļāļāļāļĩāļāļĩāļĒāļđāļāļēāļāđāļāđāđāļāļĩāđāļĒāļ§āļāļąāļāļāļąāļāļāļļāļāļāļĢāļāđāļāļĢāļ°āđāļ āļ
āđāļ/āđāļāļāđāļāļĒ
ï§ āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāđāļāđāļ/āđāļ (I/O-bound process) āļāļķāđāļāđāļāđāļāļāļĢāļ°
āļāļ§āļāļāļēāļĢāļāļĩāđāđāļāđāđāļ§āļĨāļēāļāļĩāļāļĩāļĒāļđāļāđāļāļĒāđāļāđāļāļĢāļāļāļāļĢāļāļāđāļ/āđāļāļāļēāļ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 16
17. āļāļēāļĢāļŠāļąāļ āđāļāļĨāļĩāđāļĒ āļ (swapping)
Medium Term Scheduling āļāļ°āļāđāļ§āļĒāļāļąāļāļŠāļĢāļĢ
āļāļĢāļ°āļāļ§āļāđāļāļāđāļāđāļāļāļĩāļāļĒāļđāđāļĨāļ°āđāļāļāđāļāđāļ i/o āđāļŦāđāļĄāļĩ
āļĩ
āļāļ§āļēāļĄāļŠāļĄāļāļļāļĨāļāļąāļāļĄāļēāļāļāļķāđāļāđāļāļĢāļ°āļāļ
āđāļāļĒāļāļĒāļēāļĒāļēāļĄāļŠāļĨāļąāļāđāļāļēāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļĒāļāđāļĄāđ āļą
āļāļģāļēāđāļāđāļāļāļāļāļāļēāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļēāđāļāđāļāđāļāđāļ§āđāđāļāļāļīāļŠāļāđ
āđāļĨāļ°āļŠāļĨāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāļāļģāļēāđāļāđāļāļāļēāļāļāļīāļŠāļāđāđāļāđāļēāļĄāļē
āđ
āđāļ§āđāđāļāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļē
āđāļĢāļĩāļĒāļāļāļīāļāļāļĢāļĢāļĄāđāļāđāļāļāļĩāļ§āđāļē āļāļēāļĢāļŠāļĨāļąāļāđāļāđāļē/āļāļēāļĢāļŠāļĨāļąāļ
āđ
āļāļāļ (swap-in/swap-out)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 17
18. āļāļēāļĢāļŠāļĨāļąāļ āļāļĢāļīāļ āļ (Context Switch)
āđāļĄāļ·āđāļāļāļĩāļāļĩāļĒāļđāļāļ°āđāļāļĨāļĩāđāļĒāļāđāļāļĒāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļ·āđāļ āļāļ°āļāđāļāļ
āđāļāđāļāļŠāļāļēāļāļ°āļāļąāļāļāļļāļāļąāļāļāļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāļīāļĄāđāļ§āđāđāļ
PCB (process control box) āļāđāļāļ āđāļĨāđāļ§āļāđāļāļĒ
āđāļŦāļĨāļāļŠāļāļēāļāļ°āļāļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļŦāļĄāđāđāļāđāļēāļĄāļē
āđāļāļāļēāļĢāļŠāļĨāļąāļāļāļĢāļīāļāļ āļĢāļ°āļāļāļāļ°āđāļŠāļĩāļĒāđāļ§āļĨāļē (āļĄāļĩ overhead)
āđāļĨāļ°āļĒāļąāļāļāļģāļēāļāļēāļāđāļĄāđāđāļāđāļāļāļ°āļāļģāļēāļāļēāļĢāļŠāļĨāļąāļāļāļĢāļīāļāļ āļāļķāļāļĄāļąāļ
āđāļāđāļŪāļēāļĢāđāļāđāļ§āļĢāđāļāđāļ§āļĒ
PCB āļāļ°āđāļāđāļāļāđāļāļĄāļđāļĨ
ï§ āļāđāļēāļāļāļāđāļĢāļāļīāļŠāđāļāļāļĢāđāđāļāļāļĩāļāļĩāļĒāļđ
ï§ āļŠāļāļēāļāļ°āļāļĢāļ°āļāļ§āļāļāļēāļĢ
ï§ āļāđāļāļĄāļđāļĨāļāļēāļĢāļāļąāļāļāļēāļĢāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģāļē
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 18
19. āļāļēāļĢāļŠāļĢāđāļē āļāļāļĢāļ°āļāļ§āļāļāļēāļĢ (Process Creation)
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāļĢāļ°āļāļ§āļāļāļķāđāļāļĄāļēāđāļŦāļĄāđ
āđāļāđāđāļāļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļāļģāļēāļāļēāļāļāđāļēāļ system call
āļāļēāļĢāļŠāļĢāđāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ (create-process)
ï§ āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļŠāļĢāđāļēāļāđāļĢāļĩāļĒāļāļ§āđāļē āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļĄāđ
(parent process)
ï§ āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļāļđāļāļŠāļĢāđāļēāļāđāļĢāļĩāļĒāļāļ§āđāļē āļāļĢāļ°āļāļ§āļāļāļēāļĢāļĨāļđāļ
(children process) āļāļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļĄāđāļāļ āļąāđ
ï§ āđāļāđāļĨāļ°āļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļēāļĄāļēāļĢāļāļŠāļĢāđāļēāļāļāļĢāļ°āļāļ§āļāļĨāļđāļāđāļāđ
āļāļĒāđāļēāļāđāļĄāđāļāļģāļēāļāļąāļāđāļāļĢāļđāļāđāļāļāļāđāļāđāļĄāđ (tree)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 19
20. Process Creation (cont.)
āļĨāļąāļāļĐāļāļ°āļāļēāļĢāđāļāđāļāļāļąāļāļāļĢāļąāļāļĒāļēāļāļĢ
ï§ āļāļąāđāļ Parent āđāļĨāļ° children āļāļ°āđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāļĢāđāļ§āļĄāļāļąāļ
āļāļąāđāļāļŦāļĄāļ
ï§ children āļāļ°āđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāđāļāļŠāđāļ§āļāļāļāļ parent
ï§ āļāļąāđāļ Parent and child āđāļĄāđāļĄāļāļēāļĢāđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāļĢāđāļ§āļĄāļāļąāļ
āļĩ
Execution
ï§ Parent āđāļĨāļ° children āļāļ° execute āļāļĢāđāļāļĄāđ āļāļąāļ
ï§ Parent āļāļ°āļĢāļāļāļāļāļĢāļ°āļāļąāđāļ children āļŠāļīāđāļāļŠāļļāļ
Address space
ï§ Child āđāļĢāļĩāļĒāļāđāļāđāđāļĨāļāļāļĩāļāļĒāļđāđāđāļāļĩāļĒāļ§āļāļąāļ Parent
āđ
ï§ Children āļāļģāļēāļāļēāļĢāļāļĢāļĢāļāļļāđāļāļĢāđāļāļĢāļĄāđāļāđāļēāđāļāđāļ§āđāđāļāļāļģāļēāđāļŦāļāđāļāļāļĩāđ
āļāļĒāļđāđāļāļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ Parent
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 20
21. āļāļēāļĢāđāļĨāļīāļ āļāļĢāļ°āļāļ§āļāļāļēāļĢ
(Process Termination)
āđāļĄāļ·āđāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĢāļ°āļāļģāļēāļāļēāļĢāđāļŠāļĢāđāļāļŠāļīāļāđāļĨāđāļ§āļāđāļāļ°āļĨāļ
āđ
āļāļąāļ§āđāļāļ (āļāđāļēāļāļāļēāļ exit system call)
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļēāļāļāļ·āļāļāđāļēāļāļĨāļĨāļąāļāļāđāļāļēāļāļāļĒāđāļēāļāļāļĨāļąāļ
āđāļāļĒāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļĄāđ (āļāđāļēāļāļāļēāļ wait system
call) āđāļĨāđāļ§āļāļĨāļāļāļĨāđāļāļĒāļāļĢāļąāļāļĒāļēāļāļĢāļāļąāļāļŦāļĄāļ āđāļāđāļ
āđ
physical/virtual memory, file open, i/o
buffer
āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļĄāđāļŠāļēāļĄāļēāļĢāļāļĒāļāđāļĨāļīāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ
āļāļąāđāļāļŦāļĄāļāļāļāļāļĨāļđāļāđāļāđ (abort) āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļĄāđāļāļđāļ
āļĒāļāđāļĨāļīāļāđāļāļĒāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļŦāļĢāļ·āļāļāļđāđāđāļāđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 21
22. āļāļēāļĢāđāļĨāļīāļ āļāļĢāļ°āļāļ§āļāļāļēāļĢ
(Process Termination)
āļāļēāļĢāļĒāļāđāļĨāļīāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļēāļĄāļēāļĢāļāđāļāļīāļāļāļķāđāļāļŦāļĨāļēāļĒ
āļŠāļēāđāļŦāļāļļ
ï§ āļāļĢāļ°āļāļ§āļāļāļēāļĢāļĨāļđāļāđāļĢāļĩāļĒāļāđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāļāļĩāđāđāļĄāđāļĄāļŠāļīāļāļāļīāđāļāđ
āļĩ āđ
ï§ āļ āļēāļĢāļāļīāļāļāļĩāđāļāļĢāļ°āļāļ§āļāļāļēāļĢāļĨāļđāļāļāļģāļēāđāļŠāļĢāđāļāļŠāļīāđāļāđāļĨāđāļ§āđāļĄāđāļāļģāļēāđāļāđāļāļāđāļāļ
āđāļāđāļāļĢāļ°āļāļ§āļāļāļēāļĢāļĨāļđāļāļāļĩāļāļāđāļāđāļ
ï§ āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļĄāđāļāļāļāļāļēāļāļĢāļ°āļāļ āđāļĨāļ°āļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāđāļĄāđ
āļāļāļļāļāļēāļāđāļŦāđāļāļĢāļ°āļāļ§āļāļāļēāļĢāļĨāļđāļāđāļāđāļēāđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāļāļĩāļāļāđāļāđāļ
āļāļģāļēāđāļāđāļāļāđāļāļāļĄāļĩāļāļĨāđāļāļāļēāļĢāđāļĨāļīāļāđāļāļāļāđāļāđāļĢāļĩāļĒāļ
(cascading termination) āđāļāļ·āđāļāļĒāļāđāļĨāļīāļ
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļĒāđāļāļĒāđāļāļāđāļāđāļāļāļāļāđ āđāļāđāļāļĢāļāļŠāļĢāđāļēāļ
āđāļāļāļāđāļāđāļĄāđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 22
23. Processes Tree on a UNIX
System
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 23
24. āļāļēāļĢāļāļĢāļ°āļŠāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ
(Cooperating Process)
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļēāļĄāļēāļĢāļāļāļģāļēāļāļēāļāđāļāļāļĢāđāļāļĄāđāļāļąāļ
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļ·āđāļāđ āđāļāđāđāļāļĒāļāļīāļŠāļĢāļ°āļāđāļāļāļąāļ āļŦāļĢāļ·āļāļāļēāļ
āļāļĢāļ°āļŠāļēāļāļāļēāļāļāļąāļāđāļāđ
ï§ āļāđāļēāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļŦāļĨāđāļēāļāļĩāđāļĄāđāđāļāđāđāļāđāļāđāļāļĄāļđāļĨāđāļāđ āļĢāđāļ§āļĄāļāļąāļ
āđ
āļāļąāđāļāđāļāļāļāļąāđāļ§āļāļĢāļēāļ§āđāļĨāļ°āļāļēāļ§āļĢ āđāļĢāļĩāļĒāļāļ§āđāļēāļāļīāļŠāļĢāļ°āļāđāļāļāļąāļ
(independent)
ï§ āļāđāļēāļŦāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļŦāļĨāđāļēāļāļąāđāļāđāļāļĩāđāļĒāļ§āļāđāļāļāļāļąāļ āļĄāļĩāļāļēāļĢāđāļāđ
āļāđāļāļĄāļđāļĨāļĢāđāļ§āļĄāļāļąāļ āļāļīāļāļāļĢāļĢāļĄāļāļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŦāļāļķāđāļāļĄāļĩāļāļĨ
āļāđāļāļāļĩāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŦāļāļķāđāļ āđāļĢāļēāđāļĢāļĩāļĒāļāļ§āđāļēāļāļĢāļ°āļāļ§āļāļāļēāļĢ
āđāļŦāļĨāđāļēāļāļĩāđāļāļĢāļ°āļŠāļēāļāļāļēāļāļāļąāļ (cooperating)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 24
25. Cooperating Process (cont.)
āļāđāļāļāļĩāļāļāļāļāļēāļĢāļāļĩāđāļāļĢāļ°āļāļ§āļāļāļēāļĢāļĄāļĩāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāđāļ
āļāļēāļĢāļāļģāļēāļāļēāļāļāļĒāđāļēāļāļāļĢāļ°āļŠāļēāļāļāļąāļāļĄāļĩāļŦāļĨāļēāļĒāļāļĢāļ°āļāļēāļĢ āđāļāđāđāļāđ
ï§ āļāļēāļĢāđāļāđāļāļāļąāļāļāđāļāļĄāļđāļĨ (information sharing)
ï§ āđāļāļīāđāļĄāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ (computation
speedup)
ï§ āļŠāļ āļēāļāļĄāļāļāļļāļĨāļēāļĢāđ (modularity)
ï§ āļāļ§āļēāļĄāļŠāļ°āļāļ§āļ (convenience)
āđāļāļāļēāļĢāļāļģāļēāļāļēāļāļĢāđāļ§āļĄāļāļąāļāļāļģāļēāđāļāđāļāļāđāļāļāļāļēāļĻāļąāļĒāļāļĨāđāļāļāļēāļĢ
āļŠāļ·āđāļāļŠāļēāļĢāļāđāļēāļĄāļāļĢāļ°āļāļ§āļāļāļēāļĢ (IPC) āđāļĨāļ°āļāļēāļĢāļāļĢāļ°āļŠāļēāļ
āđāļ§āļĨāļē (synchronization) āđāļāđāļēāļĄāļēāļāđāļ§āļĒ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 25
26. āļāļēāļĢāļŠāļ·āļ āļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļē āļāļāļĢāļ°āļāļ§āļāļāļēāļĢ
āđ
(Interprocess Communication: IPC)
āļāļēāļĢāļŠāđāļāļāđāļēāļāļāđāļēāļ§āļŠāļēāļĢ (message-passing)
āļāļēāļĢāļāļąāđāļāļāļ·āđāļ (naming)
āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāļēāļāļāđāļāļĄ (indirect
communication)
āļāļēāļĢāļāļĢāļ°āļŠāļēāļāđāļ§āļĨāļē (synchronization)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 26
27. Interprocess Communication (IPC)
Mechanism for processes to communicate and to
synchronize their actions.
Message system â processes communicate with
each other without resorting to shared variables.
IPC facility provides two operations:
ï§ send(message) â message size fixed or variable
ï§ receive(message)
If P and Q wish to communicate, they need to:
ï§ establish a communication link between them
ï§ exchange messages via send/receive
Implementation of communication link
ï§ physical (e.g., shared memory, hardware bus)
ï§ logical (e.g., logical properties)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 27
28. Implementation Questions
-āļāļ°āļāļģāļēāļāļēāļĢāļāļīāļāļāļąāđāļāļŠāļēāļĒāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāđāļāđāļāļĒāđāļēāļāđāļĢ
-āļŠāļēāļĒāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļŦāļāļķāđāļāđāļŠāđāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļŠāļ·āđāļāļŠāļēāļĢāđāļāđ
āļĄāļēāļāļāļ§āđāļēāļŦāļāļķāđāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŦāļĢāļ·āļāđāļĄāđ
-āļāđāļāļāļĄāļĩāļāļģāļēāļāļ§āļāļŠāļēāļĒāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāđāļĨāļ°
āļāļđāđāđāļāđāļāļĩāđāđāļŠāđāļ
-āļāļ§āļēāļĄāļāļļāļāļāļāļŠāļēāļĒāļāļ§āļĢāļĄāļĩāļāļāļēāļāđāļāđāļēāđāļĢ
-āļāļāļēāļāļāļāļāļāđāļēāļ§āļŠāļēāļĢāļāļĩāđāđāļāđāļŠāļ·āđāļāļŠāļēāļĢāļāļąāļāļāļ°āļĄāļĩāļĢāļđāļāđāļāļ
āļāļāļāļĩāđāļŦāļĢāļ·āļāđāļāļĢāļāļąāļ
-āļŠāļēāļĒāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļāļ°āđāļāđāļāđāļāļāđāļāļĩāđāļĒāļ§
(unidirectional) āļŦāļĢāļ·āļāđāļāļāļāļđāđ (bi-directional)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 28
29. Direct Communication
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļāđāļāļāļāļēāļĢāļŠāļ·āđāļāļāļ°āļāđāļāļāđāļāđāļāļ·āđāļāļāļĩāđāļāļąāļāđāļāļāļāļąāđāļāļāļąāđāļ
āļĢāļąāļāđāļĨāļ°āļāļąāđāļāļŠāđāļāđāļāļĢāļđāļāđāļāļāļāđāļēāļāļĨāđāļēāļāļāļĩāđ
ï§ -send(P, message) -āļŠāđāļāļāđāļēāļ§āļŠāļēāļĢāđāļāļĒāļąāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ
P
ï§ -receive(Q, message) -āļĢāļąāļāļāđāļēāļ§āļŠāļēāļĢāļāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢ Q
Â
āļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļāļ°āļāđāļāļāļĄāļĩāļāļļāļāļĨāļąāļāļĐāļāļ° āļāļąāļāļāļĩāđ
ï§ āļāļąāđāļāļāļąāđāļāļĢāļąāļāđāļĨāļ°āļāļąāđāļāļŠāđāļāļāļ°āļāđāļāļāļāļīāļāļāļąāđāļāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļĢāļ°āļŦāļ§āđāļēāļāļāļąāļāđāļāļĒ
āļāļąāļāđāļāļĄāļąāļāļī
ï§ āļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļāļ°āļāļģāļēāđāļāļāļēāļ°āļāļđāđāļāļāļāļāļąāļāļĢāļąāļāđāļĨāļ°āļāļąāļāļŠāđāļāđāļāđāļēāļāļąāđāļ
āđ āđ
ï§ āļāļąāđāļāļĢāļąāļāđāļĨāļ°āļāļąāđāļāļŠāđāļāļāļ°āļĄāļĩāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāđāļāļĩāļĒāļāđāļŠāđāļāđāļāļĩāļĒāļ§āđāļāđāļēāļāļąāđāļ
ï§ āļŠāļēāļĒāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāđāļāļąāđāļāđāļāļāļāļēāļāđāļāļĩāđāļĒāļ§āđāļĨāļ°āļāļēāļāļāļđāđ
āđāļāđāđāļāļĒāļāļąāđāļ§āđāļāđāļāđāđāļāļāļāļēāļāļāļđāđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 29
30. Indirect Communication
āļāđāļēāļ§āļŠāļēāļĢāļāļ°āļāļđāļāļŠāđāļāđāļĨāļ°āļĢāļąāļāļāđāļēāļāļāļēāļ mailbox
āļŦāļĢāļ·āļport
ï§ mailbox āļāļ°āļĄāļĩāđāļĨāļāļāļĩāļāļķāđāļāđāļĄāđāļāļģāđāļēāļāļąāļ (unique id) āļāļģāļēāļāļąāļāđāļ§āđ
āđ
ï§ āļāļļāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļēāļĄāļēāļĢāļāļāļīāļāļāđāļāļŠāļ·āđāļāļŠāļēāļĢāļāļķāļāļāļąāļāđāļāļĒ
āļāļēāļĻāļąāļĒmailbox āļāļąāļāļāļĨāđāļēāļ§āļāļĩāđ āđāļāļāļēāļāļāļĢāļāļĩ āļāļēāļāļĄāļĩāļĄāļēāļāļāļ§āđāļē
āļŦāļāļķāđāļāļāļĢāļ°āļāļ§āļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļđāđāđāļāļĢāļĐāļāļĩāļĒāđāļĢāđāļ§āļĄāļāļąāļāđāļāđ
Operation āļāļāļ mailbox
ï§ āļāļēāļĢāļŠāļĢāđāļēāļāļāļđāđāđāļāļĢāļĐāļāļĩāļĒāđāđāļŦāļĄāđ
ï§ āļāļēāļĢāļŠāđāļāļāđāļēāļ§āļŠāļēāļĢāļāđāļēāļāļāļđāđāđāļāļĢāļĐāļāļĩāļĒāđ
ï§ āļāļēāļĢāļĨāļāļāļđāđāđāļāļĢāļĐāļāļĩāļĒāđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 30
31. Indirect Communication
Mailbox sharing
ï§ P1, P2, and P3 share mailbox A.
ï§ P1, sends; P2 and P3 receive.
ï§ Who gets the message?
Solutions
ï§ āļāļāļļāļāļēāļāđāļŦāđāļŠāļēāļĒāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļŦāļāļķāđāļāđāļŠāđāļāļĢāļāļāļĢāļąāļ
āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāđāļĄāļēāļāļāļĩāđāļŠāļļāļāđāļāļĩāļĒāļ 2 āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāđāļēāļāļąāđāļ
ï§ āļāļāļļāļāļēāļāđāļŦāđāļĄāđāļāļĩāļĒāļāļāļĢāļ°āļāļ§āļāđāļāļĩāļĒāļ§āļāļĩāđāļŠāļēāļĄāļēāļĢāļāļĢāļąāļāļāđāļēāļ§āļŠāļēāļĢ
āļĩ
āļāļēāļāļāļđāđāđāļāļĢāļĐāļāļĩāļĒāđ āļ āļāļāļ°āđāļāļāļāļ°āļŦāļāļķāđāļ
ï§ āđāļŦāđāļĢāļ°āļāļāđāļāđāļāļāļđāļāļąāļāļŠāļīāļāđāļāļāļĩāđāļāļēāļāļ§āđāļēāļāļ°āđāļĨāļ·āļāļāđāļŦāđāļāļĢāļ°āļāļ§āļāļāļēāļĢ
āđ
āđāļāđāļāđāļāļāļđāļĢāļąāļāļāđāļēāļ§āļŠāļēāļĢāļāļąāđāļ āđāļĨāļ°āđāļāđāļāļ§āđāļēāđāļāļĢāđāļāđāļāļāļđāļĢāļąāļāđāļāđāļŦāđāļāļđāđ
āđ āđ
āļŠāđāļāļāļĢāļēāļ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 31
32. āļāļēāļĢāļāļĢāļ°āļŠāļēāļāđāļ§āļĨāļē
(synchronization)
āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļ°āļāļĒāļđāđāđāļāļĢāļđāļāđāļāļāļāļĩāđ
āđāļĢāļĩāļĒāļāļ§āđāļē āļāļēāļĢāļŠāđāļ (send) āđāļĨāļ°āļāļēāļĢāļĢāļąāļ (receive)
āļŠāļēāļĄāļēāļĢāļāļāļāļāđāļāļāđāļāļāļēāļĢāļĢāļąāļ-āļŠāđāļāļāđāļēāļ§āļŠāļēāļĢāđāļāđāļāđāļāļ
āļāļĨāđāļāļ (blocking) āļŦāļĢāļ·āļāđāļāļāļāļąāļāļāļĨāđāļāļ
(nonblocking)
āđāļāļāļāļĨāđāļāļ (blocking) āļāļēāļāļāļĩāđāļĢāļĩāļĒāļāļ§āđāļēāļāļēāļĢāļāļĢāļ°āļŠāļēāļ
āđāļ§āļĨāļē (synchronous)
āđāļāļāļāļąāļāļāļĨāđāļāļ (nonblocking) āļāļēāļāļāļĩāđāļĢāļĩāļĒāļāļ§āđāļē āđāļĄāđ
āļāļĢāļ°āļŠāļēāļāđāļ§āļĨāļē (asynchronous) āļāđāđāļāđ
āļāļēāļĢāļĢāļąāļāđāļĨāļ°āļāļēāļĢāļŠāđāļ āļŠāļēāļĄāļēāļĢāļāļāļģāļēāļŦāļāļāđāļŦāđāđāļāđāļāđāļāļ
āļāļĨāđāļāļ āļŦāļĢāļ·āļāļāļąāļāļāļĨāđāļāļ āļāđāđāļāđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 32
33. āļāļēāļĢāļāļĢāļąāļ āļāļąāļ āļĢāļē (buffering)
āļāđāļēāļ§āļŠāļēāļĢāļāļ°āļāļđāļāđāļĨāļāđāļāļĨāļĩāđāļĒāļāđāļāļĒāļāļĢāļ°āļāļ§āļāļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢ
āļāļķāđāļāļāļĒāļđāđāđāļāļāļāļāļāđāļāļāļāļąāļ§āļāļĢāļēāļ§ (temporary queue)
āđ
āđāļĨāļ·āļāļāļ§āļīāļāđāļāļ§āļīāļāļĩāļŦāļāļķāđāļāļāļąāļāļāļĩāđ
āļĩ
ï§ āļāļ§āļēāļĄāļāļļāļāđāļēāļĻāļđāļāļĒāđ (zero capacity) āļāļāļēāļāļŠāļđāļāļŠāļļāļāļāļāļāļāļāļ
āļāđāļāļāļĄāļĩāļāļēāđāļāđāļāļĻāļđāļāļĒāđ āļŦāļĄāļēāļĒāļāļ§āļēāļĄāļ§āđāļē āļāļ°āļĄāļĩāļāđāļēāļ§āļŠāļēāļĢāļāļĒāļđāđāđāļāļāļāļ
āđ
āļāđāļāļāđāļāđāđāļāļĩāļĒāļāļāļļāļāđāļāļĩāļĒāļ§āđāļāđāļēāļāļąāđāļ
ï§ āļāļ§āļēāļĄāļāļļāļāđāļēāļāļģāļēāļāļąāļ (bounded capacity) āļāļāļēāļāļāļ§āļēāļĄāļāļļ
āļāļāļāļāļāļāļāđāļāļāļĄāļĩāļāļēāļāļģāļēāļāļąāļāđāļāđāļēāļāļąāļ n āļāļąāļāļāļąāđāļ āļāļķāļāļĢāļāļāļĢāļąāļ
āđ
āļāđāļēāļ§āļŠāļēāļĢāđāļāđāļĄāļēāļāļāļķāļ n āļāļģāļēāļāļ§āļāđāļāđāļēāļāļ§āļēāļĄāļāļļ
ï§ āļāļ§āļēāļĄāļāļļāļāđāļēāđāļĄāđāļāļģāļēāļāļąāļ (unbounded capacity) āļāļķāļāļŠāļēāļĄāļēāļĢāļ
āļĢāļāļāļĢāļąāļāļāđāļēāļ§āļŠāļēāļĢāđāļāđāļāļāļŦāļĄāļāđāļāļĒāļāļđāļŠāđāļāđāļĄāđāļāļģāļēāđāļāđāļāļāđāļāļāļŦāļĒāļļāļāļĢāļ
āļąāđ āđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 33
34. āđāļāļĢāļ (Thread)
āđāļāļīāļĄ 1 āļāļĢāļ°āļāļ§āļāļāļēāļĢ āļāļ§āļāļāļļāļĄ 1 āđāļāļĢāļ āđāļĢāļĩāļĒāļāļ§āđāļēāļĄāļĩāļāļģāđāļēāļŦāļāļąāļāļĄāļēāļ
(heavyweight)
āļāļąāļāļāļļāļāļ 1 āļāļĢāļ°āļāļ§āļāļāļēāļĢ āļĄāļĩāļāļēāļĢāļāļāļāđāļāđāļāļŠāđāļ§āļāļĒāđāļāļĒāđ āļāļģāļēāļāļ§āļ
āļą
āļĄāļēāļ āđāļāđāļĨāļ°āļŠāđāļ§āļāļĒāđāļāļĒāđāļĢāļĩāļĒāļāļ§āđāļē āđāļāļĢāļ āđāļĢāļĩāļĒāļāļ§āđāļē āļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļģāđāļē
āļŦāļāļąāļāđāļāļē (lightweight process)
ï§ āđāļāđāļĨāļ°āđāļāļĢāļāļāļ°āļāļĢāļĢāļāļļāđāļ§āđāļāđāļ§āļĒ āļŦāļĄāļēāļĒāđāļĨāļāđāļāļĢāļ, āļāļąāļ§āļāļąāļāđāļāļĢāđāļāļĢāļĄ, āļāļĨāļļāđāļĄ
āđāļĢāļāļīāļŠāđāļāļāļĢāđ āđāļĨāļ°āļāļāļāļāđāļāļāļāļĩāđāđāļāđ
ï§ āđāļāļĢāļāļāļ°āļĄāļĩāļāļēāļĢāđāļāđāļāļēāļāļĢāđāļ§āļĄāļāļąāļāļāļąāļāđāļāļĢāļāļāļ·āļāđ āļ āļēāļĒāđāļāđāļāļĢāļ°āļāļ§āļāļāļēāļĢ
āđ
āđāļāļĩāļĒāļ§āļāļąāļ āđāļāđāļ āļŠāđāļ§āļāļĢāļŦāļąāļŠ, āļāđāļāļĄāļđāļĨ
ï§ āļĄāļĩāļāļēāļĢāđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāļāļ·āļāļāļāļāļĢāļ°āļāļāļāļāļīāļāļāļīāļāļēāļĢ āļāļĒāđāļēāļāđāļāđāļ āļāļēāļĢāđāļāļīāļ
āđ āļą
āđāļāđāļĄ āđāļĨāļ°āļŠāļąāļāļāļēāļ (signal)
āļāļĢāļ°āļāļ§āļāļāļēāļĢāļĄāļĩāļāļāļĨāļąāļāļĐāļāļ°āđāļāđāļāđāļāļāļĄāļąāļĨāļāļīāđāļāļĢāļ (multithread)
āļļ
āļŠāļēāļĄāļēāļĢāļāļāļ§āļāļāļļāļĄāđāļāļĢāļāļŦāļĨāļēāļĒāđāļāļĢāļ āļāļķāļāļŠāļēāļĄāļēāļĢāļāļāļģāļēāļāļēāļāđāļāđāļŦāļĨāļēāļĒ
āļāļēāļāđāļāļāļĢāđāļāļĄāđ āļāļąāļāđāļāđāđāļāđāļ§āļĨāļēāđāļāļĩāļĒāļ§āļāļąāļ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 34
35. Thread (cont.)
āļāļĢāļ°āļāļ§āļāļāļēāļĢāđāļāļāđāļāļĢāļāđāļāļĩāļĒāļ§āļāļąāļāļĄāļąāļĨāļāļīāđāļāļĢāļ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 35
36. Thread (cont.)
āļāļĢāļ°āđāļĒāļāļāđāļāļāļāļĄāļąāļĨāļāļīāđāļāļĢāļ
ï§ āļāļēāļĢāđāļāđāļāļāļ
ï§ āļāļēāļĢāđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāļĢāđāļ§āļĄāļāļąāļ
ï§ āļāļĢāļ°āļŦāļĒāļąāļ
ï§ āļāļēāļĢāđāļāđāļāļĢāļ°āđāļĒāļāļāđāļāļēāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāļāļĄāļąāļĨāļāļī
āđāļāļĢāđāļāļŠāđāļāļāļĢāđ
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 36
37. User Threads
Thread management done by user-level
threads library
Examples
- POSIX Pthreads
- Mach C-threads
- Solaris threads
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 37
38. Kernel Threads
Supported by the Kernel
Examples
- Windows 95/98/NT/2000
- Solaris
- Tru64 UNIX
- BeOS
- Linux
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 38
39. Multithreading Models
Many-to-One
One-to-One
Many-to-Many
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 39
40. Many-to-One
Many user-level threads mapped to
single kernel thread.
Used on systems that do not support
kernel threads.
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 40
41. Many-to-One Model
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 41
42. One-to-One
Each user-level thread maps to kernel
thread.
Examples
- Windows 95/98/NT/2000
- OS/2
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 42
43. One-to-one Model
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 43
44. Many-to-Many Model
Allows many user level threads to be
mapped to many kernel threads.
Allows the operating system to create a
sufficient number of kernel threads.
Solaris 2
Windows NT/2000 with the ThreadFiber
package
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 44
45. Many-to-Many Model
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 45
46. Threading Issues
Semantics of fork() and exec() system
calls.
Thread cancellation.
Signal handling
Thread pools
Thread specific data
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 46
47. Pthreads
a POSIX standard (IEEE 1003.1c) API
for thread creation and synchronization.
API specifies behavior of the thread
library, implementation is up to
development of the library.
Common in UNIX operating systems.
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 47
48. Solaris 2 Threads
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 48
49. Solaris Process
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 49
50. Windows 2000 Threads
Implements the one-to-one mapping.
Each thread contains
- a thread id
- register set
- separate user and kernel stacks
- private data storage area
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 50
51. Linux Threads
Linux refers to them as tasks rather than
threads.
Thread creation is done through clone()
system call.
Clone() allows a child task to share the
address space of the parent task
(process)
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 51
52. Java Threads
Java threads may be created by:
ï§ Extending Thread class
ï§ Implementing the Runnable interface
Java threads are managed by the JVM.
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 52
53. Java Thread States
āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 53
54. āļ§āļīāđ āļāļĐāļāđ āļāļĨāļēāļĒāļĄāļēāļĻ | āđāļāļĢāļāļŠāļĢāđāļēāļāļĢāļ°āļāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļāļāļĢāļ°āļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ | 54