Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
На той ОСРВ, на которой мне довелось поработать,... 17.03.04 15:45 Число просмотров: 1586
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman Отредактировано 17.03.04 16:04 Количество правок: 3
|
> чем меньше этот интервал тем быстрее шедулер сможет > получить управление и переключить выполнение задачи с одной > на другую (страдает производительность, но увеличивается > реалтаймость системы) На той ОСРВ, на которой мне довелось поработать, переключение контекстов происходило не только по таймеру. По таймеру оно тоже, конечно когда-то происходило, если приложение долго (в зависимости от его приоритета) занимало процессорное время. Основное перекоючение контекстов происходило по внешним событиям, хотя, может оно и не происходило. Система находилась либо в состоянии останова ( выполнив инструкцию HATL), либо в состоянии ожидания вызова системной функции задачей, которая была активна. Чаще в состоянии останова - при набирании текста в редакторе задача (редактор) обращался к системе "жду нажатия клавиши". Как только клавиша была нажата выполнялся обработчик системы (драйвер) и иногда обработчик редактора не в зависимости от требований процессора другой задачей.
В том, что Вы описываете никакой реалтаймовости не видно или я что-то не понял. По вашему получается что пользователь, работая в редакторе нажал кнопку. Драйвер, обрабатывая прерывание, поставил символ в очередь ввода (буфер). Прошло 100 милисекунд, произошло прерывание от таймера, система посмотрела, что есть задача, которая ждет ввода и в буфере что-то есть, прекючила контекст на редактор, редактор вытащил символ из очереди и обработал его. Мне думается, что реалтаймовость, это когда любая активная задача отрабатывает события, которые к ней относятся сразу же, как они происходят в не зависимости от загруженности ЦПУ другими процессами, так, что создается иллюзия, что програма работает только сама одна.
На ПиДиПишках таймер тикает с фиксированным интервалом = 50Гц. Медленновато задачки при таком таймере переключаться будут, однако.
И еще в системе должны быть предусмотрены процессы ввода/вывода без ожидания, с вызовом обработчиков (функций в задачах) асинхронных системных прерываний, установкой / снятием флагов событий (семафоров). Т.е. в функции read() должны быть предусмотрены еще следующие параметры "производится ли чтение с ожиданием завершения или нет", "адрес функции-обработчика завершения ввода", "номер семафора" и прочие.
|
|
|