سیستم های توزیع شده
یک سیستم توزیع شده مجموعهای از کامپیوترهای به هم متصل است که در نظر کاربر به صورت یک کامپیوتر واحد جلوه می کند. دو نکته در این تعریف وجود دارد. نکته اول جنبه سخت افزاری آن است، به این معنی که تمامی کامپیوترهای موجود در یک سیستم توزیع شده خود مختار و مستقل هستند. نکته دوم که جنبه نرم افزاری دارد این است که کل سیستم توزیع شده در نظر کاربر بایدبه صورت یک کامپیوتر واحد به نظر برسد.
به عنوان مثال یک بانک بزرگ بینالمللی با صدهاشعبه در سراسر جهان را در نظر بگیرید. هر شعبه دارای یک کامپیوتر مرکزی است که حسابها و تراکنشهای مالی محلی را انجام می دهد. علاوه بر این هر کامپیوتر می تواند با کامپیوترهای شعب دیگر ارتباط بر قرار کند. اگر امور بانکی را به توان بدون توجه به مکان مشتری وحساب بانکی او انجام دادبه طوری که مشتری متوجه نشود که امور بانکی او در کامپیوتر شعبه او یا یک کامپیوتر شعبه دیگر(حتی در خارج از کشور) انجام شده،آنگاه این سیستم حالت توزیع شده دارد.
مفاهیم سخت افزاری در سیستمهای توزیعشده
سیستم های توزیع شده بر اساس توزیع پردازنده وحافظه در کامپیوترهای موجود در سیستم طبقهبندی میشوند. چنانچه در یک سیستم، کل پردازندهها و حافظه در یک ماشین مرکزی باشند وکامپیوترهای کاربران فاقد پردازنده وحافظه اختصاصی باشند در این صورت با یک سیستم متمرکز روبرو هستیم نه سیستم توزیع شده.
انواعی از سیستمها وجود دارند که در آنها چند پردازنده به یک حافظه مشترک دسترسی داشته وکل پردازندهها باید تنها از همان حافظه برای پردازشهایشان استفاده کنند.در اين نوع سيستم به هر پردازنده بخشي ازحافظه كل اختصاص مي يابد و پردازندهها از طریق حافظه مشترک با یکدیگر ارتباط برقرار میکنند. به نحوی که یک پردازنده میتواند دادهای را در محلی از حافظه بنویسد و پردازنده دیگری همان داده را از همان محل از حافظه بخواند. بدین صورت بین آن دو پردازنده ارتباط بر قرار می شود. به این نوع از سیستمها، چندپردازندهای( Multiprocessor ) گفته می شود. در بسیاری از موارد پردازندهها وحافظه اشتراکی بر روی برد اصلی نصب میشوند. این نوع سیستمها جزو سیستمهای با اتصال نزدیک (Tightlycoupled) هستند. در این سیستمها ارتباط بین پردازنده و حافظه به صورت مستقیم و بدون نیاز به عملیات O\I (ورودی/خروجی) برقرار میشود.
در نوع دیگری از سیستمهای توزیع شده،هر کامپیوتر دارای پردازنده وحافظه اختصاصی خود است. به این نوع از سیستمها، چند کامپیوتری(Multicomputer) گفته می شود که از اتصال تعدادی کامپیوتر به هم ساخته می شوند. در واقع تفاوت اصلی نوع اخیر با سیستمهای چند پردازندهای در این است که در این نوع از سیستمها هر کامپیوتر دارای پردازنده و حافظه مختص به خود است ولی علاوه بر این ممکن است از یک انباره مشترک پردازندهها و بانکهای مشترک حافظه در یک ماشین مرکزی نیز سود جوید. علاوه بر این در این نوع سیستمها برای آن که دو کامپیوتر بتوانند از حافظه یکدیگر بخوانند باید از عملیات O\I استفاده شود، در حالی که در سیستمهای چند پردازندهای برای دسترسی به حافظه مشترک نیازی به عملیات O\I نیست و کار مستقیما با دستورات خود پردازندهها انجام میشود. در ضمن نحوه آدرسدهی حافظه نیز در این دو نوع سیستم متفاوت است.
مفاهیم نرم افزاری در سیستم های توزیع شده
مفاهیم نرمافزاری در سیستمهای توزیعشده نسبت به مفاهیم سخت افزاری از اهمیت بیشتری بر خوردارند وبه مراتب پیچیدهترند.
سیستمهای توزیع شده می توانند از سیستمعاملهای شبکه استفاده کنند. در این حالت هر کامپیوتر سرویسگیرنده
مجهز به سیستمعامل، پردازنده و حافظه مختص به خود است و تمامی این کامپیوترها می توانند از طریق یک پروتکل مشترک با یکدیگر رابطه بر قرار کنند. علاوه بر این، یک فایل سرور نیز می توانند وجود داشته باشد تا درخواست های خواندن ونوشتن فایل را از طرف برنامههای مختلف (که ماشینهای سرویس گیرنده در حال اجرا هستند) اجابت کنند. کامپیوترهای سرویس گیرنده می توانند از طریق دستور ورود از راه دور با یکدیگر ارتباط برقرار کنند. یا می توانند از طریق دستور کپی از راه دور فایلی را از یک ماشین به ماشین دیگری کپی کنند.
سیستم های توزیع شده واقعی به صورتی هستند که بر روی شبکهای از کامپیوتر های متصل به هم اجرا می شوند وکل این شبکهها را در نظر کاربر به صورت یک سیستم تک پردازنده مجازی جلوه می دهند. در واقع هر کامپیوتر دارای سیستمعامل و پردازنده خودش است. سیستم توزیع شده به صورت یک لایه اضافی بر روی سیستم شبکهای موجود می نشیند وکاری می کند که کل سیستم فایلی، منابع موجود در شبکه پردازندهها و حافظه موجود در سیستم ها به صورت یکپارچه و با اشتراک زمانی در اختیار کاربر قرار گیرد.
مزایای سیستمهای توزیعشده
هدف از ایجاد سیستمهای توزیعشده رفع بعضی نواقص مربوط به سیستمهای تک و متمرکز بود.
قدرت پردازش بالا
با افزایش تعداد کامپیوترهای متصل به هم قدرت پردازش افزایش می یابد. در واقع از آنجایی که کامپیوترهای
موجود در یک سیستم توزیع شده می توانند به طور موازی با هم کار کنند، به سطحی از پردازش موازی
دست مییابیم.
حجم عظیم حافظه
حداکثر حجمی از حافظه اصلی وجانبی که یک کامپیوتر می تواند حمایت کند وابسته و محدود به سخت افزار و سیستم عامل آن است و از یک حد مشخص نمی تواند فراتر برود. با این حال کاربردهای صنعتی،مهندسی
وعلمی بسیاری وجود دارند که نیاز به ظرفیت ذخیره سازی بسیار زیادی دارند. به عنوان مثال سایت هایی
مانند Yahoo و lHotmai که حجم بسیار بالایی( صدها میلیون بایت اطلاعات مختلف)را در پایگاه اطلاعاتی خود نگاه می دارند چارهای جز استفاده از تعداد زیادی کامپیوتر سرویس دهنده به صورت توزیع شده ندارند.
تحمل خطا
در یک سیستم توزیع شده چنان چه بعضی از کامپیوترها خراب شوند و از سیستم خارج شوند کارکرد کلی
سیستم مختل نخواهد شد زیرا کامپیوتر های دیگر می توانند وظیفه کامپیوترهای خارج شده از سیستم را بر عهده گیرند و بدین صورت بار آن کامپیوتر بین بقیه کامپیوترها توزیع می شود. تنها ضعفی که ممکن است احساس شود این است که کارایی کلی سیستم کمی کاهش می یابد، ولی در عوض، سیستم می تواند به کار خود ادامه دهد. برای رسیدن به چنین وضعیتی، یک سیستم مدیریت خطای توزیع شده باید این امور را مدیریت کند.
اجزای سیستمهای توزیع شده
هر سیستم توزیع شده صرف نظر از نوع و کاربردش دارای اجزای مختلفی را به انجام می رساند. این اجزا
در داخل یک سیستم توزیع شده می توانند باهم در تعامل باشند.
مدیریت پروسههای توزیع شده
مدیریت پروسه های توزیع شده باید ایجاد، حذف، شروع و اتمام پروسهها را طوری انجام دهد که نحوه
اجرای آن از یک ماشین به ماشین دیگر تفاوت نکند. باید برای تمام ماشینهای موجود درشبکه یک سری تابع مخصوص موسوم به وجود داشته باشند تا به طور هماهنگ روی پروسه ها اعمال کرد(از قبیل توابع ایجاد، حذف، شروع و اتمام)
علاوه بر این باید یک مکانیزم عمومی ویکتا در سراسر سیستم برای ارتباط بین پروسهها موجود باشد تا هر پروسه بتواند به راحتی با پروسههای دیگر ارتباط بر قرار کند. مکانیزم این کار باید با ماشینهای مختلف موجود در سیستم یکسان باشد و علاوه بر این ارتباط محلی پروسه ها و ارتباط پروسه های دور نیز باید با مکانیزم یکسانی انجام شود. یک شمای حفاظت عمومی نیز باید وجود داشته باشد که در این راستا می توان از لیستهای کنترل دسترسی نیز سود جست.
مدیریت حافظه توزیع شده
مدیریت حافظه توزیع شده از مدیریت حافظه در سیستم های تک بسیار مشکل تر است چون حافظه توزیعی در سراسر ماشین های موجود در سیستم پخش است . یکی از مسائل مربوط به مدیریت حافظه توزیعی کنترل دسترسی همزمان به حافظه است. اگر حداقل دو ماشین بخواهند به یک خانه از حافظه توزیعی دسترسی یابند ویکی از آنها بخواهد عمل نوشتن در حافظه را انجام دهد، و دیگری عمل خواندن را، آن گاه این مسئله عنوان می شود که حاصل این اعمال بسته به اینکه کدامیک زودتر انجام شوند متفاوت است. برای رفع این مشکل باید قبل از نوشتن در محلی از حافظه آن را قفل نمود تا بقیه ماشین ها نتوانند عملیات خواندن یا نوشتن را بر روی آن محل از حافظه انجام دهند. بعد از انجام عمل نوشتن در حافظه، قفل توسط ماشین مربوطه آزاد می شود تا بقیه ماشین ها بتوانند با آن محل از حافظه کار کنند.
مدیریت حافظه تولیدی باید بتواند کلیه عملیات متداول بر روی حافظه که در یک محیط تک قابل اجرا هستند را به انجام برساند واین کار را باید به صورتی انجام دهد که کاربر متوجه نشود حافظه درخواستی او روی چه ماشینی وبه چه طریقی اخذ شده است و کل حافظه توزیعی را به صورت یک حافظه واحد ببیند.