آموزش برنامه نویسی ، اموزش برنامه نویسی اندروید

تبلیغات

دسته‌ها


تاریخچه و مقدمات سیستم عاملReviewed by کاظم جوادی on Dec 22Rating: 5.0تاریخچه و مقدمات سیستم عاملدر یک دسته بندی کلی می توان نرم افزار ها را به دو دسته ی بزرگ تقسیم کرد: برنامه های سیستمی، که کامپیوتر و عملکرد آن را کنترل می کند، و برنامه های کاربردی که کار اصلی را برای کاربر انجام می دهد. مهمترین برنامه ی سیستمی، سیستم عامل (Operating System) است.

در یک دسته بندی کلی می توان نرم افزار ها را به دو دسته ی بزرگ تقسیم کرد: برنامه های سیستمی، که کامپیوتر و عملکرد آن را کنترل می کند، و برنامه های کاربردی که کار اصلی را برای کاربر انجام می دهد. مهمترین برنامه ی سیستمی، سیستم عامل (Operating System) است. که وظیفه ی آن کنترل منابع کامپیوتر و ایجاد بستری برای اجرای برنامه های کاربردی است. به دلیل اینکه برنامه نویسی سیستمی با پیچیدگی های سخت افزاری سر و کار دارد از ابتدا مشخص بود که باید برای ایزوله کردن برنامه نویسان از این پیچیدگی های سخت افزاری راهی پیدا شود. روش هوشمندانه ای که برای این منظور اختراع و به تدریج توسعه داده شد، این بود که لایه ای از نرم افزار روی سخت افزار کشیده شود و مدیریت آن را بر عهده بگیرد. بدین ترتیب، کاربر (یا برنامه نویس) به جای سخت افزار خام بایک ماشین مجازی (Virtual Machine) روبرو خواهد بود که کار باآن بسیار ساده است. این لایه ی نرم افزاری همان سیستم عامل است. در ساختار لایه ای کامپیوتر های امروزی سیستم عامل درست بین سخت افزار و نرم افزار قرار دارد. هر سیستم از سخت افزار، سیستم عامل و برنامه های کاربردی تشکیل شده است.

به مجموعه ی سخت افزار و دستورات قابل مشاهده برای برنامه نویسان اسمبلی معماری مجموعه دستورات (Instruction Set Architecture – ISA) گفته می شود. به این لایه از سخت افزار لایه ی زبان ماشین نیز گفته می شود. زبان ماشین بین ۵۰ تا ۳۰۰ دستور دارد که اغلب برای جابه جاکردن داده ها در ماشین، محاسبه روی داده ها و مقایسه ی آن ها استفاده می شود. ارتباط با وسیله های ورودی، خروجی در این لایه توسط ثبات های خاصی بنام ثبات وسیله (Device Register) انجام می شود. برای مثال، نوشتن و اطلاعات روی دیسک با بارکردن آدرس دیسک، آدرس اطلاعات در حافظه ی اصلی، تعداد بایت ها، نوع عملیات (نوشتن یا خواندن) در ثبات های وسیله شروع خواهد شد.

نرم افزار های سیستمی مانند مفسر فرمان (پوسته)، کامپایلرها، ویرایشگرها، در بالای لایه ی سیستم عامل قرار دارند. با اینکه این قبیل نرم افزار ها اغلب در یک بسته و همراه با سیستم عامل می آیند، اما مهم است به یاد داشته باشید که این ها جزء سیستم عامل نیستند. این یک نکته ی کلیدی است: سیستم عامل بخشی از این نرم افزار است که در حالت هسته (kernel mode) یا حالت سرپرست (supervisor mode) اجرا می شود.

