Модель обслуживания процессов

Задание на разработку программы, реализующей модель обслуживания процессов с абсолютными приоритетами обслуживания и заданным квантом времени. Алгоритм задаваемых исходных данных. Тестовые примеры исходных данных и результатов работы программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.02.2014
Размер файла 184,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Федеральное государственное образовательное

учреждения высшего профессионального образования

Национальный исследовательский технологический университет

«МИСиС»

Институт ИТАСУ

Кафедра Инженерной кибернетики

КУРСОВАЯ РАБОТА

по дисциплине «Операционные системы и среды»

Выполнил: Мишин И.Д.

Группа: МИ-12-2

Проверил: Широков А.И.

МОСКВА 2013

Оглавление

1. Обработка процессов

1.1 Введение - процессы

1.2 Планирование процессов

2. Описание программы

2.1 Формулировка задания на разработку программы, реализующей модель обслуживания процессов с абсолютными приоритетами обслуживания и заданным квантом времени

2.2 Описание алгоритма и перечень задаваемых исходных данных

2.3 Исходный текст программы с пояснениями

2.4 Описание тестовых примеров исходных данных и результатов работы программы

3. Список используемой литературы

1. Обработка процессов

программа квант данные модель

1.1 Введение - процессы

В любой ОС центральный процессор обрабатывает процессы, переключаясь между ними и выделяя для обработки каждому из них миллисекунды. В каждый конкретный момент времени процессор способен обработать только один процесс. За секунду процессор успевает работать с несколькими процессами, создавая иллюзию псевдопараллелизма. Аппаратный параллелизм возможен только в многопроцессорных системах, имеющих в наличии не менее двух центральных процессоров. Постоянное переключение между несколькими процессами называется мультипрограммированием или многозадачным режимом работы.

При работе компьютера в многозадачном режиме, на нем могут быть активными несколько процессов, пытающихся одновременно получить доступ к одному процессору. Поэтому возникает необходимость выбрать, какой процесс запустить следующим. Отвечающая за это часть Операционной системы называется планировщиком, а используемый алгоритм - алгоритмом планирования.

Основная цель планировщика заключается в распределении времени процессоров между выполняющимися процессами. При этом алгоритм планирования должен удовлетворять требованиям, предъявляемым пользователями к вычислительной системе. Такими требованиями могут быть пропускная способность, время отклика, загрузка процессора и другое.

При разработке алгоритма планирования необходимо знать, в какой области будет применяться данная система и с какими задачами должен справляться алгоритм. Алгоритм планирования может решать следующие задачи: равнодоступность процессора, баланс, производительность, оборотное время, время отклика, пропорциональность и другие.

1.2 Планирование процессов

Все виды планирования, используемые в современных ОС, в зависимости от временного масштаба, делятся на долгосрочное, среднесрочное, краткосрочное и планирование ввода-вывода. Рассматривая частоту работы планировщика, можно сказать, что долгосрочное планирование выполняется сравнительно редко, среднесрочное несколько чаще.

Вид планирования

Выполняемые функции

Долгосрочное

Решение о добавлении задания (процесса) в пул

Среднесрочное

Решение о добавлении процесса к числу процессов полностью или частично размещенных в основной памяти.

Краткосрочное

Решение о том, какой из доступных процессов (потоков) будет выполняться процессором

Планирование ввода-вывода

Решение о том, какой из запросов процессов (потоков) на операцию ввода-вывода будет выполняться свободным устройством ввода-вывода

В операционных системах универсального назначения планирование является динамическим, т.е. решение принимается во время работы системы на основе анализа текущей ситуации. В данном случае, найденное решение редко бывает оптимальным.

В специализированных системах с определенным набором задач применяется статическое (предварительно) планирование. В этом случае планировщик принимает решение заранее, а не во время работы системы. В результате работы планировщика формируется таблица с указанием имени процесса и времени его обработки в процессоре. Статическое планирование меньше нагружает работу системы, чем динамическое.

Найденное решение реализуется с помощью краткосрочного планировщика (диспетчера), т.е. он переключает процессор с одного процесса (потока) на другой. Диспетчер вызывается при наступлении события, которое может приостановить текущий процессор или предоставить возможность прекратить выполнение данного процесса (потока) в пользу другого. Примерами данных событий могут являться: прерывание таймера, прерывание ввода-вывода, вызовы операционной системы, сигналы.

За время своего существования процесс может находиться в различных состояниях:

§ Выполнение - активное состояние потока, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

§ Ожидание - пассивное состояние потока, находясь в котором поток заблокирован по своим внутренним причинам;

§ Готовность - также пассивное состояние потока, но в этом случае поток заблокирован в связи с внешним по отношению к нему обстоятельством;

При планировании процессов применяются следующие алгоритмы:

§ «Первый пришел - первым обслужен», является наипростейшим из всех алгоритмов. Приоритет процесса не учитывается. Центральный процессор предоставляется каждому из процессов в порядке поступления запросов. При блокировке выполняемого процесса, запускается следующий процесс, стоящий в очереди. Когда заблокированный процесс переходит в состояние готовности, он поступает в конец очереди.

§ «Наименьший срок исполнения», является неприоритетным алгоритмом, учитывающим время исполнения процесса. При поступлении заявок, в первую очередь обрабатываются процессы с наименьшим временем исполнения. Данный алгоритм оптимален, если все задания доступны одновременно.

§ «Циклическое планирование». Каждому процессу назначается определенный квант времени для использования процессора. При истечении кванта времени выполняемый процесс блокируется, управление передается следующему процессу.

§ «Приоритетное планирование». Каждому процессу присваивается определенный приоритет, в зависимости от которого, он занимает место в очереди. В данной курсовой работе используется приоритетное планирование.

Приоритетное планирование разделяется на два типа: планирование с относительными и абсолютными приоритетами. В обоих случаях выполняться будет тот поток, у которого наибольший приоритет в очереди потоков. Из частично обработанных и новых потоков формируется очередь. Отличие заключается в моменте смены активного потока на следующий поток. Если в очереди оказалось два или более потока с одинаковыми приоритетами, то они обслуживаются в порядке их частичной обработки, то есть тот поток, который обрабатывался последним, будет обработан первым, и наоборот. В системе с относительными приоритетами активный поток выполняется до тех пор, пока он сам не покинет процессор, или не завершится, или не произойдет ошибка. В системе с абсолютными приоритетами выполнение активного потока может быть прервано еще и по причине появления потока с большим приоритетом, чем у активного потока.

2. Описание программы

2.1 Формулировка задания на разработку программы, реализующей модель обслуживания процессов с абсолютными приоритетами обслуживания и заданным квантом времени

Написать программу, реализующую модель обслуживания процессов с абсолютными приоритетами обслуживания и заданным квантом времени.

При таком варианте обслуживания процессы обрабатываются в течение фиксированного интервала (кванта) времени. При поступлении нового процесса с более высоким приоритетом, чем обслуживаемый, выполнение последнего останавливается, и начинается обработка только что поступившего. Из уже частично обработанных, но не завершенных, и вновь поступивших в систему процессов формируется очередь. Для выполнения в течение следующего кванта времени из очереди выбирается процесс с наибольшим приоритетом. Если в очереди оказалось два или более процессов с одинаковыми приоритетами, то они обслуживаются в порядке их частичной обработки. Тот процесс, который обрабатывался последним, будет обработан первым и наоборот. Процесс, выполнение которого прекращено, поступает в очередь и вновь продолжит выполнение тогда, когда в момент наступления очередного кванта времени его приоритет окажется наибольшим из находящихся в очереди.

1. Исходные данные:

· величина кванта времени;

· поток заявок на выполнение процессов (имя заявки, время поступления, приоритет, время исполнения).

2. Результаты работы модели, отображаемые на дисплее, должны для каждого момента времени, когда состояние системы изменяется, включать номер обслуживаемого процесса или фиксировать режим ожидания, а так же список процессов, составляющих очередь.

2.2 Описание алгоритма и перечень задаваемых исходных данных

Программа в качестве исходных данных принимает файл C:\data.txt, в первой строке которого задана величина кванта времени, а в последующих шести строках через запятую заданы четыре параметра каждого из шести процессов: имя процесса, время поступления, приоритет, время исполнения.

