Войти

Показать полную графическую версию : Переключение процессов


LeonidPr
17-03-2006, 00:10
У меня в прошлом семестре был курс операционных систем. А вот только теперь меня заинтересовал такой вопрос. Мы в лабах организовывали процесс переключения процессов по прерыванию от таймера (т.е. раз в 55мс). Подскажите, как зделать это чаще. Насколько я знаю, в Windows интервал равен примерно 1мс.

ivank
17-03-2006, 01:11
Перепрограммировать таймер, например.

lehha
17-03-2006, 08:18
Вместо таймера поставить задержки при переключении что то вроде sleep(1);

knzsoft
25-03-2006, 23:22
Интервал переключения процессов называется джиффисом и для большинства операционных систем равен 10мс. Потому что 10мс это золотая середина - не забывай, чем чаще переключаешь процесс, тем больше процессорного времени тратится на переключение контекстов и меньше на решение задач. В ядрах реального времени это значение немного уменьшают. В Linux для этого изменяют значение символа HZ и перекомпилируют ядро (могу немного ошибиться в названии символа - кому нужно найдет). Как это можно изменить в Windows не знаю.

knzsoft
25-03-2006, 23:32
Вообще, непонятно чего ты хочешь. Если ты пишешь свою ОС, то используй аппаратную многозадачность. Если ты пытаешься организовать диспетчер для нескольких своих процессов внутри готовой операционной системы, то возникает куча вопросов. Sleep() - это совершенно искуственное решение проблемы - тебе придется точно рассчитывать места ее установки. Честное слово - проще перекомпилировать ядро Linux и забыть про решение в Windows. Однако, если ты хочешь сделать все так, как вы делали это в своих лабораторных работах, то у тебя два варианта:

1. Как уже советовали - перепрограммируй таймер
2. Подключи внешний генератор к компьютеру и используй его сигналы с нужной частотой для своего прерывания.




© OSzone.net 2001-2012