Это вопрос из моего домашнего задания в классе CIS-21: Операционные системы, и у меня уже есть ответ, потому что инструктор дал его нам, но он не хотел объяснять, почему ЭТО был ответ. Итак, вот вопрос:
Для выполнения задания, выполняемого в системе с переменным квантом времени на очередь, требуется 30 миллисекунд. Если первая очередь имеет квант времени 5 миллисекунд, а каждая последующая очередь имеет квант времени, который вдвое больше, чем у предыдущей, сколько раз задание будет прервано и в какой очереди оно завершит свое выполнение?
Вторая часть проста: задание завершит свое выполнение в очереди 3-го уровня (очередь первого уровня - 5 миллисекунд, очередь второго уровня - 10 миллисекунд, а очередь третьего уровня - 20 миллисекунд). Поскольку для задания требуется 30 миллисекунд, оно будет выполняться в течение 5 миллисекунд в очереди первого уровня, затем в течение 10 миллисекунд в очереди второго уровня и в течение 15 миллисекунд в очереди третьего уровня.
Первая часть вопроса - это то, что не получили все, я имею в виду всех, в классе. Инструктор сказал, что всего будет 3 прерывания. Но когда мы все говорили, что это будет 2 прерывания, он рассердился и двинулся дальше .... странно, да? Так много за то, что я заплатил деньги за хорошее образование.
В любом случае, мы думали, что задание выполняется в течение 5 миллисекунд в первой очереди, затем выдается прерывание, его PCB (Personal Control Block) обновляется, и оно перемещается в следующую более низкую очередь, которая является очередью 10 миллисекунд. . По достижении своей очереди задание будет выполнено в очереди второго уровня в течение 10 миллисекунд и будет выдано прерывание. Информация будет обновлена на плате, и задание будет перемещено в следующую нижнюю очередь, то есть очередь на 20 миллисекунд. Пока что было два прерывания. Как только задание достигает вершины очереди третьего уровня, оно выполняется в течение 15 секунд и завершает свое выполнение до истечения кванта времени для очереди.
Итак, откуда у него третье прерывание? Будет ли выдано третье прерывание, когда программа завершит свое выполнение? Я думал, что прерывания задания возникают только тогда, когда есть внутреннее прерывание, например, для запроса ввода-вывода, когда истекает квант времени и циклы задания не завершены, или когда в задании есть недопустимая операция / инструкция.
Итак, есть ли 2 или 3 прерывания работы и почему?
РЕДАКТИРОВАТЬ: Я написал инструктору по электронной почте после получения противоречивых ответов в Интернете, и он признал, что допустил ошибку и это всего 2 прерывания, так как работа завершается в очереди 20 мс. На всякий случай кому интересно.