LINUX.ORG.RU

Re: Аллокатор для RT приложений.

Не знаток RT аллокаторов, но есть предположение что tls-аллокаторы, не отдающие память системе весьма могут сойти за rt. Суть в том, что такой аллокатор(e.g. из google performance tools) для каждой нити держит некоторый обьем памяти и выделяет новые обьекты из него без блокировок и переключений контекста.

YesSSS ★★★ ()

Re: Аллокатор для RT приложений.

в р/т приложениях аллокаторы не используются. всё выделяется статически на этапе компиляции. в виде исключения память может выделяться динамически при старте программы и «освобождаться» кнопкой «питание» ;) но даже при таком выделении точный размер известен заранее, занесён в протокол и подписан причастными лицами ;) это я об р/т в эмбеддед, если что ;)

arsi ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

подтверждаю все до последнего слова :) по крайней мере в базовых станциях сотовой связи, под которые мне пришлось в свое время писать, все было именно так... и ось там была эпическая OSE Delta называется :)

Cy6erBr4in ★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

>в р/т приложениях аллокаторы не используются

не всегда. даже для жёсткого rt - не всегда

>это я об р/т в эмбеддед

embedded тоже разный бывает. в нашем монстре с (уже) ~512MB памяти единоразовое выделение смысла не имеет и не используется (за исключением нескольких микросхем, на которых потом работает свой heap manager). хотя формально мы тоже embedded

jtootf ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от yoghurt

Re: Аллокатор для RT приложений.

> В нашем embedded rt тоже используется динамическая память, и часто.

ну, микроскопом тоже можно гвозди забивать ;)

arsi ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

> в р/т приложениях аллокаторы не используются. всё выделяется статически на этапе компиляции. в виде исключения память может выделяться динамически при старте программы и «освобождаться» кнопкой «питание» ;)

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

tailgunner ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от tailgunner

Re: Аллокатор для RT приложений.

> ...а потом в этой выделенной памяти организуются какие-нибудь самодельные пулы, потому что динамическое выделение памяти необходимо в любой более-менее сложной задаче :)

именно :) и это выделение из собственного пула для каждой задачи реализовано в зависимости от данных: либо это будет массив структур с счётчиком текущей длины, либо по связному списку для занятых и свободных нодов итп. но «выделение»/«освобождение» всегда будет выполняться за заранее известное время и без использования системного алокатора. для сертификации на некоторые уровни надёжности приложение не то что не может выделять память динамически, но память для каждой задачи размечается на этапе проектирования с жёсткой привязкой каждой страницы памяти к конкретной задаче и её адресному пространству (характерно для авиации, но может и не только).

arsi ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

>> ...а потом в этой выделенной памяти организуются какие-нибудь самодельные пулы, потому что динамическое выделение памяти необходимо в любой более-менее сложной задаче :)

> именно :)

Все аллокаторы сначала просят у системы кусок памяти, потом распределяют ее :) RT-аллокатор просто должен обратиться к системе 1 раз, получив столько памяти, что хватит на самый крайний случай. Ну, залочить еще.

> для сертификации на некоторые уровни надёжности приложение не то что не может выделять память динамически, но память для каждой задачи размечается на этапе проектирования

Говорят, на некоторые уровни надежности нужна математическая верификация %)

tailgunner ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от tailgunner

Re: Аллокатор для RT приложений.

> Все аллокаторы сначала просят у системы кусок памяти, потом распределяют ее :)

не все, не всегда. ничто не мешает написать в одной из задач static char buf[1000000], слинковать с р/т-ядром в мегабайтный монолит, запаковать гзипом и скормить ю-буту. ну а ю-бут аккуратно развернёт образ со статически выделенными буферами/пулами на указанные адреса. и никто ни у кого уже ничего не просит ;)

arsi ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

>> Все аллокаторы сначала просят у системы кусок памяти, потом распределяют ее :)

> не все, не всегда.

Примеры такого _аллокатора_ - в студию (кроме U-Boot %))

> ю-бут аккуратно развернёт образ со статически выделенными буферами/пулами на указанные адреса

Это динамическое выделение памяти :) В роли "системы" - либо сам U-Boot.

tailgunner ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от tailgunner

Re: Аллокатор для RT приложений.

