Метода по выполнению курсовой работы по СПО (Курсовая по СПО)

Посмотреть архив целиком

3

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ


Московский государственный технический университет

«МАМИ»


Кафедра «Автоматика и процессы управления»


Е.Г.Мурачев





МЕТОДИЧЕСКИЕ УКАЗАНИЯ

По выполнению курсовой работы

по дисциплине

«Системное программное обеспечение»


Для студентов заочной формы обучения











Москва 2008




ВВЕДЕНИЕ

Курсовая работа по дисциплине "Системное программное обеспечение1' выполняется студентами специальности 220100 в 9 семестре. В рамках курсовой работы должно быть разработано приложение для операционной системы UNIX, при выполнении курсовой работы используются знания, полученные студентами при изучении дисциплины "Системное программное обеспечение", а также дисциплин "Информатика", "Алгоритмические языки и программирование", "Операционные системы",

1 ЦЕЛИ И ЗАДАЧИ КУРСОВОГО ПРОЕКТИРОВАНИЯ

1.1 Целью курсового проектирования является приобретение
практических навыков по разработке структуры приложения, алгоритмов
и программ для их реализации с использованием языков C++ и
PostScript для операционной системы UNIX/Linux.

1.2 Задачей курсовой работы является разработка приложения по
заданным исходным данным:

-разработка командного интерпретатора;

- разработка программы-демона;

- построение грамматики для заданного языка и автомата для его

распознавания

  • построение лексического анализатора;

  • разработка программы обработки запроса ядром UNIX для символьного устройства;

  • разработка программы обработки запроса ядром UNIX для блочного устройства;

  • разработка программы вывода графиков на языке PostScript.

2. ОРГАНИЗАЦИЯ И ПОСЛЕДОВЛЬНОСТЬ ВЫПОЛНЕНИЯ

КУРСОВОЙ РАБОТЫ

Курсовое проектирование является формой самостоятельной работы студента и выполняется по индивидуальному заданию.

Заданиена курсовую работу выдается преподавателем на первом занятии по курсу СПО 9 семестра, защита проводится в конце того же семества перед экзаменом. На защите демонстрируется выполнение программы с соответст-вующими пояснениями.

"В ходе выполнения курсовой работы студент консультируется с руководителем, назначенным кафедрой.

За правильность проектных решений, качество оформления работы, своевременность выполнения отдельных этапов и представления к защите отвечает студент.

2.1 Задание на курсовую работу

Задание на гсурсовую работу выбирается студентом по номеру группы и порядковому номеру студента в журнале.

    1. Объем и содержание курсовой работы

Работа состоит из расчетно-пояснительной записки (РПЗ) и программы, представленной на CD-диске.

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

Объем пояснительной записки составляет 30-40 машинописных страниц (формат А4) РПЗ должна быть написана четко и кратко, содержать пояснения к разработанному приложению, обоснование принятых решений. РПЗ должна включать следующие разделы:

  1. Титульный лист (приложение А)

  2. Бланк задания, подлисанный преподавателем и студентом (приложение Б)

3) Содержание

4) Перечень условных обозначений и сокращений в алфавитном
порядке в виде списка, в котором слева приводится сокращение, справа - его
расшифровка.

5) Основная часть РПЗ:

  • Краткие теоретические сведения: анализ существующих программ подобного класса; особенности создания приложений для ОС UNIX/Linux;

  • Разработка структуры приложения;

-- Разработка алгоритма решения задачи;

  • Разработка программы;

  • Проектирование интерфейса приложения (если это предусмотрено заданием на КР);

- Заключение;

  • Список использованных источников;

  • Приложения:

о спецификация программного обеспечения (приложение В),

о текст программы (приложение Г),

о руководство пользователя (системного программиста)

(приложение Д).

2.3 Последовательность выполнения работы

Курсовая работа разрабатывается в последовательности, соответствующей содержанию РПЗ (п.2,2).

Расчетно-пояснительная записка и графический материал оформляются в соответствии с требованиями ЕСКД и ЕСПД (Единая система конструкторской документации, Единая система программной документации).

Подготовленная и оформленная работа, прошедшая экспертизу на выполнение требований ЕСКД и ЕСПД представляется преподавателю не позднее, чем за неделю до защиты.

Защита работы происходит на 16 или 17 неделе семестра.

3 ВАРИАНТЫ ЗАДАНИЙ Вариант 1

Написать и отладить программу на языке С++, использующую системные вызовы для управления файлами в среде UNIX (тип файла - обычный, каталоги).

Вариант 2

Написать и отладить программу на языке С++, использующую системные вызовы для управления файлами в среде UNIX (тип файла - специальные, FIFO).

Вариант 3

Написать интерпретатор для языка высокого уровня. Проект должен включать:

- трансляцию исходной программы в промежуточное представление (в
виде четверок иди кода стековой машины);

- интерпретацию промежуточного представления.
Порядок создания модулей:

  1. разработка механизма таблицы символов;

  2. создание интерпретатора для четверок;

  3. создание лексического анализатора;

  4. разработка семантических действий;

  5. разработка синтаксического анализатора;

  6. создание подпрограмм обработки ошибок;

  1. вычисления Вариант 4

Разработать на языке PostSsrtpi иршрпмму вывода графика функции f(), которая строит n периодов, соединяя точки, расположенные с интервалом m°,

отрезками прямых, Размер поля рисования 10x4 см, график расположен в

центре листа и обведен рамкой.

а) f= sin(2а+х), п=4 m=5°

б) f=cos(x), п=3, т=10°

в) f= sin(x)/2, n= 4; т=8°

Вариант 5

Написать процедуру на языке PostScript, которая вдоль ранее созданного графического пути строит штрих - пунктирную линию, состоящую из:

1) прямоугольных штрихов со срезанными краями и кружков между
ними;

2) двукратное проведение штриховой линии с разными параметрами,..
Вариант 6

Разработать на языке PostScript программу, позволяющую строить различные графические изображения с использованием функций cos() и sin(), не используя при этом встроенные функции языка. Разработка данной программы предполагает вывод изображений функций cos () и sin() одновременно в различных проекциях и пространствах (двумерном, трехмерном), различным цветом, со смещенной системой координат на 90°. Изображения строятся по точкам, расположенным друг от друга с интервалом 5°, 10°, 36°, 12б°3 181°, 359°, Для работы с цветом использовать процедуру изменения цвета изображений (по RGB- матрице).

Вариант 7

Разработать неинтерактивную программу-демон. Создаваемая программа должна:

  1. отслеживать запуск программ в определенные моменты времени;

  2. обеспечивать доступ к сервисам системы из сети;

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

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

-

  • необходимо закрыть все открытые файлы (файловые дескрипторы), особенно стандартные потоки ввода-вывода. Предполагается, что демон остается работать и после того, как пользователь.покинул систему UNIX;

  • необходимо снять его ассоциацию с группы процессов и управляющих терминалов, что позволит демону избавится от сигналов, генерируемых терминалом (SIFINT или SIGHUB), например, при нажатии определенных клавиш или выходе пользователя из системы;

  • сообщения о работе демона следует направлять в специальный журнал с помощью функции syslog;

- необходимо изменить текущий каталог и корневой для возможного
ремонтирования примонтированной файловой системы.

Также следует:

  • игнорировать сигналы, связанные с вводом-выводом на терминал фонового процесса;

  • организовать собственную группу и сеанс, не имеющие управляющего терминала, выполнить порождение дочернего процесса для проверки, не является ли процесс лидером (предыстория запуска данной программы неизвестны);

-закрыть все возможные файловые дескрипторы;

- сменить текущий каталог на корневой;

- установить опции ведения журнала - каждая запись предваряется
идентификатором PID демона. Нри невозможности заниси в журнал
сообщение выводить на консоль, источник сообщений определить как
"системный демон", либо неренаправляется и ооответствии со списком
пользавотелей данной или удаленной системы.

Внриннт 8

Разработать Транслятор инфиксных выражений в постфиксную форму. Выражения разделены между собой точками с запятой и состоят из чисел, идентификаторов и операторов +,-,*, /, div, mod

Вариант 9

Написать на языке PostScript файл для печати рекурсивных геометрических объектов:

а) ковра Серпинского;

б) кривых Гильберта;

в) кривых Коха;

г) кривых_Пеано.
Вариант 10

Разработать на языке PostScript программу построения и вывода на печать графика заданной функции:

а) f=tg(l+2a)/(a+b);

б) f=exp(3a+2);

в) f=log(1+a/4)/3

Вариант 11

Разработать командный интерпретатор (КИ), распознающий внутренние и внешние команды. При создании КИ необходимо учитывать некорректные действия пользователя, которые могут привести к сбою программы. В качестве команд использовать как стандартные, так и созданные пользователем (например, команда test как результат выполнения нескольких команд: Is -I | grep ). Общие технические требования: ОС -UNIX, язык протраммирования С++, компилятор языка С++.

Вариант 12

Разработать приложение под UNIX для ведения журнала событий:

а) спецификация интерфейса удаленных процедур log.x;

б) текст удаленной процедуры Log.x;

в) текст головной программы клиента.
Вариант 13

Разработать программу создания параллельно взаимодействующих вычислительных процессов. Процесс А запускает задачи D, С, Е. Время завершения задач D, С, Е приблизительно одинаковое. Поток F запускается тем, кто завершается первым, но только после завершения 2-х остальных, приходящих в точку синхронизации. Задача G запускается последней

закончившим работу потоком Е или F, Схема взаимодействия отдельных потоков приведена на рисунке.


А


1- я точка синхронизации


2- я точка синхронизации



Вариант 14 -

Разработать алгоритм и написать программу для разбора и вычисления уравнения заданной сложности. Использовать стековый алгоритм разбора с выводом стека на экран. При разработке интерфейса предусмотреть: поле для ввода выражения; окно, в котором отображается ход выполнения программы; окно для ввода переменных и поле для вывода результата вычислений.

Вариант 15

Разработать алгоритм и программу обработки запроса ядром UNIX для символьного устройства.

Вариант 16

Разработать алгоритм и программу обработки запроса ядром UNIX для блочного устройства.

4 ИНФОРМАЦИЯ ДЛЯ ВЫПОЛНЕНИЯ КУРСОВОЙ РАБОТЫ

41. Демоны

Важную роль в работе операционной системы .играют системные демоны. Демоны — это неинтерактивные процессы, которые запускаются обычным образом - путем загрузки в память соответствующих им программ (исполняемых файлов), и выполняются в фоновом режиме. Обычно демоны запускаются при инициализации системы и обеспечивают работу различных подсистем UNIX; системы терминального доступа, системы печати, системы - сетевого доступа и сетевых услуг и т. а, Демоны не связаны ни. с одним пользовательским сеансом работы и не могут непосредственно уаправляться пользователем. Большую часть времени демоны ожидают пока тот или иной процесс запросит определенную услугу, например, доступ к файловому архиву или печать документа.

Возможность терминального входа пользователей в систему, доступ по сети, использование системы печати и электронной почты, — все это обеспечивается соответствующими демонами. Некоторые демоны работают постоянно, пример такого демона — процесс init(), являющийся прародителем всех прикладных процессов в системе. Другими примерами являются сгоn(), позволяющий запускать программы б определенные моменты, времени, inetd(), обеспечивающий доступ к сервисам системы из сети, и sendmaii(), обеспечивающий получение и ошравку электронной почты.

На рис. 4.1 приведен основной алгоритм яеинтерактивной программы. В ней вызываются функции, необходимые для выполнения программы, отслеживающей запущенные процессы. Данная функция организовывает собственную группу и сеанс, не имеющие управляющего терминала. Так как лидером группы и сеанса может стать процесс, если он еще не является лидером, а предыстория запуска данной программы неизвестна, необходима гарантия, что процесс не является лидером. Для этого порождает дочерний процесс. Так как его PID уникален, то ни группы ни сеансы с таким идентифика-

