Board.KolibriOS.org
http://board.kolibrios.org/

Работа планировщика задач
http://board.kolibrios.org/viewtopic.php?f=35&t=2303
Страница 6 из 6

Автор:  Mario_r4 [ Пт май 17, 2013 12:17 am ]
Заголовок сообщения:  Re: Работа планировщика задач

Serge писал(а):
Закинь на фтп свой example, попробую один тест сделать.

http://ftp.kolibrios.org/users/Mario/CPU100%25/

Автор:  Serge [ Пт май 17, 2013 11:35 am ]
Заголовок сообщения:  Re: Работа планировщика задач

Сделал тесты с увеличенным количеством тиков в кванте без изменения частоты таймера. Чем больше тиков, тем ровнее распределение времени. Но на длинных квантах начинаются проблемы со звуком, как и ожидалось.

Автор:  Mario_r4 [ Пт май 17, 2013 12:28 pm ]
Заголовок сообщения:  Re: Работа планировщика задач

Serge писал(а):
Сделал тесты с увеличенным количеством тиков в кванте без изменения частоты таймера. Чем больше тиков, тем ровнее распределение времени. Но на длинных квантах начинаются проблемы со звуком, как и ожидалось.

Мы же вроде обговаривали повышение частоты? С повышением не должно быть проблем со звуком.

Автор:  Serge [ Пт май 17, 2013 2:06 pm ]
Заголовок сообщения:  Re: Работа планировщика задач

Я не менял частоту для упрощения теста и чтобы не ломать таймеры в ядре. На равномерность распределения времени она влияет слабо. На практике, если делать квант длиннее 10мс надо вводить приоритеты потоков.

Автор:  art_zh [ Сб май 18, 2013 1:02 am ]
Заголовок сообщения:  Re: Работа планировщика задач

а я со своей стороны добрался наконец до регистров LAPIC.

Автор:  art_zh [ Чт май 23, 2013 2:41 am ]
Заголовок сообщения:  Re: Работа планировщика задач

Serge,
ты не знаешь, как в этого блэкджека нужно записывать end of interrupt ?
Код:
apic_timer_reset:
   xor   eax, eax
   mov   [0x8006D000], eax
   mov   ebx, LAPIC_BAR+ 0x320
   mov   eax, [ebx]
   and   eax, 0xFFFEFF00
   or   eax, 0x0002003F       ; int vector + autostart
   mov   [ebx], eax
   ret


apic_timer_int:
   inc   dword [0x8006D000]                       ; interrupts counter
   mov   dword [LAPIC_BAR + 0x420], 0x3F     ; end of interrupt
   iretd

таймер крутится, но прерывание срабатывает только один раз.

UPD: Всё, заработало!!
надо было еще
Код:
mov dword[LAPIC_BAR + 0x0B0], 0 

Страница 6 из 6 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/