زمانبندی
در علم کامپیوتر، هسته (kernel) اساسیترین بخش یک سیستم عامل است. هسته سیستم عامل برنامهای است که دسترسی ایمن به سختافزار را برای برنامههای گوناگون فراهم میکند. به علت تعدد برنامههای کامپیوتری، همچنین از آنجایی که دسترسی به سختافزار محدود است، هسته از طریق تکنیکی که Multiplexing نامیده میشود، تصمیم میگیرد که یک برنامه چه وقت و به چه مدت میتواند بخشی از سختافزار را در اختیار بگیرد. از آنجایی که دسترسی مستقیم به سختافزار میتواند بسیار پیچیده باشد، معمولا هسته سیستمهای عامل مجموعهای از سختافزارهای مجرد را پیادهسازی میکنند. این مجردسازی پیچیدگیهای سختافزاری را پنهان میکند و رابطی (Interface) ساده و یکنواخت برای سختافزار فراهم میکند که استفاده از آن را برای برنامهنویسان آسانتر میکند.
برای اجرای یک برنامه بر روی کامپیوتر وجود هسته در سیستم عامل ضروری نیست. برنامهها میتوانند مستقیما بر روی کامپیوتر بارگذاری و اجرا شوند، به شرط آنکه نویسنده برنامه توانایی نوشتن چنین برنامههایی را، بدون پشتیبانی سیستم عامل و انتزاع سختافزاری داشته باشد. اجرای برنامهها بدون استفاده از سیستم عامل، در بسیاری از کامپیوترهای اولیه روش معمولی بوده است. البته، در این روش برای اجرای برنامههای مختلف لازم بود که مجددا کامپیوتر راهاندازی (Reset) و برنامه بارگذاری شود. سرانجام برای رفع این مشکل برنامههای کمکی کوچکی مثل loaderها و debuggerها ایجاد شدند، که حین اجرای برنامههای مختلف در حافظه باقیمیماندند یا از حافظه ROM بارگذاری میشدند. با تولید این برنامههای کمکی پایه و اساس چیزی که ما آن را هسته سیستم عامل میخوانیم شکل گرفت.
چهار نوع دسته بندی کلی برای هسته سیستمهای عامل وجود دارد:
1. هسته یکپارچه (Monolithic)، که انتزاع (abstraction) [1] سختافزاری نیرومندی را فراهم میآورد.
2. ریزهسته (Microkernel)، که مجموعهای کوچک از انتزاع ساده سختافزاری را به وجود میآورد و از نرمافزارهایی با نام سرویسدهنده (Server) استفاده میکنند تا قابلیت بیشتری را ارایه دهند.
3. هسته دورگه (Hybrid) یا ریزهسته اصلاح شده، که شباهت زیادی به ریزهسته دارد، با این تفاوت که به منظور اجرای سریعتر، شامل کدهایی اضافی در فضای هسته میباشد.
4. برونهسته (Exokernel)، که هیچ گونه انتزاعی را فراهم نمیکنند، ولی با استفاده از کتابخانهای از توابع (libraries) برای افزایش کارایی، دسترسی مستقیم یا نیمهمستقیم به سختافزار را فراهم میکنند.
هسته یکپارچه (Monolithic)
هسته یکپارچه (Monolithic)، یک رابط مجازی سطح بالا بر روی سختافزار تعریف میکند. همچنین مجموعهای از توابع برای پیادهسازی سرویسدهندههای سیستم عامل، مانند مدیریت پردازشها (Process Management)، همزمانی (Concurrency) و مدیریت حافظه را فراهم میآورد.
حتی اگر تمام اجزایی که به این عملیات سرویس میدهند از کل مجموعه هسته جدا باشند، از لحاظ همبستگی کد در تنگنا سختی خواهیم بود و با توجه به اینکه تمام اجزا در یک فضا اجرا میشوند، بروز خطایی در یکی از آنها میتواند کل سیستم را مختل کند. از طرفی دیگر، وقتی که پیادهسازی تکمیل و قابل اطمینان شد، شرایط همبستگی تنگاتنگ بین اجزای داخلی باعث میشود که امکانات سطح پایین سیستم به طور موثری در دسترس قرار گیرد و منجر به یک هسته یکپارچه، با کارآیی بسیار بالا شود.
طرفداران هستههای یکپارچه عقیده دارند که اگر کدی خطا دارد نبایستی در هسته قرار داشته باشد (متعلق به هسته باشد). چرا که در غیر این صورت، برتری اندکی نسب به ریزهستهها خواهند داشت. سیستمهای عامل Linux و Unix را میتوان جزو پیشرفتهترین هستههای یکپارچه دانست
زمانبندی نوبت گردشی
این زمانبندی یکی از قدیمیم ترین , ساده ترین , عادلانه ترین و رایجترین الگوریتم های زمانبندی است و از نوع غیر انحصاری (preemptive) میباشد. این الگوریتم شبیه FCFS است ولی به هر پردازش حداکثر به میزان زمانی مشخصی CPU داده میشود.
به عبارتی دیگر یک واحد کوچک زمانی به نام کوانتوم زمانی (time quantum) با برش زمانی (time slice) تعریف میشود که معمولاً بین 10 تا 100میلی ثانیه است و هر پروسس حداکثر به این میزان میتواند CPU را در اختیار بگیرد. هنگامی که پردازشی CPU را در اختیار دارد دوحالت ممکن است رخ دهد .
یا انفجار محاسباتی جاری کمتر از یک کوانتوم زمانی است که در این حالت پردازش داوطلبانه CPU را رها میکند و منتظر اتمام عملیات I/O میشود (مانند FCFS) و یا اینکه انفجار محاسباتی بیشتر از یک کوانتوم زمانی است که در این حالت تایمر یک وقفه به سیستم عامل میدهد و سیستم عامل با تعویض متن (Context switch) CPU را از پردازش جاری گرفته و آن را به ته صفآماده میفرستد, سپس از ابتدای صف آماده, پردازش دیگری را جهت اجرا انتخاب میکند :
از این روش در سیستمهای اشتراک زمانی استفاده شده تا زمانهای پاسخ برای کاربران محاورهای بصورت مناسب گارانتی شود.