Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700383.doc
Скачиваний:
15
Добавлен:
01.05.2022
Размер:
4.33 Mб
Скачать

Заключение

Учебное пособие рассматривает вопросы, изучаемые в рамках дисциплины «Системное программное обеспечение».

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

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

В пособии рассматриваются принципы разработки операционных систем и основы построения интерфейсов прикладного программирования.

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

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

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

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

  1. Гордеев А.В. Системное программное обеспечение / А.В. Гордеев, А.Ю. Молчанов. СПб.: Питер, 2002. 734 с.

  2. Гордеев А.В. Операционные системы: учебник для вузов / А.В. Гордеев. СПб.: Питер, 2009. 416 с.

  3. Молчанов А.Ю. Системное программное обеспечение: учебник для вузов / А.Ю. Молчанов. СПб.: Питер, 2006. 396 с.

  4. Назаров С.В. Операционные среды, системы и оболочки. Основы структурной и функциональной организации: учеб. пособие / С.В. Назаров. М.: Кудиц-пресс, 2007. 504 с.

  5. Назаров С.В. Операционные системы. Практикум / С.В. Назаров, Л.П. Гудыно, А.А. Кириченко. М.: Кудиц-пресс, 2008. 464 с.

  6. Танненбаум Э. Современные операционные системы / Э. Танненбаум. СПб.: Питер, 2007. 1038 с.

  7. Столингс В. Операционные системы / В. Столингс. М.: Вильямс, 2002. 848 с.

  8. Подвальный С.Л. Системное программное обеспечение: формальные языки и грамматики для построения трансляторов: учеб. пособие / С.Л. Подвальный, О.Б. Кремер, М.Ю. Сергеев. Воронеж: ВГТУ, 2008. 132 с.

  9. Кремер О.Б. Системное программное обеспечение: управление системными ресурсами: учеб. пособие / О.Б. Кремер, С.Л. Подвальный, М.Ю. Сергеев. Воронеж: ВГТУ, 2011. 148 с.

Оглавление

ВВЕДЕНИЕ 3

1. ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 4

1.1. Понятия прикладного и системного программного обеспечения 4

1.2. Состав системного программного обеспечения 5

2. СОСТАВ И АРХИТЕКТУРА ОПЕРАЦИОННЫХ СИСТЕМ 10

2.1. Состав операционных систем 10

2.2. Архитектура ОС 15

3. ПРОЦЕССЫ И ПОТОКИ 20

3.1. Концепция процессов и потоков 21

3.2. Многозадачность. Формы программной работы 25

3.3. Подсистема управления процессами и потоками 28

3.4. Роль процессов, потоков и волокон в многозадачности 30

3.5. Создание процессов 32

3.6. Потоки и их модели 38

3.7. Планирование и синхронизация процессов и потоков 43

3.7.1. Виды планирования 43

3.7.2. Алгоритмы планирования потоков 45

3.7.3. Алгоритмы приоритетного планирования 49

3.7.4. Взаимоисключения 53

3.7.5. Семафоры 57

3.7.6. Тупики 58

4. УПРАВЛЕНИЕ ПАМЯТЬЮ 62

4.1. Функции ОС по управлению памятью 62

4.2. Классификация методов распределения памяти 64

4.3. Распределение памяти без использования внешней 65

памяти 65

4.4. Методы структуризации виртуальной памяти 72

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

4.4.2. Сегментная организация виртуальной памяти 78

4.4.3. Странично-сегментная организация памяти 82

5. ФАЙЛОВЫЕ СИСТЕМЫ 84

5.1. Цели и задачи файловой системы 84

5.2. Организация файлов и доступ к ним 86

5.3. Логическая организация файла 90

5.4. Каталоговые системы 93

5.5. Основные возможности файловой системы NTFS 96

5.6. Структура тома с файловой системой NTFS 98

5.7. Возможности NTFS по ограничению доступа к файлам и каталогам 104

6. УПРАВЛЕНИЕ ВВОДОМ-ВЫВОДОМ 107

6.1. Физическая организация устройств ввода-вывода 108

6.2. Организация программного обеспечения ввода-вывода 109

6.3. Обработка прерываний 112

6.4. Драйверы устройств 113

6.5. Независимый от устройств слой ОС 114

6.6. Пользовательский слой программного обеспечения 115

7. ПОСТРОЕНИЕ ОПЕРАЦИОННЫХ СИСТЕМ 116

7.1. Принципы построения операционных систем 116

7.1.1. Принцип модульности 116

7.1.2. Принцип функциональной избирательности 117

7.1.3. Принцип генерируемости ОС 118

7.1.4. Принцип функциональной избыточности 119

7.1.5. Принцип виртуализации 120

7.1.6. Принцип независимости программ от внешних 122

устройств 122

7.1.7. Принцип совместимости 122

7.1.8. Принцип открытой и наращиваемой ОС 124

7.1.9. Принцип мобильности 124

