
- •Кафедра программного обеспечения информационных технологий
- •«Операционные системы и системное программирование»
- •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 имеет долгую историю развития, существовало много ее официальных и фактических стандартов, а также коммерческих и учебных вариантов. Но ядро ОС UNIX остается стабильным, что в значительной степени определяет ее популярность и распространение.
В настоящее время стандарты UNIX определяются Posix и The Open Group.
POSIX 1003.1-1988 был первым стандартом Posix. Он определял интерфейс взаимодействия языка С c ядром UNIX в следующих областях: примитивы для реализации процессов, среда процесса, файлы и каталоги, работа с терминалом, базы данных систем (файлы паролей и групп), форматы архивов tar и cpio.
IEEE 1003.1-1990. Он одновременно являлся и международным стандартом ISO/IEC 9945-1:1990. Изменения по сравнению с первой версиеей были минимальными. к заголовку было добавлено "Part 1: System Application Programming Interface (API)" (Часть 1: Системный интерфейс разработки программ" .
IEEE 1003.2-1992 определяет командный интерпретатор UNIX и набор утилит
IEEE 1003.1b-1993 включает дополнения, относящиеся к приложениям реального времени
IEEE 1003.1, издание 1996 года, включает 1003.1-1990 (базовый интерфейс API), 1003.1b (расширения реального времени), 1003.1c-1995 (Pthreads- программные потоки Posix) и 1003.1i-1995 (технические поправки к 1003.1b).
В 2001 году необязательные стандарты были объединены с базовым стандартом POSIX 1990, в результате появился стандарт IEEE Std 1003-2001. Последняя версия, выпущенная в 2004 году носит название IEEE Std 1003-2004. Все ключевые стандарты POSIX обозначаются аббревиатурой POSIX.1, последняя версия датирована 2004 годом.
Несколько основных производителей Unix объединились вокруг Open Group — промышленного консорциума, который был сформирован путем объединения Open Software Foundation (OSF) и X/Open. Консорциум Open Group обеспечивал сертификацию, официальные документы и проверку соответствия. В начале 90-х годов Open Group выпустила единую спецификацию Unix — Single UNIX Specification. SUS быстро завоевала популярность, большей частью благодаря своей цене (она бесплатная), в противоположность высокой стоимости стандарта POSIX. Сегодня SUS включает в себя новейший стандарт POSIX.
Первая версия SUS была опубликована в 1994 году. Системы, соответствующие спецификации SUSvl, маркируются как UNIX 95. Вторая версия SUS вышла в 1997 году, и совместимые системы маркируются как UNIX 98. Третья, и последняя, версия SUS, SUSv3, была опубликована в 2002 году. Совместимые системы маркируются как UNIX 03. В SUSv3 были выполнены пересмотр и объединение стандарта IEEE Std 1003.1-2001 и нескольких других стандартов.
Операционная система Linux нацелена на соответствие стандартам POSIX и SUS. Она предоставляет интерфейсы, документированные в SUSv3 и POSIX.1, включая необязательную поддержку обработки в реальном времени (POSIX.1b) и необязательную поддержку поточной обработки (POSIX.1с).
Что касается стандартов языков, то в Linux все хорошо. Компилятор С gcc поддерживает стандарт ISO С99. Помимо этого, gcc предоставляет множестве собственных расширений языка С. Эти расширения носят коллективное название GNU С.
ISO С99 - последовало крупное обновление языка C в 1999 году, в ходе которого было добавлено множество новых возможностей, включая подстановку функций, новые типы данных, массивы переменной длины, комментарии в стиле С++ и новые библиотечные функции.