Разработка программы контроля выполнения хода работ по сетевому графику

Изучение основ системного программирования под операционную систему UNIX и разработка программы контроля выполнения хода работ по сетевому графику. Программно-технические требования. Кодирование на языке программирования Си, компиляция и тестирование.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 12.05.2013
Размер файла 101,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

16

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание

Введение

Разработка программы контроля выполнения хода работ по сетевому графику

1.1 Анализ требований

1.2 Проектирование

1.3 Кодирование

1.4 Тестирование

Заключение

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

Приложения

Введение

Скоро исполнится 30 лет с момента создания операционной системы UNIX. Изначально созданная для компьютера PDP-7 с 4 килобайтами оперативной памяти, сегодня UNIX работает на множестве аппаратных платформ, начиная с обыкновенного PC и заканчивая мощными многопроцессорными системами и суперкомпьютерами.

Перечислим основные черты UNIX, позволяющие понять причины долгожительства этой системы:

Код системы написан на языке высокого уровня С, что сделало ее простой для понимания, изменений и переноса на другие платформы. По оценке одного из создателей UNIX Дэнниса Ритчи, система на языке С имела на 20-40 % больший размер, а производительность ее была на 20% ниже аналогичной системы, написанной на ассемблере. Однако ясность и переносимость, а в результате - и открытость системы сыграли решающую роль в ее популярности. Можно смело сказать, что UNIX является одной из наиболее открытых систем. Несмотря на то. что большинство UNIX поставляется сегодня не в исходных текстах, а в виде бинарных файлов, система остается легко расширяемой и настраиваемой.

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

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

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

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

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

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

В центре находится ядро системы (kernel). Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей архитектуры. Ядро имеет набор услуг, предоставляемых прикладным программам. К услугам ядра относятся операции ввода\вывода (открытия, чтения, записи и управления файлами), создания и управления процессами, их синхронизации и межпроцессного взаимодействия. Все приложения запрашивают услуги ядра посредством системных вызовов.

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

Linux изначально был написан Линасом Торвальдсом, а затем неоднократно улучшался специалистами во всем мире, причем ни USL, ни Университет Беркли не участвовали в его создании. Он является клоном операционной системы UNIX.

Linux поддерживает большую часть популярного UNIX'овского программного обеспечения, включая систему X Window. Это довольно большая программа, разработанная в Массачусетском Технологическом институте, позволяющая компьютерам создавать графические окна и используемая на многих различных UNIX-овских платформах. Linux удовлетворяет требованиям POSIX-1 (документ стандарта операционных систем). Linux также во многом согласуется с POSIX-2, другим документом IEEE по стандартизации операционных систем. Он является смешением всех трех стандартов: BSD, System 5 и POSIX.

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

Развитие Linux'а разделилось на две ветви. Первая, с номерами версий, начинающимися с 1.0, считается более стабильной, надежной версией Linux'а. Вторая, чьи версии нумеруются 1.1, является более дерзкой и быстрее развивающейся и, следовательно (к сожалению), более богатой ошибками.

В данной курсовой работе представлено изучение основ системного программирования под операционную систему UNIX и разработка программы контроля выполнения хода работ по сетевому графику. Объектом исследования работы являются процессы операционной системы UNIX, и их функционирование.

1. Разработка программы контроля выполнения хода работ по сетевому графику

1.1 Анализ требований

Требования к разработке:

1. Сетевой график задан в виде нескольких параллельных ветвей. Каждая ветка имеет определенное время выполнения.

2. Последовательность выполнения ветвей фиксирована.

3. Реализация модели сетевого графика организуется путем порождения и уничтожения соответствующих процессов

4. Последовательность и времена выполнения этапов графика фиксируется в файле. По завершении работы содержимое файла выдаётся на экран.

Программно-технические требования:

1. Операционная система: Linux RedHat 7.2 или др. совместимые.

2. Язык программирования: Си.

3. Процессор: Intel Pentium 166 и выше.

4. ОЗУ: 32 mb и выше.

1.2 Проектирование

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

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

2.- готовность: процесс получил все ресурсы, кроме процессорного времени;

3.- активность: программа выполняется на процессоре;

4.- ожидание: программа ожидает выделения какого-либо ресурса;

5.- завершение: (нормальное или аварийное) завершение процесса: освобождаются все ресурсы, выделенные процессу и уничтожаются все структуры данных, связанные с этим процессом.

Процессы в UNIX делятся на следующие типы:

1. Системный процесс - часть ядра операционной системы (управление памятью);

2. процесс-демон - специальный процессы, которые запускаются при инициализации системы и работают в фоновом режиме, не имеют связи с внешним миром {низкоприоритетные системные процессы} (управление системной печатью, сетевой сервис, терминальный доступ);

3. прикладные процессы - порождаются сеансами пользователя.

Состояние:

1. процесс выполняется в режиме задачи;

2. процесс выполняется в режиме ядра;

3. процесс готов к запуску и находится в памяти;

4. процесс приостановлен, но находится в памяти;

5. процесс готов к запуску, но выгружен;

6. процесс приостановлен и выгружен;

7. процесс зарезервирован;

8. создаётся процесс;

9. завершение процесса.

Когда процесс прекратил свое существование, то сохраняется учетная информация, т.е. он находится в состоянии зомби (9).

С порождением связан дескриптор процесса. Информация в дескрипторе - совокупность атрибутов процесса:

PID - идентификатор процесса (системное имя этого процесса), присваивается при создании процесса;

PPID - идентификатор родительского процесса;

RID - реальный идентификатор пользователя;

EVID - эффективный идентификатор пользователя;

RGID, EGID - реальные идентификаторы группы;

PGID - идентификатор группы;

SID - идентификатор сеанса;

TTY - терминальная линия;

Nice Number - приоритет процесса.

Процесс Init запускается при инициализации системы и порождает все остальные процессы. Общий механизм порождения процесса:

Fork () - функция используется для создания порожденного процесса, который является копией родительского процесса. Функция fork не принимает аргументов и возвращает значение типа pid_t (определяемое в <sys/types.h>).

Этот вызов может давать один из следующих результатов:

1. Успешное выполнение. Создается порожденный процесс, и функция возвращает идентификатор этого порожденного процесса родительскому, а в процесс-потомок возвращается 0.

2. Неудачное выполнение. Порожденный процесс не создается, а функция присваивает переменной errno код ошибки и возвращает значение -1.

Существуют устанавливаемые системой ограничения на максимальное количество процессов, создаваемых одним пользователем (CHILD_MAX). Процесс получает значение CHILD_MAX с помощью функции sysconf.

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

alarm(unsigned int time_interval)

Аргумент time_interval - это время в секундах, по истечении которого ядро пошлет сигнал SIGALRM в вызывающий процесс. Если значение time_interval равно 0, будильник выключается. Возвращаемое значение alarm - это число секунд, оставшееся до срабатывания таймера процесса и соответствующее установке, которая была сделана в предыдущем системном вызове alarm. Установки, произведенные в результате предыдущего вызова alarm, отменяются, и таймер процесса сбрасывается при каждом новом вызрве alarm. Таймер процесса не передается в порожденный процесс, созданный функцией fork.

Завершение процесса выполняется по функции EXIT. По вызову EXIT процесс завершается, отключаются сигналы, закрываются файлы, сохраняется код возврата и статистика выполнения. Код возврата определяется параметром функции Exit. Окончательно ликвидировать процесс можно только по функции Wait. Эта функция используется для синхронизации родительских и дочерних процессов. Если родительский процесс породил какой-то процесс, он должен получить информацию об его завершении. Wait возвращает значение идентификатора прекратившего свое существование потока, в качестве параметра передается адрес на переменную целого типа куда помещается код возврата.

В курсовой работе необходимо реализовать модель сетевого графика. Схематически сетевой график можно представить в следующем виде:

где по оси Х откладываем t нач (время запуска процесса), по оси Y откладываем номер процесса по порядку. t вып - время выполнения процесса.

В модуле 3.c содержатся функции для организации реализации модели сетевого графика. При запуске данного модуля возможно указание имени файла, в который будут помещены результаты выполнения, которые потом будут выведены на экран из этого файла. Если имя файла не указывать, то результаты выполнеия будут отображаться на экране.

Краткая спецификация разработанных функций приведена ниже:

Название функции: main

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

Входные параметры:

Выходные параметры:

Название функции: child

Назначение:

Входные параметры:

Выходные параметры:

Название функции: child

Назначение:

Входные параметры:

Выходные параметры:

1.3 Кодирование

Кодирование осуществлено на языке С. Результат кодирования приведен в приложении А.

1.4 Тестирование

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

Заключение

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

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

В ходе решения задачи были разработана программа, которая организовывает реализацию модели сетевого графика путем порождения и уничтожения соответствующих процессов операционной системы UNIX. Было произведено кодирование на языке программирования Си, компиляция и тестирование, в ходе которого было выявлено, что программа работает корректно на тестовом наборе данных.

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

программирование компиляция сетевой кодирование

1. “Системное программое обеспечение”. Гордеев А.В., Молчанов А.Ю., “Питер” 2001.

2. Рабочевский “ОС - UNIX” BHV - с-Петербург 1997.

3. Курс лекций «Операционные системы», Шашков Б.Д.

4. Т. Чан. С++ для UNIX. Спб.: bhv, 1996

Приложение А. Листинг программы

struct pr {char name; int time;};

#define NCHLD 5

struct pr graphik[NCHLD]={{'A',3},{'B',6},{'C',4},{'D',2},{'E',5}};

int i;

void OnAlarm()

{

Stop=times(NULL);

printf("\n");

printf("Stop process %c\n",graphik[i].name);

printf("Stop time: %g\n",Stop/(double)HZ);

printf("Executing time = %g seconds\n",(Stop-Start)/(double)HZ);

exit(0);

}

void Child()

{

int pid;

pid=fork();

if (pid==-1)

{

perror("fork");

exit(1);

}

if (pid==0)

{

Start=times(NULL);

signal(SIGALRM,OnAlarm);

alarm(graphik[i].time);

printf("\n");

printf("Starting process %c\n",graphik[i].name);

printf("Start time: %g\n",Start/(double)HZ);

printf("PID PPID\n%d %d\n",getpid(),getppid());

pause();

};

}

main(int argc,char *argv[])

{

FILE *about;

int handle;

HZ=sysconf(_SC_CLK_TCK);

handle=dup(fileno(stdout));

about=freopen(argv[1],"w",stdout);

setbuf(about,NULL);

printf("Parent process:\nPID PPID\n%d %d\n",getpid(),getppid());

for (i=0; i<NCHLD; i++)

{

Child();

sleep(2);

};

for (i=0; i<NCHLD; i++) { wait(NULL); };

fclose(about);

stdout=fdopen(handle,"w");

printf("REPORT FILE - %s\n",argv[1]);

}

Приложение Б. Результаты тестирования

Parent process:

PID PPID

1384 1301

Starting process A

Start time: 327.9

PID PPID

1385 1384

Starting process B

Start time: 329.91

PID PPID

1386 1384

Stop process A

Stop time: 330.9

Executing time = 3 seconds

Starting process C

Start time: 331.92

PID PPID

1387 1384

Starting process D

Start time: 333.93

PID PPID

1388 1384

Stop process B

Stop time: 335.91

Executing time = 6 seconds

Stop process C

Stop time: 335.92

Executing time = 4 seconds

Stop process D

Stop time: 335.93

Executing time = 2 seconds

Starting process E

Start time: 335.94

PID PPID

1389 1384

Stop process E

Stop time: 340.94

Executing time = 5 seconds

Размещено на Allbest.ru

...

Подобные документы

  • Разработка программы с использованием языка программирования Pascal для выполнения алгебраических действий с действительными числами без знака в шестнадцатеричной системе счисления. Описание хода выполнения, схема алгоритма, листинг программы, ее функции.

    реферат [687,5 K], добавлен 28.10.2011

  • Изучение основ программирования и создание полноценного приложения в среде программирования Delphi. Разработка эскизного и технического проектов программы. Внедрение выполнения программы. Разработка рабочего проекта, спецификация и текст программы.

    курсовая работа [560,1 K], добавлен 18.07.2012

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

    курсовая работа [336,6 K], добавлен 24.04.2010

  • Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.

    курсовая работа [2,7 M], добавлен 21.02.2011

  • Основные сведения о языке программирования Pascal. Листинг программы с комментариями. Диагональ элементов вектора и матрицы. Использование команд ввода-вывода информации. Быстродействие выполнения программы при компиляции. Отражение процессов вычисления.

    курсовая работа [1,9 M], добавлен 05.05.2009

  • Обзор некоторых сведений о матрицах. Описание этапов работы с функциями. Проектирование программы для выполнения вычислений над матрицами в среде программирования MSVisualStudio 2008, при помощи языка программирования C++. Проверка результатов в Mathcad.

    курсовая работа [182,0 K], добавлен 06.04.2013

  • Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.

    контрольная работа [204,4 K], добавлен 26.01.2013

  • Компиляция программ на языке C/C++. Компиляция нескольких файлов. Библиотеки объектных файлов. Создание статической и динамической библиотеки. Функции работы. Создание динамической библиотеки для решения системы линейных уравнений.

    курсовая работа [27,4 K], добавлен 07.08.2007

  • Минимальные технические требования для работы с программным продуктом. Требования к условиям выполнения работ по проектированию. Выбор среды и языка программирования. Требования к функционированию. Инфологическая модель структуры хранения данных.

    дипломная работа [3,3 M], добавлен 21.11.2011

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

    дипломная работа [2,8 M], добавлен 21.07.2013

  • Анализ затрат и прибыли. Создание программного проекта для решения задачи о прибыли и убытках на языке программирования C#. Использование функций и переменных, компиляция программы. Алгоритмы и структуры данных. Тестирование программного обеспечения.

    курсовая работа [1,2 M], добавлен 03.01.2015

  • Разработка программы в среде Delphi, показывающей на экране возможные варианты выбранной шахматной фигуры для хода. Спецификация исходных данных и функций программы, тексты разработанных классов приложения и их ключевые методы, тестирование программы.

    курсовая работа [69,4 K], добавлен 19.10.2010

  • Рассмотрение особенностей языка программирования С++. Пример составления программы - информационно-поискового справочника. Описание алгоритмов коррекции данных, введённых пользователем. Тестирование полученной программы, предусмотрение ее защиты.

    курсовая работа [20,0 K], добавлен 05.03.2015

  • Алгоритм написания программы для поиска музыкальных файлов по электронному каталогу магазина на языке программирования С++. Проектирование консольного меню для обеспечения взаимодействия пользователя с компьютером. Тестирование программы на компиляторе.

    курсовая работа [548,9 K], добавлен 25.11.2015

  • Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.

    курсовая работа [506,5 K], добавлен 21.02.2011

  • Разработка программы, которая выявляет в прямоугольной матрице все подматрицы, состоящие только из m-значных целых чисел. Использование компилируемого языка программирования общего назначения C/C++. Обработка алгоритмов, кодирование программных средств.

    курсовая работа [980,1 K], добавлен 05.03.2015

  • Типы кластеров и анализ кластерных технологий. Принципы работы среды MPICH. Разработка рабочих заданий для лабораторных работ, программного обеспечения для лабораторного комплекса. Подготовка рабочих мест и описание хода выполнения лабораторных работ.

    дипломная работа [3,7 M], добавлен 13.02.2016

  • Разработка и реализация программы расчета заданных функций на языке программирования VBA. Математическая модель, параметры и характеристики задачи, критерии оценки эффективности созданного модуля. Разработка алгоритма и тестирование программного модуля.

    курсовая работа [488,7 K], добавлен 08.09.2010

  • Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.

    курсовая работа [434,1 K], добавлен 27.08.2012

  • Настройка параметров программы Microsoft Project. Таблицы как основные средства хранения данных в MS Project. Подготовка к составлению плана и отслеживание хода работ по нему. Форматирование диаграмм Ганта. Набор функций для работы с сетевым графиком.

    практическая работа [3,5 M], добавлен 25.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.