LINUX.ORG.RU

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

YesSSS ★★★
()

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

arsi ★★★★★
()
Ответ на: комментарий от arsi

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

Cy6erBr4in ★★★
()
Ответ на: комментарий от arsi

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

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

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

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

jtootf ★★★★★
()
Ответ на: комментарий от yoghurt

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

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

arsi ★★★★★
()
Ответ на: комментарий от arsi

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

arsi ★★★★★
()
Ответ на: комментарий от arsi

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

> именно :)

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

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

arsi ★★★★★
()
Ответ на: комментарий от arsi

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

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

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

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

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

arsi ★★★★★
()
Ответ на: комментарий от tailgunner

> Это динамическое выделение памяти :)

ЩИТО? неужто он разорвёт бинарник в клочья и затолкает static char buf[1000000] в heap?
экий волшебник =)

zh
()
Ответ на: комментарий от arsi

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от zh

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

ЩИТО?

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

fail.

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

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


нет

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



arsi ★★★★★
()
Ответ на: комментарий от arsi

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

> fail.

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

imhotep
()
Ответ на: комментарий от tailgunner

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

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

zh
()
Ответ на: комментарий от imhotep

> Убут - это загрузчик. Никакого отношения к выделению памяти он не имеет.

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

arsi ★★★★★
()
Ответ на: комментарий от arsi

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

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

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

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

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

arsi ★★★★★
()
Ответ на: комментарий от arsi

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

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

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

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

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

tailgunner ★★★★★
()

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

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