В. Столлингс - Операционные системы (1114679), страница 42
Текст из файла (страница 42)
В обязанности каждой подсистемы входит. зование Функций обработки процессов и потоков операционной систем для эмуляции Функций обработки процессов и потоков соответствующей темы операционной системы. Система управления процессами и пото вольно сложна; здесь мы приводим лишь ее краткий обзор. Процесс создается по запросу приложения операционной системы, к" поступает в соответствующую защищенную подсистему. Подсистема, в с редь, отправляет запрос на создание процесса исполнительной системе онной системы уу2К, которая создает объект-процесс и возвращает по его дескриптор. Создавая процесс, операционная система утт2К автом поток не создает (в отличие от Оя/2 и уут1п32, где создание нового проц гда сопровождается созданием потока).
Поэтому подсистемы повторно ются к менеджеру процессов операционной системы Ж2К, чтобы созда нового процесса и получить его дескриптор. Затем соответствующая ин о потоке н процессе возвращается приложению. В 16-битовых системах и РОЯ1Х потоки не поддерживаются. Чтобы новый процесс мог быть ак, Рован, операционная система Чт2К создает его поток для подсистем зтнх,:.;:, ционных систем, но возвращает приложению только информацито о Тот факт, что процесс приложения реализуется с помощью потока. для:,. жения остается незамеченным. Если новый процесс создается подсистемой Ж)п32 иля подсистем, держки ОЯ/2, он наследует многие атрибуты создавшего его процесса.
среде операционной системы Ътт2К процесс создается непрямым образо., и есс клттентского приложения генерирует запрос на создание процес есса в адрес со оотвстствующей подсистемы; процесс подсистемы в свою очередь Р , отправляет за апрос на создантте процесса исполнительной системе уу2К. так как нов новы про о ~ кен наследовать характеристит и процесса клиента а не обслтж 1 у ивающетооцесса, подсистема уу'2К имеет возможность указывать родительский р про„нового процесса.
Следовательно, новый процесс наследует признак доступа, ты, базовый приоритет и принятое по умолчанию сродство процессор в о роди- . ского процесса. Ооддержка симметричной многопроцессорной обработки Операционная система уу'2К поддерживает симметричную многопроцессорт конфигурацию аппаратного обеспечения. Потоки любого процесса, включая потоки исполнительной системы, могут выполняться на любом процессоре. При условии отсутствия ограничений на сродство процессоров микроядро выделяет отовому к выполнению потоку процессор„который освобождается первым.
При этом гарантируется, что ни один процессор не будет простаивать или выполнять поток с более низким приоритетом, если готов к выполнению процесс с более высоким приоритетом. Несколько потоков одного и того же процесса могут одновременно выполняться на нескольких процессорах. Выделяя потоку процессор, микроядро по умолчанию придерживается мягкой стратегии сродства процессоров: диспетчер пытается выделить готовому к выполнению потоку тот же процессор, на котором этот поток выполнялся проптлый раз.
Это способствует рациональному использованию данных, оставшихся в кэшах процессора после предыдущего выполнения процесса. Приложение может ограничить круг возможного выбора доступных потоку процессоров, сузив его до одного фиксированного процессора (жесткое сродство). ТОКАМИ И БМР ".":,::-.::."-';:::,':,: „:-,~ реализован необычный многоуровневый ствующий значительной гибкости исполь- Потоки, симметричная мультипроцессорная обработка...
231 4 П 5. УПРАВЛЕНИЕ ПО В ЯОХАИ18 В операционной системе Яо1аг1в подхо д. од к управлению потоками, способ зевая и ния процессорных ресурсов. ханог ногопоточная архитектура В от~е а ио Р ционной системе Яо1аггз используются четыре отдельные концепции, " а"нт~с с потоками. Процесс, Э то обычный процесс 1)И1Х, который включает в себя пользовательское адресное пространство, стек и управляющий блок процесса. Потоки иа пользов бн, зовательском уровне. Эти потоки реализуются с помощью нблиотеки потоков в ков в адресном пространстве процесса; они невидимы для перационнои системы 1стемы. Потоки на пользовательском уровне играют роль интерфейса для параллелизма приложений.
° о легчеыные процессы. Облегченный процесс (11дЬЬуе1йЫ ргосевв — 1ЖР) тиожтто рассмат ривать как отображение между потоками на пользователь- Мотивация Оь Обвеянные процесс операционной системы Част'ь 2. ском уровне и потоками ядра. Каждый из облегченных процессов живает один или несколько потоков на пользовательском уровне и жает их в один поток ядра.
Планирование облегченных процессов и дится ядром независимо. В многопроцессорной системе облегченные сы могут выполняться параллельно на нескольких процессорах. Потоки ядра. Эти потоки являются фундаментальными элементами; рование и выполнение каждого из них может осуществляться на о системных процессоров. На рис. 4.15 проиллюстрирована взаимосвязь между этими четырьмя тамп. Заметим, что каждому облегченному процессу всегда соответствует одвпв ядра. Облегченный процесс видим для приложения в рамках процесса. Так " зом„структуры данных облегченного процесса существуют в рамках адресн '. странства соответствующего им процесса.
В то же время каждый облегчев цесс связан с единственным диспетчеризуемым потоком ядра, а структуры'' г~., этого потока ядра поддерживаются в адресном пространстве ядра. Процесс 1 Процесс 2 Процесс 3 Процесс 4 Процесс 5 Плеч нв повьвоввтельсвом уровне © По1 оч нв уровне вдрв рис. 4.1о. Пример многопоточной архитектуры В нашем примере процесс 1 состоит из одного потока на пользов уровне, связанного с одним облегченным процессом. Таким образом, ся один поток, что соответствует процессу в традиционной системе П ложение использует такую структуру процесса, если для него не нужен . лизм.
Процесс 2 соответствует стратегии, в которой применяются толь тольк на пользовательском уровне. Все эти потоки поддерживаются одним по Ра, поэтому в каждый момент времени может выполняться только один, пользовательском уровне. Такая структура полезна тогда, когда п лучше всего программировать с применением параллелизма, но не при этом параллельное выполнение нескольких потоков.
В процессе 3" „, ~ Олько потоков, которым соответствует меньшее количество облегче пр пессоа. Вообще Говоря в Операционной системе Б01аг1Я пот на пользовальском уровне можно отображать в такое же или меньшее количество облег „нных процессов. Это позволяет приложению указывать степень параллелизма в уровне ядра, которая будет поддерживаться для данного процесса.
В процессе 4 Реализовано взаимно однозначное соответствие между потоками и облегчен „ыми процессами. В такой структуре параллелизм на уровне ядра является полн стью видимым для приложения. В процессе 5 демонстрируется комбинирован„ ий вюдход. В нем несколько потоков на пользовательском уровне отображаются в несколько облегченных процессов, и вместе с этим один облегченный процесс закреплен за одним потоком на пользовательском уровне.
На рисунке отсутствует изображение потоков ядра, не имеющих связи с облегченными процессами. Эти потоки создаются, запускаются и удаляются ядром для вьвполнения с их помощью определенных системных функций. Реализация системных Функций с помощью потоков ядра вместо процессов ядра снижает накладные расходы по переключению в ядре (переключение потоков требует меньше ресурсов, чем переключение процессов). Совместное использование потоков на пользовательском уровне и на уровне ядра дает возможность программисту выбрать вариант параллелизма, который будет наиболее эффективным для данного приложения и подойдет для него болыпе других. В некоторых программах используется логический параллелизм, который позволяет упростить и структурировать код, но для которого не нужен аппарат- ный параллелизм. Например, приложение со многими окнами, из которых толь- ко одно является активным, можно эффективно реализовать в виде набора пото- ков на пользовательском уровне, которым отвечает один облегченный процесс.
П епъ Репмущество использования для таких приложений только потоков на пользо- вательс; ельском уровне заключается в их эффективности. Потоки на пользователь- ском Уровне можно создавать„уничтожать, блокировать, активизировать и т.д. без уча Участия ядра. Если бы ядру было известно о каждом потоке на пользователь- СКОМ Уровне, оно должно было бы размещать структуры данных для каждого ПотоКе, , а также выполнять переключение потоков. Как мы видели в табл. 4.1, "Ри пе е . а ереключении потоков на уровне ядра потребляется больше ресурсов, чем при „, , ереключении потоков на пользовательском уровне. Если ли в приложение входят потоки, которые могут быть блокированы, наПример и Р.
при выполнении ввода-вывода, то заманчиво использовать несколько Облегч,ц, ных процессов, поддерживающих такое же или большее количество по- тохов на п пользовательском уровне. Чтобы в рамках этого же процесса могли выя и другие потоки, не нужно никакого вмешательства приложения или ЛнотЕКИ е ки потоков. Если один из потоков процесса будет блокирован, дрУгие ГО потоки 'и могут выполняться в оставшихся облегченных процессах.
которых приложениях эффективным является взаимно однозначное НЕКО бра кение -вв ние потоков на уровне ядра и облегченных процессов. Например, мож- О Р Овать такое параллельное вычисление элементов массива чтобы эленты % ° ~~оящие в разных строках, вычислялись в разных потоках. Ясли каждо- 4.