- •Глава 4.
- •Многопоточность
- •Функциональность потоков
- •Потоки на пользовательском уровне и на уровне ядра
- •Другие схемы
- •4.2 Симметричная многопроцессорная обработка
- •Организация симметричной многопроцессорной системы
- •Архитектура многопроцессорных операционных систем
- •4.3. Микроядра
- •Архитектура микроядра
- •Достоинства архитектуры с микроядром
- •Производительность микроядра
- •Архитектура микроядер
- •4.4. Потоки и smp в windows 2000
- •Объекты процессов и потоков
- •Многопоточность
- •Состояния потоков
- •Поддержка подсистем операционной системы
- •Поддержка симметричной многопроцессорной обработки
- •4.5. Управление потоками и smp в solaris
- •Мотивация
- •Структура процессов
- •Выполнение потоков
- •Прерывания в роли потоков
- •4 6. Управление процессамии потоками в linux
- •4.7. Резюме, ключевые термины и контрольные вопросы
- •Контрольные вопросы
- •4.8. Рекомендуемая литература
- •4.9. Задачи
Глава 4.
Потоки, симметричная многопроцессорная обработка и микроядра
Процессы и потоки
Симметричная многопроцессорная обработка
Микроядра
Потоки и SMI; в Windows 2000
Управление потоками и SMP в Solaris
Управление процессами и потоками в Linux
Резюме, ключевые термины и контрольные вопросы
Рекомендуемая литература
Задачи
В этой главе изучаются концепции современных операционных систем, связанные с управлением процессами. Мы узнаем, что концепция процессов на самом деле сложнее и тоньше, чем можно себе представить исходя из материала предшествующих глав. По сути, эта концепция объединяет в себе две отдельные, потенциально независимые концепции, одна из которых имеет отношение к владению ресурсами, а другая — к выполнению процессов. В некоторых операционных системах это различие привело к появлению конструкции, известной под названием поток (thread). После рассмотрения потоков мы обратимся к изучению симметричной многопроцессорности (symmetric multiprocessing — SMP). В системе с несколькими процессорами операционная система должна выполнять одновременное планирование выполнения на разных процессорах нескольких процессов. И наконец, мы ознакомим читателя с концепцией микроядра (microkernel), которое является эффективным средством структурирования операционной системы для управления процессами и решения других задач.
До сих пор концепцию процесса можно было охарактеризовать двумя параметрами.
Владение ресурсами (resource ownership). Процесс включает виртуальное адресное пространство, в котором содержится образ процесса, и время от времени может владеть такими ресурсами, как основная память, каналы и устройства ввода-вывода, или файлы, или же получать контроль над ними. Операционная система выполняет защитные функции, предотвращая нежелательные взаимодействия процессов на почве владения ресурсами.
Планирование/выполнение (scheduling/execution). Выполнение процесса осуществляется путем выполнения кода одной или нескольких программ; при этом выполнение процесса может чередоваться с выполнением других процессов. Таким образом, процесс имеет такие параметры, как состояние (выполняющийся процесс, готовый к выполнению процесс и т.д.) и текущий приоритет, в соответствии с которым операционная система осуществляет его планирование и диспетчеризацию.
В большинстве операционных систем эти две характеристики являются сущностью процесса. Однако, немного подумав, читатель может убедиться, что они являются независимыми, и что операционная система может рассматривать их отдельно друг от друга. В некоторых операционных системах (в особенности в недавно разработанных) так и происходит. Чтобы различать две приведенные выше характеристики, единицу диспетчеризации обычно называют потоком (thread) или облегченным процессом (lightweight process), а единицу владения ресурсами — процессом (process) или заданием (task).1
1 Увы, последовательность в использовании терминологии не выдерживается даже в такой степени. В операционной системе OS/390, предназначенной для мейнфреймов IBM, концепции адресного пространства и задания примерно соответствуют концепциям процесса и потока, описанным в этом разделе. Кроме того, термин упрощенный процесс (lightweight process) используется в трех значениях: (1) он эквивалентен термину поток (thread), (2) обозначает поток особого вида, известный как поток на уровне ядра (kernel-level thread) или (3) (в операционной системе Solaris) элемент, отображающий потоки на уровне пользователя в потоки на уровне ядра.