Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб ноя 18, 2017 7:17 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 81 сообщение ]  На страницу Пред. 1 2 3 4 5 6 След.
Автор Сообщение
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Ср май 15, 2013 2:25 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
А, вон ты про что.
а сейчас, стало быть, мышь таки-замирает на целых 200мс?
ну это некрупная фигня, стрелку можно отрисовывать и по основному таймерному прерыванию, не меняя контекста.


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Ср май 15, 2013 7:24 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
art_zh писал(а):
а сейчас, стало быть, мышь таки-замирает на целых 200мс

Время не считал, больше-меньше, но если запустишь пару-тройку обжор, то вот он WARP двигатель во всей красе скачущий курсор проявит себя.
art_zh писал(а):
ну это некрупная фигня, стрелку можно отрисовывать и по основному таймерному прерыванию, не меняя контекста.

Вот этого делать как раз нежелательно, мы в свое время с Сергеем это обсуждали. Обработчик таймера должен занимать минимум времени по вполне объективным причинам.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Ср май 15, 2013 9:14 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Цитата:
- вместо сброса/установки единственного бита - проводить декремент содержимого DONT_SWITCH. чтобы прожорливые приложения могли запрашиавать (и по возможности получать) более высокий приоритет, не переключаясь (максимум) в течение 10 квантов.
Если нужен длинный квант, надо добавить две переменные в APPDATA, кол-во тиков в кванте и countdown счетчик тиков и делать декремент в irq0. Соответственно после после переключения задачи обновляем счётчик и по новой.
Цитата:
Как насчет перемещения указателя курсора?
А для этого уже нужен планировщик с приоритетами. Сейчас у нас кооперативная коммунистическая диета. Все приложения кушают часто, но по-малу. Если менять длительность кванта и частоту переключения задач, надо вызывать планировщик после каждого обработчика irq.


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Ср май 15, 2013 9:26 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
А для этого уже нужен планировщик с приоритетами. Сейчас у нас кооперативная коммунистическая диета. Все приложения кушают часто, но по-малу. Если менять длительность кванта и частоту переключения задач, надо вызывать планировщик после каждого обработчика irq.

Спойлер: Показать
Mario_r4 писал(а):
традиция у нас такая каждый год мы собираемся чтобы обсудить подробности реализации: буфера обмена, таймера и загрузчика ОС...

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Ср май 15, 2013 9:35 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Ага. Любое изменение в одной части кода потребует изменений в других частях.


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Ср май 15, 2013 11:20 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Mario
Обещанный макет квантового дегенератора:
Код:
  
  use32             
  org    0         
  db     'MENUET01' 
  dd     1, START,  VOILA   
  dd     0x1000, 0x1000,  0,  0         
 
START:
  rdtsc
  add eax, 1600000 ; = 1миллисекунда
  jnc @f
  inc edx
@@:
  mov [keep_eax], eax
  mov [keep_edx], edx
wait_1ms:
  rdtsc
  cmp edx, [keep_edx]
  jb wait_1ms
  cmp eax, [keep_eax]
  jb wait_1ms

  mov eax, 68
  mov ebx, 1
  int 40h
  jmp START   

keep_eax  dd 0
keep_edx  dd 0
VOILA:

отгрызает 1.6млн тактов (=1мс на моем проце) от текущего кванта

т.е. в твоей версии планировщика - приватизирует (безвоздмездно!) время следующего "длинного" процесса.

поставь время задержки 9миллисекунд, а потом запусти своего обжору.
и шо, это таки-не багофича?


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 7:49 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
art_zh писал(а):
MarioОбещанный макет квантового дегенератора:

А на предыдущем варианте значит все замечательно?
Ты приведи пример реального приложения. А то извратных приложений много можно насочинять - на то у тебя и хитрый изворотливы мозг. :wink:
Багрепортов об изменении работы существующих приложений не было пока.

