Top Banner
Advanced C# Course 7- Multithreaded Applications
25
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 7 multi threading

Advanced C Course

7- Multithreaded Applications

04132023 1149 PM 2

Outlines التشغيل نظم في مقدمة النياسب تعدد إلى نحتاج Multithreadingلماذا النياسب متعددة تطبيقات بإنشاء نقوم كيف

Multithreaded ( نيسب (Thread Terminatationإيقاف

الخلفية في تعمل التي BackgroundالنياسبThreads

Thread Class

04132023 1149 PM 3

التشغيل نظم في مقدمة المهمةProcess التنفيذ قيد برنامج هي الوقت بنفس برنامج من أكثر بتشغيل النظام يقوم كيف

المهام جدولة الزمنية الشرائح

Code Segment

Data Segment

Stack Segment

Heap Segment

04132023 1149 PM 4

التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو

المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو

التوازي على تنفيذها األخرى التعليمات من غيرها مع

كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما

مهمةكل( Process )تحويThread األقل واحد على

المهام إدارة( Processes Management )التشغيل نظام مهمة من هي

النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي

المهام وجدولة النياسب جدولة

04132023 1149 PM 5

النياسب تعدد إلى نحتاج لماذاMultithreading

( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز

نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة

البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات

04132023 1149 PM 6

النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded

( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها

مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا

الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي

04132023 1149 PM 7

( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 2: 7 multi threading

04132023 1149 PM 2

Outlines التشغيل نظم في مقدمة النياسب تعدد إلى نحتاج Multithreadingلماذا النياسب متعددة تطبيقات بإنشاء نقوم كيف

Multithreaded ( نيسب (Thread Terminatationإيقاف

الخلفية في تعمل التي BackgroundالنياسبThreads

Thread Class

04132023 1149 PM 3

التشغيل نظم في مقدمة المهمةProcess التنفيذ قيد برنامج هي الوقت بنفس برنامج من أكثر بتشغيل النظام يقوم كيف

المهام جدولة الزمنية الشرائح

Code Segment

Data Segment

Stack Segment

Heap Segment

04132023 1149 PM 4

التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو

المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو

التوازي على تنفيذها األخرى التعليمات من غيرها مع

كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما

مهمةكل( Process )تحويThread األقل واحد على

المهام إدارة( Processes Management )التشغيل نظام مهمة من هي

النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي

المهام وجدولة النياسب جدولة

04132023 1149 PM 5

النياسب تعدد إلى نحتاج لماذاMultithreading

( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز

نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة

البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات

04132023 1149 PM 6

النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded

( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها

مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا

الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي

04132023 1149 PM 7

( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 3: 7 multi threading

04132023 1149 PM 3

التشغيل نظم في مقدمة المهمةProcess التنفيذ قيد برنامج هي الوقت بنفس برنامج من أكثر بتشغيل النظام يقوم كيف

المهام جدولة الزمنية الشرائح

Code Segment

Data Segment

Stack Segment

Heap Segment

04132023 1149 PM 4

التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو

المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو

التوازي على تنفيذها األخرى التعليمات من غيرها مع

كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما

مهمةكل( Process )تحويThread األقل واحد على

المهام إدارة( Processes Management )التشغيل نظام مهمة من هي

النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي

المهام وجدولة النياسب جدولة

04132023 1149 PM 5

النياسب تعدد إلى نحتاج لماذاMultithreading

( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز

نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة

البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات

04132023 1149 PM 6

النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded

( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها

مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا

الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي

04132023 1149 PM 7

( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 4: 7 multi threading

04132023 1149 PM 4

التشغيل نظم في مقدمةالنيسب تعريف(Thread) برمجيمستقل مسلك عن عبارة هو

المكدس النياسبفي (Stack)في من غيره مع ويشتركأخرى (Heap)الكومة نريد بعبارة التي التعليمات من سياق هو

التوازي على تنفيذها األخرى التعليمات من غيرها مع

كل الحقيقة عن نيسبفي عبارة من + Stackهو مجموعةالخاصة البرنامج )السجالت عداد فيها ( PCبما

مهمةكل( Process )تحويThread األقل واحد على

المهام إدارة( Processes Management )التشغيل نظام مهمة من هي

النياسب إدارة المبرمج( Threads Management )أما مهمة من فهي

المهام وجدولة النياسب جدولة

04132023 1149 PM 5

النياسب تعدد إلى نحتاج لماذاMultithreading

( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز

نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة

البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات

04132023 1149 PM 6

النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded

( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها

مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا

الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي

04132023 1149 PM 7

( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 5: 7 multi threading

04132023 1149 PM 5

النياسب تعدد إلى نحتاج لماذاMultithreading

( الخلفية في (Executing in Backgroundالتنفيذ العمل لتسريع مرة من اكثر مهمة إنجاز

نيسب من أكثر على العمل تقسيم يمكن معينة صورة لمعالجة برنامج أمثل تنفيذ استغاللا بنى ) للموارد وجود حال في (SMPلمتاحة

البرامج من محدد نوع لبناء الطبيعية الطريقة هو النياسب تعدد أنواعها بكافة المخدمات

04132023 1149 PM 6

النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded

( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها

مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا

الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي

04132023 1149 PM 7

( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 6: 7 multi threading

04132023 1149 PM 6

النياسب متعددة تطبيقات بإنشاء نقوم كيفMultithreaded

( النيسب أن اآلن إلى يتم( Threadعلمنا التي التعليمات من مجموعة هوالبرنامج بقية مع التوازي على تنفيذها

مثل_ ت التعليمات ال Methodهذه هذا اسم تمرير إلى Methodيتم_سمى مندوبأو ) مفوض إلى( Delegateي تسليمه يتم المندوب وهذا

الصف من ThreadغرضDelegate نفس تحمل التي التوابع من مجموعة عن مفوض التوقيعهي

04132023 1149 PM 7

( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 7: 7 multi threading

04132023 1149 PM 7

( نيسب (Thread Terminatationإيقاف عمله يتنهي ومتى النيسب إيقاف يتم كيف المنهج طريق عن قسري بشكل النيسب )( Abortإيقاف م_حبذة غير الطريقة هذه

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 8: 7 multi threading

04132023 1149 PM 8

الخلفية في تعمل التي Background النياسبThreads

( المهام من مجموعة يستعمل التشغيل الخلفية( Processesنظام في تعمل والتي(Background( )باسم ويندوز نظام في ( Windows Servicesوتسمىنظام ويندوز خدمات في _سمى LinuxUnixأما daemonsفت

األمام في تعمل التي المهام من أقل أفضلية لها يكون الخلفية في تعمل التي المهام يعمل معين نيسب نجعل أن يمكننا حيث النياسب على تطبيقها يمكن الفكرة نفس

الخلفية في( الخلفية في يعمل ما نيسب نجعل أن الخاصية( Backgroundيمكن طريق عن

IsBackground بالقيمة ضبطها يتم trueوالتي

( الخلفية النياسب أمامي( )Backgroundتنتهي نيسب أخر إنتهاء (forgroundعند

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 9: 7 multi threading

04132023 1149 PM 9

Thread Class الصنف نظام SystemThreadingThreadيمثل مستوى في نيسب

التشغيل الصنف في الموجود الخصائص Threadأهم

ϑ λ ϭϟ Δϳλ ΎΧϟ

ΩϳόΗ ϊ Οέϣ( Reference )ϰϟ Ώγϳϧϟ Ϋϔϧϣϟ Ύ˱ϳϟΎΣ CurrentThread

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ Ωϗ ΩΑ ϡϟϭ ϲϬΗϧϳ ΩόΑ IsAlive

ΩϳόΗ true Ϋ ϥΎϛ Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ ISBackground

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ϡγ Ώγϳϧϟ Name

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϳϠο ϓ Ώγϳϧϟ Priority

ΩϳόΗ ϭ ΩΩΣΗ( set or get )ΔϟΎΣ Ώγϳϧϟ ThreadState

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 10: 7 multi threading

04132023 1149 PM 10

Thread Class الصنف في الموجود المناهج Threadأهم

ϑ λ ϭϟ (ΔϘϳέρϟmethod) ΏγϳϧϟΫϳϔϧΗΑΫϳϔϧΗΑ ΩΑϟ Start

ϱέϭϓϝϛηΑΏγϳϧϟΫϳϔϧΗϲϬϧΗ Abort

ΔϟΎΣϲϓϥϭϛϳϱΫϟ Ώγϳϧϟϊ ρΎϘΗwaitSleepJoin Interrupt

ΫϳϔϧΗϲϬΗϧϳϰΗΣ )ΞϬϧϣϟΫϬϟϲϋΩΗγϣ˵ϟΏγϳϧϟ(ϥϳόϣΏγϳϧέΎυΗϧΏγϳϧϟΫϫ

Join

(ΓΩϭΩΣϣέϳ ΓέΗϔϟΏγϳϧϟϝϣϋ˯ΎΟέϏpause )-Εϗϣϑ ΎϘϳ - Suspend

(ϕΑΎγϟϊ ΑΎΗϟϝϣϋϝρΑΗSuspend) Resume

ΓΩΩΣϣΓέΗϔϟΏγϳϧϟ ϡϭϧΗ Sleep

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 11: 7 multi threading

04132023 1149 PM 11

النيسب Thread Statesحاالت ( التعداد ضمن موجودة وهي حاالت عدة أو حالة نيسب الم_سمى( EnumلكلThreadStateΔϣϳϘϟ ϒλϮϟ Running Ώγϳϧϟ ϝϣόϳ ϥϵ StopRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ(Abort )SuspendRequested Ώγϳϧϟ Ωϗ ϝΑϘΗγ ΓέΎη ϑ ΎϘϳ Εϗϣ(pause )Background Ώγϳϧϟ ϝϣόϳ ϲϓ ΔϳϔϠΧϟ Unstarted Ώγϳϧϟ ϡΗ ϩΎηϧ ϥϛϟϭ ϡϟ ϡΗϳ ΫϳϔϧΗ ΞϬϧϣϟ Start)( Stopped Ώγϳϧϟ ϡΗ ϪϓΎϘϳ )ΕΎϣΐδϴϨϟ (ϲΎϬϧϞϜθΑ WaitSleepJoin Ώγϳϧϟ ˯ΎϋΩΗγϥο ϑ ϗϭΗϣwait ϭSleep ϭJoin Suspended Ώγϳϧϟ ϑ ϗϭΗϣ ϝϛηΑ Εϗϣ AbortRequested ϝϘϧΗϳ Ώγϳϧϟ ϰϟ ϩΫϫ ΔϟΎΣϟ ΎϣΩϧϋ ϥϭϛϧ Ωϗ ΎϧϳϋΩΗγ ΞϬϧϣϟ

Abort ΏγϳϧϠϟ ϥϛϟϭ Ϋϫ Ώγϳϧϟ ϡϟ ϝΑϘΗγϳ ΩόΑ ΓέΎη ϑ ΎϘϳϹ ϲΗϟϭ ϡΗϳ έϳΑόΗϟ ΎϬϧϋ ˯ΎϧΛΗγϹΎΑ( ThreadAbortException )ϱΫϟϭ ϲϬϧϳ ϝϣϋ Ϋϫ Ώγϳϧϟ

Aborted α ϔϧ ΔϟΎΣϟ ΔϘΑΎγϟ(AbortRequested) ϭ Ώγϳϧϟ Ωϗ ϑ ϗϭΗ(ΕΎϣ )ϥϛϟϭ ϪΗΎΣ ϡϟ έϳϐΗΗ ϰϟ ΔϟΎΣϟ Stopped

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 12: 7 multi threading

04132023 1149 PM 12

Thread Priority ) ( نفس في معه تشترك التي النياسب من لغيره بالنسبة أولوية أفضلية نيسب لكل

(Processالمهمة ) بأفضلية النياسب جميع إنشاء Normalيتم

ϑ λ ϭϟ ΔϣϳϘϟ

ΎϳϠόϟΔϳϠο ϓϷϪϟΏγϳϧϟ Highest

ϱΩΎόϟΏγϳϧϟϥϣϰϠϋΔϳϠο ϓϪϟΏγϳϧϟ AboveNormal

ΔϳΩΎϋΔϳϠο ϓϪϟΏγϳϧϟ Normal

ϱΩΎόϟΏγϳϧϟϥϣϰϧΩΔϳϠο ϓϪϟΏγϳϧϟ BelowNormal

ϪϟΏγϳϧϟϷΔϳϠο ϓΎϳϧΩϟ Lowest

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 13: 7 multi threading

04132023 1149 PM 13

الموارد على التنافسConcurrency

النياسب التطبيقات ذات ( Multithreaded Application)متعددة p جدا عظيمة فوائد

p أبدا p سهال p أمرا ليس النياسب إدارة ستكون النتائج فإن الذاكرة في مشترك غرض على العمل نيسبان حاول إذا

خاطئة الموارد على التنافس مشاكل لحل أساسين مفهومين على التعرف يجب

الحرجة المقاطع( Critical Sections )(القفلLock ) دخول لتحقيق طريقة واحد نيسبوهي الحرج المقطع إلى

مالحظات

) نحتاج ) التي الشيفرة الكود من جزء أصغر نقفل بحيث القفل استعمال عند الحذر علينا يجبالبرنامج ضمن حمايته إلى

المهام نطاق على ولكن التشغيل نظام قبل من ومطبقة موجودة هي األفكار هذه(Processes )النياسب نطاق على وسنراها

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 14: 7 multi threading

04132023 1149 PM 14

الحرجة المقاطع استخداموالقفل

Lock

read value from DB update value in RAMwriting value to DB

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 15: 7 multi threading

04132023 1149 PM 15

الحرجة المقاطع استخداموالقفل

Static int [] arr=new int [10]

Static int index++ if (indexgt=10) return ConsoleWriteLine(arr[index])

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 16: 7 multi threading

04132023 1149 PM 16

النياسب بين ThreadsالتزامنSynchronization

هما لسببين النياسب بين المزامنة إلى نحتاجمشتركة موارد استخدامالتواقت(Concurrency)

Thread B Globalx=4

Thread A

Globalx=3

call function

Func(Globalx )

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 17: 7 multi threading

04132023 1149 PM 17

التزامن SynchronizationتحقيقImplementation

من مال سحب بعمليات والقيام مصرفي حساب على نيسب من أكثر ولوج مسألةالرصيد

المثال بعرض تزامن سنقوم دون من تزامن مرة مع مرة و ( في تكون النياسب وبقية الغرض على قفل يضع الحرج المقطع إلى يدخل ما لحظة في واحد نيسب فقط

(انتظارحالة ( الحرج المقطع كامل تنفيذ من النيسب هذ ينتهي أن كاملة بعد مناقلة يمثل بتحريريقوم( والذي

القفل التشغيل نظام يقوم النياسب ثم أحد إنتظار بإختيار حالة في التي الحرج المقطع في للدخول

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 18: 7 multi threading

04132023 1149 PM 18

التزامن Synchronization Classesأصناف الصفInterlocked ( مناهج على الصنف هذه آمنة (methodيحتوي

(Safe ) العمليات اآلمنةلتقديم نياسب عدة بين المشتركة المتحوالت على هي المناهج أن( atomic )ذريةهذه عن المنهجأي عبارة مناقلةهو

(Transaction ) كامل بشكل تتم أن مقاطعة فإما المعالج دون من W أبدا تتم ال أن أو

المناهج هذه من

Increment - Decrement Exchange القديمة )األصليةالقيمة ويعيد متحولفي قيمةيضع للمتحول( CompareExchange

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 19: 7 multi threading

04132023 1149 PM 19

Parallel Programming Example من األعداد بجمع pولدينا n 1جمع نيسب كل يقوم حيث نيسب

من np 1األعداد

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 20: 7 multi threading

04132023 1149 PM 20

Semaphore Class المهام بين التزامن لتحقيق طريقة عن عبارة هو السيمافور )Processes (يمكن التشغيل نظام مستوى في p لتحقيق استعماله أيضا

النياسب بين التزامن

مثل رقم عن عبارة_ مورد على الحصول تستطيع التي النياسب من محدود عدد ي من أكثر ق[بل من عليها التنافس يتم التي الموارد من( Pool)حوض (أو مشترك)نيسب

الطابعة مثال

هامة عدد مالحظة هي السيمافور الصفر قيمة يساوي أو عن أكبر عددويعبرأن النياسب تستطيع إنتظار الموردعلى تحصلالتي دون من و مباشرة

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 21: 7 multi threading

04132023 1149 PM 21

Mutex Class (Mutual Exclusion)( الصف هذا بسيطة( Mutexيعطي يسمح للتزامنطريقة لنيسب بحيث

مع واحد الحرج المقطع إلى البقية بالدخول في ) إستبعاد تبقى النياسب بقيةالنيسب هذا يقوم أن إلى إنتظار ال حالة ( Mutexبتحرير

ال ( Lock - unlockآلية )Mutex يستعمل

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 22: 7 multi threading

04132023 1149 PM 22

اإلقفال حدوث تتجنب أن يمكن كيفبرنامجك( Deadlockالمتبادل) شيفرة في

نيسبين بين يحدث) Two Threads (إلى بحاجة النيسبين من كل عندما عمله يكمل حتى األخر من معطيات

عتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيلWهذه المشكلة تالمهام على حلها تم مستوى على حلها لكن و (Processes)مستوى

المبرمج مسؤولية من هي(Threads)النياسب

المشكلة هذه تنتج الحقيقة في)DeadLock (األقفال إستخدام عن Locks ال إستخدام وعن Mutexp أيضا

مفرغة حلقات فيها تحدث ال بحيث النياسب متعددة تطبيقات تصميم iجدا الصعب من(DeadLocks)

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 23: 7 multi threading

04132023 1149 PM 23

Monitor Class( كائن واحد قفلNETفي( objectلكل نيسب قبل من عليه الحصول يتم الصفMonitor التالية المزايا يمللك

على- 1 الحصول ويتم بغرض الطلب( Monitor)المراقبمرتبطة عند2 الكود- ضمن مكان أي في استدعائه يمكن أي مقيد غيرالصنف- 3 هذا من غرض إنشاء يمكن ال

) نيسب ) من أكثر من إليه الوصول يتم غرضمتزامن كل أجل من القفل يملك وحيد نيسب( جاهزية لكي (Ready Queueرتل المعالج يختارها أن تنتظر التي النياسب يحوي

النياسب بقية استبعاد مع القفل على تحصل( إنتظار (Waiting Queueرتل إيقاظ إنتظارإشارة حالة في التي النياسب يحوي

القفل على الحصول لتستعيد أخر نيسب من

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 24: 7 multi threading

04132023 1149 PM 24

Monitor Class

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example
Page 25: 7 multi threading

04132023 1149 PM 25

Producer Consumere Example

  • Advanced C Course
  • Outlines
  • مقدمة في نظم التشغيل
  • مقدمة في نظم التشغيل
  • لماذا نحتاج إلى تعدد النياسب Multithreading
  • كيف نقوم بإنشاء تطبيقات متعددة النياسب Multithreaded
  • إيقاف نيسب(Thread Terminatation)
  • النياسب التي تعمل في الخلفية Background Threads
  • Thread Class
  • Thread Class (2)
  • حالات النيسب Thread States
  • Thread Priority
  • التنافس على الموارد Concurrency
  • استخدام المقاطع الحرجة والقفل
  • استخدام المقاطع الحرجة والقفل (2)
  • التزامن بين النياسب Threads Synchronization
  • تحقيق التزامن Synchronization Implementation
  • أصناف التزامن Synchronization Classes
  • Parallel Programming Example
  • Semaphore Class
  • Mutex Class (Mutual Exclusion)
  • كيف يمكن أن تتجنب حدوث الإقفال المتبادل(Deadlock)في شيفرة برنام
  • Monitor Class
  • Monitor Class (2)
  • Producer Consumere Example