тором не существует, а значит, нет и лидера. При этом родительский процесс немедленно завершает выполнение, поскольку он уже не нужен. Существует еще. одна причина необходимости порождения дочернего процесса. Если демон был запущен из командной строки командного интерпретатора shell не в фоновом режиме, последний будет ожидать завершения выполнения демона, и таким образом, терминал будет заблокирован. Порождая процесс и завершая выполнение родителя, имитируется для командного интерпретатора завершение работы демона, после чего shell выведет свое приглашение. Далее закрываются открытые файлы, и выполняется запись в системном журнале. Для этого сначала устанавливаются опции "ведения журнала" каждая запись будет предваряться йденгафикатором РID демона. При невозможности записи в журнал сообщения будут выводиться на консоль. Каждые десять секунд вызывается функция, реалшугошая запись запущенных процессов в файл, например, sysmag.txt

4.2 Язык PostScript

Язык PostScript не является языком программирования, он используется для описания страниц, подготовленных для печати на принтерах. Эти страшщы могут включать не только текст, но и графические объекты, причем в самых разнообразных комбинациях. Вместе с тем PostScript обладает вычислительными возможностями, работает со строками текста, поддерживает ввод/вывод. Все графические объекты в языке PostScript, а так же шрифты являются векторными. В векторной графике положение и размеры объекта не зависят от размера точки изображения на конкретном устройстве печати и размера области изображения. Векторные изображения легко масштабируются, сдвигаются и поворачиваются. Изображения переводятся в растровый формат устройства вывода непосредственно перед печатью, что обеспечивают высокое качество печати. Координаты точек на странице задаются вещественными числами в полиграфических единицах длины - пунктах.

2.1 Элементы языка PostScript

PostScript-файл состоит из слов, которые отделяются друг от друга пробелами, символами табуляции, специальным символом конца строки и некоторыми другими специальными символами.

В словах кроме обычных, алфавитно-цифровых символов можно использовать специальные символы. Специальными символами являются скобки трех видов (, )> [, ], { и } символы <г >, / и X.

Строка может содержать любое количество слов и любое слово может быть первым в строке. Исходный текст PostScript-файла может располагаться (форматироваться) так, чтобы подчеркнуть его логическую структуру, сделать удобочитаемым либо уменьшить размер файла. В PostScript используется обратная (польская) запись, при которой сначала указываются операнды, а затем оператор, выполняющий с ними действия.

Использование польской записи объясняется тем, что все операции в PostScript выполняются над операндами в стеке. Стек представляет собой специальную временную область памяти, организованную по принципу «последний вошел — первый вышел». Команда выбирает последнее значение, удаляя его из стека. После этого текущим становится значение, бывшее ранее предпоследним. Таким образом, находящиеся в стеке значения извлекаются из него в обратной последовательности. Интерпретатор PostScript последовательно считывает файл, интерпретируя очередное слово. Если слово представляет собой команду, она немедленно выполняется, а если это некоторый объект данных, он заносится в стек.

4.2.2 Типы данных

Основные типы данных языка PostScript;

  • целое число со знаком;

  • вещественное число;

  • логическое значение;

  • строка символов;

  • процедура;

- массив произвольных объектов, в том числе и разнотипных;

- словарь.

Целые константы задаются в десятичном формате или в формате без знака ^с указанием основания системы счисления. Шестнадцатеричьше константы записываются в угловых скобках.

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

Логические константы принимают только два значения, true и false («истина» и «ложь»).

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

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

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

Во время исполнения интерпретатор PostScript помещает тело процедуры в стек исполнения, а исполнив, удаляет его из этого стека. Если из одной _ процедуры вызывается другая, первая – приостанавливается, а тело второй заносится в стек исполнения и она становится текущей. После ее окончания и удаления из стека текущей становится вызывавшая процедура, которая продолжает работу с того


места, где она была приостановлена. Это обстоятельство, а также метод хранения данных в стеке операндов позволяет использовать рекурсию, когда процедура вызывает на исполнение саму себя.

Массивом в программировании называют совокупность однотипных данных, которой присвоено общее имя. Массив в PostScript может состоять и из разнотипных объектов. Значения элементов массива записываются в квадратных скобках:

[1 (String) 1.0]

Символы квадратных скобок являются командами. Команда [ записывает в стек операндов специальную метку, а команда ] создает массив, содержащий элементы этого стека от текущего значения до ближайшей метки. Элемент, находящийся в стеке сразу после метки, имеет нулевой индекс. Между командами [ и ] можно исполнять любые команды со значениями, записанными в этот стек.

