Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В операционной системе Solaris используются четыре отдельные концепции, связанные с потоками.
• Процесс. Это обычный процесс UNIX, который включает в себя пользовательское адресное пространство, стек и управляющий блок процесса.
• Потоки на пользовательском уровне. Эти потоки реализуются с помощью библиотеки потоков в адресном пространстве процесса; они невидимы для операционной системы. Потоки на пользовательском уровне играют роль интерфейса для параллелизма приложений.
• Облегченные процессы. Облегченный процесс (lightweight process — LWP)можно рассматривать как отображение между потоками на пользовательском уровне и потоками ядра. Каждый из облегченных процессов поддерживает один или несколько потоков на пользовательском уровне и отображает их в один поток ядра. Планирование облегченных процессов производится ядром независимо. В многопроцессорной системе облегченные процессы могут выполняться параллельно на нескольких процессорах.
• Потоки ядра. Эти потоки являются фундаментальными элементами; планирование и выполнение каждого из них может осуществляться на одном из системных процессоров.
На рис. 4.15 проиллюстрирована взаимосвязь между этими четырьмя элементами. Заметим, что каждому облегченному процессу всегда соответствует один поток ядра. Облегченный процесс видим для приложения в рамках процесса. Таким образом, структуры данных облегченного процесса существуют в рамках адресного пространства соответствующего им процесса. В то же время каждый облегченный процесс связан с единственным диспетчеризуемым потоком ядра, а структуры данных этого потока ядра поддерживаются в адресном пространстве ядра.
В нашем примере процесс 1 состоит из одного потока на пользовательском уровне, связанного с одним облегченным процессом. Таким образом, выполняется один поток, что соответствует процессу в традиционной системе UNIX. Приложение использует такую структуру процесса, если для него не нужен параллелизм. Процесс 2 соответствует стратегии, в которой применяются только потоки на пользовательском уровне. Все эти потоки поддерживаются одним потоком ядра, поэтому в каждый момент времени может выполняться только один поток на пользовательском уровне. Такая структура полезна тогда, когда приложение лучше всего программировать с применением параллелизма, но не используя при этом параллельное выполнение нескольких потоков. В процессе 3 имеется несколько потоков, которым соответствует меньшее количество облегченных процессов. Вообще говоря, в операционной системе Solaris потоки на пользовательском уровне можно отображать в такое же или меньшее количество облегченных процессов. Это позволяет приложению указывать степень параллелизма на уровне ядра, которая будет поддерживаться для данного процесса. В процессе 4 реализовано взаимно однозначное соответствие между потоками и облегченными процессами. В такой структуре параллелизм на уровне ядра является полностью видимым для приложения. В процессе 5 демонстрируется комбинированный подход. В нем несколько потоков на пользовательском уровне отображаются в несколько облегченных процессов, и вместе с этим один облегченный процесс закреплен за одним потоком на пользовательском уровне.
На рисунке отсутствует изображение потоков ядра, не имеющих связи с облегченными процессами. Эти потоки создаются, запускаются и удаляются ядром для выполнения с их помощью определенных системных функций. Реализация системных функций с помощью потоков ядра вместо процессов ядра снижает накладные расходы по переключению в ядре (переключение потоков требует меньше ресурсов, чем переключение процессов).
Дата публикования: 2014-11-04; Прочитано: 262 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!