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