Пример реализации класса процесса



using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace WinQueue

{

public class TProcess<T>

{

public enum status { ready, wait, run, created };

public enum priority { easy, middle, hight };

private static int UniqCounter = 0;

public int PID; // идентификатор

public string Name; // имя

public priority ProcPriority; // приоритет процесса

public int arrivalTime; // такт создания процесса

public int burstTime; // требуемое время работы на ЦП

public int CPUTime; // реальное время непрерывной работы на ЦП на ЦП

public string ProcStatus; // состояние процесса

 

public TProcess(int arrT)

{

PID = UniqCounter++;

Name = "P" + PID.ToString();

arrivalTime = arrT;

ProcStatus = status.created.ToString();

Random rnd = new Random();

ProcPriority = (priority)rnd.Next(3);

Random rand = new Random();

burstTime = rand.Next(100);

CPUTime = 0;

}

 

public void incCPUTime()

{

CPUTime++;

}

 

public bool IsFinish()

{

return (CPUTime == burstTime);

}

 

public string[] ToArray()

{

string[] StArr = new string[7];

StArr[0] = String.Format("{0}: {1}", "Идентификатор", PID.ToString());

StArr[1] = String.Format("{0}: {1}", "Имя", Name);

StArr[2] = String.Format("{0}: {1}", "Приоритет", ProcPriority);

StArr[3] = String.Format("{0}: {1}", "Такт создания процесса",

arrivalTime.ToString());

StArr[4] = String.Format("{0}: {1}", "Требуемое время работы на ЦП",

burstTime.ToString());

StArr[5] = String.Format("{0}: {1}", "Реальное время непрерывной работы на

ЦП", CPUTime.ToString());

StArr[6] = String.Format("{0}: {1}", "Состояние процесса", ProcStatus);

return StArr;

}

 

public override string ToString()

{

return "Process ID = " + PID.ToString() + " Process Name = " + Name +

" Process Pririty = " + ProcPriority.ToString();

}

 

}

}

Задание

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

Класс процесса (Tprocess) должен иметь следующие поля:

- PID (идентификационный номер процесса);

- имя процессу (срочного типа);

- приоритет процесса;

- необходимое время выполнения на CPU (процессоре);

- необходимое время выполнения во внешнем ресурсе;

- время прибытия в систему;

- отработанное время на CPU;

- отработанное время во внешнем ресурсе;

- состояние процесса (перечислимый тип);

и методы:

- конструктор;

- процедура повышения времени нахождения процесса на CPU;

- функция преобразования атрибутов процесса в массив;

- функция преобразования атрибутов процесса в строку;

- функция возвращения признака завершения.

 

Класс очереди элементов превратить в очередь процессов. Реализовать две очереди: очередь готовых процессов (на CPU) и очередь ожидающих доступа к внешнему ресурсу.

Заполнение атрибутов процесса происходит по нажатию на кнопку СОЗДАТЬ ПРОЦЕСС, данные берутся из полей ввода. Значение атрибута состояние = «новый».

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

Событие изъятия из очереди готовых процессов имитирует активизацию процесса, т.е. состояние меняется на «исполнение».

 


Дата добавления: 2015-12-21; просмотров: 31; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!