SlideShare a Scribd company logo
āļšāļ—āļ—āļĩāđˆ  5  āđ€āļ˜āļĢāļ”  Threads āļšāļ—āļ™āļģ  Overview āļ•āļąāļ§āđāļšāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āđāļšāļšāļŦāļĨāļēāļĒāđ€āļ˜āļĢāļ” āļŦāļĢāļ·āļ­ āđ‚āļĄāđ€āļ”āļĨ āļĄāļąāļĨāļ•āļīāđ€āļ˜āļĢāļ”  Multithreading Models āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”  Threading Issues āļžāļĩāđ€āļ˜āļĢāļ”  Pthreads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒāđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ  Windows XP Threads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļĨāļĩāļ™āļļāļāļ‹āđŒ  Linux Threads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļē  Java Threads
āđ‚āļ›āļĢāđ€āļ‹āļŠāđāļšāļšāđ€āļ˜āļĢāļ”āđ€āļ”āļĩāļĒāļ§āđāļĨāļ°āđāļšāļšāļĄāļąāļĨāļ•āļīāđ€āļ˜āļĢāļ”  Single and Multithreaded Processes
āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļš āļĄāļĩāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ—āļĩāđˆāļĢāļ§āļ”āđ€āļĢāđ‡āļ§  Responsiveness āļĄāļĩāļāļēāļĢāđāļšāđˆāļ‡āļŠāļĢāļĢāļ—āļĢāļąāļžāļĒāļēāļāļĢāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™  Resource Sharing āļ›āļĢāļ°āļŦāļĒāļąāļ”  Economy āļāđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ āļŠāļģāļŦāļĢāļąāļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđāļšāļš  MP Utilization of MP Architectures
āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰  User Threads āļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ˜āļĢāļ”āļāļĢāļ°āļ—āļģāđ‚āļ”āļĒāđ€āļ˜āļĢāļ”āđ„āļĨāļšāļēāļĢāļĩāļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰ āđ€āļ˜āļĢāļ”āđ„āļĨāļšāļēāļĢāļĩ āļŠāļēāļĄāđ€āļ˜āļĢāļ”āļŦāļĨāļąāļ 1 POSIX Pthreads 2  āļˆāļēāļ§āļēāđ€āļ˜āļĢāļ”  Java threads 3  āļ§āļīāļ™  32   āđ€āļ˜āļĢāļ”  Win32 threads
āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨ  Kernel Threads āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ‚āļ”āļĒāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨ āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™ āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒ āđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ āļŦāļĢāļ·āļ­  2000 Windows XP/2000 āđ‚āļ‹āļĨāļēāļĢāļīāļŠ  Solaris āļĨāļīāļ™āļļāļāļ‹āđŒ  Linux āļ—āļĢāļđ 64  āļĒāļđāļ™āļīāļāļ‹āđŒ  Tru64 UNIX āđāļĄāļ āđ‚āļ­āđ€āļ­āļŠ āđ€āļ­āđ‡āļāļ‹āđŒ  Mac OS X
āļ•āļąāļ§āđāļšāļš ( āđ‚āļĄāđ€āļ”āļĨ )  āđƒāļ™āļāļēāļĢāļ—āļģāļĄāļąāļĨāļ•āļīāđ€āļ˜āļĢāļ”  Multithreading Models Many-to-One One-to-One Many-to-Many
Many-to-One āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļŦāļĨāļēāļĒāđ† āđ€āļ˜āļĢāļ”āļ–āļđāļāđāļĄāļžāđ€āļ‚āđ‰āļēāļāļąāļšāđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļžāļĩāļĒāļ‡āđ€āļ˜āļĢāļ”āđ€āļ”āļĩāļĒāļ§ āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™  āđ‚āļ‹āļĨāļēāļĢāļīāļŠāļāļĢāļĩāļ™āđ€āļ˜āļĢāļ”  Solaris Green Threads āļˆāļĩāļ™āļđāļžāļ­āļĢāđŒāļ—āđ€āļ—āđ€āļšāļīāļĨāđ€āļ˜āļĢāļ”  GNU Portable Threads
Many-to-One Model
One-to-One āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļŦāļ™āļķāđˆāļ‡āđ€āļ˜āļĢāļ” āđāļĄāļžāļāļąāļšāļŦāļ™āļķāđˆāļ‡āđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļ˜āļĢāļ”  āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™  āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒ āđ€āļ­āđ‡āļ™āļ—āļĩ āđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ āđāļĨāļ°  2000 Windows NT/XP/2000 āļĨāļīāļ™āļļāļāļ‹āđŒ  Linux āđ‚āļ‹āļĨāļēāļĢāļīāļŠ āļ•āļąāđ‰āļ‡āđāļ•āđˆāļĢāļļāđˆāļ™āļ—āļĩāđˆ  9  āđ€āļ›āđ‡āļ™āļ•āđ‰āļ™āđ„āļ›  Solaris 9 and later
One-to-one Model
Many-to-Many Model āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰ āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļŦāļĨāļēāļĒāđ€āļ˜āļĢāļ”āļŠāļēāļĄāļēāļĢāļ–āđāļĄāļžāļāļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļ˜āļĢāļ”āļŦāļĨāļēāļĒāđ€āļ˜āļĢāļ”  āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ„āļ”āđ‰āļ•āļēāļĄāļˆāļģāļ™āļ§āļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ āđ‚āļ‹āļĨāļēāļĢāļīāļŠāđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļ•āļąāļ§āđāļšāļšāļ™āļĩāđ‰āļ•āļąāđ‰āļ‡āđāļ•āđˆāļĢāļļāđˆāļ™āļ—āļĩāđˆ  9  āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒ āđ€āļ­āđ‡āļ™āļ—āļĩ  2000  āđƒāļŠāđ‰āđāļžāđ‡āļāđ€āļāļˆ āđ€āļ˜āļĢāļ”āđ„āļŸāđ€āļšāļ­āļĢāđŒ  ThreadFiber  package
Many-to-Many Model
āļ•āļąāļ§āđāļšāļšāđāļšāļšāļŠāļ­āļ‡āļĢāļ°āļ”āļąāļš  Two-level Model āļĄāļĩāļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļˆāļēāļ  M:M  āļĒāļāđ€āļ§āđ‰āļ™āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļāļąāļšāđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļ‚āđ‰āļēāđ„āļ§āđ‰āļ”āđ‰āļ§āļĒāļāļąāļ™  āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™  IRIX HP-UX Tru64 UNIX Solaris 8  āđāļĨāļ°āļĢāļļāđˆāļ™āļ–āļąāļ”āđ„āļ›
Two-level Model
āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”  Threading Issues āļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāļĢāļ°āļšāļšāļ”āđ‰āļ§āļĒ  fork()  āđāļĨāļ°  exec() āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđ€āļ˜āļĢāļ”  āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļąāļšāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļ•āđˆāļēāļ‡āđ†  āđ€āļ˜āļĢāļ”āļžāļđāļĨ āļŦāļĢāļ·āļ­āđāļŦāļĨāđˆāļ‡āļĢāļ§āļĄāđ€āļ˜āļĢāļ”  āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ‰āļžāļēāļ°āļŠāļģāļŦāļĢāļąāļšāđ€āļ˜āļĢāļ”  āļāļēāļĢāļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ‡āļēāļ™āļāļēāļĢāļāļĢāļ°āļ•āļļāđ‰āļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™
Semantics of fork() and exec() Does  fork()  duplicate only the calling thread or all threads?
āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđ€āļ˜āļĢāļ”  Thread Cancellation āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āļāđˆāļ­āļ™āļ—āļĩāđˆāļˆāļ°āļ—āļģāļ‡āļēāļ™āđ€āļŠāļĢāđ‡āļˆāļŠāļīāđ‰āļ™  āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđāļšāļšāđ„āļĄāđˆāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ  Asynchronous cancellation   āļ—āļģāđƒāļŦāđ‰āđ€āļ˜āļĢāļ”āļ™āļąāđ‰āļ™āļŠāļīāđ‰āļ™āļŠāļļāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ‚āļ”āļĒāļ—āļąāļ™āļ—āļĩāļ—āļąāļ™āđƒāļ”  āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđāļšāļšāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ  Deferred cancellation   āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđ€āļ˜āļĢāļ”āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļĒāļāđ€āļĨāļīāļ āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ–āļķāļ‡āļ„āļ§āļēāļĄāđ€āļŦāļĄāļēāļ°āļŠāļĄāļ§āđˆāļēāļĒāļēāļĄāļēāļĢāļ–āļĒāļāđ€āļĨāļīāļāđ„āļ”āđ‰āļŦāļĢāļ·āļ­āđ„āļĄāđˆāļāđˆāļ­āļ™
āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“  Signal Handling āļĢāļ°āļšāļšāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļ–āļđāļāļ™āļģāļĄāļēāđƒāļŠāđ‰āđƒāļ™āļĢāļ°āļšāļšāļĒāļđāļ™āļīāļāļ‹āđŒ āđ€āļžāļ·āđˆāļ­āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļ§āđˆāļēāđ€āļāļīāļ”āđ€āļŦāļ•āļļāļāļēāļĢāđƒāļ”āđ† āļ‚āļķāđ‰āļ™  āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđāļšāļšāđ€āļ”āļĩāđˆāļĒāļ§  A  signal handler   āđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ‚āļ›āļĢāđ€āļ‹āļŠ 1.  āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļ–āļđāļāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āđ‚āļ”āļĒāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļ•āđˆāļēāļ‡āđ†  2.  āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļˆāļ°āļ–āļđāļāļŠāđˆāļ‡āđƒāļŦāđ‰āļāļąāļšāđ‚āļ›āļĢāđ€āļ‹āļŠ 3.  āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢ āļāļēāļĢāđ€āļĨāļ·āļ­āļāļŠāļĢāļĢ āļāļēāļĢāļŠāđˆāļ‡āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ›āļĒāļąāļ‡āđ€āļ˜āļĢāļ” āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļĢāļąāļšāļĢāļđāđ‰āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“ āļāļēāļĢāļŠāđˆāļ‡āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ›āļĒāļąāļ‡āļ—āļļāļāđ† āđ€āļ˜āļĢāļ”āđƒāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠ āļāļēāļĢāļŠāđˆāļ‡āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ›āļĒāļąāļ‡āđ€āļ˜āļĢāļ”āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āđƒāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠ āļāļēāļĢāļāļģāļŦāļ™āļ”āđ€āļ˜āļĢāļ”āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđ€āļ‰āļžāļēāļ°āļŦāļ™āļķāđˆāļ‡āļĢāļąāļšāļ—āļļāļāđ† āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ€āļžāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠ
āđāļŦāļĨāđˆāļ‡āļĢāļ§āļĄāđ€āļ˜āļĢāļ” āļŦāļĢāļ·āļ­āđ€āļ˜āļĢāļ”āļžāļđāļĨ  Thread Pools āļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āļ‚āļķāđ‰āļ™āļˆāļģāļ™āļ§āļ™āļŦāļ™āļķāđˆāļ‡āđ€āļāđ‡āļšāđ„āļ§āđ‰āđƒāļ™āđ€āļ˜āļĢāļ”āļžāļđāļĨāđ€āļĄāļ·āđˆāļ­āđ€āļ˜āļĢāļ”āļ™āļąāđ‰āļ™āļ•āđ‰āļ­āļ‡āļĢāļ­āļ„āļ­āļĒāđƒāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™ āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ  āđāļšāđˆāļ‡āļ‡āļēāļ™āļšāļĢāļīāļāļēāļĢāļ­āļ­āļāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒāđ† āļ—āļģāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āļĢāļ§āļ”āđ€āļĢāđ‡āļ§ āđ‚āļ”āļĒāđ€āļ˜āļĢāļ”āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđ€āļ”āļīāļĄāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āđƒāļŦāļĄāđˆāļ‚āļķāđ‰āļ™āđ„āļ”āđ‰ āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļˆāļģāļ™āļ§āļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āđƒāļ™āđāļ­āļžāļžāļĨāļīāđ€āļ„āļŠāļąāđˆāļ™āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āđƒāļŦāđ‰āļœāļđāļāļžāļąāļ™āļāļąāļšāļ‚āļ™āļēāļ”āļ‚āļ­āļ‡āđāļŦāļĨāđˆāļ‡āļĢāļ§āļĄāđ€āļ˜āļĢāļ”āļŦāļĢāļ·āļ­āđ€āļ˜āļĢāļ”āļžāļđāļĨāđ„āļ”āđ‰
āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ‰āļžāļēāļ°āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”  Thread Specific Data āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđ€āļ˜āļĢāļ”āđāļ•āđˆāļĨāļ°āđ€āļ˜āļĢāļ”āļŠāļēāļĄāļēāļĢāļ–āļĄāļĩāļŠāļģāđ€āļ™āļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ›āđ‡āļ™āļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡  āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļĄāļēāļāđ€āļĄāļ·āđˆāļ­ āļ„āļļāļ“āđ„āļĄāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāđƒāļ™āļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”  ( āļ­āļēāļ—āļī āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰āđ€āļ˜āļĢāļ”āļžāļđāļĨ )
āļāļēāļĢāļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ‡āļēāļ™āļāļēāļĢāļāļĢāļ°āļ•āļļāđ‰āļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™ Scheduler Activations āļ—āļąāđ‰āļ‡  M:M  āđāļĨāļ° āļ—āļąāđ‰āļ‡āļ•āļąāļ§āđāļšāļšāļŠāļ­āļ‡āļĢāļ°āļ”āļąāļš āļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢ āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāļˆāļģāļ™āļ§āļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđƒāļ™āđāļ­āļžāļžāļĨāļīāđ€āļ„āļŠāļąāđˆāļ™  āļ•āļąāļ§āļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ‡āļēāļ™āļāļēāļĢāļāļĢāļ°āļ•āļļāđ‰āļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āđāļšāļš āđ€āļĢāļĩāļĒāļāļ‚āļķāđ‰āļ™  upcalls  āļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļĨāđ„āļāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļˆāļēāļāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ„āļ›āļĒāļąāļ‡āđ€āļ˜āļĢāļ”āđ„āļĨāļšāļĢāļēāļĢāļĩāđˆ āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļ™āļĩāđ‰āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđāļ­āļžāļžāļĨāļīāđ€āļ„āļŠāļąāđˆāļ™āļŠāļēāļĄāļēāļĢāļ–āļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđƒāļŦāđ‰āļĄāļĩāļˆāļģāļ™āļ§āļ™āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡
Pthreads āļĄāļēāļ•āļĢāļāļēāļ™  POSIX (IEEE 1003.1c) API  āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ” āđāļĨāļ°āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ API  āļˆāļ°āļāļģāļŦāļ™āļ”āļžāļĪāļ•āļīāļāļĢāļĢāļĄāļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āđ„āļĨāļšāļĢāļēāļĢāļĩāđˆ āļāļēāļĢāļ™āļģāđ„āļ›āđƒāļŠāđ‰āļ‡āļēāļ™āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļāļēāļĢāļžāļąāļ’āļ™āļēāđ„āļĨāļšāļĢāļēāļĢāļĩāđˆ āđ‚āļ”āļĒāļ›āļāļ•āļīāļĄāļĩāđƒāļŠāđ‰āļ­āļĒāļđāđˆāđƒāļ™ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļđāļ™āļīāļāļŠāđŒ  ( āđ‚āļ‹āļĨāļēāļĢāļīāļŠ āļĨāļīāļ™āļļāļāļ‹āđŒ āđāļĄāđ‡āļāđ‚āļ­āđ€āļ­āļŠāđ€āļ­āđ‡āļāļ‹āđŒ )
āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒāđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ  Windows XP Threads āđƒāļŠāđ‰āļāļēāļĢāđāļĄāļžāđāļšāļš  One to One  āđāļ•āđˆāļĨāļ°āđ€āļ˜āļĢāļ”āļ›āļĢāļ°āļāļ­āļšāđ„āļ›āļ”āđ‰āļ§āļĒ  āđ€āļ˜āļĢāļ”āđ„āļ­āļ”āļĩ  thread id āđ€āļ‹āđ‡āļ•āļ‚āļ­āļ‡āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ  Register set āđāļšāđˆāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđāļŠāļ•āđ‡āļāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļāļąāļšāļ‚āļ­āļ‡āđ€āļ„āļ­āļĢāđŒāđāļ™āļĨ  Separate user and kernel stacks āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāđ„āļžāļĢāđ€āļ§āļ— ( āđāļšāļšāđ€āļ‰āļžāļēāļ°āļ•āļąāļ§ )  Private data storage area āđ€āļ‹āđ‡āļ•āļ‚āļ­āļ‡āļĢāļĩāļˆāļĩāļŠāđ€āļ•āļ­āļĢāđŒ āđāļŠāļ•āđ‡āļ āđāļĨāļ° āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāđ„āļžāļĢāđ€āļ§āļ— āļĢāļ§āļĄāđ€āļĢāļĩāļĒāļāļ§āđˆāļēāļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŦāļĢāļ·āļ­āļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ  context   āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”  āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ” āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ ETHREAD (executive thread block) KTHREAD (kernel thread block) TEB (thread environment block)
āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļĨāļĩāļ™āļļāļāļ‹āđŒ  Linux Threads āđƒāļ™āļĢāļ°āļšāļšāļĨāļĩāļ™āļļāļāļ‹āđŒāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āđ‚āļ”āļĒāđ€āļĢāļĩāļĒāļāļ§āđˆāļē āļ—āļēāļŠāļ„āđŒāļŦāļĢāļ·āļ­āļ‡āļēāļ™ āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āđ€āļ˜āļĢāļ”  āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđ„āļ”āđ‰āđ‚āļ”āļĒāļāļēāļĢāđ€āļĢāļĩāļĒāļāļĢāļ°āļšāļšāļ”āđ‰āļ§āļĒāļ„āļģāļŠāļąāđˆāļ‡  clone() āļ„āļģāļŠāļąāđˆāļ‡  clone()  āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļ—āļēāļŠāļ„āđŒāļĨāļđāļāļŠāļēāļĄāļēāļĢāļ–āļĢāđˆāļ§āļĄāđƒāļŠāđ‰āļžāļ·āđ‰āļ™āļ—āļĩāđˆāđāļ­āļ”āđ€āļ”āļĢāļŠāļŦāļĢāļ·āļ­ āđāļ­āļ”āđ€āļ”āļĢāļŠāļŠāđ€āļ›āļ‹ āļ‚āļ­āļ‡āļ—āļēāļŠāļ„āđŒāļ•āđ‰āļ™āļāļģāđ€āļ™āļīāļ”  ( āđ‚āļ›āļĢāđ€āļ‹āļŠ )
āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļē  Java Threads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļēāļ–āļđāļāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ‚āļ”āļĒ  JVM Java Virtual Machine  āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļēāļ­āļēāļˆāļ–āļđāļāļŠāļĢāđ‰āļēāļ‡āđ‚āļ”āļĒ  āļāļēāļĢāļ‚āļĒāļēāļĒāļ„āļĨāļēāļŠāļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”  āļāļēāļĢāđƒāļŠāđ‰āļ­āļīāļ™āđ€āļ•āļ­āļĢāđŒāđ€āļŸāļŠāļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļĢāļąāļ™āđ„āļ”āđ‰
āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āđƒāļ™āļˆāļēāļ§āļē  Java Thread States

More Related Content

PPT
Operating System Chapter 4
PPT
Operating System Chapter 1
PPT
Operating System Chapter 2
PPT
Ch06th
PPT
Ch10th
PPT
Ch09th
PPT
Operating System Chapter 3
PPT
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)
Operating System Chapter 4
Operating System Chapter 1
Operating System Chapter 2
Ch06th
Ch10th
Ch09th
Operating System Chapter 3
10 ca-mass-storage system structure (wichet p.'s conflicted copy 2012-12-17)

What's hot (20)

PPT
Ch11th
PPT
1 āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļĨāļ°āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
PPT
Ch07ath
PPT
Ch08th
PDF
Linux Memory Management
PPTX
Application Performance and Flexibility on ExoKernel Systems
 
PDF
2 4āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļœāļąāļ‡āļ‡āļēāļ™āļ—āļģāļ‹āđ‰āļģ
PPT
Understanding operating systems 5th ed ch06
PPT
Direct Attached Storage CONCEPTS
PPT
Linux memory
PDF
āļŦāļ™āđˆāļ§āļĒāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļĩāđˆ 1 āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ
PPTX
Application Performance & Flexibility on Exokernel Systems paper review
DOC
Dns server
 
PDF
Course 102: Lecture 14: Users and Permissions
PPT
Introduction of os and types
PPTX
Linux Memory Management
PDF
The NFS Version 4 Protocol
PDF
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđ€āļžāļˆāļ”āđ‰āļ§āļĒāļ āļēāļĐāļē Html
PPTX
Linux startup
PPTX
Basics of storage Technology
Ch11th
1 āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļĨāļ°āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ
Ch07ath
Ch08th
Linux Memory Management
Application Performance and Flexibility on ExoKernel Systems
 
2 4āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļœāļąāļ‡āļ‡āļēāļ™āļ—āļģāļ‹āđ‰āļģ
Understanding operating systems 5th ed ch06
Direct Attached Storage CONCEPTS
Linux memory
āļŦāļ™āđˆāļ§āļĒāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰āļ—āļĩāđˆ 1 āļžāļ·āđ‰āļ™āļāļēāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ
Application Performance & Flexibility on Exokernel Systems paper review
Dns server
 
Course 102: Lecture 14: Users and Permissions
Introduction of os and types
Linux Memory Management
The NFS Version 4 Protocol
āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ§āđ‡āļšāđ€āļžāļˆāļ”āđ‰āļ§āļĒāļ āļēāļĐāļē Html
Linux startup
Basics of storage Technology
Ad

Viewers also liked (20)

PPT
āļāļ­āļ‡āļ—āļļāļ™āļ—āđˆāļēāļˆāļĩāļ™
PPT
Ec2009 ch11 electronic payment systems
PPT
4 ca-process structure
PPT
Ec2009 ch12 legal ethical and social
PPT
Ec2009 ch01 overview of electronic commerce
PPT
SA Chapter 13
PPT
SA Chapter 14
PPT
SA Chapter 12
PPT
SA Chapter 11
PPT
āļĄāļēāļ•āļĢāļāļēāļ™āļœāļĨāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰
PPT
Chapter 1: Introduction to Operating System
PDF
CPU Scheduling
PPTX
āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ
PPT
Ch 2 process
PPTX
āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
PPT
Os ch02
PPTX
āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
āļāļ­āļ‡āļ—āļļāļ™āļ—āđˆāļēāļˆāļĩāļ™
Ec2009 ch11 electronic payment systems
4 ca-process structure
Ec2009 ch12 legal ethical and social
Ec2009 ch01 overview of electronic commerce
SA Chapter 13
SA Chapter 14
SA Chapter 12
SA Chapter 11
āļĄāļēāļ•āļĢāļāļēāļ™āļœāļĨāļāļēāļĢāđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰
Chapter 1: Introduction to Operating System
CPU Scheduling
āļāļēāļĢāļˆāļąāļ”āđ€āļ§āļĨāļēāđ‚āļ›āļĢāđ€āļ‹āļŠ
Ch 2 process
āļŠāļ–āļēāļ™āļ°āļ‚āļ­āļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
Os ch02
āļāļēāļĢāļ•āļīāļ”āļ•āđˆāļ­āļŠāļ·āđˆāļ­āļŠāļēāļĢāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ‚āļ›āļĢāđ€āļ‹āļŠ
Ad

Similar to Operating System Chapter 5 (17)

PDF
āļšāļ—āļ—āļĩāđˆ 4 āļŦāļĨāļąāļāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™ āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
PDF
Manual setup cned model
PPTX
āļāļĨāļļāđˆāļĄ6
DOCX
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ57
PDF
software
PDF
āļĢāļ°āļšāļšāļ›āļŽāļīāļšāļąāļ•āļīāļāļēāļĢ āļ›āļ§āļŠ
PDF
Powerpoint templat3 1_
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
PPT
Os
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ€āļœāļĒāđāļžāļĢāđˆ
PDF
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ‚āļ›āļĢāđ€āļˆāđ‡āļ„āđ€āļ§āļīāļĢāđŒāļ„
DOCX
āļ‡āļēāļ™āļ˜āļīāļ”āļēāļĢāļąāļ•āļ™āđŒ
āļšāļ—āļ—āļĩāđˆ 4 āļŦāļĨāļąāļāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™ āļĢāļ°āļ”āļąāļš āļ›āļ§āļŠ. āļ§āļīāļ—āļĒāļēāļĨāļąāļĒāļ­āļēāļŠāļĩāļ§āļĻāļķāļāļĐāļēāļ‚āļ­āļ™āđāļāđˆāļ™
Manual setup cned model
āļāļĨāļļāđˆāļĄ6
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄ57
software
āļĢāļ°āļšāļšāļ›āļŽāļīāļšāļąāļ•āļīāļāļēāļĢ āļ›āļ§āļŠ
Powerpoint templat3 1_
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āđ€āļœāļĒāđāļžāļĢāđˆāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ­āļ­āļ™āđ„āļĨāļ™āđŒ
Os
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ€āļœāļĒāđāļžāļĢāđˆ
āđ‚āļ„āļĢāļ‡āļ‡āļēāļ™āđ‚āļ›āļĢāđ€āļˆāđ‡āļ„āđ€āļ§āļīāļĢāđŒāļ„
āļ‡āļēāļ™āļ˜āļīāļ”āļēāļĢāļąāļ•āļ™āđŒ

More from Nuth Otanasap (20)

PPT
SA Chapter 10
PPT
SA Chapter 9
PPT
SA Chapter 8
PPT
SA Chapter 7
PPT
SA Chapter 6
PPT
SA Chapter 5
PPT
SA Chapter 4
PPT
SA Chapter 3
PPT
SA Chapter 2
PPT
Ec2009 ch14 creating and launching
PPT
Ec2009 ch15 e commerce strategy
PPT
Ec2009 ch10 e commerce security
PPT
Ec2009 ch09 auctions
PPT
Ec2009 ch08 mobile commerce and pervasive computing
PPT
Ec2009 ch07 e government e-learning e-supply chains collaborative commerce an...
PPT
Ec2009 ch06 company centric b2-b and e-procurement public b2b exchanges and p...
PPT
Ec2009 ch05 online advertising
PPT
Ec2009 ch04 consumer behavior
PPT
Ec2009 ch03 retailing in electronic commerce
PPT
Ec2009 ch02 e marketplaces
SA Chapter 10
SA Chapter 9
SA Chapter 8
SA Chapter 7
SA Chapter 6
SA Chapter 5
SA Chapter 4
SA Chapter 3
SA Chapter 2
Ec2009 ch14 creating and launching
Ec2009 ch15 e commerce strategy
Ec2009 ch10 e commerce security
Ec2009 ch09 auctions
Ec2009 ch08 mobile commerce and pervasive computing
Ec2009 ch07 e government e-learning e-supply chains collaborative commerce an...
Ec2009 ch06 company centric b2-b and e-procurement public b2b exchanges and p...
Ec2009 ch05 online advertising
Ec2009 ch04 consumer behavior
Ec2009 ch03 retailing in electronic commerce
Ec2009 ch02 e marketplaces

Operating System Chapter 5

  • 1. āļšāļ—āļ—āļĩāđˆ 5 āđ€āļ˜āļĢāļ” Threads āļšāļ—āļ™āļģ Overview āļ•āļąāļ§āđāļšāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āđāļšāļšāļŦāļĨāļēāļĒāđ€āļ˜āļĢāļ” āļŦāļĢāļ·āļ­ āđ‚āļĄāđ€āļ”āļĨ āļĄāļąāļĨāļ•āļīāđ€āļ˜āļĢāļ” Multithreading Models āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ” Threading Issues āļžāļĩāđ€āļ˜āļĢāļ” Pthreads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒāđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ Windows XP Threads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļĨāļĩāļ™āļļāļāļ‹āđŒ Linux Threads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļē Java Threads
  • 3. āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļš āļĄāļĩāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ—āļĩāđˆāļĢāļ§āļ”āđ€āļĢāđ‡āļ§ Responsiveness āļĄāļĩāļāļēāļĢāđāļšāđˆāļ‡āļŠāļĢāļĢāļ—āļĢāļąāļžāļĒāļēāļāļĢāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ Resource Sharing āļ›āļĢāļ°āļŦāļĒāļąāļ” Economy āļāđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ āļŠāļģāļŦāļĢāļąāļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđāļšāļš MP Utilization of MP Architectures
  • 4. āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰ User Threads āļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ˜āļĢāļ”āļāļĢāļ°āļ—āļģāđ‚āļ”āļĒāđ€āļ˜āļĢāļ”āđ„āļĨāļšāļēāļĢāļĩāļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰ āđ€āļ˜āļĢāļ”āđ„āļĨāļšāļēāļĢāļĩ āļŠāļēāļĄāđ€āļ˜āļĢāļ”āļŦāļĨāļąāļ 1 POSIX Pthreads 2 āļˆāļēāļ§āļēāđ€āļ˜āļĢāļ” Java threads 3 āļ§āļīāļ™ 32 āđ€āļ˜āļĢāļ” Win32 threads
  • 5. āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨ Kernel Threads āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ‚āļ”āļĒāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨ āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™ āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒ āđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ āļŦāļĢāļ·āļ­ 2000 Windows XP/2000 āđ‚āļ‹āļĨāļēāļĢāļīāļŠ Solaris āļĨāļīāļ™āļļāļāļ‹āđŒ Linux āļ—āļĢāļđ 64 āļĒāļđāļ™āļīāļāļ‹āđŒ Tru64 UNIX āđāļĄāļ āđ‚āļ­āđ€āļ­āļŠ āđ€āļ­āđ‡āļāļ‹āđŒ Mac OS X
  • 6. āļ•āļąāļ§āđāļšāļš ( āđ‚āļĄāđ€āļ”āļĨ ) āđƒāļ™āļāļēāļĢāļ—āļģāļĄāļąāļĨāļ•āļīāđ€āļ˜āļĢāļ” Multithreading Models Many-to-One One-to-One Many-to-Many
  • 7. Many-to-One āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļŦāļĨāļēāļĒāđ† āđ€āļ˜āļĢāļ”āļ–āļđāļāđāļĄāļžāđ€āļ‚āđ‰āļēāļāļąāļšāđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļžāļĩāļĒāļ‡āđ€āļ˜āļĢāļ”āđ€āļ”āļĩāļĒāļ§ āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™ āđ‚āļ‹āļĨāļēāļĢāļīāļŠāļāļĢāļĩāļ™āđ€āļ˜āļĢāļ” Solaris Green Threads āļˆāļĩāļ™āļđāļžāļ­āļĢāđŒāļ—āđ€āļ—āđ€āļšāļīāļĨāđ€āļ˜āļĢāļ” GNU Portable Threads
  • 9. One-to-One āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļŦāļ™āļķāđˆāļ‡āđ€āļ˜āļĢāļ” āđāļĄāļžāļāļąāļšāļŦāļ™āļķāđˆāļ‡āđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļ˜āļĢāļ” āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™ āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒ āđ€āļ­āđ‡āļ™āļ—āļĩ āđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ āđāļĨāļ° 2000 Windows NT/XP/2000 āļĨāļīāļ™āļļāļāļ‹āđŒ Linux āđ‚āļ‹āļĨāļēāļĢāļīāļŠ āļ•āļąāđ‰āļ‡āđāļ•āđˆāļĢāļļāđˆāļ™āļ—āļĩāđˆ 9 āđ€āļ›āđ‡āļ™āļ•āđ‰āļ™āđ„āļ› Solaris 9 and later
  • 11. Many-to-Many Model āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰ āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļŦāļĨāļēāļĒāđ€āļ˜āļĢāļ”āļŠāļēāļĄāļēāļĢāļ–āđāļĄāļžāļāļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļ˜āļĢāļ”āļŦāļĨāļēāļĒāđ€āļ˜āļĢāļ” āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢ āļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ„āļ”āđ‰āļ•āļēāļĄāļˆāļģāļ™āļ§āļ™āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢ āđ‚āļ‹āļĨāļēāļĢāļīāļŠāđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļ•āļąāļ§āđāļšāļšāļ™āļĩāđ‰āļ•āļąāđ‰āļ‡āđāļ•āđˆāļĢāļļāđˆāļ™āļ—āļĩāđˆ 9 āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒ āđ€āļ­āđ‡āļ™āļ—āļĩ 2000 āđƒāļŠāđ‰āđāļžāđ‡āļāđ€āļāļˆ āđ€āļ˜āļĢāļ”āđ„āļŸāđ€āļšāļ­āļĢāđŒ ThreadFiber package
  • 13. āļ•āļąāļ§āđāļšāļšāđāļšāļšāļŠāļ­āļ‡āļĢāļ°āļ”āļąāļš Two-level Model āļĄāļĩāļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļˆāļēāļ M:M āļĒāļāđ€āļ§āđ‰āļ™āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļĢāļ°āļŦāļ§āđˆāļēāļ‡āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāļœāļđāđ‰āđƒāļŠāđ‰āļāļąāļšāđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ€āļ‚āđ‰āļēāđ„āļ§āđ‰āļ”āđ‰āļ§āļĒāļāļąāļ™ āļ­āļēāļ—āļīāđ€āļŠāđˆāļ™ IRIX HP-UX Tru64 UNIX Solaris 8 āđāļĨāļ°āļĢāļļāđˆāļ™āļ–āļąāļ”āđ„āļ›
  • 15. āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ” Threading Issues āļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāļĢāļ°āļšāļšāļ”āđ‰āļ§āļĒ fork() āđāļĨāļ° exec() āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđ€āļ˜āļĢāļ” āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļąāļšāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļ•āđˆāļēāļ‡āđ† āđ€āļ˜āļĢāļ”āļžāļđāļĨ āļŦāļĢāļ·āļ­āđāļŦāļĨāđˆāļ‡āļĢāļ§āļĄāđ€āļ˜āļĢāļ” āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ‰āļžāļēāļ°āļŠāļģāļŦāļĢāļąāļšāđ€āļ˜āļĢāļ” āļāļēāļĢāļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ‡āļēāļ™āļāļēāļĢāļāļĢāļ°āļ•āļļāđ‰āļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™
  • 16. Semantics of fork() and exec() Does fork() duplicate only the calling thread or all threads?
  • 17. āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđ€āļ˜āļĢāļ” Thread Cancellation āļāļēāļĢāļŠāļīāđ‰āļ™āļŠāļļāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āļāđˆāļ­āļ™āļ—āļĩāđˆāļˆāļ°āļ—āļģāļ‡āļēāļ™āđ€āļŠāļĢāđ‡āļˆāļŠāļīāđ‰āļ™ āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđāļšāļšāđ„āļĄāđˆāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ Asynchronous cancellation āļ—āļģāđƒāļŦāđ‰āđ€āļ˜āļĢāļ”āļ™āļąāđ‰āļ™āļŠāļīāđ‰āļ™āļŠāļļāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ‚āļ”āļĒāļ—āļąāļ™āļ—āļĩāļ—āļąāļ™āđƒāļ” āļāļēāļĢāļĒāļāđ€āļĨāļīāļāđāļšāļšāđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ Deferred cancellation āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđ€āļ˜āļĢāļ”āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļĒāļāđ€āļĨāļīāļ āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ–āļķāļ‡āļ„āļ§āļēāļĄāđ€āļŦāļĄāļēāļ°āļŠāļĄāļ§āđˆāļēāļĒāļēāļĄāļēāļĢāļ–āļĒāļāđ€āļĨāļīāļāđ„āļ”āđ‰āļŦāļĢāļ·āļ­āđ„āļĄāđˆāļāđˆāļ­āļ™
  • 18. āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“ Signal Handling āļĢāļ°āļšāļšāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļ–āļđāļāļ™āļģāļĄāļēāđƒāļŠāđ‰āđƒāļ™āļĢāļ°āļšāļšāļĒāļđāļ™āļīāļāļ‹āđŒ āđ€āļžāļ·āđˆāļ­āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āđ‚āļ›āļĢāđ€āļ‹āļŠāļ§āđˆāļēāđ€āļāļīāļ”āđ€āļŦāļ•āļļāļāļēāļĢāđƒāļ”āđ† āļ‚āļķāđ‰āļ™ āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāđāļšāļšāđ€āļ”āļĩāđˆāļĒāļ§ A signal handler āđƒāļŠāđ‰āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ‚āļ›āļĢāđ€āļ‹āļŠ 1. āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļ–āļđāļāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āđ‚āļ”āļĒāđ€āļŦāļ•āļļāļāļēāļĢāļ“āđŒāļ•āđˆāļēāļ‡āđ† 2. āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āļˆāļ°āļ–āļđāļāļŠāđˆāļ‡āđƒāļŦāđ‰āļāļąāļšāđ‚āļ›āļĢāđ€āļ‹āļŠ 3. āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢ āļāļēāļĢāđ€āļĨāļ·āļ­āļāļŠāļĢāļĢ āļāļēāļĢāļŠāđˆāļ‡āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ›āļĒāļąāļ‡āđ€āļ˜āļĢāļ” āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļĢāļąāļšāļĢāļđāđ‰āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“ āļāļēāļĢāļŠāđˆāļ‡āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ›āļĒāļąāļ‡āļ—āļļāļāđ† āđ€āļ˜āļĢāļ”āđƒāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠ āļāļēāļĢāļŠāđˆāļ‡āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ„āļ›āļĒāļąāļ‡āđ€āļ˜āļĢāļ”āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āđƒāļ™āđ‚āļ›āļĢāđ€āļ‹āļŠ āļāļēāļĢāļāļģāļŦāļ™āļ”āđ€āļ˜āļĢāļ”āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđ€āļ‰āļžāļēāļ°āļŦāļ™āļķāđˆāļ‡āļĢāļąāļšāļ—āļļāļāđ† āļ­āļēāļ™āļąāļ•āļīāļŠāļąāļāļāļēāļ“āđ€āļžāļ·āđˆāļ­āđ‚āļ›āļĢāđ€āļ‹āļŠ
  • 19. āđāļŦāļĨāđˆāļ‡āļĢāļ§āļĄāđ€āļ˜āļĢāļ” āļŦāļĢāļ·āļ­āđ€āļ˜āļĢāļ”āļžāļđāļĨ Thread Pools āļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āļ‚āļķāđ‰āļ™āļˆāļģāļ™āļ§āļ™āļŦāļ™āļķāđˆāļ‡āđ€āļāđ‡āļšāđ„āļ§āđ‰āđƒāļ™āđ€āļ˜āļĢāļ”āļžāļđāļĨāđ€āļĄāļ·āđˆāļ­āđ€āļ˜āļĢāļ”āļ™āļąāđ‰āļ™āļ•āđ‰āļ­āļ‡āļĢāļ­āļ„āļ­āļĒāđƒāļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™ āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ āđāļšāđˆāļ‡āļ‡āļēāļ™āļšāļĢāļīāļāļēāļĢāļ­āļ­āļāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļĒāđˆāļ­āļĒāđ† āļ—āļģāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļ‡āļēāļ™āđ„āļ”āđ‰āļĢāļ§āļ”āđ€āļĢāđ‡āļ§ āđ‚āļ”āļĒāđ€āļ˜āļĢāļ”āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđ€āļ”āļīāļĄāļŠāļēāļĄāļēāļĢāļ–āļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āđƒāļŦāļĄāđˆāļ‚āļķāđ‰āļ™āđ„āļ”āđ‰ āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļˆāļģāļ™āļ§āļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āđƒāļ™āđāļ­āļžāļžāļĨāļīāđ€āļ„āļŠāļąāđˆāļ™āļŠāļēāļĄāļēāļĢāļ–āļāļģāļŦāļ™āļ”āđƒāļŦāđ‰āļœāļđāļāļžāļąāļ™āļāļąāļšāļ‚āļ™āļēāļ”āļ‚āļ­āļ‡āđāļŦāļĨāđˆāļ‡āļĢāļ§āļĄāđ€āļ˜āļĢāļ”āļŦāļĢāļ·āļ­āđ€āļ˜āļĢāļ”āļžāļđāļĨāđ„āļ”āđ‰
  • 20. āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ‰āļžāļēāļ°āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ” Thread Specific Data āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđ€āļ˜āļĢāļ”āđāļ•āđˆāļĨāļ°āđ€āļ˜āļĢāļ”āļŠāļēāļĄāļēāļĢāļ–āļĄāļĩāļŠāļģāđ€āļ™āļēāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļ›āđ‡āļ™āļ‚āļ­āļ‡āļ•āļ™āđ€āļ­āļ‡ āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļĄāļēāļāđ€āļĄāļ·āđˆāļ­ āļ„āļļāļ“āđ„āļĄāđˆāļĄāļĩāļŠāļīāļ—āļ˜āļīāđŒāđƒāļ™āļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāđ‚āļ›āļĢāđ€āļ‹āļŠāđƒāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ” ( āļ­āļēāļ—āļī āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđ‰āđ€āļ˜āļĢāļ”āļžāļđāļĨ )
  • 21. āļāļēāļĢāļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ‡āļēāļ™āļāļēāļĢāļāļĢāļ°āļ•āļļāđ‰āļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™ Scheduler Activations āļ—āļąāđ‰āļ‡ M:M āđāļĨāļ° āļ—āļąāđ‰āļ‡āļ•āļąāļ§āđāļšāļšāļŠāļ­āļ‡āļĢāļ°āļ”āļąāļš āļˆāļģāđ€āļ›āđ‡āļ™āļ•āđ‰āļ­āļ‡āļĄāļĩāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢ āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāļˆāļģāļ™āļ§āļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāđƒāļ™āđāļ­āļžāļžāļĨāļīāđ€āļ„āļŠāļąāđˆāļ™ āļ•āļąāļ§āļˆāļąāļ”āļĨāļģāļ”āļąāļšāļ‡āļēāļ™āļāļēāļĢāļāļĢāļ°āļ•āļļāđ‰āļ™āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđ€āļāļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļĢāļ­āļ‡āļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āđāļšāļš āđ€āļĢāļĩāļĒāļāļ‚āļķāđ‰āļ™ upcalls āļŦāļĄāļēāļĒāļ–āļķāļ‡āļāļĨāđ„āļāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļˆāļēāļāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđ„āļ›āļĒāļąāļ‡āđ€āļ˜āļĢāļ”āđ„āļĨāļšāļĢāļēāļĢāļĩāđˆ āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāļ™āļĩāđ‰āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđāļ­āļžāļžāļĨāļīāđ€āļ„āļŠāļąāđˆāļ™āļŠāļēāļĄāļēāļĢāļ–āļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ˜āļĢāļ”āļĢāļ°āļ”āļąāļšāđ€āļ„āļ­āļĢāđŒāđāļ™āļĨāđƒāļŦāđ‰āļĄāļĩāļˆāļģāļ™āļ§āļ™āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡
  • 22. Pthreads āļĄāļēāļ•āļĢāļāļēāļ™ POSIX (IEEE 1003.1c) API āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ” āđāļĨāļ°āļāļēāļĢāļ—āļģāļ‡āļēāļ™āđ€āļŠāļīāļ‡āļŠāļąāļĄāļžāļąāļ™āļ˜āđŒ API āļˆāļ°āļāļģāļŦāļ™āļ”āļžāļĪāļ•āļīāļāļĢāļĢāļĄāļ‚āļ­āļ‡āđ€āļ˜āļĢāļ”āđ„āļĨāļšāļĢāļēāļĢāļĩāđˆ āļāļēāļĢāļ™āļģāđ„āļ›āđƒāļŠāđ‰āļ‡āļēāļ™āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšāļāļēāļĢāļžāļąāļ’āļ™āļēāđ„āļĨāļšāļĢāļēāļĢāļĩāđˆ āđ‚āļ”āļĒāļ›āļāļ•āļīāļĄāļĩāđƒāļŠāđ‰āļ­āļĒāļđāđˆāđƒāļ™ āļĢāļ°āļšāļšāļ›āļāļīāļšāļąāļ•āļīāļāļēāļĢāļĒāļđāļ™āļīāļāļŠāđŒ ( āđ‚āļ‹āļĨāļēāļĢāļīāļŠ āļĨāļīāļ™āļļāļāļ‹āđŒ āđāļĄāđ‡āļāđ‚āļ­āđ€āļ­āļŠāđ€āļ­āđ‡āļāļ‹āđŒ )
  • 23. āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļ§āļīāļ™āđ‚āļ”āļ§āļŠāđŒāđ€āļ­āđ‡āļāļ‹āđŒāļžāļĩ Windows XP Threads āđƒāļŠāđ‰āļāļēāļĢāđāļĄāļžāđāļšāļš One to One āđāļ•āđˆāļĨāļ°āđ€āļ˜āļĢāļ”āļ›āļĢāļ°āļāļ­āļšāđ„āļ›āļ”āđ‰āļ§āļĒ āđ€āļ˜āļĢāļ”āđ„āļ­āļ”āļĩ thread id āđ€āļ‹āđ‡āļ•āļ‚āļ­āļ‡āļĢāļĩāļˆāļīāļŠāđ€āļ•āļ­āļĢāđŒ Register set āđāļšāđˆāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡ āđāļŠāļ•āđ‡āļāļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļŠāđ‰āļāļąāļšāļ‚āļ­āļ‡āđ€āļ„āļ­āļĢāđŒāđāļ™āļĨ Separate user and kernel stacks āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāđ„āļžāļĢāđ€āļ§āļ— ( āđāļšāļšāđ€āļ‰āļžāļēāļ°āļ•āļąāļ§ ) Private data storage area āđ€āļ‹āđ‡āļ•āļ‚āļ­āļ‡āļĢāļĩāļˆāļĩāļŠāđ€āļ•āļ­āļĢāđŒ āđāļŠāļ•āđ‡āļ āđāļĨāļ° āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļāļēāļĢāļˆāļąāļ”āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāđ„āļžāļĢāđ€āļ§āļ— āļĢāļ§āļĄāđ€āļĢāļĩāļĒāļāļ§āđˆāļēāļ„āļ­āļ™āđ€āļ—āđ‡āļāļ‹āđŒāļŦāļĢāļ·āļ­āļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ context āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ” āđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡āđ€āļ˜āļĢāļ” āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ ETHREAD (executive thread block) KTHREAD (kernel thread block) TEB (thread environment block)
  • 24. āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļĨāļĩāļ™āļļāļāļ‹āđŒ Linux Threads āđƒāļ™āļĢāļ°āļšāļšāļĨāļĩāļ™āļļāļāļ‹āđŒāļ­āđ‰āļēāļ‡āļ­āļīāļ‡āđ‚āļ”āļĒāđ€āļĢāļĩāļĒāļāļ§āđˆāļē āļ—āļēāļŠāļ„āđŒāļŦāļĢāļ·āļ­āļ‡āļēāļ™ āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āđ€āļĢāļĩāļĒāļāļ§āđˆāļē āđ€āļ˜āļĢāļ” āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ€āļ˜āļĢāļ”āļŠāļēāļĄāļēāļĢāļ–āļ—āļģāđ„āļ”āđ‰āđ‚āļ”āļĒāļāļēāļĢāđ€āļĢāļĩāļĒāļāļĢāļ°āļšāļšāļ”āđ‰āļ§āļĒāļ„āļģāļŠāļąāđˆāļ‡ clone() āļ„āļģāļŠāļąāđˆāļ‡ clone() āļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āļ—āļēāļŠāļ„āđŒāļĨāļđāļāļŠāļēāļĄāļēāļĢāļ–āļĢāđˆāļ§āļĄāđƒāļŠāđ‰āļžāļ·āđ‰āļ™āļ—āļĩāđˆāđāļ­āļ”āđ€āļ”āļĢāļŠāļŦāļĢāļ·āļ­ āđāļ­āļ”āđ€āļ”āļĢāļŠāļŠāđ€āļ›āļ‹ āļ‚āļ­āļ‡āļ—āļēāļŠāļ„āđŒāļ•āđ‰āļ™āļāļģāđ€āļ™āļīāļ” ( āđ‚āļ›āļĢāđ€āļ‹āļŠ )
  • 25. āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļē Java Threads āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļēāļ–āļđāļāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ‚āļ”āļĒ JVM Java Virtual Machine āđ€āļ˜āļĢāļ”āļ‚āļ­āļ‡āļˆāļēāļ§āļēāļ­āļēāļˆāļ–āļđāļāļŠāļĢāđ‰āļēāļ‡āđ‚āļ”āļĒ āļāļēāļĢāļ‚āļĒāļēāļĒāļ„āļĨāļēāļŠāļ‚āļ­āļ‡āđ€āļ˜āļĢāļ” āļāļēāļĢāđƒāļŠāđ‰āļ­āļīāļ™āđ€āļ•āļ­āļĢāđŒāđ€āļŸāļŠāļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļĢāļąāļ™āđ„āļ”āđ‰

Editor's Notes

  • #2: Chapter 5: Threads Overview Multithreading Models Threading Issues Pthreads Windows XP Threads Linux Threads Java Threads