1 / 36

فصل 4: ریسه ها یا بندها ( Threads )

فصل 4: ریسه ها یا بندها ( Threads ). فصل 4: ریسه ها یا بندها ( Threads ). مفاهيم کلي مدل هاي چند ريسه اي ( Multithreading ) کتابخانه های ریسه ها ( Thread Libraries ) مسائل مربوط به ريسه ها استفاده از ريسه ها مثال های سیستم عامل Pthread ها ريسه هاي سولاريس 2

nash-smith
Download Presentation

فصل 4: ریسه ها یا بندها ( Threads )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. فصل 4: ریسه ها یا بندها (Threads)

  2. فصل 4: ریسه ها یا بندها (Threads) • مفاهيم کلي • مدل هاي چند ريسه اي (Multithreading) • کتابخانه های ریسه ها (Thread Libraries) • مسائل مربوط به ريسه ها • استفاده از ريسه ها • مثال های سیستم عامل • Pthread ها • ريسه هاي سولاريس 2 • ريسه هاي سيستم عامل ويندوز XP • ريسه هاي Linux • ريسه هاي Java

  3. مفاهيم کلي • يک ريسه ... • گاهي اوقات با نام پردازه سبک وزن (LWP)نيز شناخته مي شود. • از يک شناسه ريسه، يک شمارنده برنامه، يک مجموعه ثبات و يک پشته تشکيل شده است. • تقريبا همه چيز را با ساير ريسه هاي همان پردازه به اشتراک مي گذارد. • بخش کد • بخش داده • منابع در اختيار گذاشته شده توسط سيستم عامل مانند پرونده هاي باز. • يک پردازه تک ريسه اي تنها يک ريسه کنترلي دارد. • استفاده از چندين ريسه کنترلي به پردازه اجازه مي دهد چندين کار را به صورت همزمان انجام دهد.

  4. پردازه هاي تک ريسه اي و چند ريسه اي Single and Multithreaded Processes

  5. مزاياي ريسه ها • پاسخ دهي (Responsiveness) • از آنجا که اجراي برنامه حتي در صورت متوقف شدن بخشي از آن باز هم ادامه مي يابد، پاسخ دهي برنامه بهبود مي يابد. • اشتراک منابع (Resource Sharing) • به صورت پيش فرض، ريسه ها حافظه و منابع پردازه را به اشتراک ميگذارند. • صرفه جويي (Economy) در منابع سيستمي • ايجاد يک ريسه به مراتب ارزانتر از ايجاد يک پردازه است. • بهره برداري از معماري هاي چندپردازنده (Scalability) • اجراي هر ريسه روي يک پردازنده افزايش درجه توازي و کارايي

  6. Multicore Programming • یک سیستم Multicore چالش های زیادی پیش روی برنامه نویسان قرار می دهد • تقصيم کار(Dividing activities) • توازن (Balance) • شکاندن داده (Data splitting) • وابستگی داده (Data dependency) • Testing and debugging

  7. Multithreaded Server Architecture

  8. Concurrent Execution on a Single-core System

  9. Parallel Execution on a Multicore System

  10. ريسه هاي کاربر (User Threads) • مديريت ريسه ها توسط کتابخانه ريسه اي در سطح کاربر انجام مي شود. • نمونه ها: • کتابخانه pthreadsدر سيستم عامل هاي POSIX • کتابخانه C-threadsدر مکينتاش • کتابخانه UI-threadsدر سولاريس. • Win32 threads • Java threads

  11. ريسه هاي هسته (Kernel Threads) • هسته مستقيما از ريسه ها حمايت مي کند. • نمونه ها: • Windows XP/2000 • Solaris • Linux • Tru64 UNIX • Mac OS X

  12. مدل هاي چند ريسه اي (Multithreading Models) • مدل چند به يک (Many-to-One) • مدل يک به يک (One-to-One) • مدل چند به چند (Many-to-Many)

  13. در اين مدل تعداد زيادي ريسه سطح کاربر به يک ريسه سطح هسته نگاشت مي شوند. اين مدل در سيستم هايي که در آنها هسته مستقيما از ريسه ها حمايت نمي کند استفاده مي شود.: Solaris Green Threads GNU Portable Threads Many-to-One

  14. در اين مدل هر ريسه سطح کاربر به يک ريسه سطح هسته نگاشت مي شود. Windows NT/XP/2000 Linux Solaris 9 and later One-to-One

  15. اين مدل اجازه مي دهد چندين ريسه سطح کاربر به چندين ريسه سطح هسته نگاشت شوند. سيستم عامل اجازه دارد به تعداد کافي ريسه سطح هسته ايجاد کند. Solaris prior to version 9 Windows NT/2000 with the ThreadFiber package Many-to-Many Model

  16. مانند چند به چند؛ با اين تفاوت كه اجازه مي دهد يك ريسه سطح كاربر به يك ريسه سطح هسته اختصاص يابد. IRIX HP-UX Tru64 UNIX Solaris 8 and earlier مدل دو سطحي ( Two-level Model)

  17. کتابخانه های ریسه ها (Thread Libraries) • Thread library provides programmer with API for creating and managing threads • Two primary ways of implementing • Library entirely in user space • Kernel-level library supported by the OS

  18. Pthreads • ممکن است در هرو دو سطح user-level یا kernel-level وجود داشته باشد. • واسط برنامه نويسي استاندارد POSIX(IEEE 1003.1c)براي ايجاد و همگامي ريسه ها. • واسط برنامه نويسي تنها رفتار کتابخانه ريسه اي را مشخص مي کند، و پياده سازي روال ها به عهده توسعه دهنده کتابخانه است. • معمولا در سيستم عامل هاي يونيکس از اين کتابخانه استفاده مي شود. • Common in UNIX operating systems (Solaris, Linux, Mac OS X)

  19. Java Threads • Java threads are managed by the JVM • Typically implemented using the threads model provided by underlying OS • Java threads may be created by: • Extending Thread class • Implementing the Runnable interface

  20. مسائل مربوط به ريسه ها • Semantics of fork() and exec() system calls • Thread cancellation of target thread • Asynchronous or deferred • Signal handling • Thread pools • Thread-specific data • Scheduler activations

  21. Semantics of fork() and exec() • وقتي يک ريسه forkرا فراخواني مي کند، آيا پردازه جديد از تمام ريسه هاي پردازه قبلي نسخه برداري مي کند يا فقط از ريسه فراخواننده يک نسخه ايجاد مي کند؟ • برخي نگارش هاي يونيکس دو روال fork ارايه مي کنند: • يک نسخه از تمام ريسه ها نسخه برداري مي کند. • يک نسخه فقط از ريسه فراخواننده نسخه برداري مي کند. • با فراخواني exec برنامه مشخص شده در پارامترهاي فراخواني جايگزين پردازه فراخواننده و تمامي ريسه هاي آن مي شود.

  22. ابطال ريسه (Thread Cancellation) • به فرايند پايان دهي يک ريسه پيش از پايان کار آن «ابطال ريسه» مي گوييم. • ابطال ريسه ممکن است به دو صورت متفاوت رخ دهد: 1. ابطال ناهمگام (Asynchronous cancellation): • يک ريسه ديگر بلافاصله به اجراي ريسه هدف پايان مي دهد. 2. ابطال به تعويق افتاده (Deferred cancellation): • ريسه هدف به صورت دوره اي چک مي کند که آيا بايد به اجراي خود خاتمه دهد يا خير؟

  23. رسيدگي به سيگنال (Signal Handling) • در سيستم هاي يونيکس از سيگنال براي اطلاع رساني به پردازه ها در مورد وقايع استفاده مي شود. • يک رسيدگي کننده سيگنال (Signal Handler) براي پردازش سيگنالها مورد استفاده قرار مي گيرد. • سيگنال توسط يک رخداد خاص ايجاد مي شود. • سيگنال به پردازه تحويل داده مي شود • سيگنال مورد رسيدگي قرار مي گيرد. • گزينه ها: • سيگنال را به ريسه ي مربوطه تحويل دهيم. • سيگنال را به همه ريسه هاي موجود در پردازه تحويل دهيم. • سيگنال را به ريسه هايي معين در پردازه تحويل دهيم. • يک ريسه خاص را مسئول دريافت همه سينگالها قرار دهيم.

  24. مخزن ريسه (Thread Pool) • ايده کلي: • هنگام راه اندازي پردازه تعدادي ريسه نيز ايجاد کن. • اين ريسه ها را در يک مخزن قرار بده و منتظر بمان تا پردازه اعلام نياز به يک ريسه کند. • معمولا پاسخ به يک درخواست خدمات با استفاده از يک ريسه موجود سريع تر از حالتي است که بايد يک ريسه نيز ايجاد شود. • استفاده از مخزن ريسه ها تعداد ريسه ها در هر يک از نقاط کاري سيستم را محدود مي کند. • اگر هنگام دريافت درخواست، درون مخزن هيچ ريسه اي موجود نباشد (به عبارت ديگر، پردازه، همه ريسه هاي اختصاص يافته را قبلا فعال کرده باشد و هنوز هم فعال باشند) پردازه بايد صبر کند تا يکي از ريسه هاي قبلي آزاد شوند.

  25. Thread Specific Data • Allows each thread to have its own copy of data • Useful when you do not have control over the thread creation process (i.e., when using a thread pool)

  26. Scheduler Activations • Both M:M and Two-level models require communication to maintain the appropriate number of kernel threads allocated to the application • Scheduler activations provide upcalls - a communication mechanism from the kernel to the thread library • This communication allows an application to maintain the correct number kernel threads

  27. Operating System Examples Windows XP Threads Linux Thread

  28. Windows XP Threads

  29. ريسه ها در ويندوز XP • ويندوز XP از نگاشت يک به يک استفاده مي کند. • هر ريسه شامل اطلاعات زير است: • يک شناسه ريسه • يک مجموعه ثبات • پشته هاي مجزا براي سطح کاربر و هسته • مقداري حافظه اختصاصي • مجموعه ثباتها، پشته ها، و حافظه اختصاصي به عنوان زمينه ريسه شناخته مي شوند.

  30. Linux Threads

  31. Windows XP Threads • Implements the one-to-one mapping, kernel-level • Each thread contains • A thread id • Register set • Separate user and kernel stacks • Private data storage area • The register set, stacks, and private storage area are known as the context of the threads • The primary data structures of a thread include: • ETHREAD (executive thread block) • KTHREAD (kernel thread block) • TEB (thread environment block)

  32. Linux Threads • در لينوکس به ريسه ها به عنوان وظيفه (task) ارجاع مي شود. • ايجاد ريسه ها با استفاده از فراخواني روال سيستمي clone () انجام مي شود. • پس از اجراي clone () فضاي حافظه وظيفه (يا پردازه) پدر بين پدر و فرزند به اشتراک گذاشته مي شود. • Linux refers to them as tasks rather than threads Thread creation is done through clone() system call clone() allows a child task to share the address space of the parent task (process)

  33. ريسه هاي سولاريس 2 • سولاريس 2 علاوه بر Pthreadsبا فراهم کردن UI-threads از ريسه هاي سطح کاربر نيز پشتيباني مي کند. • پردازه هاي سبک وزن (LWP) بين ريسه هاي سطح کاربر و ريسه هاي سطح هسته قرار گرفته اند. • هر پردازه حداقل يک LWP دارد. • تنها ريسه هاي سطح کاربري که به يک LWP متصل باشند اجرا مي شوند. ساير ريسه ها يا متوقف شده اند و يا منتظر اختصاص يک LWP هستند.

  34. ريسه هاي سولاريس 2

  35. يک پردازه در سولاريس 2

  36. پایان فصل 4

More Related