169 похожих чатов

А нафига асинк на бареметале?

16 ответов

40 просмотров

чтобы абстрагировать ивентлуп у раста есть некоторые интересные заходы в этом направлении, например https://embassy.dev/

Vladimir-Berezenko Автор вопроса
Max Силинг
чтобы абстрагировать ивентлуп у раста есть некотор...

я не увидел в целом ответа нафига асинк на бареметале?

Vladimir-Berezenko Автор вопроса
Max Силинг
чтобы иметь таск менеджмент не таща RTOS

весь таск-менеджмент будет обработка прерываний.

Vladimir Berezenko
весь таск-менеджмент будет обработка прерываний.

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

Max Силинг
во-первых, это не совсем так — асинк кооперативный...

суммарно можно иметь шедулинг тасок (включающий в себя обработку прерываний) в либе и писать сравнительно высокоуровневый код в приложении, и при этом не платить за полноценную RTOS

Vladimir-Berezenko Автор вопроса
Max Силинг
во-первых, это не совсем так — асинк кооперативный...

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

Vladimir-Berezenko Автор вопроса
Max Силинг
суммарно можно иметь шедулинг тасок (включающий в ...

ртос и выполняет шедулинг, т.к. в асинке шедулера вобщем-то и нет.

Vladimir Berezenko
Асинк вот нихрена не кооперативный, т.к. задачи в ...

«кооперативный» как раз и значит, что задача может отдать управление в ивентлуп (в отличие от вытесняющего, когда управление силой можно отобрать)

Vladimir-Berezenko Автор вопроса
Vladimir-Berezenko Автор вопроса
Max Силинг
«кооперативный» как раз и значит, что задача может...

А ради смеха можешь дискетку на win 3.11 поформатировать - как-раз кооперативная многозадачность.

Vladimir Berezenko
ртос и выполняет шедулинг, т.к. в асинке шедулера ...

асинк с точки зрения нима это вообще набор макросов конкретный асинк рантайм может включать в себя шедулер который как-то выбирает, как и когда выполнять таски отличие от RTOS тут в том, что между шедулером и таской нет контекст свитча + они скомпилированы (и оптимизируются, включая dead code elimination) вместе

Max Силинг
асинк с точки зрения нима это вообще набор макросо...

по сути получается, что программа сама себе RTOS с кооперативными тасками понятно, что если у тебя кооперативная многозадачность, то нужно быть аккуратным и не забывать отдавать управление, чтобы другие таски могли сделать прогресс

Vladimir-Berezenko Автор вопроса
Max Силинг
асинк с точки зрения нима это вообще набор макросо...

Ты тёплое и мягкое путаешь. Любая РТОС ориентирована на обработку событий реального времени (максимально быстрая реакция на прерывания), ты никак не сможешь достигнуть этих результатов в любом асинхронном коде какой-бы там монструозный шедулер ни был-бы написан. QNX - RTOS, к примеру.

Vladimir-Berezenko Автор вопроса

Ну знаешь, если-бы всё так было просто, то нахрена было-бы выдумывать все эти реалтайм оси. Вон даже для ядра линуха, который и так с вытесняющей многозадачностью, есть набор патчей который превращает его в ртос. А насчёт неочевидно для кооперативной многозадачности: 1. Тебе пришло прерывание. 2. У тебя выполняется непрерываемая задача. 3. Ты ставишь прерывание в очередь шедулера. 4. Когданить (возможно и через полчаса если у тебя п.2 ресурсоёмкая и синхронная) у тебя сработает возврат в шедулер и начнёт обрабатываться первое прерывание. 5. У тебя уже херова гора таких прерываний в шедулере. 6. ЖОПА :) Я кагбэ много времени работал с низким уровнем и знаю как это всё работает и когда что можно применять, а когда нет.

Похожие вопросы

Обсуждают сегодня

how would ypu guys protect your public groups (with more than 1k members) without restricting user's freedom?
Mat Lumin
24
Пятничное. Немножко длинно объясню постановку задачи и потом задам вопрос, не требующий срочного решения (я уже решил по-другому). Есть пару сотен хостов на Бубунте, туда мо...
Д. П.
5
а что это все вдруг так рьяно стали обезьяну продвигать? вроде ещё недавно все в один голос вопили, что она сырая.... неужели Розыч ошибся, сделав ставку на лазарь?
Iluha Companets
25
2 байта генерирует?
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
12
ты ж не будешь его сам придумывать не зная алгоритма его появления?
Aiwan \ (•◡•) / _bot
42
Warning Failed to apply the selected architecture x86_64-pc-windows-msvc. Got ["x86"]. Error Unsupported architecture: x86_64-pc-windows-msvc кто-нибудь знает, что с ldc2? вот...
quantumde1 Зубенко
3
Зачем вы пишите на ассемблере?
Florson In
85
всем привет, как можно получить количество символов в строке в Fasm x86?
.
24
как максимально эффективно сравнить две asciiz строки на ассемблере?
Vi Chapmann
80
Ребят, а есть у кого-то реализация прокси (прямого) на Vapor? Примеров не нашел, ковыряюсь сам несколько дней. Сделал middleware с async-http-client для этого. В идеале виж...
advanc3d
2
Карта сайта