((اصول سیستمهای عامل توزیع شده))
در طول دو دهه اخیر، حصول پیشرفت در تکنولوژی میکروالکترونیک باعث در دسترس قرار گرفتن پردازندههای ارزان و سریع شده است. از سوی دیگر پیشرفتهای موجود در تکنولوژی ارتباطات باعث به وجود آمدن شبکههای سریع تر و به صرفهتر شده است. از ترکیب پیشرفتها در این دو میدان از تکنولوژیها تکنولوژی ارزانتر و کاراتری به وجود آمده که در آن به جای این که از یک پردازنده خیلی سریع استفاده شود، از چند پردازنده معمولی که به هم متصل شدهاند استفاده میشود. از نظر معماری، کامپیوترهایی که از چندپردازنده متصل به هم تشکیل شدهاند اساساً بر دو دسته تقسیم میشوند.
۱- سیستمهای جفت شده قوی
۲- سیستمهای جفت شده ضعیف
۱- سیستمهای جفت شده قوی:
در این سیستمها یک حافظه اولیه (فضای آدرس) عمومی وجود دارد که میان همه پردازندهها به اشتراک گذاشته شده است. اگر برای مثال، پردازندهای در محل × از حافظه مقدار ۱۰۰ را بنویسد هر پردازنده دیگری که بلافاصله از همان آدرس × بخواند مقدار ۱۰۰ را دریافت خواهد کرد. بنابراین در این سیستمها هر نوع تبادل میان پردازندهها از طریق حافظه مشترک صورت میگیرد. [شکل]
۲- سیستمهای جفت شده ضعیف:
در این معماری پردازندهها حافظه را به اشتراک نمیگذارند و هر پردازنده فضای آدرسدهی محلی مختص به خود را دارد. برای مثال اگر پردازندههای در محل × از حافظه مقدار ۱۰۰ را بنویسد این عمل فقط محتویات حافظه محلی را عوض خواهد کرد و تاثیری در محتوای حافظه پردازنده های دیگر نخواهد داشت. بنابراین اگر هر پردازنده دیگری از محل× از حافظه را بخواند هرچیزی که قبلاً در آن محلی از حافظه محلی آن بوده به تحویل داده خواهد شد. در این نوع سیستمها هرگونه تبادل میان پردازندهها از طریق شبکهای که پردازندهها را به هم متصل کرده و توسط انتقال پیغام انجام میگیرد.
معمولاً به سیستمهای جفت شده قوی، سیستمهای پردازش موازی اطلاق می گردد و به سیستمهای جفت شده ضعیف «سیستمهای محاسبات توزیع شده» یا به طور سادهتر «سیستمهای توزیع شده» اطلاق میشود.
در این مقاله منظور از جمله سیستم توزیع شده» همان سیستمهای توزیع شده واقعی یا «سیستمهای محاسبات توزیع شده» است که از سیستم عاملهای توزیع شده استفاده میکنند.
در این مقاله عبارت «سیستمهای محاسبات توزیع شده» برای سیستمهای جفت شده ضعیف به کار برده خواهد شد. در مقایسه با سیستم های جفت شده قوی، پردازندههای سیستمهای محاسبات توزیع شده میتوانند خیلی دور از هم قرار گرفته باشند تاحدی که یک ناحیه جغرافیایی را تحت پوشش قرار دهند. بعلاوه، در سیستمهای جفت شده قوی، تعداد پردازندههایی که به طور موثر میتوانند مورد استفاده قرارگیرند مواجه با محدودیت ناشی از پهنای باند حافظه مشترک است، در حالی که در سیستمهای محاسبات توزیع شده چنین حالتی وجود ندارد و تقریباً به طور کامل آزادی داریم که هر تعداد که دلمان خواست پردازنده داشته باشیم. یعنی محدودیتی در مورد تعداد پردازندهها در «سیستمهای محاسبات توزیع شده» وجود ندارد.
به طور خلاصه یک سیستم محاسبات توزیع شده اساساً مجموعهای است از پردازندههایی که توسط یک شبکه ارتباطی به هم متصل شدهاند که هر پردازنده حافظه محلی و دستگاههای جانبی خود را دارد و ارتباط میان هر دو جفت پردازنده از سیستم از طریق عبور پیغام از شبکه ارتباطی صورت میگیرد. برای هر پردازنده، منابع آن «محلی» هستند و این در حالی است که پردازندههای دیگر و منابع آنها «دور» هستند به پردازنده و منابع آن به طور معمول «گره»، «سایت» یا «ماشین» سیستم عامل توزیع شده اطلاق میشود.
سیر تکامل سیستم های عامل توزیع شده
در ابتدا کامپیوترها خیلی گران (در حد میلیون دلار) بودند و جای زیادی را اشغال می کردند (در حد یک اتاق بزرگ) تعداد کمی کامپیوتر وجود داشت و آنها در لابراتوارهای تحقیقاتی دانشگاهها و مراکز صنعتی بود. این کامپیوترها از یک کنسول و بوسیله یک اپراتور قابل استفاده بودند وکاربران عادی نمیتوانستند از آن استفاده کنند. برنامه نویسان، برنامههای خود را مینوشتند و آن را روی رسانهی خاصی مثل کارت پانچ شده به مرکز کامپیوتر تحویل میدادند تا مورد پردازش قرار گیرند. قبل از پردازش یک برنامه، اپراتور باید محیط لازم برای پردازش را آماده سازی می کرد. این آماده سازی شامل سوار کردن نوارها و بارگذاری کارتهای پانچ شده در کارت خوان و … بود. برنامه اجرا میشود و نتایج اجرای برنامه به صورت پرینت شده به برنامه نویس برگشت داده میشد.
آماده سازی کار در کامپیوترهای اولیه یک مشکل اساسی بود و بسیاری از وقت CPU را هدر میداد. در سالهای ۱۹۵۰ تا ۱۹۶۰ مفاهیم جدیدی برای بهینه سازی صرف وقت CPU ارائه شده که از میان آنها میتوان به موارد زیر اشاره کرد:
۱- دستهبندی کارهایی که نیازهای مشابهی دارند قبل از پردازش.
۲- توالی اتوماتیک کارها.
۳- پردازش غیر بر خط بر پایه مفاهیم با فرینگ و سرکشی
۴- چند برنامگی
دستهبندی کارها اندکی استفاده از CPU را افزایش داد چرا که اپراتور تنها وقتی محیط پردازش را تغییر میداد که دسته جدیدی از کارها برای اجرا واگذار میشد. توالی اتوماتیک کارها توسط کارتهای کنترل برای تعیین اغاز و انتهای هرکار مقدار استفاده از CPU را افزایش داد و این بهینه سازی به خاطر حذف توالی کارها توسط انسان بود.
پردازش غیر برخط هم استفاده از CPU را با اجازه روی هم افتادگی عملیات CPU و دستگاههای ورودی خروجی بهبود بخشید. در این روش این دو عمل روی دو ماشین مجزا از هم اجرا میشدند ( عملیات ورودی خروجی از عملیات CPU کندتر بود) در نهایت «چند برنامگی»به وجود آمد که در این روش همیشه CPU برای اجرا دستورالعملی دارد و بیکار نیست و به این طریق استفاده از CPU حداکثر میشد.
با این حال در هیچ یک از این متدها اجازه استفاده همزمان چند کاربر و تراکنش آنها با یک سیستم کامپیوتری مهیا نبود و کاربران نمیتوانستند منابع خود را به صورت همزمان به اشتراک بگذارند. بنابراین اجرای کارهای تعاملی که متشکل از اعمال کوچکی است و عمل بعدی به اجرای عمل قبلی وابسته است تبدیل به یک عمل ملال آور و زمانبر شده بود. بسط و عیبیابی برنامهها از نمونههای برنامههای تعاملی است. این عمل غیرممکن بود تا وقتی که در اوایل دهه ۱۹۷۰ که در کامپیوترها از مفهوم «اشتراک زمانی» برای قالب آمدن بر این مشکل بهره گرفته شد.
سیستمهای اشتراک زمانی اولیه دارای چند ترمینال بودند که به کامپیوتراصلی متصل بود.
این ترمینالها در اطاقی متفاوت با اطاقی که کامپیوتر اصلی در آن بود قرار داشتند. حالا دیگر با استفاده از این ترمینالها کاربران متعددی می توانستند کارهای خود را به طور همزمان اجرا کنند و منابع کامپیوتر را به اشتراک بگذارند. در یک سیستم اشتراک زمانی هر کاربر این طور تصور می کرد که برای خود یک کامپیوتر مجزا دارد چرا که سیستم با سرعت خیلی زیاد از کاریک کاربر دیگر در فاصلههای زمانی کوتاه سویچ میکرد و در هر برهه زمانی که به یک کاربر اختصاص داده میشد مقداری از کار هر کار بر اجرا میشد. با این که نظریه اشتراک زمانی در اوایل دهه ۱۹۶۰ بیان گردید تا اوایل دهه ۱۹۷۰ سیستمهای اشتراک زمانی زیاد مورد استفاده نبودند و علت هم این بود که پیاده سازی آنها خیلی سخت و هزینهبر بود.
پیشرفتهای موجود در سخت افزارهای پردازش موازی باعث کاهش اندازه و افزیش سرعت پردازش کامپیوترها شد.
در نتیجه این تغییر و تحولات، کامپیوترهای کوچک و ارزان که قابلیت پردازشی زیادتری هم داشتند جایگزین کامپیوترهای بزرگ شدند و این کامپیوترهای کوچک «مینی کامپیوتر» نام گرفتند.
ظهور سیستمهای اشتراک زمانی اولین قدم به سوی سیستمهای محاسبات توزیع شده بود چرا که در این نوع سیستمها مفاهیم زیر تعریف شدند:
۱- اشتراک منابع کامپیوتر میان چندکاربر به صورت همزمان
۲- دسترسی به کامپیوترها از جایی متفاوت از اتاق کامپیوتر اصلی.
در ابتدا ترمینالهای سیستمهای اشترک زمانی «ترمینال گنگ» بودند یعنی همه پردازش توسط سیستم کامپیوتری اصلی انجام میشد. پیشرفتهای تکنولوژی ریزپردازنده در طول دهه ۱۹۷۰ این اجازه را داد تا ترمینالهای گنگ با ترمینالهای هوشمند جایگزین شوند و با این کار مفاهیم پردازش غیر آنلاین و اشتراک زمانی با هم ادغام شدند تا مزایای هر دو تکنولوژی را روی یک سیستم بتوان به وجود آورد.
تکنولوژی میکروپروسسور به سرعت پیشرفت کرد تا جایی که در اوایل دهه ۱۹۸۰ کامپیوترهای تک کاربرده که «ایستگاه کاری» نام گرفته بودند به وجود آمدند و دارای قدرت پردازشی تقریباً برابر با «مینی کامپیوتر» بودند و با هزینه اندکی کاربر می توانست آن را خریداری کند.
این ایستگاههای کاری بعدها به عنوان ترمینالها در سیستمهای اشتراک زمانی مورد استفاده قرار گرفتند. در این نوع از سیستمهای اشتراک زمانی حجم زیادی از عملیات کاربر میتوانست در ترمینال آن کاربر به خصوص اجرا نشود و در نتیجه این امکان به وجود میآمد که کامپیوتر اصلی میان تعداد زیادی کاربر به اشتراک گذاشته شود. در این سیستمها منابع به اشتراک گذاشته شده مثل فایلها، پایگاه دادهای، کتابخانه نرم افزار و … روی کامپیوتر اصلی قرار داشتند. به این سیستمها، «سیستمهای اشتراک زمانی مجتمع» اطلاق میشد.
سیستمهای اشتراک زمانی مجتمع که در بالا به آنها اشاره گردید یک محدودیت داشتند و آن محدودیت این بود که ترمینالها تا وقتی که از کابلهای معمولی برای اتصال به کامپیوتر اصلی استفاده میشد، نمیتوانست در فاصله خیلی زیادی از کامپیوتر اصلی قرار داشتهباشند.
همزمان با این پیشرفتها، در اواخر دهه ۱۹۶۰ در زمینه شبکههای کامپیوتری پیشرفتهایی حاصل شد و تا اوایل دهه ۱۹۷۰ ادامه داشت و دو تکنولوژی کلیدی در ساخت و طراحی شبکههای کامپیوتری معرفی گردید:
۱- تکنولوژی (Local Area Network)LAN
2- تکنولوژی (Wide Area Network)WAN
با استفاده از تکنولوژی LAN، کامپیوترهای موجود در یک ساختمان و یا دانشکده به هم متصل میشوند و میتوانستند اطلاعات را با سرعت تقریبی ۱۰ Mbps با هم مبادله گنند. و در سوی دیگر تکنولوژی WAN قرار داشت که کامپیوترهای موجود در شهرهای متفاوت و یا کشورها و یا قارههای جدا از هم به هم متصل می شدند و میتوانستند اطلعات را با سرعت ۵۶kbps با هم مبادله کنند.
اولین نوع از شبکههای محلی پرسرعت، اترنت بود که در زیراکس پارک در سال ۱۹۷۳ به وجود آمد و اولین نمونه از شبکههای گسترده، آرپانت بود که توسط دپارتمان گسترش دفاع ایالات متحده در سال ۱۹۶۹ درست شد. سرعت انتقال اطلاعات در شبکه ها رفته رفته زیادتر می شد تا اینکه در سال ۱۹۶۰ برای شبکههای محلی سرعت Mbps100 و برای شبکههای گسترده سرعت kbps 64 فراهم بود.
اخیراً در اوایل دهه ۱۹۹۰ یک پیشرفت عمده دیگر هم در تکنولوژی شبکه پدیدار شد که ATM نام گرفت. با استفاده از این تکنولوژی می توان شبکهای خیلی سریع را بنانهاد به طوری که میتواند در شبکههای محلی و گسترده اطلاعات را با سرعت ۱.۲ گیگابایت در ثانیه انتقال داد. وجود این گونه شبکههای انتقال دادهای پرسرعت به سیستمهای محاسبات توزیع شده این اجازه را داده که از یک کلاس جدید از برنامههای کاربردی، پشتیبانی کنند. این کلاس جدید که برنامههای کاربردی چند رسانهای نام گرفتهاند، متشکل از ترکیبی از دادههای معمولی، صدا و تصویر هستند. این مفهوم در شبکههای LAN و WAN غیرقابل تصور بود.
ادغام تکنولوژیهای کامپیوتر و شبکه، در اواخر دهه ۱۹۷۰ به سیستمهای محاسبات توزیع شده اجازه تولد را داد.
مدلهای سیستمهای محاسبات توزیع شده
مدلهای گوناگونی برای ساخت سیستم عاملهای توزیع شده استفاده میشود. این مدلها را میتوان در حالت کلی به ۵ دسته تقسیم کرد.
۱- مینی کامپیوتر
۲- ایستگاه کاری
۳- ایستگاه کاری- سرویس دهنده
۴- اشتراک پردازنده
۵- ترکیبی
این پنج دسته را به طور خلاصه شرح میدهیم.
مدل مینی کامپیوتر
مدل مینی کامپیوتر یک بسط ساده از سیستم اشتراک زمانی مجتمع است. یک سیستم محاسبات توزیع شده که براساس این مدل پیاده شده است متشکل است از چند مینی کامپیوتر (میتواند سوپر کامپیوتر بزرگ هم باشد) که توسط یک شبکه ارتباطی به هم متصل شدهاند. هر مینی کامپیوتر به طور معمول چند کاربر دارد که به طور همزمان در سیستم ثبت شدهاند. در این نوع چندین ترمینال به مینی کامپیوتر متصل شدهاند. هر کاربر که در یک میتی کامپیوتر ثبت شده است به مینی کامپیوترهای دیگر دسترسی دور دارد. شبکه به کاربر این اجازه را میدهد که به منابع دور که روی یک کامپیوتر جدا از کامپیوتری که کاربر در آن ثبت نام کرده، دسترسی داشته باشد.
مدل مینی کامپیوتر در مواقعی استفاده میشود که نیاز به اشتراک منابع با کاربران دور مورد نیاز باشد.
آرپانت جدید، یکی از نمونه هایی است که براساس مدل مینی کامپیوتر پیاده سازی شدهاست.
مدل ایستگاه کاری
یک سیستم محاسبات توزیع شده که بر پایه مدل ایستگاه کاری بنا نهاده شده متشکل است از چند ایستگاه کاری که توسط یک شبکه ارتباطی به هم متصل شدهاند. یک شرکت و یا یک دپارتمان دانشگاهی ممکن است چندین ایستگاه کاری داشته باشد که در یک ساختمان و یا مجتمع پخش شدهاند. هر کامپیوتر مجهز به دیسک خودش است برای یک کاربر سرویس دهی می کند.
هدف اصلی در مدل ایستگاه کاری اتصال ایستگاههای کاری توسط یک شبکه محلی پرسرعت است و به این طریق ایستگاههای کاری بیکار ممکن است توسط کاربرانی که ایستگاههای کاری دیگر ثبت نام کردهاند برای انجام کارهایشان مورد استفاده قرار گیرند. البته این کار در حالتی اتفاق میافتد که ایستگاههای کاری دیگر قدرت کافی را برای پردازش کارخود، در کامپیوتر خود را نداشته باشند.
پیاده سازی این مدل به آن سادگی که در دید اول به نظر میرسد، نیست، چرا که باید چندین مساله را حل کرد. این مسالهها به شرح زیر هستند.
۱- سیستم چگونه یک ایستگاه کاری بیکار را تشخیص خواهد داد.
۲- چگونه یک پردازه برای اجرا از یک ایستگاه کاری، برای اجرا به یک ایستگاه کاری دیگر منتقل خواهد شد.
۳- برای یک پردازه خارجی، چه چیزی اتفاق می افتد وقتی که کاربری به یک سیستم بیکار که در حال اجرای این پردازه خارجی بود، ثبت نام کند.
برای مسائل ۱و۲ روشهای ساخت یافتهالی وجود دارد. ولی برای مساله سوم روشهایی ابداعی وجود دارد که به این شرح هستند.
۱- روش اول این است که به پردازه خارجی این اجازه داده شود تا منابع ایستگاه کاری را با پردازه کاربری که ثبت نام کرده به اشتراک بگذارد.
۲- روش دوم اسن است که پردازه خارجی از بین برود. ولی یک مشکل به وجود میآید این است که پردازه ایستگاه کاری دور، گم میشود.
۳- روش سوم مهاجرت دادن پردازه خارجی به ایستگاه کاری صاحب آن است و اجرا در آنجا ادامه خواهد یافت. پیاده سازی این روش مشکل است چرا که سیستم باید از مفاهیم مهاجرت فرایندها، پشتیبانی کند.
مدل ایستگاه کاری- سرویس دهنده
مدل ایستگاه کاری، مدلی بر پایه ایستگاههای کاری شخصی بود که در آن هر یک دارای دیسک و سیستم فایلی مخصوص به خود بودند. به ایستگاه های کاری که دارای دیسک مخصوص به خود هستند « ایستگاه کاری دیسکدار» و به ایستگاههایی که دیسک مخصوص به خود را ندارند، «ایستگاه کاری بیدیسک» اطلاق میگردد.
با ازدیاد شبکههای پر سرعت، ایستگاههای کاری بیدیسک در محیطهای شبکه زیادتر از ایستگاههای کاری دیسک دار مورد استفاده قرار گرفتهاند، که این باعث شده که مدل ایستگاه کاری – سرویسدهنده، زیادتر از مدل ایستگاه کاری برای تولید و ساخت سیستمهای توزیع شده مرد استفاده قرار گیرد.
همانطور که در شکل قابل ملاحظه است سیستمهای مبتنی بر مدل ایستگاه کاری-سرویسدهنده، شامل چند مینی کامپیوتر و چند ایستگاه کاری هستند که توسط یک شبکه ارتباطی به هم متصل شدهاند. خیلی از این ایستگاههای کاری، از نوع بیدیسک هستند ولی ممکن است بعضی از آنها از نوع دیسکدار باشند.
ذکر این نگته مهم است که وقتی از ایستگاههای کاری بیدیسک در شبکه استفاده میشود سیستم فایلی که توسط این سیستمها استفاده میشود باید توسط ایستگاه کاری دیسکدار پشتیبانی شود. و یا این که باید یک مینی کامپیوتر هم برای ذخیره سازی فایلها در نظر گرفته شود. در این مدل، مینی کامپیوترها برای این مقاصد مورد استفاده قرار می گیرند:
۱- یک یا چند مینی کامپیوتر برای پیاده سازی سیستم فایلی
۲- مینی کامپیوترهای دیگر برای ارائه سرویسهای دیگر مثل سرویسهای بانک اطلاعاتی و یا سرویسهای چاپ.
از این رو هر مینی کامپیوتر به صورت یک ماشین سرویس دهنده برای فراهم آوردن انواع متفاوت سرویسها استفاده میشود.
این مدل دارای مزایایی نسبت به مدل ایستگاه کاری است که به شرح زیر هست:
۱- در حالت عمومی، پیادهسازی آن ارزانتر و به صرفه تر است
۲- از دیدگاه نگهداری سیستم، سیستمهای بیدیسک بر سیستمهای دیسکدار ارجحیت دارند (تعمیر، پشتیبانگیری و…)
۳- در مدل ایستگاه کاری- سرویسدهنده، از آنجایی که همه فایلها توسط سرور فایل مدیریت میشود، کاربران این قابلیت انعطاف را دارند که بتوانند از هر ایستگاه کاری بدون توجه به این که کدام کاربرد درست ثبتنام کرده و کدام ایستگاه در دسترس است، استفاده کنند و دسترسی به اطلاعات در حالت کلی به یک صورت خاص انجام میگیرد.
۴- در مدل مذکور از روش درخواست- پاسخ برای استفاده از سرویسها استفاده میشود و پیادهسازی این روش به سختی پیادهسازی روش مهاجرت فرایندها نمیباشد.
پروتوکل درخواست- پاسخ با عنوان مدل مشتری- سرویس دهنده در ارتباطات شناخته شده است.
۵- کاربر ضامن زمان پاسخ است چرا که سیستم برای اجرای فرایندهای خارجی استفاده نمیشود.
مدل اشتراک پردازنده یا ائتلاف پردازنده
مدل اشتراک پردازنده نیازمند این ملاحظه است که در اکثر اوقات یک کاربر نیازی به قدرتپردازشی ندارد ولی در یک لحظه برای مدت کوتاهی ممکن است نیاز به قدرتپردازشی خیلی بالا پیدا کند. بنابراین برخلاف مدل ایستگاه کاری- سرویس دهنده که برای هر کاربری، یک پردازنده داشتیم در مدل اشتراک پردازنده، پردازندههای سیستم به هم پیوند میخورند تا میان کاربران وقتی که یکی از آنها نیازمند پردازش شد به اشتراک گذاشته شود.
این ائتلاف از پردازندهها شامل تعداد زیادی از ریز کامپیوترها و مینی کامپیوترها هست که به شبکه پیوند خوردهاند.
هر پردازنده موجود در ائتلاف، دارای حافظه مخصوص به خود برای اجرا و بارگذاری یک برنامه سیستمی یا یک برنامه کاربردی و یا یک برنامه کاربردی از سیستم محاسبات توزیعی است.
همانگونه که در شکل قابل مشاهده است در مدل ساده ائتلاف پردازندهها، پردازندههای موجود در ائتلاف هیچ ترمینالی ندارند که بطور مستقیم به آنها متصل شده باشد و کاربران از طریق ترمینالهایی که بوسیله دستگاههای خاصی به شبکه متصل هستند. به این پردازندهها دسترسی دارند. مثل ترمینالهای X.
یک سرور ویژه که سرور اجرا نام دارد، پردازندههای موجود در ائتلاف را در زمان نیاز اختصاص میدهد و در حالت کلی آنها را مدیریت میکند.
وقتی که کاربری، کاری را برای اجرا تسلیم میکند، سرور اجرا، تعداد لازم از پردازندهها را بطور موقت برای اجرای کار این کاربر به وی اختصاص میدهد.
در مقایسه با مدل ایستگاه کاری- سرویس دهنده، مدل ائتلاف پردازنده امکان استفاده بهتری از پردازندههای موجود در سیستم محاسبات توزیع شده را فراهم میآورد.
علت این است که در این مدل همه قدرتپردازشی سیستم برای کاربرانی که در حال حاضر ثبتنام کردهاند قابل استفاده است در حالی که در مدل ایستگاه کاری- سرور چنین چیزی صادق نیست چرا که در مدل فوقالذکر ممکن است در بعضی از اوقات بعضی از ایستگاهها بیکار باشند ولی نمیتوان از آنها برای اجرای کارهای کاربران دیگر سیستم استفاده نمود.
مدل ائتلاف پردازنده برای برنامههایی که تعامل زیادی دارند زیاد کارآیی ندارد مخصوصاً برنامههایی که از سیستمهای گرافیکی یا پنجرهای استفاده میکنند و این همه به خاطر پائین بودن سرعت رسانههای انتقالی شبکه است. و برای این کار مدل ایستگاه کاری- سرور مناسبتر است.
ائتلاف پردازندهها
مدل ترکیبی
فراتر از این ۴ مدل که تشریح شد، مدل ایستگاه کاری- سرویسدهنده، مدلی است که بیشتر از دیگران مورد استفاده قرار گرفته است. علت هم این است که بسیاری از کاربران کارهای تعاملی سادهای را انجام میدهند. برای مثال :
۱- ویرایش
۲- ارسال نامه الکترونیکی
۳- اجرای برنامههای کوچک
این مدل برای این نوع کارهای کوچک و ساده ایدهآل میباشد.
در محیطهایی مثل محیطهای کاری که گروههای بزرگی از کاربران که اغلب کارهایی را اجرا میکنند که نیازمند محاسبات حجیمی میباشد، مدل ائتلاف پردازنده ایدهآل میباشد و مناسبتر از دیگر مدلها است.
با ترکیب این دو مدل یعنی مدل ایستگاه کاری- سرور و مدل ائتلاف پردازنده میتوان یک مدل ترکیبی برای ساخت سیستم محاسبات توزیع شده استفاده کرد. مدل ترکیبی بر پایه مدل ایستگاه کاری- سرویسدهنده ساخته میشود ولی امکانات مدل ائتلاف پردازنده هم به آن اضافه میشود.
در مدل ترکیبی علاوه بر اجرای مؤثر کارهایی که محاسبات سنگینی دارند، به کارهای تعاملی تضمین پاسخ داده میشود و روشی که برای این کار پیش گرفته میشود این است که به این کارها اجازه داده میشود که روی ماشین ایستگاه کاری محلی کاربر اجرا شوند.
با این همه پیاده سازی سیستم عامل توزیع شده بر پایه این مدل، در مقایسه با مدلهای ایستگاه کاری- سرور و مدل ائتلاف پردازنده، هزینه زیادی را لازم دارد.
چرا سیستمهای محاسبات توزیع شده رفته رفته موارد استفاده زیادتری پیدا میکنند؟
برای این سؤال میتوان دلایل زیر را بیان کرد :
۱- برنامههای کاربردی ذاتاً توزیع شده
۲- اشتراک اطلاعات میان کاربران توزیع شده
۳- اشتراک منابع
۴- نسبت کارایی/ هزینه بهتر
۵- زمان پاسخ کمتر و توان عملیاتی بالاتر
۶- قابلیت اعتماد بیشتر
۷- توسعهپذیری و رشد مضاعف
۸- انعطافپذیری بهتر در مشاهده نیاز کاربران
یک سیستم عامل توزیع شده چه است؟!
“ تنن با وم” و “ون رنس” سیستم عامل را به این صورت تعریف کردهاند:
برنامهای که منابع یک کامپیوتر را کنترل میکند و برای کاربران یک رابط و یا یک ماشین مجازی را فراهم میآورد که با استفاده از این رابط استفاده از ماشین نسبت به حالتی که ماشین “لخت” است مهمتر میشود. بنابراین این تعریف دو وظیفه اصلی یک سیستم عامل به شرح زیر است:
۱- فراهم آوردن یک ماشین مجازی برای کاربران که برنامهریزی توسط آن راحت تراز تعامل با سختافزار زیرین است.
۲- مدیریت انواع منابع سیستم که شامل موارد و کارهای متفاوتی است. بنابراین دید کاربران یک کامپیوتر از سیستم، رفتاری که کاربران برای دسترسی به منابع مختلف سیستم دارند و راهی که درخواستهای منابع مدیریت میشوند، بستگی دارد به وسعت حوزه سیستم عامل آن کامپیوتر.
سیستمهای عاملی که بطور معمول برای سیستمهای توزیع شده مورد استفاده قرار میگیرند در حالت کلی به دو دسته تقسیم شدهاند:
۱- سیستمهای عامل شبکه
۲- سیستمهای عامل توزیع شده
سه مشخصه اصلی که برای تقسیمبندی این دو گروه مورد بحث قرار گرفتهاند به شرح زیر هستند:
۱- سیمای سیستم
۲- استقلال داخلی
۳- قابلیت تحمل کاستی
بطور مختصر این سه مشخصه را شرح میدهیم:
۱- سیمای سیستم : مهمترین مشخصهای که برای جداسازی میان این دو گروه به کار گرفته شده است سیمای سیستم از دیدگاه کاربران آن است.
۲- استقلال داخلی : یک سیستم عامل شبکه بر پایه اجتماع سیستم عاملهای موجود در شبکه به وجود میآید و کار آن حمل رابطهها و تعاملات اعمال روی سیستمهای دور و ایجاد ارتباط میان آنها است در سیستمهای توزیع شده استقلال داخلی یکی از مزایای آن است و نباید وجود یکی از اجزا وابسته به وجود دیگری باشد و ارتباطات عامل به وجودآورنده هستند نه وابستگیها.
۳- قابلیت تحمل کاستی : یک سیستم عامل شبکه باید قابلیت تحمل کاستی را در حد صفر یا خیلی کم داشته باشد وقتی که ۱۰% از ماشینهای سیستم توزیعی در شبکه خاموش هستند و حداقل ۱۰% از کاربران نمیتوانند به کار خود ادامه دهند.
تعریف زیر از سیستم عامل توزیع شده توسط تنن باوم و ونرنس ارائه شده و در برگیرنده موارد بالا هست.
یک سیستم عامل توزیع شده، سیستمی است که به کاربرانش مثل یک سیستم عامل مجتمع معمولی نگاه میکند با این تفاوت که روی چندین پردازنده مستقل از هم اجرا میشوند. مفهوم کلیدی در اینجا، شفافیت است. به عبارت دیگر استفاده از چندین پردازنده برای کاربر ممکن است غیرقابل مشاهده باشد (شفافیت). و باز هم به عبارت دیگر کاربر سیستم را به صورت یک سیستم “تک پردازنده مجازی” میبیند نه به صورت مجموعهای از ماشینهای مجزا. به سیستمهای محاسبات توزیع شده که از یک سیستم عامل شبکه استفاده میکنند، “سیستم شبکهای” اطلاق میگردد و از سوی دیگر به سیستمهایی که از یک سیستم عامل توزیع شده استفاده میکنند، “سیستم واقعاً توزیع شده” یا به عبارت سادهتر “سیستم توزیع شده” اطلاق میگردد.
مواردی که در طراحی یک سیستم عامل توزیع شده باید در نظر گرفت.
به دلایل مختلفی در حالت کلی طراحی یک سیستم عامل توزیع شده مشکلتر از طراحی یک سیستم عامل مجتمع است. در سیستمهای مجتمع و در طراحی آنها چنین در نظر گرفته میشود که سیستم عامل دسترسی به همه اطلاعات در مورد محیط اجرایی را دارد.
برخی از موارد کلیدی در مورد طراحی سیستمهای توزیع شده را میتوان به شرح زیر لیست کرد :
۱- شفافیت :
- شفافیت دسترسی
- شفافیت موقعیت
- شفافیت پاسخدهی
- شفافیت کاستی
- شفافیت مهاجرت
- شفافیت جریان
- شفافیت کارایی
- شفافیت پیمایش
۲- قابلیت اعتماد : - پرهیز از کاستی
- تحمل کاستی
- تشخیص و استرداد کاستی
۳- قابلیت انعطاف : - راحتی تغییر در ساختار
- راحتی در بهبود دادن
۴- کارآیی : - دسته بندی کردن در صورت امکان
- کاشه کردن هر موقع که ممکن بود
- کپی کمیته از دادهها
- ترافیک کمیته شبکه
- استفاده از روش موازیسازی بهینه برای چند پردازشی
۵- قابلیت توازن : - پرهیز از موجودیتهای مجتمع
- پرهیز از الگوریتمهای مجتمع
- اجرای اکثر اعمال روی ایستگاههای کاری مشتری
۶- ناهمگن بودن
۷- امنیت : - حصول اطمینان از دریافت پیغام
- حصول اطمینان از مبدأ پیغام
- تضمین صحت محتوای پیغام برای هر دو طرف
۸- تشابه با سیستمهای عامل موجود در حد معتدل
ضمیمه و مراجع :
در صورت نیاز به اطلاعات و توضیحات و مثالهای بیشتر میتوانید به این منابع که منابع اصلی در تهیه و تدوین این مقاله میباشند مراجعه کنید:
۱- سایت آقای ویلیام استالینگ http://www.stallings.com/
a) Operating Sytems Concepts and design William.stalling [Original] زبان اصلی
سیستمهای عامل پیشرفته، دکتر مهرداد فهیمی، انتشارات جلوه
b) Distributed Operating Systems Concepts & design Pradeep k. Sinha
IEEE Press [original] زبان اصلی
c) Operating Systems a modern perspective Gary Nut Second Edition [original] زبان اصلی