Предложение по реализации алгоритмов планирования в c - PullRequest
0 голосов
/ 28 августа 2018

Учитывая n процессов с их временем пакета и временем прибытия, задача состоит в том, чтобы найти среднее время ожидания и среднее время оборота, используя алгоритмы планирования, такие как FCFS, Round Robin, Самое короткое оставшееся время и т. Д.,

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

1 Ответ

0 голосов
/ 28 августа 2018

Во-первых, создайте структуру данных, содержащую информацию «невозможно узнать на практике» о каждом процессе (время начала, время пакетной обработки и т. Д.), Добавьте поле «Состояние процесса» (чтобы отслеживать «не запущен, запущен»). или остановлен "), и добавьте одно" следующее "поле в структуру; затем создайте массив этих структур и заполните информацию.

Затем создайте функцию общего назначения, чтобы найти «не запущенный» процесс, который имеет самое раннее время запуска.

Для круглого робина; найдите «не запущенный» процесс, который имеет самое раннее время запуска, установите «текущее время = время начала первого процесса» и установите поле «следующий» процесса так, чтобы оно указывало на себя так, чтобы у вас был круговой связанный список из одной записи, и измените состояние процесса с «не начато» на «запущено». Затем выясните, какое событие произойдет следующим (запустится ли другой процесс и будет ли он добавлен в круговой связанный список до того, как произойдет переключение задач?), И обработайте это событие (при продвижении вашего «текущего времени»).

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

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

...