Задать вопрос
@daniil14056

Что такое Потоки на уровне ОС? В 1-ядерном процессоре же всего 1 поток?

Потоки являются эмуляцией ОС. Насколько я понимаю процессор о них не знает.
Пара Вопросов про потоки.
Как они используют Кеш? Они же мешают друг другу.
Есть ли реализации Эмуляции потоков или асинхронности на гитхабе? Может там код Unix? Но как там искать и где не знаю.
Почему с помощью распарализации потоков можно получить выигрыш в скорости вычислений? Это же каждый поток будет постоянно грузить в регистры свои снимки, сохранять, загружать. Промахов по кешу будет больше.
Сколько инструкций за раз выполняется 1, 10, 100? До прерывания? От чего зависит.

И К примеру выполняется такие команды, как пример инструкция чтения строки из stdin, почему вся ос не глохнет. Типа что в этот момент ожидания времени происходит, Или что ОС все 1000 потоков переключает там каждую 0.0001 секунды?
И этот вопрос решается с помощью асинхроности и калбека. Тогда почему вообще вся ОС не асинхронная в одном потоке как Node JS?
  • Вопрос задан
  • 524 просмотра
Подписаться 3 Средний 4 комментария
Ответ пользователя Saboteur К ответам на вопрос (5)
saboteur_kiev
@saboteur_kiev
software engineer
В многозадачной системе каждый процесс имеет кучу всего - свою область памяти, своего родителя, права доступа, открытые файловые дескрипторы и так далее. Переключение с процесса на процесс - довольно тяжелая задача.

Поток или тред - это грубо говоря возможность запустить несколько "облегченных" процессов парралельно, которые используют один набор дескрипторов, один process ID и могут использовать ту же область памяти.
Поэтому будет быстрее и дешевле просчитать что-то в тредах, чем в двух процессах.

Сколько инструкций за раз выполняется 1, 10, 100? До прерывания? От чего зависит.

Зависит от ядра операционки, а точнее от реализации process scheduler. Обычно все завязано на прерывании по таймеру, поэтому выделяются слайсы процессорного времени - а значит у процессора с бОльшей тактовой частотой будет выполнено больше инструкций за слайс. А дальше - process scheduler может быть довольно умным, выделяя конкретному процессу/потоку несколько слайсов подряд, если считает что так будет лучше.
Но слишком сложной логики у process scheduler быть не может, иначе само переключение будет слишком дорогим.
Ответ написан