Многозадачность и мультипроцессорная обработка

Многозадачность и мультипроцессорная обработка

Микропроцессор может делать менее 1-го потока сразу. Но многозадачная (multitasking) ОС дает юзерам возможность исполнять несколько программ, при этом создается воспоминание, как будто они все исполняются сразу. Это достигается последующим образом:

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

2. Сохраняется контекст потока.

3. Загружается контекст другого потока.

4. Этот цикл повторяется до того времени, пока есть потоки, ожидающие выполнения.

Переключение микропроцессора с выполнения 1-го потока на выполнение другого именуется переключением контекста (context switching). В Windows NT его производит ядро исполнительной системы.

Как показано на примере 2-ух потоков на рис. 4-4, ОС Многозадачность и мультипроцессорная обработка попеременно делает то один поток, то другой. В конце концов, каждый поток кончает выполнение собственной подзадачи и или заканчивается, или получает другую задачку. Очень высочайшая скорость работы микропроцессора обеспечивает иллюзию одновременного выполнения всех потоков.

Многозадачность наращивает объем работы, выполняемый системой, так как большая часть потоков не могут исполняться безпрерывно. Временами Многозадачность и мультипроцессорная обработка поток прекращает выполнение и ожидает, к примеру, пока неспешное устройство ввода-вывода окончит пересылку данных либо пока другой поток употребляет ресурс, нужный первому. Благодаря многозадачности, пока один поток ждет, может производиться другой поток, и время микропроцессора не расходуется впустую.

Рис. 4-4. Многозадачность,

Вытесняющая многозадачность (preemptive multitasking) — это разновидность Многозадачность и мультипроцессорная обработка многозадачности, при которой ОС не ожидает, пока поток добровольно предоставит микропроцессор другим потокам. Заместо этого ОС прерывает поток, после того как он производился в течение заблаговременно данного периода времени, так именуемого кванта времени (time quantum), либо когда готов к выполнению поток с огромным ценностью (к примеру, реагирующий на пользовательский ввод Многозадачность и мультипроцессорная обработка). Вытеснение предутверждает монополизацию микропроцессора одним потоком и предоставляет другим потокам их легитимную долю процессорного времени. Исполнительная система NT — это система с вытесняющей многозадачностью, как и ее основная среда Windows, подсистема Win32. В невытесняющих версиях Windows для MS-DOS, чтоб достигнуть многозадачности, поток был должен добровольно передавать управление микропроцессором Многозадачность и мультипроцессорная обработка. Нехорошие либо примитивные программки могли захватить микропроцессор во вред другим приложениям либо всей системе.

Время от времени двум потокам нужно вести взаимодействие вместе, чтоб скоординировать свои деяния для заслуги общей цели. К примеру, в компиляторе С один поток может делать препроцессорную обработку программки на С, а другой — принимать результаты работы Многозадачность и мультипроцессорная обработка первого и компилировать их в объектный код. Этим двум потокам нужен метод обмена данными вместе.

До 2-ой половины 80-х годов в большинстве ОС программки могли иметь только один поток управления. (Практически в большинстве ОС для обозначения исполняемой сути использовалось слово процесс (process). Поток (thread) — довольно новый термин.) Потому что у Многозадачность и мультипроцессорная обработка каждого процесса было отдельное адресное место, двум процессам для обмена данными вместе необходимы были или область вместе применяемой памяти, или вместе применяемый файл. Для такового рода коммуникаций меж процессами обширно использовались (и употребляются) каналы (см. рис. 4-5).

Рис. 4-5, Компилятор, состоящий из 2-ух процессов.

Препроцессорная обработка и компиляция программки Многозадачность и мультипроцессорная обработка 2-мя процессами (каждый с одним потоком), разумеется, должна идти резвее, чем в случае 1-го процесса, потому что многозадачная ОС может попеременно исполнять то поток препроцессора, то поток компилятора. Как препроцессор расположит чего-нибудть в вместе применяемый буфер, компилятор может начать свою работу. Приложения, подобные этому, которые исполняются в 2-ух либо Многозадачность и мультипроцессорная обработка более местах сразу, именуются параллельными приложениями (concurrent applications).

Параллельность полезна приложениям и на однопроцессорном компьютере, но еще больше она принципиальна на многопроцессорном. При наличии нескольких микропроцессоров препроцессор и компилятор из нашего примера могут исполняться параллельно. Если параллельное приложение отлично спроектировано и минимизирует конкурентнсть за ресурсы меж своими потоками, то Многозадачность и мультипроцессорная обработка на многопроцессорном компьютере оно может работать резвее, чем на однопроцессорном (сравните рис. 4-6 с рис. 4-4).

