Мне дали задание.

Напишите программу для моделирования планирования заданий в операционной системе. Рабочие места создаются в случайное время. Каждому заданию дается как случайный приоритет от 1 до 4, где 1 - это наивысший приоритет, так и случайное количество времени для завершения его выполнения.

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

В этом назначении вам потребуется реализация очереди и очереди с приоритетом. Вы можете использовать очередь приоритетов в библиотеке классов Java (java.util.PriorityQueue). Он реализует интерфейс java.util.Queue.

Я путаю с временным интервалом и временем выполнения ... как я понимаю на данный момент, скажем, final int timeslice = 3, время для завершения всей работы - final int clock = 20 минут .; когда задание A, начинающееся в 0 минут, имеет время выполнения 5 (которое генерируется случайным образом между 1-5). при выполнении задания до минуты 3. Задание A помещается в приоритетную очередь, а задание B со временем выполнения 2 минуты поступает на минуту 3? после завершения выполнения задания B, задание A введите для завершения выполнения или задание C?

Пожалуйста, объясните, если я ошибаюсь. Спасибо

0
Yuvin Ng 5 Мар 2012 в 12:47

3 ответа

Лучший ответ

В вашем вопросе о том, выполняется ли задание A или задание C (после завершения B), это должно зависеть от того, что возвращает PriorityQueue, которое будет заданием с наивысшим приоритетом.

Если задание A имеет приоритет 1, а задание C - 2, PriorityQueue вернет задание A, и оно должно получить следующий временной интервал.

Если задание C имеет приоритет 2, а задание B - 4, PriorityQueue вернет задание C, и оно должно получить следующий временной интервал.

Как говорит adn_295, это хорошее задание.

0
matt freake 5 Мар 2012 в 09:27

PriorityQueue всегда возвращает задачу с наивысшим приоритетом, поэтому она будет возвращаться при каждом добавлении в очередь. Я предлагаю вам попробовать реализовать решение, чтобы посмотреть, как оно работает. (Или написать простую тестовую программу с использованием PriorityQueue)

0
Peter Lawrey 5 Мар 2012 в 09:13

Во-первых, это очень хорошее задание! Вам необходимо реализовать точный механизм работы ОС для планирования заданий / задач. См. Эти ссылки, чтобы лучше понять это.

1) http://oreilly.com/java/archive/quartz.html.

2) Проблема планирования заданий в Java

0
Community 23 Май 2017 в 11:48