
- •3. Управление процессами
- •3.1. Описание процессов (Лекция 5)
- •3.1.1. Причины создания и завершения, описание процессов, модели с двумя и пятью состояниями
- •3.1.1.1. Процессы, причины создания и завершения
- •3.1.1.2. Модель с двумя состояниями
- •3.1.1.3. Модель с пятью состояниями
- •3.1.2. Блокированные и приостановленные процессы. Модели с шестью и семью состояниями
- •3.1.2.1. Модель с шестью состояниями
- •3.1.2.2. Модель с семью состояниями
- •3.1.3. Управляющие структуры ос для процессов и ресурсов
- •3.1.3.1. Основные виды системных таблиц. Сегментация виртуального адресного пространства процесса
- •3.1.3.2. Элементы управляющего блока процесса. Структура контекста процесса
- •3.2. Управление процессами (Лекция 6)
- •3.2.1. Действия ос по управлению процессами, способы выполнения системных процессов
- •3.2.1.1. Создание процесса
- •3.2.1.2. Переключение процессов
- •3.2.1.3. Выполнение кода ос
- •3.3. Способы реализации мультипрограммирования. Потоки, многопроцессорные системы (Лекция 7)
- •3.3.1. Многозадачность на основе потоков
- •3.3.1.1. Описание потоков
- •3.3.1.2. Функциональность потоков
- •3.3.1.3. Организация многопоточной обработки запросов в модели "клиент-сервер"
- •3.3.2. Потоки и проблема глобальных переменных. Типы реализации потоков.
- •3.3.2.1. Потоки и проблема глобальных переменных
- •3.3.2.2. Пользовательские потоки
- •3.3.2.3. Потоки ядра
- •3.3.2.4. Мультиплексирование потоков ядра пользовательскими потоками
- •3.3.3. Параллельность, обеспечиваемая средствами языка
- •3.3.3.1. Параллельность, обеспечиваемая средствами последовательного языка
- •3.3.3.2. Сопрограммы
- •3.3.3.3. "Процессы"
- •3.3.4. Мультипроцессорные системы
- •3.3.4.1. Введение
- •3.3.4.2. Архитектура мультипроцессоров
- •3.3.4.3. Типы мультипроцессорных ос
3.2.1.3. Выполнение кода ос
- ОС работает так же, как и обычная программа;
- ОС часто передает управление другим программам;
В зависимости от выбора концепции выполнения системного кода (аналогично всем остальным программам либо в специальном контексте) различают следующие варианты архитектуры:
1)Ядро ОС вне процесса (рис. 9).
Понятие процесс применяется только к пользовательским программам. Ядро обладает собственной памятью и стеком и всегда выполняется в привилегированном режиме.
Рис. 9
2) Выполнение в составе пользовательских процессов (рис. 10).
Рис. 10
В образ процесса отображается код ядра так, что все процессы разделяют и эту область памяти. При прерывании/системном вызове, процесс должен будет исполнять код в адресном пространстве прерванного процесса, что эффективно, т.к. при этом происходит переключение режима, но не переключение процесса. Если ОС по завершению обработки придет к заключению, что надо продолжать процесс, то управление передается внутрь контекста процесса.
С точки зрения процесса получается, что это он сам переключает процессы, сам сохраняет информацию, выбирает новый процесс. Однако, системный код – это внешний, по отношению к пользовательской программе код, поэтому пользовательская программа не может вмешаться в его выполнение.
3) ОС на основе процесса (рис. 11).
Рис. 11
Функции ОС выполняются как отдельне самостоятельные полноценные процессы. Остается небольшой внешний код для переключения процессов. Преимущества: модульность реализации, упрощение интерфейсов и повышение изоляции прогорамм положительно сказывается на надежности. Реализация ОС в виде набора процессов полезно на многопроцессорных ОС. Распараллеливание кода обеспечивается автоматически без специальных компиляторов. Недостаток: снижение эффективности из-за постоянного переключения процессов.
3.3. Способы реализации мультипрограммирования. Потоки, многопроцессорные системы (Лекция 7)
3.3.1. Многозадачность на основе потоков
3.3.1.1. Описание потоков
Многозадачность является важнейшим свойством ОС. Для поддержки этого свойства ОС определяет и оформляет для себя те внутренние единицы работы, между которыми и будет разделяться процессор и другие ресурсы компьютера. Эти внутренние единицы работы в разных ОС носят разные названия - задача, задание, процесс, нить. В некоторых случаях сущности, обозначаемые этими понятиями, принципиально отличаются друг от друга. Если говорить о процессах в рассмотренном выше контексте, понятие «процесс» не является единицей многозадачности. Для процесса определяются собственное виртуальное адресное пространство и ресурс (рис. 12).Такая обособленность нужна для того, чтобы защитить один процесс от другого, поскольку они, совместно используя все ресурсы машины, конкурируют друг с другом. В общем случае процессы принадлежат разным пользователям, разделяющим один компьютер, и ОС берет на себя роль арбитра в спорах процессов за ресурсы. При мультипрограммировании повышается пропускная способность системы, но отдельный процесс никогда не может быть выполнен быстрее, чем если бы он выполнялся в однопрограммном режиме (всякое разделение ресурсов замедляет работу одного из участников за счет дополнительных затрат времени на ожидание освобождения ресурса). Однако задача, решаемая в рамках одного процесса, может обладать внутренним параллелизмом, который в принципе позволяет ускорить ее решение. Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса. Для этих целей современные ОС предлагают использовать механизм многопоточной обработки (multithreading). При этом вводится новое понятие "поток" или "нить" (thread), а понятие "процесс" в значительной степени меняет смысл.
Мультипрограммирование реализуется на уровне потоков, и задача, оформленная в виде нескольких потоков в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения ее отдельных частей. Например, если электронная таблица была разработана с учетом возможностей многопоточной обработки, то пользователь может запросить пересчет своего рабочего листа и одновременно продолжать заполнять таблицу. Особенно эффективно можно использовать многопоточность для выполнения распределенных приложений, например, многопоточный сервер может параллельно выполнять запросы сразу нескольких клиентов.
Понятие поток и процесс различаются отношением к ресурсам и виртуальной памяти. В традиционных системах эти понятия тождественны. Удобство многопоточности обработки проявляется при взаимодействии параллельных действий.
Рис.12
Каждый поток имеет собственный счётчик и стек. Потоки могут порождать потомков и переходить из состояния в состояние. Которые могут быть идентичны состояниям в любой модели планирования из рассмотренных. Однако блокирование потока фактически может означать блокирование всего процесса. Защищенность многопоточных приложений от внутренних программных ошибок может быть ниже, чем при реализации многозадачности на основе процесса. Потоки не изолированы по данным и коду. Кроме того, можно обеспечить доступ к стеку одного потока из другого.
Потоки иногда называют облегченными процессами или мини-процессами. Действительно, потоки во многих отношениях подобны процессам. Потоки, как и процессы, могут, например, порождать потоки-потомки, могут переходить из состояния в состояние. Подобно традиционным процессам (то есть процессам, состоящим из одного потока), потоки могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ. Пока один поток заблокирован, другой поток того же процесса может выполняться. Потоки разделяют процессор так, как это делают процессы, в соответствии с различными вариантами планирования.
Потоки имеют собственные:
• программный счетчик,
• стек,
• регистры,
• потоки-потомки,
• состояние.
Потоки разделяют:
• адресное пространство,
• глобальные переменные,
• открытые файлы,
• таймеры,
• семафоры,
• статистическую информацию.