((اصول سیستمهای عامل توزیع شده))
در طول دو دهه اخیر، حصول پیشرفت در تکنولوژی میکروالکترونیک باعث در دسترس قرار گرفتن پردازندههای ارزان و سریع شده است. از سوی دیگر پیشرفتهای موجود در تکنولوژی ارتباطات باعث به وجود آمدن شبکههای سریع تر و به صرفهتر شده است. از ترکیب پیشرفتها در این دو میدان از تکنولوژیها تکنولوژی ارزانتر و کاراتری به وجود آمده که در آن به جای این که از یک پردازنده خیلی سریع استفاده شود، از چند پردازنده معمولی که به هم متصل شدهاند استفاده میشود.
از نظر معماری، کامپیوترهایی که از چند پردازنده متصل به هم تشکیل شدهاند اساساً بر دو دسته تقسیم میشوند.
در این سیستمها یک حافظه اولیه (فضای آدرس) عمومی وجود دارد که میان همه پردازندهها به اشتراک گذاشته شده است. اگر برای مثال، پردازندهای در محل × از حافظه مقدار 100 را بنویسد هر پردازنده دیگری که بلافاصله از همان آدرس × بخواند مقدار 100 را دریافت خواهد کرد. بنابراین در این سیستمها هر نوع تبادل میان پردازندهها از طریق حافظه مشترک صورت میگیرد. [شکل]
سخت افزار اتصالی
2- سیستم های جفت شده ضعیف:
در این معماری پردازندهها حافظه را به اشتراک نمیگذارند و هر پردازنده فضای آدرسدهی محلی مختص به خود را دارد. برای مثال اگر پردازندههای در محل × از حافظه مقدار 100 را بنویسد این عمل فقط محتویات حافظه محلی را عوض خواهد کرد و تاثیری در محتوای حافظه پردازنده های دیگر نخواهد داشت. بنابراین اگر هر پردازنده دیگری از محل× از حافظه را بخواند هرچیزی که قبلاً در آن محلی از حافظه محلی آن بوده به تحویل داده خواهد شد. در این نوع سیستمها هرگونه تبادل میان پردازندهها از طریق شبکهای که پردازندهها را به هم متصل کرده و توسط انتقال پیغام انجام میگیرد.
(نمودار در فایل اصلی موجود است)
معمولاً به سیستمهای جفت شده قوی، سیستمهای پردازش موازی اطلاق می گردد و به سیستمهای جفت شده ضعیف «سیستم های محاسبات توزیع شده» یا به طور سادهتر «سیستم های توزیع شده» اطلاق میشود.
در این مقاله منظور از جمله سیستم توزیع شده» همان سیستمهای توزیع شده واقعی یا «سیستمهای محاسبات توزیع شده» است که از سیستم عاملهای توزیع شده استفاده میکنند.
در این مقاله عبارت «سیستمهای محاسبات توزیع شده» برای سیستمهای جفت شده ضعیف به کار برده خواهد شد. در مقایسه با سیستم های جفت شده قوی، پردازندههای سیستمهای محاسبات توزیع شده میتوانند خیلی دور از هم قرار گرفته باشند تاحدی که یک ناحیه جغرافیایی را تحت پوشش قرار دهند. بعلاوه، در سیستمهای جفت شده قوی، تعداد پردازندههایی که به طور موثر میتوانند مورد استفاده قرارگیرند مواجه با محدودیت ناشی از پهنای باند حافظه مشترک است، در حالی که در سیستمهای محاسبات توزیع شده چنین حالتی وجود ندارد و تقریباً به طور کامل آزادی داریم که هر تعداد که دلمان خواست پردازنده داشته باشیم. یعنی محدودیتی در مورد تعداد پردازندهها در «سیستمهای محاسبات توزیع شده» وجود ندارد.
به طور خلاصه یک سیستم محاسبات توزیع شده اساساً مجموعهای است از پردازندههایی که توسط یک شبکه ارتباطی به هم متصل شدهاند که هر پردازنده حافظه محلی و دستگاههای جانبی خود را دارد و ارتباط میان هر دو جفت پردازنده از سیستم از طریق عبور پیغام از شبکه ارتباطی صورت میگیرد. برای هر پردازنده، منابع آن «محلی» هستند و این در حالی است که پردازندههای دیگر و منابع آنها «دور» هستند به پردازنده و منابع آن به طور معمول «گره»، «سایت» یا «ماشین» سیستم عامل توزیع شده اطلاق میشود.
سیر تکامل سیستم های عامل توزیع شده
در ابتدا کامپیوترها خیلی گران (در حد میلیون دلار) بودند و جای زیادی را اشغال می کردند (در حد یک اتاق بزرگ) تعداد کمی کامپیوتر وجود داشت و آنها در لابراتوارهای تحقیقاتی دانشگاهها و مراکز صنعتی بود. این کامپیوترها از یک کنسول و بوسیله یک اپراتور قابل استفاده بودند وکاربران عادی نمیتوانستند از آن استفاده کنند. برنامه نویسان، برنامههای خود را مینوشتند و آن را روی رسانهی خاصی مثل کارت پانچ شده به مرکز کامپیوتر تحویل میدادند تا مورد پردازش قرار گیرند. قبل از پردازش یک برنامه، اپراتور باید محیط لازم برای پردازش را آماده سازی می کرد. این آماده سازی شامل سوار کردن نوارها و بارگذاری کارتهای پانچ شده در کارت خوان و … بود. برنامه اجرا میشود و نتایج اجرای برنامه به صورت پرینت شده به برنامه نویس برگشت داده میشد.
آماده سازی کار در کامپیوترهای اولیه یک مشکل اساسی بود و بسیاری از وقت CPU را هدر میداد. در سالهای 1950 تا 1960 مفاهیم جدیدی برای بهینه سازی صرف وقت CPU ارائه شده که از میان آنها میتوان به موارد زیر اشاره کرد:
< >دستهبندی کارهایی که نیازهای مشابهی دارند قبل از پردازش.توالی اتوماتیک کارها.پردازش غیر بر خط بر پایه مفاهیم با فرینگ و سرکشیچند برنامگیدستهبندی کارها اندکی استفاده از CPU را افزایش داد چرا که اپراتور تنها وقتی محیط پردازش را تغییر میداد که دسته جدیدی از کارها برای اجرا واگذار میشد. توالی اتوماتیک کارها توسط کارتهای کنترل برای تعیین اغاز و انتهای هرکار مقدار استفاده از CPU را افزایش داد و این بهینه سازی به خاطر حذف توالی کارها توسط انسان بود.
پردازش غیر برخط هم استفاده از CPU را با اجازه روی هم افتادگی عملیات CPU و دستگاههای ورودی خروجی بهبود بخشید. در این روش این دو عمل روی دو ماشین مجزا از هم اجرا میشدند ( عملیات ورودی خروجی از عملیات CPU کندتر بود) در نهایت «چند برنامگی»به وجود آمد که در این روش همیشه CPU برای اجرا دستورالعملی دارد و بیکار نیست و به این طریق استفاده از CPU حداکثر میشد.
با این حال در هیچ یک از این متدها اجازه استفاده همزمان چند کاربر و تراکنش آنها با یک سیستم کامپیوتری مهیا نبود و کاربران نمیتوانستند منابع خود را به صورت همزمان به اشتراک بگذارند. بنابراین اجرای کارهای تعاملی که متشکل از اعمال کوچکی است و عمل بعدی به اجرای عمل قبلی وابسته است تبدیل به یک عمل ملال آور و زمانبر شده بود. بسط و عیبیابی برنامهها از نمونههای برنامههای تعاملی است. این عمل غیرممکن بود تا وقتی که در اوایل دهه 1970 که در کامپیوترها از مفهوم «اشتراک زمانی» برای قالب آمدن بر این مشکل بهره گرفته شد.
سیستمهای اشتراک زمانی اولیه دارای چند ترمینال بودند که به کامپیوتراصلی متصل بود.
این ترمینالها در اطاقی متفاوت با اطاقی که کامپیوتر اصلی در آن بود قرار داشتند. حالا دیگر با استفاده از این ترمینالها کاربران متعددی می توانستند کارهای خود را به طور همزمان اجرا کنند و منابع کامپیوتر را به اشتراک بگذارند. در یک سیستم اشتراک زمانی هر کاربر این طور تصور می کرد که برای خود یک کامپیوتر مجزا دارد چرا که سیستم با سرعت خیلی زیاد از کاریک کاربر دیگر در فاصلههای زمانی کوتاه سویچ میکرد و در هر برهه زمانی که به یک کاربر اختصاص داده میشد مقداری از کار هر کار بر اجرا میشد. با این که نظریه اشتراک زمانی در اوایل دهه 1960 بیان گردید تا اوایل دهه 1970 سیستمهای اشتراک زمانی زیاد مورد استفاده نبودند و علت هم این بود که پیاده سازی آنها خیلی سخت و هزینهبر بود.
پیشرفتهای موجود در سخت افزارهای پردازش موازی باعث کاهش اندازه و افزیش سرعت پردازش کامپیوترها شد.
در نتیجه این تغییر و تحولات، کامپیوترهای کوچک و ارزان که قابلیت پردازشی زیادتری هم داشتند جایگزین کامپیوترهای بزرگ شدند و این کامپیوترهای کوچک «مینی کامپیوتر» نام گرفتند.
ظهور سیستمهای اشتراک زمانی اولین قدم به سوی سیستمهای محاسبات توزیع شده بود چرا که در این نوع سیستمها مفاهیم زیر تعریف شدند:
< >اشتراک منابع کامپیوتر میان چندکاربر به صورت همزمان دسترسی به کامپیوترها از جایی متفاوت از اتاق کامپیوتر اصلی.در ابتدا ترمینالهای سیستمهای اشترک زمانی «ترمینال گنگ» بودند یعنی همه پردازش توسط سیستم کامپیوتری اصلی انجام میشد. پیشرفتهای تکنولوژی ریزپردازنده در طول دهه 1970 این اجازه را داد تا ترمینالهای گنگ با ترمینالهای هوشمند جایگزین شوند و با این کار مفاهیم پردازش غیر آنلاین و اشتراک زمانی با هم ادغام شدند تا مزایای هر دو تکنولوژی را روی یک سیستم بتوان به وجود آورد.
تکنولوژی میکروپروسسور به سرعت پیشرفت کرد تا جایی که در اوایل دهه 1980 کامپیوترهای تک کاربرده که «ایستگاه کاری» نام گرفته بودند به وجود آمدند و دارای قدرت پردازشی تقریباً برابر با «مینی کامپیوتر» بودند و با هزینه اندکی کاربر می توانست آن را خریداری کند.
این ایستگاههای کاری بعدها به عنوان ترمینالها در سیستمهای اشتراک زمانی مورد استفاده قرار گرفتند. در این نوع از سیستمهای اشتراک زمانی حجم زیادی از عملیات کاربر میتوانست در ترمینال آن کاربر به خصوص اجرا نشود و در نتیجه این امکان به وجود میآمد که کامپیوتر اصلی میان تعداد زیادی کاربر به اشتراک گذاشته شود. در این سیستمها منابع به اشتراک گذاشته شده مثل فایلها، پایگاه دادهای، کتابخانه نرم افزار و … روی کامپیوتر اصلی قرار داشتند. به این سیستمها، «سیستمهای اشتراک زمانی مجتمع» اطلاق میشد.
سیستمهای اشتراک زمانی مجتمع که در بالا به آنها اشاره گردید یک محدودیت داشتند و آن محدودیت این بود که ترمینالها تا وقتی که از کابلهای معمولی برای اتصال به کامپیوتر اصلی استفاده میشد، نمیتوانست در فاصله خیلی زیادی از کامپیوتر اصلی قرار داشتهباشند.
همزمان با این پیشرفتها، در اواخر دهه 1960 در زمینه شبکههای کامپیوتری پیشرفتهایی حاصل شد و تا اوایل دهه 1970 ادامه داشت و دو تکنولوژی کلیدی در ساخت و طراحی شبکههای کامپیوتری معرفی گردید:
< >تکنولوژی (Local Area Network)LANتکنولوژی (Wide Area Network)WANبا استفاده از تکنولوژی LAN، کامپیوترهای موجود در یک ساختمان و یا دانشکده به هم متصل میشوند و میتوانستند اطلاعات را با سرعت تقریبی 10 Mbps با هم مبادله گنند. و در سوی دیگر تکنولوژی WAN قرار داشت که کامپیوترهای موجود در شهرهای متفاوت و یا کشورها و یا قارههای جدا از هم به هم متصل می شدند و میتوانستند اطلعات را با سرعت 56kbps با هم مبادله کنند.
اولین نوع از شبکههای محلی پرسرعت، اترنت بود که در زیراکس پارک در سال 1973 به وجود آمد و اولین نمونه از شبکههای گسترده، آرپانت بود که توسط دپارتمان گسترش دفاع ایالات متحده در سال 1969 درست شد. سرعت انتقال اطلاعات در شبکه ها رفته رفته زیادتر می شد تا اینکه در سال 1960 برای شبکه های محلی سرعت Mbps100 و برای شبکههای گسترده سرعت kbps 64 فراهم بود.
اخیراً در اوایل دهه 1990 یک پیشرفت عمده دیگر هم در تکنولوژی شبکه پدیدار شد که ATM نام گرفت. با استفاده از این تکنولوژی می توان شبکهای خیلی سریع را بنانهاد به طوری که میتواند در شبکههای محلی و گسترده اطلاعات را با سرعت 1.2 گیگابایت در ثانیه انتقال داد. وجود این گونه شبکههای انتقال دادهای پرسرعت به سیستمهای محاسبات توزیع شده این اجازه را داده که از یک کلاس جدید از برنامههای کاربردی، پشتیبانی کنند. این کلاس جدید که برنامههای کاربردی چند رسانهای نام گرفتهاند، متشکل از ترکیبی از دادههای معمولی، صدا و تصویر هستند. این مفهوم در شبکههای LAN و WAN غیرقابل تصور بود.
ادغام تکنولوژیهای کامپیوتر و شبکه، در اواخر دهه 1970 به سیستمهای محاسبات توزیع شده اجازه تولد را داد.
مدلهای سیستمهای محاسبات توزیع شده
مدلهای گوناگونی برای ساخت سیستم عاملهای توزیع شده استفاده میشود. این مدلها را میتوان در حالت کلی به 5 دسته تقسیم کرد.
< >مینی کامپیوترایستگاه کاریایستگاه کاری- سرویس دهندهاشتراک پردازندهترکیبیاین پنج دسته را به طور خلاصه شرح میدهیم.