Главная страница
Навигация по странице:

А. В. Гордеев А. Ю. Молчанов системное программное обеспечение электронный вариант книги издательства Питер СанктПетербург Челябинск юургу каф. Автоматика и управление 2002 Предисловие Настоящий учебник



Скачать 4.16 Mb.
Название А. В. Гордеев А. Ю. Молчанов системное программное обеспечение электронный вариант книги издательства Питер СанктПетербург Челябинск юургу каф. Автоматика и управление 2002 Предисловие Настоящий учебник
Анкор SysSoft.doc
Дата 22.04.2017
Размер 4.16 Mb.
Формат файла doc
Имя файла SysSoft.doc
Тип Учебник
#1333
страница 1 из 46
  1   2   3   4   5   6   7   8   9   ...   46



А.В.Гордеев

А.Ю.Молчанов

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

ОБЕСПЕЧЕНИЕ


Электронный вариант книги издательства

«Питер»

Санкт–Петербург

Челябинск


ЮУрГУ

Каф. Автоматика и управление

2002

Предисловие


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

Согласно Государственному образовательному стандарту, по которому ведётся обучение студентов, поступивших в вузы до 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 и С.

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

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


Ваши замечания, предложения, вопросы отправляйте по адресу электронной поч­ты [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

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

Часть 1

Операционные системы и среды


В англоязычной технической литературе термин System Software (системное программное обеспечение) означает программы и комплексы программ, являющиеся общими для всех, кто совместно использует технические средства компьютера, и применяемые как для автоматизации разработки (создания) новых программ, так и для организации выполнения программ уже существующих. С этой точки зрения программное обеспечение может быть разделено на следующие пять групп:

1 Операционные системы (ОС).

2 Системы управления файлами (СУФ).

3 Интерфейсные оболочки для взаимодействия пользователя с ОС и программные среды.

4 Системы программирования.

5 Утилиты.

Рассмотрим вкратце эти группы системных программ.

1 Под операционной системой (ОС) обычно понимают комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами, а с другой – предназначен для наиболее эффективного использования ресурсов вычислительной системы и организации надёжных вычислений. Любой из компонентов прикладного программного обеспечения обязательно работает под управлением ОС. На рис.1 изображена обобщённая структура программного обеспечения вычислительной системы.

Р
ис.1
Обобщённая структура программного обеспечения вычислительной

системы

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

Основными функциями, которые выполняют ОС, являются следующие:

приём от пользователя (или от оператора системы) заданий или команд, сформулированных на соответствующем языке – в виде директив (команд) оператора или в виде указаний (своеобразных команд) с помощью соответствующего манипулятора (например, с помощью «мыши»), – и их обработка;

приём исполнение программных запросов на запуск, приостановку, остановку других программ;

загрузка в оперативную память подлежащих исполнению программ;

инициация программы (передача ей управления, в результате чего процессор исполняет программу);

идентификация всех программ и данных;

обеспечение работы систем управления файлами (СУФ) и/или системы управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения;

обеспечение режима мультипрограммирования, то есть выполнения двух или более программ на одном процессоре, создающее видимость их одновременного исполнения;

обеспечение функций по организации и управлению всеми операциями ввода/вывода;

удовлетворение жёстким ограничениям на время ответа в режиме реального времени (характерно для соответствующих ОС);

распределение памяти, а в большинстве современных систем и организация виртуальной памяти;

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

организация механизмов обмена сообщениями и данными между выполняющимися программами;

защита одной программы от влияния другой; обеспечение сохранности данных;

предоставление услуг на случай частичного сбоя системы;

обеспечение работы систем программирования, с помощью которых пользователи готовят свои программы.

2 Назначение системы управления файлами – организация более удобного доступа к данным, организованным как файлы. Именно благодаря системе управления файлами вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной нам записи используется логический доступ с указанием имени файла и записи в нём. Как правило, все современные ОС имеют соответствующие системы управления файлами. Однако выделение этого вида системного программного обеспечения в отдельную категорию представляется целесообразным, поскольку ряд ОС позволяет работать с несколькими файловыми системами (либо с одной из нескольких, либо сразу с несколькими одновременно). В этом случае говорят о монтируемых файловых системах (дополнительную систему управления файлами можно установить), и в этом смысле они самостоятельны. Более того, можно назвать примеры простейших ОС, которые могут работать и без файловых систем, а значит, им необязательно иметь систему управления файлами, либо они могут работать с одной из выбранных систем. Надо, однако, понимать, что любая система управления файлами (СУФ) не существует сама по себе – она разработана для работы в конкретной ОС и с конкретной файловой системой. Можно сказать, что всем известная файловая система FAT (file allocation table)1 имеет множество реализаций как система управления файлами, например, FAT-16 для самой MS-DOS, super-FAT для OS/2, FAT для Windows NT и т. д. Другими словами, для работы с файлами, организованными в соответствии с некоторой файловой системой, для каждой ОС должна быть разработана соответствующая система управления файлами; и эта система управления файлами будет работать только в той ОС, для которой она и создана.

Для удобства взаимодействия с ОС могут использоваться дополнительные интерфейсные оболочки. Их основное назначение – либо расширить возможности по управлению ОС, либо изменить встроенные в систему возможности. В качестве классических примеров интерфейсных оболочек и соответствующих операционных сред выполнения программ можно назвать различные варианты графического интерфейса 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, Windows 3.x. Правда, в своём последнем семействе ОС Windows 2000 разработчики решили отказаться от поддержки возможности выполнения DOS–программ.

Наконец, к этому классу системного программного обеспечения следует отнести и эмуляторы, позволяющие смоделировать в одной операционной системе какую-либо другую машину или операционную систему. Так, известна система эмуляции WMWARE, которая позволяет запустить в среде Linux любую другую ОС, например, Windows. Можно, наоборот, создать эмулятор, работающий в среде Windows, который позволит смоделировать компьютер, работающий под управлением любой ОС, в том числе и под Linux.

Таким образом, термин операционная среда означает соответствующий интерфейс, необходимый программам для обращения к ОС с целью получить определённый сервис1– выполнить операцию ввода/вывода, получить или освободить участок памяти и т. д.

3 Система программирования на рис.1 представлена такими компонентами, как транслятор с соответствующего языка, библиотеки подпрограмм, редакторы, компоновщики и отладчики. Не бывает самостоятельных (оторванных от ОС) систем программирования. Любая система программирования может работать только в соответствующей ОС, под которую она и создана, однако при этом она может позволять разрабатывать программное обеспечение и под другие ОС. Например, одна из популярных систем программирования на языке C/C++ фирмы Watcom для OS/2 позволяет создавать программы и для самой OS/2, и для DOS, и для Windows.

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

4 Наконец, под утилитами понимают специальные системные программы, с помощью которых можно как обслуживать саму операционную систему, так и подготавливать для работы носители данных, выполнять перекодирование данных, осуществлять оптимизацию размещения данных на носителе и производить некоторые другие работы, связанные с обслуживанием вычислительной системы. К утилитам следует отнести и программу разбиения накопителя на магнитных дисках на разделы, и программу форматирования, и программу переноса основных системных файлов самой ОС. К утилитам относятся также и известные комплексы программ фирмы Symantec, носящие имя Питера Нортона (создателя этой фирмы и соавтора популярного набора утилит для первых IBM PC). Естественно, что утилиты могут работать только в соответствующей операционной среде.

  1   2   3   4   5   6   7   8   9   ...   46
написать администратору сайта