Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Многопоточная архитектура



В операционной системе Solaris используются четыре отдельные концепции, связанные с потоками.

• Процесс. Это обычный процесс UNIX, который включает в себя пользова­тельское адресное пространство, стек и управляющий блок процесса.

• Потоки на пользовательском уровне. Эти потоки реализуются с помощью библиотеки потоков в адресном пространстве процесса; они невидимы для операционной системы. Потоки на пользовательском уровне играют роль интерфейса для параллелизма приложений.

• Облегченные процессы. Облегченный процесс (lightweight process — LWP)можно рассматривать как отображение между потоками на пользовательском уровне и потоками ядра. Каждый из облегченных процессов поддер­живает один или несколько потоков на пользовательском уровне и отобра­жает их в один поток ядра. Планирование облегченных процессов произво­дится ядром независимо. В многопроцессорной системе облегченные процес­сы могут выполняться параллельно на нескольких процессорах.

• Потоки ядра. Эти потоки являются фундаментальными элементами; плани­рование и выполнение каждого из них может осуществляться на одном из системных процессоров.

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

В нашем примере процесс 1 состоит из одного потока на пользовательском уровне, связанного с одним облегченным процессом. Таким образом, выполняет­ся один поток, что соответствует процессу в традиционной системе UNIX. При­ложение использует такую структуру процесса, если для него не нужен паралле­лизм. Процесс 2 соответствует стратегии, в которой применяются только потоки на пользовательском уровне. Все эти потоки поддерживаются одним потоком яд­ра, поэтому в каждый момент времени может выполняться только один поток на пользовательском уровне. Такая структура полезна тогда, когда приложение лучше всего программировать с применением параллелизма, но не используя при этом параллельное выполнение нескольких потоков. В процессе 3 имеется несколько потоков, которым соответствует меньшее количество облегченных процессов. Вообще говоря, в операционной системе Solaris потоки на пользова­тельском уровне можно отображать в такое же или меньшее количество облег­ченных процессов. Это позволяет приложению указывать степень параллелизма на уровне ядра, которая будет поддерживаться для данного процесса. В процессе 4 реализовано взаимно однозначное соответствие между потоками и облегчен­ными процессами. В такой структуре параллелизм на уровне ядра является пол­ностью видимым для приложения. В процессе 5 демонстрируется комбинирован­ный подход. В нем несколько потоков на пользовательском уровне отображаются в несколько облегченных процессов, и вместе с этим один облегченный процесс закреплен за одним потоком на пользовательском уровне.

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





Дата публикования: 2014-11-04; Прочитано: 262 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...