Board.KolibriOS.org

Official KolibriOS board
It is currently Tue May 21, 2019 2:14 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 47 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 9:23 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
По-идее оптимальный размер - 1кГц, для десктопа.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 10:53 am 
Ну, я не предлагаю потоки быстрее переключать, но раз уж нужно для таких приложений как видеоплеер.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 10:58 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
Системное время крепко завязано на 100Гц.
1кГц для десктопных приложений - слишком много, а для реалтайма - слишком мало.

Имхо идеально было бы закрутить второй таймер для RT и критичных по времени задач, как предлагал VaStaNi,
причем прерывание от этого таймера сделать нежестко фиксированным или даже вообще непериодическим (перезапускаемый интервальный таймер).

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

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


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 11:31 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 794
art_zh: я сужу, исходя из опыта использования linux - 1кГц - идеален для десктопа с низкой задержкой гуя. А вот обработка прерывания без переключения задачи - это действительно интересная идея. Много ли таких прерываний?


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 11:34 am 
Offline
Just Flooding
User avatar

Joined: Wed May 18, 2005 10:27 am
Posts: 430
(с) бред - удалено автором


Last edited by VaStaNi on Fri Jan 02, 2015 5:13 pm, edited 1 time in total.

Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 11:36 am 
art_zh wrote:
А еще неплохо было бы обсудить "совсем другую" фичу - обработку прерывания без переключения задачи.
Если по таймеру надо всего-то прибавлять к чему-нибудь единицу, или вывести чего-нибудь в порт, или обновить буфер - зачем перегружать весь контекст задачи?

Я как то всегда думал, что все обработчики прерывания не меняют контекст. Ведь все потоки в системе равноправны и коду в Ring0 без разницы. Он имеет доступ к любой области кода и данных ядра.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 11:40 am 
VaStaNi wrote:
Про мобильный рынок устройств и наличие массу аппаратных таймеров ARM я бы советовал некоторым "покурить" и подумать.
Имеющий уши - да услышит!

Стас ты опять пытаешься объять необъятно и впихнуть невпихуемое. Ну, какой к черту ARM? У нас одна целевая платформа, ну может две (x86 и EM64T). Зачем опять создавать винегрет - не будем мы плодить второй Линукс.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 12:50 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
Mario
сейчас таймер переключает задачи.
Смена контекста задачи занимает очень много времени причем "очень много" - это довольно точный количественных показатель. Порядка микросекунды только прямых задержек, плюс хз сколько непрямых (сломанный кэш и контекст CPU, новая адресная таблица, новая копия той же портовой карты, и т.п.).
Для 100Гц это вполне приемлемо, десктопные приложения это совсем не замечают.

Допустим, мы добавили в ядро новый таймер - только для время-критичных задач. И повесили на него одно "редкое, но толстое" приложение (например, видеопроигрыватель, запросивший РТ-прерывание с частотой смены кадров 15Гц), и один шустрый бездрайверный фреймграббер USB-камеры, которому всего-то нужно 87300 раз в секунду скопировать очередную строчку пикселей из кольцевого буфера в кадровый.

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

// про вирусы и говнокод -- да, вижу. И что с ними делать при наличии такой дыры - не знаю.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 12:57 pm 
Не-не-не! Я то подразумевал поднять частоту таймера, а скорость переключения задач оставить все те же 100 Гц. Насколько я понял проблемы то у видеоплеера совсем не от скорости переключения задач, а собственно нужен именно таймер позволяющий "тикать" быстрее чем 100 Гц.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 1:09 pm 
Offline
Just Flooding
User avatar

Joined: Wed May 18, 2005 10:27 am
Posts: 430
(с) бред - удалено автором


Last edited by VaStaNi on Fri Jan 02, 2015 5:13 pm, edited 1 time in total.

Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 1:26 pm 
Теоретические изыскания хороши тем, что красивы. Однако можно так вечно теоретизировать и ничего не сделать. Я практик и решаю проблемы по мере поступления. И потом я уже который раз говорю, что до некоторых идей надо дозреть. Вот занимается человек одним и тем же с десяток лет - ясен пень, что он в этом собаку съел, но ожидать то же самое от всех его читающих он не вправе. Лично когда я о чем-то пишу, я пишу со злым умыслом - сделать это в кратчайшие сроки и если тема не на все 146% мне известна (все ведь могут ошибаться? или бывают люди которые не ошибаются?) я прошу подсказать. Заниматься теоретическими изысканиями из чувства прекрасного мне не досуг.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 2:03 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
Теоретические изыскания нужны,
хотя бы чтоб не браться очертя голову за дурную работу, а прикинуть фифект для начала.

Планировщик "в кратчайшие сроки", не имея четкой цели и плана, никак не напишешь.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 2:12 pm 
Так-так... мы обсуждаем таймер или планировщик? Давайте определимся уже, а то каждый раз куда не сунься в винегрет все превращать любите.

З.Ы. А потом придет Сан Саныч и в очередной раз скажет свое "Фи! Говно эта ваше Колибри! И главный пиздабол у вас тоже говно!" - меня это подзаебывает честное слово.


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 3:06 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1328
timer --> scheduler

какой смысл в смене частоты, если ее обработка по факту останется той же самой, только треску от переключателя прибавится?


Top
   
 Post subject: Re: Таймер
PostPosted: Sat Apr 07, 2012 3:38 pm 
Треску говоришь?
viewtopic.php?f=38&t=1277&hilit=fplay&start=17
viewtopic.php?f=38&t=1277&hilit=fplay&start=280


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 47 posts ]  Go to page Previous 1 2 3 4 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited