- •Кафедра программного обеспечения информационных технологий
- •«Операционные системы и системное программирование»
- •40 01 01
- •Содержание
- •Введение
- •Разработка программ в ос unix
- •1.1 Отличительные черты ос unix
- •1.2 Основы архитектуры операционной системы unix
- •1.3 Ядро системы
- •1.4 Пользователи системы, атрибуты пользователя
- •1.5 Системные вызовы и функции стандартных библиотек
- •1.6 Описание программы, переменные окружения
- •1.7 Аргументы и опции программы
- •1.8 Обработка ошибок
- •2 Файлы и файловая система
- •2.1 Файлы
- •2.2 Типы файлов
- •2.2.1 Обычные файлы
- •2.2.2 Каталоги
- •2.2.3 Файлы символичной связи (ссылки)
- •2.2.4 Файлы устройства
- •2.2.5 Именованные каналы
- •2.2.6 Сокеты
- •2.3 Владельцы файлов и права доступа к файлу
- •2.4 Дополнительные атрибуты файла
- •2.5 Файловый ввод/вывод
- •Открытие файла
- •2.6 Мультиплексированный ввод/вывод
- •2.7 Векторный ввод/вывод
- •2.8 Файлы, отображающиеся в памяти
- •2.9 Каталоги, работа с каталогами
- •2.9.1 Создание каталога
- •2.9.2 Удаление каталога
- •2.9.3 Чтение информации из каталога
- •2.9.4 Закрытие каталога
- •2.10 Создание жестких ссылок
- •2.11 Символическая ссылка
- •2.12 Удаление ссылки (или имени файла)
- •2.13 Переименование файла
- •2.14 Файловая система ос unix
- •2.14.1 Организация файловой системы ext2
- •2.15 Файлы устройств
- •3 Процессы
- •3.1 Виды процессов
- •3.2 Создание процесса
- •3.3 Вызовы семейства exec
- •3.4 Функции завершения процесса
- •3.5 Ошибки
- •3.6 Копирование при записи
- •3.7 Системные вызовы ожидания завершения процесса
- •3.8 Системный вызов system
- •3.9 Основные параметры, передаваемые процессу
- •3.10 Сеансы и группы процессов
- •4 Взаимодействие процессов
- •4.1 Сигналы
- •4.1.1 Отправка (генерация) сигнала
- •4.1.2 Наборы сигналов
- •4.1.3 Блокировка сигналов
- •4.2 Неименнованные каналы (трубы)
- •4.2.1 Размер канала и взоимодействие процессов при передаче данных
- •4.3 Именнованные каналы
- •4.4 Дополнительные средства межпроцессного взоимодействия
- •4.5 Механизмы межпроцессорного взаимодействия
- •4.5.1 Очереди сообщений
- •4.5.2 Семафоры Семафоры как теоретическая конструкция
- •4.5.3 Разделяемая память
- •4.5.4 Потоки
- •Int pthread_setschedparam(pthread_t tid, int policy, const struct sched_param *param);
- •Int pthread_getschedparam(pthread_t tid, int policy, struct schedparam *param);
- •5 Операционные системы
- •5.1 Понятие операционной системы
- •5.2 Характеристики современных ос
- •5.2.1 Многопоточность
- •5.2.2 Распределенные ос
- •5.2.3 Концепция ос на основе микроядра
- •5.2.4 Функции микроядра.
- •5.3 Принципы построения ос
- •5.4 Концептуальные основы ос
- •5.4.1 Процессы
- •Модель работы процесса с двумя приостановочными состояниями
- •Варианты решения:
- •Решение задачи взаимного исключения. Алгоритм Деккера.
- •Решение задачи взаимного исключения. Алгоритм Пэтерсона..
- •Синхронизирующие примитивы (семафоры).
- •Задача “производитель-потребитель” Общие семафоры
- •Задача “производитель-потребитель”, буфер неограниченного размера(Спящий парикмахер)
- •Задача “производитель-потребитель”, буфер ограниченного размера
- •5.4.2 Распределение ресурсов. Проблема тупиков
- •Алгоритм банкира
- •Применение алгоритма банкира
- •5.4.3 Монитороподобные средства синхронизации
- •Механизм типа «критическая область»
- •5.4.4 Виртуализация
- •5.4.5 Подсистема управления памятью
- •5.4.6 Виртуальная оперативная память
- •5.5 Аппаратные особенности процессоров Intel-архитектуры, направленных на поддержку многозадачности
- •5.5.1 Сегментация памяти. Ia-32
- •5.5.2 Распределение памяти в реальном режиме
- •5.5.3 Организация защиты в процессоре
- •5.5.4 Поддержка многозадачности в процессорах архитектуры ia-32
5.4 Концептуальные основы ос
понятие процесса;
понятие ресурса;
концепция виртуализации;
дисциплина распределения ресурсов;
концепция прерывания;
средства взаимодействия пользователя с вычислительной машиной.
5.4.1 Процессы
Процесс – это система действий, реализующая определенную функцию в вычислительной системе и оформленная так, что управляющая программа вычислительной системы может перераспределять ресурсы этой системы в целях обеспечения мультипрограммирования.
Ресурс – средство вычислительной системы, которое может выделить процесс на определенный интервал времени. В общем смысле понимается некоторый запас материальных предметов либо энергетических, структурных или каких-либо других характеристик предмета в составе некоторого объекта.
Модель процесса с двумя составляющими
Первым из задач ОС является выполнение управления процесса. Для этого необходимо определить схему перед процессом и выделить им ресурсов. Выполнение этих функций базируется на описании ожидаемого поведения процессов. Простейшая модель процессора состоит из двух состояний
Создав новый процесс ОС фиксирует его в состояние не выполняющем. Время от времени выполняется процесс прерывания и диспетчер процусса выбирает для выполнения другой процесса. При этом выполняемый процесс переходит в состояние не выполняющего, а один из ожидаемых переходит в состояние выполняющего. Для реализации такой системы переключения процессов необходим способ, с помощью которого будет представляться процесс, чтобы ОС могла следить за процессом. С каждым процессом связывается определенная информация, в котором описывается его текущее состояние и размещение в памяти. Не выполняющие процессы организовываются в очередь.
Поведение диспетчеризации предполагает, что процесс, работа которого прервана, переходит в очередь, ожидающую выполнения, если же процесс завершен, он выходит из системы. В любом случае диспетчер выбирает следующий процесс для выполнения.
Создание процесса
Причинами создания является:
Новое пакетное задание. Готовясь принять на обработку новое задание. ОС считывает очередные команды управления заданием.
Вход в систему в интерактивном режиме, когда в систему с терминала подключается новый пользователь.
Создание ОС процесса нужной для работы некоторой служебной ОС может создать процесс, для выполнения некоторой операции.
Порождение одного процесса другим с целью структуризации программы или использования возможности параллельных вычислений, программа может создавать другие процессы.
Когда создается новый процесс ОС создает структуры данных, используемых при управлении этим процессом и размещаемых в адресе пространства в основной памяти для процесса.
Завершение процесса
В любой системе должны быть средства, позволяющие определить, закончилось ли выполнение процесса. Для этого пакетное задание может включать в себя специальную команду или явный вызов служб ОС, приводящий к завершению процесса. При этом может генерироваться запрос на прерывание или выполнятся действие пользователя сообщающего о том, что он покидает сеанс связи. Во всех случаях вызов специальных служб ОС завершает процесс.
Причин завершения достаточно много:
обычное завершение (процесс вызывает exit);
превышение лимита времени, отведенного программе;
недостаточный объем памяти;
выход за пределы отведенной области памяти;
ошибка защиты;
арифметическая ошибка (деление на ноль, переполнение);
изменение ожидания;
ошибка ввода/вывода;
неверная команда (счетчик команд переключается на счетчик данных);
команда с недопустимыми привилегиями;
непрерывное использование данных (часть данных или не инициализирована, или другого типа);
вмешательство оператора или ОС;
завершение родительского процесса;
запрос со стороны родительского процесса.
Модель процесса с пятью состояниями
Для процесса при выполнении на центральном процессоре можно выделить следующие характерные отдельные состояния.
Когда процесс появляется в системе, ОС определяет новый процесс в два этапа:
Присвоение процессу идентификатора и формирование всех таблиц, необходимых процессу. Этот промежуток времени соответствует состоянию «новый»;
Распределение памяти под процесс, подготовка его к выполнению, т.е. перевод в состояние, «готовый к выполнению».
Переход из «новый» в «готовый». ОС осуществляет переход, когда будет готова к обработке дополнительных процессов. В большинстве систем существует ограничения на количество выполняющихся процессов или на объем виртуальной памяти.
Переход из «готовый» в «выполняющийся». Происходит, когда ОС выбирает новый процесс для запуска. Выбирается один из процессов, находящихся в состоянии «готовый», в соответствии с какой-то дисциплиной в обслуживании.
Переход из «выполняющийся» в «готовый». Чаще всего происходит, когда процесс отрабатывает максимальный промежуток времени, отведенный для непрерывной работы одного процесса.
Переход из «выполняющийся» в «блокированный». Процесс переводится в заблокированное состояние, если для продолжения его работы требуется какое-либо событие. Например, процесс может запросить какой-либо ресурс, который временно недоступен или требуется выполнить какое-либо действие, необходимое для продолжения работы процесса, например, операцию ввода-вывода.
Переход «заблокированный» - «готовый». Осуществляется, когда происходит ожидаемое событие.
Переход из «выполняющийся» в «завершающийся». Выполняется тогда, когда процесс сигнализирует об окончании своей работы, или ОС прекращает его выполнение в силу каких-то причин. При этом ОС освобождает аппаратные ресурсы, использующих процессором, но сохраняет часть таблиц и информацию, связанную с процессором так, что другие программы могут получить сведения о причинах его завершения. После извлечения этой информации процесс полностью удаляется из системы.
Переход в состояние «блокировки» происходит в том случае, если продолжение работы процесса требует наступления какого-либо события.