Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС__Глава1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.32 Mб
Скачать

Глава 14. Генерация и оптимизация кода 588

Семантический анализ и подготовка к генерации кода 588

Назначение семантического анализа 588

Этапы семантического анализа 589

Идентификация лексических единиц языков программирования 594

Распределение памяти. Принципы распределения памяти 597

Дисплей памяти процедуры (функции). Стековая организация

дисплея памяти 603

Память для типов данных (RTTI-информация) 610

Генерация кода. Методы генерации кода 612

Общие принципы генерации кода.

Синтаксически управляемый перевод 612

Способы внутреннего представления программ 615

Обратная польская запись операций 619

Схемы СУ-перевода 622

Оптимизация кода. Основные методы оптимизации 630

Общие принципы оптимизации кода 630

Оптимизация линейных участков программы 634

Другие методы оптимизации программ 641

Машинно-зависимые методы оптимизации 648

Контрольные вопросы и задачи . 650

Вопросы 650

Задачи 652

Глава 15. Современные системы программирования 655

Понятие и структура системы программирования 655

История возникновения систем программирования 655

Структура современной системы программирования 658

Принципы функционирования систем программирования 660

Функции текстовых редакторов в системах программирования ....... 660

Компилятор как составная часть системы программирования 661

Компоновщик. Назначение и функции компоновщика 662

Загрузчики и отладчики. Функции загрузчика 663

Библиотеки подпрограмм как составная часть

систем программирования

Дополнительные возможности систем программирования 668

Лексический анализ «на лету». Система подсказок и справок ...... .668

Разработка программ в архитектуре «клиент—сервер» 669

Разработка программ в трехуровневой архитектуре.

Серверы приложений g7Q

Примеры современных систем программирования 672

Системы программирования компании Borland/Inprise .... 672

Системы программирования фирмы Microsoft 677

Системы программирования под ОС Linux и UNIX .682

Разработка программного обеспечения для сети Интернет 687

Контрольные вопросы и задачи 696

Вопросы

Задачи ' ' • • '..'.'. '.'•'. '.'. '.'. '.'.'. '.'.'.'.'.'. 698

Приложение А. Тексты программы параллельных

взаимодействующих задач 700

Приложение Б. Тексты программ комплекса параллельных

взаимодействующих приложений ! .... 709

Список литературы 719

Алфавитный указатель 725

Предисловие

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

Согласно Государственному образовательному стандарту, по которому ведется обучение студентов, поступивших в вузы до 2000 г., в рамках дисциплины «Сис­темное программное обеспечение», относящейся к обязательным специальным дисциплинам учебного плана по направлению «Информатика и вычислительная техника», студент должен изучить следующие обязательные разделы: «...назначе­ние, функции и структура операционной системы (ОС); понятие процесса; управление процессами, способы диспетчеризации процессов; понятие ресурса, виды ресурсов, управление ресурсами; управление памятью; устройства, виды устройств, драйверы устройств, устройства в MS-DOS; файловая система на диске, структура логического диска в MS-DOS; синхронизация процессов, семафо­ры, сообщения, использование семафоров для решения задач взаимоисключения и синхронизации; тупики, способы борьбы с тупиками; загрузка и настройка ОС, файлы конфигурирования MS-DOS, основные команды MS-DOS; обзор современ­ных ОС; трансляторы; формальные языки и грамматики, типы грамматик; вы­вод цепочек; конечный и магазинный автоматы, распознаватели и преобразова­тели, построение автомата по заданной грамматике; структура компиляторов и интерпретаторов, лексический, синтаксический и семантический анализаторы, генератор кода;распределение памяти, виды переменных; статическое и динами­ческое связывание; загрузчики; функции загрузчика; настраивающий и динамиче­ский загрузчики; подключение библиотек».

В новой редакции Государственного образовательного стандарта, который всту­пил в силу в 2000 г. и относится к поколению студентов, поступивших в вузы осенью 2000 г. и позже, несколько изменено основное содержание этой дисцип­лины. В частности, в стандарте записано, что в рамках дисциплины «Системное программное обеспечение» должны изучаться следующие обязательные разде­лы: «...пользовательский интерфейс операционной среды; управление задачами; управление памятью; управление вводом/выводом; управление файлами; пример современной операционной системы; программирование в операционной среде; ас­семблеры; мобильность программного обеспечения; макроязыки; трансляторы;

формальные языки и грамматики, типы грамматик; вывод цепочек; конечный и магазинный автоматы, распознаватели и преобразователи, построение автомата по заданной грамматике; структура компиляторов и интерпретаторов, лексиче­ский, синтаксический и семантический анализаторы, генератор кода;распределе­ние памяти, виды переменных; статическое и динамическое связывание; загрузчи­ки; функции загрузчика; настраивающий и динамический загрузчики; подключение библиотек».

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

Помимо общетеоретических вопросов в учебнике рассмотрены и отдельные прак­тические вопросы, описаны конкретные реализации различных системных про­грамм.

В первой части учебника, прежде всего, излагаются основные понятия ОС, прин­ципы их построения и функционирования. В последние годы практически по­всеместно ПК работают под управлением современных 32-битовых ОС, исполь­зующих аппаратные возможности микропроцессоров для создания и органи­зации эффективных и защищенных вычислений. Мы посчитали необходимым рассмотреть в первой части учебника эти вопросы.

Наиболее популярными ОС являются системы Windows 95/98, Windows NT 4.0, начинается переход к Windows ME и семейству ОС Windows 2000 компании Microsoft. По этим ОС имеется огромное количество самых разнообразных пуб­ликаций, в том числе и учебных материалов, объем которых порой очень велик. В то же время по остальным ОС публикаций существенно меньше. Поэтому

в первой части настоящего учебного пособия мы в качестве примеров операци­онных систем и сред кратко рассматриваем такие ОС, как OS/2 Warp, UNIX и Linux, QNX. Естественно, что отдельные вопросы иллюстрируются и на примере популярных ОС Windows 95/98 и Windows NT 4.0.

Во второй части учебника рассматриваются как общие вопросы, связанные с по-строением трансляторов, так и методы их практической реализации от примитив­ных распознавателей текста до законченных систем программирования. Практи­ческая реализация компиляторов и интерпретаторов рассматривается с точки зрения современных широко распространенных языков программирования вы­сокого уровня, таких как Pascal, С и C++.

Кратко рассматриваются также практические вопросы построения прикладных программ на основе архитектуры «клиент—сервер» и трехзвенной архитектуры, ориентированной на работу с серверами баз данных и серверами приложений. Эти вопросы затрагиваются не с точки зрения технологии их реализации (такие сведения можно найти в появившейся сейчас специализированной литературе) в той или иной ОС, а со стороны методов разработки соответствующих приклад­ных программ с помощью той или иной системы программирования. Для более детального знакомства с конкретными реализациями читатели могут воспользо­ваться приводимыми авторами ссылками на литературные источники или на со­ответствующие технические публикации в глобальной сети Интернет. Таким образом, данный учебник должен быть полезен не только тем, кто хочет детально изучить системное программное обеспечение, но и тем, кто собирается сам разработать отдельные компоненты, в том числе отдельные системные ути­литы, распознаватели и интерпретаторы команд, компоновщик или транслятор с некоторого языка, создать комплекс параллельно исполняющихся взаимодей­ствующих программ. В учебнике рассматриваются вопросы, которые полезно знать в любом случае, если разработчик прикладной программы имеет дело с не­которым входным языком (которым может быть далеко не только язык програм­мирования, но и любой другой язык команд, в том числе заданный пользовате­лем или определенный в некоторой прикладной области). Примеры систем программирования, которые рассматриваются в этом учебнике, предназначены для работы в среде перечисленных выше операционных систем. Фрагменты программ, приведенные в книге, написаны на языках программиро­вания высокого уровня Pascal и С.

В этом коротком предисловии мы, как авторы этой книги, хотим еще высказать самые теплые слова благодарности своим родным и близким за их долгое терпе­ние, доброжелательность и сердечную заботу в течение всего времени подборки материалов, написания книга и ее «бесконечного» улучшения, благодаря кото­рым только и мог появиться на свет этот труд, вынужденно оторвавший нас на некоторое время от домашних забот и хлопот. Хочется поблагодарить и Горде-ева В. А. за конструктивную критику и помощь в подготовке отдельных программ. Авторы признательны также сотрудникам издательства «Питер» Васильеву А. В. и Ваулиной Е. Ю. за их терпеливое и внимательное отношение в процессе подго­товки текста книги, его обработки и корректуры. Наше взаимное уважение и со­трудничество позволили довести учебный материал книги «до ума», хотя это и не всегда удавалось сделать в заранее оговоренные сроки.

От издательства

Ваши замечания, предложения, вопросы отправляйте по адресу электронной поч­ты comp@piter.com (издательство «Питер», компьютерная редакция). Мы будем рады узнать ваше мнение!

Подробную информацию о наших книгах вы найдете на Web-сайте издательства http://www.piter.com.

А