Concurrency: Mutual Exclusion and Synchronization

Slides:



Advertisements
Similar presentations
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee.
Advertisements

1 Chapter 5 Concurrency: Mutual Exclusion and Synchronization Principals of Concurrency Mutual Exclusion: Hardware Support Semaphores Readers/Writers Problem.
Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Ch. 7 Process Synchronization (1/2) I Background F Producer - Consumer process :  Compiler, Assembler, Loader, · · · · · · F Bounded buffer.
Chapter 6: Process Synchronization
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Chapter 6: Process Synchronization.
Process Synchronization. Module 6: Process Synchronization Background The Critical-Section Problem Peterson’s Solution Synchronization Hardware Semaphores.
Concurrency: Mutual Exclusion and Synchronization Chapter 5.
1 Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Informationsteknologi Wednesday, September 26, 2007 Computer Systems/Operating Systems - Class 91 Today’s class Mutual exclusion and synchronization 
Synchronization Principles Gordon College Stephen Brinton.
Day 14 Concurrency. Software approaches Programs must be written such that they ensure mutual exclusion. Petersons and Dekkers (Appendix B)
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee.
Enforcing Mutual Exclusion, Semaphores. Four different approaches Hardware support Disable interrupts Special instructions Software-defined approaches.
1 Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 7: Process Synchronization Background The Critical-Section Problem Synchronization.
Chapter 6: Process Synchronization. Outline Background Critical-Section Problem Peterson’s Solution Synchronization Hardware Semaphores Classic Problems.
Synchronization Solutions
Instructor: Umar KalimNUST Institute of Information Technology Operating Systems Process Synchronization.
1 Chapter 5 Concurrency. 2 Concurrency 3 4 Mutual Exclusion: Hardware Support Test and Set Instruction boolean testset (int *i) { if (*i == 0) { *i.
Condition Variables Revisited Copyright ©: University of Illinois CS 241 Staff1.
Operating Systems CSE 411 CPU Management Oct Lecture 13 Instructor: Bhuvan Urgaonkar.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings 1.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization
Chapter 6: Process Synchronization. 6.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 8, 2005 Background Concurrent.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Dave Bremer Otago.
Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Dave Bremer Otago Polytechnic,
Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Dave Bremer Otago.
6.3 Peterson’s Solution The two processes share two variables: Int turn; Boolean flag[2] The variable turn indicates whose turn it is to enter the critical.
Operating Systems CMPSC 473 Mutual Exclusion Lecture 14: October 14, 2010 Instructor: Bhuvan Urgaonkar.
1 Using Semaphores CS 241 March 14, 2012 University of Illinois Slides adapted in part from material accompanying Bryant & O’Hallaron, “Computer Systems:
Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 7: Process Synchronization Background The Critical-Section Problem Synchronization.
3 Chapter 5. Theme of OS Design? Management of processes and threads Multiprogramming Multiprocessing Distributed processing.
Chap 6 Synchronization. Background Concurrent access to shared data may result in data inconsistency Maintaining data consistency requires mechanisms.
Concurrency: Mutual Exclusion and Synchronization Chapter 5.
1 Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee.
1 Concurrency: Mutual Exclusion and Synchronization Chapter 4.
1 Concurrency: Mutual Exclusion and Synchronization Chapter 5.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee.
Chapter 6: Process Synchronization. 6.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts Module 6: Process Synchronization Background The.
Background Concurrent access to shared data may result in data inconsistency Maintaining data consistency requires mechanisms to ensure the orderly execution.
1 Inter Process Communication & Timers. 2 Time.h (page R:Ch9 pp ) #include time_t time(time_t *calptr); Epoch: 00:00 (midnight), Jan 1, 1970 GMT.
CIS Operating Systems Synchronization Professor Qiang Zeng Fall 2015.
Operating Systems CSE 411 CPU Management Dec Lecture Instructor: Bhuvan Urgaonkar.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee.
Copyright ©: Nahrstedt, Angrave, Abdelzaher1 Synchronization.
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 22 Semaphores Classic.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 6: Process Synchronization.
Chapter 6 Synchronization Dr. Yingwu Zhu. The Problem with Concurrent Execution Concurrent processes (& threads) often access shared data and resources.
Chapter 5 Concurrency: Mutual Exclusion and Synchronization Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee.
Semaphores Synchronization tool (provided by the OS) that does not require busy waiting. Logically, a semaphore S is an integer variable that, apart from.
Process Synchronization: Semaphores
CIS Operating Systems Synchronization
Chapter 6-7: Process Synchronization
Chapter 5: Process Synchronization
Chapter 6: Process Synchronization
Concurrency: Mutual Exclusion and Synchronization
Semaphore Originally called P() and V() wait (S) { while S <= 0
Process Synchronization
Synchronization and Semaphores
Critical section problem
Chapter 6: Process Synchronization
Synchronization Primitives – Semaphore and Mutex
Synchronization.
Process/Thread Synchronization (Part 2)
Chapter 5 Mutual Exclusion(互斥) and Synchronization(同步)
Presentation transcript:

Concurrency: Mutual Exclusion and Synchronization فصل پنجم

Currency ارتباط بین فرآیندها اشتراک منابع همزمان سازی فرآیندها تخصیص زمان پردازنده

Concurrency چند کاربرد مختلف یک کاربرد ساختار یافته ساختار سیستم عامل چند برنامگی یک کاربرد ساختار یافته کاربرد می تواند شامل مجموعه ای از فرآیندهای همزمان باشد. ساختار سیستم عامل سیستم عامل مجموعه ای از فرآیندها و نخها است.

Difficulties with Concurrency اشتراک منابع عمومی مدیریت تخصیص منابع تشخیص محل خطاهای برنامه نویسی مشکل است.

A Simple Example void echo() { chin = getchar(); chout = chin; putchar(chout); }

A Simple Example Process P1 Process P2 . . in = getchar(); . . . in = getchar(); . . in = getchar(); chout = chin; chout = chin; putchar(chout); . . putchar(chout);

Operating System Concerns دنبال کردن فرآیندهای فعال تخصیص و بازپس گیری منابع زمان پردازنده حافظه فایلها دستگاههای I/O حفاظت داده و منابع نتیجه اجرای یک فرآیند نباید به سرعت اجرای فرآیندهای همزمان ربط داشته باشد.

Process Interaction فرآیندها از وجود همدیگر با اطلاع نیستند. فرآیندها بطور غیر مستقیم از همدیگر اطلاع دارند. فرآیندها بطور مستقیم از همدیگر اطلاع دارند.

Competition Among Processes for Resources انحصار متقابل نواحی بحرانی در هر لحظه از زمان فقط یک برنامه می تواند در ناحیه بحرانی باشد. بن بست گرسنگی

Cooperation Among Processes by Sharing نوشتن در ناحیه بحرانی باید بصورت انحصار متقابل انجام شود. نواحی بحرانی برای اطمینان از جامعیت داده لازم هستند.

Cooperation Among Processes by Communication تبادل پیغام نیازی به انحصار متقابل نیست. امکان بن بست وجود دارد ممکن است هر دو فرآیند منتظر پیغام دیگری باشند. امکان گرسنگی داریم دو فرآیند با هم پیغام مبادله می کنند در حالیکه سومی منتظر است.

Requirements for Critical Region انحصار متقابل: در هر لحظه از زمان فقط یک فرآیند می تواند در ناحیه بحرانی باشد. پیشرفت: وقتی که فرآیند دیگری از ناحیه بحرانی استفاده نمی کند، فرآیند متقاضی نباید با تأخیر روبرو شود. فرضهای ساده: در مورد تعداد و سرعت نسبی فرآیندها نباید فرضی انجام شود. تاخیر محدود: مدت استفاده از ناحیه بحرانی برای هر فرآیند محدود است.

کسی بی نوبت داخل نرود! خوب، اصلا دیدی کسی بره تو؟! آیا درها قفل دارند؟ Bounded Wait Mutual Exclusion Progress کسی بی نوبت داخل نرود! خوب، اصلا دیدی کسی بره تو؟! آیا درها قفل دارند؟ اگر بدویم، اولین نفر ما هستیم! Oversimplifying Assumptions

First Attempt انتظار مشغولی فرآیند مرتب چک می کند که ببیند می تواند وارد ناحیه بحرانی شود یا نه. در این حالت فرآیند تا وقتی که وارد ناحیه بحرانی نشود، هیچ کار مفیدی انجام نمی دهد. اگر فرآیندی در ناحیه بحرانی خود شکست بخورد، فرآیند دیگر تا ابد مسدود خواهد بود. فرآیندها به نوبت از ناحیه بحرانی استفاده می کنند.

Second Attempt هر فرآیند می تواند وضعیت دیگران را ببیند، اما نمی تواند آنرا تغییر دهد. وقتی که فرآیند می خواهد وارد ناحیه بحرانی شود، ابتدا وضعیت دیگران را چک می کند. اگر هیچ فرآیندی در ناحیه بحرانی نباشد، فرآیند ما وضعیت خود را به ناحیه بحرانی تغییر می دهد. متاسفانه این متد انحصار متقابل را تضمین نمی کند. ممکن است دو فرآیند با هم ناحیه بحرانی را خالی ببیند و با هم وارد آن شوند.

Third Attempt قبل از چک کردن وضعیت دیگران، وضعیت خود را به حالت بحرانی تغییر دهیم. اگر بعد از این کار دیدیم که فرآیند دیگری در ناحیه بحرانی است، فرآیند تا خالی شدن ناحیه بحرانی مسدود می شود. در این حالت امکان بن بست وجود دارد- اگر دو فرآیند همزمان بخواهند وارد ناحیه بحرانی شوند ، هر کدام به اشتباه فکر می کنند که دیگری در ناحیه بحرانی است وهر دو تا ابد مسدود خواهند ماند.

Fourth Attempt فرآیند یک پرچم را به نشانه تمایل خود به استفاده از ناحیه بحرانی روشن می کند، اما این آمادگی را دارد که در صورت لزوم پرچم را خاموش کند. سپس، فرآیندهای دیگر را چک می کند. اگر کسی در ناحیه بحرانی باشد پرچم را خاموش می کند و در زمان دیگری آنرا روشن می کند. این عمل تا وقتی که وارد ناحیه بحرانی نشود تکرار می گردد.

Fourth Attempt فرض کنید ناحیه بحرانی خالی است. ممکن است که دو فرآیند پرچم خود را روشن کنند، دیگری را چک کنند و دوباره پرچم را خاموش کنند. این امر البته خیلی طول نخواهد کشید و بن بست اتفاق نمی افتد اما مطلوب نیست.

Correct Solution هر فرآیند یک نوبت برای ناحیه بحرانی می گیرد. اگر فرآیند بخواهد وارد ناحیه بحرانی شود ابتدا پرچم خود را روشن می کند و منتظر نوبتش می ماند.

Mutual Exclusion: Hardware Support خاموش کردن وقفه در حالت عادی وقتی فرآیندی اجرا می شود به دو دلیل ممکن است متوقف شود: وقوع وقفه درخواست یک خدمت سیستم عامل لذا اگر در حین اجرا وقفه را خاموش کنیم، انحصار متقابل تضمین می گردد. این امر استفاده های مفید وقفه را از بین می برد. در سیستمهای چند پردازنده ای، خاموش کردن وقفه در یکی از پردازنده ها انحصار متقابل را تضمین نمی کند.

Mutual Exclusion: Hardware Support وجود یک دستورالعمل خاص ماشین (اسمبلی) باید در یک سیکل اجرا شود. لذا دستورات دیگر روی آن تاثیری ندارند. دستور test&set boolean testset (int i) { if (i == 0) { i = 1; return true; } else { return false;

Test&set Usage while (true) { while (!test&set(a)) /*do nothing*/ /* critical section*/ a=0; /*remainder*/ }

Mutual Exclusion: Hardware Support دستور Exchange void exchange(int register, int memory) { int temp; temp = memory; memory = register; register = temp; }

Process i /* a is shared variable initialized to 0 int ki=1; while (true) { do swap(ki,a); while (ki!=0) /* critical section*/ swap(a,ki); /*remainder*/ }

Mutual Exclusion Machine Instructions مزایا به سیستمهای چند پردازنده ای قابل اعمال است. ساده است. می توان چندین ناحیه بحرانی داشت.

Mutual Exclusion Machine Instructions عیوب انتظار مشغولی وقت پردازنده را مصرف می کند. امکان گرسنگی وجود دارد. اگر یک فرآیند ناحیه بحرانی را ترک کند و چند فرآیند منتظر ورود باشند. بن بست: اگر یک فرآیند کم اهمیت داخل ناحیه بحرانی باشد و یک فرآیند مهم به ناحیه بحرانی نیاز داشته باشد. فرآیند مهم تر پردازنده را با وقفه در اختیار می گیرد. فرآیند کم اهمیت تر تا ابد منتظر ناحیه بحرانی می ماند، زیرا هیچوقت به فرآیند معمولی اجازه در اختیار گرفتن پردازنده و اتمام کار داده نمی شود.

Semaphores سمافور یک متغییر مخصوص است که برای مبادله سیگنال از آن استفاده می گردد. اگر فرآیندی منتظر یک سیگنال باشد، تا وقتی که سیگنال نرسد مسدود می شود. عملگرهای wait و signal وقفه پذیر نیستند. یک صف برای نگهداری از فرآیندهایی که منتظر یک سمافور هستند ، تشکیل می شود.

Semaphores سمافور دارای یک متغییر است که مقدار طبیعی دارد. این متغییر نشانگر تعداد فرآیندهایی است که می توانند بدون انتظار از سمافور استفاده کنند. هر عمل wait مقدار سمافور را یک واحد کم می کند. هر عمل signal مقدار سمافور را یک واحد افزایش می دهد.

Definition of Semaphore Primitives (Counting Semaphore) struct semaphore{ int count; queueType queue; }; void semWait(semaphore s) { s.count--; if (s.count < 0) { place this process in s.queue; block this process; } void semSignal(semaphore s) { s.count++; if (s.count ≤ 0) remove a process P from s.queue; place process P on ready list; }

Definition of Binary Semaphore Primitives struct binary_semaphore { enum {0,1} value; queueType queue; }; void semWaitB(binary_semaphore s) { if (s.value == 1) s.value = 0; else { place this process in s.queue; block this process; } void semSignalB(binary_semaphore s) { if (s.queue is empty()) s.value = 1; else remove a process P from s.queue; place process P on ready list; }

Mutual Exclusion Using Semaphores Pi { while(1) { semWait(s); /* Critical Section */ semSignal(s); /* remainder */ } lock = 0; Pi { while(1) { while(!Test_And_Set(lock)) { }; /* Critical Section */ lock =0; /* remainder */ }

Process Process Value of Semaphore lock Queue B A 1 semWait(lock) Critical Region Value of Semaphore lock Queue B A Normal Execution Blocked on semaphore lock 1 semWait(lock) semWait(lock) -1 B semSignal(lock) semSignal(lock) 1

Producer/Consumer Problem یک یا چند تولید کننده داده تولید می کنند و در بافر قرار می دهند. یک مصرف کننده داده ها را از بافر برمی دارد و مصرف می کند. در هر لحظه از زمان فقط یک مصرف کننده یا تولید کننده می توانند به بافر دسترسی داشته باشند. این مساله در برنامه نویسی سیستم و برنامه نویسی کاربردی اتفاق می افتد: یک وب سرور درخواستهای وب ورودی را به فرآیندهای منتظر ارسال می کند تا سرویس داده شوند. اتفاقات مربوط به GUI (صادره از صفحه کلید و ماوس) توسط سیستم عامل در یک صف قرار داده می شوند و برنامه ها آنها را مصرف می کنند.

Producer-Consumer Problem می توان با یک بافر حلقوی و دو اشاره گر برای درج و حذف داده مسأله را حل کرد. insertPtr removePtr

Challenge جلوگیری از سرریز بافر جلوگیری از قحطی همزمانی مناسب تولید کننده تعداد زیادی آیتم در بافر قرار می دهد و آنرا پر می کتد. جلوگیری از قحطی تولید کننده یک آیتم را تولید می کند. مصرف کننده یک آیتم را مصرف می کند. مصرف کننده دوباره یک آیتم دیگر را مصرف می کند. همزمانی مناسب انحصار متقابل پیشرفت انتظار محدود (جلوگیری از بن بست)

2 Counting Semaphores and a mutex یک سمافور برای شمارش آیتمهای موجود در بافر یک سمافور برای شمارش جاهای خالی (slots) در بافر یک سمافور برای قفل کردن ناحیه بحرانی

Assembling the solution sem_wait(slots), sem_post(slots) sem_wait(items), sem_post(items) sem_wait(mutex)و sem_post(mutex) insertptr=(insertptr+1) % N removalptr=(removalptr+1) % N مقدار اولیه سمافور slots برابر سایز بافر است. مقدار اولیه سمافور items برابر صفر است. مقدار اولیه سمافور mutex برابر یک است.

Pseudocode getItem() sem_wait(items) sem_wait(mutex) result=buffer[ removePtr ]; removePtr=(removePtr +1 ) % N sem_post(mutex) sem_post(slots)

Pseudocode putItem(data) sem_wait(slots) sem_wait(mutex) buffer[ insertPtr]= data; insertPtr=(insertPtr + 1 ) % N sem_post(mutex) sem_post(items)

Analysis#1 What's the precise problem? putItem(data) { sem_wait(mutex) sem_wait(slots) buffer[ insertPtr]= … insertPtr=… sem_post(items) sem_post(mutex) } getItem() { sem_wait(mutex) sem_wait(items) result=buffer[ removePtr ]; removePtr=… sem_post(slots) sem_post(mutex) }

Deadlock e.g Consumer waits for producer to insert a new item but Producer is waiting for Consumer to release mutex putItem(data) { sem_wait(mutex) #2 sem_wait(slots) buffer[ insertPtr]= … insertPtr=… sem_post(items) sem_post(mutex) } getItem() { sem_wait(mutex) sem_wait(items) BLOCKS #1 result=buffer[ removePtr ]; removePtr=… sem_post(slots) sem_post(mutex) }

Analysis#2 putItem(data) { sem_wait(slots) sem_wait(mutex) buffer[ insertPtr]= … insertPtr=… sem_post(items) sem_post(mutex) } getItem() { sem_wait(items) sem_post(slots) sem_wait(mutex) result=buffer[ removePtr ]; removePtr=… sem_post(mutex) }

Buffer overflow when reader removes item from a full buffer: Producer inserts item too early putItem(data) { sem_wait(slots) sem_wait(mutex) buffer[ insertPtr]= … insertPtr=… sem_post(items) sem_post(mutex) } getItem() { sem_wait(items) sem_post(slots) sem_wait(mutex) result=buffer[ removePtr ]; removePtr=… sem_post(mutex) }

Barbershop Problem

First Reader-Writer Problem خواننده: خواندن داده نویسنده: نوشتن داده قوانین: چند خواننده می توانند داده را با هم بخوانند. در هر زمان فقط یک نویسنده می تواند داده را بنویسد. یک خواننده و نویسنده با هم نمی توانند در ناحیه بحرانی باشند. Reader Writer OK No NO

Writer sem_wait(&wrt); do writing Sem_post(&wrt); } Reader while (TRUE) { Think_up_data(); /*noncritical section*/ sem_wait(&wrt); do writing Sem_post(&wrt); } Reader while (TRUE) { sem_wait(&mutex); readcount =readcount+1; if readcount == 1 then sem_wait(&wrt); sem_post(&mutex); do reading sem_wait(&mutex) readcount=readcount-1; if readcount == 0 then sem_post(&wrt); Use read data }

Monitors مانیتور یک ماژول نرم افزاری است. مشخصات اصلی: متغییرهای داده ای محلی فقط توسط خود مانیتور قابل دسترسی هستند. فرآیند با صدا زدن یکی از پروسه های مانیتور وارد آن می شود. در هر لحظه از زمان فقط یک فرآیند در داخل مانیتور در حال اجرا است.

Message Passing در این روش انحصار متقابل بصورت ضمنی وجود دارد. اطلاعات بین فرآیندها از طریق پیغام رد و بدل می شود. send (destination, message) receive (source, message)

Synchronization فرستنده و گیرنده می توانند در حین ارسال و دریافت پیغام مسدود شوند یا مسدود نشوند. حالت اول: مسدود شدن فرستنده و گیرنده در هنگام مبادله پیغام. این روش وعده گاه نیز نامیده شده است. حالت دوم: فرستنده غیر مسدود و گیرنده مسدود: در این حالت گیرنده تا وقتی که پیغام را بطور کامل دریافت نکند مسدود می شود. اما فرستنده می تواند به کار خود ادامه دهد. حالت سوم: فرستنده و گیرنده غیر مسدود.

Addressing آدرس دهی مستقیم: فرستنده آدرس گیرنده را در پیغام قرار می دهد. گیرنده می تواند از پارامتر منبع پیام برای اطلاع دادن به فرستنده استفاده کند. در گیرنده دو حالت امکان پذیر است: گیرنده دقیقا از قبل می داند که کی برای آن پیغام می فرستد. (برای ارتباط دو فرآیند مفید است). گیرنده از هر فرستنده ای داده قبول می کند .

Addressing آدرس دهی غیر مستقیم: چهار حالت دارد: پیغامها به یک ساختار داده مشترک که جعبه پستی نام دارد فرستاده می شوند. یک فرآیند پیغام را به جعبه پستی می فرستد و دیگری پیغام را بر می دارد. چهار حالت دارد: یک نفر به یک نفر یک نفر به چند نفر چند نفر به یک نفر چند نفر به چند نفر

Message Format