З.Ы. Diamond вообще вирус написал - мне чего теперь стреляться? Я не офицер чтобы стреляться.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 10:13 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Старый планировщик ГАРАНТИРОВАЛ ЛЮБОМУ приложению ЗАКОННЫЕ 10мс времени.


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 10:21 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
art_zh писал(а):
Старый планировщик ГАРАНТИРОВАЛ ЛЮБОМУ приложению ЗАКОННЫЕ 10мс времени.

Значит сриншоты я в Gimp нарисовал?

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 11:11 am 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Твои скриншоты подтверждают выполнение этой гарантии: времяёмкие приложения получали свои 10мс чистого времени, а если кому повезет - тогда почти 20мс.

А слабо выложить скриншоты с новым планировщиком и парой дегенератор+обжора ?


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 12:11 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
art_zh писал(а):
А слабо выложить скриншоты с новым планировщиком и парой дегенератор+обжора ?

Не слабо, но времени не хватает. Как будет время посмотрю и заскриню.
Однако 20 мс отдавать это неправильно, при заявленном равноправии.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 5:28 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн июл 25, 2011 6:22 pm
Сообщения: 93
art_zh писал(а):
Mario
Обещанный макет квантового дегенератора:
Код:
  
  use32             
  org    0         
  db     'MENUET01' 
  dd     1, START,  VOILA   
  dd     0x1000, 0x1000,  0,  0         
 
START:
  rdtsc
  add eax, 1600000 ; = 1миллисекунда
  jnc @f
  inc edx
@@:
  mov [keep_eax], eax
  mov [keep_edx], edx
wait_1ms:
  rdtsc
  cmp edx, [keep_edx]
  jb wait_1ms
  cmp eax, [keep_eax]
  jb wait_1ms

  mov eax, 68
  mov ebx, 1
  int 40h
  jmp START   

keep_eax  dd 0
keep_edx  dd 0
VOILA:

отгрызает 1.6млн тактов (=1мс на моем проце) от текущего кванта

т.е. в твоей версии планировщика - приватизирует (безвоздмездно!) время следующего "длинного" процесса.

поставь время задержки 9миллисекунд, а потом запусти своего обжору.
и шо, это таки-не багофича?


Есть впрос: "А вот 'inc edx', edx от какого значения инкременируется?"
Да и значение "1600000" - это всего лишь частное значение какой-то частной машины.
По первому вопросу, я знаю, что возвращает "rdtsc".

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 5:50 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Код:
  add eax, 1600000 ; = 1миллисекунда
  jnc @f
  inc edx
@@:
меняется на
Код:
  add eax, 1600000 ; = 1миллисекунда
  adc edx, 0


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 6:27 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1600
art_zh, в случае выдуманного примера становится хуже, в типичных случаях становится лучше. Всем хорошо сделать нельзя, значит, нужно делать хорошо в типичном случае. Приложения, отжирающие столько времени, сколько им дали, типичны и встречаются на каждом шагу - те же демки - а приложений, действующих подобно viewtopic.php?p=48637#p48637 , на практике не встречается. Выбор очевиден.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Работа планировщика задач
СообщениеДобавлено: Чт май 16, 2013 8:14 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
Mario
Это воровать чужие миллисекунды неправильно.
А чем плох +10мс бонус?
Это ведь сэкономленное время, добровольно предоставленное (именно как бонус!) вежливыми предыдущими процессами.

Artyom
инкремент к текущему edx.
сам edx еще очень нескоро переполнится ;)

Serge
так на 2 байта короче.

CleverMouse et al.
Невыдуманные примеры: традиционно-вежливые RT-процессы (в т.ч. неопределенно-длинные: диски, сеть и звук).

_________________
Узкий специалист подобен флюсу: полнота его - односторонняя.
Козьма Прутков


Последний раз редактировалось art_zh Чт май 16, 2013 8:29 pm, всего редактировалось 2 раза.

Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 81 сообщение ]  На страницу Пред. 1 2 3 4 5 6 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB