Пока что легкие потоки используются у нас как замена прослойки softirq. Это не главное, для чего они создавались, но в скором времени мы применим их по назначению. Конкретная задача, которая привела к появлению потоков — это драйвер tty, который использовал потоки и синхронизацию мьютексами, а нужно было это на маленькой плате запускать. Тогда из-за отсутствия легких потоков мы пошли обходным путем. Сейчас приоритеты у нас немного другие, но потом мы переведем tty на легкие потоки.
О выигрыше во времени говорить тут не очень уместно. Легкие потоки работают быстрее обычных потоков, да, и в ближайшие пару недель я произведу соответствующие замеры. Но вот, например, если реализовать кооперативную многозадачность только через switch, это будет, очевидно, быстрее. Тут скорее речь идет об удобстве программирования с наименьшими затратами на память и такты. Да еще и круто, что любой легкий поток может синхронизоваться с обычными, передавать сообщения друг другу. То есть они не крутятся каждый в своей песочнице.
Какие-то замеры у нас есть, хоть и не в систематизированном виде. Может, вас что-то конкретное интересует? Я попрошу коллег конкретные цифры предоставить.
Аппаратные прерывания асинхронны, они могут произойти в любой момент, в том числе в середине tasklet'а, и ISR, соответственно, обрабатывается сразу же.
Своего собственного стека у них нет, но на каком-то стеке они все же должны исполняться, так что после обработки ISR есть, какой контекст восстанавливать. В Linux (как минимум в x86), например, перед началом обработки softirq происходит переключение на специально выделенный стек.
Если погуглить, то такой перевод тоже встречается, по-моему, именно его я впервые в университете и услышала.
Но укажу тогда в скобочках и этот вариант, раз вопросы возникают.
Выше уже предложили версию, но у меня есть подозрение, что все проще.
Когда мы говорим про верх и низ страницы, мы говорим top и bottom. Если представить, что мы функцию поделим на две части, то верхняя, что будет исполняться раньше, — это top, а нижняя — bottom.
В статье уточнила.
Своего собственного стека у них нет, но на каком-то стеке они все же должны исполняться, так что после обработки ISR есть, какой контекст восстанавливать. В Linux (как минимум в x86), например, перед началом обработки softirq происходит переключение на специально выделенный стек.
Но укажу тогда в скобочках и этот вариант, раз вопросы возникают.
Читать ядро Linux и правда очень приятно.
Когда мы говорим про верх и низ страницы, мы говорим top и bottom. Если представить, что мы функцию поделим на две части, то верхняя, что будет исполняться раньше, — это top, а нижняя — bottom.