- •Самостійна робота 1
- •1 План самостійної роботи
- •2 Основные теоретические сведения
- •2.1 Эволюция операционных систем
- •2.2 Назначение и функции операционной системы
- •2.3 Архитектура операционной системы
- •2.4 Процессы и потоки
- •2.5 Управление памятью
- •2.6 Аппаратная поддержка мультипрограммирования (на примере процессора Pentium)
- •3 Вопросы и задания для самопроверки
- •3.1 Вопросы и задания для самопроверки к подтеме «Эволюция операционных систем»
- •3.2 Вопросы и задания для самопроверки к подтеме «Назначение и функции операционной системы»
- •3.3 Вопросы и задания для самопроверки к подтеме «Архитектура операционной системы»
- •3.4 Вопросы и задания для самопроверки к подтеме «Процессы и потоки»
- •3.5 Вопросы и задания для самопроверки к подтеме «Управление памятью»
- •3.6 Вопросы и задания для самопроверки к подтеме «Аппаратная поддержка мультипрограммирования (на примере процесора Pentium)»
2.4 Процессы и потоки
Мультипрограммирование (многозадачность, multitasking) является способом организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ.
Мультипрограммирование применяется для повышения эффективности вычислительной системы, которая может пониматься как:
‒ общая пропускная способность вычислительной системы;
‒ удобство работы пользователей (например, возможность интерактивной работы для нескольких пользователей или возможность одновременной работы одного пользователя с несколькими приложениями на одной машине);
‒ реактивность системы (способность системы выдерживать заранее заданные, возможно, очень короткие интервалы времени между запуском программы и получением результата).
В зависимости от выбранного критерия эффективности, ОС делятся на:
‒ системы пакетной обработки;
‒ системы разделения времени;
‒ системы реального времени.
Мультипроцессорная обработка ‒ такой способ организации вычислительного процесса в системах с несколькими процессорами, в котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы.
Основной задачей мультипрограммной операционной системы является распределение ресурсов между процессами и потоками ‒ двумя базовыми единицами работы ОС.
В операционных системах, в которых существуют как процессы, так и потоки, процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов кроме одного ‒ процессорного времени.
Процессорное время распределяется ОС между другими единицами работы ‒ потоками, представляющими собой последовательности команд.
Потоки возникли в операционных системах как средство распараллеливания вычислений, облегчающее работу программиста.
В ОС, не поддерживающей потоков, процесс всегда состоит из одного потока, и программисту приходится самостоятельно решать задачу синхронизации нескольких параллельных ветвей программы.
Операционная система для реализации мультипрограммирования выполняет планирование и диспетчеризацию потоков (в ОС, не поддерживающих потоков ‒ диспетчеризацию процессов).
Планирование включает определение момента смены текущего потока, а также выбор нового потока для выполнения.
Диспетчеризация заключается в реализации найденного в результате планирования решения, то есть в переключении процессора с одного потока на другой.
Планирование может выполняться:
‒ динамически, когда решения принимаются во время работы системы на основе анализа текущей ситуации;
‒ статически, если потоки запускаются на выполнение на основании заранее разработанного расписания.
Первый способ характерен для универсальных ОС, второй способ ‒ для специализированных ОС (например, ОС реального времени).
Динамический планировщик ОС может реализовывать различные алгоритмы планирования, которые делятся на такие крупные классы, как:
‒ вытесняющие и не вытесняющие алгоритмы;
‒ алгоритмы квантования;
‒ приоритетные алгоритмы.
Используемый алгоритм планирования зависит от назначения ОС.
Применяются также смешанные алгоритмы, объединяющие достоинства нескольких классов.
При применении вытесняющих алгоритмов планирования, ОС получает полный контроль над вычислительным процессом.
При применении невытесняющих алгоритмов планирования, решения принимаются децентрализовано: активный поток определяет момент смены потоков, а ОС выбирает новый поток для выполнения.
Система прерываний позволяет ОС реагировать на внешние события, происходящие асинхронно по отношению к вычислительному процессу: сигналы готовности устройств ввода-вывода, аварийные сигналы аппаратуры вычислительной системы и т. п.
В зависимости от источника, прерывания делятся на три больших класса:
‒ внешние прерывания, связанные с сигналами от внешних устройств;
‒ внутренние прерывания, возникающие в результате ошибок вычислений;
‒ программные прерывания, представляющие собой удобный способ вызова процедур операционной системы.
Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами операционной системы.
Существует два основных способа выполнения прерывания:
‒ векторный (vectored), когда в процессор передается номер вызываемой процедуры обработки прерывания;
‒ опрашиваемый (polled), когда процессор вынужден последовательно опрашивать потенциальные источники запроса прерывания.
Для упорядочивания процедур обработки прерываний, все источники прерываний распределяются по нескольким приоритетным уровням, а роль арбитра выполняет диспетчер прерываний ОС.
Системные вызовы, с помощью которых приложения получают обслуживание со стороны ОС, реализуются на основе механизма программных прерываний.
Системные вызовы могут выполняться:
‒ синхронно (поток приостанавливается до завершения системного вызова);
‒ асинхронно (поток продолжает работу параллельно с системной процедурой, реализующей вызов).
Для синхронизации процессов и потоков, решающих общие задачи и совместно использующих ресурсы, в ОС существуют специальные средства: критические секции, семафоры, мьютексы, события, таймеры и т.п.
Отсутствие синхронизации может приводить к таким нежелательным последствиям, как гонки и тупики.
