سیستم های توزیعی برای اینکه بتوانند از کامپیوترها و شبکه های ناهمگن پشتیبانی کنند و همگی سیستم ها را در غالب یک سیستم منفرد نمایش دهند، به عنوان یک لایه میانی به نام میان افزار بین یک لایه سطح بالایی شامل کاربران و برنامه های کاربردی و یک لایه پائینی شامل سیستم های عامل در نظر گرفته می شوند[12]. در شکل 2-6 لایه سیستم توزیعی یا به عبارتی میان افزاری را مشاهده می کنید که بین سیستم های عامل 1 تا 4 و چهار کامپیوتر شبکه که شامل سه برنامه کاربردی هستند قرار گرفته است. این لایه باعث می شود که تفاوت بین سخت افزار و سیستم های عامل از دید برنامه های کاربردی وکاربران مخفی بماند.

شکل 2-6 : سیستم توزیعی که به عنوان یک لایه میانی یا میان افزار بین برنامه های کاربردی و سیستم عامل ها قرار گرفته است[12].
و اما مواردی که باید در طراحی سیستم های توزیع شده در نظر گرفت و به نوعی اهداف سیستم های توزیع شده می باشند عبارتند از شفافیت، انعطاف پذیری، قابلیت اطمینان، کارآیی خوب و قابلیت گسترش.

شفافیت38
یکی از اهداف مهم سیستم های توزیع شده این است که فرآیندها و منابعی که بین ماشین های متعدد توزیع شده اند، باید از دید کاربران مخفی بماند[17]. به سیستم توزیعی که از دید کاربران و برنامه های کاربردی خود به صورت یک سیستم کامپیوتری منفرد جلوه می کند را اصطلاحاً شفاف39 می گویند.
شفافیت انواع مختلفی دارد و در مورد هر یک طبق تعریفی که در کتاب سیستم های توزیعی آقای تانن باوم آمده توضیح می دهیم، شفافیت دسترسی40 که در مورد مخفی سازی تفاوت های ارائه داده و نحوه دسترسی به منابع به وسیله کاربران می باشد. شفافیت مکان41 یعنی اینکه کاربران نتوانند محل استقرار فیزیکی منبع در سیستم را شناسایی کنند. شفافیت مهاجرت42 یعنی اینکه بتوان منابع آنها را بدون تاثیرگذاری بر نحوه دسترسی به آنها انتقال داد. شفافیت مکان یابی مجدد43 هنگامی است که بتوان منابع را در حین دسترسی به آنها و بدون کوچکترین اطلاعی به کاربر یا برنامه کاربردی مجددا مکان یابی کرد. شفافیت تکثیر44 به مخفی سازی وجود چندین نسخه تکثیری از یک منبع می پردازد. شفافیت هم روندی45 زمانی است که مثلا دو کاربر مستقل فایل های خود را روی یک خدمتگذار فایل واحد ذخیره کرده و یا به جداول واحدی در پایگاه داده مشترک دسترسی داشته باشند. در این موارد هیچ یک از کاربران نباید کوچکترین اطلاعی از واقعیت استفاده کاربر دیگر از آن منبع داشته باشد. شفافیت خرابی46 به این معناست که کاربر متوجه خرابی و عملکرد نادرست یک منبع نشده و سپس سیستم اقدام به ترمیم آن خرابی کند[2].

قابلیت اطمینان47
در دسترس بودن یک فاکتور مهم مرتبط با این سیستم ها است. طراحی نباید به گونه ای باشد که نیاز به اجرای همزمان کامپوننت های اساسی باشد. افزونگی بیشتر داده ها باعث افزایش در دسترس بودن شده اما ناسازگاری را بیشتر می کند. قدرت تحمل خطا 48باعث پوشاندن خطاهای ایجاد شده توسط کاربر می شود.
کارآیی49
بدون کارآیی مناسب کلیه موارد استفاده نرم افزار بی فایده می باشد. اندازه گیری کارایی در سیستم های توزیع شده کار آسانی نیست. برای رسیدن به کارایی باید توازنی خاص در تعداد پیغام ها و اندازه کامپوننت های توزیع شده بر قرار باشد.

