SlideShare a Scribd company logo
1 of 25
7- Multithreaded Applications
Outlines 
مقدمة في نظم التشغيل  
Multithreading لماذا نحتاج إلى تعدد النياسب  
Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب  
)Thread Terminatation( إيقاف نيسب  
Background Threads النياسب التي تعمل في الخلفية  
Thread Class  
05 2 تشرين الثاني، 14
مقدمة في نظم التشغيل 
هي برنامج قيد التنفيذ . : Process المهمة  
كيف يقوم النظام بتشغيل أكثر من برنامج بنفس الوقت ؟  
جدولة المهام .  
الشرائح الزمنية .  
Code 
Segment 
Data 
Segment 
Stack 
Segment 
Heap 
Segment 
05 3 تشرين الثاني، 14
مقدمة في نظم التشغيل 
)Stack( هو عبارة عن مسلك برمجي مستقل في المكدس :)Thread( تعريف النيسب  
بعبارة أخرى : هو سياق من التعليمات , )Heap( ويشترك مع غيره من النياسب في الكومة 
التي نريد تنفيذها على التوازي مع غيرها من التعليمات الأخرى. 
مجموعة من السجلات الخاصة + Stack في الحقيقة كل نيسب هو عبارة عن  
. )PC( بما فيها عداد البرنامج 
واحد على الأقل . Thread تحوي )Process( كل مهمة  
هي من مهمة نظام التشغيل . )Processes Management( إدارة المهام  
فهي من مهمة المبرمج . )Threads Management( أما إدارة النياسب  
جدولة النياسب , وجدولة المهام .  
05 4 تشرين الثاني، 14
Multithreading لماذا نحتاج إلى تعدد النياسب 
)Executing in Background( التنفيذ في الخلفية  
إنجاز مهمة اكثر من مرة لتسريع العمل  
استغلال أمثل للموارد المتاحة ) في  تنفيذ برنامج لمعالجة صورة معينة يمكن تقسيم العمل على أكثر من نيسب  
.)SMP حال وجود بنى 
تعدد النياسب هو الطريقة الطبيعية لبناء نوع محدد من البرامج  
المخدمات بكافة أنواعها .  
05 5 تشرين الثاني، 14
Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب 
هو مجموعة من التعليمات التي يتم تنفيذها على التوازي )Thread( علمنا إلى الآن أن النيسب  
مع بقية البرنامج . 
إلى مفوض )أو مندوب يُسمى Method يتم تمرير اسم هذا ال Method هذه التعليمات تمُثل  
. Thread وهذا المندوب يتم تسليمه إلى غرض من الصف )Delegate 
هي مفوض عن مجموعة من التوابع التي تحمل نفس التوقيع . : Delegate  
05 6 تشرين الثاني، 14
)Thread Terminatation( إيقاف نيسب 
كيف يتم إيقاف النيسب ومتى يتنهي عمله؟  
. Abort() إيقاف النيسب بشكل قسري عن طريق المنهج  
هذه الطريقة غير مُحبذة .  
05 7 تشرين الثاني، 14
Background Threads النياسب التي تعمل في الخلفية 
)Background( والتي تعمل في الخلفية )Processes( نظام التشغيل يستعمل مجموعة من المهام  
خدمات ويندوز" أما في نظام " )Windows Services( وتسمى في نظام ويندوز باسم 
. daemons فتسُمى Linux/Unix 
المهام التي تعمل في الخلفية يكون لها أفضلية أقل من المهام التي تعمل في الأمام .  
نفس الفكرة يمكن تطبيقها على النياسب حيث يمكننا أن نجعل نيسب معين يعمل في الخلفية.  
والتي IsBackground عن طريق الخاصية )Background( يمكن أن نجعل نيسب ما يعمل في الخلفية  
.true يتم ضبطها بالقيمة 
.)forground( عند إنتهاء أخر نيسب أمامي )Background( تنتهي النياسب الخلفية  
05 8 تشرين الثاني، 14
Thread Class 
نيسب في مستوى نظام التشغيل . System.Threading.Thread يمثل الصنف  
:Thread أهم الخصائص الموجود في الصنف  
الخا ية الو ف 
إلى النيسب المنفذ الي ا . )Reference ( تعيد مرجع CurrentThread 
إذا كان النيسب قد بدأ ولم ينتهي بعد . true تعيد IsAlive 
إذا كان النيسب يعم ي الخلفية . true تعيد ISBackground 
اسم النيسب. )set or get( تعيد أو ت دد Name 
أ لية النيسب. )set or get( تعيد أو ت دد Priority 
الة النيسب. )set or get( تعيد أو ت دد ThreadState 
05 9 تشرين الثاني، 14
Thread Class 
:Thread أهم المناهج الموجود في الصنف  
الو ف )method( ال ريقة 
البدأ بتنفيذ بتنفيذ النيسب Start 
تنهي تنفيذ النيسب ب ك وري. Abort 
waitSleepJoin تقا ع النيسب الذي يكون ي الة Interrupt 
إنت ار نيسب معين )النيسب ال مستدعي لهذا المنه ( تى ينتهي تنفيذ 
هذا النيسب. 
Join 
إيقاف م قت-( -pause( إرجا عم النيسب لفترة ير م دودة Suspend 
)Suspend( تب عم التابع السابق Resume 
تنوم النيسب لفترة م ددة . Sleep 
05 10 تشرين الثاني، 14
ThreadState مىTلمُس hا )Ernuem(a داد d ن التع Sضم t دةa وجو tم eهي s حل اكل لانيسب ت حا اللة نأيو عد سة حا بلا ت و  
القيمة 
النيسب يعم ا ن Running 
)Abort( النيسب قد استقب ا ارة إيقاف StopRequested 
)pause( النيسب قد استقب ا ارة إيقاف م قت SuspendRequested 
النيسب يعم ي الخلفية Background 
Start() النيسب تم إن ا ولكن لم يتم تنفيذ المنه Unstarted 
النيسب تم إيقا ه ) ( Stopped 
.Join Sleep أو wait النيسب متوقف ن استدعا WaitSleepJoin 
النيسب متوقف ب ك م قت Suspended 
يتنق النيسب إلى هذ ال الة عندما نكون قد استدعينا المنه AbortRequested 
للنيسب. ولكن هذا النيسب لم يستقب بعد إ ارة ا يقاف Abort 
)ThreadAbortException( والتي يتم التعبير عنها با ست نا 
والذي ينهي عم هذا النيسب. 
و النيسب قد توقف)مات( )AbortRequested( نف ال الة السابقة Aborted 
.Stopped ولكن اته لم تت ير إلى ال الة 
05 11 تشرين الثاني، 14
Thread Priority 
)Process( لكل نيسب أفضلية)أولوية( بالنسبة لغيره من النياسب التي تشترك معه في نفس المهمة  
.Normal يتم إنشاء جميع النياسب بأفضلية  
القيمة الو ف 
النيسب له ا لية العليا Highest 
النيسب له أ لية أعلى من النيسب العادي AboveNormal 
النيسب له أ لية عادية Normal 
النيسب له أ لية أدنى من النيسب العادي BelowNormal 
النيسب له ا لية الدنيا Lowest 
05 12 تشرين الثاني، 14
Concurrency التنافس على الموارد 
ذات فوائد عظيمة جد ا )Multithreaded Application ( التطبيقات متعددة النياسب  
إدارة النياسب ليس أمرا سهلا أبدا .  
إذا حاول نيسبان العمل على غرض مشترك في الذاكرة فإن النتائج ستكون خا ئة .  
يجب التعرف على مفهومين أساسين لحل مشاكل التنافس على الموارد :  
)Critical Sections( المقا ع ال رجة  
وهي طريقة لتحقيق دخول نيسب وا د إلى المقطع الحرج. :)Lock( القف  
ملا ات :  
يجب علينا الحذر عند استعمال القفل بحيث نقفل أصغر جزء من الكود )الشيفرة( التي نحتاج إلى حمايته ضمن البرنامج .  
وسنراها على نطاق )Processes( هذه الأفكار هي موجودة ومطبقة من قبل نظام التشغيل ولكن على نطاق المهام  
النياسب . 
05 13 تشرين الثاني، 14
استخدام المقاطع الحرجة والقفل 
Lock 
{ 
read value from DB 
update value in RAM 
writing value to DB 
} 
05 14 تشرين الثاني، 14
استخدام المقاطع الحرجة والقفل 
Static int [] arr=new int [10]; 
Static int index++; 
if (index>=10) 
return; 
Console.WriteLine(arr[index]); 
05 15 تشرين الثاني، 14
Threads Synchronization التزامن بين النياسب 
نحتاج إلى المزامنة بين النياسب لسببين هما:  
استخدام موارد م تركة  
)Concurrency( التواقت  
Thread B 
Globalx=4 
Thread A 
Globalx=3 
//call function 
Func(Globalx ); 
05 16 تشرين الثاني، 14
Synchronization Implementation تحقيق التزامن 
مسألة ولوج أكثر من نيسب على حساب مصرفي والقيام بعمليات سحب مال من الرصيد .  
سنقوم بعرض المثال مرة من دون تزامن و مرة مع تزامن .  
فقط نيسب واحد في لحظة ما يدخل إلى المقطع الحرج )يضع قفل على الغرض وبقية النياسب تكون في حالة انت ار(.  
بعد أن ينتهي هذ النيسب من تنفيذ كامل المقطع الحرج )والذي يم مناقلة كاملة( يقوم بت رير القف .  
م يقوم ن ام الت ي بإختيار أحد النياسب التي ي الة إنت ار للدخول في المقطع الحرج.  
05 17 تشرين الثاني، 14
Synchronization Classes أصناف التزامن 
لتقديم )Safe( آمنة )method( يحتوي هذه الصنف على مناهج : Interlocked ال ف  
العمليات ا منة على المتحولات المشتركة بين عدة نياسب. 
إما )Transaction( أي أن المنهج هو عبارة عن مناقلة )atomic( هذه المناهج هي ذرية  
أن تتم ب ك كام دون مقا عة من المعال أو أن لا تتم أبد ا . 
من هذ المناه : 
Decrement - Increment  
يضع قيمة في مت و ويعيد القيمة ا لية )القديمة( للمتحول. :Exchange  
: CompareExchange  
05 18 تشرين الثاني، 14
Parallel Programming Example 
n/p  نيسب حيث يقوم كل نيسب بجمع الأعداد من 1 p ولدينا , n  جمع الأعداد من 1  
05 19 تشرين الثاني، 14
Semaphore Class 
في مستوى )Processes( السيما ور : هو عبارة عن طريقة لتحقيق التزامن بين المهام  
نظام التشغيل , يمكن أيض ا استعماله لتحقيق التزامن بين النياسب . 
من )Pool( عبارة عن رقم يُمثل عدد م دود من النياسب التي تست يع ال و على مورد م ترك" أو ) وض  
الموارد التي يتم التنا عليها من قِبَ أك ر من نيسب(. 
مثال الطابعة .  
لاحظة ه ة: قيمة السيمافور هي عدد كبر ي ي صفر ويعبر عن عدد  
س التي تستطيع أن تحص على م رد ب شرة ن د ن إ تظ ر. 
05 20 تشرين الثاني، 14
Mutex Class (Mutual Exclusion) 
طريقة بسيطة للتزامن بحيث يسمح لنيسب وا د بالدخول إلى )Mutex( يعطي هذا الصف 
المقطع الحرج مع إستبعاد البقية )بقية النياسب تبقى في حالة إنتظار إلى أن يقوم هذا النيسب بت رير 
. )Mutex ا 
.)Lock - unlock( آلية Mutex يستعمل ال  
05 21 تشرين الثاني، 14
في شيفرة برنامجك )Deadlock( كيف يمكن أن تتجنب حدوث الإقفال المتبادل 
عندما كل من النيسبين بحاجة إلى معطيات من الأخر )Two Threads( يحدث بين نيسبين  
حتى يكمل عمله. 
هذه المشكلة تعُتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيل.  
هي من مس ولية المبرم . )Threads( و لكن حلها على مستوى النياسب )Processes( تم لها على مستوى المهام  
أيض ا . Mutex وعن إستخدام ال Locks عن إستخدام الأقفال )DeadLock( في الحقيقة تنتج هذه المشكلة  
ن صع جد تصم م تطب ق تعددة س ح ث لا تحدث ف حلق فرغة  
.)DeadLocks( 
05 22 تشرين الثاني، 14
Monitor Class 
قفليتم الحصول عليه من قبل نيسب واحد. .NET في )object( لكل كائن  
يمللك المزايا التالية: Monitor الصف  
عند الطلب . )Monitor( -1 مرتبطة بغرضويتم الحصول على المراقب 
-2 غير مقيد. أي يمكن استدعائه في أي مكان ضمن الكود . 
-3 لا يمكن إنشاء غرضمن هذا الصنف . 
من أجل كل غرض متزامن )يتم الوصول إليه من أكثر من نيسب(:  
نيسب وحيد يملك القفل .  
يحوي النياسب التي تنتظر أن يختارها المعالج لكي تحصل على القفل مع :)Ready Queue( رت جاهزية  
استبعاد بقية النياسب 
يحوي النياسب التي في حالة إنتظارإشارة إيقاظ من نيسب أخر لتستعيد : )Waiting Queue( رت إنت ار  
الحصول على القفل. 
05 23 تشرين الثاني، 14
Monitor Class 
05 24 تشرين الثاني، 14
Producer / Consumere Example 
05 25 تشرين الثاني، 14

More Related Content

What's hot

Système de détection d'intrusion (Intrusion Detection System)
Système de détection d'intrusion (Intrusion Detection System)Système de détection d'intrusion (Intrusion Detection System)
Système de détection d'intrusion (Intrusion Detection System)YousraChahinez
 
Intro to DefectDojo at OWASP Switzerland
Intro to DefectDojo at OWASP SwitzerlandIntro to DefectDojo at OWASP Switzerland
Intro to DefectDojo at OWASP SwitzerlandMatt Tesauro
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOSAkihiro Suda
 
Kubernetes Clusters as a Service with Gardener
Kubernetes Clusters as a Service with GardenerKubernetes Clusters as a Service with Gardener
Kubernetes Clusters as a Service with GardenerQAware GmbH
 
Safely Protect PostgreSQL Passwords - Tell Others to SCRAM
Safely Protect PostgreSQL Passwords - Tell Others to SCRAMSafely Protect PostgreSQL Passwords - Tell Others to SCRAM
Safely Protect PostgreSQL Passwords - Tell Others to SCRAMJonathan Katz
 
Standardizing the tee with global platform and RISC-V
Standardizing the tee with global platform and RISC-VStandardizing the tee with global platform and RISC-V
Standardizing the tee with global platform and RISC-VRISC-V International
 
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...Vietnam Open Infrastructure User Group
 
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月VirtualTech Japan Inc.
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation dockerOlivier Eeckhoutte
 
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Vietnam Open Infrastructure User Group
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...Simplilearn
 
Linux Kullanım Rehberi
Linux Kullanım RehberiLinux Kullanım Rehberi
Linux Kullanım RehberiMert Can ALICI
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep DiveToru Makabe
 
DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...Simplilearn
 
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaEdureka!
 

What's hot (20)

Système de détection d'intrusion (Intrusion Detection System)
Système de détection d'intrusion (Intrusion Detection System)Système de détection d'intrusion (Intrusion Detection System)
Système de détection d'intrusion (Intrusion Detection System)
 
Intro to DefectDojo at OWASP Switzerland
Intro to DefectDojo at OWASP SwitzerlandIntro to DefectDojo at OWASP Switzerland
Intro to DefectDojo at OWASP Switzerland
 
[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS[KubeCon EU 2022] Running containerd and k3s on macOS
[KubeCon EU 2022] Running containerd and k3s on macOS
 
Kubernetes Clusters as a Service with Gardener
Kubernetes Clusters as a Service with GardenerKubernetes Clusters as a Service with Gardener
Kubernetes Clusters as a Service with Gardener
 
Safely Protect PostgreSQL Passwords - Tell Others to SCRAM
Safely Protect PostgreSQL Passwords - Tell Others to SCRAMSafely Protect PostgreSQL Passwords - Tell Others to SCRAM
Safely Protect PostgreSQL Passwords - Tell Others to SCRAM
 
Standardizing the tee with global platform and RISC-V
Standardizing the tee with global platform and RISC-VStandardizing the tee with global platform and RISC-V
Standardizing the tee with global platform and RISC-V
 
Introduction to DevSecOps
Introduction to DevSecOpsIntroduction to DevSecOps
Introduction to DevSecOps
 
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
Room 3 - 2 - Trần Tuấn Anh - Defending Software Supply Chain Security in Bank...
 
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
Linux Sistem Yönetimi
Linux Sistem YönetimiLinux Sistem Yönetimi
Linux Sistem Yönetimi
 
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
Room 2 - 3 - Nguyễn Hoài Nam & Nguyễn Việt Hùng - Terraform & Pulumi Comparin...
 
NW入門
NW入門NW入門
NW入門
 
Linux 101
Linux 101Linux 101
Linux 101
 
DDoS Engelleme Ürünleri
DDoS Engelleme ÜrünleriDDoS Engelleme Ürünleri
DDoS Engelleme Ürünleri
 
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
What Is A Docker Container? | Docker Container Tutorial For Beginners| Docker...
 
Linux Kullanım Rehberi
Linux Kullanım RehberiLinux Kullanım Rehberi
Linux Kullanım Rehberi
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
 
DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...
DevOps Interview Questions Part - 2 | Devops Interview Questions And Answers ...
 
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
 

Viewers also liked

Login System with Windows/Microsoft Live using OAuth php and mysql
Login System with Windows/Microsoft Live using OAuth php and mysqlLogin System with Windows/Microsoft Live using OAuth php and mysql
Login System with Windows/Microsoft Live using OAuth php and mysqlthesoftwareguy7
 
8 memory managment & pointers
8 memory managment & pointers8 memory managment & pointers
8 memory managment & pointersMohammad Alyan
 
10 system.security.cryptography
10 system.security.cryptography10 system.security.cryptography
10 system.security.cryptographyMohammad Alyan
 
4 fourth lesson-deployment
4 fourth lesson-deployment4 fourth lesson-deployment
4 fourth lesson-deploymentMohammad Alyan
 
1 first lesson -assemblies
1  first lesson -assemblies1  first lesson -assemblies
1 first lesson -assembliesMohammad Alyan
 
Fax With Sangoma Gateway
Fax With Sangoma GatewayFax With Sangoma Gateway
Fax With Sangoma GatewayHossein Yavari
 
2 second lesson- attributes
2 second lesson- attributes2 second lesson- attributes
2 second lesson- attributesMohammad Alyan
 
3 third lesson-reflection
3 third lesson-reflection3 third lesson-reflection
3 third lesson-reflectionMohammad Alyan
 

Viewers also liked (13)

Login System with Windows/Microsoft Live using OAuth php and mysql
Login System with Windows/Microsoft Live using OAuth php and mysqlLogin System with Windows/Microsoft Live using OAuth php and mysql
Login System with Windows/Microsoft Live using OAuth php and mysql
 
8 memory managment & pointers
8 memory managment & pointers8 memory managment & pointers
8 memory managment & pointers
 
10 system.security.cryptography
10 system.security.cryptography10 system.security.cryptography
10 system.security.cryptography
 
4 fourth lesson-deployment
4 fourth lesson-deployment4 fourth lesson-deployment
4 fourth lesson-deployment
 
Introduction To ERP
Introduction To ERPIntroduction To ERP
Introduction To ERP
 
1 first lesson -assemblies
1  first lesson -assemblies1  first lesson -assemblies
1 first lesson -assemblies
 
Fax With Sangoma Gateway
Fax With Sangoma GatewayFax With Sangoma Gateway
Fax With Sangoma Gateway
 
2 second lesson- attributes
2 second lesson- attributes2 second lesson- attributes
2 second lesson- attributes
 
3 third lesson-reflection
3 third lesson-reflection3 third lesson-reflection
3 third lesson-reflection
 
5 fifth lesson -xml
5 fifth lesson -xml5 fifth lesson -xml
5 fifth lesson -xml
 
Coursera
CourseraCoursera
Coursera
 
9 networking
9 networking9 networking
9 networking
 
Models for hierarchical data
Models for hierarchical dataModels for hierarchical data
Models for hierarchical data
 

Similar to 7 multi threading

Enter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيسEnter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيسHasan Edrees
 
اهم ماكتب محمد ابوسامرة
اهم ماكتب محمد ابوسامرةاهم ماكتب محمد ابوسامرة
اهم ماكتب محمد ابوسامرةMahgoub Mergani
 
الدليل العلمي لنظام الدي سبيس
الدليل العلمي لنظام الدي سبيسالدليل العلمي لنظام الدي سبيس
الدليل العلمي لنظام الدي سبيسAml Sindi
 
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
شرح مقرر البرمجة 2   لغة جافا - مادة النهائيشرح مقرر البرمجة 2   لغة جافا - مادة النهائي
شرح مقرر البرمجة 2 لغة جافا - مادة النهائيجامعة القدس المفتوحة
 
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائيشرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائيجامعة القدس المفتوحة
 
الفصل الرابع
الفصل الرابعالفصل الرابع
الفصل الرابعHanaa Ahmed
 
المختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى Phpالمختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى PhpPrmigo
 
Navisworks
 Navisworks  Navisworks
Navisworks Bahzad5
 
لغة البرمجة سكالا
لغة البرمجة سكالالغة البرمجة سكالا
لغة البرمجة سكالاMounir Benhalla
 
موقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثاني
موقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثانيموقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثاني
موقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثانيملزمتي
 
لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)anees abu-hmaid
 
الحزم و التحزيم في سلاكوير
الحزم و التحزيم في سلاكويرالحزم و التحزيم في سلاكوير
الحزم و التحزيم في سلاكويرkhalid hamdani
 

Similar to 7 multi threading (20)

Enter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيسEnter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيس
 
Osi layers
Osi layersOsi layers
Osi layers
 
1
11
1
 
اهم ماكتب محمد ابوسامرة
اهم ماكتب محمد ابوسامرةاهم ماكتب محمد ابوسامرة
اهم ماكتب محمد ابوسامرة
 
1prep win8.1
1prep win8.11prep win8.1
1prep win8.1
 
البرمجة
البرمجةالبرمجة
البرمجة
 
6 ado.net
6 ado.net6 ado.net
6 ado.net
 
الدليل العلمي لنظام الدي سبيس
الدليل العلمي لنظام الدي سبيسالدليل العلمي لنظام الدي سبيس
الدليل العلمي لنظام الدي سبيس
 
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
شرح مقرر البرمجة 2   لغة جافا - مادة النهائيشرح مقرر البرمجة 2   لغة جافا - مادة النهائي
شرح مقرر البرمجة 2 لغة جافا - مادة النهائي
 
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائيشرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
شرح مقرر البرمجة 2 "لغة جافا" - مادة النهائي
 
الفصل الرابع
الفصل الرابعالفصل الرابع
الفصل الرابع
 
المختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى Phpالمختصر السريع فى البرمجة غرضية التوجية فى Php
المختصر السريع فى البرمجة غرضية التوجية فى Php
 
Navisworks
 Navisworks  Navisworks
Navisworks
 
لغة البرمجة سكالا
لغة البرمجة سكالالغة البرمجة سكالا
لغة البرمجة سكالا
 
Deadlock
DeadlockDeadlock
Deadlock
 
rbguiqt
rbguiqtrbguiqt
rbguiqt
 
rbguiqt
rbguiqtrbguiqt
rbguiqt
 
موقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثاني
موقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثانيموقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثاني
موقع ملزمتي - مراجعة ليلة الامتحان حاسب آلي للصف الثاني الثانوي الترم الثاني
 
لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)لا تكرر نفسك DRY (Don't Repeat yourself)
لا تكرر نفسك DRY (Don't Repeat yourself)
 
الحزم و التحزيم في سلاكوير
الحزم و التحزيم في سلاكويرالحزم و التحزيم في سلاكوير
الحزم و التحزيم في سلاكوير
 

More from Mohammad Alyan

More from Mohammad Alyan (10)

Blue ocean strategy arabic
Blue ocean strategy arabicBlue ocean strategy arabic
Blue ocean strategy arabic
 
Apple case study
Apple case studyApple case study
Apple case study
 
Introduction to Industry Life Cycles
 Introduction to Industry Life Cycles  Introduction to Industry Life Cycles
Introduction to Industry Life Cycles
 
Crowd funding
Crowd fundingCrowd funding
Crowd funding
 
Coursera
CourseraCoursera
Coursera
 
Course index
Course indexCourse index
Course index
 
التفكير- مصنع للإبداع
التفكير- مصنع للإبداعالتفكير- مصنع للإبداع
التفكير- مصنع للإبداع
 
Cloud computing
Cloud computing Cloud computing
Cloud computing
 
Linq introduction
Linq introductionLinq introduction
Linq introduction
 
10 1 otp all
10 1 otp all10 1 otp all
10 1 otp all
 

7 multi threading

  • 2. Outlines مقدمة في نظم التشغيل  Multithreading لماذا نحتاج إلى تعدد النياسب  Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب  )Thread Terminatation( إيقاف نيسب  Background Threads النياسب التي تعمل في الخلفية  Thread Class  05 2 تشرين الثاني، 14
  • 3. مقدمة في نظم التشغيل هي برنامج قيد التنفيذ . : Process المهمة  كيف يقوم النظام بتشغيل أكثر من برنامج بنفس الوقت ؟  جدولة المهام .  الشرائح الزمنية .  Code Segment Data Segment Stack Segment Heap Segment 05 3 تشرين الثاني، 14
  • 4. مقدمة في نظم التشغيل )Stack( هو عبارة عن مسلك برمجي مستقل في المكدس :)Thread( تعريف النيسب  بعبارة أخرى : هو سياق من التعليمات , )Heap( ويشترك مع غيره من النياسب في الكومة التي نريد تنفيذها على التوازي مع غيرها من التعليمات الأخرى. مجموعة من السجلات الخاصة + Stack في الحقيقة كل نيسب هو عبارة عن  . )PC( بما فيها عداد البرنامج واحد على الأقل . Thread تحوي )Process( كل مهمة  هي من مهمة نظام التشغيل . )Processes Management( إدارة المهام  فهي من مهمة المبرمج . )Threads Management( أما إدارة النياسب  جدولة النياسب , وجدولة المهام .  05 4 تشرين الثاني، 14
  • 5. Multithreading لماذا نحتاج إلى تعدد النياسب )Executing in Background( التنفيذ في الخلفية  إنجاز مهمة اكثر من مرة لتسريع العمل  استغلال أمثل للموارد المتاحة ) في  تنفيذ برنامج لمعالجة صورة معينة يمكن تقسيم العمل على أكثر من نيسب  .)SMP حال وجود بنى تعدد النياسب هو الطريقة الطبيعية لبناء نوع محدد من البرامج  المخدمات بكافة أنواعها .  05 5 تشرين الثاني، 14
  • 6. Multithreaded كيف نقوم بإنشاء تطبيقات متعددة النياسب هو مجموعة من التعليمات التي يتم تنفيذها على التوازي )Thread( علمنا إلى الآن أن النيسب  مع بقية البرنامج . إلى مفوض )أو مندوب يُسمى Method يتم تمرير اسم هذا ال Method هذه التعليمات تمُثل  . Thread وهذا المندوب يتم تسليمه إلى غرض من الصف )Delegate هي مفوض عن مجموعة من التوابع التي تحمل نفس التوقيع . : Delegate  05 6 تشرين الثاني، 14
  • 7. )Thread Terminatation( إيقاف نيسب كيف يتم إيقاف النيسب ومتى يتنهي عمله؟  . Abort() إيقاف النيسب بشكل قسري عن طريق المنهج  هذه الطريقة غير مُحبذة .  05 7 تشرين الثاني، 14
  • 8. Background Threads النياسب التي تعمل في الخلفية )Background( والتي تعمل في الخلفية )Processes( نظام التشغيل يستعمل مجموعة من المهام  خدمات ويندوز" أما في نظام " )Windows Services( وتسمى في نظام ويندوز باسم . daemons فتسُمى Linux/Unix المهام التي تعمل في الخلفية يكون لها أفضلية أقل من المهام التي تعمل في الأمام .  نفس الفكرة يمكن تطبيقها على النياسب حيث يمكننا أن نجعل نيسب معين يعمل في الخلفية.  والتي IsBackground عن طريق الخاصية )Background( يمكن أن نجعل نيسب ما يعمل في الخلفية  .true يتم ضبطها بالقيمة .)forground( عند إنتهاء أخر نيسب أمامي )Background( تنتهي النياسب الخلفية  05 8 تشرين الثاني، 14
  • 9. Thread Class نيسب في مستوى نظام التشغيل . System.Threading.Thread يمثل الصنف  :Thread أهم الخصائص الموجود في الصنف  الخا ية الو ف إلى النيسب المنفذ الي ا . )Reference ( تعيد مرجع CurrentThread إذا كان النيسب قد بدأ ولم ينتهي بعد . true تعيد IsAlive إذا كان النيسب يعم ي الخلفية . true تعيد ISBackground اسم النيسب. )set or get( تعيد أو ت دد Name أ لية النيسب. )set or get( تعيد أو ت دد Priority الة النيسب. )set or get( تعيد أو ت دد ThreadState 05 9 تشرين الثاني، 14
  • 10. Thread Class :Thread أهم المناهج الموجود في الصنف  الو ف )method( ال ريقة البدأ بتنفيذ بتنفيذ النيسب Start تنهي تنفيذ النيسب ب ك وري. Abort waitSleepJoin تقا ع النيسب الذي يكون ي الة Interrupt إنت ار نيسب معين )النيسب ال مستدعي لهذا المنه ( تى ينتهي تنفيذ هذا النيسب. Join إيقاف م قت-( -pause( إرجا عم النيسب لفترة ير م دودة Suspend )Suspend( تب عم التابع السابق Resume تنوم النيسب لفترة م ددة . Sleep 05 10 تشرين الثاني، 14
  • 11. ThreadState مىTلمُس hا )Ernuem(a داد d ن التع Sضم t دةa وجو tم eهي s حل اكل لانيسب ت حا اللة نأيو عد سة حا بلا ت و  القيمة النيسب يعم ا ن Running )Abort( النيسب قد استقب ا ارة إيقاف StopRequested )pause( النيسب قد استقب ا ارة إيقاف م قت SuspendRequested النيسب يعم ي الخلفية Background Start() النيسب تم إن ا ولكن لم يتم تنفيذ المنه Unstarted النيسب تم إيقا ه ) ( Stopped .Join Sleep أو wait النيسب متوقف ن استدعا WaitSleepJoin النيسب متوقف ب ك م قت Suspended يتنق النيسب إلى هذ ال الة عندما نكون قد استدعينا المنه AbortRequested للنيسب. ولكن هذا النيسب لم يستقب بعد إ ارة ا يقاف Abort )ThreadAbortException( والتي يتم التعبير عنها با ست نا والذي ينهي عم هذا النيسب. و النيسب قد توقف)مات( )AbortRequested( نف ال الة السابقة Aborted .Stopped ولكن اته لم تت ير إلى ال الة 05 11 تشرين الثاني، 14
  • 12. Thread Priority )Process( لكل نيسب أفضلية)أولوية( بالنسبة لغيره من النياسب التي تشترك معه في نفس المهمة  .Normal يتم إنشاء جميع النياسب بأفضلية  القيمة الو ف النيسب له ا لية العليا Highest النيسب له أ لية أعلى من النيسب العادي AboveNormal النيسب له أ لية عادية Normal النيسب له أ لية أدنى من النيسب العادي BelowNormal النيسب له ا لية الدنيا Lowest 05 12 تشرين الثاني، 14
  • 13. Concurrency التنافس على الموارد ذات فوائد عظيمة جد ا )Multithreaded Application ( التطبيقات متعددة النياسب  إدارة النياسب ليس أمرا سهلا أبدا .  إذا حاول نيسبان العمل على غرض مشترك في الذاكرة فإن النتائج ستكون خا ئة .  يجب التعرف على مفهومين أساسين لحل مشاكل التنافس على الموارد :  )Critical Sections( المقا ع ال رجة  وهي طريقة لتحقيق دخول نيسب وا د إلى المقطع الحرج. :)Lock( القف  ملا ات :  يجب علينا الحذر عند استعمال القفل بحيث نقفل أصغر جزء من الكود )الشيفرة( التي نحتاج إلى حمايته ضمن البرنامج .  وسنراها على نطاق )Processes( هذه الأفكار هي موجودة ومطبقة من قبل نظام التشغيل ولكن على نطاق المهام  النياسب . 05 13 تشرين الثاني، 14
  • 14. استخدام المقاطع الحرجة والقفل Lock { read value from DB update value in RAM writing value to DB } 05 14 تشرين الثاني، 14
  • 15. استخدام المقاطع الحرجة والقفل Static int [] arr=new int [10]; Static int index++; if (index>=10) return; Console.WriteLine(arr[index]); 05 15 تشرين الثاني، 14
  • 16. Threads Synchronization التزامن بين النياسب نحتاج إلى المزامنة بين النياسب لسببين هما:  استخدام موارد م تركة  )Concurrency( التواقت  Thread B Globalx=4 Thread A Globalx=3 //call function Func(Globalx ); 05 16 تشرين الثاني، 14
  • 17. Synchronization Implementation تحقيق التزامن مسألة ولوج أكثر من نيسب على حساب مصرفي والقيام بعمليات سحب مال من الرصيد .  سنقوم بعرض المثال مرة من دون تزامن و مرة مع تزامن .  فقط نيسب واحد في لحظة ما يدخل إلى المقطع الحرج )يضع قفل على الغرض وبقية النياسب تكون في حالة انت ار(.  بعد أن ينتهي هذ النيسب من تنفيذ كامل المقطع الحرج )والذي يم مناقلة كاملة( يقوم بت رير القف .  م يقوم ن ام الت ي بإختيار أحد النياسب التي ي الة إنت ار للدخول في المقطع الحرج.  05 17 تشرين الثاني، 14
  • 18. Synchronization Classes أصناف التزامن لتقديم )Safe( آمنة )method( يحتوي هذه الصنف على مناهج : Interlocked ال ف  العمليات ا منة على المتحولات المشتركة بين عدة نياسب. إما )Transaction( أي أن المنهج هو عبارة عن مناقلة )atomic( هذه المناهج هي ذرية  أن تتم ب ك كام دون مقا عة من المعال أو أن لا تتم أبد ا . من هذ المناه : Decrement - Increment  يضع قيمة في مت و ويعيد القيمة ا لية )القديمة( للمتحول. :Exchange  : CompareExchange  05 18 تشرين الثاني، 14
  • 19. Parallel Programming Example n/p  نيسب حيث يقوم كل نيسب بجمع الأعداد من 1 p ولدينا , n  جمع الأعداد من 1  05 19 تشرين الثاني، 14
  • 20. Semaphore Class في مستوى )Processes( السيما ور : هو عبارة عن طريقة لتحقيق التزامن بين المهام  نظام التشغيل , يمكن أيض ا استعماله لتحقيق التزامن بين النياسب . من )Pool( عبارة عن رقم يُمثل عدد م دود من النياسب التي تست يع ال و على مورد م ترك" أو ) وض  الموارد التي يتم التنا عليها من قِبَ أك ر من نيسب(. مثال الطابعة .  لاحظة ه ة: قيمة السيمافور هي عدد كبر ي ي صفر ويعبر عن عدد  س التي تستطيع أن تحص على م رد ب شرة ن د ن إ تظ ر. 05 20 تشرين الثاني، 14
  • 21. Mutex Class (Mutual Exclusion) طريقة بسيطة للتزامن بحيث يسمح لنيسب وا د بالدخول إلى )Mutex( يعطي هذا الصف المقطع الحرج مع إستبعاد البقية )بقية النياسب تبقى في حالة إنتظار إلى أن يقوم هذا النيسب بت رير . )Mutex ا .)Lock - unlock( آلية Mutex يستعمل ال  05 21 تشرين الثاني، 14
  • 22. في شيفرة برنامجك )Deadlock( كيف يمكن أن تتجنب حدوث الإقفال المتبادل عندما كل من النيسبين بحاجة إلى معطيات من الأخر )Two Threads( يحدث بين نيسبين  حتى يكمل عمله. هذه المشكلة تعُتبر من أعقد المشاكل التي واجهت مصمي نظم التشغيل.  هي من مس ولية المبرم . )Threads( و لكن حلها على مستوى النياسب )Processes( تم لها على مستوى المهام  أيض ا . Mutex وعن إستخدام ال Locks عن إستخدام الأقفال )DeadLock( في الحقيقة تنتج هذه المشكلة  ن صع جد تصم م تطب ق تعددة س ح ث لا تحدث ف حلق فرغة  .)DeadLocks( 05 22 تشرين الثاني، 14
  • 23. Monitor Class قفليتم الحصول عليه من قبل نيسب واحد. .NET في )object( لكل كائن  يمللك المزايا التالية: Monitor الصف  عند الطلب . )Monitor( -1 مرتبطة بغرضويتم الحصول على المراقب -2 غير مقيد. أي يمكن استدعائه في أي مكان ضمن الكود . -3 لا يمكن إنشاء غرضمن هذا الصنف . من أجل كل غرض متزامن )يتم الوصول إليه من أكثر من نيسب(:  نيسب وحيد يملك القفل .  يحوي النياسب التي تنتظر أن يختارها المعالج لكي تحصل على القفل مع :)Ready Queue( رت جاهزية  استبعاد بقية النياسب يحوي النياسب التي في حالة إنتظارإشارة إيقاظ من نيسب أخر لتستعيد : )Waiting Queue( رت إنت ار  الحصول على القفل. 05 23 تشرين الثاني، 14
  • 24. Monitor Class 05 24 تشرين الثاني، 14
  • 25. Producer / Consumere Example 05 25 تشرين الثاني، 14