Бек Л. 12 Введение в системное программирование: Пер. с англ.—' М.: Мир, 1988. — 448 с, ил. ISBN 5-03-000011-9 Монография учебного характера, написанная американским специалистом. В ней изложены все основные компоненты системного программного обеспечения. Особое внимание уделено их взаимосвязи с архитектурой вычислительных комплексов. Конкретные реализации компонентов обсуждаются на примере трех современных вычислительных систем: IBM/370, VAX, CYBER. Для системных программистов, аспирантов, студентов вузов.
От редактора перевода
Предлагаемая вниманию читателей книга может рассматриваться как учебное пособие по курсу «Системное программирование». Ее несомненное достоинство — хорошо продуманная методика представления материала и разумный компромисс между детальностью изложения конкретных элементов системного программного обеспечения и общими сведениями об основных концепциях, принятых при создании этих элементов. Эта методика автора заключается в следующем: сначала рассматриваются машинно-независимые характеристики того или иного компонента базового программного обеспечения, затем следует изложение того, как реализованы эти компоненты на конкретных ЭВМ. В качестве таких ЭВМ автор выбрал очень непохожие друг на друга: System/370, VAX и CYBER. Примеры системных программ приводятся для двух выдуманных автором упрощенных учебных машин, которые по своей структуре очень близки к современным микропроцессорам. Это дает возможность читателю достаточно детально понять, как программируются отдельные компоненты, одновременно не теряя из виду общей картины взаимосвязи компонентов системного программного обеспечения; в то же время он получает информацию о том, как все это реализовано на настоящих машинах. В отличие от ряда других переводных изданий данная книга не ориентирована на какой-то определенный класс машин и кон- . кретный состав программного обеспечения, а дает более широкое представление о характеристиках и свойствах системных
программ.
Следует отметить умение автора просто и понятно рассказать о принципах реализации таких сложных элементов компиляторов, как рекурсивные процедуры, окна видимости данных, машинно-независимая и машинно-зависимая оптимизации генерируемого объектного кода, о построении повторно входи-мых процедур.
Из общего стиля изложения несколько выпадает гл. 7, в основном содержащая перечень требований, которым должны удовлетворять такие важные компоненты, как управление базами данных, текстовые редакторы, системы интерактивной отладки.
Автор иногда отступает от общепринятой терминологии и вводит свои термины, Например, им введен термин «целевой
Оглавление
От редактора перевода ................... 5
Предисловие........................7
Глава 1. Основные понятия.................11
1.1. Введение....................11
1.2. Системное программное обеспечение и структура ЭВМ . . 12
1.3. Упрощенная учебная машина (УУМ).......... 14
1.3.1. Структура УУМ................ 15
1.3.2. Структура УУМ/ДС.............. 17
1.4. Структура System/370............... 21
1.5. Структура ЭВМ VAX................ 28
1.6. Структура ЭВМ CYBER............... 33
Глава 2. Ассемблеры ....................38
2.1. Основные функции ассемблера...........39
2.1.1. Простой ассемблер для УУМ..........41
2.1.2. Таблицы и алгоритмы ассемблера.........45
2.2. Машинно-зависимые характеристики ассемблера.....49
2.2.1. Форматы команд и способы адресации......52
2.2.2. Перемещение программ.............57
2.3. Машинно-независимые характеристики ассемблера .... 62
2.3.1. Литералы .................. 62
2.3.2. Средства определения имей........... 68
2.3.3. Выражения ................. 72
2.3.4. Программные блоки.............. 75
2.3.5. Управляющие секции и связывание программ .... 82
2.4. Варианты построения ассемблеров........... 91
2.4.1. Двухпросмотровый ассемблер с оверлейной структурой 91
2.4.2. Однопросмотровые ассемблеры.......... 93
2.4.3. Многопросмотровые ассемблеры......... 99
2.5. Примеры реализации................ 103
2.5.1. Ассемблер System/370............. 103
2.5.2 Ассемблер ЭВМ VAX.............. 108
2.5.3. Ассемблер ЭВМ CYBER............ Ill
Упражнения .....................116
Глава 3. Загрузчики и программы связывания..........122
3.1. Основные функции загрузчика............123
3.2. Машинно-зависимые свойства загрузчиков.......126
3.2.1. Перемещение.................127
3.2.2 Связывание программ............. 132
3.2.3. Таблицы и алгоритмы связывающего загрузчика . .139
3.3. Машинно-независимые свойства загрузчиков.......144
3.3.1. Автоматический поиск в библиотеках.......145
3.3.2. Управление процессом загрузки.........146
3.3.3. Оверлейная структура программ.........149
3.4. Варианты построения загрузчиков........... 156
3.4.1. Редакторы связей ............... 156
3.4.2. Динамическое связывание............ 160
3.4.3. Раскручивающие загрузчики ........... 163
3.5. Примеры реализации................ 164
3.5.1. Редактор связей System/370.......... 165
3.5.2. Программа связывания ЭВМ VAX ... ..... 168
3.5.3. Загрузчик ЭВМ CYBER............ 172
Упражнения..................... 174
Глава 4. Макропроцессоры..................178
4.1. Основные функции макропроцессоров......... 179
4.1.1. Макроопределения и микрорасширения......179
4.1.2. Макропроцессор. Таблицы и логика........183
4.2. Машинно-независимые особенности макропроцессора . . . 189
4.2.1. Конкатенация макропараметров.........189
4.2.2. Генерация уникальных меток..........190
4.2.3. Условные макрорасширения...........192
4.2.4. Ключевые макропар'аметры...........198
4.3. Варианты построения макропроцессоров........201
,4.3.1. Рекурсивная макрогенерация..........203
4.3.2. Макропроцессоры общего назначения.......204
4.3.3. Макропроцессоры, встроенные в трансляторы .... 206
4.4. Примеры реализации................209
4.4.1. Макропроцессор System/370...........209
4.4.2. Макропроцессор системы VAX..........213
4.4.3. Макропроцессор общего назначения РМ......215
Упражнения .....................218
Глава 5. Компиляторы ...................222
5.1. Основные функции компилятора...........222
5.1.1. Грамматики.................224
5.1.2. Лексический анализ..............231
5.1.3. Синтаксический анализ.............235
5.1.4. Генерация кода................251
5.2. Машинно-зависимые особенности компиляторов.....263
5.2.1. Промежуточная форма представления программы . . 264
5.2.2. Машинно-зависимая оптимизация кода.......266
5.3. Машинно-независимые особенности компиляторов ..... 270
5.3.1. Распределение памяти.............270
5.3.2. Структурированные переменные.........276
5.3.3. Машинно-независимая оптимизация кода......280
5.3.4. Блочно-структурированные языки.........287
5.4. Варианты построения компиляторов..........292
5.4.1. Разбиение на отдельные просмотры........292
5.4.2. Интерпретаторы................294
5.4.3. Компиляторы на Р-код.............296
5.4.4. Компиляторы компиляторов...........297
5.5. Примеры реализации................ 299
5.5.1. Компилятор ETH Pascal............299
5.5.2. Компилятор UCSD Pascal ...........302
5.5.3. Компилятор Fortran H фирмы IBM........303
5.5.4. Компилятор компиляторов YACC.........305
Упражнения .....................308
Глава 6. Операционные системы................312
6.1. Основные функции операционных систем ..,.-... 312 6.1.1, Типы операционных систем....... .... 314
6.1.2. Интерфейс пользователя............316
6.1.3. Операционное окружение............317
6.2. Машинно-зависимые свойства операционных систем . . . .319
6.2.1. Обработка прерываний.............320
6.2.2. Планирование процессов............328
6.2.3. Обслуживание ввода-вывода...........332
6.2.4. Управление реальной памятью..........343
6.2.5. Управление виртуальной памятью........351
6.3. Машинно-независимые свойства операционных систем . .361
6.3.1. Работа с файлами..............362
6.3.2. Планирование заданий.............365
6.3.3. Распределение ресурсов.............369
6.3.4. Защита...................374
6.4. Способы построения операционных систем.......377 .
6.4.1. Иерархическая структура............377
6.4.2. Виртуальные машины.............380
6.4.3. Мультипроцессорные системы..........383
6.5. Примеры реализаций.................386
6.5.1. Система UCSD Pascal............. 386
6.5.2. UNIX....................338
6.5.3. NOS ....................390
6.5.4. VAX/VMS ..................391
6.5.5. VM/370.................. . 393
Упражнения ......................395
Глава 7. Другие компоненты системного программного обеспечения . . 3S9
7.1. Системы управления базами данных..........399
7.1.1. Основные концепции СУБД........... 400
7.1.2. Уровни описания данных............ 404
7.1.3. Использование СУБД.............408
7.2. Текстовые редакторы................411
7.2.1. Описание процесса редактирования........ 412
7.2.2. Интерфейс пользователя............ 413
7.2.3. Структура редактора .............. 417
7.3. Системы интерактивной отладки........... 423
7.3.1. Функции и возможности отладчиков .......424
7.3.2. Взаимодействие с другими элементами системы . . . 427 7.3 3. Требования, предъявляемые к интерфейсу пользователя 428
Приложения..................... 430
Приложение А. Система команд и способы адресации УУМ/ДС 43Э
Приложение Б. Таблица символов кода ASCII.....434
Приложение В. Справочный материал по УУМ/ДС .... 435
Литература .....................437
Предметный указатель................440


Hosted by uCoz