Data.txt:

1

a,0,1,3

b,1,1,3

c,2,2,3

d,3,4,2

e,4,5,1

Все основные расчеты программы (выбор процесса, который поступит процессору на обработку, формирование очереди процессов, присвоение процессору определенного состояния) происходят в «бесконечном цикле», который прекратиться, когда все процессы, полученные из исходных данных, будут иметь статут «выполнен».

Один проход в цикле - это один момент времени. Соответственно если квант времени равен двум, то два прохода цикла будет равняться одному кванту времени.

При смене очередного кванта времени, программа в цикле выбирает из незавершенных или вновь поступивших процессов, процесс с наибольшим приоритетом и передает его на обработку процессору (изменяет статус на «Обработка»).

Если же в данный момент времени нет переходя к очередному кванту времени, то программа в цикле проверяет вновь поступившие процессы и ставит их в очередь (изменяет статус на «Очередь»).

Параллельно с основной работой программы с процессами формируется таблица и выстраивается график.

Исходный код программы содержит два основных файла: Proc.cs и Form1.cs.

В файле Proc.cs описывается одноименный класс Proc, который служит прототипом процесса и содержит в себе все свойства процесса, такие как: время поступления (tp), время выполнения (ti), имя процесса (name), его статус (status), приоритет (p) и другие.

В свое время в файле Form1.cs содержится основной код программы. В нём создается массив p[], который содержит в себе экземпляры класса Proc (наши процессы). Данный массив доступен из любой функции и процедуры программы, что обеспечивает доступ к исходным данным и возможность производить необходимые расчеты.

Основной код программы также содержит две процедуры: button1_Click (обработка нажатия кнопки «Расчет») и button2_Click (обработка нажатия кнопки «Считать данные»).

При нажатии на кнопку «Считать данные» программа в цикле считывает данные из файла C:\data.txt. В случае возникновении ошибки (мало данных, неверный формат данных и т.п.) пользователь получит уведомление об ошибке. Для проверки на число используется функция int.TryParse(). Вывод ошибки осуществляет процедура MessageBox.Show(). Если считывание данных прошло успешно, то наш массив процессов p[] и переменная кванта времени Q получают свои значения из файла.

Если данные успешно считаны, то становится доступной кнопка «Расчет». В процедуре button1_Click содержится главный цикл программы do-while в котором происходит обработка процессов из массива p[].

До этого цикла посредствам стандартной библиотеки System.Drawing.Drawing2D происходит подготовка холста для рисования графика.

В главном цикле программы кроме алгоритма обработки процессов присутствует вывод текущего состояния системы в таблицу. Для этого используется стандартный компонент формы dataGridView1. Данные в таблицу заносятся в цикле, в котором у каждого процесса проверяется статус и время до конца обработки. После добавления информации в таблицу, по тем же данным выводится часть графика по средствам процедуры graph.DrawLine().

Цикл do-while будет работать до тех пор, пока все процессы из массива p[] не перейдут в статус «Выполнен» (p[i].status=”Выполнен”).

По окончании работы программы пользователь увидит подробную таблицу с описанием состояния процессов в каждый момент времени и график. Так же будет возможность повторить расчёт, но уже с другими исходными данными.

2.3 Исходный текст программы с пояснениями

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace Курсовая

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

struct proc // структура процессов

{

public string name;

public int priority;

public int time_in;

public int time_execution;

public bool ready;

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

{

}

private void button2_Click(object sender, EventArgs e)

{

openFileDialog1.ShowDialog();

}

private void button1_Click(object sender, EventArgs e)

{

{

string path = openFileDialog1.FileName;

int r = File.ReadAllLines(path).Length; // переменная, указывающая колличество процессов

proc[] all = new proc[r]; // определение массива стуктур процессов

bool right_input = true; // при некорректных входных данных получает значение false

int ex_prc_id = 0; // номер исполняемого процесса в массиве

int time = 0;

bool status = true; // при выполнении всех процессов получает значение false

// попытка считывания данных

try

{

string line;

StreamReader sr = new StreamReader(path);

int j = 0;

while ((line = sr.ReadLine()) != null)

{

string[] spots = line.Split(',');

all[j].name = spots[0];

all[j].time_in = int.Parse(spots[1]);

all[j].priority = int.Parse(spots[2]);

all[j].time_execution = int.Parse(spots[3]);

all[j].ready = false;

// проверка приоритета

if (all[j].priority > 5 || all[j].priority < 1)

{

throw new Exception();

}

richTextBox1.AppendText(all[j].name + " Time in:" + all[j].time_in + " Priority:" + all[j].priority + " Ex: " + all[j].time_execution + "\n");

j++;

}

sr.Close();

}

catch (Exception ex) //выдача ошибки

{

right_input = false;

MessageBox.Show("Некорректные входные данные");

}

if (right_input) //следующие действия выполняются, если входные данные корректны

{

int prior = 0;

for (int i = 0; i < all.Length; i++) if (prior > all[i].priority) prior = all[i].priority - 1;

while (status) //бесконенчный цикл, является таймером

{

int s = 0;

string line = ""; //содержит имена процессов в очереди

for (int i = 0; i < r; i++) //выбор процесса для выполнения

{

//зануление приоритета выполненного процесса

if (all[ex_prc_id].time_execution == 0)

{

all[ex_prc_id].priority = prior;

all[ex_prc_id].ready = true;

}

//выбор процесса, получающего управление процессором

if (all[i].time_in <= time && all[ex_prc_id].priority <= all[i].priority && all[i].time_execution != 0)

{

ex_prc_id = i;

}

//проверка выполнения процессов, если равно 0 - выход из цикла

if (all[ex_prc_id].ready) s += 1;

}

//инициализация переменной line, содержит имена процессов в очереди

for (int i = 0; i < r; i++)

{ if (all[i].time_in <= time && i != ex_prc_id && all[i].time_execution != 0) line += all[i].name + " "; }

//если все процессы выполнены

if (s == all.Length) status = false;

//заполнение таблицы

if (all[ex_prc_id].time_in <= time && all[ex_prc_id].time_execution > 0)

{

dataGridView1.Rows.Add(time, all[ex_prc_id].name, "выполнение", line);

all[ex_prc_id].time_execution--;

}

else { dataGridView1.Rows.Add(time, "", "бездействие"); }

time++;

}

}

}

}

}

}

2.4 Описание тестовых примеров исходных данных и результатов работы программы

Входной файл содержит следующие данные:

Результат работы программы:

3. Список используемой литературы

1. Назаров С.В., Широков А.И. «Многопользовательские операционные системы». М.: Изд. дом МИСиС, 2010. 194 с.

2. Таненбаум Э. Современные операционные системы. Изд-е 4. СПб.: Питер, 2010.

3. Гордеев А.В. Операционные системы: Учебник для вузов. 2-е изд. СПб.: Питер, 2007. 416 с.

4. http://en.wikipedia.org/wiki/Main_Page.

5. http://citforum.ru/operating_systems/manpages/index.shtml.

Размещено на Allbest.ru

...

