Предлагаю добавить 2 функции

Internal structure and you change requests/suggestions
  • Для начала, объясни, чем не устраивают имеющиеся фукции 5 и 23.
  • tsdima wrote:Для начала, объясни, чем не устраивают имеющиеся фукции 5 и 23.
    5 - тормозит приложение
    23 - таймаут распределяется не равномерно. Вот надо тебе чтобы за 10 сек, ровно 10 раз выполнилась проверка, но не получиться из-за событий или из-за циклов и прочей нагрузки, для этого нужно многопоточность.
    Технологии меняют мир, а я - меняю технологии.
  • pavelyakov wrote:23 - таймаут распределяется не равномерно. Вот надо тебе чтобы за 10 сек, ровно 10 раз выполнилась проверка, но не получиться из-за событий или из-за циклов и прочей нагрузки, для этого нужно многопоточность.
    Для того, чтобы определить, сколько нужно ждать, есть функции текущего времени 26.9 и 26.10. Нужно вычесть текущее время из времени нужного момента. Если таких таймаутов несколько, найти минимум. Конечно, функция 23 ждёт с точностью 1/100 секунды, но на практике такой точности вполне хватает.
  • pavelyakov
    Такие функции будут превращать однопоточную программу в многопоточную и программист должен это учитывать. Потому только через функцию 51.
  • Многопоточность - не всегда лучший выход.
  • Думаю их лучше реализовать в стандартных библиотеках/модулях для всех языков программирования. По сути тебе нужно создать многопоточное приложение, где функционал отделён от обработки событий (от оболочки GUI и ввода пользователя). Такое может потребоваться при разработке того же будильника или таймера. Можно сделать и заготовку/шаблон для таких приложений (имею ввиду на разных языках: C--, FASM, Oberon и т.д.).
    Но не обязательно это должен быть отдельный системный вызов. Это нужно хорошо взвесить, обсудить и переварить. ;)

    Несколько вопросов:
    - можно ли реализовать это сейчас, используя имеющиеся системные функции? в целом да.
    - обработка в ядре предполагает, что нам нужно это выполнять быстрее и с большей точностью, чем имеющиеся решения, точно ли это нужно?
    - для каких задач нужна такая быстрота и точность? может ли оказаться такой функционал полезным для систем реального времени? и планирует ли Колибри ОС развиваться в сторону решения этих задач?
    - нужен ли этот функционал разработчикам приложений? думаю, что да.
    - нужен ли этот функционал в ядре ос в виде системных вызовов? лично я сомневаюсь.
    - нужно ли делать это отдельным системным вызовом или прикрепить как подфункцию к уже существующему системному вызову? по возможности нужно прикрепить, только к какому вызову: 51?
    - нужно ли расширять ядро, тем что уже возможно реализовать на основе имеющегося в угоду удобства решения определённого круга задач? у меня нет ответа.
  • theonlymirage wrote:Думаю их лучше реализовать в стандартных библиотеках/модулях для всех языков программирования.
    Много шума из ничего. Если всё-таки использовать многозадачность, то кто мешает начинать новый поток с вызова функции 5 и зацикливать его в случае типа setInterval?
  • tsdima wrote:
    theonlymirage wrote:Думаю их лучше реализовать в стандартных библиотеках/модулях для всех языков программирования.
    Много шума из ничего. Если всё-таки использовать многозадачность, то кто мешает начинать новый поток с вызова функции 5 и зацикливать его в случае типа setInterval?
    мешает разрастание программы
    Технологии меняют мир, а я - меняю технологии.
  • Вообще можно отследить какие часто функции используются во многих программ, это например строковые ф-ции strcpy, strcmp, memcpy, и тд я видел есть даже реализации в самом ядре, почему их не выносят в прерывание? Ведь это уменьшило код почти всех программ?
    Технологии меняют мир, а я - меняю технологии.
  • pavelyakov wrote:почему их не выносят в прерывание?
    Ты хоть примерно представляешь, что делает процессор при выполнении инструкции int 0x40?
  • tsdima wrote:
    pavelyakov wrote:почему их не выносят в прерывание?
    Ты хоть примерно представляешь, что делает процессор при выполнении инструкции int 0x40?
    Я понял, тут сглупил, но все де надо что-то придумать на подобии PE dll
    Технологии меняют мир, а я - меняю технологии.
  • pavelyakov wrote:надо что-то придумать на подобии PE dll
    Есть библиотеки .obj в формате MS COFF.
  • Я это все смог реализовать на языке Си в программе для колибри, это возможно реализовать как системную функцию?
    А зачем системная функция, если уже реализуется существующими функциями API?
    Если использовать фьютекс, можно сделать ожидание с прерыванием.
  • pavelyakov wrote:Я это все смог реализовать на языке Си в программе для колибри
    Ну так ты ведь и так уже реализовал. Выноси в библиотеку тогда и используй.
    pavelyakov wrote:Вообще можно отследить какие часто функции используются во многих программ, это например строковые ф-ции strcpy, strcmp, memcpy, и тд я видел есть даже реализации в самом ядре, почему их не выносят в прерывание?
    facepalm В идеале всё, что может быть вынесено из ядра — лучше оттуда вынести. И не так давно были планы по выносу GUI из ядра, а у тебя всё наоборот — предлагаешь запихнуть в ядро неядерные функции.
    pavelyakov wrote:Ведь это уменьшило код почти всех программ?
    Ага, а ещё быстродействие. Ты, наверное, хочешь, чтобы как в MenuetOS

    Code: Select all

    151 - Mathlib
    
           NOTE: Volatile registers for every math function: rax,rbx and xmm0-xmm5
    
           Packed double
    
             In : rbx - 00 - cosine packed double
    
                  xmm0 -  x
    
             Out: xmm0 -  cos(x)
    
             In : rbx - 01 - sine packed double
    
                  xmm0 -  x
    
             Out: xmm0 -  sin(x)
    ....................................         
    pavelyakov wrote:Вот надо тебе чтобы за 10 сек, ровно 10 раз выполнилась проверка, но не получиться из-за событий или из-за циклов и прочей нагрузки, для этого нужно многопоточность.
    И снова facepalm. Для этого НЕ нужно многопоточность. Вот к чему приводит нежелание думать.

    Очередной велосипед.
    pavelyakov wrote:реализовать 2 функции, которые будут работать как в JavaScript: setTimeOut, SetInterval. Смысл такой setTimeOut, создаем отдельный поток, в котором есть функция 5, которая после ожидания события выполняет callback переданной указателя функции.
    Смысл такой setInterval, создаем отдельный поток, в котором есть функция 5, которая после ожидания события выполняет callback переданной указателя функции и все это выполняется в цикле.
    ClearInterval - убивает процесс
    У тебя всё это есть уже!!! Тебе не нужно что-то ещё добавлять в ядро для этого — неужели это не доходит? Что за идиотское желание пихать всякую херь в ядро???
  • Who is online

    Users browsing this forum: Amazon [Bot] and 5 guests