7.1.10. Принцип обеспечения безопасности вычислений 125

7.2. Построение интерфейсов операционных систем 128

7.3. Интерфейс прикладного программирования 130

7.3.1. Реализация функций API на уровне ОС 132

7.3.2. Реализация функций API на уровне системы 133

программирования 133

7.3.3. Реализация функций API с помощью внешних 135

библиотек 135

7.4. Классификация системных вызовов 138

7.5. Интерфейс пользователя 143

7.6. Пользовательский интерфейс приложений 145

7.7. Архитектура, управляемая событиями 146

8. СЕМЕЙСТВО ОПЕРАЦИОННЫХ СИСТЕМ UNIX 148

8.1. Основные понятия системы UNIX 149

8.1.1. Виртуальная машина 149

8.1.2. Пользователь 150

8.1.3. Интерфейс пользователя 151

8.1.4. Привилегированный пользователь 152

8.1.5. Команды 153

8.1.6. Процессы 153

8.1.7. Выполнение процессов 154

8.1.8. Структура файловой системы 155

8.2. Операционная система Linux 157

9. ТРАНСЛЯТОРЫ 158

9.1. Основные принципы построения трансляторов, 158

компиляторов и интерпретаторов 158

9.1.1. Определение транслятора 158

9.1.2. Определение компилятора. Отличие компилятора от транслятора 160

9.1.3. Определение интерпретатора. Разница между 163

интерпретаторами и трансляторами 163

9.1.4. Этапы трансляции. Общая схема работы 165

транслятора 165

9.1.5. Понятие прохода. Многопроходные и однопроходные компиляторы 169

9.2. Таблицы идентификаторов. Организация таблиц идентификаторов 172

9.2.1. Назначение таблиц идентификаторов 172

9.2.2. Принципы организации таблиц идентификаторов 175

9.2.3. Простейшие методы построения таблиц 176

идентификаторов 176

9.2.4. Построение таблиц идентификаторов по методу 179

бинарного дерева 179

9.2.5. Хэш-функции и хэш-адресация 182

9.2.6. Хэш-адресация с рехэшированием 186

9.2.7. Хэш-адресация с использованием метода цепочек 189

9.2.8. Комбинированные способы построения таблиц 192

идентификаторов 192

9.3. Лексические анализаторы 194

9.3.1. Назначение лексического анализатора 194

9.3.2. Принципы построения лексических анализаторов 198

9.3.3. Определение границ лексем 198

9.3.4. Выполнение действий, связанных с лексемами 202

9.4. Формальные языки и грамматики 203

9.4.1. Первичные понятия 203

9.4.2. Примеры, иллюстрирующие первичные понятия 205

9.4.3. Типы формальных языков и грамматик 207

9.4.3.1. Грамматики типа 0 207

9.4.3.2. Грамматики типа 1 208

9.4.3.3. Грамматики типа 2 209

9.4.3.4. Грамматики типа 3 210

9.4.3.5. Вывод в КС-грамматиках и правила построения дерева вывода 211

9.4.3.6. Синтаксический разбор 212

9.4.3.7. Левый и правый выводы 213

9.4.3.8. Неоднозначные и эквивалентные грамматики 214

9.4.4. Способы задания схем грамматик 217

9.4.4.1. Форма Наура-Бэкуса 217

9.4.4.2. Итерационная форма 218

9.4.4.3. Синтаксические диаграммы 219

9.4.5. Построение грамматик и грамматики, описывающие основные конструкции языков программирования 223

9.4.5.1. Рекомендации по построению грамматик 223

9.4.5.2. Описание списков 224

9.4.5.3. Пример построения грамматик 226

9.4.5.4. Грамматики, описывающие целые числа без знака и идентификаторы 229

9.4.5.5. Грамматики для арифметических выражений 230

9.4.5.6. Грамматика для описаний 231

9.4.5.7. Грамматика, задающая последовательность операторов присваивания 232

9.4.5.8. Грамматики, описывающие условные операторы 232

и операторы цикла 232

9.4.5.9. Бесскобочные выражения 234

9.4.5.10. Префиксная польская запись 235

9.4.5.11. Вычисление префиксных польских записей 235

9.4.5.12. Постфиксная польская запись 236

9.4.5.13. Вычисление постфиксных записей 237

9.5. Конечные автоматы и регулярные грамматики 238

9.6. Макроязыки и макрогенерация 242

9.6.1. Определения макрокоманд и макрогенерации 242

9.6.2. Примеры макрокоманд 243

9.6.3. Макроязыки и препроцессоры 245

ЗАКЛЮЧЕНИЕ 249

БИБЛИОГРАФИЧЕСКИЙ СПИСОК 250

Учебное издание

Кремер Ольга Борисовна

Сергеев Михаил Юрьевич

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

В авторской редакции

Подписано к изданию 19.11.2012.

Объем данных 4,1 Мб

ФГБОУ ВПО «Воронежский государственный

технический университет»