Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Переключение процессов (http://forum.oszone.net/showthread.php?t=62894)

LeonidPr 17-03-2006 00:10 418635

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

ivank 17-03-2006 01:11 418650

Перепрограммировать таймер, например.

lehha 17-03-2006 08:18 418705

Вместо таймера поставить задержки при переключении что то вроде sleep(1);

knzsoft 25-03-2006 23:22 421653

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

knzsoft 25-03-2006 23:32 421660

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

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


Время: 06:46.

Время: 06:46.
© OSzone.net 2001-