> Примеры такого _аллокатора_ - в студию (кроме U-Boot %))

> Это динамическое выделение памяти :) В роли "системы" - либо сам U-Boot.

наверное, начинать надо было с этого: что вы понимаете под терминами «алокатор» и «динамическое» выделение памяти (соответственно, что для вас «не динамическое» выделение памяти)?

arsi ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

> что вы понимаете под терминами «алокатор» и «динамическое» выделение памяти (соответственно, что для вас «не динамическое» выделение памяти)?

Это когда на момент сборки программы ее потребности в памяти неизвестны (это упрощение, конечно). В приведенном случае эта программа - U-Boot. На момент ее сборки ее потребности в памяти (== размер загружаемой программы) неизвестны.

tailgunner ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от zh

Re: Аллокатор для RT приложений.

> неужто он разорвёт бинарник в клочья

ЩИТО?

> затолкает static char buf[1000000] в heap?

Ты знаешь слово heap? Афигеть.

tailgunner ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от tailgunner

Re: Аллокатор для RT приложений.

> Это когда на момент сборки программы ее потребности в памяти неизвестны (это упрощение, конечно).

fail.

http://en.wikipedia.org/wiki/Dynamic_memory_allocation
http://en.wikipedia.org/wiki/Static_memory_allocation

> В приведенном случае эта программа - U-Boot.


нет

> На момент ее сборки ее потребности в памяти (== размер загружаемой программы) неизвестны.



arsi ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

>> Это когда на момент сборки программы ее потребности в памяти неизвестны (это упрощение, конечно).

> fail.

> • http://en.wikipedia.org/wiki/Dynamic_memory_allocation > • http://en.wikipedia.org/wiki/Static_memory_allocation

Афигеть %) Сначала привести пример, который слабо относится к делу, потом кидать ссылки на Википедию :D Надо запомнить тактику.

tailgunner ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от tailgunner

Re: Аллокатор для RT приложений.

>В приведенном случае эта программа - U-Boot.

Убут - это загрузчик. Никакого отношения к выделению памяти он не имеет. Все что он делает - загружает образ системы или программы по определенному адресу в ram и передает управление на точку входа (чаще всего это нулевое смещение). В случае с линукс - еще формирует параметры в виде структур atag по предопределенному смещению - это командная строка, параметры ram, если есть - параметры рамдиска и тд.

imhotep ()
Ответ на: Re: Аллокатор для RT приложений. от tailgunner

Re: Аллокатор для RT приложений.

> Афигеть %) Сначала привести пример, который слабо относится к делу, потом кидать ссылки на Википедию :D Надо запомнить тактику.

Ну да, твоя тактика куда круче: зафейлить один раз, а потом, тут же, второй. класс!

zh ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

>> Не я его упомянул в этом разговоре :)

> но и не я же сфейлил, назвав его динамическим алокатором ;)

Ты сфейлил, когда не понял шутки, специально отмеченной смайликом. Начал приводить какие-то линки (на Вики, хе-хе), какие-то значки... зачем?

tailgunner ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от tailgunner

Re: Аллокатор для RT приложений.

> Ты сфейлил, когда не понял шутки, специально отмеченной смайликом.

ага, так теперь это уже шутка? неплохая стратегия: нагородить хрени и съехать на «а я пошутил, а вы не поняли». кстати, перечитал ещё раз ваш фейл, смайлов не обнаружил. невидимой краской рисовали?

прекращайте уже позориться. ну сфейлили, с кем не бывает…

arsi ★★★★★ ()
Ответ на: Re: Аллокатор для RT приложений. от arsi

Re: Аллокатор для RT приложений.

>> Ты сфейлил, когда не понял шутки, специально отмеченной смайликом.

>ага, так теперь это уже шутка?

Не "теперь", а с самого начала. Как можно было еще ответить на упоминание U-Boot в таком топике? ИМХО, само это упоминание не могло быть серьезным. Но если оно таки было серьезным, тогда конечно, засчитай мне фейл - я принял глупость за шутку.

> прекращайте уже позориться

Ты думаешь, меня волнует вероятность опозориться в твоих глазах? ;)

tailgunner ★★★★★ ()

Re: Аллокатор для RT приложений.

какие тут, однако, страсти

jtootf ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.