ما در بخش اول، به اینکه سیستم عامل چه کاری انجام میدهند و در کل معرفی درباره سیستم عامل داشتیم، اما در این بخش قرار است به جزئیات اجرایی سیستم کامپیوتری بپردازیم که نیازمند دانش کلی در مورد ساختار یک سیستم کامپیوتری است. این بخش به طور متمرکز به سازمان سیستم - کامپیوتر می پردازد. در اصل قرار است در مقاله بخش دوم به اینکه CPU و وقفه چه کاری را انجام میدهند و کامپیوتر چه زمانی به آن نیاز دارد بحث کنیم.
عملیات سیستم
یک سیستم کامپیوتری همه منظوره، شامل یک یا بیشتر CPU و تعدادی کنترل کننده دستگاه است ،که از طریق یک باس مشترک به حافظه اشتراکی دسترسی دارند. هر کنترل کننده دستگاه مسئول نوع خاصی از دستگاه است. برای مثال (درایورهای دیسک دستگاه صوتی تصویری و نمایشگرهای ویدیویی). CPU و کنترل کننده های دستگاه برای دسترسی به سیکل های حافظ با هم رقابت می کنند. برای مدیریت دسترسی به حافظه مشترک یک کنترل کننده حافظه در نظر گرفته شده است که وظیفه آن همگام سازی و هم همزمان سازی دسترسی به حافظه است.
یک کامپیوتر برای شروع اجرا به یک برنامه مقدماتی نیاز دارد. این برنامه در حافظه ROM و یا حافظه EEPROM ذخیره میشود که از آن میان افزار نام برده میشود. این برنامهها تمامی مولفههای سیستم را مقدار دهی اولیه میکند این برنامه همچنین بایستی بداند که سیستم عامل را چگونه بار کرده و اجرای سیستم را آغاز کند. جهت دسترسی به این هدف برنامه مورد نظر بایستی در حافظه کرنل سیستم عامل قرار بگیرد.
وقوع یک رویداد معمولاً با استفاده از یک وقفه توسط سخت افزار و نرم افزار اطلاع داده میشود. سخت افزار ممکن است با ارسال یک سیگنال به CPU در هر زمانی که معمولاً از طریق باس سیستم انجام میشود یک وقفه را دنبال کند؛ در حالی که نرم افزار این کار را با اجرای یک برنامه خاص که فراخوانی سیستم نام دارد انجام می دهد.
زمانی که به CPU وقفه داده میشود، انجام کارهای عادی خود را متوقف نموده و به طور موقت اجرا را به یک مکان ثابت و مشخص انتقال می دهد. این مکان ثابت شامل آدرس شروع این روتین سرویس وقفه است. سپس سرویس روتین وقفه آغاز شده و تشکیل می گردد. پس از تکمیل، CPU به محاسبات وقفه داده شده برمیگردد.
وقفه بخش مهمی از معماری کامپیوتر است. هر طراحی کامپیوتر مکانیزم خاص خود را دارد ولی این مکانیزم ها در چندین عملکرد با هم مشترک هستند و فقط بایستی کنترل را به روتین سرویس وقفه منتقل کند. تمامی وقفه دارای یک شماره از پیش تعریف شده هستند که به صورت غیر مستقیم با استفاده از یک جدول اشاره گر فراخوانی می شود. این جدول معمولاً در حافظه سطح پایین سیستم ذخیره میشود (100 خانه اول). این مکان آدرس روتین های سرویس وقفه مختلف را برای دستگاه های متفاوت در خود نگه می دارند. معماری وقفه همچنین باید آدرس دستورالعمل وقفه را داده شده را در خود ذخیره کند تا پس از تکمیل روتین وقفه ادامه کار را از آن دستورالعمل آغاز کند.
ساختار ذخیره سازی
CPU دستورالعملها را تنها از حافظه می تواند بررسی کند. به عبارت دیگر هر دستورالعملی برای اجرا شدن باید در حافظه قرار بگیرد. کامپیوترهای مدرن، برنامههایشان را از حافظه قابل برنامه نویسی مجدد که حافظه اصلی نامیده میشود اجرا میکنندکه معمولا این حافظه با نام RAM شناخته می شود. حافظه اصلی معمولاً با استفاده از فناوری نیمه هادی DRAM پیاده سازی می شود از آنجایی که حافظه های RAM تغییر داده نمی شود، تنها برنامههای ثابت در آن ذخیره می گردند. EEPROM ها نیز چنین ویژگی هایی دارند و لذا در کاربردهای مانند اسمارتفونها که تنها به برنامهریزی محدودی نیاز دارند به کار برده میشود.
تمامی فرم های حافظه، یک آرایه از کلمات را فراهم میکنند. هر کلمه نیز آدرس خودش را دارد و این تعاملات با استفاده از یک توالی بار نمودن و ذخیرهسازی دستورالعمل ها در آدرس های خاص حافظه انجام می گیرد. دستورالعمل بار نمودن یا همان لود کردن، یک کلمه از حافظه اصلی را به یک رجیستر درونی CPU منتقل می کند. در حالی که دستورالعمل ذخیره سازی محتویات یک رجیستری را به حافظه اصلی منتقل می نماید. بایستی توجه نمود که واحد حافظه تنها یک رشته از آدرس های حافظه را میبیند و هیچ اطلاعاتی در مورد چگونگی تولید آن ها ندارد و نمیداند که این رشته یا دستورالعمل و یا این که داده است.
به طور ایده آل ما خواهان آن هستیم که برنامه ها و داده ها به صورت دائم و همیشگی در حافظه اصلی ذخیره شوند، اما این امر به چند دلیل امکان پذیر نیست: دلیل اول حافظه اصلی برای ذخیره سازی دائمی تمامی برنامه ها و داده های مورد نیاز خیلی کوچک است و دلیل دوم حافظه اصلی یک حافظه فرار است و زمانی که منبع تغذیه موردنظر آن قطع شود اطلاعات از بین میرود.
بنابراین بیشتر سیستم های کامپیوتری حافظه ثانویه را به عنوان یک توسعه از حافظه اصلی در اختیار میگذارند. نیازمندی اصلی حافظ های ثانویه این است که بایستی بتوانند مقدار داده زیادی را برای همیشه در خود ذخیره نمایند. رایج ترین وسیله حافظه ثانویه، دیسک های مغناطیسی هستند که به هم داده و هم برنامه را می توانند در خود ذخیره می کنند.
ساختار ورودی – خروجی
دستگاه های ذخیره سازی تنها یکی از انواع زیاد دستگاه ورودی خروجی در یک کامپیوتر هستند. بخش بزرگی از کد سیستم عامل نیز به دلیل اهمیت این دستگاه به مدیریت ورودی خروجی اختصاص یافته است.
یک دستگاه کامپیوتری مدرن، شامل CPU و چندین کنترل کننده است که از طریق یک باس مشترک با هم ارتباط دارند هر کنترل کننده مسئول نوع خاصی از دستگاه است.بسته به نوع کنترل کننده چندین دستگاه ممکن است که به یک واسطه کنترل کننده وصل شوند. برای مثال میتوان 7 یا بیشتر دستگاه را به یک واسط سیستم کامپیوتری کوچک (SCSI) متصل کرد. یک کنترل کننده دستگاه مقدار حافظه موقت محلی و یک مجموعه از رجیستر های خاص منظوره را نگهداری می کند.
این کنترل کننده همچنین مسئول انتقال داده ها بین دستگاه های جانبی و حافظه موقت محلی شان هستند. معمولاً سیستم عامل ها دارای یک راه انداز دستگاه (Device Driver) برای هر کنترل کننده دستگاه هستند.برای شروع عملیات ورودی خروجی، راه اندازی دستگاه رجیسترهای مورد نیاز را درون کنترل کننده را درون کنترل دستگاه وارد میکند. کنترل کننده دستگاه نیز این رجیستر ها را چک میکند تا تعیین نماید که چه عملی را باید انجام دهد.
کنترل کننده، انتقال داده را از دستگاه به حافظه محلی اش آغاز میکند. هنگامی که انتقال داده کامل شد، کنترل کننده دستگاه، راه انداز دستگاه را به وسیله یک وقفه مطلع میکند که عملیات به پایان رسیده است. راه انداز دستگاه سپس کنترل را در دست سیستمعامل بازمیگرداند. علاوه بر آن ،اگر عملیات مورد نظر خواندن بود، داده ها یا اشاره گرهای آن و یا عملیات دیگری بود، اطلاعات کنترلی را نیز بر می گرداند.
این فرم ورودی خروجی مبتنی بر وقفه، برای انتقال دادههای با حجم کوچک مناسب است. اما برای انتقال داده های حجیم می تواند بار های زیادی را تولید کند. برای حل این مشکل، از دسترسی حافظه مستقیم (DMA) استفاده میشود. در این رویه، پس از اینکه بافرها، اشاره گرها و شمارشگر های دستگاه ورودی و خروجی راه اندازی شدند، کنترل کننده دستگاه تمامی بلوک داده را به طور مستقیم از حافظه با فلش به حافظه اصلی و بالعکس منتقل می کند؛ بدون اینکه نیازی به دخالت CPU باشد.
در این حالت، تنها یک وقفه و آن هم پس از انتقال کامل بلوک داده برای CPU فرستاده می شود، ولی در روش قبلی به ازای هر بایت می بایستی که یک وقفه تولید می شد.لذا در این روش قابلیت کارایی پردازنده افزایش می یابد چرا که در حین اینکه عملیات ورودی خروجی در حال انجام است میتواند به کارهای دیگر خود بپردازد. برخی از سیستمهای پیشرفته تر از سوئیچ ها به جای معماری باس استفاده میکنند. در این سیستم به طور همزمان چندین مولفه میتواند با مولفه های دیگر در ارتباط باشد. در این ساختار DMA اثربخش تر است.
مدیریت فرایند
هیچ برنامه اجرا نمیشود مگر اینکه دستورالعمل آن توسط CPU اجرا شده باشد. یک برنامه در حال اجرا یک فرآیند نامیده می شود. برای مثال یک برنامه کاربردی اشتراک زمانی همانند کامپایلر یک فرآیند است.
همچنین یک برنامه پردازشگر کلمه توسط یک کاربر در PC اجرا میشود و یک وظیفه سیستمی که یک خروجی را جهت چاپ به چاپگر می فرستد. لذا هم اکنون شما میتوانید یک فرآیند را به صورت یک کار یا یک برنامه اشتراک زمانی در نظر بگیرید اما بعداً خواهید دید که مفهوم فرآیند بسیار کلی تر است. یک فرایند یک سری منابع معین همانند زمان CPU حافظه فایل ها و دستگاه های ورودی و خروجی برای انجام وظایف نیاز دارد. دوباره تاکید می کنم که یک برنامه به تنهایی یک فرآیند نیست یک برنامه یک موجودیت غیرفعال است همانند محتویات یک فایل ذخیره شده در یک دیسک.
در حالی که یک فرایند یک موجودیت فعال است. یک فرایند تک رشته یک شمارنده برنامه دارد که دستورالعمل بعدی را جهت اجرا مشخص میکند. اجرای یک برنامه باید در یک توالی و نظم و ترتیب باشد. CPU دستورالعملهای یک فرایند را یکی پس از دیگری اجرا میکند تا فرآیند تکمیل شود. در هر زمان تنها یک دستورالعمل از هر فرایند اجرا میشود لذا ممکن است که دو فرایند مرتبط با یک برنامه باشند اما به صورت دو توالی اجرایی مجزا در نظر گرفته نمیشود یک فرایند چند رشتهای چندین شمارنده برنامه دارد که هر یک به دستورالعمل بعدی هم نداشته اشاره میکنند یک فرایند یک واحد کاری در یک سیستم است.
یک دستگاه شامل یک سری از فرآیندها است که برخی از آنها فرایندهای سیستم عامل که (در کد سیستم اجرا می شوند) هستند و مابقی فرآیندهای کاربر که (در کد کاربر اجرا می شوند) تمام این فرآیندها به طور بالقوه می تواند به طور همزمان از طریق مالتی پلکسینگ در یک CPU اجرا شوند. سیستم عامل در ارتباط با مدیریت فرآیندها کارهای زیر را بر عهده دارد:
- زمانبندی فرآیندها و رشته نخ ها در CPU
- ایجاد نموندن و از بین بردن فرآیندهای کاربر و سیستم
- معلق کردن و از نو آغاز کردن فرآیند ها
- فراهم کردن مکانیزمی برای همگام سازی فرآیند ها و ارتباطات آن
سخن پایانی
در این مقاله سعی شد تا درباره ساختار ذخیره سازی و ورودی - خروجی و همینطور عملیات سیستم بپردازیم و اگر دوست داشتین این مقاله رو به دوستان خود به اشتراک بگذارید. بخش بعدی مقاله در حال تولید کردن محتواست و بزودی منتشر میشود.
0 تا 100 یادگیری سیستم عامل - بخش اول
0 تا 100 یادگیری سیستم عامل - بخش سوم