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

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

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

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

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

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

1. Теоретическая часть

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

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

Существует четыре основных события для создания процесса [4]:

· инициализация системы

· создание процессом

· создание пользователем

· инициализация пакетного задания

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

В системах Unix для создания процесса существует единственный системный вызов fork. В системе Windows для этого используется функция CreateProcess.

Завершение процесса происходит после одного из следующих событий[2]:

· обычного выхода (добровольно)

· при возникновении ошибки (добровольно)

· возникновение фатальной ошибки (принудительно)

· уничтожение другим процессом (принудительно)

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

· выполняемый (команды программы выполняются в процессоре)

· ожидающий (процесс ожидает завершения некоторого события, чаще всего операции ввода - вывода)

· готовый (процесс ожидает освобождения процессора, занятого другим процессом)

· завершенный (процесс завершил свою работу)

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

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

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

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

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

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

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

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

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

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

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

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

процесс программа приоритет квант

2.1 Формулировка задания на разработку программы

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

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

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

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

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

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

В данной программе содержится алгоритм обработки массива структур, содержащих описание процессов (имя процесса, время поступления, приоритет, время исполнения).

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

Если инициализация прошла успешно (без ошибок) далее выполняется алгоритм, выбирающий следующий процесс на выполнение. При завершении процесса, его приоритет меняется на значение 0, что соответствует статуту «выполнен». Алгоритм содержит бесконечный цикл, завершающийся при выполнении всех процессов. В цикле идет отсчет времени.

При выполнении основной задачи программы параллельно заполняется таблица для каждого кванта времени.

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 Kursovaya_Form

{

public partial class Form1: Form

{

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

{

public string name;

public int priority;

public int time_in;

public int time_execution;

}

public Form1 ()

{

InitializeComponent();

}

private void button1_Click (object sender, EventArgs e)

{

int r = File. ReadAllLines («d:\\data.txt»).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;

string path = «d:\\data.txt»;

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]);

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

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) // следующие действия выполняются, если входные данные корректны

{

for (int i = 1; i < r; i++) // выбор процесса, с наименьшим временем и большим приоритетом. Будет выполняться первым.

{

if (all [ex_prc_id].time_in > all[i].time_in)

{ex_prc_id = i;}

if (all [ex_prc_id].time_in == all[i].time_in && all [ex_prc_id].priority < all[i].priority)

{ex_prc_id = i;}

}

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 = 0;

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

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

{ex_prc_id = i;}

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

s += all[i].priority;

}

 // инициализация переменной 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 == 0) 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 Описание тестовых примеров исходных данных и результатов работы программы

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

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

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


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

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

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

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

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

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

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

  • Общая характеристика системы массового обслуживания, исходные данные для ее создания. Особенности построения алгоритма имитационной модели задачи о поступлении заявок (клиентов) в канал (парикмахерскую). Описание функционирования математической модели.

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

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

    контрольная работа [151,5 K], добавлен 16.09.2010

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

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

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

    дипломная работа [581,7 K], добавлен 27.10.2017

  • Построение имитационной модели системы массового обслуживания в среде Borland Delphi 7.0 с учетом того, что параметры модели – детерминированные величины. Моделирование случайных независимых величин и процессов. Оптимизация системы массового обслуживания.

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

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

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

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

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

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