Переключение процессов
У меня в прошлом семестре был курс операционных систем. А вот только теперь меня заинтересовал такой вопрос. Мы в лабах организовывали процесс переключения процессов по прерыванию от таймера (т.е. раз в 55мс). Подскажите, как зделать это чаще. Насколько я знаю, в Windows интервал равен примерно 1мс.
|
Перепрограммировать таймер, например.
|
Вместо таймера поставить задержки при переключении что то вроде sleep(1);
|
Интервал переключения процессов называется джиффисом и для большинства операционных систем равен 10мс. Потому что 10мс это золотая середина - не забывай, чем чаще переключаешь процесс, тем больше процессорного времени тратится на переключение контекстов и меньше на решение задач. В ядрах реального времени это значение немного уменьшают. В Linux для этого изменяют значение символа HZ и перекомпилируют ядро (могу немного ошибиться в названии символа - кому нужно найдет). Как это можно изменить в Windows не знаю.
|
Вообще, непонятно чего ты хочешь. Если ты пишешь свою ОС, то используй аппаратную многозадачность. Если ты пытаешься организовать диспетчер для нескольких своих процессов внутри готовой операционной системы, то возникает куча вопросов. Sleep() - это совершенно искуственное решение проблемы - тебе придется точно рассчитывать места ее установки. Честное слово - проще перекомпилировать ядро Linux и забыть про решение в Windows. Однако, если ты хочешь сделать все так, как вы делали это в своих лабораторных работах, то у тебя два варианта:
1. Как уже советовали - перепрограммируй таймер 2. Подключи внешний генератор к компьютеру и используй его сигналы с нужной частотой для своего прерывания. |
Время: 06:46. |
Время: 06:46.
© OSzone.net 2001-