عکس پیش‌فرض نوشته

در یک سیستم چند پردازنده ای باید پردازنده های متفاوتی با امکان ارتباط با یکدیگر فراهم شوند.

مسیر ارتباط میتواند از طریق کانال های مشترک ورودی – خروجی ایجاد شود.

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

ارتباط بین پردازنده ها در سیستم های چند پردازنده ای

 

در یک سیستم چند پردازنده با حافظه اشتراکی، متداولترین روش، کنار گذاشن بخشی از حافظه که برای همه پردازنده ها قابل دسترسی است می باشد.

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

پردازنده فرستنده یک درخواست، پیام یا رویه را ساخته و آن را در حافظه اشتراکی (صندوق پستی) قرار میدهد.

برای هر خانه از این حافظه اشتراکی یک بیت وضعیت تعریف شده است؛ بیت وضعیت مشخص میکند که این خانه حافظه حاوی اطلاعات معنی دار است یا خیر و اینکه پیام برای کدام پردازنده قرار داده شده است.

پردازنده گیرنده میتواند به صورت دوره ای حافظه اشتراکی را برای یافتن پیام های معتبر بررسی کند. زمان پاسخ به این دستور میتواند وقت گیر باشد؛ زیرا هر پردازنده برای شناسایی تقاضای مربوط به خود، باید تمام پیام های موجود در حافظه اشتراکی را بررسی کند.

یک روش کاراتر این است که پردازنده فرستنده با کمک سیگنال وقفه، پردازنده گیرنده را آگاه کند.

این عمل را میتوان توسط یک وقفه بین پردازنده ای که به وسیله نرم افزار و با استفاده از دستورالعملی که در برنامه پردازنده ها تولید میشود انجام داد. پس از اجرای این وقفه، وضعیتی مشابه با وقفه خارجی در پرازنده دوم به وجود می آید.

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

 

یک سیستم چند پردازنده ای علاوه بر حافظه اشتراکی ممکن است منابع مشترک دیگری نیز داشته باشد. مثلاً یک دیسک مغناطیسی متصل به یک IOP ممکن است در اختیار همه CPU ها قرار گیرد؛ در نتیجه استفاده مشترک از برنامه های سیستم ذخیره شده روی دیسک امکان پذیر خواهد شد.

مسیر ارتباطی بین دو CPU ممکن است از طریق رابطی بین دو IOP متناظر با دو CPU ایجاد شده باشد. این نوع ارتباط اجازه میدهد تا هر CPU دیگری را به عنوان یک I/O در نظر گرفته و در نتیجه پیام ها قابل انتقال از مسیر I/O خواهند بود.

 

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

در طراحی سیستم عامل برای سیستم های چند پردازنده ای، از سه سازمان استفاده شده است:

1- آرایش حاکم و تابع (Master Slave Mode)

در شیوه حاکم و تابع، همیشه یک پردازنده که حاکم نامیده میشود، عملیات سیستم عامل را اجرا میکند. پردازنده های دیگر همانند یک تابع عمل کرده و عملیات سیستم عامل را اجرا نمیکنند.

اگر پردازنده تابع به سرویس سیستم عامل نیاز داشته باشد، باید آن را با وقفه دادن به حاکم تقاضا کند و تا وقفه برنامه جاری منتظر بماند.

 

2- سیستم عامل جداگانه

در سازمان مبتنی بر سیستم عامل جداگانه، هر پردازنده میتواند روال هایی از سیستم عامل را که به آنها نیاز دارد اجرا کند.

این سازمان برای سیستم های با کوپل سست که هر پردازنده ممکن است نسخه کامل از سیستم عامل خود را داشته باشد، بیشتر مناسب است.

 

3- سیستم عامل توزیع شده

در سازمان مبتنی بر سیستم عامل توزیع شده، روال های سیستم عامل بین پردازنده های موجود توزیع شده اند. با این وجود، هر تابع خاص از سیستم عامل در هر زمان فقط به یک پردازنده اختصاص داده میشود.

این نوع سازمان دهی را سیستم عامل شناور (Floating Operating System) می نامند، زیرا روال ها از یک پردازنده به پردازنده دیگر شناورند و ممکن است اجرای روال ها در زمان های مختلف بر عهده پردازنده های مختلف باشد.

 

در یک سیستم چند پردازنده با کوپل سست، حافظه بین پردازنده توزیع شده و حافظه مشترکی برای تبادل اطلاعات وجود ندارد، تبادل ارتباطات بین پردازنده ها از طریق کانال های I/O صورت میگیرد.

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

وقتی که پردازشگر فرستنده و پردازشگر گیرنده یکدیگر را به عنوان منبع و مقصد صدا کنند، یک کانال ارتباط برقرار میشود. سپس پیامی با Header و داده های مختلف مورد استفاده برای ارتباط بین گره ها ارسال میشود.

ممکن است مسیرهای متعددی برای ارسال پیام بین دو گره وجود داشته باشد. سیستم عامل موجود در هر گره حاوی اطلاعات مسیریابی است که مسیرهای مختلف ارسال پیام به سایر گره ها را مشخص میکند.

کارآیی تبادل اطلاعات یک شبکه بین پردازنده ای به قرارداد مسیریابی ارتباطی، سرعت پردازنده، سرعت رابط داده ها و توپولوژی شبکه بستگی دارد.

 

 

در ادامه به بررسی ایجاد همگامی بین پردازنده ها در سیستم های چند پردازنده ای خواهیم پرداخت.

مجموعه دستورالعمل های یک چند پردازنده، حاوی دستورالعمل اصلی است که برای پیاده سازی ارتباط و همگامی بین پردازنده های همکار مورد استفاده قرار میگیرد. منظور از ارتباط، تبادل داده ها بین پردازنده هاست. مثلاً پارامترهایی که به یک رویه در پردازنده دیگری انتقال می یابد، یک نوع تبادل بین پردازنده محسوب میشود.

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

سیستم های چند پردازنده ای معمولاً شامل مکانیزم های متعددی برای همگام سازی منابع هستند.

عملیات های پیش پا افتاده مستقیماً به وسیله سخت افزا پیاده سازی میشوند. این عملیات اساس مکانیزم هایی است که جدایی متقابل را برای مکانیزم های پیچیده تری که توسط نرم افزار پیاده سازی میشوند ایجاد میکنند.

یکی از متداولترین روش های جداسازی متقابل، استفاده از سمافور دودویی (Binary Semaphore) است.

این آموزش بیش از ۳ سال قبل ارسال شده و اکنون در لیست به‌روزرسانی‌های سایت قرار دارد. اگر پیشنهاد یا انتقادی برای بهبود آموزش دارید، خوشحال می‌شیم به ما اطلاع بدهید.