برنامه الگوریتم های زمانبندی در #C سی شارپ

در این پست برنامه الگوریتم های زمانبندی در #C سی شارپ برای چهار الگوریتم معروف زمانبندی یعنی FIFO , SJF , SRT و Round Robin قرار داده شده است. یک فرآیند (Process) اساساً یک برنامه در حال اجراست. منظور از برنامه در حال اجرا، کاری است که توسط زمان بند کار، انتخاب و وارد گردونه اجرا شده است ولی هنوز پایان نیافته و از سیستم خارج نشده است؛ اما الزاماً در حال حاضر CPU را در اختیار ندارد. الگوریتم های زمان بندی پردازنده یکی از مواردی است که باید در مورد مدیریت فرآیندها در سیستم عامل مورد بررسی قرار گیرد.

در این پست یک برنامه کامل گرافیکی روند کار الگوریتم های FIFO , SJF , SRT و Round Robin را نشان می دهد و حتی می توان نتایج این چهار الگوریتم را با یکدیگر مقایسه کرد.

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

ابزار زمان‌بندی پردازش به منظور زمان‌بندی پردازش‌های مختلف که بر مبنای الگوریتم‌های زمان‌بندی خاصی به 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

برنامه الگوریتم های زمانبندی در #C

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

مقایسه الگوریتم های FIFO SJF SRT Round Robin

ویدئوی معرفی محصول

درباره محصول

برنامه الگوریتم های زمانبندی در #C سی شارپ محصولی است که در این پست به آن پرداخته شده است. محصول در نرم Microsoft Visual Studio نوشته شده است محصول بصورت کامل توسط گروه پشتیبانی پی استور تست و بازبینی شده  و دارای کامنت گذاری برای هر دستور می باشد. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید.

1 دیدگاه برای برنامه الگوریتم های زمانبندی در #C سی شارپ

  1. programstore

    نظرات و پیشنهادات خود را با ما در میان بگذارید.

دیدگاه خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اطلاعات فروشنده

  • نام فروشگاه: امین جلیل زاده
  • فروشنده: امین جلیل زاده
  • آدرس: آذربایجان شرقی
  • 4.91 4.91 امتیاز از 246 دیدگاه