- •Кафедра программного обеспечения информационных технологий
- •«Операционные системы и системное программирование»
- •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
2.2.2 Каталоги
Каталоги - это файлы содержащие имена находящихся в них файлов и указатели (номера) индексных дескрипторов в которых содержится информация о файле.
Каталоги определяют положение файла в дереве файловой системы. Программа, имеющая право на чтение каталога может прочесть его содержимое, но только системные вызовы ядра имеют право на запись в каталог. Пример:
. -корневой каталог
.. –родительский каталог
Соотношение номера дескриптора и имени файла называется жесткой ссылкой. Первоначально на диске создается 1 корневой каталог / . В котором могут хранится ссылки на другие каталоги. Проходя по вложенности каталогов, получаем полный путь к файлу. Хотя каталоги похожи на обычные файлы, но для работы с ними есть специальные вызовы. Пример:
/home/std1 /home/stud2
3071 . 5711 .
4534 .. 4534 ..
484 f1.c 3782 t1.c
4091 prog1.c 1547 tile.txt
3544 file.txt 4091 prog2.c
Это два имени одного и того же файла. Количество имен файла определенно в специальном поле, которое называется число жестких связей. Работать с файлом можно через любое имя. Файл будет удален, когда удалят все его имена.
2.2.3 Файлы символичной связи (ссылки)
Файлы символичной связи выглядят как обычные файлы. Они имеют свой индексный дескриптор, а данные хранящееся в нем представляют собой путь к некоторому файлу и тогда обращение к нему приводит к переадресации на файл, который указан в теле файла символом связи.
2.2.4 Файлы устройства
Доступ к устройствам в Unix осуществляется через файлы устройства, которые ведут себя и выглядят как обычные файлы, находящиеся в файловой системе. Его можно открывать читать и записывать в них данные и таким образом взаимодействовать.
- Блочные(Block device)
- Символьные(character device)
Доступ к символьным устройствам осуществляется как к линейной очереди байтов (клавиатура принтер и т.д.). Блочные устройства предоставляют возможность обращения к данным как к массивам. То есть имеется возможность поиска данных по массиву. И пользовательские программы могут производить запись и могут читать данные из произвольной области массива (жесткий диск, флешь память и т.д.)
2.2.5 Именованные каналы
Работают по принципу FIFO(первый вошел, первый вышел). Представляют собой механизм межпроцесного взаимодействия.
2.2.6 Сокеты
Представляет собой расширенную форму межпроцесного взаимодействия. Обеспечивает взаимодействие нескольких машин. Они формируют базис сетевого программирования и программирования для интернета. Существуют различные разновидности сокетов.
Существует определенный договор по конфигурации каталогов в Unix. Договор о названии и их смысловом назначении.
/bin - утилиты, требуемые при загрузке системы и используемые пользователем.
/sbin – похож на bin, но здесь находятся команды, не предназначенные для пользователя с общими правами.
/etc – содержит различные конфигурационные файлы.
/etc/passwd
/etc/group
/etc/shells
/etc/termcap
/root -личный каталог администратора системы.
/lib – библиотека каталогов используемых программой.
/dev – файлы устройств.
/tmp – каталог для хранения временных файлов.
/boot – файлы, используемые начальным загрузчиком системы.
/usr – содержит подкаталоги различных сервисных подсистем.
/usr/bin – команды.
/usr/sbin – команды используемые администратором системы.
/usr/lib – файлы данных для программ, включая некоторые конфигурационные файлы.
/usr/local – отдельно размещенные пакеты программ и другие файлы.
/home – домашний каталог пользователя.