مقیاس پذیری50
امروزه اتصال جهانی از طریق اینترنت، مانند امکان ارسال یک کارت پستال برای هر کسی در هر گوشه ای از جهان تبدیل به امر عادی شده است. به همین دلیل، مقیاس پذیری یکی از مهمترین اهداف طراحی برای سازندگان سیستم های توزیعی محسوب می شود. مقیاس پذیری یک سیستم را می توان حداقل در سه بعد مختلف اندازه گیری کرد(نیومان، 1994). اولاً، یک سیستم می تواند با توجه به اندازه خود مقیاس پذیر باشد. به این معنا که بتوان به راحتی کاربران و منابع دیگری را به سیستم اضافه نمود. ثانیاً، یک سیستم مقیاس پذیر جغرافیایی سیستمی است که ممکن است کاربران و منابع آن در فاصله های دوری از هم قرار گرفته باشند. ثالثا، یک سیستم ممکن است از نظر مدیریت اجرایی مقیاس پذیر باشد، به این معنا که حتی اگر سازمان هایی با مدیریت اجرایی مستقل را به هم پیوند دهد. باز به راحتی قابل مدیریت باشد. متاسفانه، اغلب سیستم هایی که از یک یا چند مقیاس پذیر هستند، با افزایش مقیاس پذیری سیستم، تاحدودی با افت عملکرد مواجه می شوند.

سیستم عامل های توزیعی
محیط های کامپیوتری تحت شبکه( شبکه های کامپیوتری) امروزه بسیار رایج شده اند و این محیط ها شامل مجموعه ای از ایستگاه های کاری51 و سرویس دهنده ها می باشند. واضح است که مدیریت این منابع کار آسانی نخواهد بود. استفاده از مجموعه ای از کامپیوترها که از طریق شبکه به هم متصل شده اند مشکلات بسیاری را در بر دارد، از جمله مشکلات تقسیم منابع و یکپارچه سازی محیط( که این مشکلات در سیستم های متمرکز52 وجود ندارد). علاوه بر این برای افزایش میزان کارآیی، توزیع بایستی از دید کاربر پنهان بماند. راه حل مناسب این است که سیستم عاملی طراحی شود که توزیعی بودن سخت افزار را در تمامی سطوح در نظر داشته باشد. به این صورت که سیستم عامل مجموعه را به صورت یک سیستم متمرکز نشان دهد و در کنار آن از مزیت های سیستم توزیعی استفاده کند. در ساختار سیستم عامل های توزیعی از دو الگوی مبتنی بر پیام53 و مبتنی بر شیء54 استفاده می شود[11].

الگوی مبتنی بر پیام
در این الگو سیستم عامل یک هسته مبتنی بر پیام در هر گره قرار می دهد و برای برقراری ارتباطات داخل فرآیند از ارسال پیام استفاده می کند. هسته از هر دو نوع ارتباط محلی( ارتباط بین فرآیندهای داخل هر گره) و غیر محلی(ارتباط از راه دور) پشتیبانی می کند. در یک سیستم عامل سنتی همانند یونیکس دسترسی به سرویس های سیستمی از طریق فراخوانی متدها صورت می پذیرفت در حالی که در سیستم عامل های مبتنی بر پیام، درخواست ها از طریق ارسال پیام مطرح می شوند. با این قرار می توان نتیجه گرفت سیستم عامل های مبتنی بر پیام ساخت جذاب تر و بهتری دارند، زیرا سیاست های موجود در فرآیند های سرویس دهنده از مکانیزم پیاده سازی هسته جدا می باشد.
الگوی مبتنی بر شیء
در این الگو سیستم عامل سرویس ها و منابع را به موجودیت هایی به نام شیء کپسوله می کند. این اشیاء همانند نمونه هایی از داده های انتزاعی می باشند و از ماژول های منحصر به فردی تشکیل شده اند. همچنین این ماژول ها نیز متشکل از متدهای به خصوصی می باشند که اینترفیس(واسط) ماژول را توصیف می کنند. عملکرد در این الگو این چنین است که کاربران درخواست سرویس را از طریق احضار55 شیء مورد نظر مطرح می سازند. این مکانیزم بسیار شبیه به فراخوانی پروسه ها در سیستم های معمولی می باشد. قابل ذکر است که اشیاء عملیات را کپسوله می کنند.
رویکرد سیستم عامل های ابری
سیستم عامل ابری نیز نوعی از سیستم عامل های توزیعی می باشند که مجموعه ای از گره ها را با هم یکپارچه می سازد و یک سیستم متمرکز تولید می کند. سیستم عامل ابری شامل سرویس دهنده های محاسباتی، سرویس دهنده های داده ای و ایستگاه های کاربر می باشد.
سرویس دهنده های محاسباتی: ماشینی است برای استفاده به عنوان موتور محاسباتی.
سرویس دهنده های داده ای: ماشینی است برای استفاده به عنوان مخرن داده های بلند مدت.
ایستگاه های کاربری: ماشینی است که محیطی برای توسعه دادن برنامه های کاربردی فراهم می کند و واسطی بین کاربر و سرویس دهنده های محاسباتی یا داده ای می باشد[3].
ساختار سیستم عامل های ابری بر پایه مدل شیء- نخ56 می باشد. این مدل از مدل برنامه نویسی معروف شیء گرا اقتباس شده است که نرم افزار سیستم را بر پایه مجموعه ای از اشیاء می سازد. هر شیء شامل تعدادی داده و عملیات بر روی آن داده ها می باشد. عملیات بر روی داده ها را متد می نامند و نوع شیء نیز با کلاس مشخص می گردد. هر کلاس می تواند صفر یا یک و یا چند نمونه داشته باشد ولی یک نمونه تنها از یک کلاس ناشی می شود. اشیاء به پیام ها پاسخ می دهند و ارسال پیام به یک شیء می تواند به داده های درون شیء دسترسی داشته باشد و آن ها را بروز رسانی کند و یا به اشیاء دیگر درون سیستم پیام ارسال کند. اشیاء ابر کپسولی از کد و داده می باشند که در یک فضای آدرس مجازی قرار دارند. هر شیء نمونه ای از یک کلاس است و هر کلاس ماژولی از برنامه. اشیاء ابرها به احضارها پاسخ می دهند و احضارها ( با استفاده از نخ ها) برای اجرای متد درون شیء ابر استفاده می گردند. ابرها از اشیاء برای تضمین انتزاع مخازن و از نخ ها برای اجرای متد درون شیء استفاده می نمایند. این موجب می شود که محاسبات و مخازن داده ای از یکدیگر تفکیک شوند. از دیگر ویژگی های مدل شیء- نخ می توان به این موارد اشاره کرد:
عملیات ورودی و خروجی
به اشتراک گذاری داده ها
ارتباط درون فرآیندها
ذخیره سازی بلند مدت داده ها در حافظه

الگوی سیستم عامل ابری
الگوی مورد استفاده در سیستم عامل های ابری همان الگوی شیء- نخ می باشد که در این بخش به توضیح اجزا و نحوه عملکرد این الگو می پردازیم.

شیء ابری
شیء ابری یک فضای آدرس مجازی پایدار می باشد. برخلاف فضاهای آدرس در سیستم های معمولی، محتویات اشیاء برای مدت طولانی باقی می مانند. به همین دلیل در هنگام خرابی سیستم از بین نمی روند، مگر اینکه عمدا از سیستم حذف شوند. همانطور که از تعریف برمی آید اشیاء ابری سنگین وزن هستند، به همین علت است که این اشیاء بهترین انتخاب برای مخازن داده ای و اجرای برنامه های بزرگ به حساب می آیند. داده های درون شیء فقط توسط خود شیء قابل دسترسی و بروزرسانی می باشند، زیرا محتویات یک فضای آدرس مجازی از بیرون از فضای مجازی قابل دست یابی نمی باشند.
یک شیء ابری شامل موارد زیر است:
کد مخصوص به خود ( متدهای اختصاصی )
داده های پایدار
حافظه ای زودگذر و سبک ( برای تخصیص حافظه موقت )
حافظه ای پایدار و دائمی ( برای تخصیص دادن حافظه ای که بخشی از ساختمان داده پایدار شیء می باشد )
داده با احضار متدها وارد شیء می شود و با پایان احضار از شیء خارج می گردد (شکل شماره 2-7 ). اشیاء ابری دارای یک نام در سطح سیستم57 می باشند که آن ها را از یکدیگر منحصر به فرد می سازد. این اشیاء درون سرویس دهنده های محاسباتی قابل استفاده می باشند که این کارآیی موجب می شود توزیعی بودن داده ها از دید کاربر مخفی باقی بماند.

شکل شماره 2-7 : ساختمان یک شیء ابری[5]

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

شکل شماره 2-8 : اجرای نخ ها در شیء ابری[5]

دسته بندی : No category

دیدگاهتان را بنویسید