«Операционные системы и системное программирование». Содержание

Кафедра программного обеспечения информационных технологий

П.Ю. Бранцевич

Лекционный материал

«Операционные системы и системное программирование»

Для студентов специальности

40 01 01

«Программное обеспечение информационных технологий»

дневной формы обучения

Минск 2009


Содержание

Введение. 4

1. Разработка программ в ОС UNIX.. 5

1.1 Отличительные черты ОС UNIX.. 5

1.2 Основы архитектуры операционной системы UNIX.. 6

1.3 Ядро системы.. 6

1.4 Пользователи системы, атрибуты пользователя. 8

1.5 Системные вызовы и функции стандартных библиотек. 9

1.6 Описание программы, переменные окружения. 12

1.7 Аргументы и опции программы.. 14

1.8 Обработка ошибок. 16

2.. Файлы и файловая система. 19

2.1 Файлы.. 19

2.2 Типы файлов. 20

2.2.1 Обычные файлы.. 20

2.2.2 Каталоги. 21

2.2.3 Файлы символичной связи (ссылки) 22

2.2.4 Файлы устройства. 22

2.2.5 Именованные каналы.. 22

2.2.6 Сокеты.. 22

2.3 Владельцы файлов и права доступа к файлу. 23

2.4 Дополнительные атрибуты файла. 25

2.5 Файловый ввод/вывод. 25

2.6 Мультиплексированный ввод/вывод. 27

2.7 Векторный ввод/вывод. 31

2.8 Файлы, отображающиеся в памяти. 33

2.9 Каталоги, работа с каталогами. 40

2.9.1 Создание каталога. 43

2.9.2 Удаление каталога. 44

2.9.3 Чтение информации из каталога. 45

2.9.4 Закрытие каталога. 46

2.10 Создание жестких ссылок. 47

2.11 Символическая ссылка. 48

2.12 Удаление ссылки (или имени файла) 49

2.13 Переименование файла. 50

2.14 Файловая система ОС UNIX.. 51

2.14.1 Организация файловой системы ext2. 52

3 Процессы.. 56

3.1 Виды процессов. 56

3.2 Создание процесса. 57

3.3 Вызовы семейства exec. 58

3.4 Функции завершения процесса. 61

3.5 Ошибки. 62

3.6 Копирование при записи. 63

3.7 Системные вызовы ожидания завершения процесса. 63

3.8 Системный вызов system.. 66

3.9 Основные параметры, передаваемые процессу. 67

3.10 Сеансы и группы процессов. 67

4 Взаимодействие процессов. 70

4.1 Сигналы.. 70

4.1.1 Отправка (генерация) сигнала. 73

4.1.2 Наборы сигналов. 74

4.1.3 Блокировка сигналов. 74

4.2 Неименнованные каналы (ТРУБЫ) 77

4.2.1 Размер канала и взоимодействие процессов при передаче данных. 79

4.3 Именнованные каналы.. 80

4.4 Дополнительные средства межпроцессного взоимодействия. 82

4.5 Механизмы межпроцессорного взаимодействия. 83

4.5.1 Очереди сообщений. 83

4.5.2 Семафоры.. 93

Семафоры как теоретическая конструкция. 93

4.5.3 Разделяемая память. 100

4.5.4 Потоки. 106

5 Операционные системы.. 120

5.1 Понятие операционной системы.. 120

5.2 Характеристики современных ОС.. 122

5.2.1 Многопоточность. 122

5.2.2 Распределенные ОС.. 123

5.2.3 Концепция ОС на основе микроядра. 123

5.2.4 Функции микроядра. 126

5.3 Принципы построения ОС.. 128

5.4 Концептуальные основы ОС.. 131

5.4.1 Процессы.. 132

5.4.2 Распределение ресурсов. Проблема тупиков. 160

5.4.3 Монитороподобные средства синхронизации. 165

5.4.4 Виртуализация. 167

5.4.5 Подсистема управления памятью.. 171

5.4.6 Виртуальная оперативная память. 174

5.5 Аппаратные особенности процессоров Intel-архитектуры, направленных на поддержку многозадачности. 178

5.5.1 Сегментация памяти. IA-32. 178

5.5.2 Распределение памяти в реальном режиме. 180

5.5.3 Организация защиты в процессоре. 184

5.5.4 Поддержка многозадачности в процессорах архитектуры IA-32. 186


Введение

Операционная система 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 Speci­fication. 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 году, в ходе которого было добавлено множество новых возможностей, включая подстановку функций, новые типы данных, массивы переменной дли­ны, комментарии в стиле С++ и новые библиотечные функции.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: