МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Одобрено на заседании факультета (кафедры) Декан факультета математики и информатики А.М. Кытманов ________________ 30 декабря 2002 г.
Программа составлена в соответствии с государственными образовательными стандартами высшего профессионального образования по специальности «Прикладная математики и информатика»
УДК 005.131
Автор-составитель А.Е. Николаева
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Программное обеспечение: Рабочая программа и метод. указания по выполнению лабораторных работ / Сост. А.Е. Николаева. - Красноярск: КрасГУ
Рабочая программа и методические указания по выполнению лабораторных работ 010200 Прикладная математика и информатика 510200 Прикладная математика и информатика (бакалавриат)
2002. 20 с. (Экспресс-издание)
Предназначена для студентов 4 курса факультета математики и информатики, специализирующихся по специальности 0110200 “Прикладная математика и информатика”.
Печатается по решению редакционно-издательского совета Красноярского государственного университета
Красноярский государственный
Красноярск 2002
университет, 2002 2
ЦЕЛИ И ЗАДАЧИ КУРСА Целью курса является изучение ключевых принципов, концепций и понятий, являющихся базовыми для системного программного обеспечения. В задачи курса входит изучение основных составляющих операционных систем MS-DOS, Windows, Unix, а также получение практических навыков создания системных утилит и разработки компиляторов с языков высокого уровня.
зация виртуальной памяти и сегментная организация. Системы с комбинированной организацией. 7. Основные функции ОС: Управление процессорами. Планирование заданий
и загрузки процессоров. Уровни планирования. Цели планирования.
Приоритеты. 8. Мультипроцессорные системы. Использование параллелизма. Организация «главный-подчиненный». Мультипроцессорные ОС. 9. Основные функции ОС: Управление устройствами. Виды устройств. Об-
СОДЕРЖАНИЕ ЛЕКЦИОННОГО КУРСА 1. Вводная лекция по курсу. Структура курса. Основные понятия и составляющие программного обеспечения: Операционные системы (ОС) и системы программирования. Обзор современного программного обеспечения. 2. Операционная система – «программная оболочка» аппаратных средств ПЭВМ. Назначение, основные функции и структура ОС. Поколения операционных систем. Классификация ОС. Однозадачные, многозадачные и многопользовательские ОС. Системы разделения времени. 3. Основные функции ОС: Управление процессами. Понятие процесса. Состояния процесса. Операции над процессами. Алгоритмы планирования процессов. 4. Асинхронные параллельные процессы. Параллельная обработка. Взаимоисключение. Критические участки. Алгоритм Деккера. Синхронизация процессов при помощи семафоров. 5. Тупики. Примеры тупиков. Предотвращение тупиков и алгоритм банкира. Обнаружение тупиков. Восстановление после тупиков. 6. Основные функции ОС: Управление памятью. Стратегии управления памятью. Управление памятью для различных режимов работы ОС. Мультизадачность. Страничная организация. Виртуальная память. Страничная органи-
3
работка прерываний. Драйверы устройств. 10. Организация данных. Файловая система. Логическая организация файла. Физическая организация и адрес файла. Общая модель файловой системы. Современные архитектуры файловых систем. 11. Обзор современных операционных систем. Основные характеристики ОС: UNIX, MS-DOS, OS/2, WINDOWS NT, WINDOWS 95, MacOC. 12. Сетевые операционные системы. Структура сетевой операционной системы. Одноранговые сетевые ОС и ОС с выделенными серверами. Обзор современных сетевых ОС. 13. Общая характеристика языков программирования. Характеристики и свойства ЯП. Сравнения языков. Основные понятия ЯП. 14. Трансляторы: компиляторы и интерпретаторы. Стадии работы компилятора. Построение компилятора. 15. Определение формальной грамматики и языка. Первичные понятия. Примеры синтаксиса языка. Пустой язык. 16. Типы формальных языков и грамматик. Контекстно-свободные грамматики. Контекстно зависимые грамматики. Регулярные языки. Регулярные грамматики. 17. Вывод в КС-грамматиках и правила построения дерева вывода. Синтаксический разбор. Левый и правый выводы. Неоднозначные и эквивалентные грамматики.
4
18. Способы задания схем грамматик. Форма Наура-Бэкуса. Итерационная
30. Исправление и диагностика ошибок. Типы ошибок. Общие принципы от-
форма. Синтаксическая диаграмма.
ладки программ. Технология отладки. Трассировка и контрольные точки. От-
19. Построение грамматик и грамматики, описывающие основные конструк-
ладка в интегрированных средах.
ции языков программирования. Рекомендации по построению грамматик.
31. Загрузчики. Схемы загрузки. Основные функции загрузчика. Абсолютные
Описание списков. Пример построения грамматик. Грамматики, описываю-
и настраивающие загрузчики. Связывание подпрограмм. Принципы проекти-
щие целые числа без знака, и идентификаторы.
рования загрузчиков. Алгоритм работы загрузчика.
20. Грамматики для арифметических выражений. Грамматика для описаний. Грамматика, задающая последовательность операторов присваивания. Грамматики, описывающие условные операторы и операторы цикла.
СПИСОК ЛИТЕРАТУРЫ
21. Конечные автоматы. Определение и примеры. Детерминированные конечные автоматы. Конечный автомат с e-переходами. 22. Магазинный автомат. Детерминированные и недетерминированные магазинные автоматы. Недетерминированные магазинные автоматы и контекстно свободные языки.
1. Компиляторы: принципы, технологии и инструменты. / А. Ахо, Р. Сети, Дж. Ульман. - М.: Вильямс, 2001. 2. Информатика. ч.3. Структуры систем и системное программирование. / М. Брой. - М.: Диалог, 1996 .
23. Работа магазинного автомата. Язык, допускаемый магазинным автоматом.
3. Программное обеспечение ПЭВМ. / В.М. Брябрин. - М.: Наука, 1989.
Построение автомата по заданной грамматике.
4. Введение в операционные системы. / Г. Дейтел. - М.: Мир, 1987.
24. Нисходящие распознаватели. Распознаватели и LL(k)-грамматики. Восхо-
5. Системное программирование. / Дж. Донован. / Пер. с англ. - М.: Мир,
дящие распознаватели и LR(k)-грамматики. 25. Проектирование компилятора. Число проходов. Промежуточные языки. Объектные языки. Таблицы символов. Таблицы видов.
1975. 6. Введение в системы программирования. / В.Н. Лебедев. - М.: Статистика, 1975.
26. Принципы организации памяти. Типы памяти. Выделение памяти различ-
7. Руководство по DOS. / П. Нортон.- М.: Бином, 1995.
ным типам данных. Динамическое распределение.
8. Теория формальных языков. / В. Дж. Рейуолд - Смит. - М.: Радио и связь,
27. Генерация кода. Промежуточный код. Структуры данных для генерации
1988 .
кода. Генерация кода для некоторых типичных конструкторов.
9. IBM PC для пользователя. / В.Э. Фигурнов. – М.: ИНФРА-М, 1995.
28. Генерация объектного кода. Общие положения. Примеры генерации кодов
10. Проектирование и конструирование компиляторов. / Р. Хантер. – М.:
арифметических выражений.
Финансы и статистика, 1984.
29. Принципы оптимизации программ. Оптимизация линейных участков. Оптимизация циклов и условий.
5
6
ЛАБОРАТОРНЫЕ РАБОТЫ Работа № 1 Практикум по ОС MS-DOS. Основные команды работы с каталогами, с файлами, с дисками.
- встроенные команды ДОС; - обращения к исполняемым программам; - вызовы других командных файлов; - специальные команды для организации ветвлений и циклов.
1. Выведите на экран каталог диска С в ширину и постранично. 2. Перейти в любой подкаталог.
Работа № 3 Создание файла конфигурации CONFIG.SYS. Объяснить все исполь-
3. Проверьте версию системы.
зуемые в файле команды.
4. Установить текущую дату. 5. Установить текущее время. 6. Сделайте форматирование диска А с переносом на него операционной системы. 7. Скопируйте на диск А файл comp.com.
Работа № 4 Создание файла автозагрузки AUTOEXEC.BAT. Объяснить все используемые в файле команды.
8. Скопируйте на диск А все файлы с расширением сом. 9. Перейти на рабочий накопитель А. 10. Скопируйте файл имя1 изменив его на имя2. 11. Выведите оглавление главного каталога. 12. Создайте собственный подкаталог. 13. Перейдите в него и скопируйте любой файл. Проверьте оглавление подкаталога. 14. Создайте текстовый файл с клавиатуры (четверостишие) T1.txt. 15. Создайте текстовый файл с клавиатуры (четверостишие) T2.txt 16. Объедините файлы в один T3.txt.
Работа № 5 Практикум по ОС WINDOWS. Основные команды работы с каталогами, с файлами, с дисками. 1. Вывести на экран каталог диска C. 2. Проверить версию системы. 3. Узнать состояние диска C. 4. Отформатировать дискету. 5. Найти файл NC.exe. 6. Создать собственную папку на диске D. Создать ярлык для этой папки на рабочем столе.
17. Выведите файл T3.txt на экран. 18. Удалите из каталога все файлы с расширением txt. 19. Удалите созданный вами каталог.
7. Настроить вид папки как список. Отсортировать файлы в папке по имени. 8. Создайте в этой папке ярлык для NC или Far. 9. Настроить этот ярлык в удобном для работы виде.
Работа № 2 Создать командный файл (*.bat). Строки этого текстового файла могут представлять собой:
10. Создайте вложенную папку. 11. Скопируйте любой файл, переименуйте его и переместите во вложенную папку. Удалите все созданные вами файлы и папки. 12. Восстановите удаленный файл.
7
8
13. Настроить параметры экрана.
22. Перейти на уровень выше.
14. Настройка даты и времени.
23. Вывести информацию о созданных вами файлах в текущем каталоге.
15. Настроить свойства панели задач, чтобы она автоматически убиралась с
24. Удалить созданный вами подкаталог.
экрана. Восстановить все первоначальные настройки экрана и панели задач. 16. Как заменить сочетание клавиш для переключения раскладки клавиатуры?
25. Вывести полную информацию о файлах на экран. 26. Вывести версию системы. 27. Вывести дату и время. 28. Удалить созданные вами файлы и каталоги.
Работа №6
29. Завершить работу.
Практикум по ОС Unix Работа № 7
1. Зайти в систему с заданным именем и паролем.
Перевод арифметического выражения из инфиксной формы в префикс-
2. Вывести имя текущего каталога. 3. Вывести содержимое текущего каталога. 4. Создать текстовый файл с клавиатуры Т1.
ную или постфиксную (по вариантам). Программу оформить в виде отдельного модуля. Работа № 8
5. Создать текстовый файл с клавиатуры Т2.
Разработка собственного языка программирования. Язык, разрабо-
6. Дописать информацию с клавиатуры в текстовый файл Т1.
танный в рамках этой работы, должен включать типы данных: целые числа,
7. Объединить файлы Т1 иТ2 в Т3.
символы, регулярные и комбинированные типы. Программные структуры:
8. Вывести на экран файл Т3. 9. Создать в текущем каталоге копию файла Т3 -> Т4. 10. Отсортировать файл Т3. Вывести отсортированный файл Т3 на экран. 11. Подсчитать число строк и слов в файле Т4. 12. Изменить права доступа к файлу Т4. 13. Создать в текущем каталоге собственный подкаталог. 14. Перенести текстовый файл Т4 в созданный вами подкаталог.
арифметику, ветвление, циклы пошаговый и с предусловием, встроенные функции, остальное на усмотрение разработчика. Это минимальная конфигурация, рассчитанная на среднего студента. Для более сильных студентов предполагается большая свобода в выборе языковых средств. Язык описать в формах Бэкуса-Наура или в виде синтаксических диаграмм. Задание сдать в виде реферата на листах формата А4.
15. Зайти в созданный подкаталог. Работа № 9
16. Создать еще один вложенный подкаталог и перейти в него.
Компиляция программы: Фаза первая «Лексический анализ». В рабо-
17. Скопировать файл Т3 в текущий каталог. 18. Вывести список созданных вами в этом подкаталоге файлах. 19. Удалить созданные файлы в подкаталоге.
те должен быть произведен лексический анализ небольшой программы, написанной на языке программирования разработанного в 8 лабораторной работе, в которой максимально использовать основные конструкции своего
20. Перейти на уровень выше. 21. Удалить созданный внутренний подкаталог. 9
языка. 10
Методические указания
ят из указателя синтаксического типа и указателя элемента таблицы соответствующего базовому элементу (рис.2). Типы стандартных символов:
Грамматический разбор исходной программы на соответствующие синтаксические классы называется лексическим анализом. Компилятор про-
• идентификаторы (IDN
сматривает исходную строку и делит ее на части, как показано на рис. 1 вер-
• терминальные символы (TRM)
тикальными линиями.
• литералы (LIT) Тип
Указатель
Program¦WCM¦;
TRM
Æ
Program
Var
IDN
Æ
WCM
TRM
Æ
;
TRM
Æ
Var
IDN
Æ
Сost
Cost¦,¦Rate¦,¦Start¦,¦Finish¦:¦Integer¦; Begin Cost¦:=¦Rate¦*¦(¦Start¦-¦Finish¦)¦+¦2¦*¦Rate¦*¦(¦Start¦-¦Finish¦-¦ 100¦)¦; WriteLn¦(¦Cost¦)
Рис.2
End¦. Рис. 1
Так как все стандартные символы имеют фиксированную длину, обращение к ним в последующих фазах компилятора становится более простым.
При этом используются средства обработки строк. Исходная програм-
Также упрощается проверка принадлежности элемента определенному син-
ма просматривается последовательно. Базовые элементы, или лексические
таксическому классу, поскольку это можно сделать простым сопоставлением
единицы, разделяются пробелами, знаками операций и специальными симво-
синтаксического типа и указателя.
лами. Таким образом, выделяются идентификаторы, литералы и терминаль-
Лексический анализ может быть осуществлен за один просмотр исход-
ные символы (операции и ключевые слова). Базовые элементы (идентифика-
ного текста. После него программа приобретает промежуточную форму в ви-
торы и литералы) помещаются в таблицы. Поскольку другие фазы компиля-
де таблицы лексических единиц. Некоторые схемы компиляторов уменьша-
тора определяют способ использования и значения этих элементов, вся бу-
ют размер таблицы, выбирая только те лексические единицы, которые необ-
дущая информация о них также помещается в эти таблицы.
ходимы, и отбрасывая ненужные. При лексическом анализе обнаруживаются
Последующие фазы компилятора используют свойства базовых эле-
и отмечаются лексические ошибки (например, недопустимые символы и не-
ментов и поэтому должны иметь доступ к информации о них. Этим фазам
правильные идентификаторы). Лексическая фаза отбрасывает также и ком-
компилятора передается или вся информация о каждом элементе, или, что
ментарии. Другие фазы компилятора имеют дело в основном только со стан-
более типично, сама исходная программа преобразуется в таблицу `стандарт-
дартными символами, однако с помощью содержащихся в таблице указате-
ных символов`. Стандартные символы имеют фиксированную длину и состо-
лей можно получить информацию обо всех свойствах лексической единицы.
11
12
При выполнении фазы лексического анализа решаются следующие
му идентификатору соответствует отдельный элемент в таблице. Во время лексического анализа в этот элемент помещается имя идентификатора. Вме-
задачи:
сто имени в эту таблицу можно помещать указатель на таблицу имен для бо1. Грамматический разбор программы на базовые элементы, или лек-
лее эффективного использования памяти, так как в некоторых языках идентификаторы могут быть ну очень длинными. Атрибуты данных и адрес для
сические единицы языка. 2. Построение таблиц литералов и идентификаторов.
каждого идентификатора записываются последующими фазами.
3. Построение таблицы стандартных символов.
ИМЯ
АТРИБУТЫ
АДРЕС
5. ТАБЛИЦА СТАНДАРТНЫХ СИМВОЛОВ - создается при лексичеИспользуются следующие входные и выходные данные
ском анализе для того, чтобы представить программу строкой лексических единиц, а не отдельных символов. Каждой лексической единице в программе
1. Исходная программа в ее первоначальном формате. Воспринимается компилятором как строка символов.
соответствует стандартный символ. Каждый стандартный символ содержит указатель на таблицу, элементом которой является соответствующая лекси-
2. ТАБЛИЦА ТЕРМИНАЛЬНЫХ СИМВОЛОВ - имеет отдельный элемент для каждого терминального символа (например, арифметические опе-
ческая единица, и его индекс внутри этой таблицы. ТАБЛИЦА
ИНДЕКС
рации, ключевые слова и др.). Каждый элемент состоит из терминального символа, указателя его классификации (операция, разделитель) и его стар-
АЛГОРИТМ
шинства (используемого в последующих фазах). СИМВОЛ
УКАЗАТЕЛЬ
Лексическая единица - это подстрока входной строки, представляющая собой базовый элемент языка. Она может содержать только элементарные
3.ТАБЛИЦА ЛИТЕРАЛОВ - создается при лексическом анализе для
символы и не может включать другие лексические единицы. Для остальной
описания всех литералов используемых в исходной программе. Каждому ли-
части компилятора лексическая единица выступает как наименьшая единица
тералу соответствует один элемент таблицы, состоящий из ряда атрибутов.
языка. Стандартные символы служат терминальными символами для синтак-
ЛИТЕРАЛ
сического анализа.
УКАЗАТЕЛЬ НА ТИП
ТОЧНОСТЬ
АДРЕС
Существует много способов реализации фазы лексического анализа. Могут быть и другие атрибуты в зависимости от языка и фантазии раз-
Входная строка разделяется на лексические единицы символами разделителями. Разделители отмечаются в специальном поле таблицы терминальных
работчика.
символов. Символы исходной программы читаются, проверяются на кор4.ТАБЛИЦА ИДЕНТИФИКАТОРОВ - создается при лексическом анализе для описания всех идентификаторов, имеющихся в программе. Каждо13
ректность, и выясняется, не являются ли они разделителями. Стоящие подряд символы, не являющиеся разделителями, объединяются в лексические еди14
ницы. Пробел может служить разделителем, в противном случае он игнори-
Пример лексического анализа написанной выше программы:
руется. Сначала все лексические единицы сравнивают с элементами таблицы
Таблица терминальных символов
терминальных символов, отличных от пробела. В случае совпадения ЛЕ
Таблица 1
классифицируют как терминальный символ, и формируют стандартный сим-
Символ
Разделитель
вол типа TRM, который помещают затем в таблицу стандартных символов.
1.
Program
Нет
Если ЛЕ не является терминальным символом, при последующем анализе
2.
Var
Нет
она классифицируется как возможный идентификатор или литерал. Те ЛЕ,
3.
Integer
Нет
которые подходят под описание идентификаторов, классифицируют как воз-
4.
Begin
Нет
можные идентификаторы. Если ЛЕ не подходит ни к одной из этих катего-
5.
WriteLn
Нет
рий, выдается сообщение об ошибке. Если ЛЕ идентификатор, опрашивается
6.
End
Нет
таблица идентификаторов. Если в таблице этой единицы нет, то создается
7.
;
Да
новый элемент. Поскольку из атрибутов известно только имя, его и заносят в
8.
,
Да
таблицу. Остальная информация определяется и заносится следующими фа-
9.
:
Да
зами. В обоих случаях создают стандартный символ типа IDN и помещают в
10.
:=
таблицу стандартных символов.
11.
*
12.
-
13.
+
14.
(
Да
15.
)
Да
Числа, строки символов заключенные в кавычки и другие самоопределенные данные, классифицируют как литералы. Затем опрашивают таблицу литералов, если ЛЕ там нет, то создается новый элемент. В отличие от идентификаторов, литералы позволяют определить их атрибуты и внутреннее
Другие
представление при просмотре. Таким образом, каждый новый элемент таблицы состоит из литерала и его атрибутов. Не зависимо от того, создан но-
Таблица стандартных символов
вый элемент таблицы литералов или нет, создают стандартный символ типа LIT и помещают в таблицу стандартных символов. Таблицы Литералов, Идентификаторов и Стандартных символов используются следующими фазами компилятора.
15
Таблица 2 Тип
Индекс
ЛЕ
TRM
1
Program
IDN
1
WCM
TRM
7
;
TRM
2
Var
IDN
2
Cost 16
TRM
8
,
IDN
3
Rate
Работа № 10 Вариант (б)
..
Вещественное число состоит из:
.. LIT
1
1. возможного знака;
2
2. последовательности из нуля или более цифр; 3. десятичной точки;
Таблица идентификаторов Таблица 3 Имя
4. последовательности из одной или более цифр; 5. возможной экспонентной части, содержащей
Атрибуты
WCM
5.1. экспоненту (E),
Cost
5.2. возможный знак,
Rate
5.3. последовательность из одной или более цифр. Напишите процедуру распознавания такого числа.
Start Finish
Задание № 11
Таблица литералов Таблица 4 Литерал
Указатель на тип
Точность
2
Integer
1
100
Integer
3
Другие
Напишите синтаксический анализатор рекурсивного спуска, соответствующий грамматике со следующими порождающими правилами (Eначальный символ): EÆ TG GÆ+TG | ε T Æ FU
Работа № 10 Вариант (а) Число с фиксированной точкой определяется как возможный знак, за
UÆ×FU | ε FÆ (E) | identifier. Работа № 12
которым следует строка, состоящая из нуля или более числа цифр, с последующей точкой и следующей за нею строкой из нуля или более цифр; со-
Компиляция программы: Фаза вторая «Синтаксический анализ». Син-
держит она по крайней мере одну цифру (до или после точки). Напишите
таксическая фаза компилятора решает задачу распознавания основных кон-
процедуру распознавания такого числа. 17
18
струкций языка, в программе, написанной на своём языке программирования из лабораторной работы №8. Синтаксической фазой в качестве источника входной информации ис-
Программное обеспечение
пользуется таблица стандартных символов, которая была создана фазой лексического анализа и содержит программу в форме стандартных симво-
Составитель: Альбина Евгеньевна Николаева
лов. В работе предусмотреть вывод сообщений о синтаксических ошибках, допущенных в программе.
Редактор А.А. Назимова Корректура автора
Подписано в печать 30.12.2002 Тиражируется на электронных носителях Заказ 206 Дата выхода 17.01.2003 Адрес в Internet: www.lan.krasu.ru/studies/editions.asp Отдел информационных ресурсов управления информатизации КрасГУ 660041 г. Красноярск, пр. Свободный, 79, ауд. 22-05, e-mail:
[email protected]
Издательский центр Красноярского государственного университета 660041 г. Красноярск, пр. Свободный, 79, e-mail:
[email protected]
19
20