Словарь является сложным типом данных. Рассмотрим только применение словаря для . хранения шрифта и изменения его кодировки. Каждый словарь имеет определенную емкость — максимальное число словарных записей, которое определяется при его создании. Словарная запись состоит из имени и значения. Значением может быть объект любого типа.

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

4.2.3 Структура PostScript-файла

PostScript-файл состоит из трех частей: пролога, тела и эпилога. В прологе содержатся описания подпрограмм, и данные необходимые для печати документа. В теле PostScript-файла содержатся только команды, формирующие страницы документа. Эпилог не содержит никаких команд.


Также важную роль при написании программы имеют комментарии, так как по комментарию, расположенному в первой строке файла, ОС UNIX и прикладные программы определяют его тип.

Структурные комментарии используются для выделения элементов логической структуры PostScript-файла и интерпретируются программами просмотра/преобразования.

Структурные комментарии делятся на три группы:

  • комментарии в затловке программы (перед прологом);

  • комментарии в теле программы;

  • завершающие комментарии (в эпилоге).

Для принтера, печатающего файл, комментарии не играют никакой роли, подобно тому, как комментарии в обычном языке программирования не обрабатываются компилятором. Комментарий начинается символом % и продолжается до конца строки.

Для того чтобы подсистема печати или прикладная программа смогли правильно определить тип файла, его первая строка должна начинаться комментарием:

%!

Данный комментарий является обязательным. После символов %! в той же строке может следовать текст PS-Adobe-N.M. Цифры N.M (например, 1.0) определяют версию соглашения о структурных комментариях (это специальный документ, содержащий правила оформления структурных комментариев).

Структурные комментарии начинаются символами %%. Если программа содержит такие комментарии, она соответствует договоренностям о структуре PostScript-файлов. После %%- без пробела следуют зарезервированные (ключевые) слова. Регистр букв в них имеет значение.

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

Комментарий %%DocumentFonts позволяет программам обработки загружать в принтер необходимые шрифты, если они еще не содержатся в его памяти. В комментарии %%PageFonts перечисляются только те шрифты, которые


используются при печати данной страницы.

Комментарий %%BoundingBox определяет положение изображения на странице. Четыре целых числа — это координаты левого нижнего и правого верхнего углов прямоугольника, содержащего изображение. В многостраничном документе прямоугольник должен охватывать все изображения. Этот комментарий важен для программ, которые включают изображение из одного файла в другой файл. Если точно определить размер изображения невозможно, следует указать заведомо большие значения, например соответствующие размеру листа бумаги формата А4:

%%BoimdingBGx: 0 0 595 842

Комментарием %%EudProlog завершается раздел описаний PostScript-файла и начинается тело документа.

. Комментарий %%Page открывает ту часть файла, которая описывает печать очередной страницы. У него два аргумента — метка страницы и ее номер. Метка представляет собой последовательность любых символов, кроме .пробела, и на печать не выводится. Номер страницы задается числом, начиная с 1.

Комментарий %%PageFonts, если он имеется, должен идти сразу после %%Page. Очередной комментарий %%Page обозначает конец предыдущей страницы и начало следующей. Конец последней страницы отмечается комментарием %%Trailer.

В языке PostScript нет четкого деления файла с описанием документа на раздел описания и раздел операторов (тело программы), как, например, в языках программирования Pascal или Фортран. Определения переменных в PostScript могут чередоваться с командами формирования изображения.

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

На рис. 4.2 представлена структура программы, написанная на языке описания страниц – PostScript

Рисунок 4.2. Структура программы

4.2.4 Обзор универсальных команд

Для описания команд используется следующая нотация:

аргумент! аргумвнт2, ... команда @ результат! результат2} ... %комментарий

Имя команды выделяется специальным шрифтом. Слева от имени описывается состояние стека до исполнения команды, а справа от стрелки — после ее исполнения. Минус вместо аргумента или результата обозначает отсутствие значения. Данные обозначаются словами, производными от названии типов или математических обозначений, характеризующих операцию. Такая запись приближена к записи текста программы. Например, описание операции сложения выглядит так:


Случайные файлы

Файл
89972.rtf
CHREZV.DOC
112396.rtf
63591.rtf
cerkv.doc