Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные системы. Учебное пособие-1

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
930 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное бюджетное образовательное учреждение

высшего образования

«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

А. А. Филиппов

ОПЕРАЦИОННЫЕ СИСТЕМЫ

Учебное пособие

Ульяновск

УлГТУ

2021

ÓÄÊ 004.451 (075.8) ÁÁÊ 32.973-018.2ÿ73

Ô53

Рецензенты:

Ведущий инженер-программист ФНПЦ АО «НПО «Марс», канд. техн. наук, Ю. А. Радионова

Зав. кафедрой «Вычислительная техника» УлГТУ, канд. техн. наук, доцент, К. В. Святов

Утверждено редакционно-издательским советом университета

в качестве учебного пособия

Филиппов, Алексей Александрович

Ф53 Операционные системы : учебное пособие / А.А. Филиппов.— Ульяновск : УлГТУ, 2021. — 100 с.

ISBN 978-5-9795-2129-9

Учебное пособие по курсу «Операционные системы» содержит основные сведения, необходимые для понимания концепций, принципов, алгоритмов, структур и моделей, положенных в основу современных операционных систем. Особое внимание уделяется изучению абстракций операционных систем: процессы, потоки, виртуальная память, файл, ввод/вывод и т. д.

Для студентов вузов, обучающихся по направлениям «Программная инженерия», «Прикладная информатика (в экономике)» и другим, применяющим ЭВМ и современные операционные системы в своей деятельности.

Подготовлено на кафедре «Информационные системы».

ÓÄÊ 004.451 (075.8) ÁÁÊ 32.973-018.2ÿ73

 

© Филиппов А.А., 2021

ISBN 978-5-9795-2129-9

© Оформление. УлГТУ, 2021

ОГЛАВЛЕНИЕ

 

Введение

6

1 Введение в операционные системы

7

1.1Операционная система как расширенная машина . . 8 1.1.1 Системные вызовы . . . . . . . . . . . . . . . . . 9

1.2Операционная система как менеджер ресурсов . . . . 10

1.3История развития операционных систем . . . . . . . . 12

1.4

Классы операционных систем . . . . . . . . . . . . . .

14

1.5

Структура ядра операционной системы . . . . . . . . .

16

 

1.5.1 Монолитные системы . . . . . . . . . . . . . . .

16

1.5.2 Микроядерные системы . . . . . . . . . . . . . . 17

1.6Контрольные вопросы . . . . . . . . . . . . . . . . . . . 18

2 Процессы и потоки

19

2.1

Модель процесса . . . . . . . . . . . . . . . . . . . . . .

20

2.2

Модель потока . . . . . . . . . . . . . . . . . . . . . . . .

24

2.3

Реализация многопоточности . . . . . . . . . . . . . .

27

2.4

Планирование процессов . . . . . . . . . . . . . . . . .

28

 

2.4.1

Планирование пакетных систем . . . . . . . . .

29

 

2.4.2

Планирование интерактивных систем . . . . .

30

2.4.3 Планирование систем реального времени . . . 32

2.5Планирование потоков . . . . . . . . . . . . . . . . . . . 33

2.6

Контрольные вопросы . . . . . . . . . . . . . . . . . . .

33

3 Управление памятью

35

3.1

Абстракции для работы с оперативной памятью . . .

37

 

3.1.1

Прямой доступ к памяти . . . . . . . . . . . . .

37

 

3.1.2

Выделение свободной памяти . . . . . . . . . .

39

 

3.1.3

Алгоритмы поиска свободного блока памяти .

41

3.1.4Проблема нехватки физической памяти . . . . 41

3.1.5Внутренняя и внешняя фрагментация . . . . . 42

3.1.6

Адресное пространство . . . . . . . . . . . . . .

43

3.1.7

Свопинг . . . . . . . . . . . . . . . . . . . . . . .

44

3.1.8

Базовый и ограничительный регистры . . . . .

44

3.1.9

Страничная организация виртуальной памяти

47

3.1.10 Сегментная и сегментно-страничная органи-

 

 

зация виртуальной памяти . . . . . . . . . . . .

51

3

3.2 Алгоритмы замещения страниц . . . . . . . . . . . . .

52

3.2.1

Оптимальный алгоритм . . . . . . . . . . . . . .

53

3.2.2

Алгоритм FIFO . . . . . . . . . . . . . . . . . . .

53

3.2.3Алгоритм «Второй шанс» . . . . . . . . . . . . . 54

3.2.4Алгоритм LRU . . . . . . . . . . . . . . . . . . . . 54

3.2.5

Алгоритм NRU

. . . . . . . . . . . . . . . . . . .

54

3.2.6

Алгоритм часы

. . . . . . . . . . . . . . . . . . .

55

3.2.7Рабочий набор . . . . . . . . . . . . . . . . . . . . 55

3.2.8Алгоритм WSClock . . . . . . . . . . . . . . . . . 55

3.2.9Алгоритм Page Fault Frequency . . . . . . . . . . 56

3.2.10Пробуксовка . . . . . . . . . . . . . . . . . . . . . 56

3.3 Контрольные вопросы . . . . . . . . . . . . . . . . . . .

57

4 Файловые системы

58

4.1Файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

4.2Каталоги . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.3Адресация . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.4Таблица разделов . . . . . . . . . . . . . . . . . . . . . . 63

4.5Файловая система . . . . . . . . . . . . . . . . . . . . . . 64

4.5.1

Типы файловых систем . . . . . . . . . . . . . .

65

4.5.2 Методы расположения информации в файлах .

67

4.5.3

Отслеживание свободных кластеров . . . . . .

70

4.5.4

Реализация каталогов . . . . . . . . . . . . . . .

71

4.5.5

Непротиворечивость файловой системы . . . .

72

4.6 Контрольные вопросы . . . . . . . . . . . . . . . . . . .

74

5 Ввод и вывод информации

75

5.1 Аппаратное обеспечение ввода-вывода . . . . . . . . .

76

5.1.1

Контроллер устройства . . . . . . . . . . . . . .

76

5.1.2

Работа с контроллером . . . . . . . . . . . . . .

76

5.2Прерывания . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.2.1Вектор прерываний . . . . . . . . . . . . . . . . . 79

5.2.2Виды прерываний . . . . . . . . . . . . . . . . . . 80

5.2.3Осуществление операций ввода-вывода . . . . . 80

5.3Программное обеспечение ввода-вывода . . . . . . . . 82

5.3.1Задачи программного обеспечения ввода-

вывода . . . . . . . . . . . . . . . . . . . . . . . . 83

5.3.2 Уровни программного обеспечения ввода-

 

вывода . . . . . . . . . . . . . . . . . . . . . . . .

83

5.4 Контрольные вопросы . . . . . . . . . . . . . . . . . . .

87

6 Состязательные и тупиковые ситуации

88

6.1Состязательные ситуации . . . . . . . . . . . . . . . . . 88 6.1.1 Механизмы решения проблемы возникнове-

ния состязательных ситуаций . . . . . . . . . . 90

6.2Тупиковые ситуации . . . . . . . . . . . . . . . . . . . . 92 6.2.1 Методы борьбы с взаимоблокировками . . . . . 93

6.3Контрольные вопросы . . . . . . . . . . . . . . . . . . . 98

Заключение

99

Библиографический список

100

ВВЕДЕНИЕ

Âпроцессе разработки любой программной системы возникает необходимость построения ее архитектуры в процессе разработки, либо понимание архитектуры уже существующей программной системы необходимо для поддержания ее жизнеспособности. Многие современные подходы к разработке сложных промышленных программных систем требуют от разработчика умения оперировать абстракциями различного уровня.

Âданном учебном пособии содержится материал, используя который можно приступить к изучению базовых абстракций, положенных в основу современных операционных систем:

1.Процессы и потоки.

2.Виртуальная память.

3.Файлы и каталоги.

4.Ввод/вывод.

5.Системные вызовы.

Конечно, материал учебного пособия не раскрывает все тон-

кости архитектуры современных операционных систем. В частности, не рассмотрены детально операционные системы семейства Windows NT, GNU/Linux, BSD и т. д. Для получения дополнительной информации следует обращаться к литературе из предложенного списка.

6

1ВВЕДЕНИЕ В ОПЕРАЦИОННЫЕ СИСТЕМЫ

Âразличных источниках очень сложно найти устоявшееся определение понятия операционная система. Исследователи

èспециалисты в данной области рассматривают операционную систему с различных позиций:

как библиотеку функций, которые можно использовать при разработке прикладных программ,

в виде набора различных абстракций над аппаратным обеспечением вычислительной системы,

как средство для организации взаимодействия между пользователем и программным обеспечением,

как систему, распределяющую и управляющую ресурсами вычислительной системы и т. д.

На рисунке 1.1 обозначается место операционной системы в

вычислительной системе – между программным (прикладным) и аппаратным обеспечением.

Рис. 1.1. Место операционной системы в вычислительной системе

Как видно из рисунка 1.1 операционная система выполняется в пространстве ядра, а прикладное программное обеспече- ние — в пространстве пользователя. Данные пространства реализуются на уровне режимов работы центрального процессора.

Под пространством ядра обычно понимается такая область памяти, в которой выполняется ядро операционной системы (память ядра). Программа, работающая в пространстве ядра, имеет полный доступ к оперативной памяти и устройствам вводавывода. Прикладное программное обеспечение обычно выполняется в пространстве пользователя и имеет ограниченные возможности по работе с памятью и устройствами ввода-вывода. Для взаимодействия с устройствами ввода-вывода из пространства пользователя применяются системные вызовы.

7

Глава 1. Введение в операционные системы

В рамках данного пособия операционная система будет рассмотрена с двух позиций [1]:

1.Операционная система как расширенная машина.

2.Операционная система как менеджер ресурсов.

1.1Операционная система как расширенная машина

Операционная система как расширенная машина предоставляет программному обеспечению набор абстракций для работы с составными частями вычислительной системы: центральный процессор, оперативная память, постоянная память, различные устройства ввода-вывода.

В данном случае под абстракцией понимается некоторая «надстройка» над сложной сущностью, которая позволяет скрыть сложность и облегчить работу с такой сущностью. Например, абстракцией является водопровод, электрическая сеть, локальная вычислительная сеть и т. д. Также различные абстракции активно используются при разработке программного обеспечения. Самым главным условием при разработке абстракций является максимальная простота полученного решения — абстракция не должна быть сложнее или равной по сложности той сущности, над которой она формируется.

К абстракциям, предоставляемым операционной системой в рамках функции операционная система как расширенная машина, можно отнести процессы и потоки (см. главу 2), виртуальную память (см. главу 3), файловые системы (см. главу 4), ввод-вывод данных (см. главу 5) и системные вызовы.

Для лучшего понимания функции операционная система как расширенная машина обратимся к рисунку 1.2.

Как видно из рисунка 1.2, вычислительная система содержит в своем составе следующие устройства: HDD1, HDD2, SSD, Printer. Для работы с аппаратным обеспечением программное обеспечение обращается к операционной системе. Организация взаимодействия между операционной системой и устройствами осуществляется с помощью соответствующих драйверов: Driver1, Driver2, Driver3 и Driver4. При этом для вызова функций драйверов Driver1, Driver2 и Driver3 операционная система использует единый набор команд.

8

1.1. Операционная система как расширенная машина

Рис. 1.2. Операционная система как расширенная машина

Драйверы используются для связи высокоуровневого программного интерфейса, реализованного в рамках операционной системы для работы с устройствами одного типа: устройства хранения, сетевые устройства, устройства печати и т. д., и низкоуровневыми интерфейсами контроллера устройств ввода-вывода. Фактически, высокоуровневую часть драйвера устройства можно рассматривать в качестве интерфейса в рамках парадигмы объектноориентированного программирования, а остальную часть драйвера — в качестве реализации такого интерфейса. Более подробно работа с устройствами ввода-вывода представлена в главе 5.

Таким образом, при смене оборудования разработчику прикладного программного обеспечения не требуется вносить изменения в программный код, разбираться в тонкостях работы конкретного устройства ввода-вывода и принципах работы с его контроллером. Вместо этого, для взаимодействия с устройствами различного типа используется единообразный набор методов.

1.1.1Системные вызовы

Системный вызов (System call) — обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции.

9

Глава 1. Введение в операционные системы

Так как прикладное программное обеспечение выполняется в пространстве пользователя, для выполнения межпроцессных операций или операций, требующих доступа к оборудованию, необходимо обратиться к ядру операционной системы. Ядро операционной системы выполняется в пространстве ядра и имеет полный доступ к оперативной памяти и устройствам ввода-вывода. В зависимости от полномочий запущенного экземпляра программы, которая производит обращение к системному вызову, ядро исполняет данный вызов либо отказывает в исполнении.

С точки зрения программиста, системный вызов обычно выглядит как обращение к методам системной библиотеки, но требует наличия определенных привилегий и приводит к переключе- нию контекста исполнения запущенного экземпляра программы. Контекст исполнения и процесс смены контекста исполнения рассмотрены в главе 2.

Каждый системный вызов имеет уникальный идентификатор. Для обращения к конкретному системному вызову необходимо поместить номер этого системного вызова в определенный регистр центрального процессора. Аргументы для выполнения системного вызова можно передавать через регистры центрального процессора либо передавать указатель на некоторую область памяти, которая содержит необходимые аргументы, или указатель на стек. Указатель позволяет передавать в качестве аргумента различные типы и объемы данных, а не ограничиваться размером и количеством регистров центрального процессора. Однако, передача указателя является более дорогостоящей операцией по сравнению с использованием регистров.

1.2Операционная система как менеджер ресурсов

Операционная система как менеджер ресурсов управляет распределением ресурсов вычислительной системы между множеством запущенных экземпляров программного обеспечения и делает это прозрачно для пользователя и разработчика.

Операционная система распределяет ресурсы вычислительной системы во времени и в пространстве.

К временным ресурсам относятся ресурсы центрального процессора — процессорное время. Фактически, операционная систе-

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]