что такое основной поток и дополнительный поток
О потоках в процессоре
Добрый день. Сегодня хотелось бы разобрать, что такое потоки в процессоре. Те самые, о функциях и возможностях которых большинство и не догадывается, однако любят хвастаться остальным.
Если провести сравнение процессоров разных поколений, то можно заметить одну интересную тенденцию: многопоточность – штука полезная и здорово повышает суммарную производительность системы.
Начнем с того, что каждый современный процессор построен на физических ядрах с определенной частотой. Допустим, 1 ядро имеет тактовую частоту в 3 ГГц, т.е. может выполнить 3 млрд вычислительных операций за секунду (такт). Но современные ОС (Windows, Linux, MacOS) запускают более 3 млрд процессов, т.е. пользователь начинает сталкиваться с таким понятием как прерывание: ЦП физически не успевает обрабатывать все сразу и начинает переключаться на самые приоритетные задачи.
Логика здесь элементарная: присмотреться к многоядерным и многопоточным решениям. Разгон не дает линейного прироста в производительности, иначе такие гиганты как Intel и AMD выпускали бы процессоры на 5-6 и более ГГц.
Польза от повышения частоты есть, но она нивелируется увеличенным энергопотреблением и сокращением срока службы ЦП.
Многопоточность и все о ней
Многие наверняка слышали выражения из серии «2 потока», «4 потока», «8 потоков» и т.д. При этом физических ядер зачастую было в 2 раза меньше.
Эта технология имеет название HyperThreading (Intel) или SMT (AMD).
Многопоточность у красных появилась совсем недавно, с выходом чипов Ryzen на совершенно новом техпроцессе. Что это такое – тема отдельной статьи.
Цель функции заключается в том, что на 1 ядро может одновременно обрабатывать несколько потоков данных. Пока первый поток простаивает, а второй занимается вычислением, запущенное приложение может воспользоваться вакантной логической мощью для своих целей. В результате, прерывания случаются гораздо реже, а вы не ощущаете тормозов и прочих неудобств при работе.
Недостаток технологии заключается в следующем:
Если очень грубо, то все кирпичи с одного места на другое можно перенести в одной руке (1 поток), либо в двух (2 потока), но человек при этом один (1 ядро) и устает одинаково при любых условиях, хоть его производительность фактически увеличивается вдвое. Иными словами, мы упираемся в производительность ЦП, а конкретней в его частоту.
Знакомы с понятием Turbo Boost? Процесс кратковременно повышает частоту процессора на несколько сотен мегагерц в особо сложных сценариях, чтобы вы не испытывали проблем при обработке сложных данных.
Сколько нужно ядер и потоков современному обывателю?
Как я уже сказал выше, современные ОС падки на ресурсы процессора, поскольку отнимают часть мощностей на собственные службы, интерфейс, красивости и функции защиты в реальном времени. Но при этом пользователь хочет еще и работать с комфортом.
Вместо итогов
Практика показывает, что современный универсальный ПК должен иметь в своем распоряжении как минимум 4 ядра/8 потоков, чего будет достаточно для большинства задач, связанных с обработкой данных. Хотя варианты из серии 6/12 выглядят более обещающими по той причине, что стоят они не намного дороже, а пользы от них больше.
В качестве «золотой» середины можем предложить свежий вариант модели, построенный на обновленной архитектуре Zen2. Он отлично справляется с играми, программами, распараллеливанием и обработкой данных, при этом отлично гонится(одним словом — стал популярным (появился в июле 2019)).
Надеемся, что вы почерпнули для себя полезную информацию, которая пригодится при подборе процессора для будущей системы. Следите за дальнейшими обновлениями, чтобы не пропустить новые статьи об анатомии ЦП.
Процессы и потоки в операционной системе
Процессы
Процессы и стратегия управления памятью
Блестящая стратегическая идея в управлении памятью состоит в том, чтобы процессу выделять не реальную оперативную память, а виртуальную, которую уже потом некоторым образом связывать с реальной памятью. Для 32 разрядных компьютеров адресное пространство составляет 2 32 байтов, примерно 4 Гб. Оперативная память компьютера долгие годы была меньше виртуальной, теперь она практически сравнялась по объему. При желании можно приобрести 32-х разрядный ПК с 4 Гб оперативной памяти, хотя это и неэффективно, поскольку только 2 или 3 Гб будут использоваться в качестве оперативной памяти. По этой причине в ближайшие годы предстоит массовый переход на 64-х битную архитектуру, где виртуальная память становится практически неограниченной по нынешним меркам, так что любая реальная оперативная память будет составлять малую толику виртуального пространства.
Вернемся к 32-х битной архитектуре. Из 4-х Гб виртуальной памяти ОС отводит процессу 2 или 3 Гб виртуальной памяти, оставляя для себя оставшуюся часть пространства. Так что ни один из процессов не обижен, каждый получает виртуальную память одинакового размера. В то же время достаточное пространство отводится самой операционной системе, которая занимает постоянную часть виртуальной памяти, не пересекающееся с памятью, отводимой процессам. Следующая идея состоит в том, что виртуальная и оперативная память рассматривается как состоящая из страниц. Страницы могут быть большими и малыми. У тех и других есть свои преимущества. Малые страницы имеют сравнительно небольшой объем, обычно 4К.
Потоки и стратегия управления временем процессоров
Приоритетность означает, что потоки могут иметь разные приоритеты. В этом случае из двух потоков, готовых к выполнению, на выполнение будет выбран тот, у кого больше приоритет. Более того, если в процессе выполнения потока появился готовый к выполнению поток с большим приоритетом, то выполнение текущего потока будет приостановлено, даже если не истек отведенный ему квант времени. Когда на дороге появляется президентский кортеж, то все участники дорожного движения останавливаются и ждут, пока кортеж не проедет. Все потоки распределяются по группам приоритетности, потоки из одной группы могут быть выбраны на выполнение только в том случае, если нет готовых к выполнению потоков в группах с высшей приоритетностью.
Значит ли это, что могут быть «обиженные» приложения с низким приоритетом, до выполнения которых никогда не дойдет очередь? Это не так. ОС старается никого не обидеть. Если некоторое приложение долго не выполнялось, то ОС временно повышает его приоритет, так что и оно начнет выполняться.
Вытесняющая многозадачность характеризует стратегию планирования для потоков с одинаковым приоритетом. Все потоки в одной группе выстраиваются в очередь. Каждому из них в соответствии с очередью отводится на выполнение некоторый квант времени процессора. По истечении этого кванта поток переводится в состояние «готовность» независимо от его желания продолжить работу, и в состояние «выполнение» переводится следующий по очереди поток. Эту стратегию иногда называют «каруселью». Карусель сделала несколько оборотов, остановилась, все выходят, и места занимают следующие желающие прокатиться, ожидающие с нетерпением своей очереди.
На Рис. 2.1 показаны возможные состояния потока и переходы из одного состояния в другое.
После создания потока и должной инициализации поток переходит в состояние «готовность», занимая в своей группе приоритетности место в конце очереди». Планировщик ОС в соответствии с описанной стратегией выбирает поток, переводя его в состояние «выполнение». По истечении отведенного кванта времени поток возвращается в состояние «готовность», становясь в хвост очереди в своей группе приоритетности. Из состояния «выполнение» поток может перейти в другие состояния и до завершения отведенного кванта времени. В состояние «готовность» он может перейти, если появился поток с большим приоритетом. В состояние «завершение» поток переходит, выполнив свою работу, завершив выполнение отведенного ему фрагмента кода. В состояние «ожидание» поток может перейти, если его дальнейшее выполнение возможно только после наступления некоторого события (например, ему требуются данные, а устройство компьютера, выполняющее ввод этих данных, еще не завершило свою работу). Из состояния «ожидание» поток может перейти в состояние «готовность», если наступило событие, ожидаемое потоком. За время жизни потока он многократно проходит цикл <готовность>-> <выполнение>-> <ожидание>-> <готовность>, иногда минуя переход в состояние «ожидания».
Прерывания инициируются аппаратурой компьютера, чаще всего таймером и устройствами ввода-вывода. ОС в очень коротком цикле рассматривает все возникшие прерывания и должным образом их обрабатывает. Когда возникает прерывание от таймера, то ОС при его обработке из кванта времени, отводимого выполняемому потоку, вычитает время, равное интервалу таймера. Если отводимое потоку время исчерпано, поток снимается с выполнения, переходя в состояние «готовность». Когда устройство ввода заканчивает выполнение очередного задания, оно инициализирует аппаратное прерывание, свидетельствующее о завершении работы. Обрабатывая это прерывание, ОС может перевести некоторый поток из состояния «ожидания» в состояние «готовности», поскольку выполнена его заявка на ввод данных.
У исключений, связанных с самим потоком, более широкий спектр. Потоку, например, может понадобиться ввод внешних данных. Поток не может непосредственно обратиться к устройству ввода. Устройство одно, а потоков много. Поэтому поток вызывает соответствующий системный сервис. С точки зрения ядра ОС возникло исключение. При его обработке поток переводится в режим «ожидания», и начинает работать поток, содержащий соответствующий сервис, который анализирует загруженность устройства, формирует новую заявку для устройства, ставя ее в очередь.
Причина исключения может быть как аппаратной, так и программной. Деление на ноль, это, конечно же, программная ошибка. Исключения, связанные с тем, что не прочитаны требуемые внешние данные, могут быть связаны как со сбоем аппаратуры, так и с неверно заданными адресами в программе. Если письмо не доставлено, то виноватой может быть почтовая служба, а возможно вы послали письмо «на деревню дедушке».
Поток может сам инициировать исключение, уведомляя, например, ОС о том, что он «засыпает» на некоторое фиксированное время. Обрабатывая это прерывание, ОС переводит поток в состояние «ожидание». При обработке одного из очередных прерываний по таймеру, когда завершается время «сна», указанное потоком, поток переводится из состояния «ожидание» в состояние «готовность». Поток может перейти в состояние «ожидание» и по другим причинам, возникающим в ходе выполнения программного кода, например, ожидая завершения работы другого потока. Примеры того, как всем этим может управлять С# программист, будут рассмотрены позднее.
Конечно, ведутся работы по автоматическому распараллеливанию последовательного алгоритма, ориентированного на выполнение одним процессором. Но возможности здесь ограничены. В большинстве случаев самому программисту приходится разрабатывать параллельный алгоритм своей задачи, позволяющий эффективно использовать возможности современных компьютеров. Новая техника со многими процессорами требует новых программ со многими потоками, новых программ для кластеров и суперкомпьютеров.
Процессы, потоки и данные
Операционная система работает с процессами и потоками и ей необходимо хранить информацию об этих объектах. Каждый процесс хранит код приложения и данные, создаваемые в процессе выполнения приложения. С данными работает поток, выполняя программный код. Эти данные могут быть локальными для потока, созданы в потоке и используются только одним потоком. Но у процесса может быть несколько потоков, в этом случае существуют данные процесса, глобальные для потока, обеспечивающие взаимодействие между потоками.
Когда потоки процесса работают последовательно, например в случае одного процессора, то особых проблем не возникает, поскольку не возникают конфликты при выполнении операций чтения и записи. Тем не менее, при работе с глобальными данными программисту приходится быть крайне аккуратным, убеждаясь, что изменение данных в одном потоке не вредит работе с этими данными в другом потоке. Сложнее ситуация, когда потоки работают параллельно. В этом случае возможны конфликты, например, два потока одновременно пытаются изменить одни и те же данные. В этом случае большое внимание приходится уделять средствам синхронизации потоков при работе с данными. О синхронизации, гонке данных, блокировках и клинчах вкратце говорилось в первой главе. Примеры появятся в последующих главах.
Еще одна проблема с данными состоит в том, что поток может в любой момент быть прерванным, перейти в состояние «ожидание» или «готовность», а потом вновь продолжить свою работу в прерванной точке. Для поддержки такой возможности ОС использует объект, называемый контекстом потока. Он включает локальные данные потока, счетчик, указывающий на команду, с которой необходимо начать прерванное выполнение, другую служебную информацию, необходимую для корректного продолжения прерванной работы.
Кроме локальных данных поток работает с данными, общими для приложения в целом. Всем потокам одного процесса, доступны общие данные. При параллельной работе потоков возникает необходимость в синхронизации работы потоков для обеспечения корректной работы с данными. Ответственность за корректную работу потоков лежит на программисте. Дальнейшая часть этой главы и будет посвящена вопросам работы с потоками в программах на C#.
Коммутация и мультиплексирование
Обобщенная задача коммутации
В самом общем виде задача коммутации — задача соединения конечных узлов через сеть транзитных узлов — может быть представлена в виде нескольких взаимосвязанных частных задач:
Определение информационных потоков
Понятно, что через один транзитный узел может проходить несколько маршрутов, например через узел 5 проходят данные, направляемые узлом 4 каждому из остальных узлов, а также все данные, поступающие в узлы 3 и 10. Транзитный узел должен уметь распознавать поступающие на него потоки данных, чтобы обеспечивать их передачу именно на те свои интерфейсы, которые ведут к нужному узлу.
Кроме того, даже для данных, предъявляющих к сети одинаковые требования, может прокладываться несколько маршрутов, чтобы за счет распараллеливания добиться одновременного использования различных каналов и тем самым ускорить передачу данных. В данном случае необходимо «пометить» данные, которые будут направляться по каждому из этих маршрутов.
Определить потоки – это значит задать для них набор отличительных признаков, на основании которых коммутаторы смогут направлять потоки по предназначенным для них маршрутам.
Определение маршрутов
Определение пути, то есть последовательности транзитных узлов и их интерфейсов, через которые надо передавать данные, чтобы доставить их адресату — сложная задача, особенно когда конфигурация сети такова, что между парой взаимодействующих сетевых интерфейсов существует множество путей. Задача определения маршрутов состоит в выборе из всего этого множества одного или нескольких путей. И хотя в частном случае множества имеющихся и выбранных путей могут совпадать, чаще всего выбор останавливают на одном оптимальном 1 На практике для уменьшения вычислительной работы ограничиваются поиском не оптимального в математическом смысле, а рационального, то есть близкого к оптимальному, маршрута. Это касается, прежде всего, случая, когда задача выбора маршрута формулируется как задача многокритериальной оптимизации. по некоторому критерию маршруте.
В качестве критериев выбора могут выступать, например:
Заметим, что даже в том случае, когда между конечными узлами существует единственный путь, его определение при сложной топологии сети может представлять собой нетривиальную задачу.
Однако эвристический подход к определению маршрутов для большой сети со сложной топологией не подходит. В этом случае такая задача решается чаще всего автоматически. Для этого конечные узлы и другие устройства сети оснащаются специальными программными средствами, которые организуют взаимный обмен служебными сообщениями, позволяющий каждому узлу составить свое представление о топологии сети. Затем на основе этого исследования и математических алгоритмов определяются наиболее рациональные маршруты.
Определить маршрут — однозначно задать последовательность транзитных узлов и их интерфейсов, через которые надо передавать данные, чтобы доставить их адресату.
Оповещение сети о выбранном маршруте
После того, как маршрут определен (вручную или автоматически), следует «сообщить» о нем всем устройствам сети. Сообщение о маршруте должно нести каждому транзитному устройству примерно такую информацию: «Если придут данные, относящиеся к потоку n, то нужно передать их на интерфейс F».
Ниже помещен фрагмент таблицы коммутации, содержащий запись, сделанную на основании сообщения о необходимости передачи потока n на интерфейс F.
Направление передачи данных |
---|
номер интерфейса и/или адрес следующего узла |
Конечно, структура сообщения о маршруте и содержимого таблицы коммутации зависит от конкретной технологии, однако эти особенности не меняют сущности рассматриваемых процессов.
Поток событий. Простейший поток и его свойства
При исследовании непрерывных марковских цепей, как было уже отмечено, часто бывает удобно представить переход системы из состояния в состояние как воздействие каких-то потоков событий (поток заявок на обслуживание, поток автомобилей, поток документов и т.п.).
Потоком событий называется последовательность однородных событий, следующих одно за другим в какие-то случайные моменты времени. Например, поток покупателей в магазин, поток машин на СТО, поток неисправностей у одного автомобиля и др.
Поток событий называется регулярным, если события следуют одно за другим через строго определенные промежутки времени. Такой поток сравнительно редко встречается на практике и не представляет особого интереса.
Различают следующие основные свойства, которыми могут обладать случайные потоки событий:
Стационарность. Свойство стационарности проявляется в том, что вероятность попадания того или иного числа событии на участок времени t зависит только от длины участка и не зависит от расположения на оси 0t. Другими словами, стационарность означает неизменность вероятностного режима потока событий во времени. Поток, обладающий свойством стационарности, называют стационарным. Для стационарного потока среднее число событий, воздействующих на систему в течение единицы времени, остается постоянным (рис. 3.6). В большинстве случаях реальные потоки событий являются в действительности стационарными лишь на ограниченных участках времени. Например, поток автомобилей проезжающих по улице с 15 до 16 часов можно считать стационарным. Но, тот же поток в течение суток уже не будет стационарным (ночью поток машин, проезжающий по улице значительно меньше).
Рис. 3.6. График стационарного потока
Ординарность. Свойство ординарности потока присутствует, если вероятность попадания на элементарный участок времени двух и более событии пренебрежимо мала по сравнению с длиной этого участка. Свойство ординарности означает, что за малый промежуток времени практически невозможно появление более одного события. Поток, обладающий свойством ординарности, называют ординарным. Реальные потоки событий в различных производственно-экономических системах либо являются ординарными, либо могут быть достаточно просто приведены к ординарным.
Отсутствие последействия. Данное свойство потока состоит в том, что для любых непересекающихся участков времени количество событий, попадающих на один из них, не зависит от того, сколько событий попало на другие участки времени. Поток, обладающий свойством отсутствия последействия, называют потоком без последействия. Поток событий, одновременно обладающий свойствами стационарности, ординарности и отсутствия последействия, называется простейшим потоком событий.
Под интенсивностью потока понимают
где m(t, t + t) – среднее число событий в (t, t + t).
Для простейшего потока интенсивность l = const. Если поток событий не имеет последействия, ординарен, но не стационарен, то его называютнестационарным пуассоновским потоком, а его интенсивность зависит от времени, т. е. l = l(t).
В пуассоновском потоке событий (стационарном и нестационарном) число событий потока, попадающих на любой участок, распределено позакону Пуассона:
m = 0, 1, …,
где Pm – вероятность попадания на участок m событий;
a – среднее число событий, приходящихся на участок.
Для простейшего потока a = l×t, а для нестационарного пуассоновского потока
где t – длина участка времени;
Отметим еще одно важное свойство простейшего потока событий. Промежуток времени t между соседними событиями распределен по показательному (экспоненциальному) закону, а его среднее значение и среднее квадратическое отклонение s равны, т. е.
где l – интенсивность потока.
Для нестационарного пуассоновского потока закон распределения промежутка t уже не является показательным, так как зависит от положения на оси 0t и вида зависимости l(t). Однако для некоторых задач при сравнительно небольших изменениях l(t) его можно приближенно считать показательным с интенсивностью l, равной среднему значению l(t).
Таким образом, для исследуемой системы S с дискретными состояниями и непрерывным временем переходы из состояния в состояние происходят под действием пуассоновских потоков событий с определенной интенсивностью lij.
Система «Поток»: описание, возможности. Аппаратно-программный комплекс «Поток»
Аппаратно-программный комплекс (АПК) «Поток» предназначен не только для измерения скорости движущихся транспортных средств и ее превышения. В круг его задач входит снижение общей аварийности на дорогах. Система «Поток» может служить дополнительным средством объективного контроля, помогающим выявить виновников дорожно-транспортного происшествия. Он способен осуществлять автоматическую проверку считанных им номеров по имеющейся базе данных розыска с выдачей звукового или визуального извещения при обнаружении совпадения.
Принцип действия
Скорость движущихся объектов, находящихся в зоне обнаружения их видеокамерами АПК, определяется по пройденному пути за определенное время. Это достигается используемыми алгоритмами программного обеспечения специализированного вычислителя и применением видеокамер с высокой разрешающей способностью (HD). При таком методе отпадает необходимость в лазерных или радарных измерителях скорости, что значительно снижает эксплуатационные расходы и объем монтажных работ.
Вычислители системы «Поток» объединены в единую сеть, ядром которой является центральный диспетчерский центр. Обмен информацией между вычислителями одной группы происходит с использованием Wi-Fi технологии. При этом расстояние может достигать нескольких сотен метров. Для связи с удаленным диспетчерским центром применена технология беспроводного Интернета, доступная в конкретном регионе (WCDMA, HSDPA).
Информационная безопасность поддерживается применением программного шифрования.
Состав АПК
В описание системы «Поток» входит перечень его основных функциональных узлов:
В комплект поставки входит эксплуатационная документация, выполненная в бумажном печатном и электронном виде. А также здесь есть комплект кронштейнов для монтажа системы «Поток».
Особенности комплекса
Фиксация нарушений ПДД производится при превышении объектом наблюдения допустимой скорости движения с одновременной фиксацией его внешнего вида и номера государственной регистрации. Этот файл передается по беспроводному Интернету на центральный пункт диспетчера. Компьютер последнего после проведенного анализа архива транспортных средств, находящихся в розыске, выдает результат и сообщает его на серверы ГИБДД.
При размещении одиночной телекамеры вдоль потока движения угол ее обзора не превышает 3 метров. Добиться обзора 3-4 рядов с одновременной фиксацией всех номеров позволяет использование нескольких камер, ориентированных к оси движения под разными углами. Такой способ позволяет производить обзор крупного перекрестка. Изменением угла наклона используемых камер можно добиться фиксации номеров участников дорожного движения, перемещающихся на незначительной дистанции друг от друга.
В работу комплекса заложена функция распознавания однострочных номерных знаков, выполненных с использованием как кириллицы, так и латиницы.
Функциональные возможности
Все возможности АПК «Поток-ПДД» укладываются в концепцию обеспечения безопасности движения. К основным из них относятся следующие:
Указанные функциональные возможности системы «Поток-ПДД» позволяют в значительной степени уменьшить уровень аварийности.
Технические характеристики
Аппаратно-программный комплекс представляет собой устройство, состоящее из отдельных блоков, решающих свои конкретные задачи. Поэтому технические характеристики надо разделять на несколько составных частей. Они в технической документации на аппаратную часть АПК «Поток-ПДД» выглядят следующим образом:
Кроме этого, указаны характеристики, определяющие габаритные размеры его отдельных модулей, их вес, температурный рабочий диапазон и величину напряжения питания комплекса переменным током.
HD-датчик высокого разрешения, его характеристики
К основным техническим характеристикам камеры видеонаблюдения на дорогах можно отнести следующие:
Датчик имеет устройство защиты от грозы и грязи.
Использование в условиях улицы при любой погоде подразумевает наличие внутреннего обогрева с автоматическим включением и отключением в зависимости от температуры.
Характеристики внешнего вычислителя
Удаленный внешний вычислитель, используемый в аппаратной части АПК, обладает следующими основными техническими характеристиками:
Вычислитель помещен в корпус типа IP68 всепогодного исполнения. Его система охлаждения использует естественную вентиляцию, не имеет элементов кинематики. При совместном использовании с HD-датчиком диапазон измеряемых скоростей отслеживаемых объектов составляет (20-215) км/ч с абсолютной погрешностью, не превышающей 3 км/ч.
Основные решаемые задачи
ПО АКП «Поток-ПДД» позволяет решать большое количество задач. Все они направлены на снижение количества дорожно-транспортных происшествий. Внедрение этой системы способствует повышению безопасности на дорогах.
Основными из них являются следующие:
Реализация алгоритмов, определяющих нарушение правил дорожного движения, возможна при правильной установке камер видеонаблюдения. Их количество должно быть не менее двух единиц.
Одна из них является обзорной. Установка ее производится таким образом, чтобы получить максимум информации о наличии в контролируемой зоне движущихся объектов наблюдения. Такими зонами можно считать пешеходные переходы, СТОП-линии, железнодорожные переезды, сплошные или двойные линии на трассах, полосы движения общественного транспорта.
В ситуациях, где участвует запрещающий сигнал светофора, информация о его состоянии также должна быть получена обзорной камерой. Определение цвета производится на основе анализа количества полученных пикселей. Каждой цветовой гамме в алгоритме ПО заложено соответствие.
Основная камера предназначена для фиксации всех знаков государственной регистрации ТС. Она переходит в активный режим работы по сигналу, полученному от камеры обзора. В результате ее работы нарушения записываются в память, формируется файл, который пересылается на центральный компьютер диспетчера.
Заключение
Информация, изложенная в статье, предназначена для широкого круга читателей. Автомобилисты должны понять, что установка рассмотренной системы имеет своей целью повысить безопасность на дорогах, нормализовать дорожное движение и привести его в соответствие с установленными правилами. Это снизит аварийность и повысит безопасность на наших дорогах.