Как стать автором
Обновить

Комментарии 7

Плюсанул.
Есть еще весьма странная книга про устройства ядра линукса, не помню название. там тоже описана часть ядра которая отвечает за планировщик, в том числе и в многопроцессорной среде.
Спасибо. Так они все похожи. Т.е., реализация, конечно, разная. Но подходы достаточно однообразны в плане «концепта». Терминология может отличаться в чем-то, но по-сути оно «как-то так» и выглядит все.
Тема сродства потока к логическому процессору (и эффективности ручного управления сродством) не раскрыта.
Я рассматривала родство «управления потоками» логическому процессу, а не родство «потока». И, кстати, я ничего не говорила про «ручное» управление. Тем более, про его эффективность.
Что именно не раскрыто, и что Вам конкретно не понятно? Вам бы хотелось видеть формулы из темы систем массового обслуживания как таковые? Распредения?
Ну например есть возможность назначить своим потокам логический процессор. В результате потоки перестают конкурировать между собой (+), но не исключена ситуация когда поток ждет своего процессора, когда другой простаивает (-)
Да, это вполне вписывается в
"… давайте представим, что касс (процессоров) несколько. И тут те же принципы, только либо несколько очередей… ".

Спасибо за дополнение.
Если раздавать время потокам а не процессам (не важно, с приоритетами или без них), то тот процесс, который создал больше потоков, при равном приоритете за счет количества потоков сразу же получит больше процессорного времени. Что неправильно. Особенно – в многопользовательской системе массового обслуживания.
Конечно в примитивных (в плане распределения времени) системах типа Linux на это забивают и единицей планирования является поток. Но в истинных системах ориентированных на массовое обслуживание на это не забивают.
Причем используются намного более сложные алгоритмы распределения времени, чем квантование или приоритеты в чистом виде (или их тривиальное соединение). Из-за того, что потоки в произвольные моменты времени входят в ждущие syscall, в реальных системах выделение времени фиксированными квантами вообще не жизненно.
Вы упоминаете о системах совмещающих приоритеты и кванты, что ведет в логическом развитии к системам с динамическим приоритетом. Но существуют и другие подходы, которые ориентируются, например, на время простоя, суммарное количество израсходованного процессорного времени, частоту попадания в состояние ожидания и так далее.
Более продвинутые (по сравнению с PC-шными системами типа Linux) алгоритмы распределения времени существовали в системах для мэйнфреймов IBM уже в 70-е годы прошлого века. Описание многих аспектов их функционирования можно найти в документации на мэйнфреймовские системы и в статьях. Именно мэйнфреймах эти алгоритмы продвинуты дальше, чем где бы то ни было и сейчас.
Еще одна важная деталь, которую учитывает даже Windows на PC и современные schedulers в Linux – это прочистка кэшей и TLB при смене адресных пространств или переносе потоков на другой процессор. По возможности нужно выделять потоку тот же процессор, на котором он уже исполнялся до этого, чтобы минимизировать прочистку TLB и кэшей. Поэтому планирование времени без учета процессов (чисто на уровне потоков) именно для многопроцессорных систем не жизненно.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории