X
تبلیغات
پیروان ولایت - جزوه سیستم عامل (بخش اول)

تعداد بازديد :  
تاريخ : شنبه یکم مرداد 1390
 

 

به نام ایزد دانا

 

 

 

 

 

جزوه درسی سیستم عامل

( ویژه داوطلبان آزمون کادانی به کارشناسی – نرم افزار )

 

 

 

 

کلیه حقوق این جزوه متعلق به وب سایت کارشناسی دات کام میباشد

 

هرگونه کپی برداری بدون ذکر سایت فوق ممنوع است.

 

 

wWw.Karshenasi.Com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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 ):

بخشی از مکانیسم  وقفه شامل یک جدول بردار می باشد که آدرس حافظه سرویس دهنده های وقفه را نگه می دارد . جدول آدرس  به عنوان  مکانی مطمئن برای نگهداری آدرس ها ی مهمی که کاری با وقفه ندارند ، استفاده می شود. برای هر کدام از این آدرس ها یک شماره وقفه متناظر وجود دارد ، اما تا وقتیکه روتین سرویس دهنده وقفه موجود نباشد ، هرگز  نمی تواند استفاده شود.

 

 

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

 

مکانیسم وقفه :

 

هر وقفه یک  شماره دارد که نوع وقفه را  مشخص میکند . به عنوان مثال یک شماره وقفه برای دیسک گردانها استفاده می شود ( تمام   گرداننده ها  دارای یک وقفه  می باشند )  ساعت، صفحه  کلید ، چاپگر ها نیز هر کدام یک شماره مخصوص دارند، برای هر شماره وقفه  یک برنامه مخصوص به نتم سرویس دهنده وقفه (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  در هنگام بوت شدن می باشد پس از آن در صورت یافتن سیستم عامل ، مدیریت سیستم به دست سیستم عامل سپرده میشود .

 

 

: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  به کار می رود.

                   

مقدار دهی  اولیه اضا فی

)CMOS)

راه  اندازی

 

مقدار دهی اولیهpost                  

   

بوت  دیسک

اداره کننده وقفه

(Interrupt Handler)

سرویس دهنده  وقفه  سخت افزاری

()Interrupt  Service Routine

وقفه سخت افزاری

درخواستهای سرویس برنامه

 

 

حافظه  اصلی  کامپیوتر

 

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 }

 

 

روشهای انتقال  ورودی /خروجی {معماری  کامپیوتر – موریس مانو}

 

تبادل داده با وسایل جانبی به سه طریق زیر امکان پذیر  است.

 

 

-1ورودی خروجی  برنامه نویسی شده

-2ورودی /خروجی  بطریقه وقفه

-3دستیابی مستقیم به حافظه DMA (Direct Memory Access)

 

 

 

-1 ورودی /خروجی  برنامه سازی شده

 

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

اگر پرچم برابر 1 باشد ، CPU   داده را از ثبات داده می خواند . سپس بیت پرچم با 0 شدن به وسیله  ،CPU   ، پاک می شود. .

 

بعد از صدور فرمان لازم برای اجرای ورودی / خروجی به مولفه مر بوطه ، عمل درخواست شده  توسط مولفه ورودی / خروجی انجام میشود و بیتهای مناسب از ثبات وضعیت ورودی  / خروجی مقدار گذاری میشود و هیچ اطلاعی به پردازنده داده نمی شود. این مسئولیت پردازنده است  که وضعیت مولفه ورودی / خروجی را متنا وبا ٌ بررسی  نماید تا اتمام آن عمل را دریابد .

 

 

F : بیت پرچم

CPU

 

مدارواسط

 

 

 

 

دستگاه

I/O

 

ثبات داده

ثبات وضعیت     F

 

RAM

 

2- ورودی / خروجی  بطریقه وقفه

 

 

 بعد از صدور فرمان به مولفه ورودی / خروجی ،  پردازنده به کار مفید دیگری میپردازد . بعد از تکمیل عمل ورودی / خروجی هنگامی که داده ها در بافر داده های آن مولفه  قرار گرفت مولفه ورودی / خروجی از طریق یک خط کنترلی به پردازنده وقفه میدهد، سپس داده هایش توسط پردازنده ، درخواست  شده و به حافظه منتقل می گردد. در این روش CPU  مادامی که مشغول اجرای یک برنامه است پرچم را وارسی نمی کند.  با این وجود ، هنگامیکه پرچم 1 شده باشد، یک وقفه CPU  را لحظه ای از اجرای برنامه جاری متوقف ساخته و 1 شدن پرچم  را به آن اطلاع می دهد. CPU   از آنچه در حال انجام آن است منصرف شده و به انتقال ورودی یا خروجی می پردازد.پس  از تکمیل شدن  اتنتقال ، کامپیوتر به برنامه اصلی بر می گردد تا آنچه را که قبل از وقفه انجام می داد ادامه دهد.

 

 

3-ورودی / خروجی میتنی بر وقفه همراه با مولفه DMA

 

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

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

 بنابراین بدون دخالت پردازنده داده ها مستقیماً  به حافظه منتقل می شود. پس نتیجه می گیریم  که برای انتقال  ورودی / خروجی های چند کلمه ای DMA بسیار کارآمد تر از روش های ورودی / خروجی  برنامه سازی شده  یا مبتنی بر وقفه است.

توجه نمائید که مولفه DMA به منظور انتقال اطلا عات به حافظه یا بالعکس می  بایست از گذرگاه  استفاده نماید.

بنابراین مولفه  DMA باید زمانی از گذرگاه استفاده نماید که پردازنده به آن نیازی ندارد  و یا باید پردازنده را وادار کند که موقتا ً عملیاتش را با تاخیر اندازد . روش اخیر را   سرقت سیکل    Cycle Stealing ) (می گویند زیرا مولفه DMA  در اصل یک چرخه گذرگاه را می رباید . مولفه DMA هر بار که گذرگاه را در اختیار می گیرد (زمان واکشی دستور و یا واکشی عملوند  ) یک کلمه را منتقل  می کند و کنترل را به پردازنده  باز می گرداند توجه نماید که این وقفه نیست ،  بلکه به اندازه یک چرخه گذرگاه منتظره می ماند.CPU  صرفاً عملکرد خود را به اندازه یک سیکل  حافظه به تاخیر می اندازد تا عمل انتقال حافظه  I/O  به طور مستقیم  صورت  گرفته و یک سیکل حافظه را برباید.

 

 

 

 

 

 

 

)CPU  پردازنده (

 

حافظه اصلی

RAM

Control

Unit

IR

AR

AC

 

 

 

 

 

 

 

     دستگاه های ورودی / خروجی(I/O)   

 

 

  

 

 

 

ثبات های DMA

 

ثبات های DMA

DC

I/O AR

I/O DR

Control

Unit

 

  

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

 

به طور کلی نرم افزارهای کامپیوتر به دو گروه تقسیم می‌شوند:
1- یکی برنامه‌های سیستمی که عملیات کامپیوتر را مدیریت می‌کنند

2- دیگری برنامه‌های کاربردی .

سیستم عامل ( operating system = os ) اصلی ترین برنامه سیستمی است که به عنوان رابط بین کاربر و سخت افزار کامپیوتر عمل می‌کند .


سیستم عامل دو وظیفه (یا هدف) اصلی دارد:

 -1 سیستم عامل ستفاد هاز کامپیوتر را ساده می‌سازد. این بدان معناست که مثلاً کاربر یا برنامه نویس بدون درگیر شدن با مسائل سخت افزاری دیسکها به راحتی فایلی را بر روی دیسک ذخیره و حذف کند . این کار در واقع با به کاربردن دستورات ساده‌ای که فراخوان های سیستمی (System Calls) را صدا می‌زنند انجام پذیرد .
در صورت عدم وجود سیستم عامل کاربرو یا برنامه نویس می‌بایست آشنایی کاملی با سخت افزارهای مختلف کامپیوتر (مثل مونیتور ,فلاپی , کی بورد و غیره) داشته باشدو روتین‌هایی برای خواندن و یا نوشتن آنها به زبانهای سطح پائین بنویسد. از این جنبه به سیستم عامل با عنوان ماشین توسعه یافته(Extended machine ) یا

نکته :ماشین مجازی ( Virtual machine ) یاد می‌شود که واقعیت سخت افزار را از دید برنامه نویسان مخفی می‌سازد.

 -2 وظیفه دوم سیستم عامل مدیریت منابع  (Resource Management ) می‌باشد, یعنی سیستم عامل باعث استفاده بهینه و سودمند ( اقتصادی ) از منابع سیستم می‌گردد. منظور از منابع پردازنده‌ها ,حافظه‌ها ,دیسکها,ماوس ها , چاپگرها , فایلها , پورتها و غیره هستند. یک سیستم کامپیوتری منابع نرم افزاری و سخت افزاری بسیار دارد که ممکن است در حین اجراء برنامه لازم باشند , سیستم عامل همانند مدیر منابع عمل کرده و آنها را بر حسب نیاز به برنامه‌های مشخصی تخصیص می‌دهد.

سیستم عامل معمولا اولین برنامه‌های است که پس از بوت شدن در حافظه بار می‌شود. پس از بار شدن قسمتی از سیستم عامل بطور دائم در حافظه باقی (Resident)می‌ماند. قسمتهای دیگر با توجه به کاربرد کامپیوتر توسط کاربر از دیسک به حافظه آورده می‌شود.

به قسمت اصلی سیستم عامل که وظایف مهم آن را انجام می‌دهد هسته یا Kernel گفته می‌شود.

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

هر چند که تطبیق نسلهای کامپیوتر با نسلهای سیستم عامل کار درستی نیست ولی این تطبیق که در ادامه انجام می‌دهیم علت ایجاد سیستم عاملهای جدید را مشخص می‌سازد.

نرم افزار های کاربردی

 

مرورگر   وب

رزرواسیون   هوایی

سیستم بانکی

نرم افزار های سیستمی

مفسر ها ی فرمان

ویرایشگر ها

مترجم ها

سیستم عامل

سخت افزار

ریز برنامه نویسی(BIOS) در ROM

دستگاه های فیزیکی

 

 

 

 

سیستم عامل از دو بخش  مهم  تشکیل شده است

1-       هسته(Kernel)

2-       پوسته(Shell)

SHEll(پوسته)

Kernel (هسته)

سخت افزار

 

 

 

 

هسته سسیستم عامل : قلب سیستم عامل که کلیه وظایف مدیریتی سیستم عامل را بر عهده دارد و واسط بین پوسته (و سایر نرم افزار های سطح کاربر )، سخت افزار است.

 

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

 

پوسته های سیستم عامل

1-                                                   Command Driver    مثل DOS

2-                                                   Menu driver         مثلDOS SHELL

3-                                                   Icon Driver     مثل Windows

 

 

 

Application

Tools

Compiler

Shell

 

 

System call           System Call                   System Call                   System Call                

 

Kernel

 

 

 

Trap

(تله فراخوان سیستمی )

Hard Ware

 

 

 

نکته :در واقع سیستم عامل خود  هسته است. پوسته تقریباٌ ارزش علمی ندارد. Interrupt  Handler    ها و Device Driver   ها همه در   Kernel   هستند.

.

 

فراخوان سیستمی (System Call )    چیست؟

هرگاه یک نرم افزار سطح کاربر  نیاز به دسترسی به منابع سیستم داشته باشد و سخت افزار یکی از Fuction   های درون سیستم را فراخوانی می کند. که به این عمل  فراخوان سیستمی (System Call )  می گویند.

 

 

فرق System cal l     با یک فراخوان Function   عادی چیست؟

  • همه در سطح  کاربرند ولی در حالت فراخوان سیستم  باید مد آن تغییر کند از مد کاربر به مد هسته برود .

چرا  مد آن عوض می شود ؟ برای امنیت ، حدود اختیارات برنامه های سطح کاربر خیلی کمتر از سطح هسته است .

 

نکته : وقتی برنامه در سطح کاربر  انجام میشود  و بخواهد خلاف کند سیستم عامل وجود ندارد  تا جلویش را بگیرد. .

 

به سطح هسته  ، سطح   راهبری ( Supervisor Mode  )  هم گفته می شود..

در Unix     فراخوان سیستمی () وجود دارد به نام :Fork()

Fork()  که یک فرآیند  فرزند می سازد و عین پدرش  به شماره فرزند بر می گردد و به فرزند شماره صفر .

و صفر شماره هیچ فرآیندی نیست یعنی فرزند است.

If    fork() !=0

پدر  

Else

  فرزند 

 

نکته :  Source     همه Function   ها در هسته است.

 

 

نکته مهم :

سیستم عامل،   نرم افزاری   است  که در مود هسته (Kernel mode  ) یا راهبری(Supervisor  mode )  کار می کند.   که این بخش توسط سخت افزار (CPU) در مقابل مداخله کاربران محافظت می شود.

 

مترجم ها و ویرایشگر ها در مود کاربر(User Mode)  اجرا می شوند.

 

کاربر حق ندارد  که اداره کننده وقفه (Interupt  handler )  دیسک را که بخشی از سیستم عامل است تغییر دهد. ولی  کاربر  آزاد است که برای خودش یک مترجم بنویسد.

 

اهداف سیستم عامل به عنوان مدیر منابع چیست؟

1-       استفاده بهینه از منابع

2-       تخصیص و آزاد سازی منابع

3-       زمانبندی فرآیند ها برای   استفاده از منابع

4-       به اشتراک گذاری منابع

5-       حفاظت و ایجاد  امنیت: جلوگیری از دسترس فرآیند ها به یکدیگر . ایجاد لیست ها و فهرست و طبقه بندی منابع و نام گذاری آنها مثل ایجاد فایل ها ، در خت و لیست های مختلف

6-        طبقه بندی منابع و نام گذاری آنها در درخت ها

7-       جلو گیری از بن بست ، قحطی ، تداخل

 

زبان های پیاده سازی سیستم عامل

 

 

 سیستم  عاملهای اولیه به زبان اسمبلی نوشته می‌شدند ولی امروز, اکثر سیستم عاملها به زبان   Cیا C++   نوشته می‌شوند . سیستم عامل UNIX ,OS/2 و   ویندوز   بیشتر به زبان C نوشته‌ شده‌اند و قسمت اندکی از آنها به زبان اسمبلی است.
مهمترین مزیت استفاده از زبان سطح بالا برای پیاده سازی سیستم عامل قابلیت حمل آن بر روی انواع کامپیوترها و سادگی پیاده سازی , تغییر و بسط دادن سیستم عامل می‌باشد.

ممکن است ادعا شود پیاده سازی سیستم عامل به زبان C باعث کاهش سرعت و افزایش مصرف حافظه می‌گردد . اگر چه یک برنامه نویس ماهر زبان اسمبلی , می‌تواند برنامه‌های کوچک و بسیار بهینه بنویسد ولی برای برنامه‌های بزرگ یک کامپایلر خوب, می‌تواند تحلیل پیچیده تری نسبت به مغز انسان ماهر انجام داده و بهینه سازی‌های کاملی را انجام دهد.

لذا در عمل برنامه‌های بزرگ C کد اسمبلی بهینه تر و کمتری را تولید می‌کنند, نسبت به حالتی که برنامه‌نویس بخواهد همان کاری به زبان اسمبلی انجام دهد . از طرف دیگر در عمل کارایی اصلی نتیجه ساختمان داده و الگوریتم‌های بهتر است نه نتیجه نوشتن برنامه به زبان اسمبلی .
همچنین اگر چه سیستم عاملها برنامه‌های بزرگی هستند ولی تنها بخش کوچکی از کد آنها, نسبت به کارایی , بحرانی( Critical ) می‌باشد مثل مدیریت حافظه و زمانبندی CPU .

لذا پس از آنکه سیستم عامل به زبان سطح بالا نوشته شد و به درستی عمل کرد می توان روتین های گلوگاه ( bottleneck ) و مهم را شناسایی کرد و سپس آنها را با روتین‌های معادل زبان اسمبلی جایگزین نمود.

 

 

 

 

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

 

اولین  کامپیوتر   رقمی  واقعی توسط یک ریا ضیدان انگلیسی  به نام چارلز   بابیج ( charles babbage )  1871-1792   طراحی شده است  با بیج  بیشتر عمر و ثروت خود را برای ساختن  موتور تحلیلی صرف کرد ولی به علت  اینکه فقط از مکانیک محض استفاده کرد به نتیجه دلخواه خود نرسید. موتور تحلیلی وی سیستم  عامل نداشت بابیج فهمیده بود که موتور تحلیلی اش به نرم افزار نیاز دارد بنابر این ار خانم جوانی را به نام () استخدام نمود .

او دختر شاعر مشهور انگلیسی لرد بایرون  بود که به عنوان اولین برنامه نویس  جهان شناخته شد.{تننباوم}

 

1- نسل اول (1955-1945) :لامپ  خلا  و تخته های مدار های  سوراخ دار

 

 

انداز ه ماشین ها بسیار بزرگ بود و به همراه دهها هزار لامپ خلا داخل اتاق ها  را پر می کرد  کلیه برنامه به طور مطلق  به زبان ماشین نوشته می شد. و اغلب به وسیله سیم بندی تخته مدار های سوراخ دار و به منظور کنترل عملیات باید ماشین  پایه ای ماشین انجام می شد.

 زبانهای برنامه نویسی شناخته نشده بود ( حتی زبان اسمبلی ) و هیچ کس نامی از سیستم عامل نشنیده بود . اکثر برنامه ها مثل تهیه جداول سینوس و کسینوس بود. تننباوم}

