User Tag List

Показано с 1 по 10 из 51

Тема: context switcher in new OS?

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #7

    Регистрация
    23.01.2005
    Сообщений
    1,113
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin
    когда приходит инт, возможны две ситуации
    -процесс вытеснится
    -процесс останется тот же самый

    если мы в процедуре пропуска кванта запрещаем прерывания, а в это время приходит сигнал, он игнорируется (я как понял, тебя это беспокоит). но мы следующим шагом идем в обработчик прерываний, который в итоге даст первую ситуацию.
    Зачем идти в обработчик прерывания, если мы только передиспетчеризацию вызвали? Тогда не скипаться инты будут, а наоборот, ложные вызываться =)

    Меня волнует именно пропуск прерываний, а никак не то, что там с процессами будет. На прерываниях муза висит, и неприятно, когда она заикается.

    так что тут мы ничего не теряем.
    исключение составляет очередь процессов реального времени, обязанных выполняться по очереди каждое прерывание. для них нужно вводить специальный флаг, который будет выставляться каждое прерывание обработчиком и сниматься диспетчером по окончанию обработки той очереди. но тут есть узкое место- в предложенной ситуации пропуск прерывания означает вероятный пропуск диспетчеризации очереди процессов реального времени. как вариант, можно использовать отложенные прерывания. например:

    int_routine:
    push af
    ld a,(int_flag)
    or int_comeon
    ld (int_flag),a
    and pended_interrupt
    jr nz,skip_int
    push bc
    ....
    pop bc
    skip_int:
    pop af
    ei
    ret

    ;somewhere in system
    yield
    ld a,(int_flag) ;beneath DI
    or pended_interrupt
    ld (int_flag),a
    ...
    Вот, нагромождение на нагромождении. То память в очке 16кб, потом такое вот безобразие без контроллера прерываний. Кстати, простейший контроллер прерываний получается из половинки ТМ2, устанавливается по фронту вбланка, сбрасывается по /IORQ|/M1 =)
    Последний раз редактировалось lvd; 03.04.2005 в 00:50.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •