
- •Оглавление
- •Введение
- •Основы теории операционных систем Общие сведения об операционных системах
- •Организация диалога пользователя
- •Графический режим диалога пользователя
- •Файловые менеджеры
- •Назначение функциональных клавиш
- •Системные вызовы
- •Архитектура операционной системы
- •Машино-независимые свойства операционных систем Файловая система пк
- •Типы файлов
- •Физическая организация fat
- •Работа с файлами и каталогами средствами ос ms dos
- •Команды общесистемного назначения
- •Работа с каталогами
- •Работа с файлами
- •Процессы
- •Запрос пользователя на создание процесса.
- •Защищенность и отказоустойчивость ос
- •Система raid – массивов дисков
- •Распределение ресурсов пк
- •Разрешение конфликтов при распределении ресурсов
- •Запрос – ожидание – запрос – ожидание - …..
- •Управление процессами в интерактивных ос
- •Организация ввода – вывода
- •Работа подсистемы по ввода – вывода
- •Поддерживать несколько файловых систем
- •Вести системную информацию о состоянии и распределение устройств:
- •Распределение ресурсов пк
- •Разрешение конфликтов при распределении ресурсов
- •Запрос – ожидание – запрос – ожидание - …..
- •Управление памятью
- •Раздел 1 Раздел 1
- •Раздел 2 Раздел2
- •Кэширование данных
- •Общая схема выполнения запроса к оп в системах с Кэш – памятью (выполнение системного вызова)
- •Операционная система Windows
- •Загрузка windows xp
- •Архитектура Windows xp
- •Основные компоненты ос Windows xp
- •Технологические принципы ос Windows
- •Физическая организация данных ntfs
- •Каталоги ntfs
- •Архивирование данных
- •Компьютерные вирусы
- •Реестр Windows xp
- •Операционная система Linux
- •Основные понятия ос linux
- •Файловая система ос linux
- •Процессы
- •Основные команды ос linux
- •Архивирование и сжатие файлов
- •Shell – сценарии
- •Архитектура сетевой операционной системы
Управление процессами в интерактивных ос
Важнейшей функцией операционной системы является организация рационального использования всех аппаратных и программных ресурсов компьютера. К основным ресурсам относятся процессор, память, внешние устройства, программы и сами данные, которые участвуют в вычислениях.
Как известно, основное понятие ОС – понятие процесса. Процесс, создается ОС, когда пользователь или сама ОС запускает программу на выполнение. Часть процессов порождаются пользовательскими приложениями и называются пользовательскими процессами. Вторая часть процессов, запускаются самой ОС и являются системными. Пользовательские и системные процессы имеют разный приоритет, от которого зависит очередность и интервал времени обслуживания процесса.
Для каждого вновь создаваемого процесса ОС создает информационные структуры (специальные таблицы), которые содержат данные о потребностях процесса в ресурсах, о фактически выделенных ему ресурсах, об адресах ОП в которых размещен процесс и т.д.
Функциями ОС по управлению процессами являются:
Распределение оперативной памяти;
Выделение процессорного времени конкретному процессу;
Распределение ресурсов между процессами;
разрешение конфликтов при распределении ресурсов
При планировании процессов, то есть определения порядка выполнения процессов, может применятся невытесняющий и вытесняющий алгоритм. В интерактивных ОС применяются вытесняющие алгоритмы.
Процесс – это крупная единица работы, которая потребляет все ресурсы, кроме процессорного времени. Процессорное время распределяется между потоками, которые представляют собой последовательность команд процесса.
П |
||||
|
||||
Поток 1 |
Поток 2 |
….. |
…… |
Поток N |
Команды потока 1 |
Команды потока 2 |
…. |
…… |
Команды потока N |
При создании процесса ОС создает как минимум один поток выполнения. Все потоки одного процесса используют общие файлы, таймеры, устройства, одну и ту же область оперативной памяти (одно и то же адресное пространство). Между потоками одного процесса нет полной защиты, так как это невозможно, да и не нужно. Для организации взаимодействия между потоками одного процесса не требуется обращения к ОС, достаточно использовать общую область памяти (стек). Потоки разных процессов изолированы друг от друга.
Понятие потока возникло, как средство распараллеливания вычислений, то есть такой программы, которая имеет независимые ветви выполнения. В настоящее время распараллеливание вычислений достигается за счет использования подпрограмм, модулей, динамических библиотек.
Современные интерактивные ОС универсального назначения имеют в своем составе подсистему управления процессами и потоками, в состав которой входит планировщик, диспетчер процессов (потоков) и другие модули.
На протяжении существования процесса выполнение его потоков может быть многократно прервано и продолжено. Переход от выполнения одного потока к другому осуществляется в результате планирования и диспетчеризации.
Планирование – это работа по определению того, в какой момент времени необходимо прервать выполнение текущего активного потока и какому потоку (процессу) предоставить возможность выполняться следующим. Решается две задачи:
Определение момента времени для смены активного текущего потока;
Выбор для выполнения потока из очереди готовых для выполнения потоков;
При планировании могут приниматься во внимание следующие факторы: приоритет потока (системный или пользовательский), время ожидания в очереди, общее время выполнения процесса, которому принадлежит поток, интенсивность обращений к вводу – выводу.
В ОС универсального назначения планирование осуществляется динамически, то есть решение принимается на основе анализа текущего состояния системы. ОС работает в условиях неопределенности – процессы и потоки возникают в случайный момент времени и завершаются случайно. Планирование потоков выполняется модулями ядра ОС.
Поток может находится в трех состояниях:
Выполнения – активное состояние, когда поток выполняется процессором;
Ожидания – пассивное состояние, процесс ждет окончание операции ввода – вывода или освобождения ресурса;
Готовность – пассивное состояние, процесс стоит в очереди для получения кванта процессорного времени.
Состояние потока может быть отражено в виде графа состояний потока
-
Поток завершен или произошла ошибка
выполнение
П
оток выбран на выполнение
Поток ожидает завершение операции ввода – вывода или освобождения ресурса
Поток прерван
готовность
ожидание
Ввод – вывод завершен (событие произошло)
Только что созданный поток
Диспетчеризация – заключается в реализации найденного решения в результате планирования. Диспетчеризация сводиться к следующему:
Сохранение состояния текущего потока, который требуется сменить, с тем чтобы затем начать его выполнение с момента прерывания. С этой целью создается контекст процесса, запоминается состояние регистров, адреса памяти и т.д.
Загрузку нового потока по его предыдущему состоянию, для этого восстанавливается состояние регистров процессора
Запуск нового процесса на выполнение
При выполнении диспетчеризации управление передается – диспетчеру потоков.
Алгоритмы планирования потоков (процессов)
Для планирования смены потоков разработаны специальные алгоритмы планирования,
Вытесняющие алгоритмы – при использовании таких алгоритмов ОС сама принимает решение о принудительной смене потока не зависимо от его завершения. Применяются в универсальных ОС (Windows, Unix).
В основу вытесняющих алгоритмов планирования смены потоков положена идея квантования. В соответствии с этой идеей каждому потоку поочередно предоставляется ограниченный непрерывный период процессорного времени – квант. Смена активного потока происходит если:
поток завершился;
произошла ошибка;
поток перешел в состояние ожидания;
исчерпан квант процессорного времени;
Поток, который исчерпал свой квант, переводится в состояние готовности и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение выбирается новый поток из очереди готовых потоков, при этом учитывается время ожидания в очереди, интенсивность операций ввода-вывода и т.д.
Кванты, которые выделяются потокам, могут быть одинаковые для всех или различные. Если кванты для всех процессов одинаковы, то следовательно все процессы равноправны, это приведет к тому, что системные процессы будут долго «стоять» в очереди. Кванты, которые выделяются одному потоку, могут быть фиксированными, а могут изменяться в разные периоды жизни потока.
Поток, который получил квант времени, может использовать его не полностью, например из-за необходимости выполнять ввод или вывод данных. В результате возникает ситуация, когда потоки с частым обращением к вводу-выводу, используют небольшую часть выделенного им процессорного времени. Можно создавать две очереди: первая – образована потоками, которые перешли в состояние готовности в результате завершения кванта времени, вторая – образована потоками, у которых завершилась операция ввода-вывода. Сначала будет просматриваться очередь 2, затем очередь 1.
Планирование с квантованием с предпочтением потоков, интенсивно обращающихся к вводу-выводу
-
Поток завершен или произошла ошибка
выполнение
Поток ожидает завершение операции ввода – вывода или освобождения ресурса
П оток прерван
Поток выбран на выполнение
О
чередь готовых потоков1
ожидание
О чередь готовых потоков2
Ввод – вывод завершен
Второй важной идей, лежащей в основе вытесняющих алгоритмов планирование, является приоритетное обслуживание. Приоритетное обслуживание предполагает наличие у потока некоторой изначально известной характеристики – приоритета, на основании которой определяется порядок выполнения процессов. Приоритет – это число, который показывает степень привилегированности потока при использовании ресурсов компьютера, в том числе и процессорного времени. Чем выше приоритет, тем выше привилегии, тем меньше времени поток будет проводить в очередях. Дочерние потоки имеют приоритет родительского потока.
При назначении приоритета вновь созданному процессу учитывается, является ли этот процесс системным или прикладным, каков статус пользователя, запустившего процесс. Если поток создается другим потоком в результате выполнения системного вызова, то при назначении приоритета ОС принимает во внимание параметры системного вызова. Приоритет может изменяться во время выполнения процесса по инициативе ОС, пользователи (администраторы) могут в определенных пределах изменять приоритет.
В настоящее время применяются вытесняющие алгоритмы планирования, в которых квант времени выбирается по приоритету – вытесняющие алгоритмы с квантованием по приоритету. В алгоритмах, основанных на квантовании, ОС не использует ни какой предварительной информации о процессах (короткие или длинные, часто ли будет обращение к вводу – выводу и т.д.). Планирование проводится динамически, в зависимости от текущего состояния системы, на основе «истории существования» потока в системе.
Синхронизация процессов и потоков
Необходимость в синхронизации процессов и потоков возникает в многозадачных операционных системах и связана с совместным использованием аппаратных и информационных ресурсов системы. Синхронизацией называют согласование во времени выполнение процессов или потоков. Синхронизация заключается в согласовании скоростей выполнения процессов или потоков путем приостановки одного потока до наступления некоторого события, а затем активизация этого потока при наступлении этого события. Например, поток - получатель должен обращаться за данными только после того, как данные помещены в буфер потоком – отправителем. Или, если при выполнении пользовательского процесса следует выполнить операцию считывания или записи данных на жесткий диск, то для этого создается системный процесс, который должен выполниться раньше пользовательского. То есть пользовательский процесс должен перейти в состояние ожидания, и активизироваться после выполнения системного процесса.
Если вопросы синхронизации не решены, то это может приводить к неправильному решению задач – возникают – гонки процессов или потоков
Рассмотрим пример. Существует база данных клиентов некоторого банка и СУБД по ведению БД. Каждому клиенту отводится одна запись, в которой есть поля «Заказ» и «Оплата». Программа, которая ведет базу данных, оформлена, как единый процесс, имеющих несколько потоков. Поток «А», вносит информацию о заказах клиентов и поток «В», вносит данные об оплате клиента. Оба эти потока совместно работают с общим файлом базы данных, и выполняют три действия:
Считать из файла базы данных в буфер запись о клиенте с заданным идентификатором;
Внести новое значение в поле «Заказ» (поток А) или в поле «Оплата» (поток в);
Вернуть измененную запись в файл базы данных.
-
Поток А
БД
А1
Считать запись в буфер
А2
Внести изменение в поле «Заказ»
Критическая
секция
А3
Сохранить запись в файле
Поток В
оплата
заказ
В1
С
читать запись в буфер
Критическая
секция
В2
Внести изменение в поле «Оплата»
В3
Сохранить запись в файле
Предположим, что в некоторый момент времени, процесс А выполнил шаг А1 и А2, а шаг А3 не успел выполнить, например закончился квант процессорного времени. Потом активизировался поток В, выполнил шаги В1 и В2, и прервался. В буфере у потока В находится запись о клиенте, в которой поле «Заказ» имеет прежнее, не измененное значение. Когда будет активизирован поток «А», он запишет данные в БД с новым значением в поле «Заказ». Когда будет активизирован поток В, он запишет данные с новым значением поля «Оплата», но старым значением поля «Заказ».
Ситуация, когда два и более потока обрабатывают общие (разделяемые) данные и конечный результат зависит от скорости работы потоков, называется гонками.
Для борьбы с этим явлением выделяются критические данные, то есть данные, при несогласованном изменении которых могут возникнуть нежелательные эффекты и критические области в программе, которые работают с этими данными. В примере – это записи БД.
Чтобы исключить эффект гонок, необходимо обеспечить, чтобы в каждый момент времени в критической секции, находился только один поток, причем не важно в активном или приостановленном состоянии. Этот прием называют – взаимным исключением.
Для этого используются блокирующие переменные. Каждому набору критических данных ставится в соответствие двоичная переменная, которой поток присваивает значение 0, когда он входит в критическую секцию, и значение 1, когда он покидает ее.
Если потоки используют пул ресурсов, то есть набор одинаковых по функциональному назначению внешних устройств (принтер, порт), или информационных структур, то используются – семафоры Дейкстры – переменная, которая принимает несколько значений.