سیستم عامل اساسا در بخش حفاظت شده ی سخت افزار اجرا می شود و کاربر نمی تواند به آن دسترسی داشته باشد که البته برخی از پردازنده های قدیمی حالت حفاظت شده ندارند. از طرف دیگر نرم افزار هایی مانند ویرایشگر یا کامپایلر در حالت کاربر (user mode) اجرا می شوند. اگر کاربری از یک کامپایلر خوشش نیاید، به سادگی می تواند آنرا با کامپایلر دیگری عوض کند، اما هرگز نمی تواند روتین های پاسخ به وقفه (intrrupt handler) – که جزئی از سیستم عامل هستند را دستکاری یا عوض کند. البته در برخی از سیستم ها مانند سیستم های نهفته (embedded systems) که در آن ها حالت هسته وجود ندارد، و سیستم های غیر سخت افزاری یا مفسری (interpretation systems) مانند سیستم های متکی بر جاوا، مرز دقیقی بین دوحالت هسته و کاربر وجود ندارد. اما در حالت کلی باید به یاد داشته باشیم که سیستم عامل بخشی از نرم افزار است که در حالت هسته اجرا می شود. سیستم عامل ۲ وظیفه ی مستقل بر عهده دارد که ارتباط چندانی با هم ندارند. توسعه ی ماشین و مدیریت منابع. بدون توضیح درباره ی هر دو وظیفه ی سیستم عامل هیچ بحثی کامل نیست.

توسعه ماشین: سیستم عامل همان برنامه ایست که جزئیات مربوط به سخت افزار مانند کنترل دیسک ها، مدیریت حافظه، تایمرها، طرز پاسخ به وقفه ها و سایر کارهای سطح پایین را از برنامه نویس پنهان می کند و سیستمی سطح بالا در اختیار وی قرار می دهد. از این نقطه نظر وظیفه ی سیستم عامل ایجاد یک ماشین توسعه یافته (extended machine) یا ماشین مجازی (virtual machine) است که کار با آن بسیار ساده از سخت افزار خام خواهد بود.

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

  1. تسهیم زمان(time sharing)
  2. تسهیم فضا(space sharing).

در روش تسهیم زمانی، هر برنامه به نوبت برای مدتی کنترل یک منبع (CPU، حافظه، I/O و مانندآن ها) را به دست می گیرد و کار خود را انجام می دهد. در این روش نوبت بندی برنامه ها بر عهده ی سیستم عامل قرار دارد.

در روش تسهیم فضا، بخشی از منابع سیستم (حافظه، I/O و مانند این ها) به هر برنامه اختصاص داده می شود. ]نکته: منابعی که فقط یکی از آن ها وجود دارد، مانند CPU در اغلب سیستم های امروزی، همچنان به روش زمانی تسهیم می شوند[. با ارزان شدن تراشه های RAM در سال های اخیر، حافظه یکی از منابعی است که به وفور در سیستم ها یافت می شود و سیستم عامل می تواند حافظه ی کافی را به طور جداگانه به هر برنامه اختصاص دهد. در این روش برنامه ها در تمام مدت در حافظه ی اختصاصی خود می مانند و دیگر نیازی نیست هر بار که نوبت آن ها تمام می شود، از حافظه خارج شوند و یکی دیگر از منابعی که اغلب به صورت تسهیم فضا به اشتراک گذاشته می شود هارد دیسک است. در مورد حافظه و فضای ذخیره سازی دیسک به دلیل این که در آن ها از تسهیم فضایی استفاده می شود سیستم عامل باید از اطلاعات کاربر چه در RAM و چه در فضای ذخیره سازی دیسک محافظت کند. باید توجه داشت که سیستم عامل رابطه ی تنگاتنگی با معماری کامپیوتری که روی آن اجرا می شود را دارد.

اولین کامپیوتر دیجیتال واقعی توسط چارلز بابیج طراحی شد که نام آن موتور تحلیلی (analytical engine) بود. اما از آنجاییکه این ماشین کاملا مکانیکی بود و تکنولوژی آن زمان هم نمی توانست چرخها، دنده ها و دندانه های به اندازه ی کافی دقیق تولید کند، ماشین بابیج هرگز جنبه ی علمی پیدا نکرد. لازم به ذکر است که موتور تحلیلی بابیج اساسا سیستم عامل نداشت. بابیج دریافته بود که موتور تحلیلی وی به نرم افزار نیاز دارد، بنابراین خانم جوانی به نام ایدا لاولیس را به عنوان اولین برنامه نویس تاریخ استخدام کرد. زبان برنامه نویسی “ایدا” (Ada) به افتخار همین خانم نام گذاری گذاری شده است.

Ada_Lovelace

Chapter_2-60

 

 

کامپیوتر های نسل اول – لامپ خلاء و کلید های مکانیکی(۱۹۴۵ – ۱۹۵۵):

کامپیوتر های نسل اول – لامپ خلاء و کلید های مکانیکی(1945 - 1955)

کامپیوترهای دیجیتالی اولیه با استفاده از رله های مکانیکی ساخته می شدند و بسیار کند بودند و سیکل کاری آن ها بر اساس ثانیه اندازه گیری می شد. بعدها لامپ خلاء جای رله های مکانیکی را گرفت. برنامه نویسی این ماشین ها ( و حتی قطع و وصل کردن سیمها و جابه جا کردن کلید ها) مطلقا به زبان ماشین بود. در آن زمان زبان اسمبلی حتی وجود خارجی نداشت و هیچ کس حتی به سیستم عامل هم فکر نمی کرد. در اوایل دهه ی ۱۹۵۰ با ورود کارت سوراخ دار (punched card) کار ها تا حدی راحت تر شد. و دیگر کسی کلیدی را قطع وصل یا سیم ها را جابجا نمی کرد.

کامپیوتر های نسل دوم – ترانزیستور و سیستم های دسته ای(۱۹۵۵ – ۱۹۶۵):

کامپیوتر های نسل دوم – ترانزیستور و سیستم های دسته ای(1955 - 1965)

در دهه ی ۱۹۵۰ با ورود ترانزیستور اوضاع دچار دگرگونی اساسی شد. اکنون می شد کامپیوتر ها را به بازار عرضه کرد و به مشتریان فروخت. در اینجا نکته ی مهم آن بود که طراح و سازنده ی کامپیوتر را می شد از اپرواتور و برنامه نویس جدا کرد. نام این کامپیوتر های جدید را مین فریم (minframe) گذاشتند. برای انجام یک کار ]تعریف: کار یا job به یک برنامه یا مجموعه ای از چند برنامه که با هم اجرا می شوند گفته می شود.[ برنامه نویس ابتدا آن را به زبان فرترن یا اسمبلی می بر روی کاغذ می نوشت و سپس برنامه را روی کارت های کاغذی مخصوص پانچ می کرد. بعد ازآن بسته ی کارت های سوراخ شده را به اتاق ورودی می برد، تحویل اپراتور ها می داد، و منتظر می ماند تا خروجی آماده شود. وقتی کامپیوتر کاری را به پایان می رساند، اپراتور خروجی آن را از روی چاپگر برداشته و به اتاق خروجی می برد برنامه نویس بعدا می توانست با مراجعه اتاق خروجی، کار خود را تحویل بگیرد. اگر برنامه ای به زبان فرترن نوشته شده بود اپراتو مجبور بود کامپایلر فرترن را که آن هم به صورت دسته ای از کارت های سوراخ دار بود از کمد فایل ها برداشته و به کامپیوتر بدهد.

با توجه به قیمت بالای کامپیوتر ها و سرعت پایین آن ها متخصصان به سرعت به فکر پیدا کردن راهی افتاند. روشی که به طور گسترده مورد قبول واقع شد، سیستم دسته ای(batch system) بود که روش آن به این صورت بود:

  1. برنامه نویسان کارت های خود را تحویل کامپیوتر IBM 1401 می دادند.
  2. کامپیوتر IBM 1401 بسته ای از کارت ها را روی نوار مغناطیسی منتقل می کرد.
  3. اپراتور نوار مغناطیسی را به کامپیوتر IBM 7094 می داد.
  4. کامپیوتر IBM 7094 محاسبات را انجام می داد.
  5. اپراتور نوار خروجی را به IBM 1401 می داد.
  6. کامپیوتر IBM 1401 خروجی را چاپ می کرد.

ساختار کلی یک کار (job) به این صورت بود که هر کار بایک کارت $JOB شروع می شد که حداکثر زمان اجرای آن (به دقیقه)، شماره حسابی که باید بدهکار شود و نام برنامه نویس در آن قید شده بود. بعد از آن کارت $FORTRAN می آمد که به سیستم عامل می گفت بایستی کامپایلر فرترن را از نوار سیستم بار کند. به دنبال آن ها کار های برنامه (که بایستی اجرا شود) قرار می گرفت. بلافاصله بعد از کارت های برنامه، کارت $LOAD می آمد که به سیستم عامل می گفت برنامه ی کامپایل شده را بار کند. ]نکته: از آنجایی که برنامه ی کامپایل شده اغلب روی نوار ذخیره می شد برای بار کردن آن باید دستور صریح به سیستم عامل داده می شد[. کارت بعدی کارت $RUN بود که به سیستم عامل می گفت برنامه با استفاده از کارت های داده ای که به دنبال آن می آمد اجرا کند. در انتهای هر کار هم یک کارت $END قرار می گرفت که پایان کار را مشخص می کرد. این کارت های کنترل ابتدایی پدر بزرگ زبان های کنترل کار (job control language) و مفسر های فرمان (command interpreter) امروزی محسوب می شوند.

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

مهمترین سیستم عامل های کامپیوتر های نسل دوم FMS (سیستم نظارت فرترن – Fortran Monitor System) و IBSYS که سیستم عامل کامپیوتر های IBM 7094 بود اشاره کرد. در زمان کامپیوتر های نسل اول هیچ کس حتی به سیستم عامل فکر هم نمی کرد و سیستم عاملی وجود نداشت.

کامپیوتر های نسل سوم – مدار های مجتمع و چند برنامگی(۱۹۶۵ – ۱۹۸۰):

کامپیوتر های نسل سوم – مدار های مجتمع و چند برنامگی(1965 - 1980)

IBM کامپیوتر های System/360 را معرفی کرد. سری ۳۶۰ شامل کامپیوتر هایی از انواع مختلف بود که که از نظر نرم افزاری با یکدیگر سازگار بودند. این ماشین ها فقط از نظر امکانات (مقدار حافظه، سرعت پردازنده، تعداد دستگاه های I/O و …) و قیمت با یکدیگر تفاوت داشتند. از آن جایی که معماری و مجموعه دستورات این کامپیوتر ها یکسان بود برنامه هایی که برای یک ماشین نوشته شده بود می توانست روی ماشین های دیگر اجرا شود.

سری System/360 از IBM اولین کامپیوتر های مهمی بودند که از تکنولوژی مدار های مجتمع (Integrated Circuit – IC) استفاده می کردند. سیستم عامل کامپیوتر های System/360 از IBM، OS/360 نام داشت که به زبان اسمبلی نوشته شده بود و چند هزار برنامه نویس در نوشتن آن مشارکت داشتند. ایرادات سیستم عامل OS/360: 1. سیستم عامل بسیار پیچیده و غول آسایی بود. ۲٫ هزاران هزار باگ داشت. ۳٫ باید به صورت مداوم اصلاحیه های جدیدی برای آن نوشته می شد، که هر اطلاحیه باگ هایی را برطرف می کرد ولی از طرف دیگر باگ های جدیدی وارد سیستم عامل می کرد. در کل تعداد باگ های OS/360 در طول زمان ثابت باقی ماند.

در سیستم عامل OS/360 چندین چندین ویژگی کلیدی وجود داشت که در سیستم های نسل دوم خبری نبود. مهمترین این ویژگی ها چند برنامگی (multiprogramming) بود. روشش برای این کار تقسیم فضای حافظه به چندین بخش (پارتیشن) مجزا بود که در هر بخشی یک برنامه ی مستقل اجرا میشد.

اولین سیستم تسهیم زمانی جدی CTSS نام داشت که در دانشگاه M.I.T و برای یک کامپیوتر ۷۰۹۴ از شرکت IBM طراحی شد. بعد از موفقیت CTSS سازندگان عمده ی کامپیوتر مصمم شدند یک سیستم تسهیم زمانی غول آسا با توانایی سرویس دادن به صدها کاربر همزمان بسازند. این ایده که می توان آن را “منبع خدمات کامپبوتری نامید” از شبکه ی سراسری توزیع برق الهام گرفته بودند. طراحان این سیستم، که به مالتیکس (MULTICS مخفف عبارت MULTiplexed Information and Computing Services – سرویس اطلاعاتی و کامپیوتری مالتی پلکس شده) معروف شد، می خواست کامپیوتر های چنان قدرتمندی بسازد که هریک بتوانند یک شهر کامل را تحت پوشش خود قرار دهند. مالتیکس به دلایل متعدد نتوانست سیستم عاملی فراگیر و جهانی شود: ۱٫ یکی از مهمترین دلایل آن این بود که مالتیکس به زبان PL/1 نوشته شده بود که PL/1 یکی از بزرگترین ایده های شکست خورده در زمینه ی زبان های برنامه نویسی بود و ۲٫ مالتیکس مثل موتور تحلیلی بابیج از زمان خود جلوتر بود.

یکی از مهمترین پدیده های که در نسل سوم کامپیوتر ها رخ داد، ظهور مینی کامپیوتر (minicomputer) بود که با معرفی PDP1 در سال ۱۹۶۱ اتفاق افتاد. سری مینی کامپیوترهای PDP با سرعتی زیاد رشد کرد و تا PDP-11 ادامه یافت.

pdp1134

نسل چهارم – کامپیوتر های شخصی (۱۹۸۰ تا به امروز):

نسل چهارم – کامپیوتر های شخصی (1980 تا به امروز)DDD

با اختراع LSI (مدار مجتمع بزرگ مقیاس – Large Scale Integration) که به لطف آن می توان هرازان و میلیون ها ترانزیستور را روی یک تراشه کاشت، عصر میکروپروسسور (microprocessor) و کامپیوتر های شخصی (Personal Computer – PC) آغاز شد. کامپیوترهای شخصی در ابتدا میکروکامپیوتر(microcomputer) نامیده می شدند و از نظر معماری با مینی کامپیوتر PDA-11 تفاوت چندانی نداشتند ولی قیمت آن ها بسیار بسیار کمتر بود.

اولین تراشه ی میکروکامپیوتر همه-منظوره میکروپروسسور ۸بیتی ۸۰۸۰ بود که در سال ۱۹۷۴ توسط اینتل عرضه شد. چند شرکت بزرگ به سرعت کامپیوتر هایی براساس میکروپروسسور همه منظوره ی ۸ بیتی ۸۰۸۰ اینتل (و میکروپروسسور سازگار با آن یعنی Z80 از شرکت Zlog ) و سیستم عامل CP/M (برنامه ی کنترل میکروکامپیوترها – Control Program for Microcomputers- از شرکت Digital Research) تولید و روانه ی بازار کردند. برنامه های کاربردی زیادی برای سیستم عامل CP/M نوشته شد، و این سیستم عامل به مدت ۵ سال بازار سیستم عامل دنیا را به طور انحصاری در اختیار داشت.

سیستم عامل DOS محصول شرکت دیگری ست که مایکروسافت آن را خرید و حتی برنامه نویس آن را استخدام کرد تا تغییراتی در این سیستم عامل بدهد. ویرایش جدید DOS که نام آن MS-DOS گذاشته شد، به سرعت تبدیل به سیستم عامل بی رقیب در بازار کامپیوتر های شخصی IBM PC شد. سیستم عامل های CP/M ، MS-DOS و Apple DOS همگی سیستم عامل های خط فرمان بودند. سال ها قبل از آن داگ انگلبرت (Doug Engelbert) در موسسه ی تحقیقاتی استنفورد GUI را اختراع کرده بود.

در اواخر دهه ی ۱۹۶۰ یکی از دانشمندان bell labs به نام کن تامپسون(ken thompson) که در پروژه ی مالتیکس هم کار کرده بود یک مینی کامپیوتر PDP-7 بلااستفاده پیدا کرد، و تصمیم گرفت ویرایش تک کاربره و ساده شده ای از مالتیکس روی آن پیاده کند. این پروژه به چیزی تبدیل شد که امروزه ما آن را با نام سیستم عامل یونیکس (UNIX) می شناسیم. برای آن که برنامه ای بتواند روی ویرایش های مختلف UNIX اجرا شود IEEE استانداری به نام POSIX را برای UNIX پیشنهاد کرد که اکنون اغلب سیستم ها از آن پشتیبانی می کنند. POSIX مجموعه ای حداقلی است از فراخوانی های سیستم که بایستی در هر ویرایش UNIX وجود داشته باشد. امروزه سیستم عامل های غیر یونیکسی دیگری همانند ویندوز از POSIX پشتیبانی می کنند.

مهمترین ویرایش های UNIX توسط AT&T بنام System V و توسط دانشگاه کالیفرنیا و احد برکلی بنام BSD ارائه شدند. که سیستم عامل BSD خود ویرایش های مختلفی از جمله FreeBSD، OpenBSD و NetBSD دارد. کد منبع UNIX (ویرایش ۶) تحت لیسانس AT&T در اختیار همگان بود، وقتی AT&T ویرایش ۷سیستم عامل UNIX را منتشر می کرد، متوجه شد که UNIX از نظر تجاری یک محصول با ارزش است و دیگر اجازه نداد کد منبع آن به صورت آزادانه مورد مطالعه و بررسی قرار گیرد.

دانشجوی فنلاندی ای به نام لینوس توروالد سیستم عامل Linux را بر روی سیستم عامل MINIX ساخت. اکنون Linux به همرا سرویس دهنده ی وب Apache، MySQL و زبان های برنامه نویسی منبع باز Prel و PHP که روی هم رفته به عنوان LAMP شهرت یافته اند بخش عمده ای از سرویس دهنده های وب را در اختیار دارند.

 

مفاهیم سیستم عامل:

برای ارتباط بین سیستم عامل و برنامه های کاربردی مجموعه ای از “دستورات توسعه یافته” به کار می رود که به آن ها فراخوانی های سیستم (System Calls) می گویند. با وجود یکسان بودن مفاهیم در اغلب سیستم عامل ها، آن ها از فراخوانی های سیستم متفاوتی استفاده می کنند. فراخوانی های سیستم در اغلب سیستم عامل ها به دو دسته تقسیم می شوند: ۱٫ آن فراخوانی های سیستمی که با فرایند(Process) ها سروکار دارند و ۲٫ آن هایی که با سیستم فایل سروکار دارند.

 

 

ساختار های سیستم عامل:

طرح های مختلف سیستم عامل عبارتند از: ۱٫ سیستم های یکپارچه ۲٫ سیستم های لایه ای ۳٫ ماشین های مجازی ۴٫ اگزوکرنل ۵٫ سیستم های سرویس دهنده-سرویس گیرنده

سیستم های یکپارچه(monolithic systems) مداولترین ساختار موجود در میان سیستم عامل ها هستند. سیستم های یکپارچه فاقد هر نوع ساختاری هستند. چنین سیستم عاملی چیزی نیست جز مجموعه ای از روتین ها که هر کدام می تواند دیگری را در صورت نیاز فراخوانی کند. چنین سیستمی به کلی فاقد ویژگی پنهان سازی اطلاعات است.

نکته: اغلب CPU ها دارای ۲ حالت هستند: حالت هسته که مخصوص سیستم عامل است و در آن تمام دستورات مجاز است و حالت کاربر که خاص برنامه های کاربردی است و درآن I/O و برخی دستورات دیگر مجاز نیستند.

ساختار سیستم عامل های یکپارچه را می توان به صورت زیر خلاصه کرد:

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

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

سیستم های لایه ای: در سیستم عامل های لایه ای سلسله مراتبی از لایه وجود دارد و هر لایه زیربنایی برای لایه های بالاتر از خود است. اولین سیستم عاملی بر اساس مدل سیستم عامل های لایه ای ساخته شد THE نام دارد. مالتیکس به جای لایه از مفهوم حلقه استفاده می کرد. مالتیکس از چندین حلقه ی هم مرکز ایجاد شده بود و هرچه حلقه ها به سمت داخل پیش می رفتند اختیارات بیشتری بدست می آوردند. مزیت مکانیزم حلقه ای در آن است که می توان زیر سیستم های مختلف را در آن تعریف کرد.

سیستم های اگزوکرنل: در پایین ترین لایه ی این ماشین ها که در حالت هسته اجرا می شود برنامه ای به نام اگزوکرنل(exokernel) قرار دارد. وظیفه ی این برنامه تخصیص منابع به ماشین های مجازی و جلوگیری از تداخل عملکرد آن هاست. هر ماشین مجازی می تواند سیستم عامل مستقل خود را اجرا کند، با این استثنا که منابع تخصیص یافته به آن محدود است.

سیستم های سرویس دهنده-سرویس گیرنده: در این مدل وظیفه ی هسته فقط برقراری ارتباط بین فرایند های مشتری و سرویس دهنده است. با تقسیم سیستم عامل به بخش های کوچکتر مانند سرویس فایل، سرویس حافظه، سرویس فرایند و سرویس ترمینال این وظایف کوچکتر شده و مدیریت آن ها ساده تر می شود. از سوی دیگر این سرویس ها همگی در حالت کاربر اجرا می شوند و دیگر دسترسی مستقیم به سخت افزار ندارند و خطاهای آن ها فقط همان سرویس را از کار می اندازد نه کل سیستم عامل را! مزیت دیگر مدل سرویس دهنده-سرویس گیرنده انطباق آن با سیستم های توزیع شده است. اگر فرایند سرویس گیرنده(مشتری) فقط از طریق پیام با فرایند سرویس دهنده ارتباط دارد، نیازی نیست این دو فرایند بر روی یک ماشین باشند. تا آنجایی که به مشتری مربوط است، درخواست وی پاسخ داده شده: خواه روی همان ماشین، خواه روی ماشینی دیگر در شبکه.

خلاصه ای از مقدمات کتاب طراحی و پیاده سازی سیستم عامل از اندرو تننبام
نویسنده: کاظم جوادی

مشخصات

دانـــــلود

  • 485

برچسب ها

مطالب پیشنهادی ما

دیدگاه های شما

پاسخ دهید

فرادرس، بزرگ ترین دانشگاه آنلاین ایران
آموزش مبانی برنامه نویسی
آموزش جاوا
آموزش سی شارپ
آموزش شی گرایی در سی شارپ
آموزش ویژوال بیسیک دات نت
آموزش PHP
آموزش پایتون
آموزش برنامه نویسی C
آموزش برنامه نویسی C++
آموزش برنامه نویسی اندروید
آموزش وردپرس
آموزش برنامه نویسی