در این پست برنامه الگوریتم های زمانبندی در #C سی شارپ برای چهار الگوریتم معروف زمانبندی یعنی FIFO , SJF , SRT و Round Robin قرار داده شده است. الگوریتم های زمان بندی پردازنده یکی از مواردی است که باید در مورد مدیریت فرآیندها در سیستم عامل مورد بررسی قرار گیرد. در این پست یک برنامه کامل گرافیکی روند کار الگوریتم های FIFO , SJF , SRT و Round Robin را نشان می دهد و حتی می توان نتایج این چهار الگوریتم را با یکدیگر مقایسه کرد.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم های زمانبندی
یک فرآیند (Process) اساساً یک برنامه در حال اجرا است. منظور از برنامه در حال اجرا، کاری است که توسط زمان بند کار، انتخاب و وارد گردونه اجرا شده است ولی هنوز پایان نیافته و از سیستم خارج نشده است. اما الزاماً در حال حاضر CPU را در اختیار ندارد. ابزار زمانبندی پردازش به منظور زمانبندی پردازشهای مختلف که بر مبنای الگوریتمهای زمانبندی خاصی به CPU تحویل داده میشوند، مورد استفاده قرار میگیرد. شش الگوریتم زمانبندی پردازش وجود دارند که در این سورس کد به بررسی چهار مورد از آنها میپردازیم.
- زمانبندی «اجرا به ترتیب ورود» (First Come First Served) یا به اختصار (FCFS) یا همان FIFO
- زمانبندی « اولین کوتاهترین کار » (Shortest Job First) یا به اختصار (SJF)
- زمانبندی کوتاهترین زمان باقیمانده (Shortest Remaining Time)
- زمانبندی نوبت گردشی یا راند رابین (Round Robin) یا به اختصار (RR)
در برنامه الگوریتم های زمانبندی این جهار الگوریتم بطور کامل نوشته شده و حتی می توان آنها را باهم مقایسه نمود.
قسمت هایی از سورس کد
namespace Scheduling { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } ArrayList files = new ArrayList(); private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.Multiselect = true; openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; openFileDialog1.Title = "Select a text file"; String[] s = null; if (openFileDialog1.ShowDialog() == DialogResult.OK) { s = openFileDialog1.SafeFileNames; foreach(String path in openFileDialog1.FileNames) files.Add(path); for (int i = 0; i < s.Length; i++) { if(!comboBox1.Items.Contains(s[i])) comboBox1.Items.Add(s[i]); } } } private void button2_Click(object sender, EventArgs e) { if (comboBox1.SelectedIndex == -1) { MessageBox.Show(" ابتدا یک فایل ورودی تعیین کنید "); return; } if (comboBox2.SelectedIndex == -1) { MessageBox.Show("بایستی الگوریتم زمانبندی مشخص کنید"); return; } int fileIndex = comboBox1.SelectedIndex; int algoIndex = comboBox2.SelectedIndex; InputForm i = new InputForm((String)files[fileIndex]); if (!i.checkFormat()) { MessageBox.Show("فرمت فایل ورودی درست نیست لطفاً اصلاح کنید"); i.External = false; i.ShowDialog(); InputForm j = new InputForm((String)files[fileIndex]); if (!j.checkFormat()) { MessageBox.Show("لطفاً یک فایل دیگر را امتحان کنید"); return; } } if (textBox1.Text == "") { MessageBox.Show("برای تعویض متن یک زمان تعیین کنید"); return; } try { int k = Int32.Parse(textBox1.Text); if (k <= 0) { MessageBox.Show("تعویض متن بایستی بصورت عدد صحیح مثبت باشد"); return; } if (k > 20) { MessageBox.Show("عدد تعویض متن از 20 بیشتر نباشد"); return; } } catch { MessageBox.Show("تعویض متن باید بصورت عدد صحیح باشد"); return; } Algorithm algorithm = newAlgorithm(algoIndex); algorithm.loadProcesses((String)files[fileIndex]); algorithm.Overhead = Int32.Parse(textBox1.Text); String text = ""; switch (algoIndex) { case 0: text = "استراتژی الگوریتم FIFO - First Input First Output"; break; case 1: text = " استراتژی الگوریتم SJF - Shortest Job First"; break; case 2: text = " استراتژی الگوریتم SRT - Shortest Remaining Time"; break; case 3: text = " استراتژی الگوریتم RR - Round Robin"; break; default: text = ""; break; } DisplayForm x = new DisplayForm(algorithm); x.Text = text; x.Show(); } private Algorithm newAlgorithm(int type) { switch (type) { case 0: return new FCFS(); case 1: return new SJF(); case 2: return new SRTF(); case 3: return new RR(); default: return null; } } private void button3_Click(object sender, EventArgs e) { InputForm x = new InputForm(); x.ShowDialog(); } private void MainForm_Load(object sender, EventArgs e) { } } }
تصاویر خروجی پروژه
ویدئوی معرفی محصول
درباره الگوریتم زمانبندی در سی شارپ
برنامه الگوریتم های زمانبندی در #C سی شارپ محصولی است که در این پست به آن پرداخته شده است. محصول در نرم Microsoft Visual Studio نوشته شده است محصول بصورت کامل توسط گروه پشتیبانی پی استور تست و بازبینی شده و دارای کامنت گذاری برای هر دستور می باشد. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید.
مباحث مرتبط با الگوریتم زمانبندی در سی شارپ و سی پلاس پلاس
مباحث پیشنهادی در زمینه الگوریتم های تخصیص حافظه
تاریخ انتشار: | 16 آذر 1398 |
---|---|
تاریخ بروزرسانی: | 12 فروردین 1399 |
حجم فایل: | 144 کیلوبایت |
فرمت فایل | sln. در قالب ویژوال استودیو |
نسخه: | 1.0 |
هماهنگی با: | Microsoft Visual Studio 2013 و بالاتر |
تاکنون 422 نفر این محصول را تهیه کرده اند و 3 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 69,000 تومان
تاریخ انتشار: | 16 آذر 1398 |
---|---|
تاریخ بروزرسانی: | 12 فروردین 1399 |
حجم فایل: | 144 کیلوبایت |
فرمت فایل | sln. در قالب ویژوال استودیو |
نسخه: | 1.0 |
هماهنگی با: | Microsoft Visual Studio 2013 و بالاتر |
3 بازخورد (مشاهده نظرات)
قیمت: 69,000 تومان
سیامک عطایی
خیلی خوبه که هر 4 الگوریتم رو پوشش دادین فقط کاش مثل سورس کدهای دیگه یک گزارش کار هم داشت.
ky
سلام مهندس وقت بخیر میخواستم بپرسم آیا فایل pdf توضیحات این پروژه , قرار داده شده یا خیر؟
مدیریت و پشتیبانی
با سلام و عرض ادب خدمت شما دوست عزیز
این برنامه صرفاً سورس کد هست و فایل توضیحاتی نداره البته همانطور که در فیلم نحوه اجرای پروژه مشخص هست. کدها بصورت روان نوشته شدند و براحتی از ساختار پروژه می شه فهمید چی به چیه.
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.