Файл: А. В. Гордеев А. Ю. Молчанов системное программное обеспечение электронный вариант книги издательства Питер СанктПетербург Челябинск юургу каф. Автоматика и управление 2002 2 Предисловие Настоящий учебник.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 1055
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
А.В.Гордеев
А.Ю.Молчанов
СИСТЕМНОЕ ПРОГРАММНОЕ
ОБЕСПЕЧЕНИЕ
Электронный вариант книги издательства
«Питер»
Санкт–Петербург
Челябинск
ЮУрГУ
Каф. Автоматика и управление
2002
2
Предисловие
Настоящий учебник предназначается в первую очередь студентам техниче- ских вузов, хотя может быть востребован и обычными подготовленными пользова- телями, желающими углубить свои познания в области системного программного обеспечения.
Согласно Государственному образовательному стандарту, по которому ведёт- ся обучение студентов, поступивших в вузы до 2000 г., в рамках дисциплины «Сис- темное программное обеспечение», относящейся к обязательным специальным дисциплинам учебного плана по направлению «Информатика и вычислительная техника», студент должен изучить следующие обязательные разделы: «…назначе-
ние, функции и структура операционной системы (ОС); понятие процесса; управ-
ление процессами, способы диспетчеризации процессов; понятие ресурса, виды ре-
сурсов, управление ресурсами; управление памятью; устройства, виды устройств,
драйверы устройств, устройства в MS-DOS; файловая система на диске, струк-
тура логического диска в MS-DOS; синхронизация процессов, семафоры, сообще-
ния, использование семафоров для решения задач взаимоисключения и синхрониза-
ции; тупики, способы борьбы с тупиками; загрузка и настройка ОС, файлы кон-
фигурирования MS-DOS, основное команды MS-DOS; обзор современных ОС;
трансляторы; формальные языки и грамматики, типы грамматик; вывод цепо-
чек; конечный и магазинный автоматы, распознаватели и преобразователи, по-
строение автомата по заданной грамматике; структура компиляторов и интер-
претаторов, лексический, синтаксический и семантический анализаторы, генера-
тор кода; распределение памяти, виды переменных; статическое и динамическое
связывание; загрузчики; функции загрузчика; настраивающий и динамический за-
грузчики; подключение библиотек».
В новой редакции Государственного образовательного стандарта, который вступил в силу в 2000 г. и относится к поколению студентов, поступивших в вузы осенью 2000 г. и позже, несколько изменено основное содержание этой дисцип- лины. В частности, в стандарте записано, что в рамках дисциплины «Системное программное обеспечение» должны изучаться следующие обязательные разделы:
3
«...пользовательский интерфейс операционной среды; управление задачами; управ-
ление памятью; управление вводом/выводом; управление файлами; пример совре-
менной операционной системы; программирование в операционной среде; ас-
семблеры; мобильность программного обеспечения; макроязыки; трансляторы;
формальные языки и грамматики, типы грамматик; вывод цепочек; конечный и
магазинный автоматы, распознаватели и преобразователи, построение автома-
та по заданной грамматике; структура компиляторов и интерпретаторов, лек-
сический, синтаксический и семантический анализаторы, генератор кода; распре-
деление памяти, виды переменных; статическое и динамическое связывание; за-
грузчики; функции загрузчика; настраивающий и динамический загрузчики; под-
ключение библиотек».
Таким образом, мы можем констатировать, что в основном в дисциплине
«Системное программное обеспечение» должно уделяться внимание операцион- ным системам, средам и системам программирования. Именно в таком ключе в ос- новном и строится настоящий учебник, поскольку предполагается, что его читате- лями, прежде всего, будут студенты, обучающиеся по специальностям, относя- щимся к направлению «Информатика и вычислительная техника». Учебный мате- риал, ставший основой для настоящего учебника, уже в течение нескольких лет изучается студентами специальности 22.01.00 в Санкт-Петербургском государст- венном университете аэрокосмического приборостроения. Другими словами, по су- ществу, в основу учебника лег расширенный конспект лекций по дисциплине
«Системное программное обеспечение». Эта дисциплина изучается в течение двух семестров. В первом семестре рассматриваются операционные системы (принципы их построения и функционирования, вопросы создания параллельных взаимо- действующих задач, выполняющихся в мультизадачных операционных системах),
а во втором – формальные грамматики, трансляторы и системы программирования.
Поэтому книга разбита на две крупные части. Эти две части связаны между собой не потому, что так построен план изучения дисциплины. Материал, рассматривае- мый в каждой из частей учебника, тесно связан с вопросами, изучаемыми в другой её части. Таким образом, детальное изучение материала любой части книги требу-
4
ет, по крайней мере, знакомства с основными понятиями всего учебника. Так, на- пример, изучение структуры и технических аспектов работы компиляторов невоз- можно без знания принципов распределения памяти, которые относятся к вопросам построения операционных систем. Именно поэтому эти два крупных раздела объе- динены авторами в одну книгу и совместно представляются вниманию читателей.
Помимо общетеоретических вопросов в учебнике рассмотрены и отдельные практические вопросы, описаны конкретные реализации различных системных программ.
В первой части учебника, прежде всего, излагаются основные понятия ОС,
принципы их построения и функционирования. В последние годы практически по- всеместно ПК работают под управлением современных 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++.
5
Кратко рассматриваются также практические вопросы построения приклад- ных программ на основе архитектуры «клиент–сервер» и трехзвенной архитекту- ры, ориентированной на работу с серверами баз данных и серверами приложений.
Эти вопросы затрагиваются не с точки зрения технологии их реализации (такие сведения можно найти в появившейся сейчас специализированной литературе) в той или иной ОС, а со стороны методов разработки соответствующих прикладных программ с помощью той или иной системы программирования. Для более деталь- ного знакомства с конкретными реализациями читатели могут воспользоваться приводимыми авторами ссылками на литературные источники или на соответст- вующие технические публикации в глобальной сети Интернет.
Таким образом, данный учебник должен быть полезен не только тем, кто хо- чет детально изучить системное программное обеспечение, но и тем, кто собирает- ся сам разработать отдельные компоненты, в том числе отдельные системные ути- литы, распознаватели и интерпретаторы команд, компоновщик или транслятор с некоторого языка, создать комплекс параллельно исполняющихся взаимодейст- вующих программ. В учебнике рассматриваются вопросы, которые полезно знать в любом случае, если разработчик прикладной программы имеет дело с некоторым входным языком (которым может быть далеко не только язык программирования,
но и любой другой язык команд, в том числе заданный пользователем или опреде- ленный в некоторой прикладной области).
Примеры систем программирования, которые рассматриваются в этом учеб- нике, предназначены для работы в среде перечисленных выше операционных сис- тем. Фрагменты программ, приведенные в книге, написаны на языках программи- рования высокого уровня Pascal и С.
В этом коротком предисловии мы, как авторы этой книги, хотим ещё выска- зать самые теплые слова благодарности своим родным и близким за их долгое тер- пение, доброжелательность и сердечную заботу в течение всего времени подборки материалов, написания книги и её «бесконечного» улучшения, благодаря которым только и мог появиться на свет этот труд, вынужденно оторвавший нас на некото- рое время от домашних забот и хлопот. Хочется поблагодарить и Гордеева В. А. за
6
конструктивную критику и помощь в подготовке отдельных программ. Авторы признательны также сотрудникам издательства «Питер» Васильеву А. В. и Ваули- ной Е. Ю. за их терпеливое и внимательное отношение в процессе подготовки тек- ста книги, его обработки и корректуры. Наше взаимное уважение и сотрудничество позволили довести учебный материал книги «до ума», хотя это и не всегда удава- лось сделать в заранее оговоренные сроки.
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу электронной почты comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
Подробную информацию о наших книгах вы найдете на Web-сайте издатель- ства http://www.piter.com.
Часть 1
Операционные системы и среды
В англоязычной технической литературе термин System Software (системное программное обеспечение) означает программы и комплексы программ, являю- щиеся общими для всех, кто совместно использует технические средства компью- тера, и применяемые как для автоматизации разработки (создания) новых про- грамм, так и для организации выполнения программ уже существующих. С этой точки зрения программное обеспечение может быть разделено на следующие пять групп:
1 Операционные системы (ОС).
2 Системы управления файлами (СУФ).
3 Интерфейсные оболочки для взаимодействия пользователя с ОС и про- граммные среды.
4 Системы программирования.
5 Утилиты.
Рассмотрим вкратце эти группы системных программ.
7 1 Под операционной системой (ОС) обычно понимают комплекс управляю- щих и обрабатывающих программ, который, с одной стороны, выступает как ин- терфейс между аппаратурой компьютера и пользователем с его задачами, а с дру- гой – предназначен для наиболее эффективного использования ресурсов вычисли- тельной системы и организации надёжных вычислений. Любой из компонентов прикладного программного обеспечения обязательно работает под управлением
ОС. На рис.1 изображена обобщённая структура программного обеспечения вы- числительной системы.
Рис.1 Обобщённая структура программного обеспечения вычислительной системы
8
Видно, что ни один из компонентов программного обеспечения, за исключе- нием самой ОС, не имеет непосредственного доступа к аппаратуре компьютера.
Даже пользователи взаимодействуют со своими программами через интерфейс ОС.
Любые их команды, прежде чем попасть в прикладную программу, сначала прохо- дят через ОС.
Основными функциями, которые выполняют ОС, являются следующие:
♦приём от пользователя (или от оператора системы) заданий или команд,
сформулированных на соответствующем языке – в виде директив (команд) опера- тора или в виде указаний (своеобразных команд) с помощью соответствующего манипулятора (например, с помощью «мыши»), – и их обработка;
♦приём исполнение программных запросов на запуск, приостановку, оста- новку других программ;
♦загрузка в оперативную память подлежащих исполнению программ;
♦инициация программы (передача ей управления, в результате чего процессор исполняет программу);
♦идентификация всех программ и данных;
♦обеспечение работы систем управления файлами (СУФ) и/или системы управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения;
♦обеспечение режима мультипрограммирования, то есть выполнения двух или более программ на одном процессоре, создающее видимость их одновремен- ного исполнения;
♦обеспечение функций по организации и управлению всеми операциями вво- да/вывода;
♦удовлетворение жёстким ограничениям на время ответа в режиме реального времени (характерно для соответствующих ОС);
♦распределение памяти, а в большинстве современных систем и организация виртуальной памяти;
♦планирование и диспетчеризация задач в соответствии с заданными страте- гией и дисциплинами обслуживания;
9
♦организация механизмов обмена сообщениями и данными между выпол- няющимися программами;
♦защита одной программы от влияния другой; обеспечение сохранности дан- ных;
♦предоставление услуг на случай частичного сбоя системы;
♦обеспечение работы систем программирования, с помощью которых пользо- ватели готовят свои программы.
2 Назначение системы управления файлами – организация более удобного доступа к данным, организованным как файлы. Именно благодаря системе управ- ления файлами вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной нам записи используется логический доступ с указа- нием имени файла и записи в нём. Как правило, все современные ОС имеют соот- ветствующие системы управления файлами. Однако выделение этого вида систем- ного программного обеспечения в отдельную категорию представляется целесооб- разным, поскольку ряд ОС позволяет работать с несколькими файловыми система- ми (либо с одной из нескольких, либо сразу с несколькими одновременно). В этом случае говорят о монтируемых файловых системах (дополнительную систему управления файлами можно установить), и в этом смысле они самостоятельны. Бо- лее того, можно назвать примеры простейших ОС, которые могут работать и без файловых систем, а значит, им необязательно иметь систему управления файлами,
либо они могут работать с одной из выбранных систем. Надо, однако, понимать,
что любая система управления файлами (СУФ) не существует сама по себе –
она разработана для работы в конкретной ОС и с конкретной файловой сис-
темой. Можно сказать, что всем известная файловая система FAT (file allocation table)
1
имеет множество реализаций как система управления файлами, например,
FAT-16 для самой MS-DOS, super-FAT для OS/2, FAT для Windows NT и т. д. Дру- гими словами, для работы с файлами, организованными в соответствии с некото- рой файловой системой, для каждой ОС должна быть разработана соответствую-
1
Здесь и далее без указания на источник заимствования приводятся английские эквиваленты слов и словосочетаний
10
щая система управления файлами; и эта система управления файлами будет рабо- тать только в той ОС, для которой она и создана.
Для удобства взаимодействия с ОС могут использоваться дополнительные интерфейсные оболочки. Их основное назначение – либо расширить возможности по управлению ОС, либо изменить встроенные в систему возможности. В качестве классических примеров интерфейсных оболочек и соответствующих операцион- ных сред выполнения программ можно назвать различные варианты графического интерфейса X Window в системах семейства UNIX (например, K Desktop
Environment в Linux), PM Shell или Object Desktop в OS/2 с графическим интерфей- сом Presentation Manager; наконец, можно указать разнообразные варианты интер- фейсов для семейства ОС Windows компании Microsoft, которые заменяют Explorer и могут напоминать либо UNIX с его графическим интерфейсом, либо OS/2, либо
MAC OS. Следует отметить, что о семействе ОС компании Microsoft с общим ин- терфейсом, реализуемым программными модулями с названиями Explorer (в файле system.ini, который находится в каталоге Windows, имеется строка
SHELL=EXPLORER.EXE), всё же можно сказать, что заменяемой в этих системах является только интерфейсная оболочка, в то время как сама операционная система остаётся неизменной; она интегрирована в ОС. Другими словами, операционная среда определяется программными интерфейсами, то есть API (application program interface). Интерфейс прикладного программирования (API) включает в себя управление процессами, памятью и вводом/выводом.
Ряд операционных систем могут организовывать выполнение программ, соз- данных для других ОС. Например, в OS/2 можно выполнять как программы, соз- данные для самой OS/2, так и программы, предназначенные для выполнения в сре- де MS-DOS и Windows 3.x. Соответствующая операционная среда организуется в операционной системе в рамках отдельной виртуальной машины. Аналогично, в системе Linux можно создать условия для выполнения некоторых программ, напи- санных для Windows 95/98. Определёнными возможностями исполнения программ,
созданных для иной операционной среды, обладает и Windows NT. Эта система по- зволяет выполнять некоторые программы, созданные для MS-DOS, OS/2 1.x, Win-