SlideShare a Scribd company logo
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 1
āļšāļ—āļ—āļĩāđˆ 2
āđ‚āļ›āļĢāđ€āļ‹āļŠ āđāļĨāļ°
Thread
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 2
āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļāļģāļēāļĨāļąāļ‡āļ–āļđāļāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ
 āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļāļģāļēāļĨāļąāļ‡āļ—āļģāļēāļ‡āļēāļ™āļ­āļĒāļđāđˆ
 āļāļīāļˆāļāļĢāļĢāļĄāļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļ™
 āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļāļģāļēāļĨāļąāļ‡āđƒāļŠāđ‰āļ‡āļēāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒāļ­āļĒāļđāđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 3
Process āđƒāļ™āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
Windows
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 4
Process āđƒāļ™āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Linux
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 5
1. āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ1. āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļŦāļĄāļēāļĒāđ€āļĨāļ‚āđ‚āļ›āļĢāđ€āļ‹āļŠ (Process ID) āđ€āļ›āđ‡āļ™āļŦāļĄāļēāļĒāđ€āļĨāļ‚
āļ›āļĢāļ°āļˆāļģāļēāđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļžāļ·āđˆāļ­āļāļģāļēāļŦāļ™āļ”āļĨāļģāļēāļ”āļąāļš
 āđ‚āļ„āđ‰āļ”āđ‚āļ›āļĢāđāļāļĢāļĄ (Program Code) āļ āļēāļĐāļēāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āđƒāļŠāđ‰
āļŠāļģāļēāļŦāļĢāļąāļšāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ
 āļ‚āđ‰āļ­āļĄāļđāļĨ (Data) āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāđ‚āļāļĨāļšāļ­āļĨ
 āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ (Process Control Block
) āļŦāļĢāļ·āļ­ PCB
 PSW (Program Status Word) āļ•āļąāļ§āļ„āļ§āļšāļ„āļļāļĄāļĨāļģāļēāļ”āļąāļš
āļāļēāļĢāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļ„āļģāļēāļŠāļąāđˆāļ‡āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āđāļĨāļ°āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļ–āļēāļ™āļ°
āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ

āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 6
āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ (PCB)āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ (PCB)
 āļžāļ­āļĒāđ€āļ•āļ­āļĢāđŒ (Pointer) āđƒāļŠāđ‰āļŠāļĩāđ‰āļ•āļģāļēāđāļŦāļ™āđˆāļ‡āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™
āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļē
 āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ (Process state) āđƒāļŠāđ‰āđāļŠāļ”āļ‡
āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļ›āļąāļˆāļˆāļļāļšāļąāļ™
 āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ (Process ID) āđ€āļ›āđ‡āļ™
āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļēāļ•āļąāļ§āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļ•āļąāļ§āļ™āļąāļšāļˆāļģāļēāļ™āļ§āļ™ (Program counter) āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ™āļąāļš
āđāļŠāļ”āļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāļ‚āļ­āļ‡āļ„āļģāļēāļŠāļąāđˆāļ‡āļ•āđˆāļ­āđ„āļ›
 āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ (Register) āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļ–āļēāļ™āļ°āļĢāļ°āļšāļšāđ€āļĄāļ·āđˆāļ­āļĄāļĩ
interrupt āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™
 āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ§āļĨāļēāļ‚āļ­āļ‡āļ‹āļĩāļžāļĩāļĒāļđ (CPU
scheduling information)
 āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļē (Memory
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 7
āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ
(PCB)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 8
2. āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ2. āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļŠāļ–āļēāļ™āļ°āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ (New)
 āļŠāļ–āļēāļ™āļ°āļžāļĢāđ‰āļ­āļĄ (Ready)
 āļŠāļ–āļēāļ™āļ°āļĢāļąāļ™ (Run)
 āļŠāļ–āļēāļ™āļ°āļĢāļ­,āļžāļąāļ (Wait)
 āļŠāļ–āļēāļ™āļ°āļšāļĨāđ‡āļ­āļ (Block)
 āļŠāļ–āļēāļ™āļ°āļŠāļīāđ‰āļ™āļŠāļļāļ” (Terminate)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 9
āđ„āļ”āļ­āļ°āđāļāļĢāļĄāļ‚āļ­āļ‡āļŠāļ–āļēāļ™āļ°
āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 10
3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ
 āđƒāļŠāđ‰āđƒāļ™āļĢāļ°āļšāļšāļĄāļąāļĨāļ•āļīāđ‚āļ›āļĢāđāļāļĢāļĄāļĄāļīāđˆāļ‡ āļ„āļ·āļ­āļāļēāļĢāļˆāļąāļ”āđ‚āļ›āļĢāđ€āļ‹āļŠ
āđƒāļŦāđ‰āļĢāļąāļ™āļ•āļĨāļ­āļ”āđ€āļ§āļĨāļē āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ‹āļĩāļžāļĩāļĒāļđāđ„āļ”āđ‰
āļŠāļđāļ‡āļŠāļļāļ”
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āļĄāļēāđƒāļŦāļĄāđˆāļˆāļ°āļ­āļĒāļđāđˆ
āđƒāļ™āļŠāļ–āļēāļ™āļ°āļžāļĢāđ‰āļ­āļĄāđāļĨāļ°āđ€āļāđ‡āļš āļ­āļĒāļđāđˆāđƒāļ™āļ„āļīāļ§ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē
Ready Queue āđ€āļžāļ·āđˆāļ­āļĢāļ­āļāļēāļĢāļĢāļąāļ™
 āļ•āđ‰āļ­āļ‡āļžāļīāļˆāļēāļĢāļ“āļēāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļ‚āļ­āļ‡āļĢāļ°āļšāļšāļĄāļĩāđ€āļžāļĩāļĒāļ‡āļžāļ­
āļŦāļĢāļ·āļ­āđ„āļĄāđˆ
 Ready Queue āļˆāļ°āđ€āļāđ‡āļšāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļĨāļąāļāļĐāļ“āļ°āļĨāļīāļ‡āļ„āđŒ
āļĨāļīāļŠāļ•āđŒ (Link list) āļ—āļĩāđˆāļŠāđˆāļ§āļ™āļŦāļąāļ§āļ‚āļ­āļ‡āļ„āļīāļ§ āļˆāļ°āļ›āļĢāļ°āļāļ­āļš
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 11
āļ„āļīāļ§āļ—āļĩāđˆāļžāļĢāđ‰āļ­āļĄāļ—āļģāļēāļ‡āļēāļ™āđāļĨāļ°
āļ­āļīāļ™āļžāļļāļ•/āđ€āļ­āļēāļ•āđŒāļžāļļāļ•āļ­āļ·āđˆāļ™ āđ†
āļŦāļąāļ§
āļ—āđ‰āļē
āļĒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 12
3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ
āļ›āļąāļāļŦāļē : āļŦāļēāļāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ”āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđ€āļ§āļĨāļēāļ™āļēāļ™ āđ† āļˆāļ°
āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™āļ„āļīāļ§āļ•āđ‰āļ­āļ‡āđ€āļŠāļĩāļĒāđ€āļ§āļĨāļēāļĢāļ­āļ™āļēāļ™
āđ€āļāļīāļ™āđ„āļ›
āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚ : āļāļģāļēāļŦāļ™āļ”āđ€āļ§āļĨāļēāđƒāļ™āļāļēāļĢāļ­āļĒāļđāđˆāđƒāļ™āļŠāļ–āļēāļ™āļ°āļĢāļąāļ™
āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļļāļāđ‚āļ›āļĢāđ€āļ‹āļŠ āđ€āļĢāļĩāļĒāļāļ§āđˆāļēāđ€āļ§āļĨāļēāļ„āļ§āļąāļ™āļ•āļąāļĄ
(Quantum time) āļ–āđ‰āļēāđ€āļāļīāļ™āļˆāļ°āđ„āļ›āļ•āđˆāļ­āļ„āļīāļ§āđƒāļŦāļĄāđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 13
āļāļēāļĢāļšāļĨāđ‡āļ­āļāđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļĄāļ·āđˆāļ­āļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļŠāđ‰ I/O āļŦāļĢāļ·āļ­āļĄāļĩ
āļāļēāļĢāļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ
āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāđƒāļŠāđ‰āđ€āļ§āļĨāļēāđ€āļāļīāļ™āđ€āļ§āļĨāļēāļ„āļ§āļąāļ™āļ•āļąāļĄāļˆāļ°āļĒāđ‰āļēāļĒāđ„āļ›
āļ•āđˆāļ­āļ„āļīāļ§āđƒāļŦāļĄāđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 14
3.1) āļ”āļĩāđ„āļ§āļ‹āđŒāļ„āļīāļ§ (Device
Queue)
3.1) āļ”āļĩāđ„āļ§āļ‹āđŒāļ„āļīāļ§ (Device
Queue)
āļ„āļīāļ§āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĢāļ­āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļˆāļēāļāļāļēāļĢ
āđƒāļŠāđ‰āļ­āļīāļ™āļžāļļāļ•/āđ€āļ­āļēāļ•āđŒāļžāļļāļ•āļ”āļĩāđ„āļ§āļ‹āđŒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 15
3.2) āļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŠāļ§āļīāļ•āļŠāđŒ
(Context Switch)
3.2) āļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŠāļ§āļīāļ•āļŠāđŒ
(Context Switch)
 āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāļ§āļīāļ•āļŠāđŒāđ„āļ›āļĒāļąāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļ„āļīāļ§āļ•āđˆāļ­āđ„āļ›
āđ€āļĄāļ·āđˆāļ­āļ‹āļĩāļžāļĩāļĒāļđāļ—āļģāļēāļ‡āļēāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™āđ€āļŠāļĢāđ‡āļˆāđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒ
āđāļĨāđ‰āļ§
 āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļŠāļ§āļīāļ•āļŠāđŒāļˆāļ°āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™
 āđ€āļ§āļĨāļēāļ—āļĩāđˆāđƒāļŠāđ‰āļ‚āļķāđ‰āļ™āļāļąāļšāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄ
āļˆāļģāļē, āļˆāļģāļēāļ™āļ§āļ™āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ āđāļĨāļ°āļ„āļģāļēāļŠāļąāđˆāļ‡āļžāļīāđ€āļĻāļĐāđƒāļ™
āļĢāļ°āļšāļš
 āļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŠāļ§āļīāļ•āļŠāđŒāļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āļāļēāļĢāđ€āļžāļīāđˆāļĄ
āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļ™āļŠāļ·āđˆāļ­ Thread
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 16
āļ”āļ‡āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ (Context Switchin
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 17
4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļˆāļ°āļāļĢāļ°āļ—āļģāļēāļœāđˆāļēāļ™ System
Call “ ”āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆ
(Parent Process)
 āļ–āđ‰āļēāđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđƒāļ™āļ‚āļ“āļ°āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠ
“ ”āļˆāļ°āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļ (Children
Process)
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāļ­āļēāļˆāļˆāļ°āđƒāļŠāđ‰āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļˆāļēāļāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļī
āļāļēāļĢāļŦāļĢāļ·āļ­āļœāđˆāļēāļ™āļ—āļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆāļāđ‡āđ„āļ”āđ‰
 āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆāļ­āļēāļˆāļˆāļ°āđāļšāđˆāļ‡āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒ āđ†
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 18
4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ (āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ āļŦāļĢāļ·āļ­āļĢāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļ
āđ€āļŠāļĢāđ‡āļˆāļāđˆāļ­āļ™āđāļĄāđˆāļˆāļķāļ‡āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ)
 āđāļ­āđ‡āļ”āđ€āļ”āļĢāļŠ (āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāļŠāļģāļēāđ€āļ™āļēāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆ āļŦāļĢāļ·āļ­
āđ‚āļŦāļĨāļ”āđāļ­āđ‡āļ”āđ€āļ”āļĢāļŠāđƒāļŦāđ‰āļ•āļąāļ§āđ€āļ­āļ‡)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 19
PID āļŦāļĄāļēāļĒāđ€āļĨāļ‚ Process (Process ID)
PPID āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ‚āļ­āļ‡ Process āļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļœāļđāđ‰
āļŠāļĢāđ‰āļēāļ‡ (Parent PID)
PRI āļ„āđˆāļē Prority
STAT āđāļŠāļ”āļ‡āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡ Process
(Status)
- D āļĢāļ­āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ I/O
(uninterruptible sleep)
- R āļ­āļĒāļđāđˆāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđƒāļ™
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 20
4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ”āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāđƒāļŠāđ‰āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļĄāļēāļāđ€āļāļīāļ™āļ—āļĩāđˆāļāļģāļēāļŦāļ™āļ”
āđ„āļ§āđ‰
 āđ„āļĄāđˆāļĄāļĩāļ„āļ§āļēāļĄāļˆāļģāļēāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāļ™āļąāđ‰
āļ™āļ­āļĩāļāđāļĨāđ‰āļ§
 āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆāļŠāļīāđ‰āļ™āļŠāļļāļ”āđ„āļ›āđāļĨāđ‰āļ§ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļī
āļāļēāļĢāļˆāļ°āđ„āļĄāđˆāļĒāļīāļ™āļĒāļ­āļĄāđƒāļŦāđ‰āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāđ‚āļ›āļĢāđ€āļ‹
āļŠāļĨāļđāļ ( “āļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ”
”āđ€āļ›āđ‡āļ™āļ‚āļąāđ‰āļ™ āđ† (Cascading
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 21
5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™
(Cooperating Process)
5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™
(Cooperating Process)
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļˆāļ°āđ€āļ›āđ‡āļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™āļ–āđ‰āļē
āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™āļĄāļĩāļœāļĨāļāļĢāļ°āļ—āļšāļŦāļĢāļ·āļ­āđ„āļ”āđ‰āļĢāļąāļšāļœāļĨāļ
āļĢāļ°āļ—āļšāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ—āļĩāđˆāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļ­āļĒāļđāđˆāđƒāļ™
āļĢāļ°āļšāļšāļ™āļąāđ‰āļ™
 āļ­āļēāļˆāļāļĨāđˆāļēāļ§āđ„āļ”āđ‰āļ§āđˆāļēāđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™āļˆāļ°āļĄāļĩ
āļāļēāļĢāđāļŠāļĢāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāļāļąāļšāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđƒāļ™āļĢāļ°āļšāļš
āđ‚āļ”āļĒāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļˆāļ°āļ•āđ‰āļ­āļ‡āđāļŠāļĢāđŒāļŦāļ™āđˆāļ§āļĒ
āļ„āļ§āļēāļĄāļˆāļģāļēāđ„āļ§āđ‰āđƒāļŠāđ‰āļ‡āļēāļ™ āđ€āļ™āļ·āđ‰āļ­āļ—āļĩāđˆāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 22
5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™
(Cooperating Process)
5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™
(Cooperating Process)
 āđ€āļŦāļ•āļļāļ—āļĩāđˆāļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ›āļĢāļ°āļŠāļēāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāđāļŠāļĢāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āđˆāļēāļ§āļŠāļēāļĢ : āļœāļđāđ‰āđƒāļŠāđ‰āļŦāļĨāļēāļĒāļ„āļ™
āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āđƒāļ™āđ€āļ§āļĨāļēāļ™āļąāđ‰āļ™
 āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āđƒāļ™āļāļēāļĢāļ„āļģāļēāļ™āļ§āļ“ : āđ‚āļ”āļĒ
āļāļēāļĢāđāļšāđˆāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ­āļ­āļāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒ āđ† āđāļĨāđ‰āļ§
āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļ‚āļ™āļēāļ™āļāļąāļ™āđ„āļ›
 āļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļ : āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļŦāļĨāļēāļĒ
āļ­āļĒāđˆāļēāļ‡āđƒāļ™āđ€āļ§āļĨāļēāđ€āļ”āļĩāļĒāļ§āļāļąāļ™
 āļāļĨāđ„āļāļ—āļĩāđˆāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļēāļĄāļēāļĢāļ–āļ›āļĢāļ°āļŠāļēāļ™
āļāļąāļ™āđ„āļ”āđ‰ āļ„āļ·āļ­ āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 23
6. āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
(IPC)
6. āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
(IPC)
 āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™
 āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­
 āļāļēāļĢāļˆāļąāļ”āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ
 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 24
6.1) āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™6.1) āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™
 IPC āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļāļĨāđ„āļāđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļēāļĄāļēāļĢāļ–
āļ•āļīāļ”āļ•āđˆāļ­āļ‹āļķāđˆāļ‡āļāļąāļ™āđāļĨāļ°āļāļąāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđ„āļ”āđ‰āđāļāđˆ
āļĢāļ°āļšāļšāđāļĄāļŠāđ€āļŠāļˆ (Message system)
 āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ‚āļ­āļ‡āļĢāļ°āļšāļšāđāļĄāļŠāđ€āļŠāļˆāļ—āļĩāđˆ IPC āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļĄāļĩ
āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 2 āļ›āļĢāļ°āļāļēāļĢāļ„āļ·āļ­ āļāļēāļĢāļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (Send
message) āđāļĨāļ°āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨ (Receive message)
 āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ”āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļˆāļ°
āļŠāđˆāļ‡āļ„āļģāļēāļĢāđ‰āļ­āļ‡āļ‚āļ­āđ„āļ›āļĒāļąāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ–āļđāļ
āļĢāđ‰āļ­āļ‡āļ‚āļ­āļˆāļ°āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļąāđ‰āļ™āđ„āļ›āđƒāļŦāđ‰
 āļ‚āļ™āļēāļ”āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļēāļˆāļˆāļ°āļĄāļĩāļ‚āļ™āļēāļ”āļ„āļ‡āļ—āļĩāđˆ āļŦāļĢāļ·āļ­āļ‚āļ™āļēāļ”
āđ„āļĄāđˆāļ„āļ‡āļ—āļĩāđˆāļāđ‡āđ„āļ”āđ‰
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 25
āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ—āļēāļ‡āļĨāļ­āļˆāļīāļāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ—āļēāļ‡āļĨāļ­āļˆāļīāļ
 āļˆāļ°āļŠāļĢāđ‰āļēāļ‡āļĨāļīāļ‡āļ„āđŒāļ­āļĒāđˆāļēāļ‡āđ„āļĢ
 āļĨāļīāļ‡āļ„āđŒāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ™āļąāđ‰āļ™āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļšāđ‚āļ›āļĢāđ€āļ‹āļŠāļĄāļēāļāļ
āļ§āđˆāļē 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļŦāļĢāļ·āļ­āđ„āļĄāđˆ
 āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļˆāļ°āļĄāļĩāļāļĩāđˆāļĨāļīāļ‡āļ„āđŒ
 āļ„āļ§āļēāļĄāļˆāļļāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāđ€āļ›āđ‡āļ™āđ€āļ—āđˆāļēāđ„āļĢ
 āļĨāļīāļ‡āļ„āđŒāļ™āļąāđ‰āļ™āļĄāļĩāļšāļąāļžāđ€āļŸāļ­āļĢāđŒāļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļēāļĄāļĩāļ‚āļ™āļēāļ”āļšāļąāļž
āđ€āļŸāļ­āļĢāđŒāđ€āļ›āđ‡āļ™āđ€āļ—āđˆāļēāđ„āļĢ
 āļĨāļīāļ‡āļ„āđŒāđ€āļ›āđ‡āļ™āđāļšāļšāļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§(undirectional)
āļŦāļĢāļ·āļ­āļŠāļ­āļ‡āļ—āļīāļĻāļ—āļēāļ‡(bidirectional)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 26
āļĨāļīāļ‡āļ„āđŒāđāļšāļšāļĨāļ­āļˆāļīāļāđāļĨāļ°āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āđƒāļ™
āļāļēāļĢāļĢāļąāļš-āļŠāđˆāļ‡āđāļĄāđ€āļŠāļˆ
āļĨāļīāļ‡āļ„āđŒāđāļšāļšāļĨāļ­āļˆāļīāļāđāļĨāļ°āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āđƒāļ™
āļāļēāļĢāļĢāļąāļš-āļŠāđˆāļ‡āđāļĄāđ€āļŠāļˆ
 āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āđ€āļ›āđ‡āļ™āđāļšāļšāļ—āļēāļ‡āļ•āļĢāļ‡āļŦāļĢāļ·āļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ
 āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āđ€āļ›āđ‡āļ™āđāļšāļšāļŠāļĄāļĄāļēāļ•āļĢ āļŦāļĢāļ·āļ­āđ„āļĄāđˆ
āļŠāļĄāļĄāļēāļ•āļĢ
 āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āđ€āļ›āđ‡āļ™āđāļšāļšāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļŦāļĢāļ·āļ­āđƒāļŠāđ‰
āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđ€āļ‰āļžāļēāļ°āđāļšāļš
 āļāļēāļĢāļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āđāļšāļšāļŠāļģāļēāđ€āļ™āļē
āļŦāļĢāļ·āļ­āļ­āđ‰āļēāļ‡āļ­āļīāļ‡
 āđāļĄāļŠāđ€āļŠāļˆāļĄāļĩāļ‚āļ™āļēāļ”āļ„āļ‡āļ—āļĩāđˆ āļŦāļĢāļ·āļ­āđ„āļĄāđˆāļ„āļ‡āļ—āļĩāđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 27
6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ•āļĢāļ‡ (Direct
Communication) āđāļ•āđˆāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ
āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļāļąāļ™āļˆāļ°āļ•āđ‰āļ­āļ‡āļāļģāļēāļŦāļ™āļ”āļŠāļ·āđˆāļ­
āđ€āļ‰āļžāļēāļ°āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļ—āļąāđ‰āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ
āļ•āđ‰āļ­āļ‡āļāļēāļĢāļĢāļąāļš āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļŠāđˆāļ‡
Send (B,message) āļˆāļ°āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āđāļĄāļŠ
āđ€āļŠāļˆāđ„āļ›āļĒāļąāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ B
Receive (A,message) āļˆāļ°āđ€āļ›āđ‡āļ™āļāļēāļĢāļĢāļąāļš
āđāļĄāļŠāđ€āļŠāļˆāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠ A
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 28
āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ
āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ•āļĢāļ‡
āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ
āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ•āļĢāļ‡
 āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĨāļīāļ‡āļ„āđŒāļˆāļ°āđ€āļ›āđ‡āļ™āđāļšāļšāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ„āļđāđˆāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­
āđ‚āļ›āļĢāđ€āļ‹āļŠāļˆāļ°āļ—āļĢāļēāļšāļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļ—āļĩāđˆāļˆāļ°āļ•āļīāļ”āļ•āđˆāļ­āļ”āđ‰āļ§āļĒ
 āļĨāļīāļ‡āļ„āđŒāļŦāļ™āļķāđˆāļ‡ āđ† āļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāđ€āļ‰āļžāļēāļ°
āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™
 āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļ•āđˆāļĨāļ°āļ„āļđāđˆāļ™āļąāđ‰āļ™āļˆāļ°āļĄāļĩāđ€āļžāļĩāļĒāļ‡
āļĨāļīāļ‡āļ„āđŒāđ€āļ”āļĩāļĒāļ§āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™
 āļĨāļīāļ‡āļ„āđŒāļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āļ—āļīāļĻāļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§ āđāļĨāļ°āļŠāļ­āļ‡
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 29
6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ (Indirect
Communication) āđāļ•āđˆāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ
āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļˆāļ°āļ•āđ‰āļ­āļ‡āļ•āļīāļ”āļ•āđˆāļ­āļāļąāļ™āļœāđˆāļēāļ™āđ€āļĄāļĨ
āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ(Mailbox) āļŦāļĢāļ·āļ­āļ­āļēāļˆāđ€āļĢāļĩāļĒāļāļ§āđˆāļē
āđ€āļ›āđ‡āļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļœāđˆāļēāļ™āļžāļ­āļĢāđŒāļ• (Port) āđāļ•āđˆāļĨāļ°
āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļˆāļ°āļĄāļĩāļŦāļĄāļēāļĒāđ€āļĨāļ‚āđ„āļĄāđˆāļ‹āļģāđ‰āļēāļāļąāļšāđ€āļĄāļĨ
āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļ­āļ·āđˆāļ™
Send(B,message) āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 30
āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ
āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ
āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ
āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ
 āļˆāļ°āļĄāļĩāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĨāļīāļ‡āļ„āđŒāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩ
āļāļēāļĢāđāļŠāļĢāđŒāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™
 āļĨāļīāļ‡āļ„āđŒāļŦāļ™āļķāđˆāļ‡āđ† āļ­āļēāļˆāļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ
āļĄāļēāļāļāļ§āđˆāļēāļŠāļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđ„āļ”āđ‰
 āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļ•āđˆāļĨāļ°āļ„āļđāđˆāļ™āļąāđ‰āļ™āļ­āļēāļˆāļˆāļ°āļĄāļĩ
āļŦāļĨāļēāļĒāļĨāļīāļ‡āļ„āđŒāļ•āđˆāļēāļ‡āļāļąāļ™āđ„āļ”āđ‰ āđāļ•āđˆāļĨāļ°āļĨāļīāļ‡āļ„āđŒāļˆāļ°āļĄāļĩ
āđ€āļžāļĩāļĒāļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđ€āļ”āļĩāļĒāļ§
 āļāļēāļĢāļĨāļīāļ‡āļ„āđŒāļ­āļēāļˆāļˆāļ°āđ€āļ›āđ‡āļ™āļ—āļīāļĻāļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§ āļŦāļĢāļ·āļ­
āļŠāļ­āļ‡āļ—āļīāļĻāļ—āļēāļ‡āļāđ‡āđ„āļ”āđ‰
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 31
āļāļĨāđ„āļāļ—āļĩāđˆāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļ­āļĄāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļˆāļąāļ”āļāļēāļĢāļāļąāļšāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
āļāļĨāđ„āļāļ—āļĩāđˆāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļ­āļĄāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļˆāļąāļ”āļāļēāļĢāļāļąāļšāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
 āļŠāļĢāđ‰āļēāļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđƒāļŦāļĄāđˆ
 āļŠāđˆāļ‡āđāļĨāļ°āļĢāļąāļšāđāļĄāļŠāđ€āļŠāļˆāļœāđˆāļēāļ™āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
 āļ—āļģāļēāļĨāļēāļĒāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 32
āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
 āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđāļšāļšāļ„āļīāļ§
āļ‚āđ‰āļ­āļĄāļđāļĨ
āđ€āļ‚āđ‰āļēāđ€āļĄāļĨ
āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
āļ‚āđ‰āļ­āļĄāļđāļĨ
āļ­āļ­āļ
āđ€āļĄāļĨāļĨāđŒāļšāđ‡
āļ­āļāļ‹āđŒFIFO (First In First
Out)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 33
āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
 āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđāļšāļšāđ„āļ›āļ›āđŒ
āļ‚āđ‰āļ­āļĄāļđāļĨ
āđ€āļ‚āđ‰āļēāđ€āļĄāļĨ
āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
āļ‚āđ‰āļ­āļĄāļđāļĨ
āļ­āļ­āļ
āđ€āļĄāļĨāļĨāđŒāļšāđ‡
āļ­āļāļ‹āđŒFIFO (First In First
Out)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 34
āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
 āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđāļšāļšāļŠāđāļ•āđ‡āļ
āļ‚āđ‰āļ­āļĄāļđāļĨ
āđ€āļ‚āđ‰āļēāđ€āļĄāļĨ
āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
āļ‚āđ‰āļ­āļĄāļđāļĨ
āļ­āļ­āļ
āđ€āļĄāļĨāļĨāđŒāļšāđ‡
āļ­āļāļ‹āđŒ
FILO (First In Last
Out)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 35
6.3 āļāļēāļĢāļˆāļąāļ”āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ (Buffer)6.3 āļāļēāļĢāļˆāļąāļ”āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ (Buffer)
āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ āļ„āļ·āļ­āļ„āļīāļ§āļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆāļ—āļĩāđˆāļœāļđāļāļ•āļīāļ”āļāļąāļš
āļĨāļīāļ‡āļ„āđŒ āđ‚āļ”āļĒāļžāļ·āđ‰āļ™āļāļēāļ™āļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄāļˆāļļ 3 āļĨāļąāļāļĐāļ“āļ°
 āļ„āļ§āļēāļĄāļˆāļļāļĻāļđāļ™āļĒāđŒ (Zero Capacity) : āđƒāļ™
āļĨāļīāļ‡āļ„āđŒāļˆāļ°āđ„āļĄāđˆāļĄāļĩāđāļĄāļŠāđ€āļŠāļˆāļĢāļ­ āļ­āļĒāļđāđˆāđ€āļĨāļĒ
 āļ„āļ§āļēāļĄāļˆāļļāđāļšāļšāļĄāļĩāļ‚āļ­āļšāđ€āļ‚āļ• (Bounded
capacity) : āļˆāļģāļēāļ™āļ§āļ™āļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļ™āļĨāļīāļ‡āļ„āđŒ
āļˆāļ°āļĄāļĩāđ„āļ”āđ‰āđ„āļĄāđˆāđ€āļāļīāļ™āļˆāļģāļēāļ™āļ§āļ™āļ—āļĩāđˆāļāļģāļēāļŦāļ™āļ”
 āļ„āļ§āļēāļĄāļˆāļļāđ„āļĄāđˆāļĄāļĩāļ‚āļ­āļšāđ€āļ‚āļ• (Unbounded
capacity) : āļˆāļģāļēāļ™āļ§āļ™āļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļ™āļĨāļīāļ‡āļ„āđŒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 36
āļāļēāļĢ Asynchronous āļĢāļ°āļŦāļ§āđˆāļēāļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ P āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠ Q
āļāļēāļĢ Asynchronous āļĢāļ°āļŦāļ§āđˆāļēāļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ P āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠ Q
Process Pâ€Ķ
send(Q,message);
receive(Q,message);
Process Qâ€Ķ
receive(P,message);
send(P,”Acknowledgment”)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 37
6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­
āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­
āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ”āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļ–āđ‰āļēāļœāļđāđ‰āļĢāļąāļšāļŦāļĢāļ·āļ­āļœāļđāđ‰āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāļŠāļīāđ‰āļ™āļŠāļļāļ”āļāđˆāļ­āļ™
āđāļĄāļŠāđ€āļŠāļˆāļˆāļ°āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ āļ—āļģāļēāđƒāļŦāđ‰āđāļĄāļŠāđ€āļŠāļˆāļ–āļđāļ
āļāļģāļēāļˆāļąāļ”āļ—āļģāļēāđƒāļŦāđ‰āļœāļđāđ‰āļĢāļąāļšāđ„āļĄāđˆāđ„āļ”āđ‰āļĢāļąāļšāđāļĄāļŠāđ€āļŠāļˆ āļŦāļĢāļ·āļ­
āļœāļđāđ‰āļŠāđˆāļ‡āđ„āļĄāđˆāđ„āļ”āđ‰āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 38
6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­
āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­
āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļēāļĢāļŠāļđāļāļŦāļēāļĒāļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆ
āđāļĄāļŠāđ€āļŠāļˆāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠ P āļ—āļĩāđˆāļŠāđˆāļ‡āđ„āļ›āļĒāļąāļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ Q āļ­āļēāļˆāļˆāļ°āļŠāļđāļāļŦāļēāļĒāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ—āļēāļ‡āļ‚āļ­āļ‡
āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļāđ‡āđ„āļ”āđ‰ āļ‹āļķāđˆāļ‡āļ­āļēāļˆāļˆāļ°āđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”
āļ”āđ‰āļēāļ™āļŪāļēāļĢāđŒāļ”āđāļ§āļĢāđŒāļŦāļĢāļ·āļ­āļŠāļēāļĒāļŠāļ·āđˆāļ­āļŠāļēāļĢ āļĄāļĩ 3 āļ§āļīāļ˜āļĩāļžāļ·āđ‰āļ™
āļāļēāļ™āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ
 OS āļĄāļĩāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢ
āļŠāļđāļāļŦāļēāļĒāļ™āļĩāđ‰āđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļŦāļĄāđˆ
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāļĄāļĩāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļš
āđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāļŠāļđāļāļŦāļēāļĒāđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļŦāļĄāđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 39
7. āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠ
(Process Synchronization)
7. āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠ
(Process Synchronization)
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļ­āļīāļŠāļĢāļ°āļāļąāļ™āđ€āļĢāļĩāļĒāļāļ§āđˆāļē
Asynchronous
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļ™āđ€āļĢāļĩāļĒāļāļ§āđˆāļē
Synchronous
 āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠāļŦāļĢāļ·āļ­āļāļēāļĢāđ€āļ‚āđ‰āļē
āļˆāļąāļ‡āļŦāļ§āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļēāļĢ
āļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄ
āđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļ™ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 40
A B
C
D
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 41
X-->X+10
10
20
10
X-->X-10
A
B
X=10
X=20
X=20
X=10
āđ‚āļ›āļĢāđ€āļ‹āļŠ A āļ—āļģāļēāļ‡āļēāļ™āļāđˆāļ­āļ™
āđ‚āļ›āļĢāđ€āļ‹āļŠ B
X-->X-10
10
0
10
X-->X+10
B
A
X=10
X=0
X=0
X=10
āđ‚āļ›āļĢāđ€āļ‹āļŠ B āļ—āļģāļēāļ‡āļēāļ™āļāđˆāļ­āļ™
āđ‚āļ›āļĢāđ€āļ‹āļŠ A
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 42
X-->X+10
20 āļŦāļĢāļ·āļ­ 0
10
X-->X-10A B
X=10
X=0
X=20
X=10
āđ‚āļ›āļĢāđ€āļ‹āļŠ A āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠ B āļ—āļģāļēāļ‡āļēāļ™āļžāļĢāđ‰āļ­āļĄāļāļąāļ™
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 43
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 Race Condition : āļŠāļ āļēāļ§āļ°āļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āđ‰āļ­āļœāļīāļ”
āļžāļĨāļēāļ”āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļģāļēāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļ™āļ‹āļķāđˆāļ‡āļĄāļĩ
āļāļēāļĢāđƒāļŠāļąāļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļĢāđˆāļ§āļĄāļāļąāļ™
 Mutual Exclusion : āđ€āļ›āđ‡āļ™āļāļēāļĢāļāļĩāļ”āļāļąāļ™āđ„āļĄāđˆ
āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđ€āļ‚āđ‰āļēāļĄāļēāđƒāļŠāđ‰ āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ
āļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ„āļĢāļ­āļšāļ„āļĢāļ­āļ‡āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļ™āļąāđ‰āļ™āļ­āļĒāļđāđˆ
āļšāļĢāļīāđ€āļ§āļ“āļŦāļĢāļ·āļ­āļŠāđˆāļ§āļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāđ‚āļ›āļĢāđ€āļ‹āļŠ
āļ„āļĢāļ­āļšāļ„āļĢāļ­āļ‡āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļ™āļąāđ‰āļ™āļ­āļĒāļđāđˆ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Critical
Region āļŦāļĢāļ·āļ­ Critical Section

āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 44
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡ Mutual Exclusion
 āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆāđƒāļ™
Critical Region āļžāļĢāđ‰āļ­āļĄāļāļąāļ™
 āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāļŠāļĄāļĄāļļāļ•āļīāļāļēāļ™āđāļĨāļ°āļ‚āđ‰āļ­āļˆāļģāļēāļāļąāļ”āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš
āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§ āđāļĨāļ°āļˆāļģāļēāļ™āļ§āļ™āļ‹āļĩāļžāļĩāļĒāļđāļĄāļēāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡
 āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ” āđ† āļ āļēāļĒāļ™āļ­āļ Critical
Region āļ—āļĩāđˆāļšāļĨāđ‡āļ­āļāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹
āļŠāļ­āļ·āđˆāļ™
 āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ”āļ—āļĩāđˆāļĢāļ­āļāļēāļĢāđ€āļ‚āđ‰āļē Critical
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 45
Mutual Exclusion āđāļĨāļ° Critical Region
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 46
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 Mutual Exclusion with busy
waiting : āļŠāļ āļēāļ§āļ°āļ—āļĩāđˆāđ‚āļ›āļĢāđ€āļ‹āļŠāļĢāļ­ āļ­āļĒāļđāđˆāļ™āļ­āļ
CR āđāļ•āđˆāļĒāļąāļ‡āļĄāļĩāļāļēāļĢāļ„āļĢāļ­āļšāļ„āļĢāļ­āļ‡āđ€āļ§āļĨāļēāļ‹āļĩāļžāļĩāļĒāļđāļ­āļĒāļđāđˆ
āļ—āļģāļēāđƒāļŦāđ‰āđ€āļŠāļĩāļĒāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāđ‚āļ”āļĒāđ„āļĄāđˆāđ„āļ”āđ‰āļ‡āļēāļ™āļ­āļ°āđ„āļĢāđ€āļĨāļĒ
 āļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļē busy waiting āļ—āļģāļēāđ„āļ”āđ‰āđ‚āļ”āļĒ
“ ”āļāļēāļĢ āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ āļ‹āļķāđˆāļ‡āļĄāļĩ 2 āļ›āļĢāļ°āđ€āļ āļ—āļ„āļ·āļ­
 Clock interrupt : āļšāļ­āļāļ‹āļĩāļžāļĩāļĒāļđāļ§āđˆāļēāļĢāļąāļ™
āļ„āļĢāļąāļšāđ€āļ§āļĨāļēāļ„āļ§āļąāļ™āļ•āļąāļĄāđāļĨāđ‰āļ§
 I/O interrupt : āļšāļ­āļāļ‹āļĩāļžāļĩāļĒāļđāļ§āđˆāļēāđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ
āļ–āļđāļāļšāļĨāđ‡āļ­āļāļ™āļąāđ‰āļ™āļ—āļģāļēāļ‡āļēāļ™āļāļąāļš I/O āđ€āļŠāļĢāđ‡āļˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 47
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 āļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļē busy waiting āļĄāļĩ 5 āļ§āļīāļ˜āļĩ
āļ„āļ·āļ­
 Disable Interrupt
 Lock Variable
 Strict Alternation
 Peterson’s Solution
 TSL Instruction
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 48
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 Disable Interrupt
 āđ€āļ›āđ‡āļ™āļāļēāļĢāļĒāļāđ€āļĨāļīāļāļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ
 āļ‹āļĩāļžāļĩāļĒāļđāļ—āļģāļēāļ‡āļēāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āđ‚āļ”āļĒāđ„āļĄāđˆāļŠāļ™āđƒāļˆ
āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ CR āđ„āļ”āđ‰āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļˆāļ™āđ€āļŠāļĢāđ‡āļˆ
āđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒ āđ„āļĄāđˆāđ€āļāļīāļ” Race Condition
 āđ€āļĄāļ·āđˆāļ­āļ­āļ­āļāļˆāļēāļ CR āđ„āļ›āđāļĨāđ‰āļ§ āļ‹āļĩāļžāļĩāļĒāļđāļˆāļķāļ‡āļŠāļ™āđƒāļˆāļ­āļīāļ™
āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ
 āđƒāļŠāđˆāļ„āļģāļēāļŠāļąāđˆāļ‡ Disable Interrupt āđ„āļ§āđ‰āļ•āļ­āļ™āļ•āđ‰āļ™
āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļāđˆāļ­āļ™āđ€āļ‚āđ‰āļē CR
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 49
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩ Disable Interrupt
 āļ–āđ‰āļēāļĨāļ·āļĄāđƒāļŠāđˆ Able Interrupt āļˆāļ°āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢ
āđ€āļ‹āļŠāļ™āļąāđ‰āļ™āļĢāļąāļ™āļĢāļ§āļ”āđ€āļ”āļĩāļĒāļ§āļˆāļš
 āđ„āļĄāđˆāļ™āļīāļĒāļĄāđƒāļ™ User Mode āđāļ•āđˆāļ™āļīāļĒāļĄāđƒāļ™
Kernel Mode
 āļ„āļģāļēāļŠāļąāđˆāļ‡ Disable Interrupt āļĄāļĩāļœāļĨāđ€āļ‰āļžāļēāļ°
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 50
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 Lock Variable
 āđƒāļŠāđ‰āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāđ€āļāļīāļ”
Race Condition
 āļāļģāļēāļŦāļ™āļ”āļ•āļąāļ§āđāļ›āļĢāđ€āļžāļ·āđˆāļ­āđ€āļāđ‡āļšāļŠāļ āļēāļ§āļ°āļ§āđˆāļēāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹
āļŠāļ­āļĒāļđāđˆāđƒāļ™ CR āļŦāļĢāļ·āļ­āđ„āļĄāđˆ āđ‚āļ”āļĒ 0 āđāļŠāļ”āļ‡āļ§āđˆāļēāđ„āļĄāđˆāļĄāļĩ
āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆ āļŠāđˆāļ§āļ™ 1 āđāļŠāļ”āļ‡āļ§āđˆāļēāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆ
 āļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāđ€āļāđ‡āļšāļŠāļ āļēāļ§āļ°āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāđāļšāļš
āđ‚āļāļĨāļšāļ­āļĨ āļ—āļĩāđˆāļ—āļļāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļ
āđƒāļŠāđ‰āđ„āļ”āđ‰ āļ—āļģāļēāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļ āļēāļ§āļ°
āļāđˆāļ­āļ™āđ€āļ‚āđ‰āļē CR āđ„āļ”āđ‰
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 51
Lock Variable
IF Lock = 0 Then
Set Lock = 1
āđ€āļĢāļīāđˆāļĄāđ€āļ‚āđ‰āļē Critical Region
Else
Wait until Lock = 0
Critical Region
Set Lock = 0
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 52
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 Strict Alternation
 āđƒāļŠāđ‰āļāļēāļĢāļŠāļĨāļąāļšāļāļēāļĢāđ€āļ‚āđ‰āļē CR āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ 2
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 āļāļģāļēāļŦāļ™āļ”āļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļŠāļĨāļąāļšāļāļąāļ™
āđ€āļ‚āđ‰āļē CR āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āđ€āļĢāļ·āđˆāļ­āļĒāđ„āļ›āļˆāļ™āļāļ§āđˆāļēāļ‡āļēāļ™
āļˆāļ°āđ€āļŠāļĢāđ‡āļˆ
 āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒ :
 āđƒāļŠāđ‰āđ„āļ”āđ‰āđ€āļ‰āļžāļēāļ° āđ‚āļ›āļĢāđ€āļ‹āļŠ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™
 āđ€āļāļīāļ” busy waiting āļ‹āļķāđˆāļ‡āļĒāļąāļ‡āļ„āļ‡āđƒāļŠāđ‰āļ‹āļĩāļžāļĩāļĒāļđāļ­āļĒāļđāđˆ
āđāļ•āđˆāđ„āļĄāđˆāđ€āļāļīāļ”āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 53
Strict Alternation
While (TRUE) {
While (turn !=0) /*loop*/
Critical_Region();
turn = 1;
noncritical_region();
}
While (TRUE) {
While (turn !=1) /*loo
Critical_Region();
turn = 0;
noncritical_region();
}
Process A Process B
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 54
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 Peterson’s Solution
 āļĄāļĩāļāļēāļĢāđāļŠāļĢāđŒāļ•āļąāļ§āđāļ›āļĢ (turn) āđāļĨāļ°āļĄāļĩ 2 āđ‚āļ›āļĢāļ‹āļĩāđ€āļ”āļ­āļĢāđŒ
(enter_region āđāļĨāļ° leave_region) āđ‚āļ”āļĒ
āđƒāļŠāđ‰āļŦāļĄāļēāļĒāđ€āļĨāļ‚āđ‚āļ›āļĢāđ€āļ‹āļŠāļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡āđ€āļ›āđ‡āļ™
āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ
 āļāļēāļĢāđ€āļĢāļĩāļĒāļ enter_region āļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļĢāļ­
āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļ›āļĨāļ­āļ”āļ āļąāļĒāđƒāļ™āļāļēāļĢāđ€āļ‚āđ‰āļē āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰āļ•āļąāļ§āđāļ›āļĢ
āļ—āļĩāđˆāđāļŠāļĢāđŒāļ™āļĩāđ‰āđ€āļŠāļĢāđ‡āļˆāđāļĨāđ‰āļ§ āļˆāļ°āđ€āļĢāļĩāļĒāļ leave_region
āđ€āļžāļ·āđˆāļ­āđāļˆāđ‰āļ‡āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ—āļĢāļēāļšāļ§āđˆāļēāļ—āļģāļēāļ‡āļēāļ™āđ€āļŠāļĢāđ‡āļˆ
āđāļĨāđ‰āļ§ āđāļĨāļ°āļĒāļ­āļĄāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđ€āļ‚āđ‰āļēāđ„āļ”āđ‰
 āđ€āļŠāđˆāļ™ āļ–āđ‰āļēāđ‚āļ›āļĢāđ€āļ‹āļŠ 0 āđ€āļ‚āđ‰āļē CR āļˆāļ°āļāļģāļēāļŦāļ™āļ”āļ„āđˆāļē
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 55
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 Peterson’s Solution
 āļ–āđ‰āļēāđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āđ€āļĢāļĩāļĒāļ enter_region
āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļˆāļ°āđ€āļāđ‡āļšāļ„āđˆāļēāļĨāļ‡āđƒāļ™
turn āđ€āļĄāļ·āđˆāļ­āđ€āļāđ‡āļšāļ„āđˆāļēāđ€āļŠāļĢāđ‡āļˆāļ„āđˆāļēāđ€āļāđˆāļēāļˆāļ°āļŦāļēāļĒāđ„āļ›
 āđ€āļŠāđˆāļ™ āļ–āđ‰āļēāđ‚āļ›āļĢāđ€āļ‹āļŠ 1 āđ€āļāđ‡āļšāļ„āđˆāļēāļŦāļĨāļąāļ‡āļŠāļļāļ” āļ„āđˆāļē
turn=1 āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļĄāļēāļ–āļķāļ‡
while āđ‚āļ›āļĢāđ€āļ‹āļŠ 0 āļˆāļ°āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ 0 āļ„āļĢāļąāđ‰āļ‡
āđāļĨāļ°āđ€āļ‚āđ‰āļē CR āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāđ‚āļ›āļĢāđ€āļ‹āļŠ 1 āļĒāļąāļ‡āđ„āļĄāđˆ
āđ€āļ‚āđ‰āļē CR āļˆāļ°āļĢāļ­āļˆāļ™āļāļ§āđˆāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ 0 āļ­āļ­āļ
āļˆāļēāļ CR
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 56
Peterson’s Solution
Int tern;
Int interested[N]; /*āļāļģāļēāļŦāļ™āļ”āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ—āļļāļ
āļ„āđˆāļēāđ€āļ›āđ‡āļ™ 0 (False) */
Void enter_region(int process); /*
process āđ€āļ›āđ‡āļ™ 0 āļŦāļĢāļ·āļ­ 1 */
{
int other; /* āļˆāļģāļēāļ™āļ§āļ™
process āļ­āļ·āđˆāļ™ */
other = 1 – other /* āļ„āđˆāļēāļ•āļĢāļ‡
āļ‚āđ‰āļēāļĄāļ‚āļ­āļ‡ process */
interested[process] = True;
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 57
Peterson’s Solution (āļ•āđˆāļ­)
Void leave_region(int process);
{
interested[process] = False;
}
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 58
Peterson’s Solution
(Version 2)enter_region(int i)
{ while(true)
{
flag[i] =true; /*process i use CR
turn = j;
while(flag[j] && turn==j)
}
}
leave_region(int i)
{
flag[i] = false;
/* process i move o
from CR */
}
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 59
Peterson’s Solution (Version
3)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 60
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 TSL Instruction (Test Set Lock
Instruction)
 āļŠāđˆāļ§āļĒāđāļāđ‰āļ›āļąāļāļŦāļē Lock Variable āđ‚āļ”āļĒāļ—āļģāļē
Test Set Lock āđƒāļ™ āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āđ€āļ”āļĩāļĒāļ§āļāļąāļ™
 āļ­āđˆāļēāļ™āļ„āđˆāļēāļˆāļēāļāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļĄāļēāđ€āļāđ‡āļšāđƒāļ™āļĢāļĩāļˆāļīāļŠ
āđ€āļ•āļ­āļĢāđŒ āđāļĨāđ‰āļ§ Set āļ„āđˆāļēāđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāđ€āļ›āđ‡āļ™ 1
 āļāļēāļĢāļ­āđˆāļēāļ™āđāļĨāļ°āļāļēāļĢāđ€āļāđ‡āļšāļ„āđˆāļēāđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļē
āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļŦāļ™āđˆāļ§āļĒ
āļ„āļ§āļēāļĄāļˆāļģāļēāļ•āļĢāļ‡āļ™āļąāđ‰āļ™āđ„āļ”āđ‰āļˆāļ™āļāļ§āđˆāļēāļ„āļģāļēāļŠāļąāđˆāļ‡āļˆāļ°āđ€āļŠāļĢāđ‡āļˆāļŠāļīāđ‰āļ™
 āļ‹āļĩāļžāļĩāļĒāļđāđƒāļŠāđ‰ TSL āđ€āļžāļ·āđˆāļ­āļĨāđ‡āļ­āļāđ„āļĄāđˆāđƒāļŦāđ‰āļ‹āļĩāļžāļĩāļĒāļđāļ­āļ·āđˆāļ™āđƒāļŠāđ‰
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 61
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting
 TSL Instruction (Test Set Lock
Instruction)
 āļāļēāļĢāđƒāļŠāđ‰āļ„āļģāļēāļŠāļąāđˆāļ‡ TSL āļˆāļ°āļ•āđ‰āļ­āļ‡āđāļŠāļĢāđŒāļ•āļąāļ§āđāļ›āļĢ
Lock āđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļ—āļĩāđˆāđāļŠāļĢāđŒ
 āđ€āļĄāļ·āđˆāļ­āļ•āļąāļ§āđāļ›āļĢ Lock āļĄāļĩāļāļēāļĢāļ„āđˆāļēāđ€āļ›āđ‡āļ™ 0 āđ‚āļ›āļĢāđ€āļ‹
āļŠāļ­āļ·āđˆāļ™āļˆāļ°āđ€āļ‹āđ‡āļ•āđƒāļŦāđ‰āđ€āļ›āđ‡āļ™ 1 āđ€āļžāļ·āđˆāļ­āļˆāļ°āđƒāļŠāđ‰āļ„āļģāļēāļŠāļąāđˆāļ‡
TSL āđāļĨāđ‰āļ§āļ—āļģāļēāļāļēāļĢāļ­āđˆāļēāļ™āļŦāļĢāļ·āļ­āđ€āļ‚āļĩāļĒāļ™āļŦāļ™āđˆāļ§āļĒ
āļ„āļ§āļēāļĄāļˆāļģāļēāļ—āļĩāđˆāđāļŠāļĢāđŒ āđ€āļĄāļ·āđˆāļ­āļ—āļģāļēāļ‡āļēāļ™āđ€āļŠāļĢāđ‡āļˆāļˆāļ°āđ€āļ›āļĨāļĩāđˆāļĒāļ™
āļ„āđˆāļēāđ€āļ›āđ‡āļ™ 0 āđ€āļŦāļĄāļ·āļ­āļ™āđ€āļ”āļīāļĄ āđ‚āļ”āļĒāđƒāļŠāđ‰āļ„āļģāļēāļŠāļąāđˆāļ‡
Move
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 62
Mutual Exclusion with busy
waiting
Mutual Exclusion with busy
waiting TSL Instruction (Test Set Lock
Instruction)
 āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāļ•āđ‰āļ­āļ‡āļāļēāļĢāđ€āļ‚āđ‰āļē CR āļˆāļ°āđ€āļĢāļĩāļĒāļ
enter_region āđāļĨāđ‰āļ§āļāđ‡āļ­āļ›āļ›āļĩāđ‰āļ„āđˆāļēāđ€āļ”āļīāļĄāļ‚āļ­āļ‡ Lock
āđ„āļ›āđ„āļ§āđ‰āļ—āļĩāđˆāļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ āđāļĨāđ‰āļ§āđ€āļ‹āđ‡āļ• Lock=1
 āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļ„āđˆāļēāđ€āļ”āļīāļĄāļāļąāļš 0 āļ–āđ‰āļēāđ„āļĄāđˆāđƒāļŠāđˆ āļ„āđˆāļē
Lock=1 āđāļĨāđ‰āļ§āļāļĨāļąāļšāđ„āļ›āļˆāļļāļ”āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļš
āļ­āļĩāļāļ„āļĢāļąāđ‰āļ‡
 āļˆāļ™āļāļĢāļ°āļ—āļąāđˆāļ‡āđ€āļ›āđ‡āļ™ 0 (āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‚āđ‰āļē CR
āđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒāđāļĨāđ‰āļ§) āļĢāļđāļ—āļĩāļ™āļĒāđˆāļ­āļĒāļˆāļ°āđƒāļŦāđ‰āļ„āđˆāļē Lock=1
āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļāļēāļĢāđ€āļ„āļĨāļĩāļĒāļĢāđŒāļ„āđˆāļēāļ—āļģāļēāđ„āļ”āđ‰āđ‚āļ”āļĒāđƒāļŦāđ‰āļ„āđˆāļē 0 āļāļąāļš
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 63
TSL Instruction (Test Set
Lock Instruction)Enter_region:
TSL RX, LOCK / copy āļ„āđˆāļēāđ€āļ”āļīāļĄāļ‚āļ­āļ‡
LOCK āđ„āļ›āđ€āļāđ‡āļšāđ„āļ§āđ‰āļ—āļĩāđˆ
register āđāļĨāđ‰āļ§āđ€āļ‹āđ‡āļ•āļ„āđˆāļē LOCK āđ€āļ›āđ‡āļ™ 1
CMP RX, #0 / āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļ„āđˆāļēāđ€āļ”āļīāļĄāļāļąāļš
0
JNEEnter_region / āļ–āđ‰āļēāđ„āļĄāđˆāđƒāļŠāđˆ 0 āļˆāļ°āļāļĨāļąāļšāđ„āļ›āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™
āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ­āļĩāļāļ„āļĢāļąāđ‰āļ‡
RET / Return āđ„āļ›āļĒāļąāļ‡āļœāļđāđ‰āđ€āļĢāļĩāļĒāļ
Leave_region:
MOVE LOCK, #0 / āđ€āļāđ‡āļšāļ„āđˆāļē 0 āđƒāļ™ LOCK
RET / Return āđ„āļ›āļĒāļąāļ‡āļœāļđāđ‰āđ€āļĢāļĩāļĒāļ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 64
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 Sleep and Wakeup
 āļāļēāļĢāļ—āļĩāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆāđƒāļ™ CR āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļĒāļąāļ‡
āđ„āļĄāđˆāļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđ€āļ‚āđ‰āļē CR āļāđ‡āļ•āđ‰āļ­āļ‡āļĢāļ­āļˆāļ™āļāļ§āđˆāļē
āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™āļˆāļ°āļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
 āđāļ•āđˆāļšāļēāļ‡āļ„āļĢāļąāđ‰āļ‡āļŠāļīāļ—āļ˜āđŒāļāļēāļĢāđ€āļ‚āđ‰āļē CR āđ„āļĄāđˆāđ€āļ—āđˆāļēāļāļąāļ™
āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāļŠāļđāļ‡āļāļ§āđˆāļēāđ„āļ”āđ‰āđ€āļ‚āđ‰āļēāļāđˆāļ­āļ™
(āļ–āļķāļ‡āđāļĄāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļˆāļ°āļĄāļēāļāđˆāļ­āļ™āļāđ‡āļ•āļēāļĄ)
 āļ™āđˆāļēāļˆāļ°āđƒāļŠāđ‰āļāļēāļĢāļšāļĨāđ‡āļ­āļāđāļ—āļ™āļāļēāļĢāļŦāļĒāļļāļ”āļĢāļ­āđ€āļžāļ·āđˆāļ­
āđ€āļ‚āđ‰āļē CR
 āļāļēāļĢāļšāļĨāđ‡āļ­āļāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ„āļ·āļ­ Sleep and
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 65
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
 Sleep and Wakeup
 Sleep āđ€āļ›āđ‡āļ™ system call āđ€āļžāļ·āđˆāļ­āļšāļĨāđ‡āļ­āļāđƒāļŦāđ‰
āđ‚āļ›āļĢāđ€āļ‹āļŠāļŦāļĒāļļāļ”āļ—āļģāļēāļ‡āļēāļ™ āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļĄāļĩāđ‚āļ›āļĢāđ€āļ‹
āļŠāļ­āļ·āđˆāļ™āļĄāļēāļ›āļĨāļļāļ
 Wakeup āđ€āļ›āđ‡āļ™ system call āļ—āļĩāđˆāļ›āļĨāļļāļāđƒāļŦāđ‰
āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļģāļēāļ‡āļēāļ™āļ•āđˆāļ­
 āļ—āļąāđ‰āļ‡ Sleep āđāļĨāļ° wakeup āļ—āļģāļēāļ‡āļēāļ™āļŠāļĨāļąāļš
āļāļąāļ™ āļˆāļķāļ‡āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāđƒāļŠāđ‰āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒāđāļĨāļ°
āđāļ­āđ‡āļ”āđ€āļ”āļĢāļŠāļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļ—āļĩāđˆāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ
āļāļąāļ™
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 66
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
 Sleep and Wakeup
 āļ›āļąāļāļŦāļē Producer-Consumer āđ€āļ›āđ‡āļ™
āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāļ‡āđˆāļēāļĒāļ—āļĩāđˆāļŠāļļāļ”āļ‚āļ­āļ‡ Sleep and
Wakeup
 āļ—āļąāđ‰āļ‡ 2 āļŠāđˆāļ§āļ™āļˆāļ°āđāļŠāļĢāđŒāļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļĢāđˆāļ§āļĄāļāļąāļ™āđƒāļ™
āļ‚āļ™āļēāļ”āļ—āļĩāđˆāļ„āļ‡āļ—āļĩāđˆ
 āđƒāļ™āļ—āļĩāđˆāļ™āļĩāđ‰āļŠāļĄāļĄāļļāļ•āļīāļĄāļĩ Producer āđāļĨāļ°
Consumer āļ­āļĒāđˆāļēāļ‡āļĨāļ° 1 āļ•āļąāļ§
 Producer āļˆāļ°āļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļœāļĨāļīāļ•āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāđ‰āļ§āļ™āļģāļē
āđ„āļ›āđ€āļāđ‡āļšāđ„āļ§āđ‰āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ āđāļĨāļ°āļˆāļ°āļŦāļĒāļļāļ”āļāļēāļĢāļœāļĨāļīāļ•
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 67
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
 Sleep and Wakeup
 Producer āļˆāļ° Sleep āļ•āļąāļ§āđ€āļ­āļ‡āđ€āļĄāļ·āđˆāļ­
āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđ€āļ•āđ‡āļĄ āđāļĨāļ°āļˆāļ° Wakeup āđƒāļŦāđ‰
Consumer āļ™āļģāļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ›āđƒāļŠāđ‰āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļ‚āđ‰āļ­āļĄāļđāļĨ
āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 1 āļŠāļļāļ”āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ
 Consumer āļˆāļ° Sleep āļ•āļąāļ§āđ€āļ­āļ‡āđ€āļĄāļ·āđˆāļ­
āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļ§āđˆāļēāļ‡ āđāļĨāļ°āļˆāļ° Wakeup āđƒāļŦāđ‰
Producer āļœāļĨāļīāļ•āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ·āđˆāļ­āļ™āļģāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļ
āđ„āļ›āđƒāļŠāđ‰ 1 āļŠāļļāļ” āļŦāļĢāļ·āļ­āļĄāļēāļāļāļ§āđˆāļē
 āđ‚āļ”āļĒāļ—āļĩāđˆ Sleep āļˆāļ°āđ€āļ›āđ‡āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ–āļēāļ™āļ°āļˆāļēāļ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 68
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ
āđ„āļ™āļ‹āđŒ
 Sleep and Wakeup
 āļ‚āļ™āļēāļ”āļ‚āļ­āļ‡āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļāļģāļēāļŦāļ™āļ”āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒ
āļ•āļąāļ§āđāļ›āļĢ count (āļŠāļĄāļĄāļļāļ•āļīāđ€āļāđ‡āļšāđ„āļ”āđ‰ N āļŠāļļāļ”)
 āļāđˆāļ­āļ™āļ—āļĩāđˆ Producer āļˆāļ°āļœāļĨāļīāļ• āļˆāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļš
āļ§āđˆāļē count=N āļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļēāđ€āļ›āđ‡āļ™ N āļāđ‡āļˆāļ°
sleep āļ•āļąāļ§āđ€āļ­āļ‡ āđāļ•āđˆāļ–āđ‰āļēāļĒāļąāļ‡āļ™āđ‰āļ­āļĒāļāļ§āđˆāļē N āļˆāļ°
āļœāļĨāļīāļ•āđ€āļžāļīāđˆāļĄāļĨāļ‡āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ āđāļĨāđ‰āļ§āđ€āļžāļīāđˆāļĄāļ„āđˆāļēāļ•āļąāļ§
āđāļ›āļĢ count
 āļŠāđˆāļ§āļ™ Consumer āļ–āđ‰āļēāļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļŠāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨ
āļˆāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļš count=0 āļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļēāđ€āļ›āđ‡āļ™
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 69
Producer-Consumer Problem
(http://www.doc.ic.ac.uk/~jnm/concurre
ncy/classes/BoundedBuffer/
BoundedBuffer.html)#define N 100 /* āļ‚āļ™āļēāļ”
buffer */
Int count = 0; /* āļˆāļģāļēāļ™āļ§āļ™ item
āđƒāļ™ buffer */
Void producer(void)
{ int item;
While(TRUE) { /* āļ§āļ™āļĢāļ­āļš */
item = producer_item(); /* āļœāļĨāļīāļ•
item āļ•āđˆāļ­āđ„āļ› */
If (count == N) sleep(); /* āļ–āđ‰āļē
buffer āđ€āļ•āđ‡āļĄ sleep āļ•āļąāļ§āđ€āļ­āļ‡ */
insert_item(item); /* āđƒāļŠāđˆ item āđƒāļ™
buffer */
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 70
Producer-Consumer Problem
(āļ•āđˆāļ­)
Void consumer(void)
{
int item;
While (TRUE) { /* āļ§āļ™āļĢāļ­āļš */
If (count == 0) sleep(); /* āļ–āđ‰āļē
buffer āļ§āđˆāļēāļ‡ sleep āļ•āļąāļ§āđ€āļ­āļ‡ */
item = remove_item(); /* āļ™āļģāļē
item āļ­āļ­āļāļˆāļēāļ buffer */
count = count – 1; /* āļĨāļ”āļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢ
count */
If (count <= N-1) wakeup(producer);
/* āļ–āđ‰āļē buffer āļĄāļĩāļ—āļĩāđˆāļ§āđˆāļēāļ‡āļˆāļ°
wakeup producer */
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 71
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 Semaphore
 āļŦāļĨāļąāļāļāļēāļĢāļžāļ·āđ‰āļ™āļāļēāļ™āļ„āļ·āļ­āļĄāļĩ process 2
process āļ‚āļķāđ‰āļ™āđ„āļ› āļ›āļĢāļ°āļŠāļēāļ™āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļāļąāļ™
āđ‚āļ”āļĒāļāļēāļĢāļŠāđˆāļ‡āļŠāļąāļāļāļēāļ“āļĢāļ°āļŦāļ§āđˆāļēāļ‡ process
āļœāđˆāļēāļ™āļ—āļēāļ‡āļ•āļąāļ§āđāļ›āļĢāļžāļīāđ€āļĻāļĐāļ‹āļķāđˆāļ‡āđ€āļĢāļĩāļĒāļāļ§āđˆāļē
semaphore
 āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļ‚āļ­āļ‡ Semaphore āđ€āļ›āđ‡āļ™āļ›āļāļīāļšāļąāļ•āļī
āļāļēāļĢāđ€āļ”āļĩāļĒāļ§āļ—āļĩāđˆāļ—āļģāļēāđƒāļŦāđ‰ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–
āđāļ­āđ‡āļāđ€āļ‹āļŠ Semaphore āđ„āļ”āđ‰āļˆāļ™āļāļ§āđˆāļēāļˆāļ°
āđ€āļŠāļĢāđ‡āļˆāļŠāļĄāļšāļđāļĢāļ“āđŒāļŦāļĢāļ·āļ­āļ–āļđāļāļšāļĨāđ‡āļ­āļ āļ—āļģāļēāđƒāļŦāđ‰āļŠāđˆāļ§āļĒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 72
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 Semaphore
 Semaphores āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļāļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļē
āđ€āļ‚āļ•āļ§āļīāļāļĪāļ•āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļĄāļēāļāļĒāļīāđˆāļ‡āļ‚āļķāđ‰āļ™
āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāļŠāļ™āļīāļ” Integer āļ—āļĩāđˆāļĄāļĩāļāļēāļĢ
āļšāļ­āļāđƒāļŦāđ‰ Process āđ„āļŦāļ™āđ„āļ”āđ‰āđ€āļ‚āđ‰āļēāļ—āļģāļēāļ‡āļēāļ™
āļāđˆāļ­āļ™
 Semaphore S āļ„āļ·āļ­āļ•āļąāļ§āđāļ›āļĢāļˆāļģāļēāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ
āļ‹āļķāđˆāļ‡āļŦāļĨāļąāļ‡āļˆāļēāļāļāļēāļĢāļāļģāļēāļŦāļ™āļ”āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđāļĨāđ‰āļ§ āļˆāļ°
āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒāļ„āļģāļēāļŠāļąāđˆāļ‡āļ‹āļķāđˆāļ‡āļ—āļģāļēāļ‡āļēāļ™āđāļšāļšāļ„āļĢāļš
āļŦāļ™āđˆāļ§āļĒ (āļ„āļ·āļ­āđāļšāđˆāļ‡āđāļĒāļāđ„āļĄāđˆāđ„āļ”āđ‰) 2 āļ„āļģāļēāļŠāļąāđˆāļ‡ āļ„āļ·āļ­
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 73
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 74
Wait & Signal
Int s; /* Semaphore */
Void Wait(s) {
While (s <=0) /* do
nothing */
s --;
}
Void Signal(s) {
s ++;
}
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 75
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™
āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
 Semaphore
 Semaphore āļĄāļĩ 2 āļŠāļ™āļīāļ”āļ„āļ·āļ­ Binary
Semaphore āļ—āļĩāđˆāļĄāļĩ 2 āļ„āđˆāļēāļ„āļ·āļ­ 0 āđāļĨāļ° 1
āđ€āļŠāđˆāļ™ mutex āļ—āļĩāđˆāļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ„āļ§āļšāļ„āļļāļĄāļāļēāļĢāđ€āļ‚āđ‰āļē
CR āļŦāļĢāļ·āļ­āļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ” Mutual Exclusion
 Counting Semaphore āđ€āļ›āđ‡āļ™
Semaphore āļ•āļąāļ§āļ™āļąāļš āļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ›āļĢāļ°āļŠāļēāļ™
āļˆāļąāļ‡āļŦāļ§āļ°āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Producer
āđāļĨāļ° Consumer āļ—āļĩāđˆāļĄāļĩ Full āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ™āļąāļš
āļˆāļģāļēāļ™āļ§āļ™āļŠāđˆāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļ° Empty āđ€āļ›āđ‡āļ™āļ•āļąāļ§
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 76
āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđ€āļ‚āđ‰āļēāđƒāļŠāđ‰āļ‡āļēāļ™
Semaphore Mutex
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 77
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 78
Mutex āļāļąāļš Semaphore āļ•āđˆāļēāļ‡āļāļąāļ™
āļĒāļąāļ‡āđ„āļ‡?â€Ē āđ€āļžāļ·āđˆāļ­āļ—āļĩāđˆāļˆāļ°āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļēāđ‚āļĨāļāđ€āđ€āļ•āļāđƒāļ™āļāļēāļĢāđ€āđ€āļĒāļāļāļąāļ™
āđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĢāļąāļžāļĒāļēāļāļĢāļžāļĢāđ‰āļ­āļĄāļāļąāļ™
(āļĄāļąāļ™āļ„āļ‡āđ„āļĄāđˆāļ”āļĩāđ€āđ€āļ™āđˆāļ–āđ‰āļēāļĄāļĩāđƒāļ„āļĢāļ­āļĒāļēāļāļˆāļ°āđ€āļ‚āđ‰āļēāļĄāļē āļ­āļķ āļžāļĢāđ‰āļ­āļĄ
āļāļąāļš āđ€āļĢāļēāđƒāļ™āļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļēāļŦāđ‰āļ­āļ‡āļ‡āđ€āļ”āļĩāļĒāļ§āļāļąāļ™)
āļ–āđ‰āļēāļĨāļ­āļ‡āđ€āļ—āļĩāļĒāļš āļāļąāļš āļŠāļīāđˆāļ‡āļ‚āļ­āļ‡āđƒāļ™āļŠāļĩāļ§āļīāļ•āļ›āļĢāļ°āļˆāļģāļēāļ§āļąāļ™āđ€āđ€āļĨāđ‰āļ§
Mutex āļāđ‡āđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļš āļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒāļ—āļĩāđˆ āļĄāļĩāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļēāļ­āļĒāļđāđˆ
1 āļŦāđ‰āļ­āļ‡ āđ€āđ€āļĨāļ°āļĄāļĩ
āļāļļāļāđ€āđ€āļˆāļŠāļģāļēāļŦāļĢāļąāļšāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļēāļŦāđ‰āļ­āļ‡āļ™āļĩāđ‰āđ€āļžāļĩāļĒāļ‡ 1 āļ­āļąāļ™
āđƒāļ„āļĢāļāđ‡āļ•āļēāļĄāļ—āļĩāđˆāļ­āļĒāļēāļāļˆāļ°āđƒāļŠāđ‰āļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļē āļāđ‡āļ•āđ‰āļ­āļ‡āļĢāļ­āļˆāļ™āļāļ§āđˆāļē
āļ„āļ™āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļāđˆāļ­āļ™āđƒāļŠāđ‰āļŦāđ‰āļ­āļ‡
āļ™āļģāđ‰āļēāđ€āļŠāļĢāđ‡āļˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 79
[ āļ§āđˆāļēāļ‡ ] A B C D <=== āļ™āļēāļĒ A B C D āđ€āļāļīāļ”
āļ›āļ§āļ”āļ­āļķ āļžāļĢāđ‰āļ­āļĄāļāļąāļ™
[ A ] B C D <=== āļ™āļēāļĒ A āđ„āļ”āđ‰āđ€āļ‚āđ‰āļēāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļē
āļŠāļšāļēāļĒāđƒāļˆāđ€āļ‰āļīāļš
A [ B ] C D <=== āļˆāļ°āđ€āļŦāđ‡āļ™āļ§āđˆāļēāļ—āļļāļāļ„āļ™āļ•āđ‰āļ­āļ‡āļĢāļ­
āļ™āļēāļĒ A
āđ€āđ€āļ•āđˆāđƒāļ™āļāļĢāļ“āļĩāļ‚āļ­āļ‡ Semaphore āļŸāļąāļ‡āļ”āļđāđ€āļ‚āđ‰āļēāļ—āđˆāļē
āļĄāļēāļāļāļ§āđˆāļē
Semaphore āđ€āļ›āļĢāļĩāļĒāļšāđ€āļŦāļĄāļ·āļ­āļ™ āļāļļāļāđ€āđ€āļˆāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļē
āļˆāļģāļēāļ™āļ§āļ™āļŦāļ™āļķāđˆāļ‡āļ—āļĩāđˆāđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļ™ āļŠāļĄāļĄāļļāļ•āļīāļ§āđˆāļēāļĄāļĩ 4 āļ­āļąāļ™
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 80
āļ–āđ‰āļēāļĄāļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļ™ semaphore āđ€āļŦāļĨāļ·āļ­ 0 āļ™āļąāđˆāļ™
āļāđ‡āļ„āļ·āļ­ āđ„āļĄāđˆāļĄāļĩāļ—āļĩāđˆāļžāļ­āđƒāļŦāđ‰ process āļ—āļĩāđˆāļ­āļ·āđˆāļ™āļ­āļĩāļāļ•āđˆāļ­āđ„āļ› āļ‹āļķāđˆāļ‡
āļāđ‡āļˆāļ°āļ•āđ‰āļ­āļ‡āļĢāļ­ āđƒāļŦāđ‰āļĄāļĩāļ—āļĩāđˆāļ§āđˆāļēāļ‡
[āļ§āđˆāļēāļ‡][āļ§āđˆāļēāļ‡][āļ§āđˆāļēāļ‡][āļ§āđˆāļēāļ‡] A B C D E F G <===
āļ™āļēāļĒ A B C D E F G āđ€āļāļīāļ”āļ›āļ§āļ”āļ­āļķ āļžāļĢāđ‰āļ­āļĄāļāļąāļ™
[A] [B ][C] [D ] E F G <=== āļ™āļēāļĒ A B C D
āļŠāļšāļēāļĒāđƒāļˆāđ€āļ‰āļīāļš
C D [A] [B ][E] [F] G <=== āđ€āđ€āļ•āđˆ A B āļ—āđ‰āļ­āļ‡
āđ€āļŠāļĩāļĒ āđ€āđ€āļ•āđˆ E F āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĢāļ­āļ™āļēāļ™
āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āļ„āļģāļēāļ–āļēāļĄāļ—āļĩāđˆāļ§āđˆāļē Mutex āļ•āđˆāļēāļ‡āļāļ°
Semaphore āļĒāļąāļ‡āđ„āļ‡ āļāđ‡āļ„āļ·āļ­ Semaphore āļ­āļ™āļļ
āļāļēāļ•āļīāđƒāļŦāđ‰ āļˆāļģāļēāļ™āļ§āļ™āļ‚āļ­āļ‡ process āđ€āļ‚āđ‰āļēāļ–āļķāļ‡
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 81
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 The Dining Philosophers
Problem
(http://www.doc.ic.ac.uk/~jnm/concurre
ncy/classes/Diners/Diners.html)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 82
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 The Dining Philosophers
Problem
 āļ™āļąāļāļ›āļĢāļēāļŠāļāđŒ 5 āļ—āđˆāļēāļ™āļ™āļąāđˆāļ‡āļ—āļēāļ™āļ­āļēāļŦāļēāļĢāļĢāļ­āļš
āđ‚āļ•āđŠāļ°āļāļĨāļĄ
 āļ™āļąāļāļ›āļĢāļēāļŠāļāđŒāđāļ•āđˆāļĨāļ°āļ—āđˆāļēāļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļ•āļ°āđ€āļāļĩāļĒāļšāļ—āļąāđ‰āļ‡
2 āļ‚āđ‰āļēāļ‡āļ‹āđ‰āļēāļĒ-āļ‚āļ§āļē
 āđ€āļĄāļ·āđˆāļ­āļ—āļēāļ™āđ€āļŠāļĢāđ‡āļˆāđƒāļ™āđāļ•āđˆāļĨāļ°āļĢāļ­āļšāļˆāļ°āļ•āđ‰āļ­āļ‡āļ§āļēāļ‡
āļ•āļ°āđ€āļāļĩāļĒāļšāđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ™āļąāļāļ›āļĢāļēāļŠāļāđŒāļ—āđˆāļēāļ™āļ­āļ·āđˆāļ™āđ„āļ”āđ‰
āļ—āļēāļ™āļšāđ‰āļēāļ‡
 āļ–āđ‰āļēāļ™āļąāļāļ›āļĢāļēāļŠāļāđŒāļŦāļĒāļīāļšāļ•āļ°āđ€āļāļĩāļĒāļšāļ„āļ™āļĨāļ°āļ‚āđ‰āļēāļ‡
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 83
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 The Dining Philosophers
Problem
 āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļēāļˆāļ°āđƒāļŠāđ‰ binary
semaphore āļāđˆāļ­āļ™āļŦāļĒāļīāļšāļ•āļ°āđ€āļāļĩāļĒāļšāļˆāļ°āđƒāļŠāđ‰
āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Wait() āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ
āļ§āļēāļ‡āļ•āļ°āđ€āļāļĩāļĒāļšāļˆāļ°āđƒāļŠāđ‰āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Signal()
āļŠāđˆāļ§āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđƒāļŠāđ‰āļĢāđˆāļ§āļĄāļāļąāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡
process āļ—āļąāđ‰āļ‡āļŦāļĨāļēāļĒ āļ„āļ·āļ­ semaphore
fork[5];
 āļ›āļąāļāļŦāļēāļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāļŠāļģāļēāļ„āļąāļāļ‚āļ­āļ‡āļāļēāļĢ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 84
The Dining Philosophers
ProblemDo {
Wait(fork[i]);
Wait(fork[(i+1) % 5);
/* eat */
Signal(fork[i]);
Signal(fork[(i+1) % 5);
/* think */
} While (True);
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 85
i fork[i]
fork[(i+1) % 5]
0 0 1
1 1
2
2 2
3
3 3
4
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 86
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 The Readers-Writers Problem
(http://www.doc.ic.ac.uk/~jnm/concurr
ency/classes/ReadWriteLock/
ReadWriteLock.html)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 87
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠï€š The Readers-Writers Problem
 āļĄāļĩ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ—āļģāļēāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļ™āļ„āļ·āļ­āđ‚āļ›āļĢāđ€āļ‹
āļŠāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļ° āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ
 āļāļēāļĢāļ­āđˆāļēāļ™āđāļĨāļ°āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļŠāļēāļĄāļēāļĢāļ–āļĄāļĩāđ„āļ”āđ‰
āļŦāļĨāļēāļĒāđ‚āļ›āļĢāđ€āļ‹āļŠāļžāļĢāđ‰āļ­āļĄāļāļąāļ™ āđ€āļŠāđˆāļ™ āļĢāļ°āļšāļš
āļŠāļģāļēāļĢāļ­āļ‡āļ—āļĩāđˆāļ™āļąāđˆāļ‡āđ‚āļ”āļĒāļŠāļēāļĢāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļšāļīāļ™
 āđ‚āļ›āļĢāđ€āļ‹āļŠāļāļēāļĢāļ­āđˆāļēāļ™āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāđ„āļ”āđ‰āļ„āļĢāļąāđ‰āļ‡āļĨāļ°
āļŦāļĨāļēāļĒ āđ† āđ‚āļ›āļĢāđ€āļ‹āļŠ āļŠāđˆāļ§āļ™āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļˆāļ°
āļāļĢāļ°āļ—āļģāļēāđ„āļ”āđ‰āđ€āļžāļĩāļĒāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ”āļĩāļĒāļ§āđƒāļ™āđ€āļ§āļĨāļēāļ™āļąāđ‰āļ™
 āļāļēāļĢāđƒāļŠāđ‰ Monitor āļŦāļĢāļ·āļ­āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ
āļ­āļ·āđˆāļ™ āđ† āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢ Mutual
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 88
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
 The Readers-Writers Problem
 āļ•āđ‰āļ­āļ‡āļ„āļģāļēāļ™āļķāļ‡āļāļēāļĢāļĢāļ­āļ„āļ­āļĒāļ”āđ‰āļ§āļĒ āđ€āļžāļĢāļēāļ°āļœāļđāđ‰āļ­āđˆāļēāļ™
āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰āļ•āļĨāļ­āļ”āđ€āļ§āļĨāļē āļ–āđ‰āļēāļĄāļĩāļœāļđāđ‰
āļ­āđˆāļēāļ™āđ€āļ‚āđ‰āļēāļĄāļēāļ•āļĨāļ­āļ”āđ€āļ§āļĨāļē āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļāđ‡āļˆāļ°āđ„āļĄāđˆ
āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāļ‡āļēāļ™āđ„āļ”āđ‰ āļŦāļĢāļ·āļ­āļ–āđ‰āļēāđ€āļĢāļēāđƒāļŦāđ‰āļŠāļīāļ—āļ˜āļīāđŒāļœāļđāđ‰
āđ€āļ‚āļĩāļĒāļ™āļĄāļēāļāļāļ§āđˆāļē āļāđ‡āļˆāļ°āļ—āļģāļēāđƒāļŦāđ‰āļœāļđāđ‰āļ­āđˆāļēāļ™āđ„āļĄāđˆ
āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰
 āļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļēāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļāļēāļĢāļˆāļąāļ”āļ„āļīāļ§ āļ–āđ‰āļēāļĄāļĩāļœāļđāđ‰
āđ€āļ‚āļĩāļĒāļ™āļ­āļĒāļđāđˆāļāđˆāļ­āļ™āđāļĨāđ‰āļ§ āļĄāļĩāļœāļđāđ‰āļ­āđˆāļēāļ™āđ€āļ‚āđ‰āļēāļĄāļēāļāđ‡āļ•āđ‰āļ­āļ‡
āļĢāļ­āļāđˆāļ­āļ™ āļˆāļ°āļ—āļģāļēāđƒāļŦāđ‰āļ—āļąāđ‰āļ‡āļœāļđāđ‰āļ­āđˆāļēāļ™āđāļĨāļ°āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āđ„āļĄāđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 89
 The Readers-Writers
Problem
 āđāļšāđˆāļ‡āļ›āļąāļāļŦāļēāđ€āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡āļāļēāļĢāļĢāļ­āļ„āļ­āļĒāđ„āļĄāđˆāļĄāļĩāļ—āļĩāđˆāļŠāļīāđ‰āļ™āļŠāļļāļ”
(Starvation) āđ„āļ”āđ‰āđ€āļ›āđ‡āļ™ 2 āļĨāļąāļāļĐāļ“āļ° āļ„āļ·āļ­
 Writer Starvation āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļĢāļ­āđ„āļĄāđˆāļĄāļĩāļ—āļĩāđˆāļŠāļīāđ‰āļ™
āļŠāļļāļ” āđ€āļ™āļ·āđˆāļ­āļ‡āļĄāļēāļˆāļēāļāļĄāļĩāļœāļđāđ‰āļ­āđˆāļēāļ™āđ€āļ‚āđ‰āļēāđ„āļ›āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļāļĩāđˆ
āļ„āļ™āļāđ‡āđ„āļ”āđ‰ āđāļĨāļ°āđ„āļĄāđˆāļĒāļ­āļĄāļ­āļ­āļāļĄāļēāļŠāļąāļāļ—āļĩ āđāļ•āđˆāļ–āđ‰āļēāļĄāļĩāļœāļđāđ‰
āļ­āđˆāļēāļ™āđƒāļŦāļĄāđˆāļĄāļēāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āđ€āļ‚āđ‰āļēāđ„āļ›āļ­āđˆāļēāļ™āđ„āļ”āđ‰
 Reader Starvation āļœāļđāđ‰āļ­āđˆāļēāļ™āļĢāļ­āđ„āļĄāđˆāļĄāļĩāļŠāļīāđ‰āļ™
āļŠāļļāļ” āđ€āļ™āļ·āđˆāļ­āļ‡āļĄāļēāļˆāļēāļāļĄāļĩāļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āđ€āļ‚āđ‰āļēāđ„āļ›āđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡
āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 90
The Readers-Writers Problem
Semaphore mutex = 1, /* āļ•āļąāļ§āđāļ›āļĢāļ‚āļ­āļ‡
reader process
writing = 1; /* āļ•āļąāļ§āđāļ›āļĢāļ‚āļ­āļ‡ writer
process
Int readerCounter = 0; /* āļ•āļąāļ§āđāļ›āļĢāļ™āļąāļš
āļˆāļģāļēāļ™āļ§āļ™āļ„āļ™āļ­āđˆāļēāļ™
Void writer(int)
{
Wait (writing); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒāļāļēāļĢāđƒāļŠāđ‰
āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ */
/* perform writing */
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 91
The Readers-Writers Problem
Void reader(int i) {
Wait(mutex); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒ */
readerCounter++; /* āļĄāļĩāļœāļđāđ‰āļ­āđˆāļēāļ™āđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™ 1
āļ„āļ™ */
If (readerCounter == 1) /* āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļē
āđ€āļ›āđ‡āļ™āļœāļđāđ‰āļ­āđˆāļēāļ™āļ„āļ™āđāļĢāļāļŦāļĢāļ·āļ­āđ„āļĄāđˆ */
Wait(writing); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒāđƒāļŦāđ‰āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™
āđ‚āļ”āļĒāđƒāļŠāđ‰ writing */
Signal(mutex); /* āļ›āļĨāđˆāļ­āļĒāļŠāļīāļ—āļ˜āļīāđŒ
*/
/* perform reading */
Wait(mutex); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒ */
readerCounter--; /* āļœāļđāđ‰āļ­āđˆāļēāļ™āļĨāļ”āļĨāļ‡ 1 āļ„āļ™
*/
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 92
10. Thread10. Thread
 Thread (āļŠāļēāļĒāļ‡āļēāļ™) āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ
āđ€āļĢāļĩāļĒāļāļ§āđˆāļē “Lightweight Process” āļŦāļĄāļēāļĒāļ–āļķāļ‡
āļŦāļ™āđˆāļ§āļĒāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
 Thread āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļŦāļ™āļķāđˆāļ‡āļ‚āļ­āļ‡ Process āđ‚āļ”āļĒ
Process āļŦāļ™āļķāđˆāļ‡āđ† āļ­āļēāļˆāļĄāļĩāļĄāļēāļāļāļ§āđˆāļēāļŦāļ™āļķāđˆāļ‡ Thread
(Multithreading)
 āđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāļšāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāļŠāļĄāļąāļĒāđƒāļŦāļĄāđˆāļˆāļ°
āļ—āļģāļēāļ‡āļēāļ™āđāļšāļšāļŦāļĨāļēāļĒāļŠāļēāļĒāļ‡āļēāļ™ āļ™āļąāđˆāļ™āļ„āļ·āļ­ 1 process
āđāļ•āđˆāļĄāļĩāļŦāļĨāļēāļĒ Thread āļ—āļģāļēāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāļ‡āļēāļ™āļŦāļĨāļēāļĒ
āļ­āļĒāđˆāļēāļ‡āđ„āļ”āđ‰āļ„āļĨāđ‰āļēāļĒāļāļąāļšāļžāļĢāđ‰āļ­āļĄāđ†āļāļąāļ™ āđ€āļŠāđˆāļ™ āđƒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ
Word āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ—āļĩāđˆāļžāļīāļĄāļžāđŒāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļžāļīāļĄāļžāđŒ āļœāļđāđ‰
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 93
10. Thread10. Thread
 1 Process , 1 Thread => MS DOS
 > 1 Process , 1 Thread => UNIX
 1 Process , > 1 Thread => Java Runtime
Environment (JRE)
 > 1 Process , > 1 Thread => Solaris,
Windows2000, Linux, OS/2
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 94
10. Thread10. Thread
3 process āđāļĨāļ°āļ„āļ§āļšāļ„āļļāļĄāđ€āļžāļĩāļĒāļ‡ 1 Thread1 Process āļ„āļ§āļšāļ„āļļāļĄ 3 Thread
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 95
10. Thread10. Thread
 āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡ Thread
 āļŦāļĄāļēāļĒāđ€āļĨāļ‚ Thread
 āļ•āļąāļ§āļ™āļąāļš : āļ•āļīāļ”āļ•āļēāļĄāđƒāļŦāđ‰āļ—āļĢāļēāļšāļ„āļģāļēāļŠāļąāđˆāļ‡āļ•āđˆāļ­āđ„āļ›āļ—āļĩāđˆāļˆāļ°
āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ
 āļŠāļļāļ”āļ‚āļ­āļ‡āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ : āđ€āļāđ‡āļšāļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆ
āļ—āļģāļēāļ‡āļēāļ™āļ­āļĒāļđāđˆ
 āļŠāđāļ•āđ‡āļ : āđ€āļāđ‡āļšāļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 96
10. Thread10. Thread
 āļ āļēāļĒāđƒāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ
Thread āļˆāļ°āļĄāļĩāļāļēāļĢāđāļŠāļĢāđŒāļĢāļĩāļ‹āļ­āļĢāđŒāļŠ
 āļ–āđ‰āļē 1 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ„āļ§āļšāļ„āļļāļĄ 1 Thread āļˆāļ°
āđ€āļĢāļĩāļĒāļāļ§āđˆāļē “Single-threaded” āđāļ•āđˆāļ–āđ‰āļē 1
āđ‚āļ›āļĢāđ€āļ‹āļŠāļ„āļ§āļšāļ„āļļāļĄāļŦāļĨāļēāļĒ thread āļˆāļ°āđ€āļĢāļĩāļĒāļ
āļ§āđˆāļē “Multithreaded”
 āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļĄāļąāļĒāđƒāļŦāļĄāđˆāđ€āļŠāđˆāļ™ āđ€āļ§āđ‡āļšāļšāļĢāļēāļ§āđ€āļ‹āļ­āļĢāđŒ
āļĄāļĩ thread āļāļģāļēāļĨāļąāļ‡āđāļŠāļ”āļ‡āļĢāļđāļ›āļ āļēāļž āđƒāļ™āļ‚āļ“āļ°
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 97
10. Thread10. Thread
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 98
10. Thread10. Thread
 āļ‚āđ‰āļ­āđ„āļ”āđ‰āđ€āļ›āļĢāļĩāļĒāļšāļ‚āļ­āļ‡ Multithreaded
 āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡
 āļāļēāļĢāđāļŠāļĢāđŒāļĢāļĩāļ‹āļ­āļĢāđŒāļŠ
 āļ„āļ§āļēāļĄāļ›āļĢāļ°āļŦāļĒāļąāļ”
 āļāļēāļĢāđ€āļ­āļ·āđ‰āļ­āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ‚āļ­āļ‡āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ
āļĄāļąāļĨāļ•āļīāđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 99
10. Thread10. Thread
 āļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļ‚āļ­āļ‡ Thread
 User Thread : āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļēāļ Kernel
āļ”āđ‰āļēāļ™āļšāļ™ āđāļĨāļ°āļ­āļĒāļđāđˆāđƒāļ™āđ„āļĨāļšāļĢāļēāļĢāļĩāļ‚āļ­āļ‡ thread āđƒāļ™
āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰ āđ„āļĨāļšāļĢāļēāļĢāļĩāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡, āļˆāļąāļ”
āđ€āļ§āļĨāļē āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ thread āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ„āļ”āđ‰āļĢāļąāļš
āļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļēāļ kernel āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ Kernel
āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĒāļļāđˆāļ‡āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš Thread āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰ āļāļēāļĢ
āļˆāļąāļ”āļāļēāļĢ thread āļˆāļ°āļ—āļģāļēāđƒāļ™āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āđ‚āļ”āļĒ
āđ„āļĄāđˆāļˆāļģāļēāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ Kernel āļ—āļģāļēāđƒāļŦāđ‰ thread āđƒāļ™
āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļ™āļĩāđ‰āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡
āļĢāļ§āļ”āđ€āļĢāđ‡āļ§ āļ–āđ‰āļē kernel āđ€āļ›āđ‡āļ™ single thread
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 100
10. Thread10. Thread
 āļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļ‚āļ­āļ‡ Thread
 Kernel Thread : āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™
āđ‚āļ”āļĒāļ•āļĢāļ‡āļˆāļēāļāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ āđ‚āļ”āļĒāļˆāļ°āļŠāļĢāđ‰āļēāļ‡,
āļˆāļąāļ”āđ€āļ§āļĨāļē āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ thread āļ āļēāļĒāđƒāļ™ Kernel
āđ€āļ­āļ‡ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļēāļāļĢāļ°āļšāļš
āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ āļ—āļģāļēāđƒāļŦāđ‰ Kernel thread āļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°
āļˆāļąāļ”āļāļēāļĢāđ„āļ”āđ‰āļŠāđ‰āļēāļāļ§āđˆāļē user thread āđāļ•āđˆāđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ
kernel āļˆāļąāļ”āļāļēāļĢāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš thread āđ€āļ­āļ‡ āļ”āļąāļ‡āļ™āļąāđ‰āļ™
āļ–āđ‰āļē thread āđ€āļāļīāļ”āļāļēāļĢāļšāļĨāđ‡āļ­āļ system call āļˆāļ°
āļ—āļģāļēāđƒāļŦāđ‰ kernel āļ™āļąāđ‰āļ™āļ”āļķāļ‡ thread āļ­āļ·āđˆāļ™āđ€āļ‚āđ‰āļēāđ„āļ›āđ€āļ­āđ‡āļ
āļ‹āļīāļ„āļīāļ§āļ•āđŒāđāļ—āļ™āđ„āļ”āđ‰ āļˆāļ°āđ„āļĄāđˆāļ—āļģāļēāđƒāļŦāđ‰ thread āļ­āļ·āđˆāļ™āļ‚āļ­āļ‡
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 101
10. Thread10. Thread
 āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡
MultiThread
 Many-to-One :
1 Kernel āļāļąāļš
āļŦāļĨāļēāļĒ User
thread āļāļēāļĢ
āļˆāļąāļ”āļāļēāļĢ
threadāļ­āļĒāļđāđˆāđƒāļ™
āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļ‹āļķāđˆāļ‡āļĄāļĩ
āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļ•āđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 102
10. Thread10. Thread
 āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡
MultiThread
 One-to-One : 1
Kernel āļāļąāļš 1 User
thread āļ—āļģāļēāļ‡āļēāļ™āđ„āļ”āđ‰
āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āļ”āļĩāļāļ§āđˆāļēāđāļšāļš
āđāļĢāļ āđ‚āļ”āļĒāļĒāļ­āļĄāđƒāļŦāđ‰
thread āļ­āļ·āđˆāļ™āļĢāļąāļ™āđ„āļ”āđ‰
āđ€āļĄāļ·āđˆāļ­āļĄāļĩ thread āļ–āļđāļ
āļšāļĨāđ‡āļ­āļ system call
āļ•āđ‰āļ­āļ‡āļ„āļģāļēāļ™āļķāļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 103
10. Thread10. Thread
 āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡
MultiThread
 Many-to-many :
User thread āļĄāļēāļāļāļ§āđˆāļē
āļŦāļĢāļ·āļ­āđ€āļ—āđˆāļēāļāļąāļš Kernel
thread āđ„āļ”āđ‰
 kernel thread āļāļģāļē
āļŦāļ™āļ”āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™
 Many-to-One āļĒāļ­āļĄāđƒāļŦāđ‰
āļœāļđāđ‰āļžāļąāļ’āļ™āļē āļŠāļĢāđ‰āļēāļ‡ user
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 104
10. Thread10. Thread
 āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡ MultiThread
 Many-to-many : User thread āļĄāļēāļāļ§āđˆāļē
āļŦāļĢāļ·āļ­āđ€āļ—āđˆāļēāļāļąāļš Kernel thread āļāđ‡āđ„āļ”āđ‰
 One-to-One āļĒāļ­āļĄāđƒāļŦāđ‰āļĢāļąāļ™āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āđ„āļ”āđ‰ āļœāļđāđ‰
āļžāļąāļ’āļ™āļēāļĢāļ°āļ§āļąāļ‡āļ­āļĒāđˆāļēāļŠāļĢāđ‰āļēāļ‡ thread āļĄāļēāļāđ€āļāļīāļ™āđ„āļ›
 āļĨāļ”āļ‚āđ‰āļ­āļˆāļģāļēāļāļąāļ”āļ‚āļ­āļ‡āđ‚āļĄāđ€āļ”āļĨāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡
 āļœāļđāđ‰āļžāļąāļ’āļ™āļēāļŠāļĢāđ‰āļēāļ‡ thread āđ„āļ”āđ‰āđ€āļ—āđˆāļēāļ—āļĩāđˆāļˆāļģāļēāđ€āļ›āđ‡āļ™
āđāļĨāļ°āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļš Kernel
 āļŠāļēāļĄāļēāļĢāļ–āļĢāļąāļ™āđāļšāļšāļ‚āļ™āļēāļ™āđƒāļ™āļĢāļ°āļšāļšāļĄāļąāļĨāļ•āļī
āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒ
 āđ€āļĄāļ·āđˆāļ­ thread āđ€āļāļīāļ”āļāļēāļĢāļšāļĨāđ‡āļ­āļ system call
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 105
10. Thread10. Thread
 āļāļēāļĢāļĒāļāđ€āļĨāļīāļ Thread
 āđ€āļ›āđ‡āļ™āļāļēāļĢāļ—āļģāļēāđƒāļŦāđ‰ thread āļˆāļšāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™
āļāđˆāļ­āļ™āļˆāļ°āđ€āļŠāļĢāđ‡āļˆāļŠāļĄāļšāļđāļĢāļ“āđŒ
 thread āļ—āļĩāđˆāļ–āļđāļāļĒāļāđ€āļĨāļīāļ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē target
thread
 āļāļēāļĢāļĒāļāđ€āļĨāļīāļāļĄāļĩ 2 āļĢāļđāļđāļ›āđāļšāļš
 Asynchronous : thread āļ­āļ·āđˆāļ™āļŠāļąāđˆāļ‡āđƒāļŦāđ‰
target thread āļŦāļĒāļļāļ”āļ—āļąāļ™āļ—āļĩ
 Deferred : target thread āļ•āļĢāļ§āļˆāļŠāļ­āļš
āļ•āļąāļ§āđ€āļ­āļ‡āļ§āđˆāļēāļ•āļ™āđ€āļ­āļ‡āļˆāļ°āļ–āļđāļāļĒāļāđ€āļĨāļīāļāļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļē
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 106
10. Thread10. Thread
 āļāļēāļĢāļĒāļāđ€āļĨāļīāļ Thread
 āđƒāļ™ Deferred āļˆāļ°āļĄāļĩ thread āļŦāļ™āļķāđˆāļ‡
āļāļģāļēāļŦāļ™āļ”āļ§āđˆāļē target thread āđƒāļ”āļ–āļđāļ
āļĒāļāđ€āļĨāļīāļ āļ‹āļķāđˆāļ‡ target thread āļ•āļĢāļ§āļˆāļŠāļ­āļš
āļ•āļąāļ§āđ€āļ­āļ‡ āļāļēāļĢāļ—āļĩāđˆāļĒāļ­āļĄāđƒāļŦāđ‰ thread āļ•āļĢāļ§āļˆāļŠāļ­āļš
āđ€āļžāļ·āđˆāļ­āļĒāļāđ€āļĨāļīāļāđƒāļ™āļˆāļļāļ”āļ—āļĩāđˆāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ
 āļˆāļļāļ”āļ™āļĩāđ‰āđƒāļ™ Pthread API āđ€āļĢāļĩāļĒāļāļ§āđˆāļē
Cancellation Point
 āļŠāđˆāļ§āļ™āļĄāļēāļāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļ­āļĄāđƒāļŦāđ‰āļĒāļāđ€āļĨāļīāļ
āđāļšāļš Asynchronous
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 107
â€Ē āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āļ—āļĩāđˆāđ€āļŠāļ™āļ­āđ‚āļ”āļĒāļ„āļ“āļ°āļ—āļģāļēāļ‡āļēāļ™āļāļģāļēāļŦāļ™āļ”
āļĄāļēāļ•āļĢāļāļēāļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļŠāđ‰āđ„āļ”āđ‰āļŦāļĨāļēāļĒāļĢāļ°āļšāļš
â€Ē Thread āļ‹āļķāđˆāļ‡āđƒāļŠāđ‰āļŠāļļāļ”āļ„āļģāļēāļŠāļąāđˆāļ‡āļ—āļĩāđˆāļāļģāļēāļŦāļ™āļ”āđ‚āļ”āļĒ
POSIX āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Pthread
â€Ē āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡ POSIX āđāļ•āđˆāļĨāļ° Thread
āļˆāļ°āļĄāļĩāļŠāļļāļ” register, stack āđāļĨāļ°āļāļēāļĢāļāļģāļēāļŦāļ™āļ”
āļŠāļąāļāļāļēāļ“āļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡ āđāļĨāļ°āļ—āļļāļ Thread
āļ āļēāļĒāđƒāļ™ Process āļŦāļ™āļķāđˆāļ‡āđ† āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ‡āļēāļ™āļ‚āđ‰āļ­
āļĄāļđāļĨāļ­āļ·āđˆāļ™āđ†āļ‚āļ­āļ‡ Process āļ™āļąāđ‰āļ™āđ„āļ”āđ‰
POSIX (Portable
Operating Systems
Interface for Computing
Environments)
POSIX (Portable
Operating Systems
Interface for Computing
Environments)
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 108
āđāļšāļšāļāļķāļāļŦāļąāļ”
1. āđƒāļ™āļāļēāļĢāđāļ‚āđˆāļ‡āļ‚āļąāļ™āļĢāļ– F1 āļ„āļĢāļąāđ‰āļ‡āļŦāļ™āļķāđˆāļ‡ āļ‹āļķāđˆāļ‡āļĄāļĩāļĢāļ–āđ€āļ‚āđ‰āļē
āđāļ‚āđˆāļ‡āļ‚āļąāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ” 3 āļ„āļąāļ™āļĄāļēāļˆāļēāļāļ„āđˆāļēāļĒāļĢāļ– 3 āļ„āđˆāļēāļĒ
āļ„āļ·āļ­ Honda, Toyota āđāļĨāļ° Benz āļ™āļēāļĒāļŠāļĄ
āļĻāļąāļāļ”āļīāđŒāđ€āļ›āđ‡āļ™āļœāļđāđ‰āđ€āļ‚āđ‰āļēāđāļ‚āđˆāļ‡āļ‚āļąāļ™āđ€āļžāļĩāļĒāļ‡āļ„āļ™āđ€āļ”āļĩāļĒāļ§āđƒāļ™āļ„āļĢāļąāđ‰āļ‡āļ™āļĩāđ‰
āđ‚āļ”āļĒāļ™āļēāļĒāļŠāļĄāļĻāļąāļāļ”āļīāđŒāđ„āļ”āđ‰āļ™āļģāļēāļĢāļ–āļ—āļąāđ‰āļ‡ 3 āļ„āļąāļ™āđ€āļ‚āđ‰āļēāļŠāļđāđˆāļˆāļļāļ”
āļ›āļĨāđˆāļ­āļĒāļ•āļąāļ§ āļŦāļĨāļąāļ‡āļˆāļēāļāļ™āļąāđ‰āļ™āļ™āļēāļĒāļŠāļĄāļĻāļąāļāļ”āļīāđŒāļāđ‡āļ—āļģāļēāļāļēāļĢ
āļŠāļ•āļēāļĢāđŒāļ—āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĒāļ™āļ•āđŒāļ‚āļ­āļ‡āļĢāļ–āļ—āļąāđ‰āļ‡ 3 āļ„āļąāļ™ āļ™āļēāļĒāļŠāļĄ
āļĻāļąāļāļ”āļīāđŒāļ—āļģāļēāļāļēāļĢāļ‚āļąāļšāļĢāļ– Honda āļāđˆāļ­āļ™ āļŦāļĨāļąāļ‡āļˆāļēāļ
āļ‚āļąāļšāđ„āļ›āđ„āļ”āđ‰āļ›āļĢāļ°āļĄāļēāļ“ Âž āļ‚āļ­āļ‡āļ—āļēāļ‡ āļ™āļēāļĒāļŠāļĄāļĻāļąāļāļ”āļīāđŒ
āļāđ‡āđ„āļ”āđ‰āļŦāļĒāļļāļ”āļĢāļ– Honda āđāļĨāļ°āđ„āļ”āđ‰āļ§āļīāđˆāļ‡āļāļĨāļąāļšāļĄāļēāļ‚āļąāļš
āļĢāļ– Toyota āļ­āļ­āļāđ„āļ› āļ•āđˆāļ­āļĄāļē āļŦāļĨāļąāļ‡āļˆāļēāļāļ‚āļąāļšāļĢāļ–
Toyota āđ„āļ›āđ„āļ”āđ‰ Â― āļ‚āļ­āļ‡āļ—āļēāļ‡ āļ›āļĢāļēāļāļāļ§āđˆāļēāļĢāļ–
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 109
āļˆāļēāļāđ€āļĢāļ·āđˆāļ­āļ‡āļĢāļēāļ§āļ—āļąāđ‰āļ‡āļŦāļĄāļ” āļ–āđ‰āļēāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļāļąāļšāļāļēāļĢ
āļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđƒāļŦāđ‰āļ•āļ­āļšāļ„āļģāļēāļ–āļēāļĄāļ•āđˆāļ­
āđ„āļ›āļ™āļĩāđ‰
1.1) āļ­āļ°āđ„āļĢ āļ„āļ·āļ­ CPU
1.2) Resource āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļĄāļĩāļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡
1.3) Resource āļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ New State
āļ­āļ˜āļīāļšāļēāļĒāļ”āđ‰āļ§āļĒāļ§āđˆāļēāļ•āļ­āļ™āđ„āļŦāļ™
1.4) Resource āļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ Ready State
āļ­āļ˜āļīāļšāļēāļĒāļ”āđ‰āļ§āļĒāļ§āđˆāļēāļ•āļ­āļ™āđ„āļŦāļ™
1.5) Resource āļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ Run State
(āđāļĒāļ Resource āđāļ•āđˆāļĨāļ°āļ•āļąāļ§ āđāļĨāļ°āļšāļ­āļāļ§āđˆāļēāđāļ•āđˆāļĨāļ°
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 110
2. āļžāļīāļˆāļēāļĢāļ“āļē InterProcess-
Communication āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Process P
(āļœāļđāđ‰āļĢāļąāļš) āđāļĨāļ° Process Q (āļœāļđāđ‰āļŠāđˆāļ‡)
2.1) āļ–āđ‰āļēāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡ 1 Message
āļĢāļ°āļŦāļ§āđˆāļēāļ‡ 2 Process āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđāļšāļš Direct
Communication āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™ Sequence
āļ‚āļ­āļ‡āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ Send āđāļĨāļ° Receive
2.2) āļˆāļēāļāļ‚āđ‰āļ­ 2.1) āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™ sequence
āļ‚āļ­āļ‡āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāļŠāļđāļāļŦāļēāļĒāļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ
2.3) āļ–āđ‰āļēāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡ Message
āļĢāļ°āļŦāļ§āđˆāļēāļ‡ 2 Process āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđāļšāļš Indirect
Communication āđ‚āļ”āļĒ Process P āļ„āļ­āļĒāļĢāļąāļš
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 111
Start
StopWhile(True)
Count == N
Sleep() insert_item(item)
Count = Count + 1
Count >= 1
Wakeup(consumer)
item = produce_item()
FT
T
F
T
Flowchart of
Procedure Produc
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 112
Start
StopWhile(True)
Count ==0
Sleep() item=remove_item()
Count = Count- 1
Count <=N-1
Wakeup(producer)
Cousume_item(item)
FT
T
F
T
Flowchart of
Procedure Consum

More Related Content

PPT
Ch 2 process
PPT
4 ca-process structure
PPT
Ch06th
PPT
Operating System Chapter 4
PPT
Operating System Chapter 2
PPT
Operating System Chapter 3
PPT
Operating System Chapter 5
PPT
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ.Ppt
Ch 2 process
4 ca-process structure
Ch06th
Operating System Chapter 4
Operating System Chapter 2
Operating System Chapter 3
Operating System Chapter 5
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ.Ppt

What's hot (20)

PPT
Operating System Chapter 1
PPT
3 ca-computer system structure
PPT
1 āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļĨāļ°āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
PPT
Ch09th
PDF
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
PPT
āļ‡āļēāļ™āļ™āļģāđ€āļŠāļ™āļ­1
PDF
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Windows
PPTX
āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
PPT
Ch 1 introos
PPT
Ch07ath
PPT
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
PPTX
Chapter3 processing unit
PDF
āļ—āļģāļ„āļ§āļēāļĄāļĢāļđāđ‰āļˆāļąāļ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
PDF
Learnning 04
PDF
Work3-33
PDF
Work3 07
PPT
8 ca-file system implementation (wichet p.'s conflicted copy 2012-12-17)
PDF
āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļš
PDF
mac os (overview)
Operating System Chapter 1
3 ca-computer system structure
1 āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļĨāļ°āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
Ch09th
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
āļ‡āļēāļ™āļ™āļģāđ€āļŠāļ™āļ­1
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Windows
āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
Ch 1 introos
Ch07ath
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
Chapter3 processing unit
āļ—āļģāļ„āļ§āļēāļĄāļĢāļđāđ‰āļˆāļąāļ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
Learnning 04
Work3-33
Work3 07
8 ca-file system implementation (wichet p.'s conflicted copy 2012-12-17)
āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļš
mac os (overview)
Ad

Viewers also liked (13)

PDF
CPU Scheduling
PPTX
āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ
PPTX
āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
PPTX
āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
PPTX
Multiprogramming&timesharing
DOC
āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ‡āļēāļ™āļšāļ—āļ—āļĩāđˆ 3 DFD Diagram
PPT
Chapter 3 - Processes
PDF
āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđāļœāļ™āļ āļēāļž DFD
 
PDF
āļāļĨāļļāđˆāļĄāļ—āļĩāđˆ āđ’
CPU Scheduling
āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ
āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
Multiprogramming&timesharing
āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ‡āļēāļ™āļšāļ—āļ—āļĩāđˆ 3 DFD Diagram
Chapter 3 - Processes
āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđāļœāļ™āļ āļēāļž DFD
 
āļāļĨāļļāđˆāļĄāļ—āļĩāđˆ āđ’
Ad

Similar to Os ch02 (20)

PDF
āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ‚āļ›āļĢāđ€āļ‹āļŠ
PDF
āļ„āļ§āļēāļĄāļĢāļđāđ‰āļžāļ·āđ‰āļ™āļāļēāļ™āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Introduction to Operating System)
PDF
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
DOCX
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
DOCX
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļšāļšāļĢāđˆāļēāļ‡2558
PPTX
āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāļžāļ·āđ‰āļ™āļāļēāļ™ āļšāļ—āļ—āļĩāđˆ 3
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™ āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
PDF
System
PPT
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
DOCX
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļĢāļ·āđˆāļ­āļ‡ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
DOCX
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ āđ€āļĢāļ·āđˆāļīāļ­āļ‡ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
DOCX
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ āđ€āļĢāļ·āđˆāļ­āļ‡ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ .
PDF
āļĢāļ°āļšāļšāļ›āļŽāļīāļšāļąāļ•āļīāļāļēāļĢ āļ›āļ§āļŠ
DOCX
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđƒāļŦāļĄāđˆ
DOCX
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđƒāļŦāļĄāđˆ
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ€āļœāļĒāđāļžāļĢāđˆ
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
DOCX
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
PDF
āđ€āļĢāļ·āđˆāļ­āļ‡āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ‚āļ›āļĢāđ€āļ‹āļŠ
āļ„āļ§āļēāļĄāļĢāļđāđ‰āļžāļ·āđ‰āļ™āļāļēāļ™āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Introduction to Operating System)
āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļšāļšāļĢāđˆāļēāļ‡2558
āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāļžāļ·āđ‰āļ™āļāļēāļ™ āļšāļ—āļ—āļĩāđˆ 3
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™ āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
System
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļĢāļ·āđˆāļ­āļ‡ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ āđ€āļĢāļ·āđˆāļīāļ­āļ‡ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ āđ€āļĢāļ·āđˆāļ­āļ‡ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ .
āļĢāļ°āļšāļšāļ›āļŽāļīāļšāļąāļ•āļīāļāļēāļĢ āļ›āļ§āļŠ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđƒāļŦāļĄāđˆ
āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāđƒāļŦāļĄāđˆ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ€āļœāļĒāđāļžāļĢāđˆ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ€āļĢāļ·āđˆāļ­āļ‡āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ

Os ch02

  • 1. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 1 āļšāļ—āļ—āļĩāđˆ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠ āđāļĨāļ° Thread
  • 2. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 2 āļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ„āļ§āļēāļĄāļŦāļĄāļēāļĒāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļāļģāļēāļĨāļąāļ‡āļ–āļđāļāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ  āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāļāļģāļēāļĨāļąāļ‡āļ—āļģāļēāļ‡āļēāļ™āļ­āļĒāļđāđˆ  āļāļīāļˆāļāļĢāļĢāļĄāļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļ™ ï€š āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļāļģāļēāļĨāļąāļ‡āđƒāļŠāđ‰āļ‡āļēāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒāļ­āļĒāļđāđˆ
  • 3. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 3 Process āđƒāļ™āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Windows
  • 4. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 4 Process āđƒāļ™āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Linux
  • 5. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 5 1. āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ1. āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļŦāļĄāļēāļĒāđ€āļĨāļ‚āđ‚āļ›āļĢāđ€āļ‹āļŠ (Process ID) āđ€āļ›āđ‡āļ™āļŦāļĄāļēāļĒāđ€āļĨāļ‚ āļ›āļĢāļ°āļˆāļģāļēāđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļžāļ·āđˆāļ­āļāļģāļēāļŦāļ™āļ”āļĨāļģāļēāļ”āļąāļš ï€š āđ‚āļ„āđ‰āļ”āđ‚āļ›āļĢāđāļāļĢāļĄ (Program Code) āļ āļēāļĐāļēāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āđƒāļŠāđ‰ āļŠāļģāļēāļŦāļĢāļąāļšāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ  āļ‚āđ‰āļ­āļĄāļđāļĨ (Data) āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāđ‚āļāļĨāļšāļ­āļĨ  āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ (Process Control Block ) āļŦāļĢāļ·āļ­ PCB  PSW (Program Status Word) āļ•āļąāļ§āļ„āļ§āļšāļ„āļļāļĄāļĨāļģāļēāļ”āļąāļš āļāļēāļĢāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļ„āļģāļēāļŠāļąāđˆāļ‡āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āđāļĨāļ°āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļ–āļēāļ™āļ° āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š
  • 6. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 6 āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ (PCB)āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ (PCB)  āļžāļ­āļĒāđ€āļ•āļ­āļĢāđŒ (Pointer) āđƒāļŠāđ‰āļŠāļĩāđ‰āļ•āļģāļēāđāļŦāļ™āđˆāļ‡āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™ āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļē  āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ (Process state) āđƒāļŠāđ‰āđāļŠāļ”āļ‡ āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļ›āļąāļˆāļˆāļļāļšāļąāļ™ ï€š āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ (Process ID) āđ€āļ›āđ‡āļ™ āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļēāļ•āļąāļ§āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļ•āļąāļ§āļ™āļąāļšāļˆāļģāļēāļ™āļ§āļ™ (Program counter) āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ™āļąāļš āđāļŠāļ”āļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāļ‚āļ­āļ‡āļ„āļģāļēāļŠāļąāđˆāļ‡āļ•āđˆāļ­āđ„āļ› ï€š āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ (Register) āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļ–āļēāļ™āļ°āļĢāļ°āļšāļšāđ€āļĄāļ·āđˆāļ­āļĄāļĩ interrupt āđ€āļāļīāļ”āļ‚āļķāđ‰āļ™ ï€š āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ§āļĨāļēāļ‚āļ­āļ‡āļ‹āļĩāļžāļĩāļĒāļđ (CPU scheduling information)  āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļē (Memory
  • 7. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 7 āļšāļĨāđ‡āļ­āļāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠ (PCB)
  • 8. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 8 2. āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ2. āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļŠāļ–āļēāļ™āļ°āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ (New)  āļŠāļ–āļēāļ™āļ°āļžāļĢāđ‰āļ­āļĄ (Ready)  āļŠāļ–āļēāļ™āļ°āļĢāļąāļ™ (Run)  āļŠāļ–āļēāļ™āļ°āļĢāļ­,āļžāļąāļ (Wait)  āļŠāļ–āļēāļ™āļ°āļšāļĨāđ‡āļ­āļ (Block)  āļŠāļ–āļēāļ™āļ°āļŠāļīāđ‰āļ™āļŠāļļāļ” (Terminate)
  • 9. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 9 āđ„āļ”āļ­āļ°āđāļāļĢāļĄāļ‚āļ­āļ‡āļŠāļ–āļēāļ™āļ° āđ‚āļ›āļĢāđ€āļ‹āļŠ
  • 10. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 10 3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āđƒāļŠāđ‰āđƒāļ™āļĢāļ°āļšāļšāļĄāļąāļĨāļ•āļīāđ‚āļ›āļĢāđāļāļĢāļĄāļĄāļīāđˆāļ‡ āļ„āļ·āļ­āļāļēāļĢāļˆāļąāļ”āđ‚āļ›āļĢāđ€āļ‹āļŠ āđƒāļŦāđ‰āļĢāļąāļ™āļ•āļĨāļ­āļ”āđ€āļ§āļĨāļē āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđƒāļŠāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ‹āļĩāļžāļĩāļĒāļđāđ„āļ”āđ‰ āļŠāļđāļ‡āļŠāļļāļ” ï€š āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āļĄāļēāđƒāļŦāļĄāđˆāļˆāļ°āļ­āļĒāļđāđˆ āđƒāļ™āļŠāļ–āļēāļ™āļ°āļžāļĢāđ‰āļ­āļĄāđāļĨāļ°āđ€āļāđ‡āļš āļ­āļĒāļđāđˆāđƒāļ™āļ„āļīāļ§ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Ready Queue āđ€āļžāļ·āđˆāļ­āļĢāļ­āļāļēāļĢāļĢāļąāļ™ ï€š āļ•āđ‰āļ­āļ‡āļžāļīāļˆāļēāļĢāļ“āļēāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļ‚āļ­āļ‡āļĢāļ°āļšāļšāļĄāļĩāđ€āļžāļĩāļĒāļ‡āļžāļ­ āļŦāļĢāļ·āļ­āđ„āļĄāđˆ  Ready Queue āļˆāļ°āđ€āļāđ‡āļšāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļĨāļąāļāļĐāļ“āļ°āļĨāļīāļ‡āļ„āđŒ āļĨāļīāļŠāļ•āđŒ (Link list) āļ—āļĩāđˆāļŠāđˆāļ§āļ™āļŦāļąāļ§āļ‚āļ­āļ‡āļ„āļīāļ§ āļˆāļ°āļ›āļĢāļ°āļāļ­āļš
  • 11. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 11 āļ„āļīāļ§āļ—āļĩāđˆāļžāļĢāđ‰āļ­āļĄāļ—āļģāļēāļ‡āļēāļ™āđāļĨāļ° āļ­āļīāļ™āļžāļļāļ•/āđ€āļ­āļēāļ•āđŒāļžāļļāļ•āļ­āļ·āđˆāļ™ āđ† āļŦāļąāļ§ āļ—āđ‰āļē āļĒ
  • 12. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 12 3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ3. āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ āļ›āļąāļāļŦāļē : āļŦāļēāļāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ”āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđ€āļ§āļĨāļēāļ™āļēāļ™ āđ† āļˆāļ° āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™āļ„āļīāļ§āļ•āđ‰āļ­āļ‡āđ€āļŠāļĩāļĒāđ€āļ§āļĨāļēāļĢāļ­āļ™āļēāļ™ āđ€āļāļīāļ™āđ„āļ› āļ§āļīāļ˜āļĩāđāļāđ‰āđ„āļ‚ : āļāļģāļēāļŦāļ™āļ”āđ€āļ§āļĨāļēāđƒāļ™āļāļēāļĢāļ­āļĒāļđāđˆāđƒāļ™āļŠāļ–āļēāļ™āļ°āļĢāļąāļ™ āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļļāļāđ‚āļ›āļĢāđ€āļ‹āļŠ āđ€āļĢāļĩāļĒāļāļ§āđˆāļēāđ€āļ§āļĨāļēāļ„āļ§āļąāļ™āļ•āļąāļĄ (Quantum time) āļ–āđ‰āļēāđ€āļāļīāļ™āļˆāļ°āđ„āļ›āļ•āđˆāļ­āļ„āļīāļ§āđƒāļŦāļĄāđˆ
  • 13. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 13 āļāļēāļĢāļšāļĨāđ‡āļ­āļāđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļĄāļ·āđˆāļ­āļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļŠāđ‰ I/O āļŦāļĢāļ·āļ­āļĄāļĩ āļāļēāļĢāļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāđƒāļŠāđ‰āđ€āļ§āļĨāļēāđ€āļāļīāļ™āđ€āļ§āļĨāļēāļ„āļ§āļąāļ™āļ•āļąāļĄāļˆāļ°āļĒāđ‰āļēāļĒāđ„āļ› āļ•āđˆāļ­āļ„āļīāļ§āđƒāļŦāļĄāđˆ
  • 14. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 14 3.1) āļ”āļĩāđ„āļ§āļ‹āđŒāļ„āļīāļ§ (Device Queue) 3.1) āļ”āļĩāđ„āļ§āļ‹āđŒāļ„āļīāļ§ (Device Queue) āļ„āļīāļ§āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĢāļ­āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļˆāļēāļāļāļēāļĢ āđƒāļŠāđ‰āļ­āļīāļ™āļžāļļāļ•/āđ€āļ­āļēāļ•āđŒāļžāļļāļ•āļ”āļĩāđ„āļ§āļ‹āđŒ
  • 15. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 15 3.2) āļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŠāļ§āļīāļ•āļŠāđŒ (Context Switch) 3.2) āļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŠāļ§āļīāļ•āļŠāđŒ (Context Switch)  āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāļ§āļīāļ•āļŠāđŒāđ„āļ›āļĒāļąāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļ„āļīāļ§āļ•āđˆāļ­āđ„āļ› āđ€āļĄāļ·āđˆāļ­āļ‹āļĩāļžāļĩāļĒāļđāļ—āļģāļēāļ‡āļēāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™āđ€āļŠāļĢāđ‡āļˆāđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒ āđāļĨāđ‰āļ§ ï€š āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļŠāļ§āļīāļ•āļŠāđŒāļˆāļ°āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™ ï€š āđ€āļ§āļĨāļēāļ—āļĩāđˆāđƒāļŠāđ‰āļ‚āļķāđ‰āļ™āļāļąāļšāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄ āļˆāļģāļē, āļˆāļģāļēāļ™āļ§āļ™āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ āđāļĨāļ°āļ„āļģāļēāļŠāļąāđˆāļ‡āļžāļīāđ€āļĻāļĐāđƒāļ™ āļĢāļ°āļšāļš ï€š āļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŠāļ§āļīāļ•āļŠāđŒāļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āļāļēāļĢāđ€āļžāļīāđˆāļĄ āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļ™āļŠāļ·āđˆāļ­ Thread
  • 16. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 16 āļ”āļ‡āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ (Context Switchin
  • 17. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 17 4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļˆāļ°āļāļĢāļ°āļ—āļģāļēāļœāđˆāļēāļ™ System Call “ ”āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆ (Parent Process)  āļ–āđ‰āļēāđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđƒāļ™āļ‚āļ“āļ°āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠ â€œ ”āļˆāļ°āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļ (Children Process)  āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāļ­āļēāļˆāļˆāļ°āđƒāļŠāđ‰āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļˆāļēāļāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļī āļāļēāļĢāļŦāļĢāļ·āļ­āļœāđˆāļēāļ™āļ—āļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆāļāđ‡āđ„āļ”āđ‰  āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆāļ­āļēāļˆāļˆāļ°āđāļšāđˆāļ‡āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒ āđ†
  • 18. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 18 4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ (āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ āļŦāļĢāļ·āļ­āļĢāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļ āđ€āļŠāļĢāđ‡āļˆāļāđˆāļ­āļ™āđāļĄāđˆāļˆāļķāļ‡āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ)  āđāļ­āđ‡āļ”āđ€āļ”āļĢāļŠ (āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāļŠāļģāļēāđ€āļ™āļēāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆ āļŦāļĢāļ·āļ­ āđ‚āļŦāļĨāļ”āđāļ­āđ‡āļ”āđ€āļ”āļĢāļŠāđƒāļŦāđ‰āļ•āļąāļ§āđ€āļ­āļ‡)
  • 19. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 19 PID āļŦāļĄāļēāļĒāđ€āļĨāļ‚ Process (Process ID) PPID āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ‚āļ­āļ‡ Process āļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļœāļđāđ‰ āļŠāļĢāđ‰āļēāļ‡ (Parent PID) PRI āļ„āđˆāļē Prority STAT āđāļŠāļ”āļ‡āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡ Process (Status) - D āļĢāļ­āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ I/O (uninterruptible sleep) - R āļ­āļĒāļđāđˆāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđƒāļ™
  • 20. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 20 4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ4. āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ”āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāđƒāļŠāđ‰āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļĄāļēāļāđ€āļāļīāļ™āļ—āļĩāđˆāļāļģāļēāļŦāļ™āļ” āđ„āļ§āđ‰  āđ„āļĄāđˆāļĄāļĩāļ„āļ§āļēāļĄāļˆāļģāļēāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļĨāļđāļāļ™āļąāđ‰ āļ™āļ­āļĩāļāđāļĨāđ‰āļ§ ï€š āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļĄāđˆāļŠāļīāđ‰āļ™āļŠāļļāļ”āđ„āļ›āđāļĨāđ‰āļ§ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļī āļāļēāļĢāļˆāļ°āđ„āļĄāđˆāļĒāļīāļ™āļĒāļ­āļĄāđƒāļŦāđ‰āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāđ‚āļ›āļĢāđ€āļ‹ āļŠāļĨāļđāļ ( “āļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ” â€āđ€āļ›āđ‡āļ™āļ‚āļąāđ‰āļ™ āđ† (Cascading
  • 21. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 21 5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™ (Cooperating Process) 5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™ (Cooperating Process)  āđ‚āļ›āļĢāđ€āļ‹āļŠāļˆāļ°āđ€āļ›āđ‡āļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™āļ–āđ‰āļē āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™āļĄāļĩāļœāļĨāļāļĢāļ°āļ—āļšāļŦāļĢāļ·āļ­āđ„āļ”āđ‰āļĢāļąāļšāļœāļĨāļ āļĢāļ°āļ—āļšāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ—āļĩāđˆāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļ­āļĒāļđāđˆāđƒāļ™ āļĢāļ°āļšāļšāļ™āļąāđ‰āļ™ ï€š āļ­āļēāļˆāļāļĨāđˆāļēāļ§āđ„āļ”āđ‰āļ§āđˆāļēāđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™āļˆāļ°āļĄāļĩ āļāļēāļĢāđāļŠāļĢāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāļāļąāļšāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđƒāļ™āļĢāļ°āļšāļš āđ‚āļ”āļĒāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļˆāļ°āļ•āđ‰āļ­āļ‡āđāļŠāļĢāđŒāļŦāļ™āđˆāļ§āļĒ āļ„āļ§āļēāļĄāļˆāļģāļēāđ„āļ§āđ‰āđƒāļŠāđ‰āļ‡āļēāļ™ āđ€āļ™āļ·āđ‰āļ­āļ—āļĩāđˆāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄ
  • 22. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 22 5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™ (Cooperating Process) 5. āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ·āđˆāļ­āļ›āļĢāļ°āļŠāļēāļ™ (Cooperating Process)  āđ€āļŦāļ•āļļāļ—āļĩāđˆāļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ›āļĢāļ°āļŠāļēāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāđāļŠāļĢāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āđˆāļēāļ§āļŠāļēāļĢ : āļœāļđāđ‰āđƒāļŠāđ‰āļŦāļĨāļēāļĒāļ„āļ™ āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āđƒāļ™āđ€āļ§āļĨāļēāļ™āļąāđ‰āļ™ ï€š āļāļēāļĢāđ€āļžāļīāđˆāļĄāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āđƒāļ™āļāļēāļĢāļ„āļģāļēāļ™āļ§āļ“ : āđ‚āļ”āļĒ āļāļēāļĢāđāļšāđˆāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ­āļ­āļāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒ āđ† āđāļĨāđ‰āļ§ āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļ‚āļ™āļēāļ™āļāļąāļ™āđ„āļ› ï€š āļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļ : āļœāļđāđ‰āđƒāļŠāđ‰āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļŦāļĨāļēāļĒ āļ­āļĒāđˆāļēāļ‡āđƒāļ™āđ€āļ§āļĨāļēāđ€āļ”āļĩāļĒāļ§āļāļąāļ™ ï€š āļāļĨāđ„āļāļ—āļĩāđˆāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļēāļĄāļēāļĢāļ–āļ›āļĢāļ°āļŠāļēāļ™ āļāļąāļ™āđ„āļ”āđ‰ āļ„āļ·āļ­ āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
  • 23. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 23 6. āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ (IPC) 6. āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ (IPC)  āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™ ï€š āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­ ï€š āļāļēāļĢāļˆāļąāļ”āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ  āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™
  • 24. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 24 6.1) āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™6.1) āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™ ï€š IPC āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļāļĨāđ„āļāđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļēāļĄāļēāļĢāļ– āļ•āļīāļ”āļ•āđˆāļ­āļ‹āļķāđˆāļ‡āļāļąāļ™āđāļĨāļ°āļāļąāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđ„āļ”āđ‰āđāļāđˆ āļĢāļ°āļšāļšāđāļĄāļŠāđ€āļŠāļˆ (Message system)  āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļ‚āļ­āļ‡āļĢāļ°āļšāļšāđāļĄāļŠāđ€āļŠāļˆāļ—āļĩāđˆ IPC āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļĄāļĩ āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 2 āļ›āļĢāļ°āļāļēāļĢāļ„āļ·āļ­ āļāļēāļĢāļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ (Send message) āđāļĨāļ°āļĢāļąāļšāļ‚āđ‰āļ­āļĄāļđāļĨ (Receive message)  āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ”āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļˆāļ° āļŠāđˆāļ‡āļ„āļģāļēāļĢāđ‰āļ­āļ‡āļ‚āļ­āđ„āļ›āļĒāļąāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ–āļđāļ āļĢāđ‰āļ­āļ‡āļ‚āļ­āļˆāļ°āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļąāđ‰āļ™āđ„āļ›āđƒāļŦāđ‰  āļ‚āļ™āļēāļ”āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļēāļˆāļˆāļ°āļĄāļĩāļ‚āļ™āļēāļ”āļ„āļ‡āļ—āļĩāđˆ āļŦāļĢāļ·āļ­āļ‚āļ™āļēāļ” āđ„āļĄāđˆāļ„āļ‡āļ—āļĩāđˆāļāđ‡āđ„āļ”āđ‰
  • 25. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 25 āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ—āļēāļ‡āļĨāļ­āļˆāļīāļāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ—āļēāļ‡āļĨāļ­āļˆāļīāļ ï€š āļˆāļ°āļŠāļĢāđ‰āļēāļ‡āļĨāļīāļ‡āļ„āđŒāļ­āļĒāđˆāļēāļ‡āđ„āļĢ ï€š āļĨāļīāļ‡āļ„āđŒāļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ™āļąāđ‰āļ™āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļšāđ‚āļ›āļĢāđ€āļ‹āļŠāļĄāļēāļāļ āļ§āđˆāļē 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļŦāļĢāļ·āļ­āđ„āļĄāđˆ  āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļˆāļ°āļĄāļĩāļāļĩāđˆāļĨāļīāļ‡āļ„āđŒ  āļ„āļ§āļēāļĄāļˆāļļāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāđ€āļ›āđ‡āļ™āđ€āļ—āđˆāļēāđ„āļĢ ï€š āļĨāļīāļ‡āļ„āđŒāļ™āļąāđ‰āļ™āļĄāļĩāļšāļąāļžāđ€āļŸāļ­āļĢāđŒāļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļēāļĄāļĩāļ‚āļ™āļēāļ”āļšāļąāļž āđ€āļŸāļ­āļĢāđŒāđ€āļ›āđ‡āļ™āđ€āļ—āđˆāļēāđ„āļĢ ï€š āļĨāļīāļ‡āļ„āđŒāđ€āļ›āđ‡āļ™āđāļšāļšāļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§(undirectional) āļŦāļĢāļ·āļ­āļŠāļ­āļ‡āļ—āļīāļĻāļ—āļēāļ‡(bidirectional)
  • 26. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 26 āļĨāļīāļ‡āļ„āđŒāđāļšāļšāļĨāļ­āļˆāļīāļāđāļĨāļ°āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āđƒāļ™ āļāļēāļĢāļĢāļąāļš-āļŠāđˆāļ‡āđāļĄāđ€āļŠāļˆ āļĨāļīāļ‡āļ„āđŒāđāļšāļšāļĨāļ­āļˆāļīāļāđāļĨāļ°āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļŠāļąāļ™āđƒāļ™ āļāļēāļĢāļĢāļąāļš-āļŠāđˆāļ‡āđāļĄāđ€āļŠāļˆ ï€š āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āđ€āļ›āđ‡āļ™āđāļšāļšāļ—āļēāļ‡āļ•āļĢāļ‡āļŦāļĢāļ·āļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ ï€š āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āđ€āļ›āđ‡āļ™āđāļšāļšāļŠāļĄāļĄāļēāļ•āļĢ āļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļŠāļĄāļĄāļēāļ•āļĢ ï€š āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āđ€āļ›āđ‡āļ™āđāļšāļšāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļŦāļĢāļ·āļ­āđƒāļŠāđ‰ āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđ€āļ‰āļžāļēāļ°āđāļšāļš ï€š āļāļēāļĢāļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āđāļšāļšāļŠāļģāļēāđ€āļ™āļē āļŦāļĢāļ·āļ­āļ­āđ‰āļēāļ‡āļ­āļīāļ‡ ï€š āđāļĄāļŠāđ€āļŠāļˆāļĄāļĩāļ‚āļ™āļēāļ”āļ„āļ‡āļ—āļĩāđˆ āļŦāļĢāļ·āļ­āđ„āļĄāđˆāļ„āļ‡āļ—āļĩāđˆ
  • 27. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 27 6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ•āļĢāļ‡ (Direct Communication) āđāļ•āđˆāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļāļąāļ™āļˆāļ°āļ•āđ‰āļ­āļ‡āļāļģāļēāļŦāļ™āļ”āļŠāļ·āđˆāļ­ āđ€āļ‰āļžāļēāļ°āļ—āļĩāđˆāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļ—āļąāđ‰āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ āļ•āđ‰āļ­āļ‡āļāļēāļĢāļĢāļąāļš āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļŠāđˆāļ‡ Send (B,message) āļˆāļ°āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āđāļĄāļŠ āđ€āļŠāļˆāđ„āļ›āļĒāļąāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ B Receive (A,message) āļˆāļ°āđ€āļ›āđ‡āļ™āļāļēāļĢāļĢāļąāļš āđāļĄāļŠāđ€āļŠāļˆāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠ A
  • 28. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 28 āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ•āļĢāļ‡ āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ•āļĢāļ‡ ï€š āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĨāļīāļ‡āļ„āđŒāļˆāļ°āđ€āļ›āđ‡āļ™āđāļšāļšāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ„āļđāđˆāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­ āđ‚āļ›āļĢāđ€āļ‹āļŠāļˆāļ°āļ—āļĢāļēāļšāļŦāļĄāļēāļĒāđ€āļĨāļ‚āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āļ—āļĩāđˆāļˆāļ°āļ•āļīāļ”āļ•āđˆāļ­āļ”āđ‰āļ§āļĒ ï€š āļĨāļīāļ‡āļ„āđŒāļŦāļ™āļķāđˆāļ‡ āđ† āļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāđ€āļ‰āļžāļēāļ° āđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ ï€š āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļ•āđˆāļĨāļ°āļ„āļđāđˆāļ™āļąāđ‰āļ™āļˆāļ°āļĄāļĩāđ€āļžāļĩāļĒāļ‡ āļĨāļīāļ‡āļ„āđŒāđ€āļ”āļĩāļĒāļ§āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ ï€š āļĨāļīāļ‡āļ„āđŒāļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđ„āļ”āđ‰āļ—āļąāđ‰āļ‡āļ—āļīāļĻāļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§ āđāļĨāļ°āļŠāļ­āļ‡
  • 29. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 29 6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 6.2) āļ§āļīāļ˜āļĩāļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ (Indirect Communication) āđāļ•āđˆāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ āļ•āđ‰āļ­āļ‡āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļˆāļ°āļ•āđ‰āļ­āļ‡āļ•āļīāļ”āļ•āđˆāļ­āļāļąāļ™āļœāđˆāļēāļ™āđ€āļĄāļĨ āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ(Mailbox) āļŦāļĢāļ·āļ­āļ­āļēāļˆāđ€āļĢāļĩāļĒāļāļ§āđˆāļē āđ€āļ›āđ‡āļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļœāđˆāļēāļ™āļžāļ­āļĢāđŒāļ• (Port) āđāļ•āđˆāļĨāļ° āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļˆāļ°āļĄāļĩāļŦāļĄāļēāļĒāđ€āļĨāļ‚āđ„āļĄāđˆāļ‹āļģāđ‰āļēāļāļąāļšāđ€āļĄāļĨ āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļ­āļ·āđˆāļ™ Send(B,message) āđ€āļ›āđ‡āļ™āļāļēāļĢāļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆ
  • 30. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 30 āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡āļĨāļīāļ‡āļ„āđŒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩāļāļēāļĢ āļ•āļīāļ”āļ•āđˆāļ­āļ—āļēāļ‡āļ­āđ‰āļ­āļĄ ï€š āļˆāļ°āļĄāļĩāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āļĨāļīāļ‡āļ„āđŒāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩ āļāļēāļĢāđāļŠāļĢāđŒāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ ï€š āļĨāļīāļ‡āļ„āđŒāļŦāļ™āļķāđˆāļ‡āđ† āļ­āļēāļˆāļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ āļĄāļēāļāļāļ§āđˆāļēāļŠāļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđ„āļ”āđ‰  āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļ•āđˆāļĨāļ°āļ„āļđāđˆāļ™āļąāđ‰āļ™āļ­āļēāļˆāļˆāļ°āļĄāļĩ āļŦāļĨāļēāļĒāļĨāļīāļ‡āļ„āđŒāļ•āđˆāļēāļ‡āļāļąāļ™āđ„āļ”āđ‰ āđāļ•āđˆāļĨāļ°āļĨāļīāļ‡āļ„āđŒāļˆāļ°āļĄāļĩ āđ€āļžāļĩāļĒāļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđ€āļ”āļĩāļĒāļ§ ï€š āļāļēāļĢāļĨāļīāļ‡āļ„āđŒāļ­āļēāļˆāļˆāļ°āđ€āļ›āđ‡āļ™āļ—āļīāļĻāļ—āļēāļ‡āđ€āļ”āļĩāļĒāļ§ āļŦāļĢāļ·āļ­ āļŠāļ­āļ‡āļ—āļīāļĻāļ—āļēāļ‡āļāđ‡āđ„āļ”āđ‰
  • 31. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 31 āļāļĨāđ„āļāļ—āļĩāđˆāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļ­āļĄāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠ āļˆāļąāļ”āļāļēāļĢāļāļąāļšāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ āļāļĨāđ„āļāļ—āļĩāđˆāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļ­āļĄāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠ āļˆāļąāļ”āļāļēāļĢāļāļąāļšāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ  āļŠāļĢāđ‰āļēāļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđƒāļŦāļĄāđˆ  āļŠāđˆāļ‡āđāļĨāļ°āļĢāļąāļšāđāļĄāļŠāđ€āļŠāļˆāļœāđˆāļēāļ™āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ  āļ—āļģāļēāļĨāļēāļĒāđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ
  • 32. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 32 āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ  āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđāļšāļšāļ„āļīāļ§ āļ‚āđ‰āļ­āļĄāļđāļĨ āđ€āļ‚āđ‰āļēāđ€āļĄāļĨ āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ āļ‚āđ‰āļ­āļĄāļđāļĨ āļ­āļ­āļ āđ€āļĄāļĨāļĨāđŒāļšāđ‡ āļ­āļāļ‹āđŒFIFO (First In First Out)
  • 33. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 33 āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ  āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđāļšāļšāđ„āļ›āļ›āđŒ āļ‚āđ‰āļ­āļĄāļđāļĨ āđ€āļ‚āđ‰āļēāđ€āļĄāļĨ āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ āļ‚āđ‰āļ­āļĄāļđāļĨ āļ­āļ­āļ āđ€āļĄāļĨāļĨāđŒāļšāđ‡ āļ­āļāļ‹āđŒFIFO (First In First Out)
  • 34. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 34 āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ  āđ€āļĄāļĨāļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒāđāļšāļšāļŠāđāļ•āđ‡āļ āļ‚āđ‰āļ­āļĄāļđāļĨ āđ€āļ‚āđ‰āļēāđ€āļĄāļĨ āļĨāđŒāļšāđ‡āļ­āļāļ‹āđŒ āļ‚āđ‰āļ­āļĄāļđāļĨ āļ­āļ­āļ āđ€āļĄāļĨāļĨāđŒāļšāđ‡ āļ­āļāļ‹āđŒ FILO (First In Last Out)
  • 35. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 35 6.3 āļāļēāļĢāļˆāļąāļ”āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ (Buffer)6.3 āļāļēāļĢāļˆāļąāļ”āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ (Buffer) āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ āļ„āļ·āļ­āļ„āļīāļ§āļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆāļ—āļĩāđˆāļœāļđāļāļ•āļīāļ”āļāļąāļš āļĨāļīāļ‡āļ„āđŒ āđ‚āļ”āļĒāļžāļ·āđ‰āļ™āļāļēāļ™āļˆāļ°āļĄāļĩāļ„āļ§āļēāļĄāļˆāļļ 3 āļĨāļąāļāļĐāļ“āļ° ï€š āļ„āļ§āļēāļĄāļˆāļļāļĻāļđāļ™āļĒāđŒ (Zero Capacity) : āđƒāļ™ āļĨāļīāļ‡āļ„āđŒāļˆāļ°āđ„āļĄāđˆāļĄāļĩāđāļĄāļŠāđ€āļŠāļˆāļĢāļ­ āļ­āļĒāļđāđˆāđ€āļĨāļĒ ï€š āļ„āļ§āļēāļĄāļˆāļļāđāļšāļšāļĄāļĩāļ‚āļ­āļšāđ€āļ‚āļ• (Bounded capacity) : āļˆāļģāļēāļ™āļ§āļ™āļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļ™āļĨāļīāļ‡āļ„āđŒ āļˆāļ°āļĄāļĩāđ„āļ”āđ‰āđ„āļĄāđˆāđ€āļāļīāļ™āļˆāļģāļēāļ™āļ§āļ™āļ—āļĩāđˆāļāļģāļēāļŦāļ™āļ” ï€š āļ„āļ§āļēāļĄāļˆāļļāđ„āļĄāđˆāļĄāļĩāļ‚āļ­āļšāđ€āļ‚āļ• (Unbounded capacity) : āļˆāļģāļēāļ™āļ§āļ™āļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļ™āļĨāļīāļ‡āļ„āđŒ
  • 36. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 36 āļāļēāļĢ Asynchronous āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ P āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠ Q āļāļēāļĢ Asynchronous āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ P āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠ Q Process Pâ€Ķ send(Q,message); receive(Q,message); Process Qâ€Ķ receive(P,message); send(P,”Acknowledgment”)
  • 37. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 37 6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­ āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ 6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­ āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ”āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āļ–āđ‰āļēāļœāļđāđ‰āļĢāļąāļšāļŦāļĢāļ·āļ­āļœāļđāđ‰āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāļŠāļīāđ‰āļ™āļŠāļļāļ”āļāđˆāļ­āļ™ āđāļĄāļŠāđ€āļŠāļˆāļˆāļ°āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ āļ—āļģāļēāđƒāļŦāđ‰āđāļĄāļŠāđ€āļŠāļˆāļ–āļđāļ āļāļģāļēāļˆāļąāļ”āļ—āļģāļēāđƒāļŦāđ‰āļœāļđāđ‰āļĢāļąāļšāđ„āļĄāđˆāđ„āļ”āđ‰āļĢāļąāļšāđāļĄāļŠāđ€āļŠāļˆ āļŦāļĢāļ·āļ­ āļœāļđāđ‰āļŠāđˆāļ‡āđ„āļĄāđˆāđ„āļ”āđ‰āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆ
  • 38. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 38 6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­ āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ 6.4 āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āļĒāļāđ€āļ§āđ‰āļ™āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­ āļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļēāļĢāļŠāļđāļāļŦāļēāļĒāļ‚āļ­āļ‡āđāļĄāļŠāđ€āļŠāļˆ āđāļĄāļŠāđ€āļŠāļˆāļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠ P āļ—āļĩāđˆāļŠāđˆāļ‡āđ„āļ›āļĒāļąāļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ Q āļ­āļēāļˆāļˆāļ°āļŠāļđāļāļŦāļēāļĒāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ—āļēāļ‡āļ‚āļ­āļ‡ āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļāđ‡āđ„āļ”āđ‰ āļ‹āļķāđˆāļ‡āļ­āļēāļˆāļˆāļ°āđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ” āļ”āđ‰āļēāļ™āļŪāļēāļĢāđŒāļ”āđāļ§āļĢāđŒāļŦāļĢāļ·āļ­āļŠāļēāļĒāļŠāļ·āđˆāļ­āļŠāļēāļĢ āļĄāļĩ 3 āļ§āļīāļ˜āļĩāļžāļ·āđ‰āļ™ āļāļēāļ™āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ ï€š OS āļĄāļĩāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢ āļŠāļđāļāļŦāļēāļĒāļ™āļĩāđ‰āđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļŦāļĄāđˆ  āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāļĄāļĩāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļš āđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāļŠāļđāļāļŦāļēāļĒāđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡āđāļĄāļŠāđ€āļŠāļˆāđƒāļŦāļĄāđˆ
  • 39. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 39 7. āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠ (Process Synchronization) 7. āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠ (Process Synchronization)  āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļ­āļīāļŠāļĢāļ°āļāļąāļ™āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Asynchronous  āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļ™āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Synchronous  āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒāđ‚āļ›āļĢāđ€āļ‹āļŠāļŦāļĢāļ·āļ­āļāļēāļĢāđ€āļ‚āđ‰āļē āļˆāļąāļ‡āļŦāļ§āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļēāļĢ āļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄ āđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļ™ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ
  • 41. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 41 X-->X+10 10 20 10 X-->X-10 A B X=10 X=20 X=20 X=10 āđ‚āļ›āļĢāđ€āļ‹āļŠ A āļ—āļģāļēāļ‡āļēāļ™āļāđˆāļ­āļ™ āđ‚āļ›āļĢāđ€āļ‹āļŠ B X-->X-10 10 0 10 X-->X+10 B A X=10 X=0 X=0 X=10 āđ‚āļ›āļĢāđ€āļ‹āļŠ B āļ—āļģāļēāļ‡āļēāļ™āļāđˆāļ­āļ™ āđ‚āļ›āļĢāđ€āļ‹āļŠ A
  • 42. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 42 X-->X+10 20 āļŦāļĢāļ·āļ­ 0 10 X-->X-10A B X=10 X=0 X=20 X=10 āđ‚āļ›āļĢāđ€āļ‹āļŠ A āđāļĨāļ°āđ‚āļ›āļĢāđ€āļ‹āļŠ B āļ—āļģāļēāļ‡āļēāļ™āļžāļĢāđ‰āļ­āļĄāļāļąāļ™
  • 43. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 43 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  Race Condition : āļŠāļ āļēāļ§āļ°āļ—āļĩāđˆāđ€āļāļīāļ”āļ‚āđ‰āļ­āļœāļīāļ” āļžāļĨāļēāļ”āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļģāļēāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļ™āļ‹āļķāđˆāļ‡āļĄāļĩ āļāļēāļĢāđƒāļŠāļąāļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļĢāđˆāļ§āļĄāļāļąāļ™ ï€š Mutual Exclusion : āđ€āļ›āđ‡āļ™āļāļēāļĢāļāļĩāļ”āļāļąāļ™āđ„āļĄāđˆ āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđ€āļ‚āđ‰āļēāļĄāļēāđƒāļŠāđ‰ āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ āļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ„āļĢāļ­āļšāļ„āļĢāļ­āļ‡āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļ™āļąāđ‰āļ™āļ­āļĒāļđāđˆ āļšāļĢāļīāđ€āļ§āļ“āļŦāļĢāļ·āļ­āļŠāđˆāļ§āļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļĩāđˆāđ‚āļ›āļĢāđ€āļ‹āļŠ āļ„āļĢāļ­āļšāļ„āļĢāļ­āļ‡āļĢāļĩāļ‹āļ­āļĢāđŒāļŠāļ™āļąāđ‰āļ™āļ­āļĒāļđāđˆ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Critical Region āļŦāļĢāļ·āļ­ Critical Section 
  • 44. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 44 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ‚āļ­āļ‡ Mutual Exclusion  āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆāđƒāļ™ Critical Region āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ ï€š āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāļŠāļĄāļĄāļļāļ•āļīāļāļēāļ™āđāļĨāļ°āļ‚āđ‰āļ­āļˆāļģāļēāļāļąāļ”āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§ āđāļĨāļ°āļˆāļģāļēāļ™āļ§āļ™āļ‹āļĩāļžāļĩāļĒāļđāļĄāļēāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡ ï€š āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ” āđ† āļ āļēāļĒāļ™āļ­āļ Critical Region āļ—āļĩāđˆāļšāļĨāđ‡āļ­āļāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹ āļŠāļ­āļ·āđˆāļ™ ï€š āļ•āđ‰āļ­āļ‡āđ„āļĄāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ”āļ—āļĩāđˆāļĢāļ­āļāļēāļĢāđ€āļ‚āđ‰āļē Critical
  • 46. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 46 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  Mutual Exclusion with busy waiting : āļŠāļ āļēāļ§āļ°āļ—āļĩāđˆāđ‚āļ›āļĢāđ€āļ‹āļŠāļĢāļ­ āļ­āļĒāļđāđˆāļ™āļ­āļ CR āđāļ•āđˆāļĒāļąāļ‡āļĄāļĩāļāļēāļĢāļ„āļĢāļ­āļšāļ„āļĢāļ­āļ‡āđ€āļ§āļĨāļēāļ‹āļĩāļžāļĩāļĒāļđāļ­āļĒāļđāđˆ āļ—āļģāļēāđƒāļŦāđ‰āđ€āļŠāļĩāļĒāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāđ‚āļ”āļĒāđ„āļĄāđˆāđ„āļ”āđ‰āļ‡āļēāļ™āļ­āļ°āđ„āļĢāđ€āļĨāļĒ ï€š āļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļē busy waiting āļ—āļģāļēāđ„āļ”āđ‰āđ‚āļ”āļĒ â€œ ”āļāļēāļĢ āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ āļ‹āļķāđˆāļ‡āļĄāļĩ 2 āļ›āļĢāļ°āđ€āļ āļ—āļ„āļ·āļ­ ï€š Clock interrupt : āļšāļ­āļāļ‹āļĩāļžāļĩāļĒāļđāļ§āđˆāļēāļĢāļąāļ™ āļ„āļĢāļąāļšāđ€āļ§āļĨāļēāļ„āļ§āļąāļ™āļ•āļąāļĄāđāļĨāđ‰āļ§ ï€š I/O interrupt : āļšāļ­āļāļ‹āļĩāļžāļĩāļĒāļđāļ§āđˆāļēāđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ āļ–āļđāļāļšāļĨāđ‡āļ­āļāļ™āļąāđ‰āļ™āļ—āļģāļēāļ‡āļēāļ™āļāļąāļš I/O āđ€āļŠāļĢāđ‡āļˆ
  • 47. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 47 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  āļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļē busy waiting āļĄāļĩ 5 āļ§āļīāļ˜āļĩ āļ„āļ·āļ­ ï€š Disable Interrupt  Lock Variable  Strict Alternation  Peterson’s Solution  TSL Instruction
  • 48. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 48 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  Disable Interrupt  āđ€āļ›āđ‡āļ™āļāļēāļĢāļĒāļāđ€āļĨāļīāļāļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ  āļ‹āļĩāļžāļĩāļĒāļđāļ—āļģāļēāļ‡āļēāļ™āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ•āđˆāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āđ‚āļ”āļĒāđ„āļĄāđˆāļŠāļ™āđƒāļˆ āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ  āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ CR āđ„āļ”āđ‰āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒāļˆāļ™āđ€āļŠāļĢāđ‡āļˆ āđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒ āđ„āļĄāđˆāđ€āļāļīāļ” Race Condition  āđ€āļĄāļ·āđˆāļ­āļ­āļ­āļāļˆāļēāļ CR āđ„āļ›āđāļĨāđ‰āļ§ āļ‹āļĩāļžāļĩāļĒāļđāļˆāļķāļ‡āļŠāļ™āđƒāļˆāļ­āļīāļ™ āđ€āļ—āļ­āļĢāđŒāļĢāļąāļžāļ•āđŒ  āđƒāļŠāđˆāļ„āļģāļēāļŠāļąāđˆāļ‡ Disable Interrupt āđ„āļ§āđ‰āļ•āļ­āļ™āļ•āđ‰āļ™ āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļāđˆāļ­āļ™āđ€āļ‚āđ‰āļē CR
  • 49. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 49 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ‚āļ­āļ‡āļ§āļīāļ˜āļĩ Disable Interrupt  āļ–āđ‰āļēāļĨāļ·āļĄāđƒāļŠāđˆ Able Interrupt āļˆāļ°āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢ āđ€āļ‹āļŠāļ™āļąāđ‰āļ™āļĢāļąāļ™āļĢāļ§āļ”āđ€āļ”āļĩāļĒāļ§āļˆāļš ï€š āđ„āļĄāđˆāļ™āļīāļĒāļĄāđƒāļ™ User Mode āđāļ•āđˆāļ™āļīāļĒāļĄāđƒāļ™ Kernel Mode  āļ„āļģāļēāļŠāļąāđˆāļ‡ Disable Interrupt āļĄāļĩāļœāļĨāđ€āļ‰āļžāļēāļ°
  • 50. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 50 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  Lock Variable  āđƒāļŠāđ‰āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒāđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāđ€āļāļīāļ” Race Condition  āļāļģāļēāļŦāļ™āļ”āļ•āļąāļ§āđāļ›āļĢāđ€āļžāļ·āđˆāļ­āđ€āļāđ‡āļšāļŠāļ āļēāļ§āļ°āļ§āđˆāļēāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹ āļŠāļ­āļĒāļđāđˆāđƒāļ™ CR āļŦāļĢāļ·āļ­āđ„āļĄāđˆ āđ‚āļ”āļĒ 0 āđāļŠāļ”āļ‡āļ§āđˆāļēāđ„āļĄāđˆāļĄāļĩ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆ āļŠāđˆāļ§āļ™ 1 āđāļŠāļ”āļ‡āļ§āđˆāļēāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆ  āļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāđ€āļāđ‡āļšāļŠāļ āļēāļ§āļ°āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāđāļšāļš āđ‚āļāļĨāļšāļ­āļĨ āļ—āļĩāđˆāļ—āļļāļāđ‚āļ›āļĢāđ€āļ‹āļŠāļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļ āđƒāļŠāđ‰āđ„āļ”āđ‰ āļ—āļģāļēāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļ āļēāļ§āļ° āļāđˆāļ­āļ™āđ€āļ‚āđ‰āļē CR āđ„āļ”āđ‰
  • 51. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 51 Lock Variable IF Lock = 0 Then Set Lock = 1 āđ€āļĢāļīāđˆāļĄāđ€āļ‚āđ‰āļē Critical Region Else Wait until Lock = 0 Critical Region Set Lock = 0
  • 52. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 52 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  Strict Alternation  āđƒāļŠāđ‰āļāļēāļĢāļŠāļĨāļąāļšāļāļēāļĢāđ€āļ‚āđ‰āļē CR āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š āļāļģāļēāļŦāļ™āļ”āļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆāļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļŠāļĨāļąāļšāļāļąāļ™ āđ€āļ‚āđ‰āļē CR āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ āđ€āļĢāļ·āđˆāļ­āļĒāđ„āļ›āļˆāļ™āļāļ§āđˆāļēāļ‡āļēāļ™ āļˆāļ°āđ€āļŠāļĢāđ‡āļˆ ï€š āļ‚āđ‰āļ­āđ€āļŠāļĩāļĒ :  āđƒāļŠāđ‰āđ„āļ”āđ‰āđ€āļ‰āļžāļēāļ° āđ‚āļ›āļĢāđ€āļ‹āļŠ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ ï€š āđ€āļāļīāļ” busy waiting āļ‹āļķāđˆāļ‡āļĒāļąāļ‡āļ„āļ‡āđƒāļŠāđ‰āļ‹āļĩāļžāļĩāļĒāļđāļ­āļĒāļđāđˆ āđāļ•āđˆāđ„āļĄāđˆāđ€āļāļīāļ”āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ
  • 53. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 53 Strict Alternation While (TRUE) { While (turn !=0) /*loop*/ Critical_Region(); turn = 1; noncritical_region(); } While (TRUE) { While (turn !=1) /*loo Critical_Region(); turn = 0; noncritical_region(); } Process A Process B
  • 54. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 54 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  Peterson’s Solution  āļĄāļĩāļāļēāļĢāđāļŠāļĢāđŒāļ•āļąāļ§āđāļ›āļĢ (turn) āđāļĨāļ°āļĄāļĩ 2 āđ‚āļ›āļĢāļ‹āļĩāđ€āļ”āļ­āļĢāđŒ (enter_region āđāļĨāļ° leave_region) āđ‚āļ”āļĒ āđƒāļŠāđ‰āļŦāļĄāļēāļĒāđ€āļĨāļ‚āđ‚āļ›āļĢāđ€āļ‹āļŠāļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡āđ€āļ›āđ‡āļ™ āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ  āļāļēāļĢāđ€āļĢāļĩāļĒāļ enter_region āļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļĢāļ­ āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļ›āļĨāļ­āļ”āļ āļąāļĒāđƒāļ™āļāļēāļĢāđ€āļ‚āđ‰āļē āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰āļ•āļąāļ§āđāļ›āļĢ āļ—āļĩāđˆāđāļŠāļĢāđŒāļ™āļĩāđ‰āđ€āļŠāļĢāđ‡āļˆāđāļĨāđ‰āļ§ āļˆāļ°āđ€āļĢāļĩāļĒāļ leave_region āđ€āļžāļ·āđˆāļ­āđāļˆāđ‰āļ‡āđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļ—āļĢāļēāļšāļ§āđˆāļēāļ—āļģāļēāļ‡āļēāļ™āđ€āļŠāļĢāđ‡āļˆ āđāļĨāđ‰āļ§ āđāļĨāļ°āļĒāļ­āļĄāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđ€āļ‚āđ‰āļēāđ„āļ”āđ‰  āđ€āļŠāđˆāļ™ āļ–āđ‰āļēāđ‚āļ›āļĢāđ€āļ‹āļŠ 0 āđ€āļ‚āđ‰āļē CR āļˆāļ°āļāļģāļēāļŦāļ™āļ”āļ„āđˆāļē
  • 55. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 55 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  Peterson’s Solution  āļ–āđ‰āļēāđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āđ€āļĢāļĩāļĒāļ enter_region āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļˆāļ°āđ€āļāđ‡āļšāļ„āđˆāļēāļĨāļ‡āđƒāļ™ turn āđ€āļĄāļ·āđˆāļ­āđ€āļāđ‡āļšāļ„āđˆāļēāđ€āļŠāļĢāđ‡āļˆāļ„āđˆāļēāđ€āļāđˆāļēāļˆāļ°āļŦāļēāļĒāđ„āļ› ï€š āđ€āļŠāđˆāļ™ āļ–āđ‰āļēāđ‚āļ›āļĢāđ€āļ‹āļŠ 1 āđ€āļāđ‡āļšāļ„āđˆāļēāļŦāļĨāļąāļ‡āļŠāļļāļ” āļ„āđˆāļē turn=1 āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļĄāļēāļ–āļķāļ‡ while āđ‚āļ›āļĢāđ€āļ‹āļŠ 0 āļˆāļ°āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ 0 āļ„āļĢāļąāđ‰āļ‡ āđāļĨāļ°āđ€āļ‚āđ‰āļē CR āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāđ‚āļ›āļĢāđ€āļ‹āļŠ 1 āļĒāļąāļ‡āđ„āļĄāđˆ āđ€āļ‚āđ‰āļē CR āļˆāļ°āļĢāļ­āļˆāļ™āļāļ§āđˆāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ 0 āļ­āļ­āļ āļˆāļēāļ CR
  • 56. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 56 Peterson’s Solution Int tern; Int interested[N]; /*āļāļģāļēāļŦāļ™āļ”āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ—āļļāļ āļ„āđˆāļēāđ€āļ›āđ‡āļ™ 0 (False) */ Void enter_region(int process); /* process āđ€āļ›āđ‡āļ™ 0 āļŦāļĢāļ·āļ­ 1 */ { int other; /* āļˆāļģāļēāļ™āļ§āļ™ process āļ­āļ·āđˆāļ™ */ other = 1 – other /* āļ„āđˆāļēāļ•āļĢāļ‡ āļ‚āđ‰āļēāļĄāļ‚āļ­āļ‡ process */ interested[process] = True;
  • 57. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 57 Peterson’s Solution (āļ•āđˆāļ­) Void leave_region(int process); { interested[process] = False; }
  • 58. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 58 Peterson’s Solution (Version 2)enter_region(int i) { while(true) { flag[i] =true; /*process i use CR turn = j; while(flag[j] && turn==j) } } leave_region(int i) { flag[i] = false; /* process i move o from CR */ }
  • 60. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 60 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  TSL Instruction (Test Set Lock Instruction)  āļŠāđˆāļ§āļĒāđāļāđ‰āļ›āļąāļāļŦāļē Lock Variable āđ‚āļ”āļĒāļ—āļģāļē Test Set Lock āđƒāļ™ āļ‚āļąāđ‰āļ™āļ•āļ­āļ™āđ€āļ”āļĩāļĒāļ§āļāļąāļ™ ï€š āļ­āđˆāļēāļ™āļ„āđˆāļēāļˆāļēāļāļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļĄāļēāđ€āļāđ‡āļšāđƒāļ™āļĢāļĩāļˆāļīāļŠ āđ€āļ•āļ­āļĢāđŒ āđāļĨāđ‰āļ§ Set āļ„āđˆāļēāđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāđ€āļ›āđ‡āļ™ 1  āļāļēāļĢāļ­āđˆāļēāļ™āđāļĨāļ°āļāļēāļĢāđ€āļāđ‡āļšāļ„āđˆāļēāđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļē āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļŦāļ™āđˆāļ§āļĒ āļ„āļ§āļēāļĄāļˆāļģāļēāļ•āļĢāļ‡āļ™āļąāđ‰āļ™āđ„āļ”āđ‰āļˆāļ™āļāļ§āđˆāļēāļ„āļģāļēāļŠāļąāđˆāļ‡āļˆāļ°āđ€āļŠāļĢāđ‡āļˆāļŠāļīāđ‰āļ™ ï€š āļ‹āļĩāļžāļĩāļĒāļđāđƒāļŠāđ‰ TSL āđ€āļžāļ·āđˆāļ­āļĨāđ‡āļ­āļāđ„āļĄāđˆāđƒāļŦāđ‰āļ‹āļĩāļžāļĩāļĒāļđāļ­āļ·āđˆāļ™āđƒāļŠāđ‰
  • 61. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 61 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting  TSL Instruction (Test Set Lock Instruction)  āļāļēāļĢāđƒāļŠāđ‰āļ„āļģāļēāļŠāļąāđˆāļ‡ TSL āļˆāļ°āļ•āđ‰āļ­āļ‡āđāļŠāļĢāđŒāļ•āļąāļ§āđāļ›āļĢ Lock āđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļ—āļĩāđˆāđāļŠāļĢāđŒ  āđ€āļĄāļ·āđˆāļ­āļ•āļąāļ§āđāļ›āļĢ Lock āļĄāļĩāļāļēāļĢāļ„āđˆāļēāđ€āļ›āđ‡āļ™ 0 āđ‚āļ›āļĢāđ€āļ‹ āļŠāļ­āļ·āđˆāļ™āļˆāļ°āđ€āļ‹āđ‡āļ•āđƒāļŦāđ‰āđ€āļ›āđ‡āļ™ 1 āđ€āļžāļ·āđˆāļ­āļˆāļ°āđƒāļŠāđ‰āļ„āļģāļēāļŠāļąāđˆāļ‡ TSL āđāļĨāđ‰āļ§āļ—āļģāļēāļāļēāļĢāļ­āđˆāļēāļ™āļŦāļĢāļ·āļ­āđ€āļ‚āļĩāļĒāļ™āļŦāļ™āđˆāļ§āļĒ āļ„āļ§āļēāļĄāļˆāļģāļēāļ—āļĩāđˆāđāļŠāļĢāđŒ āđ€āļĄāļ·āđˆāļ­āļ—āļģāļēāļ‡āļēāļ™āđ€āļŠāļĢāđ‡āļˆāļˆāļ°āđ€āļ›āļĨāļĩāđˆāļĒāļ™ āļ„āđˆāļēāđ€āļ›āđ‡āļ™ 0 āđ€āļŦāļĄāļ·āļ­āļ™āđ€āļ”āļīāļĄ āđ‚āļ”āļĒāđƒāļŠāđ‰āļ„āļģāļēāļŠāļąāđˆāļ‡ Move
  • 62. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 62 Mutual Exclusion with busy waiting Mutual Exclusion with busy waiting TSL Instruction (Test Set Lock Instruction)  āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāļ•āđ‰āļ­āļ‡āļāļēāļĢāđ€āļ‚āđ‰āļē CR āļˆāļ°āđ€āļĢāļĩāļĒāļ enter_region āđāļĨāđ‰āļ§āļāđ‡āļ­āļ›āļ›āļĩāđ‰āļ„āđˆāļēāđ€āļ”āļīāļĄāļ‚āļ­āļ‡ Lock āđ„āļ›āđ„āļ§āđ‰āļ—āļĩāđˆāļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ āđāļĨāđ‰āļ§āđ€āļ‹āđ‡āļ• Lock=1  āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļ„āđˆāļēāđ€āļ”āļīāļĄāļāļąāļš 0 āļ–āđ‰āļēāđ„āļĄāđˆāđƒāļŠāđˆ āļ„āđˆāļē Lock=1 āđāļĨāđ‰āļ§āļāļĨāļąāļšāđ„āļ›āļˆāļļāļ”āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļš āļ­āļĩāļāļ„āļĢāļąāđ‰āļ‡ ï€š āļˆāļ™āļāļĢāļ°āļ—āļąāđˆāļ‡āđ€āļ›āđ‡āļ™ 0 (āđ€āļĄāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‚āđ‰āļē CR āđ€āļĢāļĩāļĒāļšāļĢāđ‰āļ­āļĒāđāļĨāđ‰āļ§) āļĢāļđāļ—āļĩāļ™āļĒāđˆāļ­āļĒāļˆāļ°āđƒāļŦāđ‰āļ„āđˆāļē Lock=1 āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļāļēāļĢāđ€āļ„āļĨāļĩāļĒāļĢāđŒāļ„āđˆāļēāļ—āļģāļēāđ„āļ”āđ‰āđ‚āļ”āļĒāđƒāļŦāđ‰āļ„āđˆāļē 0 āļāļąāļš
  • 63. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 63 TSL Instruction (Test Set Lock Instruction)Enter_region: TSL RX, LOCK / copy āļ„āđˆāļēāđ€āļ”āļīāļĄāļ‚āļ­āļ‡ LOCK āđ„āļ›āđ€āļāđ‡āļšāđ„āļ§āđ‰āļ—āļĩāđˆ register āđāļĨāđ‰āļ§āđ€āļ‹āđ‡āļ•āļ„āđˆāļē LOCK āđ€āļ›āđ‡āļ™ 1 CMP RX, #0 / āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļ„āđˆāļēāđ€āļ”āļīāļĄāļāļąāļš 0 JNEEnter_region / āļ–āđ‰āļēāđ„āļĄāđˆāđƒāļŠāđˆ 0 āļˆāļ°āļāļĨāļąāļšāđ„āļ›āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™ āđ€āļžāļ·āđˆāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ­āļĩāļāļ„āļĢāļąāđ‰āļ‡ RET / Return āđ„āļ›āļĒāļąāļ‡āļœāļđāđ‰āđ€āļĢāļĩāļĒāļ Leave_region: MOVE LOCK, #0 / āđ€āļāđ‡āļšāļ„āđˆāļē 0 āđƒāļ™ LOCK RET / Return āđ„āļ›āļĒāļąāļ‡āļœāļđāđ‰āđ€āļĢāļĩāļĒāļ
  • 64. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 64 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  Sleep and Wakeup  āļāļēāļĢāļ—āļĩāđˆāļĄāļĩāđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļĒāļđāđˆāđƒāļ™ CR āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļĒāļąāļ‡ āđ„āļĄāđˆāļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđ€āļ‚āđ‰āļē CR āļāđ‡āļ•āđ‰āļ­āļ‡āļĢāļ­āļˆāļ™āļāļ§āđˆāļē āđ‚āļ›āļĢāđ€āļ‹āļŠāļ™āļąāđ‰āļ™āļˆāļ°āļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ ï€š āđāļ•āđˆāļšāļēāļ‡āļ„āļĢāļąāđ‰āļ‡āļŠāļīāļ—āļ˜āđŒāļāļēāļĢāđ€āļ‚āđ‰āļē CR āđ„āļĄāđˆāđ€āļ—āđˆāļēāļāļąāļ™ āļ—āļģāļēāđƒāļŦāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāļŠāļđāļ‡āļāļ§āđˆāļēāđ„āļ”āđ‰āđ€āļ‚āđ‰āļēāļāđˆāļ­āļ™ (āļ–āļķāļ‡āđāļĄāđ‰āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āļˆāļ°āļĄāļēāļāđˆāļ­āļ™āļāđ‡āļ•āļēāļĄ)  āļ™āđˆāļēāļˆāļ°āđƒāļŠāđ‰āļāļēāļĢāļšāļĨāđ‡āļ­āļāđāļ—āļ™āļāļēāļĢāļŦāļĒāļļāļ”āļĢāļ­āđ€āļžāļ·āđˆāļ­ āđ€āļ‚āđ‰āļē CR  āļāļēāļĢāļšāļĨāđ‡āļ­āļāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ„āļ·āļ­ Sleep and
  • 65. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 65 āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ  Sleep and Wakeup  Sleep āđ€āļ›āđ‡āļ™ system call āđ€āļžāļ·āđˆāļ­āļšāļĨāđ‡āļ­āļāđƒāļŦāđ‰ āđ‚āļ›āļĢāđ€āļ‹āļŠāļŦāļĒāļļāļ”āļ—āļģāļēāļ‡āļēāļ™ āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļĄāļĩāđ‚āļ›āļĢāđ€āļ‹ āļŠāļ­āļ·āđˆāļ™āļĄāļēāļ›āļĨāļļāļ ï€š Wakeup āđ€āļ›āđ‡āļ™ system call āļ—āļĩāđˆāļ›āļĨāļļāļāđƒāļŦāđ‰ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļģāļēāļ‡āļēāļ™āļ•āđˆāļ­ ï€š āļ—āļąāđ‰āļ‡ Sleep āđāļĨāļ° wakeup āļ—āļģāļēāļ‡āļēāļ™āļŠāļĨāļąāļš āļāļąāļ™ āļˆāļķāļ‡āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāđƒāļŠāđ‰āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒāđāļĨāļ° āđāļ­āđ‡āļ”āđ€āļ”āļĢāļŠāļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģāļēāļ—āļĩāđˆāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ āļāļąāļ™
  • 66. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 66 āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ  Sleep and Wakeup  āļ›āļąāļāļŦāļē Producer-Consumer āđ€āļ›āđ‡āļ™ āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāļ‡āđˆāļēāļĒāļ—āļĩāđˆāļŠāļļāļ”āļ‚āļ­āļ‡ Sleep and Wakeup  āļ—āļąāđ‰āļ‡ 2 āļŠāđˆāļ§āļ™āļˆāļ°āđāļŠāļĢāđŒāļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļĢāđˆāļ§āļĄāļāļąāļ™āđƒāļ™ āļ‚āļ™āļēāļ”āļ—āļĩāđˆāļ„āļ‡āļ—āļĩāđˆ  āđƒāļ™āļ—āļĩāđˆāļ™āļĩāđ‰āļŠāļĄāļĄāļļāļ•āļīāļĄāļĩ Producer āđāļĨāļ° Consumer āļ­āļĒāđˆāļēāļ‡āļĨāļ° 1 āļ•āļąāļ§ ï€š Producer āļˆāļ°āļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļœāļĨāļīāļ•āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāđ‰āļ§āļ™āļģāļē āđ„āļ›āđ€āļāđ‡āļšāđ„āļ§āđ‰āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ āđāļĨāļ°āļˆāļ°āļŦāļĒāļļāļ”āļāļēāļĢāļœāļĨāļīāļ•
  • 67. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 67 āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ  Sleep and Wakeup  Producer āļˆāļ° Sleep āļ•āļąāļ§āđ€āļ­āļ‡āđ€āļĄāļ·āđˆāļ­ āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāđ€āļ•āđ‡āļĄ āđāļĨāļ°āļˆāļ° Wakeup āđƒāļŦāđ‰ Consumer āļ™āļģāļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ›āđƒāļŠāđ‰āđ€āļĄāļ·āđˆāļ­āļĄāļĩāļ‚āđ‰āļ­āļĄāļđāļĨ āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 1 āļŠāļļāļ”āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ  Consumer āļˆāļ° Sleep āļ•āļąāļ§āđ€āļ­āļ‡āđ€āļĄāļ·āđˆāļ­ āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļ§āđˆāļēāļ‡ āđāļĨāļ°āļˆāļ° Wakeup āđƒāļŦāđ‰ Producer āļœāļĨāļīāļ•āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ·āđˆāļ­āļ™āļģāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļ āđ„āļ›āđƒāļŠāđ‰ 1 āļŠāļļāļ” āļŦāļĢāļ·āļ­āļĄāļēāļāļāļ§āđˆāļē  āđ‚āļ”āļĒāļ—āļĩāđˆ Sleep āļˆāļ°āđ€āļ›āđ‡āļ™āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ–āļēāļ™āļ°āļˆāļēāļ
  • 68. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 68 āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢ āđ„āļ™āļ‹āđŒ  Sleep and Wakeup  āļ‚āļ™āļēāļ”āļ‚āļ­āļ‡āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒāļāļģāļēāļŦāļ™āļ”āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒ āļ•āļąāļ§āđāļ›āļĢ count (āļŠāļĄāļĄāļļāļ•āļīāđ€āļāđ‡āļšāđ„āļ”āđ‰ N āļŠāļļāļ”)  āļāđˆāļ­āļ™āļ—āļĩāđˆ Producer āļˆāļ°āļœāļĨāļīāļ• āļˆāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļš āļ§āđˆāļē count=N āļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļēāđ€āļ›āđ‡āļ™ N āļāđ‡āļˆāļ° sleep āļ•āļąāļ§āđ€āļ­āļ‡ āđāļ•āđˆāļ–āđ‰āļēāļĒāļąāļ‡āļ™āđ‰āļ­āļĒāļāļ§āđˆāļē N āļˆāļ° āļœāļĨāļīāļ•āđ€āļžāļīāđˆāļĄāļĨāļ‡āđƒāļ™āļšāļąāļŸāđ€āļŸāļ­āļĢāđŒ āđāļĨāđ‰āļ§āđ€āļžāļīāđˆāļĄāļ„āđˆāļēāļ•āļąāļ§ āđāļ›āļĢ count  āļŠāđˆāļ§āļ™ Consumer āļ–āđ‰āļēāļ•āđ‰āļ­āļ‡āļāļēāļĢāđƒāļŠāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨ āļˆāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļš count=0 āļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļēāđ€āļ›āđ‡āļ™
  • 69. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 69 Producer-Consumer Problem (http://www.doc.ic.ac.uk/~jnm/concurre ncy/classes/BoundedBuffer/ BoundedBuffer.html)#define N 100 /* āļ‚āļ™āļēāļ” buffer */ Int count = 0; /* āļˆāļģāļēāļ™āļ§āļ™ item āđƒāļ™ buffer */ Void producer(void) { int item; While(TRUE) { /* āļ§āļ™āļĢāļ­āļš */ item = producer_item(); /* āļœāļĨāļīāļ• item āļ•āđˆāļ­āđ„āļ› */ If (count == N) sleep(); /* āļ–āđ‰āļē buffer āđ€āļ•āđ‡āļĄ sleep āļ•āļąāļ§āđ€āļ­āļ‡ */ insert_item(item); /* āđƒāļŠāđˆ item āđƒāļ™ buffer */
  • 70. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 70 Producer-Consumer Problem (āļ•āđˆāļ­) Void consumer(void) { int item; While (TRUE) { /* āļ§āļ™āļĢāļ­āļš */ If (count == 0) sleep(); /* āļ–āđ‰āļē buffer āļ§āđˆāļēāļ‡ sleep āļ•āļąāļ§āđ€āļ­āļ‡ */ item = remove_item(); /* āļ™āļģāļē item āļ­āļ­āļāļˆāļēāļ buffer */ count = count – 1; /* āļĨāļ”āļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢ count */ If (count <= N-1) wakeup(producer); /* āļ–āđ‰āļē buffer āļĄāļĩāļ—āļĩāđˆāļ§āđˆāļēāļ‡āļˆāļ° wakeup producer */
  • 71. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 71 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  Semaphore  āļŦāļĨāļąāļāļāļēāļĢāļžāļ·āđ‰āļ™āļāļēāļ™āļ„āļ·āļ­āļĄāļĩ process 2 process āļ‚āļķāđ‰āļ™āđ„āļ› āļ›āļĢāļ°āļŠāļēāļ™āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļāļąāļ™ āđ‚āļ”āļĒāļāļēāļĢāļŠāđˆāļ‡āļŠāļąāļāļāļēāļ“āļĢāļ°āļŦāļ§āđˆāļēāļ‡ process āļœāđˆāļēāļ™āļ—āļēāļ‡āļ•āļąāļ§āđāļ›āļĢāļžāļīāđ€āļĻāļĐāļ‹āļķāđˆāļ‡āđ€āļĢāļĩāļĒāļāļ§āđˆāļē semaphore  āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļ‚āļ­āļ‡ Semaphore āđ€āļ›āđ‡āļ™āļ›āļāļīāļšāļąāļ•āļī āļāļēāļĢāđ€āļ”āļĩāļĒāļ§āļ—āļĩāđˆāļ—āļģāļēāđƒāļŦāđ‰ āđ‚āļ›āļĢāđ€āļ‹āļŠāļ­āļ·āđˆāļ™āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ– āđāļ­āđ‡āļāđ€āļ‹āļŠ Semaphore āđ„āļ”āđ‰āļˆāļ™āļāļ§āđˆāļēāļˆāļ° āđ€āļŠāļĢāđ‡āļˆāļŠāļĄāļšāļđāļĢāļ“āđŒāļŦāļĢāļ·āļ­āļ–āļđāļāļšāļĨāđ‡āļ­āļ āļ—āļģāļēāđƒāļŦāđ‰āļŠāđˆāļ§āļĒ
  • 72. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 72 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  Semaphore  Semaphores āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļāļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļē āđ€āļ‚āļ•āļ§āļīāļāļĪāļ•āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļĄāļēāļāļĒāļīāđˆāļ‡āļ‚āļķāđ‰āļ™ āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāļŠāļ™āļīāļ” Integer āļ—āļĩāđˆāļĄāļĩāļāļēāļĢ āļšāļ­āļāđƒāļŦāđ‰ Process āđ„āļŦāļ™āđ„āļ”āđ‰āđ€āļ‚āđ‰āļēāļ—āļģāļēāļ‡āļēāļ™ āļāđˆāļ­āļ™ ï€š Semaphore S āļ„āļ·āļ­āļ•āļąāļ§āđāļ›āļĢāļˆāļģāļēāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ āļ‹āļķāđˆāļ‡āļŦāļĨāļąāļ‡āļˆāļēāļāļāļēāļĢāļāļģāļēāļŦāļ™āļ”āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđāļĨāđ‰āļ§ āļˆāļ° āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒāļ„āļģāļēāļŠāļąāđˆāļ‡āļ‹āļķāđˆāļ‡āļ—āļģāļēāļ‡āļēāļ™āđāļšāļšāļ„āļĢāļš āļŦāļ™āđˆāļ§āļĒ (āļ„āļ·āļ­āđāļšāđˆāļ‡āđāļĒāļāđ„āļĄāđˆāđ„āļ”āđ‰) 2 āļ„āļģāļēāļŠāļąāđˆāļ‡ āļ„āļ·āļ­
  • 74. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 74 Wait & Signal Int s; /* Semaphore */ Void Wait(s) { While (s <=0) /* do nothing */ s --; } Void Signal(s) { s ++; }
  • 75. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 75 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ 8. āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļ‹āļīāļ™ āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ  Semaphore  Semaphore āļĄāļĩ 2 āļŠāļ™āļīāļ”āļ„āļ·āļ­ Binary Semaphore āļ—āļĩāđˆāļĄāļĩ 2 āļ„āđˆāļēāļ„āļ·āļ­ 0 āđāļĨāļ° 1 āđ€āļŠāđˆāļ™ mutex āļ—āļĩāđˆāļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ„āļ§āļšāļ„āļļāļĄāļāļēāļĢāđ€āļ‚āđ‰āļē CR āļŦāļĢāļ·āļ­āļ—āļģāļēāđƒāļŦāđ‰āđ€āļāļīāļ” Mutual Exclusion  Counting Semaphore āđ€āļ›āđ‡āļ™ Semaphore āļ•āļąāļ§āļ™āļąāļš āļ—āļģāļēāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ›āļĢāļ°āļŠāļēāļ™ āļˆāļąāļ‡āļŦāļ§āļ°āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Producer āđāļĨāļ° Consumer āļ—āļĩāđˆāļĄāļĩ Full āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ™āļąāļš āļˆāļģāļēāļ™āļ§āļ™āļŠāđˆāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļ° Empty āđ€āļ›āđ‡āļ™āļ•āļąāļ§
  • 76. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 76 āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļēāļĢāđ€āļ‚āđ‰āļēāđƒāļŠāđ‰āļ‡āļēāļ™ Semaphore Mutex
  • 78. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 78 Mutex āļāļąāļš Semaphore āļ•āđˆāļēāļ‡āļāļąāļ™ āļĒāļąāļ‡āđ„āļ‡?â€Ē āđ€āļžāļ·āđˆāļ­āļ—āļĩāđˆāļˆāļ°āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļēāđ‚āļĨāļāđ€āđ€āļ•āļāđƒāļ™āļāļēāļĢāđ€āđ€āļĒāļāļāļąāļ™ āđƒāļŠāđ‰āļ‡āļēāļ™āļ—āļĢāļąāļžāļĒāļēāļāļĢāļžāļĢāđ‰āļ­āļĄāļāļąāļ™ (āļĄāļąāļ™āļ„āļ‡āđ„āļĄāđˆāļ”āļĩāđ€āđ€āļ™āđˆāļ–āđ‰āļēāļĄāļĩāđƒāļ„āļĢāļ­āļĒāļēāļāļˆāļ°āđ€āļ‚āđ‰āļēāļĄāļē āļ­āļķ āļžāļĢāđ‰āļ­āļĄ āļāļąāļš āđ€āļĢāļēāđƒāļ™āļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļēāļŦāđ‰āļ­āļ‡āļ‡āđ€āļ”āļĩāļĒāļ§āļāļąāļ™) āļ–āđ‰āļēāļĨāļ­āļ‡āđ€āļ—āļĩāļĒāļš āļāļąāļš āļŠāļīāđˆāļ‡āļ‚āļ­āļ‡āđƒāļ™āļŠāļĩāļ§āļīāļ•āļ›āļĢāļ°āļˆāļģāļēāļ§āļąāļ™āđ€āđ€āļĨāđ‰āļ§ Mutex āļāđ‡āđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļš āļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒāļ—āļĩāđˆ āļĄāļĩāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļēāļ­āļĒāļđāđˆ 1 āļŦāđ‰āļ­āļ‡ āđ€āđ€āļĨāļ°āļĄāļĩ āļāļļāļāđ€āđ€āļˆāļŠāļģāļēāļŦāļĢāļąāļšāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļēāļŦāđ‰āļ­āļ‡āļ™āļĩāđ‰āđ€āļžāļĩāļĒāļ‡ 1 āļ­āļąāļ™ āđƒāļ„āļĢāļāđ‡āļ•āļēāļĄāļ—āļĩāđˆāļ­āļĒāļēāļāļˆāļ°āđƒāļŠāđ‰āļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļē āļāđ‡āļ•āđ‰āļ­āļ‡āļĢāļ­āļˆāļ™āļāļ§āđˆāļē āļ„āļ™āļ—āļĩāđˆāđ€āļ‚āđ‰āļēāļāđˆāļ­āļ™āđƒāļŠāđ‰āļŦāđ‰āļ­āļ‡ āļ™āļģāđ‰āļēāđ€āļŠāļĢāđ‡āļˆ
  • 79. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 79 [ āļ§āđˆāļēāļ‡ ] A B C D <=== āļ™āļēāļĒ A B C D āđ€āļāļīāļ” āļ›āļ§āļ”āļ­āļķ āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ [ A ] B C D <=== āļ™āļēāļĒ A āđ„āļ”āđ‰āđ€āļ‚āđ‰āļēāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļē āļŠāļšāļēāļĒāđƒāļˆāđ€āļ‰āļīāļš A [ B ] C D <=== āļˆāļ°āđ€āļŦāđ‡āļ™āļ§āđˆāļēāļ—āļļāļāļ„āļ™āļ•āđ‰āļ­āļ‡āļĢāļ­ āļ™āļēāļĒ A āđ€āđ€āļ•āđˆāđƒāļ™āļāļĢāļ“āļĩāļ‚āļ­āļ‡ Semaphore āļŸāļąāļ‡āļ”āļđāđ€āļ‚āđ‰āļēāļ—āđˆāļē āļĄāļēāļāļāļ§āđˆāļē Semaphore āđ€āļ›āļĢāļĩāļĒāļšāđ€āļŦāļĄāļ·āļ­āļ™ āļāļļāļāđ€āđ€āļˆāļŦāđ‰āļ­āļ‡āļ™āļģāđ‰āļē āļˆāļģāļēāļ™āļ§āļ™āļŦāļ™āļķāđˆāļ‡āļ—āļĩāđˆāđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļ™ āļŠāļĄāļĄāļļāļ•āļīāļ§āđˆāļēāļĄāļĩ 4 āļ­āļąāļ™
  • 80. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 80 āļ–āđ‰āļēāļĄāļĩāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļ™ semaphore āđ€āļŦāļĨāļ·āļ­ 0 āļ™āļąāđˆāļ™ āļāđ‡āļ„āļ·āļ­ āđ„āļĄāđˆāļĄāļĩāļ—āļĩāđˆāļžāļ­āđƒāļŦāđ‰ process āļ—āļĩāđˆāļ­āļ·āđˆāļ™āļ­āļĩāļāļ•āđˆāļ­āđ„āļ› āļ‹āļķāđˆāļ‡ āļāđ‡āļˆāļ°āļ•āđ‰āļ­āļ‡āļĢāļ­ āđƒāļŦāđ‰āļĄāļĩāļ—āļĩāđˆāļ§āđˆāļēāļ‡ [āļ§āđˆāļēāļ‡][āļ§āđˆāļēāļ‡][āļ§āđˆāļēāļ‡][āļ§āđˆāļēāļ‡] A B C D E F G <=== āļ™āļēāļĒ A B C D E F G āđ€āļāļīāļ”āļ›āļ§āļ”āļ­āļķ āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ [A] [B ][C] [D ] E F G <=== āļ™āļēāļĒ A B C D āļŠāļšāļēāļĒāđƒāļˆāđ€āļ‰āļīāļš C D [A] [B ][E] [F] G <=== āđ€āđ€āļ•āđˆ A B āļ—āđ‰āļ­āļ‡ āđ€āļŠāļĩāļĒ āđ€āđ€āļ•āđˆ E F āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĢāļ­āļ™āļēāļ™ āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āļ„āļģāļēāļ–āļēāļĄāļ—āļĩāđˆāļ§āđˆāļē Mutex āļ•āđˆāļēāļ‡āļāļ° Semaphore āļĒāļąāļ‡āđ„āļ‡ āļāđ‡āļ„āļ·āļ­ Semaphore āļ­āļ™āļļ āļāļēāļ•āļīāđƒāļŦāđ‰ āļˆāļģāļēāļ™āļ§āļ™āļ‚āļ­āļ‡ process āđ€āļ‚āđ‰āļēāļ–āļķāļ‡
  • 81. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 81 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š The Dining Philosophers Problem (http://www.doc.ic.ac.uk/~jnm/concurre ncy/classes/Diners/Diners.html)
  • 82. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 82 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š The Dining Philosophers Problem  āļ™āļąāļāļ›āļĢāļēāļŠāļāđŒ 5 āļ—āđˆāļēāļ™āļ™āļąāđˆāļ‡āļ—āļēāļ™āļ­āļēāļŦāļēāļĢāļĢāļ­āļš āđ‚āļ•āđŠāļ°āļāļĨāļĄ ï€š āļ™āļąāļāļ›āļĢāļēāļŠāļāđŒāđāļ•āđˆāļĨāļ°āļ—āđˆāļēāļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļ•āļ°āđ€āļāļĩāļĒāļšāļ—āļąāđ‰āļ‡ 2 āļ‚āđ‰āļēāļ‡āļ‹āđ‰āļēāļĒ-āļ‚āļ§āļē  āđ€āļĄāļ·āđˆāļ­āļ—āļēāļ™āđ€āļŠāļĢāđ‡āļˆāđƒāļ™āđāļ•āđˆāļĨāļ°āļĢāļ­āļšāļˆāļ°āļ•āđ‰āļ­āļ‡āļ§āļēāļ‡ āļ•āļ°āđ€āļāļĩāļĒāļšāđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ™āļąāļāļ›āļĢāļēāļŠāļāđŒāļ—āđˆāļēāļ™āļ­āļ·āđˆāļ™āđ„āļ”āđ‰ āļ—āļēāļ™āļšāđ‰āļēāļ‡ ï€š āļ–āđ‰āļēāļ™āļąāļāļ›āļĢāļēāļŠāļāđŒāļŦāļĒāļīāļšāļ•āļ°āđ€āļāļĩāļĒāļšāļ„āļ™āļĨāļ°āļ‚āđ‰āļēāļ‡
  • 83. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 83 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š The Dining Philosophers Problem  āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļąāļāļŦāļēāļˆāļ°āđƒāļŠāđ‰ binary semaphore āļāđˆāļ­āļ™āļŦāļĒāļīāļšāļ•āļ°āđ€āļāļĩāļĒāļšāļˆāļ°āđƒāļŠāđ‰ āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Wait() āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ āļ§āļēāļ‡āļ•āļ°āđ€āļāļĩāļĒāļšāļˆāļ°āđƒāļŠāđ‰āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ Signal() āļŠāđˆāļ§āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāđƒāļŠāđ‰āļĢāđˆāļ§āļĄāļāļąāļ™āļĢāļ°āļŦāļ§āđˆāļēāļ‡ process āļ—āļąāđ‰āļ‡āļŦāļĨāļēāļĒ āļ„āļ·āļ­ semaphore fork[5];  āļ›āļąāļāļŦāļēāļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāļŠāļģāļēāļ„āļąāļāļ‚āļ­āļ‡āļāļēāļĢ
  • 84. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 84 The Dining Philosophers ProblemDo { Wait(fork[i]); Wait(fork[(i+1) % 5); /* eat */ Signal(fork[i]); Signal(fork[(i+1) % 5); /* think */ } While (True);
  • 86. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 86 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š The Readers-Writers Problem (http://www.doc.ic.ac.uk/~jnm/concurr ency/classes/ReadWriteLock/ ReadWriteLock.html)
  • 87. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 87 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠï€š The Readers-Writers Problem  āļĄāļĩ 2 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ—āļģāļēāļ‡āļēāļ™āļĢāđˆāļ§āļĄāļāļąāļ™āļ„āļ·āļ­āđ‚āļ›āļĢāđ€āļ‹ āļŠāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļ° āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ  āļāļēāļĢāļ­āđˆāļēāļ™āđāļĨāļ°āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļŠāļēāļĄāļēāļĢāļ–āļĄāļĩāđ„āļ”āđ‰ āļŦāļĨāļēāļĒāđ‚āļ›āļĢāđ€āļ‹āļŠāļžāļĢāđ‰āļ­āļĄāļāļąāļ™ āđ€āļŠāđˆāļ™ āļĢāļ°āļšāļš āļŠāļģāļēāļĢāļ­āļ‡āļ—āļĩāđˆāļ™āļąāđˆāļ‡āđ‚āļ”āļĒāļŠāļēāļĢāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļšāļīāļ™ ï€š āđ‚āļ›āļĢāđ€āļ‹āļŠāļāļēāļĢāļ­āđˆāļēāļ™āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāđ„āļ”āđ‰āļ„āļĢāļąāđ‰āļ‡āļĨāļ° āļŦāļĨāļēāļĒ āđ† āđ‚āļ›āļĢāđ€āļ‹āļŠ āļŠāđˆāļ§āļ™āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āļˆāļ° āļāļĢāļ°āļ—āļģāļēāđ„āļ”āđ‰āđ€āļžāļĩāļĒāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ”āļĩāļĒāļ§āđƒāļ™āđ€āļ§āļĨāļēāļ™āļąāđ‰āļ™ ï€š āļāļēāļĢāđƒāļŠāđ‰ Monitor āļŦāļĢāļ·āļ­āļāļēāļĢāļ‹āļīāļ™āđ‚āļ„āļĢāđ„āļ™āļ‹āđŒ āļ­āļ·āđˆāļ™ āđ† āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢ Mutual
  • 88. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 88 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ ï€š The Readers-Writers Problem  āļ•āđ‰āļ­āļ‡āļ„āļģāļēāļ™āļķāļ‡āļāļēāļĢāļĢāļ­āļ„āļ­āļĒāļ”āđ‰āļ§āļĒ āđ€āļžāļĢāļēāļ°āļœāļđāđ‰āļ­āđˆāļēāļ™ āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰āļ•āļĨāļ­āļ”āđ€āļ§āļĨāļē āļ–āđ‰āļēāļĄāļĩāļœāļđāđ‰ āļ­āđˆāļēāļ™āđ€āļ‚āđ‰āļēāļĄāļēāļ•āļĨāļ­āļ”āđ€āļ§āļĨāļē āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļāđ‡āļˆāļ°āđ„āļĄāđˆ āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāļ‡āļēāļ™āđ„āļ”āđ‰ āļŦāļĢāļ·āļ­āļ–āđ‰āļēāđ€āļĢāļēāđƒāļŦāđ‰āļŠāļīāļ—āļ˜āļīāđŒāļœāļđāđ‰ āđ€āļ‚āļĩāļĒāļ™āļĄāļēāļāļāļ§āđˆāļē āļāđ‡āļˆāļ°āļ—āļģāļēāđƒāļŦāđ‰āļœāļđāđ‰āļ­āđˆāļēāļ™āđ„āļĄāđˆ āļŠāļēāļĄāļēāļĢāļ–āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰  āļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļēāļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰āļāļēāļĢāļˆāļąāļ”āļ„āļīāļ§ āļ–āđ‰āļēāļĄāļĩāļœāļđāđ‰ āđ€āļ‚āļĩāļĒāļ™āļ­āļĒāļđāđˆāļāđˆāļ­āļ™āđāļĨāđ‰āļ§ āļĄāļĩāļœāļđāđ‰āļ­āđˆāļēāļ™āđ€āļ‚āđ‰āļēāļĄāļēāļāđ‡āļ•āđ‰āļ­āļ‡ āļĢāļ­āļāđˆāļ­āļ™ āļˆāļ°āļ—āļģāļēāđƒāļŦāđ‰āļ—āļąāđ‰āļ‡āļœāļđāđ‰āļ­āđˆāļēāļ™āđāļĨāļ°āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āđ„āļĄāđˆ
  • 89. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 89  The Readers-Writers Problem  āđāļšāđˆāļ‡āļ›āļąāļāļŦāļēāđ€āļĢāļ·āđˆāļ­āļ‡āļ‚āļ­āļ‡āļāļēāļĢāļĢāļ­āļ„āļ­āļĒāđ„āļĄāđˆāļĄāļĩāļ—āļĩāđˆāļŠāļīāđ‰āļ™āļŠāļļāļ” (Starvation) āđ„āļ”āđ‰āđ€āļ›āđ‡āļ™ 2 āļĨāļąāļāļĐāļ“āļ° āļ„āļ·āļ­ ï€š Writer Starvation āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āļĢāļ­āđ„āļĄāđˆāļĄāļĩāļ—āļĩāđˆāļŠāļīāđ‰āļ™ āļŠāļļāļ” āđ€āļ™āļ·āđˆāļ­āļ‡āļĄāļēāļˆāļēāļāļĄāļĩāļœāļđāđ‰āļ­āđˆāļēāļ™āđ€āļ‚āđ‰āļēāđ„āļ›āļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļāļĩāđˆ āļ„āļ™āļāđ‡āđ„āļ”āđ‰ āđāļĨāļ°āđ„āļĄāđˆāļĒāļ­āļĄāļ­āļ­āļāļĄāļēāļŠāļąāļāļ—āļĩ āđāļ•āđˆāļ–āđ‰āļēāļĄāļĩāļœāļđāđ‰ āļ­āđˆāļēāļ™āđƒāļŦāļĄāđˆāļĄāļēāļāđ‡āļŠāļēāļĄāļēāļĢāļ–āļ—āļĩāđˆāļˆāļ°āđ€āļ‚āđ‰āļēāđ„āļ›āļ­āđˆāļēāļ™āđ„āļ”āđ‰  Reader Starvation āļœāļđāđ‰āļ­āđˆāļēāļ™āļĢāļ­āđ„āļĄāđˆāļĄāļĩāļŠāļīāđ‰āļ™ āļŠāļļāļ” āđ€āļ™āļ·āđˆāļ­āļ‡āļĄāļēāļˆāļēāļāļĄāļĩāļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™āđ€āļ‚āđ‰āļēāđ„āļ›āđ€āļ‚āļĩāļĒāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ 9. āļ›āļąāļāļŦāļēāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡ āđ‚āļ›āļĢāđ€āļ‹āļŠ
  • 90. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 90 The Readers-Writers Problem Semaphore mutex = 1, /* āļ•āļąāļ§āđāļ›āļĢāļ‚āļ­āļ‡ reader process writing = 1; /* āļ•āļąāļ§āđāļ›āļĢāļ‚āļ­āļ‡ writer process Int readerCounter = 0; /* āļ•āļąāļ§āđāļ›āļĢāļ™āļąāļš āļˆāļģāļēāļ™āļ§āļ™āļ„āļ™āļ­āđˆāļēāļ™ Void writer(int) { Wait (writing); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒāļāļēāļĢāđƒāļŠāđ‰ āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ */ /* perform writing */
  • 91. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 91 The Readers-Writers Problem Void reader(int i) { Wait(mutex); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒ */ readerCounter++; /* āļĄāļĩāļœāļđāđ‰āļ­āđˆāļēāļ™āđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™ 1 āļ„āļ™ */ If (readerCounter == 1) /* āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļē āđ€āļ›āđ‡āļ™āļœāļđāđ‰āļ­āđˆāļēāļ™āļ„āļ™āđāļĢāļāļŦāļĢāļ·āļ­āđ„āļĄāđˆ */ Wait(writing); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒāđƒāļŦāđ‰āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™ āđ‚āļ”āļĒāđƒāļŠāđ‰ writing */ Signal(mutex); /* āļ›āļĨāđˆāļ­āļĒāļŠāļīāļ—āļ˜āļīāđŒ */ /* perform reading */ Wait(mutex); /* āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒ */ readerCounter--; /* āļœāļđāđ‰āļ­āđˆāļēāļ™āļĨāļ”āļĨāļ‡ 1 āļ„āļ™ */
  • 92. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 92 10. Thread10. Thread  Thread (āļŠāļēāļĒāļ‡āļēāļ™) āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒāļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē “Lightweight Process” āļŦāļĄāļēāļĒāļ–āļķāļ‡ āļŦāļ™āđˆāļ§āļĒāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āļŦāļ™āđˆāļ§āļĒāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ  Thread āđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļŦāļ™āļķāđˆāļ‡āļ‚āļ­āļ‡ Process āđ‚āļ”āļĒ Process āļŦāļ™āļķāđˆāļ‡āđ† āļ­āļēāļˆāļĄāļĩāļĄāļēāļāļāļ§āđˆāļēāļŦāļ™āļķāđˆāļ‡ Thread (Multithreading)  āđ‚āļ›āļĢāđāļāļĢāļĄāļ›āļĢāļ°āļĒāļļāļāļ•āđŒāļšāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāļŠāļĄāļąāļĒāđƒāļŦāļĄāđˆāļˆāļ° āļ—āļģāļēāļ‡āļēāļ™āđāļšāļšāļŦāļĨāļēāļĒāļŠāļēāļĒāļ‡āļēāļ™ āļ™āļąāđˆāļ™āļ„āļ·āļ­ 1 process āđāļ•āđˆāļĄāļĩāļŦāļĨāļēāļĒ Thread āļ—āļģāļēāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāļ‡āļēāļ™āļŦāļĨāļēāļĒ āļ­āļĒāđˆāļēāļ‡āđ„āļ”āđ‰āļ„āļĨāđ‰āļēāļĒāļāļąāļšāļžāļĢāđ‰āļ­āļĄāđ†āļāļąāļ™ āđ€āļŠāđˆāļ™ āđƒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ Word āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ—āļĩāđˆāļžāļīāļĄāļžāđŒāđ€āļ­āļāļŠāļēāļĢāļ­āļ­āļāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļžāļīāļĄāļžāđŒ āļœāļđāđ‰
  • 93. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 93 10. Thread10. Thread  1 Process , 1 Thread => MS DOS  > 1 Process , 1 Thread => UNIX  1 Process , > 1 Thread => Java Runtime Environment (JRE)  > 1 Process , > 1 Thread => Solaris, Windows2000, Linux, OS/2
  • 94. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 94 10. Thread10. Thread 3 process āđāļĨāļ°āļ„āļ§āļšāļ„āļļāļĄāđ€āļžāļĩāļĒāļ‡ 1 Thread1 Process āļ„āļ§āļšāļ„āļļāļĄ 3 Thread
  • 95. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 95 10. Thread10. Thread  āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļ‚āļ­āļ‡ Thread  āļŦāļĄāļēāļĒāđ€āļĨāļ‚ Thread  āļ•āļąāļ§āļ™āļąāļš : āļ•āļīāļ”āļ•āļēāļĄāđƒāļŦāđ‰āļ—āļĢāļēāļšāļ„āļģāļēāļŠāļąāđˆāļ‡āļ•āđˆāļ­āđ„āļ›āļ—āļĩāđˆāļˆāļ° āđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ  āļŠāļļāļ”āļ‚āļ­āļ‡āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ : āđ€āļāđ‡āļšāļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢāļ—āļĩāđˆ āļ—āļģāļēāļ‡āļēāļ™āļ­āļĒāļđāđˆ  āļŠāđāļ•āđ‡āļ : āđ€āļāđ‡āļšāļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāđ€āļ­āđ‡āļāļ‹āļīāļ„āļīāļ§āļ•āđŒ
  • 96. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 96 10. Thread10. Thread  āļ āļēāļĒāđƒāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļ—āļĩāđˆāļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ Thread āļˆāļ°āļĄāļĩāļāļēāļĢāđāļŠāļĢāđŒāļĢāļĩāļ‹āļ­āļĢāđŒāļŠ ï€š āļ–āđ‰āļē 1 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ„āļ§āļšāļ„āļļāļĄ 1 Thread āļˆāļ° āđ€āļĢāļĩāļĒāļāļ§āđˆāļē “Single-threaded” āđāļ•āđˆāļ–āđ‰āļē 1 āđ‚āļ›āļĢāđ€āļ‹āļŠāļ„āļ§āļšāļ„āļļāļĄāļŦāļĨāļēāļĒ thread āļˆāļ°āđ€āļĢāļĩāļĒāļ āļ§āđˆāļē “Multithreaded”  āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļĄāļąāļĒāđƒāļŦāļĄāđˆāđ€āļŠāđˆāļ™ āđ€āļ§āđ‡āļšāļšāļĢāļēāļ§āđ€āļ‹āļ­āļĢāđŒ āļĄāļĩ thread āļāļģāļēāļĨāļąāļ‡āđāļŠāļ”āļ‡āļĢāļđāļ›āļ āļēāļž āđƒāļ™āļ‚āļ“āļ°
  • 98. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 98 10. Thread10. Thread  āļ‚āđ‰āļ­āđ„āļ”āđ‰āđ€āļ›āļĢāļĩāļĒāļšāļ‚āļ­āļ‡ Multithreaded  āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡ ï€š āļāļēāļĢāđāļŠāļĢāđŒāļĢāļĩāļ‹āļ­āļĢāđŒāļŠ ï€š āļ„āļ§āļēāļĄāļ›āļĢāļ°āļŦāļĒāļąāļ” ï€š āļāļēāļĢāđ€āļ­āļ·āđ‰āļ­āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ‚āļ­āļ‡āļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ āļĄāļąāļĨāļ•āļīāđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒ
  • 99. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 99 10. Thread10. Thread  āļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļ‚āļ­āļ‡ Thread  User Thread : āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļēāļ Kernel āļ”āđ‰āļēāļ™āļšāļ™ āđāļĨāļ°āļ­āļĒāļđāđˆāđƒāļ™āđ„āļĨāļšāļĢāļēāļĢāļĩāļ‚āļ­āļ‡ thread āđƒāļ™ āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰ āđ„āļĨāļšāļĢāļēāļĢāļĩāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡, āļˆāļąāļ” āđ€āļ§āļĨāļē āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ thread āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ„āļ”āđ‰āļĢāļąāļš āļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļēāļ kernel āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ Kernel āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĒāļļāđˆāļ‡āđ€āļāļĩāđˆāļĒāļ§āļāļąāļš Thread āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰ āļāļēāļĢ āļˆāļąāļ”āļāļēāļĢ thread āļˆāļ°āļ—āļģāļēāđƒāļ™āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āđ‚āļ”āļĒ āđ„āļĄāđˆāļˆāļģāļēāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ Kernel āļ—āļģāļēāđƒāļŦāđ‰ thread āđƒāļ™ āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļ™āļĩāđ‰āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢāđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡ āļĢāļ§āļ”āđ€āļĢāđ‡āļ§ āļ–āđ‰āļē kernel āđ€āļ›āđ‡āļ™ single thread
  • 100. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 100 10. Thread10. Thread  āļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļ‚āļ­āļ‡ Thread  Kernel Thread : āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™ āđ‚āļ”āļĒāļ•āļĢāļ‡āļˆāļēāļāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ āđ‚āļ”āļĒāļˆāļ°āļŠāļĢāđ‰āļēāļ‡, āļˆāļąāļ”āđ€āļ§āļĨāļē āđāļĨāļ°āļˆāļąāļ”āļāļēāļĢ thread āļ āļēāļĒāđƒāļ™ Kernel āđ€āļ­āļ‡ āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļˆāļēāļāļĢāļ°āļšāļš āļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ āļ—āļģāļēāđƒāļŦāđ‰ Kernel thread āļŠāļĢāđ‰āļēāļ‡āđāļĨāļ° āļˆāļąāļ”āļāļēāļĢāđ„āļ”āđ‰āļŠāđ‰āļēāļāļ§āđˆāļē user thread āđāļ•āđˆāđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļ kernel āļˆāļąāļ”āļāļēāļĢāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš thread āđ€āļ­āļ‡ āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āļ–āđ‰āļē thread āđ€āļāļīāļ”āļāļēāļĢāļšāļĨāđ‡āļ­āļ system call āļˆāļ° āļ—āļģāļēāđƒāļŦāđ‰ kernel āļ™āļąāđ‰āļ™āļ”āļķāļ‡ thread āļ­āļ·āđˆāļ™āđ€āļ‚āđ‰āļēāđ„āļ›āđ€āļ­āđ‡āļ āļ‹āļīāļ„āļīāļ§āļ•āđŒāđāļ—āļ™āđ„āļ”āđ‰ āļˆāļ°āđ„āļĄāđˆāļ—āļģāļēāđƒāļŦāđ‰ thread āļ­āļ·āđˆāļ™āļ‚āļ­āļ‡
  • 101. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 101 10. Thread10. Thread  āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡ MultiThread  Many-to-One : 1 Kernel āļāļąāļš āļŦāļĨāļēāļĒ User thread āļāļēāļĢ āļˆāļąāļ”āļāļēāļĢ threadāļ­āļĒāļđāđˆāđƒāļ™ āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļ‹āļķāđˆāļ‡āļĄāļĩ āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļ•āđˆ
  • 102. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 102 10. Thread10. Thread  āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡ MultiThread  One-to-One : 1 Kernel āļāļąāļš 1 User thread āļ—āļģāļēāļ‡āļēāļ™āđ„āļ”āđ‰ āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āļ”āļĩāļāļ§āđˆāļēāđāļšāļš āđāļĢāļ āđ‚āļ”āļĒāļĒāļ­āļĄāđƒāļŦāđ‰ thread āļ­āļ·āđˆāļ™āļĢāļąāļ™āđ„āļ”āđ‰ āđ€āļĄāļ·āđˆāļ­āļĄāļĩ thread āļ–āļđāļ āļšāļĨāđ‡āļ­āļ system call āļ•āđ‰āļ­āļ‡āļ„āļģāļēāļ™āļķāļ‡āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡
  • 103. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 103 10. Thread10. Thread  āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡ MultiThread  Many-to-many : User thread āļĄāļēāļāļāļ§āđˆāļē āļŦāļĢāļ·āļ­āđ€āļ—āđˆāļēāļāļąāļš Kernel thread āđ„āļ”āđ‰  kernel thread āļāļģāļē āļŦāļ™āļ”āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ ï€š Many-to-One āļĒāļ­āļĄāđƒāļŦāđ‰ āļœāļđāđ‰āļžāļąāļ’āļ™āļē āļŠāļĢāđ‰āļēāļ‡ user
  • 104. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 104 10. Thread10. Thread  āđ‚āļĄāđ€āļ”āļĨāļ‚āļ­āļ‡ MultiThread  Many-to-many : User thread āļĄāļēāļāļ§āđˆāļē āļŦāļĢāļ·āļ­āđ€āļ—āđˆāļēāļāļąāļš Kernel thread āļāđ‡āđ„āļ”āđ‰  One-to-One āļĒāļ­āļĄāđƒāļŦāđ‰āļĢāļąāļ™āļžāļĢāđ‰āļ­āļĄāļāļąāļ™āđ„āļ”āđ‰ āļœāļđāđ‰ āļžāļąāļ’āļ™āļēāļĢāļ°āļ§āļąāļ‡āļ­āļĒāđˆāļēāļŠāļĢāđ‰āļēāļ‡ thread āļĄāļēāļāđ€āļāļīāļ™āđ„āļ› ï€š āļĨāļ”āļ‚āđ‰āļ­āļˆāļģāļēāļāļąāļ”āļ‚āļ­āļ‡āđ‚āļĄāđ€āļ”āļĨāļ—āļąāđ‰āļ‡āļŠāļ­āļ‡ ï€š āļœāļđāđ‰āļžāļąāļ’āļ™āļēāļŠāļĢāđ‰āļēāļ‡ thread āđ„āļ”āđ‰āđ€āļ—āđˆāļēāļ—āļĩāđˆāļˆāļģāļēāđ€āļ›āđ‡āļ™ āđāļĨāļ°āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļš Kernel  āļŠāļēāļĄāļēāļĢāļ–āļĢāļąāļ™āđāļšāļšāļ‚āļ™āļēāļ™āđƒāļ™āļĢāļ°āļšāļšāļĄāļąāļĨāļ•āļī āđ‚āļ›āļĢāđ€āļ‹āļŠāđ€āļ‹āļ­āļĢāđŒ  āđ€āļĄāļ·āđˆāļ­ thread āđ€āļāļīāļ”āļāļēāļĢāļšāļĨāđ‡āļ­āļ system call
  • 105. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 105 10. Thread10. Thread  āļāļēāļĢāļĒāļāđ€āļĨāļīāļ Thread  āđ€āļ›āđ‡āļ™āļāļēāļĢāļ—āļģāļēāđƒāļŦāđ‰ thread āļˆāļšāļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™ āļāđˆāļ­āļ™āļˆāļ°āđ€āļŠāļĢāđ‡āļˆāļŠāļĄāļšāļđāļĢāļ“āđŒ  thread āļ—āļĩāđˆāļ–āļđāļāļĒāļāđ€āļĨāļīāļ āđ€āļĢāļĩāļĒāļāļ§āđˆāļē target thread  āļāļēāļĢāļĒāļāđ€āļĨāļīāļāļĄāļĩ 2 āļĢāļđāļđāļ›āđāļšāļš ï€š Asynchronous : thread āļ­āļ·āđˆāļ™āļŠāļąāđˆāļ‡āđƒāļŦāđ‰ target thread āļŦāļĒāļļāļ”āļ—āļąāļ™āļ—āļĩ  Deferred : target thread āļ•āļĢāļ§āļˆāļŠāļ­āļš āļ•āļąāļ§āđ€āļ­āļ‡āļ§āđˆāļēāļ•āļ™āđ€āļ­āļ‡āļˆāļ°āļ–āļđāļāļĒāļāđ€āļĨāļīāļāļŦāļĢāļ·āļ­āđ„āļĄāđˆ āļ–āđ‰āļē
  • 106. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 106 10. Thread10. Thread  āļāļēāļĢāļĒāļāđ€āļĨāļīāļ Thread  āđƒāļ™ Deferred āļˆāļ°āļĄāļĩ thread āļŦāļ™āļķāđˆāļ‡ āļāļģāļēāļŦāļ™āļ”āļ§āđˆāļē target thread āđƒāļ”āļ–āļđāļ āļĒāļāđ€āļĨāļīāļ āļ‹āļķāđˆāļ‡ target thread āļ•āļĢāļ§āļˆāļŠāļ­āļš āļ•āļąāļ§āđ€āļ­āļ‡ āļāļēāļĢāļ—āļĩāđˆāļĒāļ­āļĄāđƒāļŦāđ‰ thread āļ•āļĢāļ§āļˆāļŠāļ­āļš āđ€āļžāļ·āđˆāļ­āļĒāļāđ€āļĨāļīāļāđƒāļ™āļˆāļļāļ”āļ—āļĩāđˆāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ ï€š āļˆāļļāļ”āļ™āļĩāđ‰āđƒāļ™ Pthread API āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Cancellation Point  āļŠāđˆāļ§āļ™āļĄāļēāļāļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļ­āļĄāđƒāļŦāđ‰āļĒāļāđ€āļĨāļīāļ āđāļšāļš Asynchronous
  • 107. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 107 â€Ē āđ€āļ›āđ‡āļ™āļĄāļēāļ•āļĢāļāļēāļ™āļ—āļĩāđˆāđ€āļŠāļ™āļ­āđ‚āļ”āļĒāļ„āļ“āļ°āļ—āļģāļēāļ‡āļēāļ™āļāļģāļēāļŦāļ™āļ” āļĄāļēāļ•āļĢāļāļēāļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļŠāđ‰āđ„āļ”āđ‰āļŦāļĨāļēāļĒāļĢāļ°āļšāļš â€Ē Thread āļ‹āļķāđˆāļ‡āđƒāļŠāđ‰āļŠāļļāļ”āļ„āļģāļēāļŠāļąāđˆāļ‡āļ—āļĩāđˆāļāļģāļēāļŦāļ™āļ”āđ‚āļ”āļĒ POSIX āđ€āļĢāļĩāļĒāļāļ§āđˆāļē Pthread â€Ē āļ•āļēāļĄāļĄāļēāļ•āļĢāļāļēāļ™āļ‚āļ­āļ‡ POSIX āđāļ•āđˆāļĨāļ° Thread āļˆāļ°āļĄāļĩāļŠāļļāļ” register, stack āđāļĨāļ°āļāļēāļĢāļāļģāļēāļŦāļ™āļ” āļŠāļąāļāļāļēāļ“āļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡ āđāļĨāļ°āļ—āļļāļ Thread āļ āļēāļĒāđƒāļ™ Process āļŦāļ™āļķāđˆāļ‡āđ† āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āļ‡āļēāļ™āļ‚āđ‰āļ­ āļĄāļđāļĨāļ­āļ·āđˆāļ™āđ†āļ‚āļ­āļ‡ Process āļ™āļąāđ‰āļ™āđ„āļ”āđ‰ POSIX (Portable Operating Systems Interface for Computing Environments) POSIX (Portable Operating Systems Interface for Computing Environments)
  • 108. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 108 āđāļšāļšāļāļķāļāļŦāļąāļ” 1. āđƒāļ™āļāļēāļĢāđāļ‚āđˆāļ‡āļ‚āļąāļ™āļĢāļ– F1 āļ„āļĢāļąāđ‰āļ‡āļŦāļ™āļķāđˆāļ‡ āļ‹āļķāđˆāļ‡āļĄāļĩāļĢāļ–āđ€āļ‚āđ‰āļē āđāļ‚āđˆāļ‡āļ‚āļąāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ” 3 āļ„āļąāļ™āļĄāļēāļˆāļēāļāļ„āđˆāļēāļĒāļĢāļ– 3 āļ„āđˆāļēāļĒ āļ„āļ·āļ­ Honda, Toyota āđāļĨāļ° Benz āļ™āļēāļĒāļŠāļĄ āļĻāļąāļāļ”āļīāđŒāđ€āļ›āđ‡āļ™āļœāļđāđ‰āđ€āļ‚āđ‰āļēāđāļ‚āđˆāļ‡āļ‚āļąāļ™āđ€āļžāļĩāļĒāļ‡āļ„āļ™āđ€āļ”āļĩāļĒāļ§āđƒāļ™āļ„āļĢāļąāđ‰āļ‡āļ™āļĩāđ‰ āđ‚āļ”āļĒāļ™āļēāļĒāļŠāļĄāļĻāļąāļāļ”āļīāđŒāđ„āļ”āđ‰āļ™āļģāļēāļĢāļ–āļ—āļąāđ‰āļ‡ 3 āļ„āļąāļ™āđ€āļ‚āđ‰āļēāļŠāļđāđˆāļˆāļļāļ” āļ›āļĨāđˆāļ­āļĒāļ•āļąāļ§ āļŦāļĨāļąāļ‡āļˆāļēāļāļ™āļąāđ‰āļ™āļ™āļēāļĒāļŠāļĄāļĻāļąāļāļ”āļīāđŒāļāđ‡āļ—āļģāļēāļāļēāļĢ āļŠāļ•āļēāļĢāđŒāļ—āđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļĒāļ™āļ•āđŒāļ‚āļ­āļ‡āļĢāļ–āļ—āļąāđ‰āļ‡ 3 āļ„āļąāļ™ āļ™āļēāļĒāļŠāļĄ āļĻāļąāļāļ”āļīāđŒāļ—āļģāļēāļāļēāļĢāļ‚āļąāļšāļĢāļ– Honda āļāđˆāļ­āļ™ āļŦāļĨāļąāļ‡āļˆāļēāļ āļ‚āļąāļšāđ„āļ›āđ„āļ”āđ‰āļ›āļĢāļ°āļĄāļēāļ“ Âž āļ‚āļ­āļ‡āļ—āļēāļ‡ āļ™āļēāļĒāļŠāļĄāļĻāļąāļāļ”āļīāđŒ āļāđ‡āđ„āļ”āđ‰āļŦāļĒāļļāļ”āļĢāļ– Honda āđāļĨāļ°āđ„āļ”āđ‰āļ§āļīāđˆāļ‡āļāļĨāļąāļšāļĄāļēāļ‚āļąāļš āļĢāļ– Toyota āļ­āļ­āļāđ„āļ› āļ•āđˆāļ­āļĄāļē āļŦāļĨāļąāļ‡āļˆāļēāļāļ‚āļąāļšāļĢāļ– Toyota āđ„āļ›āđ„āļ”āđ‰ Â― āļ‚āļ­āļ‡āļ—āļēāļ‡ āļ›āļĢāļēāļāļāļ§āđˆāļēāļĢāļ–
  • 109. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 109 āļˆāļēāļāđ€āļĢāļ·āđˆāļ­āļ‡āļĢāļēāļ§āļ—āļąāđ‰āļ‡āļŦāļĄāļ” āļ–āđ‰āļēāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļāļąāļšāļāļēāļĢ āļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđƒāļŦāđ‰āļ•āļ­āļšāļ„āļģāļēāļ–āļēāļĄāļ•āđˆāļ­ āđ„āļ›āļ™āļĩāđ‰ 1.1) āļ­āļ°āđ„āļĢ āļ„āļ·āļ­ CPU 1.2) Resource āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļĄāļĩāļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡ 1.3) Resource āļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ New State āļ­āļ˜āļīāļšāļēāļĒāļ”āđ‰āļ§āļĒāļ§āđˆāļēāļ•āļ­āļ™āđ„āļŦāļ™ 1.4) Resource āļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ Ready State āļ­āļ˜āļīāļšāļēāļĒāļ”āđ‰āļ§āļĒāļ§āđˆāļēāļ•āļ­āļ™āđ„āļŦāļ™ 1.5) Resource āļ­āļ°āđ„āļĢāļšāđ‰āļēāļ‡āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™ Run State (āđāļĒāļ Resource āđāļ•āđˆāļĨāļ°āļ•āļąāļ§ āđāļĨāļ°āļšāļ­āļāļ§āđˆāļēāđāļ•āđˆāļĨāļ°
  • 110. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 110 2. āļžāļīāļˆāļēāļĢāļ“āļē InterProcess- Communication āļĢāļ°āļŦāļ§āđˆāļēāļ‡ Process P (āļœāļđāđ‰āļĢāļąāļš) āđāļĨāļ° Process Q (āļœāļđāđ‰āļŠāđˆāļ‡) 2.1) āļ–āđ‰āļēāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡ 1 Message āļĢāļ°āļŦāļ§āđˆāļēāļ‡ 2 Process āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđāļšāļš Direct Communication āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™ Sequence āļ‚āļ­āļ‡āļŸāļąāļ‡āļāđŒāļŠāļąāļ™ Send āđāļĨāļ° Receive 2.2) āļˆāļēāļāļ‚āđ‰āļ­ 2.1) āđƒāļŦāđ‰āđ€āļ‚āļĩāļĒāļ™ sequence āļ‚āļ­āļ‡āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāļŠāļđāļāļŦāļēāļĒāļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ 2.3) āļ–āđ‰āļēāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡ Message āļĢāļ°āļŦāļ§āđˆāļēāļ‡ 2 Process āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āđāļšāļš Indirect Communication āđ‚āļ”āļĒ Process P āļ„āļ­āļĒāļĢāļąāļš
  • 111. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 111 Start StopWhile(True) Count == N Sleep() insert_item(item) Count = Count + 1 Count >= 1 Wakeup(consumer) item = produce_item() FT T F T Flowchart of Procedure Produc
  • 112. āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ (Operating Systems) 112 Start StopWhile(True) Count ==0 Sleep() item=remove_item() Count = Count- 1 Count <=N-1 Wakeup(producer) Cousume_item(item) FT T F T Flowchart of Procedure Consum