- •Кафедра программного обеспечения информационных технологий
- •«Операционные системы и системное программирование»
- •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
Разработка программ в ос unix
1.1 Отличительные черты ос unix
1. Система написана на языке высокого уровня, что делает её доступной к пониманию, изменению и переносу на другие платформы. UNIX является одной из наиболее открытых систем.
2. UNIX – многозадачная, многопользовательская система. Один сервер может обслуживать запросы большого количества пользователей. При этом необходимо администрирование только одной системы.
3. Наличие стандартов. Основой семейства UNIX является принципиально одинаковая архитектура и ряд стандартных интерфейсов, что упрощает переход пользователей с одной системы на другую.
4. Простой, но мощный модульный пользовательский интерфейс. Имеется определенный набор утилит, каждая из которых решает узко специализированную задачу, и из них можно сконструировать сложные программные обрабатывающие комплексы.
5. Использование единой иерархической файловой системы, которая обеспечивает доступ к данным, хранящимся в файлах, и к устройствам системы.
6. Достаточно большое количество приложений, в том числе свободно распространяемых.
1.2 Основы архитектуры операционной системы unix
UNIX представляет собой двухуровневую модель системы: ядро и приложения. Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от аппаратных особенностей вычислительной системы. Ядро имеет набор услуг, предоставляемых прикладным программам.
Все приложения запрашивают услуги ядра посредством системых вызовов.
Второй уровень составляют приложения или задачи, как системные, определяющие функциональность системы, так и прикладные, обеспечивающие пользовательский интерфейс UNIX. Схема взаимодействия всех приложений с ядром одинакова.
1.3 Ядро системы
Ядрообеспечивает базовую функциональность операционной системы, создает процессы и управляет ими, распределяет память и обеспечивает доступ к файлам и периферийным устройствам. Взаимодействие прикладных задач с ядром происходит посредством стандартного интерфейса системных вызовов.
Процесс запрашивает услугу определенной процедуры через стандартизированный системный вызов, внешне похожий на обычный вызов библиотечной функции. Ядро обрабатывает запрос и возвращает процессу необходимые данные.
Ядро состоит из основных трех подсистем:
- файловая подсистема;
- подсистема управления процессами и памятью;
- подсистема ввода-вывода.
Файловая подсистема обеспечивает унифицированный интерфейс доступа к данным, расположенным на дисковых накопителях и к периферийным устройствам. Одни и те же функции записи-чтения могут использоваться при работе с файлами на дисках и при вводе-выводе данных на терминал, принтер и другие внешние устройства.
Файловая подсистема контролирует права доступа к файлу, выполняет операции размещения и удаления файлов, запись и чтение данных.
Так как большинство прикладных функций использует в своей работе интерфейс файловой системы, права доступа к файлу во многом определяют привилегии доступа к системе. Таким образом формируются привилегии отдельных пользователей.
Подсистема управления процессами и памятью. Запущенная на выполнение программа порождает в системе один или более процессов. Подсистема управления процессами, контролирует создание и удаление процессов, распределение системных ресурсов между процессами, синхронизацию процессов, межпроцессорное взаимодействие.
Специальная задача ядра, называемая планировщиком процессов, разрешает конфликты между процессами в конкуренции за системные ресурсы. Планировщик запускает системные процессы и следит за тем, чтобы процесс не захватил разделяемые системные ресурсы.
Процесс освобождает процессор перед длительной операцией ввода-вывода или по прекращению кванта времени. В этом случае планировщик выбирает следующий процесс с наивысшим процессом и запускает его на выполнение.
Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. Если для всех процессов памяти недостаточно, ядро перемещает часть процесса или несколько процессов во вторичную память, представляющую собой специальную область на жестком диске, освобождающую ресурсы для выполняющегося процесса.
Все современные системы реализуют виртуальную память. При этом каждый процесс выполняется в своем логическом адресном пространстве, которое может значительно превышать физическую оперативную память. Модуль управления памятью выполняет функции виртуальной памяти.
Модуль межпроцессорного взаимодействия отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность передачи данных между различными процессами.
Подсистема ввода-вывода обрабатывает запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам. Обеспечивает необходимость буферизации данных и взаимодействие с драйвером устройства.
Драйверы специальные системные программы, предназначенные для обеспечения взаимодействия процессов с устройствами.