Пример реализации класса процесса
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!