Page 6 of 6

Re: Работа планировщика задач

Posted: Fri May 17, 2013 12:17 am
by Mario_r4
Serge wrote:Закинь на фтп свой example, попробую один тест сделать.
http://ftp.kolibrios.org/users/Mario/CPU100%25/

Re: Работа планировщика задач

Posted: Fri May 17, 2013 11:35 am
by Serge
Сделал тесты с увеличенным количеством тиков в кванте без изменения частоты таймера. Чем больше тиков, тем ровнее распределение времени. Но на длинных квантах начинаются проблемы со звуком, как и ожидалось.

Re: Работа планировщика задач

Posted: Fri May 17, 2013 12:28 pm
by Mario_r4
Serge wrote:Сделал тесты с увеличенным количеством тиков в кванте без изменения частоты таймера. Чем больше тиков, тем ровнее распределение времени. Но на длинных квантах начинаются проблемы со звуком, как и ожидалось.
Мы же вроде обговаривали повышение частоты? С повышением не должно быть проблем со звуком.

Re: Работа планировщика задач

Posted: Fri May 17, 2013 2:06 pm
by Serge
Я не менял частоту для упрощения теста и чтобы не ломать таймеры в ядре. На равномерность распределения времени она влияет слабо. На практике, если делать квант длиннее 10мс надо вводить приоритеты потоков.

Re: Работа планировщика задач

Posted: Sat May 18, 2013 1:02 am
by art_zh
а я со своей стороны добрался наконец до регистров LAPIC.

Re: Работа планировщика задач

Posted: Thu May 23, 2013 2:41 am
by art_zh
Serge,
ты не знаешь, как в этого блэкджека нужно записывать end of interrupt ?

Code: Select all

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: Select all

mov dword[LAPIC_BAR + 0x0B0], 0