Подобные документы

  • События для создания процесса при запуске операционной системы. Распределении времени процессоров между выполняющимися процессами. Программа, реализующая модель обслуживания процессов с абсолютными приоритетами обслуживания и заданным квантом времени.

    контрольная работа [142,4 K], добавлен 09.12.2013

  • Особенности разработки программы для ведения автоматизированной базы данных, организованной на информационных файлах. Тестовые наборы, проектирование кода программы. Принципы проведения испытаний и принципы проверки алгоритма на работоспособность.

    лабораторная работа [1,6 M], добавлен 23.11.2014

  • Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.

    курсовая работа [487,4 K], добавлен 18.12.2014

  • Проблемы и этапы построения имитационной модели системы массового обслуживания. Оценка результатов схем, построенных на Visual Basic и GPSSV. Анализ исходных данных и выбор недостающих, составление таблицы определений и построение блок-схем и диаграмм.

    курсовая работа [204,1 K], добавлен 24.06.2011

  • Актуальность защиты информации и персональных данных. Постановка задачи на проектирование. Базовая модель угроз персональных данных, обрабатываемых в информационных системах. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах.

    курсовая работа [449,5 K], добавлен 17.12.2015

  • Естественно-языковая модель предметной области. Уменьшение времени обслуживания пациентов за счет автоматизации. Описание инфологической модели. Проектирование баз данных. Разработка графа диалога и экранных форм. Оптимизация логической схемы базы данных.

    дипломная работа [4,2 M], добавлен 20.05.2012

  • Автоматизация технологических процессов. Написание имитационных моделей систем с дискретными событиями. Модели систем массового обслуживания в общецелевой системе GPSS. Логическая схема алгоритмов и схема программы. Математическая модель и ее описание.

    курсовая работа [1,4 M], добавлен 29.06.2011

  • Виды неопределенностей в исходных данных систем и процессов защиты информации. Методы восстановления пропущенных значений в исходных данных. Моделирование методом экспертного построения функций, принадлежности оценки уровня риска информационной системы.

    дипломная работа [735,3 K], добавлен 13.07.2011

  • Разработка структурной схемы и алгоритм функционирования исследуемой микропроцессорной системы (МПС). Модель исследуемой МПС в виде системы массового обслуживания. Листинг программы моделирования на языке GPSS, результаты имитационных экспериментов.

    курсовая работа [193,3 K], добавлен 25.11.2013

  • Характеристика системы массового обслуживания, куда поступают заявки обслуживания. Особенности моделирования системы массового обслуживания. Имитация работы системы массового обслуживания с относительными приоритетами. Отчеты полного факторного плана.

    курсовая работа [1,1 M], добавлен 14.07.2012

  • Проектирование структуры базы данных. Технология обработки данных. Порядок установки и запуска программы. Описание объектов приложения и структура данных. Ввод и изменение исходных данных. Получение выходных документов и тестирование программы.

    отчет по практике [2,3 M], добавлен 22.07.2012

  • Базовая модель угроз персональных данных, обрабатываемых в информационных системах персональных данных. Метод сокрытия информации в наименьших битах графических контейнеров. Алгоритм и блок-схема работы программы, реализующей метод LSB в BMP-файлах.

    курсовая работа [475,1 K], добавлен 05.12.2014

  • Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных.

    курсовая работа [36,8 K], добавлен 18.09.2010

  • Основные элементы системы массового обслуживания, ее модель, принципы и задачи работы. Выбор входных распределений. Построение генераторов случайных чисел. Логика работы программы, планирование эксперимента. Результаты моделирования и рекомендации.

    курсовая работа [2,5 M], добавлен 05.11.2009

  • Система GPSS World как мощная универсальная среда моделирования как дискретных, так и непрерывных процессов, предназначенная для профессионального моделирования самых разнообразных процессов и систем. Системы массового обслуживания. Листинг программы.

    курсовая работа [499,6 K], добавлен 25.12.2013

  • Разработка программы для решения системы обыкновенных дифференциальных уравнений на базе языка программирования Паскаль АВС. Чтение исходных данных из внешнего файла. Вывод исходных данных и результатов на дисплей и во внешний файл. Суть метода Ейлера.

    реферат [126,1 K], добавлен 12.01.2012

  • Процедура ввода исходных данных в программу, вывод результатов работы программы на экран. Принцип организации хранения логически связанных наборов информации в виде файлов. Параметры характеристики файла, способы обращения к нему, соглашения по типу.

    реферат [14,5 K], добавлен 06.12.2011

  • Определение характеристик системы массового обслуживания – вероятность обслуживания заявки, занятости любого канала системы, среднее число занятых каналов. Описание блок-схемы алгоритма. Разработка имитационной и аналитической моделей и их сравнение.

    курсовая работа [860,4 K], добавлен 24.12.2013

  • Система гиперболических дифференциальных уравнений в частных производных. Таблица идентификаторов для программы. Реализация программы на языке С++. Исходный код программы для вывода в среде MATLAB. Тестовые примеры для программы, реализующей явную схему.

    курсовая работа [1,2 M], добавлен 19.03.2012

  • Программа на языке Turbo Pascal для шифрования данных с помощью шифра Тритемиуса. Входные, выходные данные. Схема алгоритма и текст программы. Порядок ввода исходных данных и описание получаемых результатов. Тестовых задания и анализ их функционирования.

    курсовая работа [4,0 M], добавлен 06.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.