سمافور (Semaphore)
توضیحات
در جلسه بیست و ششم فیلم آموزشی (آموزش مجازی) سیستم عامل دکتر حقیقت ویژه کنکور کارشناسی ارشد مهندسی کامپیوتر و کنکور کارشناسی ارشد مهندسی فناوری اطلاعات و کنکور دکتری مهندسی کامپیوتر و نیز امتحانات دانشگاهی و آزمونهای استخدامی، ادامه فصل مهم چهارم سیستم عامل با عنوان «سمافور (Semaphore)» ارائه میشود. سمافور مهمترین مبحث فصل 4 است (هم از نظر عمق مطلب، هم از دیدگاه زیبایی، هم از لحاظ نرخ تکرار در کنکور و هم از دید کاربرد در عمل). ديديم كه راهحلهای نرمافزاری و سخت افزاری مشكلات و نقاط ضعف متعددی دارند كه نمیتوان آنها را ناديده گرفت. از طرفی، اولیههای ساده sleep و wakeup نيز از عهده حل مشكل بر نمیآيند. در این جلسه ابتدا به این موضوع پرداخته میشود که سمافور چیست و چرا سمافور؟ پس از تعریف دقیق سمافور و علت پیایش و ایده اصلی آن، اولیههای اتمی down (wait/P) و up (signal/V) با شبه کد مربوطه دقیقاً شرح داده میشوند. سپس با یک مثال زیبا و سناریویی خاص، نحوه کار با سمافور و اولیههای آن به سادگی آموزش داده میشود. سپس در این باب خن به میان میآید که كاربران میتوانند در برنامههای خود فقط سه عمل بر روی سمافور انجام دهند: 1) تعريف سمافور و مقداردهی اوليه به شمارنده آن 2) اجرای فراخوان سيستمی (اوليه) downروی آن 3) اجرای فراخوان سيستمی (اوليه) up روی آن. سپس انحصار متقابل با استفاده از سمافورها مورد بحث و بررسی عمیق و دقیق قرار میگیرد و سمافور باینری mutex با جزئیات کامل شرح داده میشود و راه حل مسئله خط به خط نوشته شده و تشریح و سپس در یک سناریوی دقیق، Trace میشود. آنگاه در یک جدول مقایسهای، سمافور با روشهای پیترسون و TSL مقایسه میشود. سپس چند نکته مهم کنکوری در باره سمافور گفته شده و در انتها سمافور شمارشی مثبت و منفی و تفاوت آن با سمافور شمارشی غیر منفی تعریف و شبهکد اولیههای up و down مربوطه نوشته شده و بعد از آن کاربرد آن در حل مسئله انحصار متقابل مورد بحث و بررسی عمیق و دقیق قرار میگیرد و راه حل مسئله خط به خط نوشته و تشریح شده و سپس در یک سناریوی دقیق، Trace میشود. سپس شبهکد اولیههای up و down سمافور ذاتاً باینری نوشته شده و شرح داده میشود. آخرین مبحث این جلسه، پيادهسازی down و up به شكل اتمی در دو نوع سیستم تکپردازنده و چندپردازنده است.