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

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

Author:  Mario_r4 [ Fri May 17, 2013 12:17 am ]
Post subject:  Re: Работа планировщика задач

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

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

Author:  Serge [ Fri May 17, 2013 11:35 am ]
Post subject:  Re: Работа планировщика задач

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

Author:  Mario_r4 [ Fri May 17, 2013 12:28 pm ]
Post subject:  Re: Работа планировщика задач

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

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

Author:  Serge [ Fri May 17, 2013 2:06 pm ]
Post subject:  Re: Работа планировщика задач

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

Author:  art_zh [ Sat May 18, 2013 1:02 am ]
Post subject:  Re: Работа планировщика задач

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

Author:  art_zh [ Thu May 23, 2013 2:41 am ]
Post subject:  Re: Работа планировщика задач

Serge,
ты не знаешь, как в этого блэкджека нужно записывать end of interrupt ?
Code:
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: Всё, заработало!!
надо было еще
Code:
mov dword[LAPIC_BAR + 0x0B0], 0 

Page 6 of 6 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/