برنامه ساز مستقیما با سخت افزار در تراکنش بود ، سیستم عاملی در کار نبود.

 

2- نسل دوم (1965-1955): ترانزیستو ر  و  سیستم های دسته ای

 

ظهور ترانزستور در اواسط دهه 1950  یک انقلاب بنیادی بود .

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

در صورتیکه برنامه به مترجم فرترن نیاز داشت وی دسته کارت مترجم  فرترن را نیز از داخل کمد فایل ها بر داشته و در دستگاه  کارتخوان قرار می داد . هنگامیکه اپراتورها برای انجام این کار ها در اتاق ماشین را ه  می رفتند ، مدت  زمان زیادی از وقت کامپیوتر  تلف می شد.

را ه حلی که به طور کلی پذیرفته شد ، سیستم های دسته ای ( Batch  system ) بود.

 

ایده این روش این بو د که یک سبد پر از دسته کارتها در اتاق ورودی جمع آوری شود سپس کلیه آنها به وسیله  دستگاه کارتخوان یک کامپیوتر کوچک و ارزان قیمت ها IBM  1401   خوانده شده و از طریق یک نوار گردان بر روی نوار مغناطیس ذخیره گردد .این

IBM 1401   برای  محاسبات مناسب نبودند و از یک ماشین گران قیمت IBM  7094 کامپیوتر  ها   برای پردازش و محاسبات واقعی استفاده می شد.

 

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

در  صورتیکه برنامه به مترجم فرترن نیاز داشت . وی دسته کارت مترجم فرترن رانیز از داخل کمد فایل ها برداشته و در دستگاه کارتخوان قرار می داد . هنگامیکه اپراتور ها برای انجام این کارها در اتاق ماشین راه می رفتند ، مدت زمان زیادی از وقت کامپیوتر تلف می شد.

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

خوانده شده و از طریق یک نوار گردان بر روی نوار مغناطیسی ذخیره گردد. این کامپیوتر ها () رای محاسبات مناسب نبودند و از یک ماشین گران قیمت (7094) برای پردازش و محاسبات واقعی استفاده می شود.

 

 

1401

Card

Reader

Tape driver

Input Tape

7094

Out put

Tape

System

Tape

Tape driver

1401

Printer

 

حدود یک ساعت طول مکیشد که یک دسته از کارها بر روی نوار ضبط شود پس از یک ساعت یک اپراتور  نوار را از اتاق برداشته و به اتاق ماشین منتقل می کرد و درآنجا در یک نوار گردان قرار می داد. سپس یک برنامه مخصوص (سیستم عامل )  را بار می کرد تا اولین کار از روی نوار بخواند و اجرا نماید.

خروجی به جای چاپگر بر روی یک نوار دیگر نوشته می شد. پس از اتمام هر کار ، سیستم عامل به صورت خودکار ، کار بعدی را از نوار می خواند و شروع به اجرای آن می کرد . وقتی که تمامی دسته کار ها اجرا می شد ، اپراتور نوار های ورودی و خروجی را بر می داشت ، نوار ورودی را با دسته بعدی جایگزین کرده ، نوار خروجی را به ماشین 1401 منتقل میکرد تا عملیات چاپ به صورت  OFF Line (به کامپیوتر اصلی متصل نیست ) انجام شو د.{تننباوم }

 سیستم عامل در این گونه  کامپیوتر ها بسیار ساده بود . کار اصلی آن ، انتقال از یک  کار به کار دیگر بود. سیستم عامل همیشه در حافظه قرار داشت. {سیلبر شاتس}

 

ویژگی های سیستم عامل دسته ای :{ سیلبر شاتس }

1-       کاربر با کار ی که در حال اجرا بود تعاملی نداشت.

2- درچنین محیطی CPU   اغلب بیکار است چون سرعت دستگاه های I/O مکانیکی کمتر از سرعت دستگاه های الکترونیکی      مثل CPU   است. مثلا CPU   در یک ثانیه هزاران دستورالعمل انجام می دهد. در حالکه دستگاه کارت خوان سریع در یک     دقیق 1200      کارت  را می خواند.در نتیجه تفاوت سرعت بین CPU  و دستگاه های I/O   بسیار زیاد است.

3   - تخصیص CPU   در چند برنامه ای انحصاری(Non Preemptive  ) است .

 

 

استفاده از فناوی دیسک ، موجب افزایش سرعت دستگاه های I/o  شده است . به جای اینکه کارت ها از طریق کارت خوان به حافظه خوانده شوند . سپس کاربر پردازش شود کارت ها مستقیماً به دیسک خوانده میشوند .{سیلبر شاتس}

ارسال توسط