
Компили исходники C++ в бинарный файл безо всяких рантаймов. Тогда, считай, у тебя код будет исполняться почти на голом железе, при необходимости дёргая API операционки. Естественно, ОС обеспечивает защиту памяти, переключение потоков, но от этого никуда не деться.
Собери свой дистрибутив Linux, из которого выкинуто всё лишнее (или возьми какой-нибудь минималистичный дистрибутив), поставь приоритет твоего процесса повыше - результат будет не хуже, чем если написать свою ОС.
Java os была в девяностых, но чтото не пошло
А в чем проблема использовать уже существующие драйвера?
>вычислять все на голом железе
А сейчас как "вычисляется"? Единственный overhead у user space программок это сисколы с копированием памяты с какого-нибудь сокбафера, например.
Проиграл
На таких масштабах - много. При переключении контекста весь стейт процессора выгружается и загружается заново на входе и выходе из сискола.
Но на практике это копейки по сравнению с ожиданием мютекса.
>>384281 (OP)
> Мысли?
Так делали до появления ОС. Знаешь почему перестали? Потому что компьютеры заточенные под одну программу большую часть времени простаивают, а когда надо сделать больше чем одну - у тебя появляются управление памятью, переключения контекстов, шедулер с различними политиками передачи исполнения и т.д.
А то что ты хочешь теперь делается на микроконтроллерах, да может в разработке под RTOS.
Ну а если хочешь - бери qemu, запинь ей конкретное ядро, загрузись готовым бутлоадером с гитхаба, переключиcь в long mode, реализуй страничную память и аллокатор поверх неё и дальше пиши что хочешь.
На расте такое пишется где-то за месяц если знать что делать. Если не знать, то в универах это занимает 1-2 семестра.
Можешь литературу по теме посоветовать. Я в общих чертах представляю, как оно там работает, но с ходу не смогу написать. И вообще сначала хотелось бы какие-то тесты сделать, чтобы знать, какой производительности ожидать. Плюс если цифры молотить, то можно использовать какой-нибудь SIMD, хз, как сама виртуалка Джавы это делает.
>на микроконтроллерах
Можно подробнее этот момент?
Я забыл как это называется, были же какие-то шпециальные операционки, даже название было какое-то для них.
>На расте такое пишется где-то за месяц если знать что делать
На Си за пару вечеров.
А почему они должны? Вообще TCO скорее всего не включается при наличии нетривиальных деструкторов в скоупе, но FYI компилятор может переставлять вызов деструктора по своему желанию в рамках всего скоупа.
Если хочешь что-то явное - создай явно scope для временных объектов, и деструктор вызовется при выходе из него.
>Нахуя тебе вообще эти смартпоинтеры, пиши свой аллокатор, блеать.
Я в плюсах слабо шарю, как это написать-то?
Так это и есть смарт поинтер, не?
А, понял, сорян, тупанул сначала.
>Просто тупо убрать все эти ненужные слои и вычислять все на голом железе.
Проще FreeDOS какой-нибудь взять, чем свой велосипед городить (там вроде есть поддержка 64 бит). Там почти никаких слоев - ни виртуальной памяти, ни многозадачности. При этом есть USB и TCP/IP стек, то есть не с самого низа начинаешь.
>Раст рекомендуете для таких задач?
Для каких? ОП на голом желез хочеть кодить. Там виртуальной памяти нет, и нет динамической аллокации (если сам не запилишь), а значит раст там бесполезен. Вся его "безопасность" распространяется только на динамически выделяемую память. Средств для работы со статической памятью там меньше, чем в Паскале. Из не самых эзотерических языков такое умеет только Ада.
Делай лисп-машину, брат
>короче, получил очень ощутимый прирост в производительности
Производительности чего конкретно?
Я конечно хз что за "язык программирования для написания бизнес-приложений" изобрел ваш НИИ, но что то мне подсказывает что это нечто максимально похожее на BPMN-ботву. Если это так, скорее всего в конечных приложухах на этом языке ты больше времени проводишь в блокировках на всяких БД и вызовах всяких апишек, с которыми твое "бизнес-приложение" интегрируется, и никакого реального прироста от этой экономии на спичках по факту за пределами своих бенчмарков не выиграешь. Только огребешь головняка от плюсов.
>Производительности чего конкретно?
Ну ты разницу между голым железом и виртуалкой джавы понимаешь?
Виртуалки джавы более чем достаточно для перекладки джсонов - основным боттлнеком, скорее всего, будет база, хоть ты на ассемблере пиши. Поэтому тебя и спрашивают: чем конкретно твоё "бизнес-приложение" занимается?
вы за целый месяц так и не определились? если уже собираетесь писать ось с нуля, то почему не можете взять из готовых и переделать под себя?
> В связи с этим возникла идея: а почему не пойти дальше и не написать свою ОС
Нет! тупая идея.
> ощутимый прирост в производительности
Оптимизация - это целый этап в разработке который был во времена 90-х, который делиться 10 уровней как минимум.
Ты не представляешь себе сколько еще можно выжать производительности, если просто начать копаться в своем коде.
Не меняя ничего кроме своего кода.
> Мысли?
Тебе в embedded инженеры. софт на С/С++ перенести на микроконтроллер не проблема если нет 100500 привязок к API.
>>385207
> написать свою ОС
> Как минимум PCIe, SATA/NVME и Ethernet.
Ты будешь ковырять полгода только SATA. УДАЧИ.
>>390713
> Единственный overhead у user space программок это сисколы с копированием памяты с какого-нибудь сокбафера, например
Нет! У тебя по дефолту вытесняющая многозадачность. У тебя куча процессов которое жрет проц. время. У тебя есть обработчики прерываний, драйверы. Фрагментация памяти. Плюс, просто ненужно йзалупы которая вращается в ядре просто так.
>>391193
> Сколько на них времени уходит?
Дохера. Любой прыжок или вызов чего-то там жрет производительность.
inlline придумали просто так для лохов.
>>392890
> я когда делал эту хуйню на смарт-поинтерах
что бывает с человеком пораженным Java или JavaScript..
> В связи с этим возникла идея: а почему не пойти дальше и не написать свою ОС
Нет! тупая идея.
> ощутимый прирост в производительности
Оптимизация - это целый этап в разработке который был во времена 90-х, который делиться 10 уровней как минимум.
Ты не представляешь себе сколько еще можно выжать производительности, если просто начать копаться в своем коде.
Не меняя ничего кроме своего кода.
> Мысли?
Тебе в embedded инженеры. софт на С/С++ перенести на микроконтроллер не проблема если нет 100500 привязок к API.
>>385207
> написать свою ОС
> Как минимум PCIe, SATA/NVME и Ethernet.
Ты будешь ковырять полгода только SATA. УДАЧИ.
>>390713
> Единственный overhead у user space программок это сисколы с копированием памяты с какого-нибудь сокбафера, например
Нет! У тебя по дефолту вытесняющая многозадачность. У тебя куча процессов которое жрет проц. время. У тебя есть обработчики прерываний, драйверы. Фрагментация памяти. Плюс, просто ненужно йзалупы которая вращается в ядре просто так.
>>391193
> Сколько на них времени уходит?
Дохера. Любой прыжок или вызов чего-то там жрет производительность.
inlline придумали просто так для лохов.
>>392890
> я когда делал эту хуйню на смарт-поинтерах
что бывает с человеком пораженным Java или JavaScript..
для крудошлепства более чем достаточно и интерпретатора brainfuck на Pentium II.
>что бывает с человеком пораженным Java или JavaScript..
Я генерил С++ код из нашего байт-кода, я не могу вручную там память освобождать, это даже не мой код вообще.
Луговский, ты заебал.