50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

الگوریتم های زمانبندی در سیستم عامل ها

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

پرسیده شده در 1394/08/03 توسط

2 پاسخ

1

سلام

در لینوکس لگوریتمی برای این کار نیست و jobهای مختلف با Crontab ,anaCron یا کامند at انجام میگیره.

به طور مثال اگه بخوایم در ساعت خاصی از یک فایلی پشتیبانی بگیریم با دستور at به صورت زیر باید عمل کنیم:

  1. tar varlog | at 2300

job 2 at Tue Oct 27 23:00:00 2015

واسه اولیت دهی هم سیستم دایرکتوری <text>

varspool/at

<text>رو چک میکنه که ببینه چه زمان باید دستور چه کسی رو اجرا کنه.

یکی از خطوط Crontab هم به شکل زیر هستش :

  1. For example, you can run a backup of all your user accounts
  2. at 5 a.m every week with:

0 5 1 tar -zcf varbackupshome.tgz home/

مزایا که خیلی زیاد دارن ، اما cron نصبت به at مزیت های زیادتری داره، به طور مثال اگه لازم باشه که یک دستوری هر ساعت اجرا بشه در فایل <text>

etccron.hourly

<text>مشخص میکنیم که ترتیب اجراش بر اساس حروف هست.

زمان بندی های بیشتری هم داره :

cron.daily/   cron.hourly/  cron.monthly/ cron.weekly/

anacron یک مزیتی که نصبت به crontab و بقیه داره اینه که میتونه دستورات رو در صورت خاموش بودن سیستم هم انجام بده، به طور مثال اگه سیستم خاموش بود در ساعتی که باید دستور اجرا شه سیستم روشن میشه یا وقتی برق قطع شد، بعد از وصل شدن سیستم بالا میاد و job رو انجام میده.

البته با patch هم میشه job تعریف کرد و مثل at هستش اما وقتی که load Avrage سیستم زیر یک مقدار بره انجام میده و uptime هست.

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

در ویندوز هم نرم افزارهای زیادی برای اینکار وجود داره که من باهاشون آشنایی ندارم اما با امکانی که خود ویندوز فراهم کرده (Schedule Task) میشه یک task رو در زمان مشخص اجرا کرد.

باز اگه دوستان اطلاعات دیگری دارن در اختیارمون بزارن ممنون میشم.

پاسخ در 1394/08/05 توسط
2

دوست عزیز ممنون بابت وقتی که گذاشتی و جواب دادی . ولی من منظروم الگوریتم هایی زمانبندی ایی بود که بسته به نوع سیستم عامل می تونه متفاوت بشه . مثلا توی ویندوز ما الگوریتم هایی داریم که می تونن بر حسب اولیت یا بر حسب صف بازخورد چند صفی باشن . اصطلاخا به اولی میگن Priority scheduling و به دومی میگن Multi level Feedback queue . جالا اینا می تونن انحصاری باشن یا غیر انحصاری . یعنی می تونن Cpu رو یا به زور از فرایند در حال اجرا بگیرن و روی یه فرایند دیگه سوییچ کنن یا اینکه اصلا نمی تونن CPU رو بگیرن تا اینکه اون فرایند به اتمام برسه . در لینوکس هم الگوریتم های زمانبندی مبتنی بر کوانتوم هم داریم ولی توی نسخه های مختلف کمی با هم دیگه متفاوت هستش . جوابی که شما دادی در سطح کاربر بود اگه اشتباه نکنم . ولی توی درس سیستم عامل این مسایل رو توی سطخ هسته در نظر میگین . اینکه مثلا برای کارایی که شما گفتید چه سیاستی رو توسط CPU بتونیم پیاده سازی کنیم تا مسایلی مثل زمان پاسخ به فرایند یا زمان برگشت یا مسایل مربوط به قحطی برای فرایند پیش نیاد و از این حرفا .

ولی بازم ممنون که از اطلاعات خوبت برام نوشتی . ممنون

پاسخ در 1394/08/07 توسط

پاسخ شما