Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 51 2 31
Собственная кастомная ОС Аноним 09/02/25 Вск 03:35:43 3384281 1
image.png 1983Кб, 1280x855
1280x855
Наша контора создала собственный язык программирования для написания бизнес-приложений. Проблема в том, что рантайм работает на Джаве. Я пробовал генерировать исходники в С++ и потом их компилировать, использовал там смарт-поинтеры, короче, получил очень ощутимый прирост в производительности. В связи с этим возникла идея: а почему не пойти дальше и не написать свою ОС, которая будет заточена именно под этот язык? Просто тупо убрать все эти ненужные слои и вычислять все на голом железе. Мысли?
Аноним 09/02/25 Вск 11:32:23 3384427 2
Зачем тратить кучу времени на изобретение велосипеда? Ты хоть представляешь, сколько времени ты потратишь на написание и портирование драйверов оборудования, помимо написания ОС?
Компили исходники C++ в бинарный файл безо всяких рантаймов. Тогда, считай, у тебя код будет исполняться почти на голом железе, при необходимости дёргая API операционки. Естественно, ОС обеспечивает защиту памяти, переключение потоков, но от этого никуда не деться.
Собери свой дистрибутив Linux, из которого выкинуто всё лишнее (или возьми какой-нибудь минималистичный дистрибутив), поставь приоритет твоего процесса повыше - результат будет не хуже, чем если написать свою ОС.
Аноним 09/02/25 Вск 16:55:59 3384767 3
>>3384281 (OP)
Java os была в девяностых, но чтото не пошло
Аноним 09/02/25 Вск 18:47:22 3384845 4
image.png 909Кб, 2730x914
2730x914
Аноним 09/02/25 Вск 22:08:17 3385041 5
>>3384427
Какое оборудование ты имеешь в виду?
Аноним 10/02/25 Пнд 03:00:08 3385207 6
>>3385041
Как минимум PCIe, SATA/NVME и Ethernet.
Аноним 16/02/25 Вск 23:31:05 3390557 7
>>3385207
А в чем проблема использовать уже существующие драйвера?
Аноним 17/02/25 Пнд 11:03:21 3390713 8
>>3384281 (OP)
>вычислять все на голом железе
А сейчас как "вычисляется"? Единственный overhead у user space программок это сисколы с копированием памяты с какого-нибудь сокбафера, например.
Аноним 17/02/25 Пнд 20:47:58 3391193 9
>>3390713
>сисколы
Сколько на них времени уходит?
Аноним 17/02/25 Пнд 22:01:24 3391229 10
Аноним 17/02/25 Пнд 22:37:49 3391247 11
Аноним 17/02/25 Пнд 22:38:52 3391248 12
>>3391193
На таких масштабах - много. При переключении контекста весь стейт процессора выгружается и загружается заново на входе и выходе из сискола.
Но на практике это копейки по сравнению с ожиданием мютекса.

>>3384281 (OP)
> Мысли?
Так делали до появления ОС. Знаешь почему перестали? Потому что компьютеры заточенные под одну программу большую часть времени простаивают, а когда надо сделать больше чем одну - у тебя появляются управление памятью, переключения контекстов, шедулер с различними политиками передачи исполнения и т.д.

А то что ты хочешь теперь делается на микроконтроллерах, да может в разработке под RTOS.

Ну а если хочешь - бери qemu, запинь ей конкретное ядро, загрузись готовым бутлоадером с гитхаба, переключиcь в long mode, реализуй страничную память и аллокатор поверх неё и дальше пиши что хочешь.

На расте такое пишется где-то за месяц если знать что делать. Если не знать, то в универах это занимает 1-2 семестра.
Аноним 17/02/25 Пнд 23:12:23 3391266 13
>>3391248
Можешь литературу по теме посоветовать. Я в общих чертах представляю, как оно там работает, но с ходу не смогу написать. И вообще сначала хотелось бы какие-то тесты сделать, чтобы знать, какой производительности ожидать. Плюс если цифры молотить, то можно использовать какой-нибудь SIMD, хз, как сама виртуалка Джавы это делает.

