BIOS سياستمدار رسمي هر سيستم كامپيوتري است كه از اولين لحظه راه اندازي كامپيوتر،تراكنش هاي حياتي كامپيوتر را مديريت مي كند. در اين مقاله به اين موضوع پرداخته مي شود كه چگونه مي توان حداكثر بهره را از آن برد و عمليات «flash »كردن بايوس به چه معناست.اصلي ترين قسمت هر كامپيوتر،«سيستم ورودي \ خروجي اوليه» (BIOS:Basic Input\Output System ) آنست. وقتي يكي از اجزاي سيستم نياز داشته باشد كه ديگر قسمت هاي كليدي داخل كامپيوتر را شناسايي كرده و با آنها ارتباط برقرار كند،به سراغ بايوس مي رود و بايوس مقدمات اين كار را فراهم كرده و در اختيارش قرار مي دهد. پس از روشن كردن كامپيوتر و پيش از انجام هر گونه عملي، اطلاعاتي كه در تراشه حافظه بايوس ذخيره گرديده خوانده مي شود. اين تراشه روي مادربرد كامپيوتر جاسازي گرديده است. بايوس سرعت عملكرد پردازنده ،RAM و گذرگاه سيستم (BUS )را تعيين مي كند(گذرگاه سيستم خود نيز نوعي سياستمدار كوچك است كه به عنوان رابط بين پردازنده و تمام اجزاي ديگر سيستم عمل مي نمايد.)در چند ثانيه اول پس از روشن كردن دستگاه،بايوس نشان مي دهد كه چه درايوهاي اپتيكالي نصب شده اند حجم هارد ديسك چقدر است و چه مقدار حافظه روي مادر برت نصب شده است. همچنين پورت هاي اتصال كيبورد و ماوس را شناسايي مي كند،پورت هاي USB را پيدا مي كند،و كارت گرافيكي ،كارت صدا و آداپتور شبكه رانيز مورد شناسايي قرار مي دهد. پس از آن با انجام يك خودآزمايي موسوم به POST (Power-on self test )شروع به راه اندازي ادامه سيستم مي نمايد. در اين خود آزمايي بايوس پيش از نمايش فهرستي از اجزاي اصلي،وجود برخي از مشكلات محتمل نظير فقدان سيستم عامل يا كيبورد را مورد بررسي قرار مي دهد. همچنين تراشه بايوس وظايفي نظير غير فعال كردن آداپتور صوتي onboard ،درخواست كلمه عبور،يا تغيير تاريخ و زمان را نيز انجام مي دهد. يك بايوس پيشرفته قابل انعطاف به دو طريق مختلف قابل برنامه ريزي است :يكي اينكه مي توان اين كار را با تنظيمات خود بايوس انجام داد. با اين كه پيش فرض تقريبا” همه تراشهاي بايوس اينست كه سرعت پردازنده، RAM ،باس سيستم و باس AGT كارت گرافيكي را بطور خودكار تعيين كند،امااغلب تراشه هاي بايوس اين امكان را مي دهند كه تنظيمات دستي دلخواه را اعمال كنيد و تنظيمات خودكار ناديده گرفته شوند. براي مثال فرض كنيد يك پردازنده 3.2 گيگاهرتزي پنتيوم 4 داريد كه طوري طراحي شده كه با سرعت 16 برابر باس سيستم 200 مگاهرتزي آن عمل كند. مي توانيد باس سيستم خود را به دلخواه افزايش داده و به 220 مكاهرتز تغيير دهيد. سرعت پردازنده كه با 16 برابر اين سرعت اجرا مي شود، برابر با 3.52 گيگاهرتز خواهد بود. احتمال دارد كه پردازنده با اين سرعت كار نكند اما قابليت تراشه بايوس اين امكان را به شما مي دهد كه سرعت هاي فوق را بيازماييد .دومين روش براي تغيير دادن اطلاعات موجود در بايوس flash كردن يا بروز رساني آنست. Flash كردن بايوس كه قدري از تغيير دادن تنظيمات بايوس پيچيده تر است برنامه تعبيه شده در هسته بايوس را تغيير مي دهد.اما چرا بايد بخواهيد نحوه عملكرد بايوس (اصلي ترين جزء سيستم )را تغيير دهيد؟ اول اين كه flash كردن بايوس خرده اشكالاتي را كه از زمان توليد مادر برد كشف شده اند، تصحيح و برطرف مي كند. چه قابليت هاي مربوط به مديريت جريان برق به درستي عمل نكنند و چه كامپيوتر نتواند دستگاه هاي plug-and-play را بطور خودكار تشخيص دهد،عمل flash كردن مي تواند بايوس را طوري ارتقاء دهد كه ميزان پاسخگويي يك كامپيوتر افزايش يابد. دوم اينكه يك بايوس ارتقاء يافته اغلب سازگاري با سخت افزار و ادواتي را كه پس از ساخت مادربرد توليد شده اند، بهبود مي بخشد. هارد دسيك هاي حجيم تر درايوهاي خارجي (external ) و كارت هاي گرافيكي نوظهور ،هر يك ممكن است با يك بايوس قديمي تر كار نكنند.سوم اينكه،چند ماه پس از نصب يك تراشه بايوس بر روي يك مادربرد بخصوص ممكن است راه هاي بهتر و كارآمدتري براي تبادل داده ها و پيكر بندي اجزاي سخت افزاري ابداع گردند. بنابراين بروز رساني تراشه بايوس باعث نيل به بهترين كارايي خواهد شد.
Flash
فوايد flash كردن بايوس آشكار هستند. اگر بنا داريد خودتان اقدام به انجام اين كار كنيد،به وب سايت كارخانه سازنده مادربرد خود برويد و به دنبال صفحات مربوط به پشتيباني پس از فروش بگرديد. از آنجا لينك مربوط به download نرم افزار را پيدا كنيد. پس از يافتن محل مربوط به مادر بردخود آخرين نسخه موجود از نرم افزار بايوس آن را دريافت نماييد. توجه داشته باشيد كه نسخه اي را كه مختص مادربردتان ساخته نشده به هيچ وجه دريافت نكنيد. نصب گونه ديگري از بايوس مادربرد بر روي سيستم ممكن است باعث شود كه بايوس و در نتيجه مادربرد غيرقابل استفاده گردد.اگر در وب سايت فوق دو نسخه ”فقط update ”و ”update ”به همراه برنامه نصب كننده ”وجود داشت،گزينه”... به همراه نصب كننده ”را انتخاب نماييد.اگر نمي توانيد اين دو را با هم دانلود كنيد،اطمينان حاصل نماييد كه ابتدا برنامه نصب كننده و سپس خود update را دريافت مي نماييد. سپس آن دو را روي يك فلاپي ديسك كپي كنيد،ديسك را در درايو قرار داده و كامپيوتر را از نو بوت نماييد. قبل از بالا آمدن سيستم،وارد برنامه BIOS شويد (معمولا” از طريق دكمه Delete يا F2 ،در غير اين صورت به مستندات مادربرد خود رجوع كنيد). در منوي Boot يا Drives ،بررسي كنيد كه تنظيمات به گونه اي باشد كه فلاپي ديسك قبل از هارد ديسك بوت شود. تغييرات انجام داده را ذخيره كنيد وسيستم را بوت كنيد. حالا سيستم از فلاپي ديسك بوت مي شود. براي اجرا برنامه update ،كافيست فقط نام فايل EXE .آن را تايپ كرده و Enter را بزنيد.سپس نام update جديد بايوس خود را انتخاب نماييد. در خلال انجام عمليات flash بايوس،به هيچ عنوان به كامپيوتر خود دست نزنيد،اگر وقفه اي در اين عمليات به وجود آيد باعث مي شود سيستم غير قابل بوت شدن گردد. به همين دليل توصيه مي شود دستگاه خود را به يك منبع مطمئن وصل كنيد و يا از UPS استفاده نمائيد. پس از اتمام عمليات Flash ،برنامه از شما مي خواهد ديسكت را از درايو خارج كرده و سيستم را بوت نماييد. اگر برنامه بخواهد خودش سيستم را بوت كند،نبايد مانع از انجام اين كار بشويد(اگر اين طور باشد،پيغامي به شما خواهد داد.)
پس از راه اندازي مجدد سيستم خواهيد ديد كه اينك كامپيوترتان با ثبات تر و با سخت افزار ها سازگارتر است و كارايي بهتري ارائه مي نمايد. رایانه
تانری آمانیندا
فرض کنیم که شما هر روز به رستوران می رید . هر روز راس ساعت 5 بعد از ظهر سفارش غذا می دید . هروز 4 نوع غذا رو به ترتیب خاص سفارس می دید . راس ساعت 5 همبرگر سفارش می دید گارسون سفارش شما رو بررسی می کنه به آشپزخونه میره بعد از 1 دقیقه همبرگر رو برای شما میاره شما همبرگر رو خورده و سفارش سوسیس می دید مجددا سفارش توسط گارسون به آشپزخانه منتقل شده و بعد از یک دقیقه غذا آماده می شه . به همین ترتیب شما سه غذای دیگه رو سفارش داده و برای هر غذا 1 دقیقه معطل میشید . خوب شما هروز همین غذاهارو سفارش داده و برای آماده شدن هر غذا 1 دقیقه معطل می شید . گارسون با خودش فکر می کنه که برای اینکه هم خودش کمتر کار کنه و هم شما کمتر معطل بشید بیاد و 1 میز دیگه ای آماده از غذاهای شما رو تهیه کنه و بلافاصله بعد از سفارش شما غذا رو روی میزتون بزاره . در اینجا گارسون" باس " آشپزخانه " رم " و میز آماده " کش " در نظر گرفته می شن . بعد از چند روز شما همبرگر رو میخورید طبق عادت گارسون برای شما سوسیس میاره اما شما می گید که امروز املت می خوام! اینجا گارسون مجددا مجبور میشه که 1 دقیقه شما رو در انتظار بزاره تا املت رو براتون بیاره . در اینجا گارسون میز دومی رو تهیه می کنه که بر اساس انتخاب های دوم شما چیده شده . بدین ترتیب شما اگر غذایی رو سفارش بدین که در میز اول نباشه اما در میز دوم باشه بلافاصله غذا رو میل می کنید و معطل نمی شید . میز دوم در اینجا کش سطح دو یا " Cache L2 " هست . اصطلاحی که امروزه در رابطه با فول کش یا هالف کش گفته میشه همین کش سطح 2 هست . اصول کار پردازنده بدین صورت که پیش بینی دستورات بعدی رو کرده و جواب دستورات رو در حافظه ی نهان یا همون کش می ذاره . جالبه که بدونید پردازنده 90% دستورات بعدی رو درست حدس میزنه و اگر حدس پردازنده غلط از کار در بیاد مجبوره که به حافظه ی رم مراجعه کنه که همین مراجعه باعث تاخیر زیادی در کار پردازنده میشه .
نکته ی که قابل گفتن هست اینه که این حافظه بسیار گران قیمت هست و به صرفه نیست که برای بالا بردن سرعت کامپیوتر حافظه کش تهیه کنید . ( مجبورید پردازنده هم عوض کنید!)
تانری آمانیندا
يكی از عواملی كه می تواند سهم عمده ای در كاهش كارآئی يك كامپيوتر داشته باشد و معمولا" مورد توجه جدی قرار نمی گيرد ، تنظيمات BIOS است . اكثر كاربران تنظيمات BIOS را همانگونه كه در شركت توليد كننده انجام شده است ، پذيرفته و آنها را با همان وضعيت استفاده می نمايند . عدم مطابقت تنظيمات BIOS با پيكربندی بهينه ماشين ، از جمله عوامل مهم در كاهش كارآئی يك كامپيوتر می باشد. اغلب كاربران ، پس از بررسی كارشناسی اقدام به تغيير تنظيمات BIOS می نمايند كه قطعا" با تنظيمات انجام شده در كارخانه توليد كننده يكسان نخواهد بود .
به منظور آگاهی از تنظيمات بهينه BIOS با توجه به نوع مادربرد ، يك بانك اطلاعاتی خاص وجود ندارد ولی با يك جستجوی ساده بر روی نام مادربرد و BIOS می توان به تنظميات صحيح دست يافت . همچنين ، با بهنگام سازی BIOS نصب شده بر روی مادربرد می توان وضعيت آن را بهبود بخشيد. بدين منظور لازم است پس از مراجعه به سايت توليد كننده مادربرد و دريافت نرم افزار و دستورالعمل های مربوطه ، اقدام به ارتقاء BIOS نمود .
تانری امانیندا.
يكی از عواملی كه می تواند سهم عمده ای در كاهش كارآئی يك كامپيوتر داشته باشد و معمولا" مورد توجه جدی قرار نمی گيرد ، تنظيمات BIOS است . اكثر كاربران تنظيمات BIOS را همانگونه كه در شركت توليد كننده انجام شده است ، پذيرفته و آنها را با همان وضعيت استفاده می نمايند . عدم مطابقت تنظيمات BIOS با پيكربندی بهينه ماشين ، از جمله عوامل مهم در كاهش كارآئی يك كامپيوتر می باشد. اغلب كاربران ، پس از بررسی كارشناسی اقدام به تغيير تنظيمات BIOS می نمايند كه قطعا" با تنظيمات انجام شده در كارخانه توليد كننده يكسان نخواهد بود .
به منظور آگاهی از تنظيمات بهينه BIOS با توجه به نوع مادربرد ، يك بانك اطلاعاتی خاص وجود ندارد ولی با يك جستجوی ساده بر روی نام مادربرد و BIOS می توان به تنظميات صحيح دست يافت . همچنين ، با بهنگام سازی BIOS نصب شده بر روی مادربرد می توان وضعيت آن را بهبود بخشيد. بدين منظور لازم است پس از مراجعه به سايت توليد كننده مادربرد و دريافت نرم افزار و دستورالعمل های مربوطه ، اقدام به ارتقاء BIOS نمود .
یا حق
وقفه در سيستم عامل
وقفهها جزء مهمی از معماری کامپیوتر هستندو نحوه عملکرد آنها از ماشینی به ماشین دیگر ممکن است متفاوت باشد. وقفه راهکاری را فراهم میسازد تا اجرای دستورالعملهای جاری پردازنده موقتاً متوقف شده و دستورات سرویس دهی دیگری اجراء گردد و سپس از آن کنترل دوباره به برنامه وقفه داده شده باز گردد
انواع وقفهها را میتوان به صورت زیر دسته بندی کرد:
وقفههای برنامه یا program check که به دلیل اجرای بعضی دستورات رخ میدهند. مثلاً سرریز شدن محاسباتی تقسیم بر صفر, اجراء دستورالعمل غیر مجاز, رجوع به آدرس خرج از محدوده مجاز کاربر. به این وقفهها اغلب Trap یا تله گفته میشود
وقفههای زمان سنج(Timer) این وقفه به سیستم عامل امکان میدهد بعضی اعمال را به صورت مرتب در یک پریود زمانی خاص انجام دهد (مثل تنظیم ساعت, چک کردن سخت افزار و..).
وقفههای I/O این وقفهها به وسیله کنترل کنندههای دستگاه I/O تولید میشوند تا کامل شدن طبیعی یک عمل یا بروز خطا در انجام عمل را نشان دهند
وقفههای نقص سخت افزار یا وقفههای Machine-check) مثل وقفهای که بر اثر خطای بیت توازن (parity) حافظه رخ میدهد یا وقفه نقص برق
وقفه (Super Visor Call) که در واقع یک تقاضا از طرف برنامه کاربر جهت دریافت سرویس ویژهای از سیستم عالم است
وقفه Restart که با فشار دادن دکمه Reset ایجاد میشود .
در یک تقسیم بندی کلی میتوان وقفههای را سه دسته کرد :
وقفههای داخلی (trap) که بر اثر اجرای دستورات خود برنامه به صورت داخلی در CPU رخ میهند
وقفههای خارجی که از دستگاههای خارجی مثل دستگاههای ورودی یاخروجی ,DMA,تایمرها , صفحه کلید و خطاهای سخت افزاری ناشی میشوند.
وقفههای نرم افزاری(یاهمان SVC) که بر اثر فراخوانی توابع سیستمی توسط برنامه رخ میدهند
وقفههای نرم افزاری(یاهمان SVC) که بر اثر فراخوانی توابع سیستمی توسط برنامه رخ میدهند
با اجرای مجدد برنامه , وقفههای داخلی به همان صورت قبلی دوباره رخ میدهند ولی وقفههای خارجی مستقل از دستورات برنامه و ناهمگام با برنامه میباشند
اگر چند منبع همزمان تقاضاهایشان را از طریق یک خط وقفه به CPU اعلام کنند , آنگاه CPU با روش همه پرسی یا سرکشی(polling) منبع وقفه دهنده را تشخیص خواهد داد.)
خصوصیات سیستم عامل
خصوصیات سیستم
سیستمها دارای خصوصیاتی هستند که عمدتا به عنوان خواص سیستمها مورد قبول و پذیرش قریب به اتفاق صاحبنظران میباشد . این خصوصیات عبارتند از :
پیوستگی و وابستگی اجزا
اجزا یک سیستم به هم وابستهاند و به هم مرتبط میباشند . هر یک از اجزا به نوعی بر اجزا دیگر تاثیر داشته و یا از آنها تاثیر میپذیرد.
تمایز اجزا
سیستمها از اجزا کوچکتر تشکیل میشوند . هریک از اجزا یک یا چند کار انجام میدهد . این اجزا داخل یک سیستم ، خود میتوانند به اجزا کوچکتر تقسیم شوند و اجزا بعدی نیز به اجزا کوچکتر ، بنابراین سیستمها دارای یک سلسله مراتب از اجزا خود میباشند.
کل گرایی
یک سیستم فقط با نگرش کل گرا قابل مطالعه است . یک سیستم چیزی بیش از مجموع اجزا خود بوده و مجموع شناخت تک تک اجزا تشکیل دهنده سیستم ، شناخت کلی از آن را به دست نمیدهد . به عبارت دیگر مطالعه اجزای یک سیستم نیز باید در قالب کل سیستم صورت گیرد.
هدف گرایی
هر سیستم در جستجوی یک یا چند هدف است . به عنوان مثال هدف از تشکیل یک موسسه انتفاعی کسب منافع است و یا هدف از برقراری سیستم حسابداری در یک موسسه ، تهیه صورتهای مالی و گزارشهای مالی برای تصمیم گیری آگاهانه استفاده کنندگان از آنها می باشد.
دادهها و ستادهها
سیستمها در ابتدا اطلاعاتی را به عنوان داده میپذیرند و پس از پردازش در سیستم عامل آنها ، آنها را به ستاده تبدیل میکنند.
تغییر شکل
سیستمها مبدل هستند ، یعنی داده ها را پردازش در سیستم عامل نموده و به ستادهها تبدیل میکنند . به عنوان مثال ، سیستم تولید یک واحد تولیدی ، مواد اولیه را به محصول تبدیل میکند.
بازخور
تمام سیستمها برای گردش عملیات هماهنگ و مناسب در داخل خود نیازمند جمع آوری نتایج ستادههای خود هستند تا بتوانند به طور مطلوب فعالیتهای خود را تنظیم کنند . به عبارت دیگر برخی از اطلاعات مربوط به نتایج حاصله از پردازش در سیستم عامل دادهها ( ستادهها ) دوباره به صورت دادههای جدید وارد سیستم شده و موجب اصلاح و بهبود سیستم میگردند.
سیستم اشتراک زمانی Time sharing
این سیستمها از اوایل سالهای 1970 در نسل سوم کامپیوترها معمول شدند. سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است.
در سیستمهای چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامهها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردنهای متعدد را نمیداد. در سیستم اشتراک زمانی کاربر به کمک دو ترمینال (Terminal) که شامل کی برد برای ورودی و مانیتور برای خروجی است با کامپیوتر به صورت محاورهای (interactive) رابطه بر قرار میسازد .کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مانیتور دریافت میکند.
در این سیستمها چندین کاربر به کمک ترمینالهایی که به کامپیوتر وصل است همزمان میتوانند از آن استفاده کنند . در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزمهای زمانبندی بین برنامههای مختلف کاربرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ میشودو بنابراین هر کاربر تصور میکند کل کامپیوتر در اختیار اوست .در اینجا تأکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربرد میباشد و نه بالا بردن میزان کاربرد منابع ماشین . کاربر میتواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجراء و اشکال زدایی (debug) کند . سیستمهای دستهای برای اجرای برنامههای بزرگ که نیاز محاورهای کمی دارند مناسب است ولی سیستمهای اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است , استفاده میشوند.
در زمانی که کاربری در حال تایپ برنامهاش یا فکر کردن روی خطاهای برنامه اش میباشدCPU به برنامه کاربر دیگری اختصاص یافته تا آن را اجراء کند.
زمان بندی در سیستم عامل
هدف چند برنامگی این است که در همه اوقات ,پردازشی در حالت اجرا وجود داشته باشد تا بهره وری CPU ما بین پردازش ها به قدر مکرر , سوئیچ نماید که کاربران با برنامه در حال اجرا محاوره داشته باشند.
زمانی که بیش از یک پروسس قابل اجرا باشد سیستم عامل باید تصمیم بگیرد که کدامیک اول اجرا شود. بخشی از سیستم عامل که این تصمیم گیری را انجام می دهد زمانبندی (Scheduler) نامیده میشود. پردازشهایی که در حافظه اصلی قرار دارند و منتظر اجرا شدن هستند در صفی به نام صف آماده (ready queue) قرار میگیرند.
این صف معمولا به شکل یک لیست پیوندی (linked list) پیاده سازی میشود. سرایند صف (header queue) شامل اشارهگرهایی به اولین و آخرین PCB های لیست میباشد.
البته در سیستم صفهای دیگری نیز وجود دارند, مثل صف وسیله(I/O queue) که مشخص میسازد هر وسیله توسط چه پردازشهایی مورد نیاز است . هر وسیله صف مخصوص به خود را دارد.
پردازش در حال اجرا بنا به دلایل زیر میتواند به صف آماده برود تا زمانبندی مجدد شود :
پردازش میتواند یک درخواست I/O را صادر نماید و سپس دریک صف I/O منتظر بماند تا به آن سرویس داده شود .
پردازش میتواند یک پردازش جدید (فرزند) ایجاد نموده و برای اتمام آن صبر کند.
پردازش به علت تمام شدن برش زمانی (time slice) از CPU جدا میشود تا این امکان به بقیه پردازشها نیز داده شود که از CPU استفاده کنند.
پردازش منتظر وقوع یک وقفه در سيستم عامل باشد.
زبان های پیاده سازی سیستم عامل
سیستم عاملهای اولیه به زبان اسمبلی نوشته میشدند ولی امروز, اکثر سیستم عاملها به زبان C) ) یا C++)) نوشته میشوند . سیستم عامل( (UNIX ,OS/2 و ویندوز بیشتر به زبان C نوشته شدهاند و قسمت اندکی از آنها به زبان اسمبلی است .
مهمترین مزیت استفاده از زبان سطح بالا برای پیاده سازی سیستم عامل قابلیت حمل آن بر روی انواع کامپیوترها و سادگی پیاده سازی , تغییر و بسط دادن سیستم عامل میباشد.
ممکن است ادعا شود پیاده سازی سیستم عامل به زبان C باعث کاهش سرعت و افزایش مصرف حافظه میگردد . اگر چه یک برنامه نویس ماهر زبان اسمبلی , میتواند برنامههای کوچک و بسیار بهینه بنویسد ولی برای برنامههای بزرگ یک کامپایلر خوب, میتواند تحلیل پیچیده تری نسبت به مغز انسان ماهر انجام داده و بهینه سازیهای کاملی را انجام دهد.
لذا در عمل برنامههای بزرگ C کد اسمبلی بهینه تر و کمتری را تولید میکنند, نسبت به حالتی که برنامهنویس بخواهد همان کاری به زبان اسمبلی انجام دهد . از طرف دیگر در عمل کارایی اصلی نتیجه ساختمان داده و الگوریتمهای بهتر است نه نتیجه نوشتن برنامه به زبان اسمبلی همچنین اگر چه سیستم عاملها برنامههای بزرگی هستند ولی تنها بخش کوچکی از کد آنها, نسبت به کارایی , بحرانی(Critical) میباشد مثل مدیریت حافظه و زمانبندی CPUلذا پس از آنکه سیستم عامل به زبان سطح بالا نوشته شد و به درستی عمل کرد می توان روتین های گلوگاه (bottleneck) و مهم را شناسایی کرد و سپس آنها را با روتینهای معادل زبان اسمبلی جایگزین نمود.
علی یارتون
حافظه يك از مهمترين عناصر سختافزار استفاده شده در كامپيوتر است. بدين منظور از حافظهها مختلف و با فنارها متفاوت استفاده ميگردد. حافظهها «ايستا» (Static) و «پويا» (Daynamic)، دو نمونه متدوال در اين زمينه ميباشند. كامپيوتر شما ممكن است هم دارا حافظه static و هم dynamic باشد. از حافظهها فوق با توجه به تفاوت مشهود قيمت آنان با اهداف متفاوت استفاده ميگردد. با بررس نحوه عملكرد هر يك از تراشهها حافظه static و dynamic، ميتوان به تفاوتها موجود و علت اختلاف قيمت آنان، بيشتر واقف گرديد.
Dynamic RAM ، متداولترين نوع حافظه در حال حاضر محسوب ميگردد. درون يك تراشه dynamic RAM، هر سلول حافظه صرفا يك بيت اطلاعات را در خود ذخيره نموده و از دو بخش اساس تشكيل ميگردد: يك ترانزيستور و يك خازن. به منظور ذخيره ميليونها سلول حافظه بر رو يك تراشه از تعداد انبوه ترانزيستور كوچك و خازن استفاده ميگردد. خازن مسووليت نگهدار صفر و يا يك را برعهده داشته و ترانزيستور به منزله يك سوئيچ است كه مدار كنترل بر رو تراشه را به منظور خواندن خازن و يا تغيير وضعيت آن، مديريت مينمايد. خازن را ميتوان به منزله يك سطل كوچك در نظر گرفت كه قادر به ذخيره الكترونها ميباشد.
به منظور ذخيره ساز مقدار يك در حافظه، ميبايست سطل فرض از الكترونها پر گردد و برا ذخيره مقدار صفر، اين سطل ميبايست خال گردد. مهمترين مشكل سطل فرض، وجود نشت و يا سوراخ در آن است كه باعث ميگردد پس از گذشت مدت زمان مشخص، خال گردد. در مدت زمان كمتر از چند ميل ثانيه، يك سطل پر از الكترون، خال ميگردد. به منظور نگهدار وضعيت خازن و ذخيره ساز مقدار يك قبل از تخليه خازن، ميبايست پردازنده و يا كنترل كننده حافظه، خازن را شارژ نمايند. بدين منظور كنترل كننده حافظه، حافظه را خوانده و آن را مجددا” بازنويس مينمايد.
فرآيند فوق كه به Refresh معروف است به صورت اتوماتيك در هر ثانيه، هزاران مرتبه تكرار ميگردد. علت نامگذار اين نوع از حافظهها به dynamic به مفهوم فرآيند Refresh برميگردد.حافظهها dynamic، ميبايست به صورت پويا بازخوان و بازنويس گردند و گرنه تمامياطلاعات موجود در آنان از بين خواهد رفت. علاوه بر موارد فوق، عمليات Refresh زمان خاص خود را داشته و باعث ميگردد سرعت آنان، كاهش يابد.
Static RAM از يك تكنولوژ كاملا متفاوت با dynamic RAM، استفاده مينمايد. در حافظهها static از يك نوع فليپ فلاپ خاص كه هر يك از بيتها حافظه را در خود نگهدار مينمايد، استفاده ميگردد. يك فليپ فلاپ برا هر سلول حافظه از چهار تا شش ترانزيستور استفاده مينمايد. در اين نوع حافظه، ضرورت به عمليات Refreshing، نبوده و بديه است كه سرعت آنان در مقايسه با حافظهها dynamic بهمراتب بيشتر ميباشد. با توجه به اين كه اين نوع از حافظهها دارا بخشها و عناصر بيشتر ميباشند، يك سلول حافظه Static فضا بهمراتب بيشتر را نسبت به يك سلول حافظه dynamic بر رو تراشه، اشغال خواهد كرد. بنابراين شما حافظه كمتر را در هر تراشه خواهيد داشت و بديه است كه قيمت آنان نيز افزايش خواهد يافت (ميزان حافظه قابل استفاده بر رو هر تراشه(.
با توجه به موارد اشاره شده، حافظهها Static سريع و گرانقيمت و حافظهها dynamic ارزان و كند ميباشند. از حافظهها Static به منظور ايجاد حافظهها Cache ريزپردازنده (حساس به سرعت) و از حافظهها dynamic به منظور فضا ذخيرهساز اصل در سيستمها، استفاده ميگردد
ضمنا یکی از دوستان منبع در مورد سیستم عامل می خواستن که یکی دوتا لینک معرفی می کنم وتو قسمت لینک های مفید یه نگاهی بندازین اونجا هم چند تا لینک بدرد بخور هست
یا حق
مسائل {تتنباوم}
1- دو وظیفه اصلی یک سیستم عامل چیست؟
2- چند برنامگی(Multi Program ) چیست؟
3 -SPOOLING چیست؟
4- چرا اشتراک زمانی(Time Sharing ) در کامپیوتر های نسل دوم خیلی رایج نشد؟
الف- غیر فعال کردن کلیه وقفه ها
ب- خواندن ساعت (زمان –از- روز )
ج- تنظیم ساعت (زمان –از –روز)
د- تغییر نگاشت حافظه
5- مدل مشتری –خدمت گذار در سیستم های توزیع شده رایج است. آیا می توان از آن در سیستم های تک کامپیوتری هم استفاده کرد؟
6- چرا در سیستم اشتراک زمانی به جدول فرآیند نیاز داریم؟آیا در سیستم های کامپیوتر شخصی که درآن فقط یک فرآیند وجود دارد ، و آن فرآیند کل ماشین را در اختیار می گیرد تا به اتمام برسد، نیز به آن جدول نیاز داریم ؟
*******************************فصل دوم *********************************
سیستم ها ی چند نخی multithreading
در تکنیک چندنخی (multithreading) یک فرایند (process) که برنامهای در حال اجراست , میتواند به بخشها یا نخهایی (بندهایی ) تقسیم شود که میتوانند به صورت همزمان اجراء شوند.
برنامههایی که چند وظیفه مستقل از هم را انجام میدهند میتوانند به صورت چند نخی نوشته شوند.
گ
فرآیند (process)یا پردازش اساس یک برنامه در حال اجراست که منابعی از سیستم به آن تخصیص داده شده است (شامل رجیسترها,حافظه,فایلها و دستگاهها).فرآیند میتواند مجموعهای از یک یا چند نخ باشد.
به نخ, رشته یا بند هم گفته میشود . کلیه اطلاعات مربوط به هر پروسس , در یکی از جداول سیستم عامل به نام جداول process Control Block=PCB ذخیره میشود. این جدول یک آرایه یا لیست پیوندی از ساختارهاست که هر عضو آن مربوط به یکی از پروسسهاست که در حال حاضر موجودیت دارد.
اطلاعات موجود در PCB عبارتند از :
• حالت جاری پردازش
• شماره شناسایی پردازش
• اولیت پردازش
• نشانی حافظه پردازش
• نشانی محل برنامه پردازش بر روی دیسک
• نشانی سایر منابع پردازش
• محلی برای حفظ ثباتها .
************** کنکور سال 74 *************
سال 74
1- در یک سیستم مبادله ساده که برش زمانی فقط یک پروسس کاربر به همراه سیستم عامل در حافظه اصلی قرار دارد از یک دیسک با مشخصات زیر استفاده شده است متوسط زمان حرکت هد 30 میلی ثانیه ، مینیم زمان حرکت 10 میلی ثانیه ، سرعت چرخش دیسک 15 میلی ثانیه در هر دور و گنجایش هر شیار 10 کیلو بایت . در صورتی که اندازه همه پروسس ها کاربران ثابت و طول هر برش زمانی یک دهم ثانیه باشد . میزان به کارگیری مفید CPU چقدر است؟
ا)بیش از 30 درصد و کمتر از 40 درصد
2) 47/30 در صد
3) بیش از 50 در صد
4) کمتر از 26 درصد یا حداکثر مساوی با آن
2- آیا کد صوری زیر برای مسئله Critical Section بین دو فرآیند همروند قابل قبول است؟ چرا؟
{
Int turn;
Boolean flag [2];
Proc(i);
Int (i);
{
While (TRUE)
{
Compute;
Flag[i]:=TRUE;
Turn:=(i+1) mod 2;
While (flag [(i+1) mod 2] & turn =i);
Critical –section;
Flag [i]=FALSE;
}
}
Turn:=0;
Flag[0]:=FALSE;
Flag[1]=FALSE;
Proc(0) AND Proc (1);
}
)توضیح اینکه اپراتور AND به معنای اجرای همروند می باشد).
1)خیر –زیرا Dead Lock وجود دارد.
2)بلی-زیرا شرط Mutual Exclusion برقرار است.
3)خیر زیرا شرط Mutual Exclusion برقرار است.
4) بلی زیرا Deadlock وجود ندارد.
3- پنج کار در وضعیت آماده ، در انتظار اجرا شدن روی یک کامپیوتر هستند. زمان تخمین زده شده برای اجرا ی این کارها برابر 10 ، 5،6،8،X میکرو ثانیه (X مجهول است) بنظر شما استفاده از کدام روش زمان بندی ، متوسط زمان پاسخگویی ( Response_Time ) این کارها را حداقل می کند؟
First Come First Served(FCFS)-1
Shortest Job First(SJF)-2
Shotest Remaining time (SRT)-3
Round Robin (RR)-4
-4به دو برنامه زیر دقت کنید:
یک پراسس روتین اینتراپت
Jobcount:=1; IF jobcount = 1 then
Return from interrupt wake up (jobscheduler);
Jobcount :=0
ELSE
Wait for interrupt;
همیشه بیدار استJobscheduler (1
هیچ وقت بیدار نمی شود.Jobscheduler (2
Jobscheduler(3 گاهی اوقات اشتبا هاٌ بیدار می شود.
4) Jobscheduler کاهی اوقات اشتباهاٌ بیدار نمی شود.
5- به فرض آن که اندازه متوسط هر فرآروند برابر p بایت ، اندازه هر صفحه برابر q بایت و اندازه هر مدخل از جدول صفحه برابر e بایت باشد ، اندازه بهینه صفحه () چند بایت خواهد بود ؟(متوسط فضای هدر رفته در آخرین صفحه ، فرآروند را برابر نصف اندازه صفحه در نظر بگیرید).
P^2/2e (4 2pe (3 2ep/q (2 p/2e (1
یا حق
تفاوت بین تعویض متن(Context Switching) و تعویض فرآیند context Process)چیست؟{استالینگ 143}
فرآیندی که در حال اجراست ، به وسیله یک وقفه (حادثه ای که خارج از فرآیند بروز کرده و پردازنده آن را تشخیص می دهد) یا با اجرای یک System Call از سیستم عامل ، دچار وقفه می شود. در هر صورت ، پردازنده یک عمل تعویض حالت() انجام می داده و کنترل را به یک روال سیستم عامل منتقل می کند.بعد از انجام عمل لازم ، ممکن است سیستم عامل فرآیند ی که دچار وقفه شده بود را از سر گیرد و یا فرآیند دیگری را فعال نماید.{استالینگ 156}
چه چیزی متن (وضعیت) ذخیره شده را تشکیل می دهد؟
هر اطلاعی که بتواند با اجرای سرویس روتین وقفه تغییر کند و برای از سرگیری برنامه وقفه داده شده لازم باشد باید ذخیره گردد. بنابراین شامل بلوک کنترل فرآیند(PCB) باید ذخیره گردد.{ استالینگ 143}
مفاهیم فرآیند(Process-فرآروند- پردازه- پروسه -پردازش)
فرآیند چیست؟برنامه در حال اجرا را Process گویند.
تعریف مفیدتر فرآیند: هر وقت یک Job را برای اجرا انتخاب می کند ، گوئیم فرآیند تا زمانی کهJob خاتمه پیدا کند.
فرآیند(process) مفهومی دینامیکی است منظور اینست Running عوض می شود یعنی دائماٌ در CPU ، Flag ها و Register ها ، Stack ها و Data ها عوض می شوند.
هر فرآیند دارای فضای آدرس ( Address Space) مخصوص به خود است . فضای آدرس شامل برنامه اجرایی ، داده ای برنامه و پشته آن است. همچنین هر فرآیند برای خودش یک مجموعه از رجیستر ها دارد، شامل شمارنده برنامه ، اشاره گر پشته ( Stack Pointer ) و دیگر رجیستر ها ی سخت افزاری ، همینطور همه اطلا عات دیگری که برای اجرای برنامه مورد نیاز است.
عیناٌ یک کپی از فضای آدرس فرآیند بر روی فضای Swap دیسک وجود دارد که Process Core Image گویند .
در واقع تصویر حافظه اصلی فرآیند بر روی حافظه جانبی است.
Core : حافظه اصلی (چمره ای ) که در حال حاضر استفاده نمی شود..
1- هر وقت فرآیند بخواهد اجرا شود یک کپی را از دیسک می آورد در حافظه می گذارد.
2- Core Image
بازگشت به دیسک Suspond خواهد بود . در سیستم های قبلی که سیستم Swap باشند.
نکته : اگر فرآیند ها نیاز به اجرای برنامه خارجی داشته باشند (جزو خودشان نیست) باید یک فرزند ایجاد کنند، فرزند یک فرآیند، خودش فرآیند است . و فرزندان ، فرزندان هم می توانند فرزند ایجاد کند یعنی ساختار درختی داریم . در Unix
این ساختار واحد است و حتی درخت واحد فایلها هم دارد.
مثال :در بعضی unix ها وقتی Start up می کند ، فرزند ی می سازد به نام Init بعد سیستم عامل می بیند کدام ترمینالها رو شن هستند به تعداد آنها فرزند به نام Login می سازد.
نکته : در سیستم Unix : اگر فرآیند پدر از بین برود . فرآیند فرزند اطلاعات را به فرآیند Init داده می شود . هنگامیکه سیستم بوت می شود فرآیند Init که جد تمام فرآیند ها است.به وجود می آیئد. فرآیند پد همیشه منتظر فرآیند فرزند است . هر فرآیندی یک پدر دارد که اطلا عات به آن بر می گردد.
بلوک کنترل فرآیند شناسایی فرآیند
اطلا عات وضعیت پردازنده
اطلا عات کنترل فرآیند
پشته کاربر
فضای آدر س خصوص کاربر
(برنامه ها، داده ها)
فضای آدرس مشترک
بلوک کنترلی فرآیند( Process Control Block)
هر فرآیند در سیستم عامل با یک بلوک کنترلی فرآیند خاص خود نشان داده می شود . یک PCB یک بلوک داده ای است که اطلا عاتی متناظر با یک فرآیند معین در بر می گیرد.
از جمله این اطلا عات عبارتند از:
6- اطلا عات هویتی فرآیند: شامل نام ، شماره شناسایی فرآیند و فرآیند پدر
7- وضعیت فرآیند : شامل آماده ، اجرا ، منتظر
8- شمارنده برنامه : آدرس دستوالعمل بعدی
9- ثبات های پردازنده :شامل تمام اطلا عات وضعیتی برنامه که در هنگام رخ دادن یک وقفه حفظ میشود.
10- اطلا عات زمانبند پردازنده ها : شامل پارامتر های زمانبندی و الویت فرآیند
11- اطلاعات درباره مدیریت حافظه : در بر گیرنده تمام اطلا عاتی در رابطه با حافظه و فرآیند مر بوطه
12- اطلا عات وضعیتی ورودی – خروجی : شامل لیستی از فایلها ی باز ، دستگا های ورودی – خروجی اختصاص یافته به این فرآیند
13- بطور کلی PCB مرکز اطلا عاتی است که سیستم عامل تمام اطلا عات کلیدی در باره فرآیند را را در آن قرار میدهد.
فرآیند ها سه وضعیت دارند؟
1- : Ready آماده اجرا
2- :Runnigدر حال اجرا
3- : Block بلوکه شده (مسدود) یا Wait
Ready : فرآیندی هاییی که منتظر هیچ منبعی بجز CPU نیستند ، CPU به آن بدهید اجرا می شود. تمام منابع را دارد (فعلاٌ ) ممکن است CPU داده شود ولی بعد درخواست I/O کند و متوقف شود.
Running: : فرآیندی که در حال حاضر CPU و سایر منابع مورد نیازش را در اختیار دارد و در حال اجرا است.
Blocked:: فرآیند هایی هستند که منتظر منبعی بجز CPU (مثلا ٌI/o ) و یا یک وقفه خارجی هستند.
فرآیند منتظر دو را ه دارد:
1- Busy Waiting : Cpu را Loop می زند.وقت Cpu را تلف می کند.
2- Blocked :به فرآیند هایی که منتظرند CPU را داوطلبانه پس می دهد.
نکته مهم 1: رفتن فرآیند از Blocked به Running غلط است چون اگر منابع را دریافت نمود Ready می شود.
نکته مهم 2: رفتن از حالت Ready به حالت Block غلط است . فرآیند Ready در صورتی Block می شود که اول اجرا شود (Running) ، تا برسد به جایی که نیاز به منبع دارد.
نکته 3: از حالت Ready به حالت Running امکان پذیر است یعنی زمانبند Scheduler ) ) تصمیم می گیرد که Ready به Running وارد شود یعنی CPU می دهد که اصطلا حا ٌ Dispatch می گویند.
از نظر تننباوم
نظر ویلیام استالینگ
3- فرآیند در وضعیت آماده و معلق ( Suspend Ready ) فقرار می گیرد اگر حافظه اصلی از آن گرفته شود و بر روی حافظه ثانوی قرار گیرد و بهمحض با ر شدن در حافظه اصلی در وضعیت آماده قرار گیرد.
4- فرآیند در وضعیت مسدود و معلق(Suspend Wait): قرار می گیرد اگر در حافظه ثانوی قرار گیرد و منتظر حادثه ایی باشد.
نحوه تبدیل وضعیت فرآیند
اختصاص یافتن پردازنده به اولین فرآیند در لیست فرآیند های آماده را توزیع ( Dispatch) می نامند. این عمل توسط بخشی از سیستم به نام توزیع کننده ( Dispatcher) انجام میگیرد.
Time Run Out :برای جلوگیری از اینکه فرآیندی سیستم را منحصراٌ به خود اختصاص می دهد، سیستم عامل از یک تایمر استفاده می نماید. این تایمر به فاصله زمانی معین (برش زمانی ) تنظیم می گردد. چنانچه فرآیند به طور داو طلبانه قبل از سپری شدن فاصله زمانی ، پردازش را آزاد نکند، این تایمر ، وقفه خارجی را تولید می کند که سبب می شود تا سیستم عامل کنترل را بدست گیرد.سیستم در اینصورت فرآیند در حال اجرا را به حالت آماده تبدیل می نماید.
DISPATCH : Ready--> Running
Time Run Out : Running --> Ready
Wait : Running ---> Block
Wake up : Block --->Ready
Suspend : Block ---->Suspend Wait
Suspend : Ready--->suspend Ready
سئوال : اولویت با Ready یا Blocked است؟
به دلیل کمبود حافظه فرآیندی که Blocked است به دیسک منتقل می کنیم و اولویت به برنامه Ready داده می شود.
نکته : در وضعیت Ready و Blocked صف وجو دارد..
Suspend
: وقتی فضای حافظه اصلی کم می شود . تمام تصویر فرآیند روی دیسک است منتقل می شود یعنی عمل را Swap out انجام می شود. چون حافظه اصلی محدود است از Suspend استفاده می شود. که زمانبند میان مدت این کار را انجام می دهد.
نکته 1:فرآیندی که Block است اگر Swap out کنیمSuspend Block می شود.. CPU) که ندارد روی دیسک هم منتقل می شود)
نکته 2: اگر درحافظه اصلی جا کم داشته باشیم و همه فرآیند ها هم Ready هستند باید بعضی از Ready ها را روی دیسک ببریم.که Suspend Ready گفته می شود.
نکته 3: فرآیندی که Suspend Ready است هرگز Ready نمی شود. بلکه باید RUN شود. بعد به حالت Ready
برود.
نکته 4: از حالت Suspend Blocked به حالت blocked بسیار نادر است اگر فرآیندی آماده اجرا نیست ودر حافظه اصلی هم قرار ندارد، آوردن آن به حافظه چه امتیازی دارد؟ممکن است فرآیندی پایان یابد و مقداری از حافظه اصلی آزاد شود . فرآیندی در صف Blocked Wait وجود دارد که اولویتش از تمام فرآیند های صف Suspend Ready بیشتر است . آوردن یک فرآیند مسدود به حافظه نسبت به فرآیند آماده ، معقول به نظر می رسد.
نکته 5: از حالت blocked wait به حالت suspend Ready : موقعی یک فرآیند مسدود و معلق به حالت آماده و معلق تغییر حالت می دهد که حادثه ای که منتظرش بوده است ، اتفاق افتاده است.
ادامه جلسه بعد...
علی یارتون
سئوال:{معماری کامپیوتر موریس مانو}
شباهت سیستم های چند پردازنده ای و چند کامپیوتری چیست؟
هر دو آنها عملیات همزمان را پشتیبانی می کنند.
تفاوت سیستم های چند پردازنده ای و چند کامپیوتری چیست؟
شبکه از چندین کامپیوتر مستقل تشکیل می شود که می توانند با هم ار تباط داشته یا نداشته با شند .
یک سیستم چند پردازنده توسط یک سیستم عامل کنترل می شود تا اتصالات بین پردازشگرها بر قار شده و در نتیجه تمام اجزاء سیستم در حل یک مسئله همکاری نمایند.
فرق بین فرآیند و برنامه چیست؟{60 تننباوم }
مثال:
دانشمند کامپیوتری را مجسم کنید که می خواهد برای دخترش یک کیک تولد درست کند. او دستوالعمل پخت کیک و مواد لازم از قبیل آرد ، تخم مرغ ، شکر ، کمی وانیل ،... را در اختیار دارد. در اینجا دستورالعمل پخت کیک یک “ برنامه “
(الگوریتمی که به زبان مناسب بیان شده است ) است. دانشمند هم در حکم CPU است و مواد لازم داد ه های ورودی هستند .
فرآیند فعالیتی است که شامل خواندن از ر وی دستور العمل ،آوردن مواد لازم و پختن کیک می باشد.
حال تصور کنید که پسر این دانشمند باشتاب وارد می شود و می گوید که یک زنبور او گزیده است . دانشمند به خاطر می سپارد که تا کجای کار پیش رفته است . و از روی دستوالعمل چه کارهایی را انجام داده و الان بر سر کدام دستور العمل (وضعیت فرآیند جاری ذخیره می شود) . سپس کتاب کمکهای اولیه را بر می دارد و بر اساس آن کار های لازم را برای پسرش انجام می دهد. در اینجا مشاهده می شود CPU (دانشمند) از یک فرآیند (پختن کیک ) به فرآیند دیگر با اولویت بالاتر (رسیدگی به پسرش) سوئیچ میکند که البته هر کدام برنامه خاص خود را دارد (دستوالعمل پخت کیک و کتاب کمک های اولیه ).دانشمند وقتی که مداوای پسرش را به اتمام رساند، دوباره به سر کار قبلی خود بر می گردد. و از همان وضعیتی که کا ر را رها کرده بود ، دوباره شروع به کار می کند. در اینجا یکنکته کلیدی وجود دارد و آن اینست که یک فرآیند ، به نوعی فعالیت است . این فرآیند شامل یک برنامه ، ورودی ، خروجی ، و یک حالت (وضعیت) می باشد.
فرق بین Multi Program و Multi Task چیست؟
سئوال 1: در multi program چه موقع عمل switching انجام می گیرد؟ وقت I/O
سئوال 2: در multi task چه موقع عمل switching انجام می گیرد؟ در یک برهه زمانی یعنی فقط منتظر عمل I/O
نمی ماند اگر به I/O بر خورد کند switch می کند. ولی اگر به I/O بر خورد نکند و آن برهه زمانی بگذرد بازهم switch می کند. یعنی پردازنده از آن گرفته می شود.
نکته1: یک سیستم عامل میتواند چند برنام ه(Multi program) باشد ولی چند وظیفه ای(Multi Task) نباشد. مثل ویندوز 1و2و3
چون فقط به I/O برخورد می کردند پردازنده Switch می کرد.
نکته2: یک سیستم عامل که هم چند برنامه(Multi program) و هم چند وظیفه ای(Multi Task) باشد. مثل ویندوز 95و98
چون اگر چند پنجره را باز کنید می بینید همه پنجره ها در حال فعلیت هستند. یعنی پردازنده ما بین آنها Switch می کند .
نکته 3: اشتراک زمانی (Time Sharing ) وقتی است که سیستم چند کاربره(Multi User) باشد.
مثال : وینوز 2000 و time sharing و multi task است. N تا کاربر بتوانند از طریق شبکه به یک سیستم وصل شوند و کاملا منابع اش را به اشتراک بگذارد. در ویندوز NT - n تا کاربر به آن سیستم می یابند و از منابع سیستم استفاده می کنند.
نکته 4: در وینروز95و 98 همه منابع غیر از حافظه و پردازنده را می توانیم به اشتراک بگذاریم.ولی در وینروز NT و ویندوز 2000و یونیکس همه منابع را می توانیم به اشتراک بگذاریم.
دو نکته ضرورت چند وظیفه ای بودن را روی کامپیوتر های شخصی موجب شده اند.{استالینگ 87}
1- با افزایش سرعت و ظرفیت ریز پردازند ه ها و با حمایت از حافظه مجازی ، کاربر ده پیچیده تر و مرتبتر شده اند .
برای مثال ممکن است کاربران بخواهند یک برنامه ، word ، یک برنامه Excel ، یک برنامه Autocad
را به طور همزمان برای ایجاد یک سند به کار برند.
1- باز کردن برنامه Autocad
2- رسم شکل و ذخیره آن
3- بستن برنامه Autocad
4- بازکردن Word
5- درج شکل در محل مناسب
در محیط چند وظیفه ای کاربر هر یک از کاربرد های مورد نیاز خود را باز کرده و به صورت باز رها می کند . و
اطلا عات به سادگی می تواند بین چند کاربرد حرکت کند.
ولی در تک وظیفه ای اگر تغییری در شکل لازم باشد کاربر باید برنامهWord را ببندد، برنامه Autocad را باز کند ، شکل را ویرایش و ذخیره نماید ، برنامه Autocad راببندد، برنامه Wordرا باز کند ودر نهایت شکل ویرایش شده را درج کند . که خیلی ملال آور است.
2- برای عملکر چند وظیفه ای ، رشد به کار گیری کامپیوتر به صورت مشتری / خدمتگزار(Client/Server) می باشد. در این دید گاه یک کامپیوتر شخصی (Client ) و یک سیستم میزبان(Server) مشتر کا، برای انجام یک کاربرد،خاص، بک کار گرفته شده اند. این تر تیب در یک کاربرد ممکن است یک یا چند کامپیوتر شخصی و یک یا چند دستگاه خدمتگزار (Client ) در گیر باشند.
برای هر کدام از وقفه ها ما سرویس روتین مربوط به خودش را داریم .
تعویض فرآیند: زمانیکه فرآیند در حال اجرا با وقفه مواجه می شود و سیستم عامل فرآیند دیگری را برای اجرا در نظر می گیرد و کنترل را به آن منتقل می کند.ولی چند نکته طراحی مطرح می شود . اولاٌ ، چه حادثهای موجب شروع یک تعویض می گردد؟ دوماٌ تفاوت بین تعویض متن(Context Switching) و تعویض فرآیند context Process)چیست؟ سوماٌ برای تعویض فرآیند سیستم عامل چه اعمالی را روی ساختمان داده ایی که تحت کنترل دارد، باید انجام دهد؟
ادامه جلسه بعد..
علی یارتون
سیستم های چند پردازندهای Multi processing
کامپیوترها میتوانند به جای یک CPU چندین CPU داشته باشند که در اینصورت به آنها سیستم multiprocessing میگویند.جهت استفاده از این سیستمهای نیاز به یک سیستم عامل خاص میباشد که بتواند چندین برنامه یانخهای یک فرآیند ) را به صورت موازی واقعی روی آنها اجراء کند .)
نکته : سیستم عامل multitasking برای اجراء چند نخ بر روی یک CPU و سیستم عامل multiprocessing برای اجرای چند نخ بر روی
چند CPU به کار میروند.
برای جلوگیری از ایجاد مزاحمت ناشی از استفاده منبع مشترک به وسیله چندین پردازنده ، باید اولویتی در تخصص منابع به پردازنده وجود داشته باشد . این وظیفه به سیستم عامل محول شده است. در طراحی سیستم عامل برای چندین پردازنده ها ، از سه سازمان استفاده شده است .{معمار –مویس مانو }
-1 سیستم حاکم تابع( Master Slave Mode)
-2سیستم عامل توزیع شده با ارتباط Loosely Coupled System
-3 سیستم عامل توزیع شده با ارتباط Tightly coupled System
پردازنده موازی(MIMD)
حافظه توزیعی Loosely Coupled System) ) حافظه مشترک) Tightly coupled System)
خوشه (چند کامپیوتری)
.
متقارن (SMP) نامتقارن( /slave Master)
1-در روش حاکم و تابع(Master Slave Mode ) ، همیشه یک پردازنده ، که حاکم (Master ) نامیده می شود، عملیات سیستم عامل را اجرا می کند . پردازنده های دیگر بمانند یک تابع (Slave)عمل کرده و عملیات سیستم عامل را اجرا نمی کنند. اگر پردازنده تابع(Slave) به سرویس سیستم عامل نیاز داشته باشد . باید آن را با وقفه دادن به حاکم (Master)تقاضا کند و تا وقفه برنامه جاری منتظر بماند.
سیستم های توزیع شده در دو دسته قرار می گیرند:{کتاب مهندسی کامپوتر- نگارش سمیع - کاجی}
الف- سیستم های با ارتباط محکم (Tightly coupled System): در این سیستم ها پردازنده ها دارای پالس ساعت یکسان و حافظه مشترک هستند . اجرای کار در آ نها مشکل بوده ولی سرعت اجرا بالاست.
گاهی اوقات به سیستمهای چند پردازندهای ,سیستمهای Tightly Coupled یا ارتباط محکم نیز گفته میشود. چرا که پردازندهها کلاک (Clock), گذرگاه و همچنین حافظه مشترکی دارند روال های سیستم عامل بین پردازنده های موجود توزیع شده اند. با این وجود ، هر تابع خاص از سیستم عامل در هر زمان فقط به یک پردازنده اختصاص داده می شود . این نوع سازمان دهی ، سیستم عامل شناور (Floating Operating System ) خوانده می شود زیرا روال ها از یک پردازنده به پردازنده دیگر شناورند و ممکن است اجرای روال ها در زمان های مختلف به عهده پردازنده های مختلف باشد.{معماری کامپیوتر موریس مانو }
سیستم عامل توزیع شده در یک محیط شبکهای اجراء میشود. در این سیستم قسمتهای مختلف برنامه کاربر بدون آنکه خود او متوجه شود میتوانند همزمان در چند کامپیوتر مجزا اجراء شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر بر گردند.
کاربران نباید از این موضوع باخبر شوند که برنامه آنها در کجا به اجراء در میآید و یا فایلهای آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد. به عبارتی دیگر سیستم باید از دید کاربر شفاف باشد و هرچیز را با نام آن فراخوانی کند و کاری به آدرس آن نداشته باشد.
ب-سیستم هایی با ارتباط سست(Loosely Coupled System ): در این سیستم ها تعدادی پردازنده با خطوط ارتباطی مناسب وجود دارند و هر پردازنده دارای پالس ساعت و حافظه مستقل است و سرعت اجرا پائین می باشد . به سیستم های توزیع شده گاهی اوقات سیستمهای Loosely Coupled یا ارتباط ضعیف نیز میگویند,چرا که هر پردازنده کلاک و حافظه مستقلی دارد . پردازندهها از طریق خطوط مخابراتی مختلفی مثل گذرگاههای سریع یا خطوط تلفن ارتباط دارند.
هر پردازنده می تواند روالهایی از سیستم عامل را که به آنها نیاز دارد اجرا کند . این سازمان برای سیستم های با کوپل سست (Lossely Coupled ) که هر پردازنده ممکن است نسخه کامل از سیستم عامل خود را داشته باشد بیشتر مناسب است.
یکی از مزایای مهم سیستمهای توزیع شده سرعت بالای اجرای برنامههاست چرا که یک برنامه همزمان میتواند از چندین کامپیوتر برای اجراء شدنش استفاده کند.
همچنین به علت توزیع شدن اطلاعات, بانکهای اطلاعاتی حجیم میتوانند روی یکسری کامپیوترهای شبکه شده قرار بگیرند. و لازم نیست که همه اطلاعات به یک کامپیوتر مرکزی فرستاده شود(که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدر میرود).
به علت تأخیرهای انتقال در شبکه و نویزهای احتمالی در خطوط انتقالی قابلیت اعتماد اجرای یک برنامه دریک سیستم تنها,بیشتر از قابلیت اجرای آن دریک سیستم توزیع شده است .
همچنین درسیستم توزیع شده اگر یکی از کامپیوترهایی که وظیفه اصلی برنامه جاری را برعهده دارد خراب شود کل عمل سیستم مختل خواهد شد . از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد ویکی از کامپیوترها خراب شود, دادهها را میتوان از کامپیوترهای دیگر بازیابی کرد از این نظر امنیت افزایش مییابد.
سیستم های توزیع شده به دلیل افزایش سرعت اجرا ، اشتراک منابع ، افزایش قابلیت اطمینان و ایجاد ارتباط بین سیستم های مختلف ، مورد استفاده قرار می گیرند .
در سیستم چند پردازندهای،CPU ها باید بتواند از حافظه , امکانات ورودی و خروجی و گذرگاه Bus سیستم به صورت اشتراکی استفاده کنند .مزایای این سیستمهای عبارتند از :
• زیاد شدن توان عملیاتی (throughput) .منظور از throughput تعداد کارهایی است که در یک واحد زمانی تمام میشوند. بدیهی است هر چقدر تعداد پردازندهها بیشتر باشد تعداد کارهای تمام شده در یک پریود زمانی نیز بیشتر خواهد بود. البته این نسبت خطی نیست , مثلا اگر تعداد پردازندهها n باشد سرعت اجراء برنامهها nبرابر نمیشود چرا که بخشی از وقت پردازندهها جهت مسائل کنترلی و امنیتی وسوئیچ کردنها به هدر میرود.
• صرفه جویی در هزینهها , از آنجا که پردازندهها منابع تغذیه , دیسکها , حافظهها و ادوات جانبی را به صورت مشترک استفاده میکنند در هزینههای سخت افزاری صرفهجویی میشود.
• تحمل پذیری در برابر خطا(fault-tolerant)سیستم های مالتی پروسسور قابلیت اعتماد را افزایش میدهند چرا که خرابی یک CPU سبب توقف سیستم نمیشود بلکه تنها سبب کند شدن آن خواهدشد .استمرار عمل با وجود خرابی نیازمند مکانیزمی است که اجازه دهد خرابی جستوجو شده , تشخیص داده شده و در صورت امکان اصلاح شود (یا کنار گذاشته شود). این توانایی به ادامه سرویس , متناسب با سطح بقای سخت افزار ,تنزل مطبوع یا graceful degradationنامیده میشود.
سیستمهای عاملهای چند پردازندهای به دو دسته کلی متقارن و نامتقارن تقسیم میشوند.:
در سیستم چند پردازندهای نامتقارن (Asymmetric Multi Processing = ASMP) یا Master/ Slave یک پردازنده جهت اجراء سیستم عامل و پردازندههای دیگر جهت اجرای برنامههای کاربران استفاده میشود. از آنجا که کد سیستم عامل تنها روی یک پروسسور اجراء میشود, ساخت این نوع سیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازندهای به دست میآید.
این نوع سیستم عاملها برای اجراء روی سخت افزارهای نامتقارن مناسب هستند, مانند کمک پردازنده و پردازندهای که به هم متصل هستند یا دو پردازندهای که از تمام حافظهموجود مشترکا" استفاده نمیکنند . یکی از معایب سیستم عامل نامتقارن غیر قابل حمل بودن (non-portable) آن است . یعنی برای سخت افزارهای مختلف باید سیستم عاملهای مختلفی نوشته شود چرا که نامتقارنی میتواند حالات مختلف داشته باشد.
در سیستم چند پردازندهای متقارن(symmetric Multi Processing = ASMP) سیستم عامل میتواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازندهها همزمان اجراء شود. در این حالت حافظه بین تمام آنها مشترک میباشد. تمام پردازندهها اعمال یکسانی را میتوانند انجام دهند. سیستم متقارن از چند جنبه نسبت به نوع نامتقارن برتری دارد:
• از آنجا که سیستم عامل خود یک پردازش سنگین است اگر فقط روی یک CPU ها اجراء شود باعث میگردد که آن پردازنده همواره بار سنگینی داشته باشد, در حالیکه احتمالاً پردازندههای دیگر بی کار هستند لذا اجراء سیستم عامل روی چند پردازنده باعث متعادل شدن (balancing) بار سیستم میشود.
• در سیستم نامتقارن اگر پردازنده اجراء کننده سیستم عامل خراب شود کل سیستم خراب میشود ولی در سیستم متقارن از این نظر امینت بیشتر است چرا که اگر یک پردازنده از کار بیفتد سیستم عامل میتواند روی پردازندههای دیگر اجراء شود.
• بر عکس سیستم عامل نامتقارن , سیستم عامل قابل حمل( portable) بر روی سیستم های سخت افزاری مختلف است .
سیستم عامل SUNOS ورژن 4 از نوع نامتقارن و سیستم عامل Solaris2 ورژن و همچنین windows NTاز نوع متقارن میباشند.
وجود پردازندههای متعدد از دید کاربر مخفی است و زمانبندی نخها (Thread ) یا فرآیندها (process) روی هر یک از پردازندهها به عهده سیستم عامل است .
گرچه multithreadingو multiprocessingامکانات مستقلی هستند ولی معمولاً با هم پیاده سازی میشوند. حتی در یک ماشین تک پردازندهای , چند نخی کارایی را افزایش میدهد. همچنین ماشین چند پردازندهای حتی برای فرآیندهای غیر نخی هم کارآمد است .
/Slave )
ادامه جلسه بعد..
علی یارتون
تفاوت Buffering و Spooling چیست؟
1-بافر کردن ( Buffering)، امکان همپوشانی ( همزمانی ) عمل I/O یک کار را با عملیات پردازش همان کار بوجود می آورد.در حالیکه spooling امکان همزمانی پردازش ورودی –خروجی چندین کار رابا یکدیگر فراهم می کند.
2- هر Spooling الزاما بافر دارد ولی بافر Spooling ندارد. .
سیستم Spooling راه حلی برای کار کرد ن با دستگاه های I/O انحصاری ، در یک سیستم چند برنامگی است. یک دستگاه Spool شده نوعی را در نظر بگیرید: یک چاپگر هر چند از نظر تکنیکی آسان خواهد بود که به هر فرآیند کاربر اجازه دهیم که فایل مخصوص کاراکتر ی را برای چاپگر باز کند، ولی فرض کنید که فرآیند آن را باز کند و برای ساعت ها کار نکند، در این حالت هیچ یک از دیگر فرآیند ها نیز قادر به چاپ کردن نخواهند بود.به جای این روش کاری که انجام گرفته است ، ایجاد یک فرآیند ویژ ه می باشد که شبح (Deamon)نامیده می شود و یک فهرست مخصوص که فهرست Spooling نامیده می شود.
برای چاپ کردن یک فایل ، ابتدا یک فرآیند تمامی فایل را برای چاپ شدن ایجاد می نماید وآن را در فهرست Spooling قرار می دهد. چاپ فایل های درون این فهرست بر عهده شبح است که تنها فرآیندی است که اجازه استفاده از فایل مخصوص چاپگر را دارد . با حفاظت فایل مخصوص از دسترسی مستقیم کاربر، مسئله باز نگهداشتن طو لانی و بیهوده آن نیز حل می شود.
Spooling: تنها در چاپگر به کار نمی رود ، بلکه در وضعیت های دیگری نیز استفاده می شود . برای مثال ، انتقال فایل از طریق یک شبکه معمولاً توسط یک شبح شبکه ای انجام می شود .برای ارسال فایل به مقصد ی مشخص ، کاربر آن را در فهرست Spooling شبکه قرار می دهد. سپس شبح شبکه آن را خارج ساخته و منتقل می کند.
نکته:
یک کاربرد و استفاده ویژه از انتقال فایل Spool شده ، سیستم پست الکترونیکی (Email) اینترنت می باشد. این شبکه شامل میلیونها ماشین در سراسر جهان است که با استفاده از شبکه های کامیوتری با یکدیگر ارتباط بر قار می کنند. برای ارسال Mail به شخصی ، باید برنامه ای مانند را صدا بزنید که نامه را جهت ارسال شدن می پذیرد و سپس آن را به صورت امانت در فهرست Spooling قرار می دهد تا بعداً ار سال شود. تمام سیستم Mail در خارج از سیستم عامل اجرا می شود.{تننباو م 187}
Spooling در تمام سیستم عامل ها قابل استفاده است.
سیستم های اشتراک زمانی(time sharing)
این سیستمها از اوایل سالهای 1970 در نسل سوم کامپیوترها معمول شدند. سیستم اشتراک زمانی در واقع تعمیم سیستم چند برنامگی است .
در سیستمهای چند برنامگی کاربر ارتباطی با کامپیوتر نداشت و خطایابی برنامهها مشکل بود چرا که زمان برگشت نسبتاً طولانی اجازه آزمایش کردنهای متعدد را نمیداد. در سیستم اشتراک زمانی کاربر به کمک دو ترمینال (Terminal) که شامل کی بوردبرای ورودی و مونیتور برای خروجی است با کامپیوتر به صورت محاورهای (interactive) رابطه بر قرار میسازد .
کاربر مستقیماً دستوراتی را وارد کرده و پاسخ سریع آن را روی مونیتور دریافت میکند. در این سیستمها چندین کاربر به کمک ترمینالهایی که به کامپیوتر وصل است همزمان میتوانند از آن استفاده کنند .
در سیستم اشتراک زمانی فقط یک پردازنده وجود دارد که توسط مکانیزمهای زمانبندی بین برنامههای مختلف کاربرها با سرعت زیاد (مثلاً در حد میلی ثانیه) سوئیچ میشودو بنابراین هر کاربر تصور میکند کل کامپیوتر در اختیار اوست .در اینجا تأکید بر روی میزان عملکرد کاربر است یعنی هدف فراهم کردن وسایل مناسب برای تولید ساده نرم افزار و راحتی کاربرد میباشد و نه بالا بردن میزان کاربرد منابع ماشین .
کاربر میتواند در هر زمان دلخواه برنامه خود را آغاز یا متوقف سازد و یا برنامه را به صورت قدم به قدم اجراء و اشکال زدایی (debug) کند . سیستمهای دستهای برای اجرای برنامههای بزرگ که نیاز محاورهای کمی دارند مناسب است ولی سیستمهای اشتراک زمانی برای مواردی که زمان پاسخ کوتاه لازم است , استفاده میشوند.
در زمانی که کاربری در حال تایپ برنامهاش یا فکر کردن روی خطاهای برنامه اش میباشدCPU به برنامه کاربر دیگری اختصاص یافته تا آن را اجراء کند
.
نکته1 : سیستم های اشتراک زمانی عملا فراگیر نشد تا اینکه استفاد ه از سخت افزار لازم برای حفاظت در کامپیوتر های نسل سوم رایج شد.{تننباوم}}
نکته 2: در سیستم های اشتراک زمانی اندازه برهه زمانی (Quantum ) را سیستم عامل معین می کند. همه جا مدیریت با سیستم عامل است . هیچ اتفاقی را سیستم عامل نمی فهمد بلکه فقط از طریق وقفه
(interupt ) می فهمد.
نکته 3: CPU ، Timer ندارد بلکه Timer در روی مادر برد است یعنی Intrupt Timer به CPU می دهد و بعد برای اجرا سیستم عامل وارد عمل می شود.
نکته 4: در سیستم های محاورهای(interactive) اولین کاری که انجام می دهیم عمل Login است و گرنه اجازه ورود به سیستم را نمی دهد. ابتدا UserID و Password را چک میکند. بعد به کاربر یک Token می دهد این Token
می گوید از چه ثبات هایی می توانی استفاده کنی و به کجا ها دسترسی داشته باشی مجوز صادر می کند.
زمانبند کار دائماٌ کنترل می کند که تعداد کاربران محاورهای چند تاست ؟ اگر از تعداد مجاز بیشتر باشد جلوی ورود کاربران دیگر را می گیرد.
نسل چهارم (1980 تا کنون ) : کامپیوتر های شخصی
سال 1980 تاکنون که مدارات مجتمع با مقیاس بزرگ (Large Scale Integrated Circuit) ابداع شدند, به عنوان نسل چهارم کامپیوترها شناخته میشود. در این سالها کامپیوترهای شخصی با قیمتی ارزان و کارآیی بالا و محیط گرافیکی و محاورهای بسیار خوب به سرعت گسترش یافتند. سیستم عاملهای اولیه بر روی pcهامانند DOSفقط تک کاربره و تک برنامهای بودند.
ولی سیستم عاملهای امروزی آن مانند Windows NT خاصیتهای چند برنامگی ,چند کاربرته (multiuser) و شبکهای را دارا هستند. با توجه به هزینه اندک سخت افزار اهداف سیستم عامل در طول زمان تغییر کرده است وبرای PC ها به جای ماکزیمم کردن درصد استفاده CPU و وسایل جانبی , سیستم به سمت راحتی کاربر پیش میرود.
به تدریج ویژگیهای مهم سیستم عاملهای قدیمی در کامپیوترهای بزرگ (مانند محافظت حافظه , حافظه مجازی, محافظت فایلها ، همزمانی پردازشهاو...) بر روی سیستم های PC نیز پیاده سازی شده است .
هنگامی که کامپیوترها از طریق شبکه به هم وصل شوند. به آنها ایستگاههای کاری (Work stations) میگویند . در یک سیستم عامل شبکه , کاربران از وجود ماشین های مختلف در شبکه با خبرند. آنها میتوانند از دور وارد یک ماشین شوند و همچنین فایلهای یک ماشین را روی ماشین دیگر کپی کنند.
هر کامپیوتر سیستم عامل محلی خودش را اجراء میکندو کاربر یا کاربران محلی مخصوص به خود را دارد .
________________________________________
سیستم های بی درنگReal Time
یک سیستم بلا درنگ سیستمی است که درآن زمان نقش مهمی را ایفا می کند . نوعاٌ اگر یک یا چند دستگاه فیزیکی را از خارج کامپیوتر تحریکاتی ایجاد کنند کامپیوتر باید طی مدت زمانی معین در برابر آنها واکنش مناسب نشان دهد. مثل سیستم مانیتورینگ بخش آی سی یو بیمارستان ، سیستم خلبان اتوماتیک هواپیما و سیستم کنترل امن و مطمئن یک نیروگاه اتمی می باشد.{تننباوم 106}
سیستمهای بی درنگ معمولاً به عنوان یک کنترل کننده در یک کاربرد خاص استفاده میشوند. سیستم در این حالت میبایست در زمانی مشخص و معین حتماً جواب مورد نظر را بدهد .سیستمهای کنترل صنعتی, پزشکی , کنترل موشک و غیره از این دستهاند.
نکته :در سیستمهای بی درنگ زمان پاسخ باید سریع و تضمین شده باشد ولی در سیستم اشتراک زمانی مطلوبست که زمان پاسخ سریع باشند (ولی اجباری نیست).درسیستم دستهای هیچ محدودیت زمانی در نظر گرفته نمیشود.
در سیستمهای بی درنگ معمولاً وسایل ذخیره سازی ثانویه وجود ندارد و به جای آن از حافظه های ROM استفاده میشود. سیستم عاملهای پیشرفته نیز در این سیستمها وجود ندارند چرا که سیستم عامل کاربر را از سخت افزار جدا میکند و این جدا سازی باعث عدم قطعیت در زمان پاسخگویی میشود.
سیستم های بلدرنگ معمولاٌ به دو گروه تقسیم میشوند.
1-بلادرنگ سخت ( Hard Real Time )
2-بلادرنگ نرم (Soft Real Time )
سیستمهای بی درنگ با سیتسمهای اشتراک زمانی تناقض دارند لذا نمیتوانند هر دو توأماً وجود داشته باشند . به دلیل نیاز به پاسخ دهی سریع و تضمین شده سیستمهای بلادرنگ از حافظه مجازی و اشتراک زمانی استفاده نمیکنند به این سیستمها «بی درنگ سخت»(Hard Real Time) نیز گفته میشود.
در سیستم بلادرنگ نرم بعضی مواقع آماده نشدن پاسخ در مهلت زمانی تعیین شده قابل تحمل است.
در سیستمهای «بی درنگ نرم» یک وظیفه بی درنگ بحرانی, نسبت به سایر وظایف الویت دارد و تا پایان تکمیل شدنش این ارجحیت را دارا خواهد بود . از آنجا که این سیستمها مهلت زمانی(deadline) را پشتیبانی نمیکنند استفاده آنها در کنترل صنعتی ریسک آور است . هر چند که این سیستمهای بی درنگ نرم میبایست پاسخی سریع داشته باشند ولی مساله پاسخ دهی به حادی سیستمهای بی درنگ سخت نمیباشد.
از کاربردهای سیستم بی درنگ نرم میتوان رزرواسیون شرکتهای هواپیمایی ,چند رسانهای (multimedia) واقعیت مجازی (Virtual reality) را نام برد. این سیستمها به ویژگیهای سیستم عاملهای پیشرفته (که توسط بیدرنگ سخت حمایت نمیشوند)نیازمندند . بعضی از نسخههای UNIX مانند solaris 2 خاصیت بیدرنگ نرم را دارا میباشند.
در برخی کاربردها (مثل کنترل صنعتی)در کامپیوترها از سیستم عامل استفاده نمیشود. از آنجا که در سیستمهای کنترل صنعتی برنامه میبایست در اسرع وقت در مقابل یک اتفاق , از خود عکس العمل نشان دهد , وجود واسطه سیستم عامل باعث کند شدن مراحل میگردد.
ادامه جلسه بعد...
علی یارتون.
ویژگی سیستم عامل نسل سوم :
1- بلا فاصله پس از ورود کارها به اتاق کامپیوتر ، می توانند کارتها را خوانده و به دیسک منتقل نمایند.
2- بنابراین هرگاه یک کار ، در حال اجرا به پایان می رسد ، سیستم عامل می تواند یک کار جدید را از روی دیسک برداشته و در یک بخش خالی شده از حافظه بار نماید و سپس آنرا ، به اجرا در آورد . این تکنیک که Spooling نامیده می شود.
3- برای خروجی نیز ، به کار گرفته شده با SPOOLING دیگر نیازی به 1401
و نوار گردان های اضافی و حمل نوارها نبود.{تننباوم }
سیستم های چند برنامه ایMulti programming
در نسل سوم کامپیوترها (80-1965) از مدارات مجتمع (Integrated Circuit=IC ) برای ساخت کامپیوترها استفاده شد. به طور کلی برنامهها را میتوان به دو دسته تقسیم کرد : یکی برنامه ها با تنگنای محاسباتی
( CPU boundیا CPU Limiter ( مانند محاسبات علمی سنگین که بیشتر زمان کامپیوتر صرف محاسبات Cpu میشود ودیگری برنامه های تنگنای ( I/O Limited) I/O مانند برنامههای تجاری که بیشتر زمان کامپیوتر صرف ورود دادهها و خروج اطلاعات میشود.
یک اشکال مهم سیستم های دستهای این است که وقتی کار جاری برای تکمیل یک عملیات I/O مثلاً بر روی نوار گردان منتظر میشود. در این حال CPU بیکار میماند و مجبور است صبر کند تا عملیات I/Oبه اتمام برسد. در برنامه های CPU Limited این اتلاف وقت اندک است ولی در برنامه های I/O Limited ممکن است حدود 80تا90 درصد وقت CPU به هدر برود.
برای رفع این مشکل از تکنیک multiprogramming استفاده میشود. بدنی ترتیب که حافظه به چند قسمت تقسیم شده و در هر قسمت یک برنامه مجزا قرار داده میشود. وقتی که یک کار برای تکمیل عملیات I/O منتظر میماند, پردازنده به کار دیگری داده میشود. اگر تعداد کارهای موجود در حافظه کافی باشد میتوان CPU را تقریباً صد در صد مشغول نگه داشت .
البته نگهداری همزمان چند برنامه در حافظه نیاز به مدیریت خاص حافظه دارد تا برنامهها بر همدیگر اثر سوء نداشته باشند . لذا مدیریت حافظه بحث مهمی در سیستم عامل میباشد.
کدامیک از موارد زیر برای ایجاد یک سیستم چند برنامگی (Multi Programming ) کاملاً ضروری است؟
الف – وقفه ب-بافر ج- دیسک
چرا حتماً باید دیسک باشد ؟
چون باید Random Access باشد که Tape این توانایی را ندارد چون مراجعات مکرر و عقب و جلو کردن Tape کار بیهوده است.
بافر کردن (Buffering )
علیرغم استفاده از نوار های مغناطیسی بازهم عملیات ورودی و خروجی کند بود ه، بهروری سیستم را کاهش می دهد. با استفاده از حافظه ای بافر ، عملیات ورودی و خروجی یک برنامه با اجرای آن همزمان می شود..
الف- کارهای I/O bound (I/O Limited : کار هایی که بخش زیادی از اجرای آنها در ارتباط با دستگاهای ورودی / خروجی بوده و محاسبات زیادی ندار ند.
ب-کار های CPU bound (I/O Limited): کار هائی که حجم زیادی محاسبات داشته و بخش عمده نیاز آنها برای اجرا ، وقت پردازنده است.
تکنیک SPOOLING
یکی دیگر از ویژگیهای سیستم عامل نسل سوم Spooling یا On Line Spooling) )ا ست که معمولاً همراه چند برنامه گی استفاده میشود. این کلمه مخفف عبارت ( Simultaneous Peripheral Operation onLine ) میباشد. در این سیستم به جای آنکه کارتها از دستگاه کارت خوان مستقیماً وارد حافظه گردند و توسط CPU پردازش شوند ابتدا کاراکتر به کاراکتر در بافری در حافظه قرار گرفته و سپس به صورت بلوکی بر روی دیسک نوشته میشود.
وقتیکه برنامه کاربر اجراء میشود و از سیستم عامل تقاضای ورودی میکند, اطلاعات ورودی به صورت بلوکی و با سرعت زیاد از دیسک خوانده میشوند. به طور مشابه هنگامی که برنامه برای خروجی چاپگر را احضار میکند, خط خروجی در یک بافر کپی شده و سپس در دیسک نوشته میشود. پس اطلاعات خروجی از دیسک بر اساس ترتیب و اولویت در چاپگر چاپ میشوند.
در واقع اسپولینگ عمل I\O یک کار را با عمل محاسباتی کار دیگر روی هم میاندازد (overlap) . در سیستم اسپولینگ د رحالیکه ورودی یک کار از دستگاه ورودی خوانده میشود,کار دیگری در حال چاپ شدن است , در همین بین حتی کار دیگری میتواند در حال پردازش و اجراء باشد . در اسپولینگ برنامه عملیات ورودی و خروجی اش را متناسب با سرعت دیسک (که سریع است) انجام میدهد و نه متناسب با سرعت کارتخوان یا چاپگر (که خیلی کند هستند ).
بنابراین سیستم مذکور باعث استفاده بهینه از CPU و سایل I\O میشود و سرعت عمل را بالا میبرد. در این سیستم دیگر نیازی به کامپیوترهای 1401,نوار گردانهای اضافی و حمل نوارها (مانند سیستمهای دستهای )نداریم.
سه مکانیزم برای پیاده سازی :Spooling
1- بافر
2-دیسک
3- وقفه(Interupt)
بلوک دیاگرام یک تکنیک اسپولینگ میتواند به صورت زیر باشد:
1-سیستم ورودی کاراکترهایی که توسط کارتخوان وارد میشود را در بلوکهایی جمع آوری کرده وبه کمک مدیر دیسک این بلوکها را بر روی دیسک مینویسد . درانتهای هر مدرک ورودی اطلاعاتی راجع به آن فرآیند (مانند محل آن بر روی دیسک , اولویت ,اسم استفاده کننده ) به قسمت زمانبند کار فرستاده میشود.
2-زمانبند کار (Job scheduler) این زمانبند یک لیست از کارهای موجود در ماشین و اطلاعات لازم در مورد مدرک ورودی مورد نیاز هر یک را نگه میدارد. به این لیست انبار کار یا Jobpoolیا ـJoblist نیز گفته میشود. زمانبند کار به پردازنده کار میگوید که کدام کار بعدی را اجرا کند. برای این منظور اطلاعاتی در مورد محل کار و مدرک ورودی آن بر روی دیسک را به پردازنده کار میدهد . همچنین اگر کارهای متعددی منتظر ورود به حافظه باشند و فضای کافی برای همگی در دسترس نباشد , زمانبند کار تعدادی از آنها را انتخاب کرده و به حافظه میآورد.
3-پردازنده کار (Job processor) کار داده شده را اجراء میکند. این پردازنده محل کامپایلرها و سایر نرم افزارهای سیستم را بر روی دیسک میداند. هنگام اجراء پردازنده کار خروجی های خود را به صورت بلوکی بر روی دیسک مینویسد و مدارک خروجی را تشکیل میدهد . پردازنده کار اطلاعاتی راجع به محل و اولویت مدارک خروجی به زمانبند خروجی میدهد.
4-زمانبند خروجی (output scheduler) لیستی از مدارکی که باید چاپ شود را نگه میدارد. وقتی که چاپگر آزاد شد , این زمانبند مدرک بعدی را برای چاپ انتخاب کرده و محل مدراک بر روی دیسک را به سیستم خروجی میگوید.
-5-سیستم خروجی بلاکهای خروجی را از روی دیسک خوانده و کاراکتر به کاراکتر (یا خط به خط)آنها را به چاپگر میفرستد.
6-مدیر دیسک (Disk Manager) که وظایف خواندن و نوشتن یک بلاک بر دیسک , تخصیص یک بلاک خالی روی دیسک و برگرداندن یک بلاک به مجموعه فضای آزاد دیسک را بر عهده دارد. در خواستهای مربوطه به دیسک در یک صف به نام
(Disk Transfer Queue) DTQ ذخیره میگردد.
البته هر سیستم اسپولینگ یک هماهنگ کننده(Coordinator) دارد که مسئول زمانبندی پردازش های سیستم و فراهم کردن عملیاتی که جهت همگام کردن بکار میآیند میباشد. این عملیات توسط دو روال انجام میپذیرد
ادامه جلسه بعد...
علی یارتون
تاریخچه سیستم عامل
اولین کامپیوتر رقمی واقعی توسط یک ریا ضیدان انگلیسی به نام چارلز بابیج ( charles babbage ) 1871-1792 طراحی شده است با بیج بیشتر عمر و ثروت خود را برای ساختن موتور تحلیلی صرف کرد ولی به علت اینکه فقط از مکانیک محض استفاده کرد به نتیجه دلخواه خود نرسید. موتور تحلیلی وی سیستم عامل نداشت بابیج فهمیده بود که موتور تحلیلی اش به نرم افزار نیاز دارد بنابر این ار خانم جوانی را به نام () استخدام نمود .
او دختر شاعر مشهور انگلیسی لرد بایرون بود که به عنوان اولین برنامه نویس جهان شناخته شد.{تننباوم}
1- نسل اول (1955-1945) :لامپ خلا و تخته های مدار های سوراخ دار
انداز ه ماشین ها بسیار بزرگ بود و به همراه دهها هزار لامپ خلا داخل اتاق ها را پر می کرد کلیه برنامه به طور مطلق به زبان ماشین نوشته می شد. و اغلب به وسیله سیم بندی تخته مدار های سوراخ دار و به منظور کنترل عملیات باید ماشین پایه ای ماشین انجام می شد.
زبانهای برنامه نویسی شناخته نشده بود ( حتی زبان اسمبلی ) و هیچ کس نامی از سیستم عامل نشنیده بود . اکثر برنامه ها مثل تهیه جداول سینوس و کسینوس بود. تننباوم}
برنامه ساز مستقیما با سخت افزار در تراکنش بود ، سیستم عاملی در کار نبود.
2- نسل دوم (1965-1955): ترانزیستو ر و سیستم های دسته ای
ظهور ترانزستور در اواسط دهه 1950 یک انقلاب بنیادی بود .
این ماشین ها در اتاق های مخصوص کامپیوتر با تهویه مطبوع مستقر می شود و گروهی از اپراتو رها ی حرفهای راهبری آن را بر عهده می گرفتند. برای اجرای یک کار(job) ، یک برنامه نوییس برنامه (به زبان فرترن یا اسمبلی )خود را بر روی کاغذ می نوشت سپس آنر بر روی کارت ها منگنه می کرد و یک دسته کارت را به اتاق کامپیوتر می آورد و به یکی از اپراتورها تحویل میداد.
در صورتیکه برنامه به مترجم فرترن نیاز داشت وی دسته کارت مترجم فرترن را نیز از داخل کمد فایل ها بر داشته و در دستگاه کارتخوان قرار می داد . هنگامیکه اپراتورها برای انجام این کار ها در اتاق ماشین را ه می رفتند ، مدت زمان زیادی از وقت کامپیوتر تلف می شد.
را ه حلی که به طور کلی پذیرفته شد ، سیستم های دسته ای ( Batch system ) بود.
ایده این روش این بو د که یک سبد پر از دسته کارتها در اتاق ورودی جمع آوری شود سپس کلیه آنها به وسیله دستگاه کارتخوان یک کامپیوتر کوچک و ارزان قیمت ها IBM 1401 خوانده شده و از طریق یک نوار گردان بر روی نوار مغناطیس ذخیره گردد .این
IBM 1401 برای محاسبات مناسب نبودند و از یک ماشین گران قیمت IBM 7094 کامپیوتر ها برای پردازش و محاسبات واقعی استفاده می شد.
پس از حدود یک ساعت که برای جمع آوری یک دسته از کارها برای نوار صرف می شد ، یک اپراتور نوار را از اتاق کامپیوتر می آورد و یکی از اپراتور ها تحویل می داد.
در صورتیکه برنامه به مترجم فرترن نیاز داشت . وی دسته کارت مترجم فرترن رانیز از داخل کمد فایل ها برداشته و در دستگاه کارتخوان قرار می داد . هنگامیکه اپراتور ها برای انجام این کارها در اتاق ماشین راه می رفتند ، مدت زمان زیادی از وقت کامپیوتر تلف می شد.
راه حلی که به طور کلی پذیرفته شد ، سیستم های دسته ای () بود. ایده این روش این بود که یک سبد پر از دسته کارتها در اتاق ورودی جمع آوری شود ، سپس کلیه آنها به وسیله دستگاه کارتخوان یک کامپیوتر کوچک و ارزان قیمت IBM 1401
خوانده شده و از طریق یک نوار گردان بر روی نوار مغناطیسی ذخیره گردد. این کامپیوتر ها () رای محاسبات مناسب نبودند و از یک ماشین گران قیمت (7094) برای پردازش و محاسبات واقعی استفاده می شود.
حدود یک ساعت طول مکیشد که یک دسته از کارها بر روی نوار ضبط شود پس از یک ساعت یک اپراتور نوار را از اتاق برداشته و به اتاق ماشین منتقل می کرد و درآنجا در یک نوار گردان قرار می داد. سپس یک برنامه مخصوص (سیستم عامل ) را بار می کرد تا اولین کار از روی نوار بخواند و اجرا نماید.
خروجی به جای چاپگر بر روی یک نوار دیگر نوشته می شد. پس از اتمام هر کار ، سیستم عامل به صورت خودکار ، کار بعدی را از نوار می خواند و شروع به اجرای آن می کرد . وقتی که تمامی دسته کار ها اجرا می شد ، اپراتور نوار های ورودی و خروجی را بر می داشت ، نوار ورودی را با دسته بعدی جایگزین کرده ، نوار خروجی را به ماشین 1401 منتقل میکرد تا عملیات چاپ به صورت OFF Line (به کامپیوتر اصلی متصل نیست ) انجام شو د.{تننباوم }
سیستم عامل در این گونه کامپیوتر ها بسیار ساده بود . کار اصلی آن ، انتقال از یک کار به کار دیگر بود. سیستم عامل همیشه در حافظه قرار داشت. {سیلبر شاتس}
ویژگی های سیستم عامل دسته ای :{ سیلبر شاتس }
1- کاربر با کار ی که در حال اجرا بود تعاملی نداشت.
2- درچنین محیطی CPU اغلب بیکار است چون سرعت دستگاه های I/O مکانیکی کمتر از سرعت دستگاه های الکترونیکی مثل CPU است. مثلا CPU در یک ثانیه هزاران دستورالعمل انجام می دهد. در حالکه دستگاه کارت خوان سریع در یک دقیق 1200 کارت را می خواند.در نتیجه تفاوت سرعت بین CPU و دستگاه های I/O بسیار زیاد است.
3 - تخصیص CPU در چند برنامه ای انحصاری(Non Preemptive ) است .
استفاده از فناوی دیسک ، موجب افزایش سرعت دستگاه های I/o شده است . به جای اینکه کارت ها از طریق کارت خوان به حافظه خوانده شوند . سپس کاربر پردازش شود کارت ها مستقیماً به دیسک خوانده میشوند .{سیلبر شاتس }
Job چیست؟
مجوعه ای از یک 1- برنامه ( program ) 2- داده ورودی (input data ) 3- دستوارت سیستم عامل(O.S Command )
JCL( Job Control Language ) یک زبان کنترل است.
ساختار یک کار نوعی در FSM
1-این ساختار بایک کارت $JOB شروع می شود. که مشخص کننده حداکثر زمان اجرا به دقیقه ، شماره حساب برای حسابداری هزینه ها و نام برنامه نویس می باشد.
$JOB , 10, 6610802, MARVIN TANENBAUM
2-سپس یک کارت$FORTRAN قرار دارد که به سیستم عامل اعلام می کند که کترجم فرترن را از روی نوار سیستم بار نماید.
3- سپس کارتهای برنامه ای که باید ترجمه شود قرار دارد و کارت$LOAD
به دنبال آن قرار گرفته است.این کارت سیستم عامل را ودار میکند که برنامه OBJECT (مستقیماً ترجمه شده ) را بار نماید
-4سپس نوبت به کارت $RUN می رسد که به سیستم عامل می گوید اجرای برنامه ها را به همراه داده هایش که در کارتهای بعدی قرار دارد، آغاز نماید.
-5در انتها کارت $End قرار گرفته است که نشان دهنده پایان کار است.
کامپیوتر های بزرگ نسل دوم بیشتر برای محاسبت مهندسی و علمی بکار می رفت . برنامه آنها بیشتر به زبان فرترن و اسمبلی نوشته می شد.
و معمولا از سیستم عامل FSM ( Fortran Monitor System ) و IBSYS (سیستم عامل IBM برای 7094) استفاده می شد.
3-نسل سو م (1980-1965):مدارات مجتمع و چند برنامگی
IBM سری 360 اولین خط تولید کامپیوتر های بزرگ بود که از مدارات مجتمع با مقیاس کوچک استفاده کرد بنابراین نسبت به کامپیوتر های نسل دوم که از ترانزیستور ها ی جداگانه ساخته می شود نسبت به کارایی از هزینه بالاتری برخوردار بود.
IBM یک سیستم عامل عظیم الجثه و بسیار پیچیده بود که این سیستم عامل از میلیون ها خط اسمبلی که توسط هزاران برنامه نویس نوشته شده است .
سیستم عامل OS/360 چندین تکنیک کلیدی جدید که در سیستم عامل های نسل دوم وجود نداشت
متداول نمود. شاید مهمترین این تکنیک ها ، چند برنامگی ( Multi Programming ) بود.
در محاسبات علمی سنگین تنگنای محاسباتی CPU_BOUND (Multi Limited) ،
I/O به ندرت به کار می رود.
اما در پردازش داده های تجارتی ، زمان انتظار I/O اغلب 80 تا 90 درصد کل زمان را به خود اختصاص می دهد. و CPU بیشتر بیکار است. برای حل مشکل ، حافظه را به چند تکه تقسیم بندی نماییم.
سیستم عامل
Job 1
Job 2
Job3
اگر چه سیستم های نسل سوم برای محاسبات علمی بزرگ و پردازش داده های تجازی مناسب بود ، ولی هنوز سیستم های دسته ای بودند.
مفاهیم سیستم عامل
به طور کلی نرم افزارهای کامپیوتر به دو گروه تقسیم میشوند:
1- یکی برنامههای سیستمی که عملیات کامپیوتر را مدیریت میکنند
2- دیگری برنامههای کاربردی .
سیستم عامل ( operating system = os ) اصلی ترین برنامه سیستمی است که به عنوان رابط بین کاربر و سخت افزار کامپیوتر عمل میکند .
سیستم عامل دو وظیفه (یا هدف) اصلی دارد:
-1 سیستم عامل ستفاد هاز کامپیوتر را ساده میسازد. این بدان معناست که مثلاً کاربر یا برنامه نویس بدون درگیر شدن با مسائل سخت افزاری دیسکها به راحتی فایلی را بر روی دیسک ذخیره و حذف کند . این کار در واقع با به کاربردن دستورات سادهای که فراخوان های سیستمی (System Calls) را صدا میزنند انجام پذیرد .
در صورت عدم وجود سیستم عامل کاربرو یا برنامه نویس میبایست آشنایی کاملی با سخت افزارهای مختلف کامپیوتر (مثل مونیتور ,فلاپی , کی بورد و غیره) داشته باشدو روتینهایی برای خواندن و یا نوشتن آنها به زبانهای سطح پائین بنویسد. از این جنبه به سیستم عامل با عنوان ماشین توسعه یافته(Extended machine ) یا
نکته :ماشین مجازی ( Virtual machine ) یاد میشود که واقعیت سخت افزار را از دید برنامه نویسان مخفی میسازد.
-2 وظیفه دوم سیستم عامل مدیریت منابع (Resource Management ) میباشد, یعنی سیستم عامل باعث استفاده بهینه و سودمند ( اقتصادی ) از منابع سیستم میگردد. منظور از منابع پردازندهها ,حافظهها ,دیسکها,ماوس ها , چاپگرها , فایلها , پورتها و غیره هستند. یک سیستم کامپیوتری منابع نرم افزاری و سخت افزاری بسیار دارد که ممکن است در حین اجراء برنامه لازم باشند , سیستم عامل همانند مدیر منابع عمل کرده و آنها را بر حسب نیاز به برنامههای مشخصی تخصیص میدهد.
سیستم عامل معمولا اولین برنامههای است که پس از بوت شدن در حافظه بار میشود. پس از بار شدن قسمتی از سیستم عامل بطور دائم در حافظه باقی (Resident)میماند. قسمتهای دیگر با توجه به کاربرد کامپیوتر توسط کاربر از دیسک به حافظه آورده میشود.
به قسمت اصلی سیستم عامل که وظایف مهم آن را انجام میدهد هسته یا Kernel گفته میشود.
هسته سیستم عامل برنامهای است که در تمامی اوقات بر روی کامپیوتر در حال اجراست.
سیستم عامل و معماری کامپیوتر اثر زیادی بر روی یکدیگر داشتهاند. یعنی جهت سهولت کار با سخت افزارهای جدید, سیستم عاملها توسعه یافتندو همچنین در اثنای طراحی سیستم عاملها , مشخص شد که تغییراتی در طراحی سخت افزار میتواند سیستم عاملها را ساده تر و کارآمدتر سازد .
هر چند که تطبیق نسلهای کامپیوتر با نسلهای سیستم عامل کار درستی نیست ولی این تطبیق که در ادامه انجام میدهیم علت ایجاد سیستم عاملهای جدید را مشخص میسازد.
نرم افزار های کاربردی
مرورگر وب رزرواسیون هوایی سیستم بانکی
نرم افزار های سیستمی مفسر ها ی فرمان ویرایشگر ها مترجم ها
سیستم عامل
سخت افزار ریز برنامه نویسی(BIOS) در ROM
دستگاه های فیزیکی
سیستم عامل از دو بخش مهم تشکیل شده است
1- هسته(Kernel)
2- پوسته(Shell)
هسته سسیستم عامل : قلب سیستم عامل که کلیه وظایف مدیریتی سیستم عامل را بر عهده دارد و واسط بین پوسته (و سایر نرم افزار های سطح کاربر )، سخت افزار است.
پوسته سیستم عامل :فقط واسط بین کاربر ( نه برنامه های کاربردی ) با هسته را دارد و فرامین کاربر را گرفته در صورت صحیح بودن آنها یکی از توابع درون هسته را برای انجام آن در خواست فراخوانی می کند
ادامه جلسه بعد....
علی یارتون
روشهای انتقال ورودی /خروجی {معماری کامپیوتر – موریس مانو}
تبادل داده با وسایل جانبی به سه طریق زیر امکان پذیر است.
-1ورودی خروجی برنامه نویسی شده
-2ورودی /خروجی بطریقه وقفه
-3دستیابی مستقیم به حافظه DMA (Direct Memory Access)
-1 ورودی /خروجی برنامه سازی شده
در این روش ،CPU در یک حلقه از برنامه باقی می ماند تا واحد I/O مشخص نماید که برای انتقال داده آماده است . این فرآیند موجب اتلاف قابل توجه وقت می شود. زیرا پردازنده زا بی آنکه لازم باشد مشغول نگه می دارد . برای جلوگیری از بهدر رفتن وقت پردازنده از امکانات وقفه (Interrupt ) استفاده کرد.در این روش انتقال داده بین CPU و دستگاه جانبی انجام می شود.. در این روش ، برنامه ای برای کامپیوتر نوشته شده است تا پرچم را در ثبات وضعیت وارسی نموده و تعیین کند که آیا وسیله I/O بایتی در ثبات قرارداده است یا خیر . این عمل با خواندن ثبت وضعیت و قراردادن آن در یک ثبات CPU و وارسی بیت پرچم صورت می گیرد.
اگر پرچم برابر 1 باشد ، CPU داده را از ثبات داده می خواند . سپس بیت پرچم با 0 شدن به وسیله ،CPU ، پاک می شود. .
بعد از صدور فرمان لازم برای اجرای ورودی / خروجی به مولفه مر بوطه ، عمل درخواست شده توسط مولفه ورودی / خروجی انجام میشود و بیتهای مناسب از ثبات وضعیت ورودی / خروجی مقدار گذاری میشود و هیچ اطلاعی به پردازنده داده نمی شود. این مسئولیت پردازنده است که وضعیت مولفه ورودی / خروجی را متنا وبا ٌ بررسی نماید تا اتمام آن عمل را دریابد .
ادامه جلسه بعد..
حافظه اصلی کامپیوتر
1-اولین بخش جدول بردار (Interrupt Vector) می باشد که محل روتین های سرویس دهنده وقفه را تعریف می کند.این جدول آدرس 0 تا 400 هگزا را اشغال می کند.
2- دومین فضا به عنوان محل کار روتین های ROM _BIOS استفاده می شود. از بین چیز های زیادی که در فضای داده ROM_BIOS ذخیره می شود. به یک BUFFER که ضر به های کلید را پیش از اینکه برنامه برای در یافت آنها حاضر باشد در خود نگه می دارد .
3- سومین بخش فضای پایین حافظه فضای کار کامپا یلر ها و سیستم عامل می باشد.
4- بخش اصلی فضای کاری حافظه قسمتی است که برنامه ها و داده های آنها استفاده می شود.
هر وسیله برنامه سرویس دهی خاص خود را دارد و از طریق یک دستوالعمل (JMP) ، آدرس بردار قرار دارد قابل دسترسی است.
مثال:
فرض کنید که صفحه کلید بیت وقفه را 1 کند. در پایان سیکل دستوالعمل ،کامپیوتر به سیکل وقفه میرود. ابتدا آدرس بازگشت برنامه در حال اجرا را در پشته ذخیره می کند و سپس CPU آدرس بردار 00000011(3) را از گذر گاه پذیرفته و آنرا به ثبات PC ( ثبات شمارنده ) انتقال میدهد. آنگاه دستوالعمل واقع در مکان 3 اجرا شده ، و در نتیجه کنترل به روال KBD (برنامه سرویس دهی به صفحه کلید ) منتقل می شود.
آخرین دستور در هر برنامه ، دستوالعمل بازگشت از وقفه است. { معماری کامپیوتر – موریس مانو }
برنامه سرویس دهی I/O حافظه آدرس
برنامه سرویس دهی به دیسک مغناطیسی DISK
بردار وقفه(interrupt vector ) JMP DISK 0
برنامه سرویس دهی به چاپگر PTR JMP PTR 1
برنامه سرویس دهی به کارت خوان RDR JMP RDR 2
برنامه سرویس دهی به
صفحه کلید KBD JMP KBD 3
سیستم عامل(kernel)
برنامه اصلی
پشته
در رابطه با هر کلاس از دستگاه های I/O در قسمت پایینی حافظه ناحیه ای به نام بردار وقفه ( Interrupt ) وجود دارد که شامل آدرس روتین سرویس وقفه ( Interrupt Service Procedure ) می باشد. فرض کنید فرآیند 3 در حال اجرا است که ناگهان یک وقفه در رابطه با دیسک اتفاق می افتد . این وقفه باعث می شود که PC (شمارنده برنامه )، PSW(کلمه وضعیت برنامه ) و چند رجیستر دیگر توسط وقفه سخت افزاری در پشته (جاری) ققرار گیرند. سپس کامپیوتر به آدرس مشخص شده در بردار وقفه ( Interrupt Verctor ) پرش میکند. تااین مرحله کاملاً توسط سخت افزار انجام می شود ولی از این مرحله به بعد به عهده نرم افزار است. روتین سرویس وقفه با ذخیره سازی کلیه رجیستر ها در درایه ای از جدول فرآیند که مر بوط به فرآیند جاری است آغاز می شود.اعمالی نظیر ذخیره سازی رجیستر ها و تغییر اشاره گر پشته (به راحتی) در زبان C انجام نمی شود. بنابراین این موارد توسط رویه کوچکی که به زبان اسمبلی نوشته شده است انجام می شود. .{ تننباوم 65 }
ادامه جلسه بعد..
علی یارتون
ROM_BIOS
مجموعه ای از برنامه های تعبیه شده در کامپیوتر می باشد که اصلی ترین و سطح پایین ترین عملیات کنترل و نظارت را برای کامپیوتر انجام می دهند. ROM_BIOS در پایین ترین لایه قرار دارد لایه ای که در زیر تمام نرم افزار ها و عملیات در جدار کردن سایر برنامه ها از جزئیات نحوه کار سخت افزار می باشد. ROM_BIOS بطور اساسی یک رابط ، متصل کننده ، و مترجم بین سخت افزار کامپیوتر و برنامه های نرم افزار ی می باشد. نرم افزار هایی اینچنین چون بطور ثابت در تراشه های سخت افزاری ROM ذخیره می شوند FIREWARE گفته می شوند
آنچه را که . ROM_BIOS باید انجام دهد کنترل مستقیم سخت افزار و پاسخ به هر تقاضایی از سوی سخت افزار است .نحوه انجام اینکار به مقدار زیاد ی توسط در گاهها انجام می گیرد.
مجموعه از برنامه های مهم و اصلی پشتیبان کلی عملیات کامپیوتر در ROM_BIOS
نگهداری می گردند. این برنامه ها از دوبخش اصلی تقسیم می شوند
1- بخش اول فقط در هنگام روشن شدن کامپیوتر استفاده می شوند : این گروه برنامه های تست و مقدار دهی اولیه هستند که مطمئن می شوند کامپیوتر در وضعیت کاری خوبی قرار دارد. تاخیری که بین زمان روشن کردن کامپیوتر تا شروع کار آن وجود دارد توسط عملیات این برنامه های تست و مقدار دهی یا ( Power On Self Test ) POST بوجود می آید.
2- بخش دوم گروهی از روتینها به نام سرویس های اصلی ورودی / خروجی یا
BIOS ( Basic Input /Output Service ) می باشد. این برنامه ها کنترل درونی و مفصلی را بر روی بخشهای مختلف کامپیوتر ، مخصوصاً وسایل ورودی / خروجی ، مانند دیسک گردانها فراهم می کنند.
گرداننده ها() احتیاج به نظارت دقیقی (شامل نظارت جامع برای خطا ها ) دارند.
ROM-BIOS برای کمک به کل عملیات کامپیوتر سرویس های متعدد و مفیدی را ارائه می کند که قابل دسترس برای استفاده توسط سیستم عامل (Dos,windows)
و برنامه های کاربردی می باشند.آخرین بخش روتین های را ه اندازی در ROM_BIOS روتین بوت می باشد که سعی میکند سیستم عامل را در کامپیوتر بوت کند. عمل بوت تلاش ROM_BIOS برای خواندن رکورد بوت کننده از آغاز دیسک را در بر دارد.
دو بخش دیگر ROM_BIOS بخش اصلی عملیات اجرایی کامپیوتر را شکل می دهد. این دو بخش سرویس دهنده وقفه سخت افزار (hardware –interrupt handler) و دستگذاری سرویس (service – handling ) می باشد. آنها به عنوان دو نوع روتین مجزا اما همکار عمل می کنند.
3-بخش سوم ROM-BIOS که فقط برای اعضا خانواده PC ساخت IBM به کار می رود.
علی یارتون
ادامه جلسه بعد...
مکانیسم وقفه :
هر وقفه یک شماره دارد که نوع وقفه را مشخص میکند . به عنوان مثال یک شماره وقفه برای دیسک گردانها استفاده می شود ( تمام گرداننده ها دارای یک وقفه می باشند ) ساعت، صفحه کلید ، چاپگر ها نیز هر کدام یک شماره مخصوص دارند، برای هر شماره وقفه یک برنامه مخصوص به نتم سرویس دهنده وقفه (Interrupt handler) جدول مخصوص که در اوایل حافظه کامپیوتر قرار دارد آدرس کامل سرویس دهنده های وقفه را ضبط می کند . هنگامیکه وقفه ای رخ می دهد ، از شماره وقفه برای پیدا کردن برنامه سرویس دهنده وقفه استفاده می شود . اما پیش از اینکه سرویس دهنده وقفه شروع به کار کند ، که مکانیسم پردازش وقفه ، رکوردی از وضعیت کاری که در جر یان بود را بر روی پشته ذخیره می کند . بعد از اجرای وقفه ، کنترل پردازنده از روتین سرویس دهنده وقفه انتقال می یابد . سرویس دهنده وقفه اغلب در برنامه تعبیه شده ROM_BIOS یا به عنوان بخش از سیستم عامل ظا هر میشوند.
تفاوت سیستم عامل با ROM_BIOSچیست؟
سیستم عامل بطور مستقیم کاربر را سرویس دهی میکند در صورتیکه ROM_BIOS چنین کاری را انجام نمی دهد.
تفاوت دیگر در این است که ROM_BIOS سرویس های خود را در سطحی پایین تر برای برنامه ها عر ضه می نماید. در صورتیکه بیشتر سرویس هی سیستم عامل سرویس های پیچیده ایی است و در سطحی بالا عر ضه می گردد.
کنترل کننده دیسک دستوالعمل را از BIOS یا درایور ها به سیگنا ل الکتریکی ترجمه می کند که باعث حرکت هد خواندن / نوشتن روی مکان دیسک می شود. این عمل باعث ایجاد سیگنالهای مغناطیسی شده و بدین تر تیب داده ها ی یک سند روی سطح دیسک ثبت و ضبط می شود.
BIOS را میتوان یک نرم افزار خاص برای برقراری ارتباط میان سیستم عامل و اجزای سخت افزاری نامید که معمولا بر روی یک حافظه از نوع Flash بر روی مادر بورد ذخیره میشود ولی گاهی اوقات از نوع ROM نیز ساخته میشود که تفاوت این دو با هم در این است که BIOS از نوع ROM قابلیت تغییر یافتن را ندارد ولی نوع Flash را میتوان به روز رسانی کرد .
به طور کلی برای BIOS می توان چهار وظیفه مهم را بر شمرد :
1. می توان گفت مهمترین وظیفه BIOS بارگذاری سیستم عامل است . همانطور که می دانید سیستم عامل بر روی هارد دیسک ذخیره شده است و هنگامی که کامپیوتر را روشن میکنیم و ریز پردازنده تلاش میکند تا اولین دستور را اجرا کند باید این دستورات را از جایی بخواند و اجرا نماید و مسلما از سیستم عامل نمی تواند این کار را انجام دهد،BIOS این دستورات را فراهم میکند .
2. تست خودکار تمام اجزای سخت افزاری سیستم جهت اطمینان از صحت کارکرد انها .
3. فعال کردن سایر BIOS های موجود در کارت های مختلفی که برروی سیستم نصب است.
4. BIOS علاوه بر کارهای فوق یکسری زیر برنامه ها ی سطح پایینی را هم در اختیار قرار می دهد که سیستم عامل برای بر قراری ارتباط با برخی سخت افزار ها نیاز دارد مثلا صفحه کلید ، صفحه نمایش ، پورت های سریال و موازی ر اکنترل میکند،مخصوصا هنگام بوت شدن سیستم !!
(همین زیر برنامه ها نام BIOS –Basic Input/Output System- را به آن داده اند )
هنگامی که سیستم روشن می شود BIOS اعمال مختلفی را انجام می دهد که ما در اینجا یک روال معمول را به شما گوشزد میکنیم :
1. بررسی تنظیمات دستی CMOS (Complementary Metal-Oxide Semiconductor): اولین کاری که BIOS انجام می دهد بررسی اطلاعات ذخیره شده بر روی یکRAM 64 بایتی به نام CMOS می باشد که جزئیات سیستم را تامین میکند و میتواند با توجه به مشخصات سیستم تغییر یابد ،BIOS به این اطلاعات بری اجرای صحیح دستورات خود نیاز دارد .
2. بار گذاری کنترل کننده های وقفه و راه اندازی سخت افزاری:کنترل کننده وقفه قطعه نرم افزاری کوچکی است که به عنوان مترجم میان سخت افزار و سیستم عامل عمل میکند به عنوان مثال هنگامی که یک کلید بر روی صفحه کلید فشرده میشود یک سیگنال به کنترل کننده وقفه فرستاده شده که به CPU می گوید که چه کلیده فشرده شده و آنرا به سیستم عامل ارسال میکند .
راه انداز های سخت افزار ، قطعات نرم افزاری هستند که اجزای سخت افزاری پایه از جمله صفحه کلید و ماوس و هارد و فلاپی و را تعریف می کند که برای افزایش سرعت بر روی RAM بارگذاری می شوند .بد از بار گذاری کنترل کننده وقفه نوبت به کارت گرافیک می رسد، در این هنگام بررسی می شود که آیا کات گرافیک فعال است یا خیر ؛ در صورت فعال بودن BIOS کارت گرافیک ، مادربرداین BIOS را بارگذاری میکند .
3. مقدار دهی اولیه ثبات ها و مدیریت جریانهای الکتریکی داخل سیستم
4. انجام تست خود کار هنگام روشن شدن(POST)
سپس BIOS چک میکند که که آیا بوت شدن ،یک بوت شدن سرد است (Cold Boot) یا بوت مجدد (ReBoot) .اگر از نوع دوم باشد بایوس اعمال مربوط به POST را دیگر انجام نمی دهد زیرا قبلا یک بار انجام گرفته اند . اما اگر بوت سرد باشد BIOS حافظه RAM را با انجام تست خواندن /نوشتن بر روی هر آدرس حافظه بررسی میکند . سپس BIOS پورت های PS/2 و USB را برای صفحه کلید و ماوس چک میکند و در صورت وجود گذرگاه PCI (Prepheral Component Interconnect) همه کارت های PCI را بررسی میکند اگر بایوس هنگام POST به مشکل بر بخورد این خطا با بوق یا متن به کاربر اطلاع داده میشود .
5. نمایش تنظیمات دستی :بعد از مراحل فوق BIOS برخی جزئیات سیستم را نمایش میدهد ازجمله :
• پردازنده
• فلاپی درایو و هارد درایو
• حافظه
• نسخه و تاریخ ساخت BIOS
• نوع سخت افزار نمایشی
6. تعیین اینکه کدام دستگاهها قابل بوت شدن هستند
7. شروع کردن روال نوار بوت : بعد از نمایش جزئیات ، BIOS راه انداز قطعاتی مانند SCLS
( Small Computer System interface ) را که همراه خود قطعه است را بارگذاری میکند .پس از طی این مراحل ،برای اجرای سیستم عامل BIOS ترتیب قطعاتی را که به عنوان قطعات بوت کننده در CMOSانتخاب شده اند را بررسی میکند و سعی میکند تا روال بوت شدن را از اولین قطعات پیدا کند و اگر هیچ قطعه ای را پیدا نکند روند بوت قفل میشود .
این آخرین فعالیت BIOS در هنگام بوت شدن می باشد پس از آن در صورت یافتن سیستم عامل ، مدیریت سیستم به دست سیستم عامل سپرده میشود .
ادامه جلسه بعد...
علی یارتون
1-نگاه کلی به سخت افزار
عناصر اصلی
1-1- پردازنده
1-2- حافظه اصلی
1-3- دستگاه های ورودی / خروجی
1-4- اتصالات داخلی سیستم شامل ساختار ها و راهکارهائی که ارتباط بین اجزاء ( پردازنده – حافظه – دستگاه های ورودی /خروجی )
1-1-1- ثبات پردازنده
الف- ثباتهای قابل دسترس توسط کاربر : این ثباتها در دسترس تمام برنامه های کاربردی و برنامه های سیستم
ب- ثبات های کنترلی وضعیت: این ثباتها برای کنترل عملیات پردازنده بکار گرفته می شود و قابل دسترسی بوسیله کاربران نیستند..مانند ثبات دستوالعمل ، شمارنده برنامه ( PC ) ، ثبات کلمه وضعیت ( PSW )
وقفه (interrupt)
نکته 1: وقفه توسط سخت افزار کامپیوتر تولید می شود هر چند علت آن می تواند نرم افزار باشد.
نکته 2: یک هدف عمده ، از راهکار وقفه ، افزایش کارائی پردازنده می باشد.
نکته 3: در هنگام اجرای خود هسته نیز وقفه اتفاق می افتد. CPU آنها را آشکار کرده و به جای پشته درون جدول ،فرآیند از پشته هسته استفاده می شود.
نکته 4: امکان وقوع وقفه های تو در تو نیز وجود دارد و هرگاه روال سرویس دهی به وقفه بعدی خاتمه می یابد ، می توان وقفه قبل ازآن را تکمیل نمود. {تننباوم 169}
در حالت کلی سه نوع وقفه در کامپیوتر وجود دارد:
1- وقفه خارجی
2- وقفه داخلی
3- وقفه نرم افزاری
-1 وقفه خارجی
الف- زمان سنج (Timer): وقفه ای که توسط تایمر داخلی پردازنده تولید می شود. این وقفه به سیستم عامل اجازه می دهد، بعضی اعمال را به طور مرتب انجام دهد.در واقع به منظور تعیین زمان اجرای پردازنده در هر وهله کاری
ب- وقفه تکمیل ورودی – خروجی: هنگامی تولید می شود که ورودی – خروجی کامل شده باشد یا خطائی در آنها رخ داده باشد.
ج- وقفه سخت افزار : وقفه ای است که بر اثر بروز خطا در سخت افزار ماشین رخ می دهد.مثل نقص برق
د- وقفه Restart: وقفه ای است که بر اثر فشار دادن دکمه Reset بر روی کنسول ایجاد می گر دد.
2- وقفه داخلی(تله های حفاظتی و استثنا،(Trap)) :
بر اثر خطا های مختلف در برنامه کار بران رخ می دهد . این وقفه ها تله ( Trap) نیز نامیده می شود مانند تقسیم بر صفر ، سرریز شدن محاسباتی ، تلاش برای اجرای یک دستوالعمل ماشین غیر مجاز و مراجعه به آدرسی خارج از فضای مجاز کاربر
مثال : الف- فرض کنید برنامه ای می خواهد خلاف کند به حافظه دیگران دسترسی داشته باشد.
مثال : ب- می خواهیم وقفه ها را از کار بندازیم .
مثل : ج- هارد دیسک را فرمت کنیم
Trap چیست؟هر گونه رفتن از مد کاربر به مد هسته را تله گویند.
چه کسی Trap را کشف میکند؟
الف- هسته ب- پوسته ج- CPU د- Compiler
3- وقفه نرم افزاری :
این وقفه ها همان فراخوانی سیستمی (System Call) نامیده می شوند دستوراتی از برنامه کاربر هستند که با فراخوانی آنها نیاز به استفاده از حالت ناظر() و امکانات آن فراهم می گردد مثل در خواست اجرا ی یک ورودی – خروجی که با یک وقفه به ناظر (سیستم) واگذار می شود.
جدول بردار وقفه (Vector Table ):
بخشی از مکانیسم وقفه شامل یک جدول بردار می باشد که آدرس حافظه سرویس دهنده های وقفه را نگه می دارد . جدول آدرس به عنوان مکانی مطمئن برای نگهداری آدرس ها ی مهمی که کاری با وقفه ندارند ، استفاده می شود. برای هر کدام از این آدرس ها یک شماره وقفه متناظر وجود دارد ، اما تا وقتیکه روتین سرویس دهنده وقفه موجود نباشد ، هرگز نمی تواند استفاده شود.
وقفه به عنوان مکانیسمی استفاده می شو ند که کامپیوتر را به دنیای اطرافش متصل می کند. وقفه ها کامپیوتر را به گردش در می آورند، زیرا تمام کارها به شکل وقفه ها به کامپیوتر وارد می شوند. مهمتر اینکه تمام سازمان دداخلی کامپیوتر بر اساس وقفه طراحی می شود. عامل کنتر لی که تعیین می کند توجه پردازنده در کجا متمر کز خواهد شد.
ادامه جلسه بعد..
علی یارتون.
