Алгоритмы планирования работы систем реального
времени могут быть статическими или динамическими. Первый из них
предусматривает принятие решений по планированию еще до запуска системы, а
второй - их принятие в реальном масштабе времени. Статическое планирование
работает только при условии предварительного обладания достоверной информацией
о выполняемой работе и о крайних сроках, которые нужно соблюсти. Алгоритмы
динамического планирования подобных ограничений не имеют.
Описание программы
ВАРИАНТ 3. МОДЕЛЬ ОБСЛУЖИВАНИЯ ПРОЦЕССОВ С АБСОЛЮТНЫМИ ПРИОРИТТЕТАМИ ОБСЛУЖИВАНИЯ И ЗАДАННЫМ КВАНТОМ ВРЕМЕНИ.
В теоретической части работы следует написать о планировании вычислительных заданий, процессов и потоков, а в практической - написать программу, реализующую описанную далее модель вычислений.
При таком варианте обслуживания процессы обрабатываются в течение фиксированного интервала (кванта) времени. При поступлении нового процесса с более высоким приоритетом, чем обслуживаемый, выполнение последнего останавливается, и начинается обработка только что поступившего. Из уже частично обработанных, но не завершенных, и вновь поступивших в систему процессов формируется очередь. Для выполнения в течение следующего кванта времени из очереди выбирается процесс с наибольшим приоритетом. Если в очереди оказалось два или более процессов с одинаковыми приоритетами, то они обслуживаются в порядке их частичной обработки. Тот процесс, который обрабатывался последним, будет обработан первым и наоборот. Процесс, выполнение которого прекращено, поступает в очередь и вновь продолжит выполнение тогда, когда в момент наступления очередного кванта времени его приоритет окажется наибольшим из находящихся в очереди.
Исходные данные:
-величина кванта времени (Tкв = 1);
поток заявок на выполнение процессов (имя заявки (name), время поступления (t0), приоритет (Pr), время исполнения(T)).
Программа:.cs
using System;System.Collections.Generic;System.Linq;System.Windows.Forms;WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]void Main()
{.EnableVisualStyles();.SetCompatibleTextRenderingDefault(false);.Run(new Form1());
}
}
}
Form1.cs
using System;System.Collections.Generic;System.IO;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication1
{partial class Form1 : Form
{Form1()
{();
}void Form1_Load(object sender, EventArgs e)
{
}void button1_Click(object sender, EventArgs e)
{.Clear();
//Считывание из файлаa = new StreamReader(@"d:\Kursovaya.txt");line;[,] tabl = new string[5, 4];(int i = 0; i < 5; i++)
{= a.ReadLine();[] koord = line.Split(',');(int j = 0; j < 4; j++)
{[i, j] = koord[j];
}
}
//Вывод в richTextBox1(int i = 0; i < 5; i++)
{.AppendText(" ");(int j = 0; j < 4; j++)
{.AppendText(tabl[i, j] + " ");
}.AppendText("\n\n");
}
//.Text = tabl[0, 0];.Text = tabl[1, 0];.Text = tabl[2, 0];.Text = tabl[3, 0];.Text = tabl[4, 0];.Visible = true;.Width = 660;.Height = 336;
}void Form1_Paint_1(object sender, PaintEventArgs e)
{g = e.Graphics;xc = 320; yc = 279;
//определение начала новой системы координат.TranslateTransform(xc, yc);
//вычерчивание осей координат
g.DrawLine(new Pen(Color.Yellow, 5.0f),
this.Width, 0, this.Width, 0);.DrawLine(new Pen(Color.Yellow, 5.0f),
, -this.Height, 0, this.Height);
//Шкалирование(int i = 0; i < 315; i+=15)
{(i % 25 != 0)
{.DrawLine(new Pen(Color.Yellow, 1.5f), i, 5, i, -279);
}
{.DrawLine(new Pen(Color.Yellow, 3f), i, 10, i, -279);
}
}
//Описание значений цветов для процессов.DrawLine(new Pen(Color.Green, 3f), -157, -30, -127, -30);
g.DrawLine(new Pen(Color.Red, 3f), -157, -43, -127, -43);.DrawLine(new Pen(Color.Black, 3f), -157, -57, -127, -57);
//График(label1.Visible == true)
{(int i = 0; i > -200; i -= 40)
{(i == 0)
{.DrawLine(new Pen(Color.Red, 3f), 15, -45 + i, 150, -45 + i);.DrawLine(new Pen(Color.Black, 3f), 150, -45 + i, 180, -45 + i);.DrawLine(new Pen(Color.Black, 3f), -5, -45 + i, 15, -45 + i);
}(i == -40)
{.DrawLine(new Pen(Color.Green, 3f), -5, -45 + i, 15, -45 + i);.DrawLine(new Pen(Color.Black, 3f), 15, -45 + i, 45, -45 + i);
}(i == -80)
{.DrawLine(new Pen(Color.Green, 3f), -5, -45 + i, 30, -45 + i);.DrawLine(new Pen(Color.Red, 3f), 30, -45 + i, 45, -45 + i);.DrawLine(new Pen(Color.Black, 3f), 45, -45 + i, 60, -45 + i);.DrawLine(new Pen(Color.Red, 3f), 60, -45 + i, 105, -45 + i);.DrawLine(new Pen(Color.Black, 3f), 105, -45 + i, 150, -45 + i);
}(i == -120)
{.DrawLine(new Pen(Color.Green, 3f), -5, -45 + i, 45, -45 + i);.DrawLine(new Pen(Color.Red, 3f), 45, -45 + i, 60, -45 + i);.DrawLine(new Pen(Color.Black, 3f), 60, -45 + i, 75, -45 + i);
}(i == -160)
}
}
}
}void richTextBox1_TextChanged(object sender, EventArgs e)
{
}void label9_Click(object sender, EventArgs e)
{
}
}
}
Принтскрин ввода данных
Принтскрин выполненной программы
Список
используемой литературы
1. Назаров С.В., Широков А.И. Многопользовательские операционные системы. - М.: Изд. дом МИСиС, 2010. 194 стр.
. Таненбаум Э. Современные операционные системы. Изд-е 4. СПб.: Питер, 2010.
. Гордеев А.В. Операционные системы:
Учебник для вузов. 2-е изд. - СПб.: Питер, 2007. - 416 с.: ил.