Операционной системой с мультипроцессорной обработкой (multiprocessing) именуется такая ОС, которая специально спроектирована для работы на компьютерах с более чем одним микропроцессором. ОС с симметричной мультипроцессорной обработкой (symmetric multiprocessing, SMP), такая как Windows NT, может делать на Многозадачность и мультипроцессорная обработка любом микропроцессоре как код юзера, так и код ОС. Если число потоков превосходит число микропроцессоров, ОС SMP также поддерживает многозадачность, разделяя время каждого микропроцессора меж всеми ожидающими потоками. (Последующие сведения о планировании потоков в Windows NT см. в гл. 7, "Ядро").

Рис. 4-6. Мультипроцессорная обработка.

Многопоточность

Внедрение 2-ух процессов для заслуги параллельности Многозадачность и мультипроцессорная обработка не всегда отлично. В неких системах UNIX, к примеру, когда один процесс делает другой, система должна скопировать все содержимое адресного места первого процесса в адресное место второго. Для огромного адресного места эта операция занимает много времени. Более того, два процесса должны установить канал обмена данными вместе. Не Многозадачность и мультипроцессорная обработка во всех ОС это осуществляется стремительно и просто. Windows NT решает делему, создавая комфортные механизмы совместного использования памяти. Это память "копирование при модификации", позволяющая избежать копирования всего адресного места из 1-го процесса в другой, также оптимизированное для локального использования средство передачи сообщений. (1-ая возможность описана в гл. 6, "Диспетчер виртуальной памяти Многозадачность и мультипроцессорная обработка", а 2-ая — механизм локального вызова процедур (LPC) — в гл. 5, "Windows и защищенные подсистемы").

Даже при наличии этих усовершенствований бывают ситуации, когда более выгоден другой подход к достижению параллельности, а конкретно, многопоточный процесс (multithreaded process). Как говорилось ранее, термину поток (thread) отвечает перемещение микропроцессора по командам программки; каждый поток Многозадачность и мультипроцессорная обработка показывает отдельный счетчик команд. У многопоточного процесса имеется два либо более потоков (и счетчиков команд), которые вместе употребляют одно и то же адресное место, описатели объектов и другие ресурсы.

Каждый процесс NT создается с одним потоком. По мере надобности программка может сделать снутри процесса дополнительные потоки. Они нередко Многозадачность и мультипроцессорная обработка употребляются для выполнения в программке асинхронных операций (asynchronous operations), т. е. операций, которые могут иметь место в хоть какое время, безотносительно к основному течению программки. К этой категории нередко относятся операции ввода-вывода. К примеру, можно использовать поток для повторяющегося сохранения редактируемого документа либо для опроса устройства пользовательского ввода, к примеру Многозадачность и мультипроцессорная обработка мыши либо клавиатуры. Используя один поток для выполнения основной программки и создав 2-ой для опроса устройства ввода, система может по отдельности делать обе операции на одном микропроцессоре, так что будет иметь место многозадачность. На многопроцессорном компьютере эти два потока могут производиться сразу, притом не требуя расходов на создание второго Многозадачность и мультипроцессорная обработка процесса и инициализацию его адресного места.

Чтоб достигнуть параллелизма с внедрением потоков, программка делает два либо несколько потоков в одном процессе. Многопоточный компилятор изображен на рис. 4-7.

Многопоточные процессы достигают параллельности и при всем этом не имеют недочетов, связанных с внедрением 2-ух процессов. Потоки требуют наименьших издержек и создаются резвее Многозадачность и мультипроцессорная обработка, чем процессы (в связи с этим их время от времени именуют "легковесными процессами"). Не считая того, так как все потоки процесса употребляют одну и ту же память, кроме собственных стеков и содержимого регистров, не требуется никакого особенного механизма обмена данными. Один поток просто записывает свои результаты в память, а другой Многозадачность и мультипроцессорная обработка считывает их. Аналогично, все ресурсы процесса (объекты) идиентично доступны всем его потокам.

Рис. 4-7. Многопоточный компилятор,

Для выбора порядка, в каком исполняются потоки, ядро NT употребляет схему, основанную на ценностях. Потоки с огромным ценностью исполняются до этого потоков с наименьшим ценностью, и ядро временами изменяет ценность каждого потока Многозадачность и мультипроцессорная обработка, чтоб гарантировать выполнениеих всех. Приложение может позволить своим потокам производиться на любом микропроцессоре в многопроцессорной машине либо может ограничить их выполнение подмножеством микропроцессоров,

Внедрение многопоточного процесса — безупречное решение для серверного приложения (к примеру защищенных подсистем Windows NT), которое воспринимает запросы от клиентов и делает по каждому запросу один Многозадачность и мультипроцессорная обработка и тот же код. К примеру, файл-сервер делает операции с файлами; он открывает файлы, читает из их, пишет в их и закрывает их. Хотя каждый запрос может добиваться от сервера работы со своим файлом, программка сервера загружается в память только один раз. Каждый приходящий запрос принимается и обрабатывается Многозадачность и мультипроцессорная обработка отдельным потоком сервера, который делает нужную функцию. Все запросы клиентов обслуживаются параллельно. Иллюстрацией этого служит рис. 4-8.

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

Направьте Многозадачность и мультипроцессорная обработка внимание, что написание многопоточного приложения просит особенной тщательности, потому что все потоки процесса имеют полный доступ к его адресному месту. Потоки могут случаем пересечься вместе, выполняя чтение либо запись в память не в том порядке.

Такового не происходит, если приложения употребляют для заслуги параллельности два процесса и ведут взаимодействие Многозадачность и мультипроцессорная обработка очевидным образом методом посылки сообщений либо через каналы. Один процесс не может случаем либо преднамеренно разрушить адресное место другого. Конкретно по этой причине защищенные подсистемы Windows NT реализованы как отдельные серверные процессы (и вот поэтому они именуются "защищенными" подсистемами).

Рис. 4-8, Многопоточный сервер,

Любая подсистема сохраняет контроль за своим Многозадачность и мультипроцессорная обработка адресным местом, не допуская вмешательства других подсистем либо пользовательских процессов. Снутри сервера, но, прибыльно использовать огромное число потоков, вместе использующих одно адресное место и ресурсы.

Полезны бывают обе техники заслуги параллельности, как с внедрением нескольких процессов, так и с внедрением нескольких потоков. Задачки приложения определяют структуру, более прибыльную в данном определенном Многозадачность и мультипроцессорная обработка случае.

Суммируя произнесенное, приведем определения, относящиеся к реализации процессов ОС:

• Многозадачность. Совместное внедрение микропроцессора потоками, ожидающими выполнения, и создание иллюзии одновременного выполнения всех потоков.

• Мультипроцессорная обработка. Выполнение 1-го и такого же кода ОС как на однопроцессорных, так и на многопроцессорных компьютерах. ОС с симметричной мультипроцессорной обработкой делает Многозадачность и мультипроцессорная обработка системный код и код юзера на всех доступных микропроцессорах.

• Многопоточность. Поддержка нескольких потоков снутри 1-го процесса.

ОС высочайшего уровня должна поддерживать все перечисленные способности. И Windows NT это делает.

Начиная с Windows NT версии 3.51, Service Pack 3 в систему была добавлена новенькая суть — волокна (fibers). Волокном именуется легкий поток, планировку Многозадачность и мультипроцессорная обработка которого производит приложение. Исходя из убеждений перевода слово "волокно" нужно рассматривать как некоторый канал (сравни: оптоволокно), который можно использовать для направления потока. В британском языке возникновение термина fiber более понятно, потому что thread дословно переводится как "нить". Нить, как понятно, состоит из волокон.

Волокна исполняются в контексте тех потоков, которые занимаются Многозадачность и мультипроцессорная обработка их планированием. Каждый поток может управлять несколькими волокнами. В общем случае волокна не дают никаких преимуществ в отлично спроектированных многопоточных приложениях. Но внедрение волокон возможно окажется полезным при переносе приложений, разработанных в расчете на планирование собственных собственных потоков. Это могут быть приложения, написанные для других платформ.

Исходя из Многозадачность и мультипроцессорная обработка убеждений системы волокна предполагают особенность потоков, их породивших. К примеру, если волокно производит доступ к локальной памяти потока, то это будет локальная память конкретно того потока, который породил волокно. Если волокно вызывает функцию ExitThread, то закроется поток, породивший это волокно.

С волокнами связан еще наименьший объем инфы Многозадачность и мультипроцессорная обработка о состоянии, чем с потоками. У волокон поддерживается только их стек, подмножество регистров и данные, переданные при разработке волокна.

Один поток может породить несколько волокон. Но следует держать в голове, что сразу в потоке может исполняться только одно волокно, которое употребляет все ресурсы, выделенные сгустку. Волокно исполняется до того Многозадачность и мультипроцессорная обработка времени, пока не произойдет переключение на другое волокно снутри потока либо пока планировщик не окончит выполнение потока, породившего волокно.


mnogourovnevaya-fajlovaya-sistema.html
mnogourovnevaya-strategiya-makromodelirovaniya-frejda-dilts-r-d46-strategii-geniev-t-zigmund-frejd-leonardo.html
mnogourovnevie-ocheredi-s-obratnoj-svyazyu-multilevel-feedback-queue.html