>на микроконтроллерах
Можно подробнее этот момент?
Аноним 18/02/25 Втр 12:10:35 3391574 14
Буду следить за тредом. Тоже тема интересует
Аноним 18/02/25 Втр 13:02:30 3391616 15
>>3391248
Я забыл как это называется, были же какие-то шпециальные операционки, даже название было какое-то для них.
>На расте такое пишется где-то за месяц если знать что делать
На Си за пару вечеров.
Аноним 19/02/25 Срд 19:00:53 3392708 16
>>3391266
Не знаю, анон, у меня это было давно и по учёбе. Поищи гайды на тему bare metal programming, или embedded programming.
>>3391616
Тоже такое припоминаю, но чёт не могу нагуглить. Chat GPT говорит искать unikernel и смотреть unikraft
Аноним 20/02/25 Чтв 04:38:01 3392890 17
ОП на связи. Ещё такой вопрос: я когда делал эту хуйню на смарт-поинтерах, заметил такую вещь, что если создавать какой-то объект каждый раз при вызове рекурсивной функции при хвостовой рекурсии, то эти объекты начинают деаллоцироваться только после того, как рекурсия отработает. Что это за хуйня? Почему они сразу не уничтожаются?
Аноним 20/02/25 Чтв 13:44:28 3393099 18
>>3392708
>unikernel
Да, вроде это, чтобы убрать весь оверхед с переключением контекста и перекладыванием памяти с места на место.
>>3392890
Нахуя тебе вообще эти смартпоинтеры, пиши свой аллокатор, блеать.
Аноним 20/02/25 Чтв 14:03:43 3393115 19
>>3392890
А почему они должны? Вообще TCO скорее всего не включается при наличии нетривиальных деструкторов в скоупе, но FYI компилятор может переставлять вызов деструктора по своему желанию в рамках всего скоупа.
Если хочешь что-то явное - создай явно scope для временных объектов, и деструктор вызовется при выходе из него.
Аноним 21/02/25 Птн 02:48:37 3393696 20
>>3393099
>Нахуя тебе вообще эти смартпоинтеры, пиши свой аллокатор, блеать.
Я в плюсах слабо шарю, как это написать-то?
Аноним 21/02/25 Птн 02:50:21 3393697 21
>>3393115
>создай явно scope
Не ебу, как это сделать. Дай мануал, плиз.
Аноним 21/02/25 Птн 20:09:45 3394434 22
>>3393697
do_shit(args) {
{
auto shit = make_shared(...)
}
// no shit here
return do_shit(args)
}
Аноним 22/02/25 Суб 01:47:34 3394609 23
>>3394434
Так это и есть смарт поинтер, не?
Аноним 22/02/25 Суб 01:48:40 3394610 24
>>3394434
А, понял, сорян, тупанул сначала.
Аноним 28/02/25 Птн 00:43:19 3398857 25
Раст рекомендуете для таких задач?
Аноним 28/02/25 Птн 02:28:40 3398879 26
>>3384281 (OP)
>Просто тупо убрать все эти ненужные слои и вычислять все на голом железе.
Проще FreeDOS какой-нибудь взять, чем свой велосипед городить (там вроде есть поддержка 64 бит). Там почти никаких слоев - ни виртуальной памяти, ни многозадачности. При этом есть USB и TCP/IP стек, то есть не с самого низа начинаешь.
Аноним 28/02/25 Птн 02:35:12 3398881 27
>>3398857
>Раст рекомендуете для таких задач?
Для каких? ОП на голом желез хочеть кодить. Там виртуальной памяти нет, и нет динамической аллокации (если сам не запилишь), а значит раст там бесполезен. Вся его "безопасность" распространяется только на динамически выделяемую память. Средств для работы со статической памятью там меньше, чем в Паскале. Из не самых эзотерических языков такое умеет только Ада.
Аноним 28/02/25 Птн 07:22:02 3398905 28
Аноним 28/02/25 Птн 17:27:25 3399316 29
>>3391248
>>3391193
>>3390713
на современных потребительских осях сисколы же не требуют полного переключения контекста, и поэтому довольно дешёвы, а вообще переключение контекста в таких осях происходит каждый определённый промежуток времени или опять же вовремя сисколов.
Аноним 02/03/25 Вск 00:41:07 3399881 30
>>3398879
>ни многозадачности
Тогда это не подходит.

ОП
Аноним 05/03/25 Срд 13:24:37 3402149 31
>>3398857
>Раст
Ну если для вибраторов прошивки собрался писать, то тут да, без раста никак.
>>3399316
Юзерспейс остается юзерспейсом и тащит весь возможный оверхед связанный с этим делом.
Аноним 06/03/25 Чтв 00:11:06 3402612 32
>>3384281 (OP)
>короче, получил очень ощутимый прирост в производительности

Производительности чего конкретно?

Я конечно хз что за "язык программирования для написания бизнес-приложений" изобрел ваш НИИ, но что то мне подсказывает что это нечто максимально похожее на BPMN-ботву. Если это так, скорее всего в конечных приложухах на этом языке ты больше времени проводишь в блокировках на всяких БД и вызовах всяких апишек, с которыми твое "бизнес-приложение" интегрируется, и никакого реального прироста от этой экономии на спичках по факту за пределами своих бенчмарков не выиграешь. Только огребешь головняка от плюсов.
Аноним 08/03/25 Суб 02:23:49 3404100 33
>>3402612
>Производительности чего конкретно?
Ну ты разницу между голым железом и виртуалкой джавы понимаешь?
Аноним 19/03/25 Срд 07:09:42 3411386 34
Так есть какие-то наработки по теме? Какой-нибудь каркас ОС без всякого говна. Фри дос не подходит, нужны потоки хоть в каком-то виде.
Аноним 19/03/25 Срд 10:50:49 3411478 35
>>3404100
Виртуалки джавы более чем достаточно для перекладки джсонов - основным боттлнеком, скорее всего, будет база, хоть ты на ассемблере пиши. Поэтому тебя и спрашивают: чем конкретно твоё "бизнес-приложение" занимается?
Аноним 19/03/25 Срд 13:45:01 3411584 36
>>3411386
вы за целый месяц так и не определились? если уже собираетесь писать ось с нуля, то почему не можете взять из готовых и переделать под себя?
Аноним 20/03/25 Чтв 04:32:19 3412082 37
>>3411584
Это просто моя идея, про неё никто не знает пока.

>>3411478
Рантайм для кастомного языка программирования, написал же в ОП-посте. БД представляет собой граф в памяти.
Аноним 20/03/25 Чтв 07:09:49 3412095 38
>>3384281 (OP)
> В связи с этим возникла идея: а почему не пойти дальше и не написать свою ОС
Нет! тупая идея.

> ощутимый прирост в производительности
Оптимизация - это целый этап в разработке который был во времена 90-х, который делиться 10 уровней как минимум.
Ты не представляешь себе сколько еще можно выжать производительности, если просто начать копаться в своем коде.
Не меняя ничего кроме своего кода.

> Мысли?
Тебе в embedded инженеры. софт на С/С++ перенести на микроконтроллер не проблема если нет 100500 привязок к API.


>>3385207
> написать свою ОС
> Как минимум PCIe, SATA/NVME и Ethernet.
Ты будешь ковырять полгода только SATA. УДАЧИ.

>>3390713
> Единственный overhead у user space программок это сисколы с копированием памяты с какого-нибудь сокбафера, например
Нет! У тебя по дефолту вытесняющая многозадачность. У тебя куча процессов которое жрет проц. время. У тебя есть обработчики прерываний, драйверы. Фрагментация памяти. Плюс, просто ненужно йзалупы которая вращается в ядре просто так.

>>3391193
> Сколько на них времени уходит?
Дохера. Любой прыжок или вызов чего-то там жрет производительность.
inlline придумали просто так для лохов.

>>3392890
> я когда делал эту хуйню на смарт-поинтерах
что бывает с человеком пораженным Java или JavaScript..
Аноним 20/03/25 Чтв 08:08:16 3412108 39
>>3411478
для крудошлепства более чем достаточно и интерпретатора brainfuck на Pentium II.
Аноним 20/03/25 Чтв 23:39:07 3412677 40
>>3412095
>что бывает с человеком пораженным Java или JavaScript..
Я генерил С++ код из нашего байт-кода, я не могу вручную там память освобождать, это даже не мой код вообще.
Аноним 20/03/25 Чтв 23:40:18 3412678 41
>>3412108
Луговский, ты заебал.
Аноним 06/04/25 Вск 01:20:03 3424060 42
Блять, вы в ОС вообще не одупляете тут?
Аноним 06/04/25 Вск 01:57:58 3424066 43
Аноним 06/04/25 Вск 02:38:17 3424072 44
>>3424066
А нахуй этот раздел тогда нужен?
Аноним 06/04/25 Вск 08:33:23 3424113 45
есть же такие концепции как exokernel и unikernel, про первое хз, но для второго уже существуют готовые решения на различных языках.
Аноним 06/04/25 Вск 09:09:31 3424121 46
>>3424072
Ну мы как-бы хотим научиться тоже, чтобы свои операционки создавать
Аноним 07/04/25 Пнд 02:05:47 3424731 47
Литературу по написанию ОС с нуля посоветуйте.
Аноним 07/04/25 Пнд 07:36:45 3424750 48
Аноним 12/04/25 Суб 11:42:45 3429089 49
Аноним 17/04/25 Чтв 23:36:57 3433591 50
Для тех кто желает последовать идеям ОПа, но лизькаете раст
https://os.phil-opp.com/
Аноним 19/04/25 Суб 20:29:56 3435233 51
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов