- •1. Состав и назначение и классификация операционной системы Введение
- •Понятие процесса и ресурса
- •Состав операционной системы
- •Классификация ос
- •Ос пакетной обработки
- •Ос оперативной обработки
- •Моделирование режима мультипрограммирования
- •2. Планирование процессов Понятия о планировании и диспетчеризации процессов
- •Создание процессов
- •Завершение процесса
- •Состояние процесса
- •Алгоритмы планирования
- •Методы планирования
- •Детерминированное планирование
- •Планирование по критерию минимума суммарного времени выполнения работ
- •Стохастическое планирование
- •Последовательный выбор
- •Алгоритм одноуровневого циклического выбора
- •Алгоритм многоуровневого циклического выбора
- •Планирование процессов на основе приоритетов
- •Обслуживание с абсолютными приоритетами
- •3. Синхронизация процессов Цели и средства синхронизации процессов
- •Понятие системные вызовы. Критические секции
- •Синхронизация методом взаимных исключений
- •Метод блокирующей переменной (спин-блокировка)
- •Блокирующей переменной с использованием системного вызова
- •Метод семафоров
- •Условная (барьерная) синхронизация
- •Тупиковые ситуации во взаимодействии процессов и методы их устранения
- •3. Управление памятью Проблемы организации памяти мультипроцессорных вычислительных систем. Функции ос по управлению памятью.
- •Методы защиты памяти
- •Метод граничных ресурсов
- •Метод ключей защиты
- •Защита отдельных ячеек
- •Организация виртуальной памяти
- •Статическое и динамическое распределение памяти. Распределение памяти фиксированными разделами
- •Страничная организация виртуальной памяти
- •Сегментная и сегментно-страничная организация виртуальной памяти
- •Структура страничной таблицы
- •Методы уменьшения времени доступа к памяти Обеспечение быстрого доступа к данным кэш-память
- •Ускорение формирования адреса. Буферы быстрого преобразования адреса
- •Алгоритмы замещения страниц в виртуальной памяти
- •4. Архитектура операционной системы
- •Многослойная структура ос
2. Планирование процессов Понятия о планировании и диспетчеризации процессов
Планировщик – специальная программа, которая формирует порядок выполнения работ, т.е. порядок представления ресурсов этим работам. Иногда планировщик называют диспетчером. Планировщик определяет оптимальный порядок выполнения работ, а диспетчер – реализует этот порядок. Т.е. диспетчер осуществляет переключение с одной работы на другую. Он запоминает контекст текущего процесса и возобновляет работу прерванного процесса. Таким образом, контекст процесса предназначен для корректного возобновления прерванного процесса. Диспетчер при переключении процесса сохраняет контекст текущего процесса, загружает контекст нового процесса и запускает его на выполнение.
Контекст процесса зависит от архитектуры системы, и обычно включает в себя содержимое регистров общего назначения и регистров управления процессом, с указателями, например, на адресное пространство процесса.
Создание процессов
В универсальных системах в отличие от специализированных, постоянно создаются и уничтожаются процессы, поэтому необходим способ создания и прерывания процессов по мере необходимости. Существуют четыре основных события, приводящие к созданию процессов: инициализация системы; выполнение существующим процессом системного запроса на создание процесса; запрос пользователя на создание процесса; инициирование пакетного задания. Создание процесса во всех случаях происходит по одинаковой схеме: текущий процесс выполняет системный запрос на создание нового процесса.
Обычно в вычислительной системе создается множество процессов. В UNIX для просмотра списка запущенных процессов используется программа ps, а в Windows можно воспользоваться диспетчером или планировщиком (scheduler) задач.
В UNIX существует только один системный запрос, направленный на создание нового процесса: fork (ветвление или вилка). Этот запрос создает дубликат вызываемого процесса. После выполнения запроса fork двум процессам — родительскому и дочернему — соответствуют одинаковые образы памяти, строки окружения и одни и те же открытые файлы. Обычно дочерний процесс выполняет системный вызов execve (или похожий) для изменения своего образа памяти и запуска новой программы.
В Windows же вызов всего одной функции CreateProcess интерфейса Win32 управляет и созданием процесса, и запуском в нем нужной программы. У этой функции 10 параметров: программа, которую нужно запустить, параметры командной строки этой программы, различные атрибуты защиты, биты, управляющие наследованием открытых файлов, приоритеты, спецификация окна, которое следует открыть для процесса, и указатель на структуру, в которой информация о созданном процессе возвращается вызывающей программе.
И в UNIX, и в Windows после создания нового процесса родительский и дочерний процессы имеют собственные различные адресные пространства. При изменении любым процессом слова в адресном пространстве это изменение незаметно для других процессов. В UNIX начальное адресное пространство дочернего процесса является копией родительского, но сами адресные пространства различны, и перезаписываемая память совместно не используется (некоторые приложения UNIX совместно используют текст программы, поскольку его нельзя модифицировать). В то же время созданный процесс может использовать совместно с родительским процессом некоторые другие ресурсы, например открытые файлы. В Windows адресные пространства родительского и дочернего процессов отличаются с самого начала.
Во время создания нового процесса операционная система, как правило, выполняет целую последовательность операций. Во-первых, процессы необходимо каким-то образом различать между собой — для этого каждому процессу присваивается идентификационный номер процесса (process identification number, PID). Затем система создает блок управления процессом (process control block, PCB), называемый также дескриптором процесса (process descriptor), в который помещается информация, необходимая операционной системе для управления процессом. В блоке управления процессом обычно содержится следующая информация:
PID;
текущее состояние процесса (выполняется, готов или блокирован);
программный счетчик (program counter) или счетчик команд — определяющий, какую по счету команду программы процессор должен будет выполнить следующей;
приоритет процесса;
полномочия (данные, определяющие перечень ресурсов, к которым может иметь доступ данный процесс);
указатель на родительский процесс (parent process), то есть процесс, создавший данный;
указатели на дочерние процессы (child processes), то есть процессы, созданные данным процессом, если таковые имеются;
указатели данных и инструкций процесса в памяти;
• указатели выделенных процессу ресурсов (например, файлов).
Кроме того, в блоке управления процессом хранится контекст процесса (processes context), который формируется в момент выхода процесса из состояния выполнения.
Блок управления процессом (РСВ):
Программный счетчик
Регистры
Состояние
Приоритет
Адресное пространство
Родительский процесс
Дочерние процессы
Открытые файлы ...
Другие флаги
Рисунок 2.1 - Таблица процессов и блоки управления процессами
При переходе процесса из одного состояния в другое, операционная система должна обновить информацию в блоке управления процессом. Как правило, операционная система хранит указатели на блоки управления процессами в системной либо пользовательской таблице процессов (process table), чтобы ускорить доступ к нужной информации (см. рисунок).
