Копирование содержимого Файла 1 в остальные файлы

13064
знака
0
таблиц
2
изображения

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1     Анализ задания и разработка алгоритма

2     Теоретические сведения

3     Листинг программы

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

ВЫВОДЫ

ЛИТЕРАТУРА


ВВЕДЕНИЕ

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

Процесс — понятие, которое определяется по-разному. Это может быть — “упорядоченный набор команд и принадлежащих ему ресурсов”. С точки зрения ОС Unix процесс — это объект, зарегистрированный в специальной таблице процессов.

Телом процесса называется набор команд и данных, которыми оперирует процесс.

Контекст процесса — атрибут, который присутствует практически во всех ОС, в разных ОС он может называться по-разному. Контексты всех процессов размещаются в адресном пространстве ОС и содержат оперативную информацию о состоянии процесса и текущую информацию, связанную с процессом и его запуском.


1 АНАЛИЗ ЗАДАНИЯ И РАЗРАБОТКА АЛГОРИТМА

По заданию согласно варианта по списку необходимо организовать копирование содержимого из Файла 1 в остальные файлы (1->2, 1->3, 1->4).

Основные принципы по которым будет создаваться программа:

·   Будут созданы 4-е процесса, а именно 1-ый процесс породит 2-ый процесс, 1-ый процесс, в свою очередь породит 3-ий процесс, 1-ый процесс породит 4-тый процесс.

·   Каждый процесс будет иметь файл с соответствующими именами – file1, file2, file3, file4.

·   Процессы будут обмениваться через разделяемую память и временный файл.

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

Процессы Process1 и Process4 обмениваются пользовательскими сигналами, по которым выполняется запись процессом Process1 во временный файл Temp file, после чего Process4 считывает из него данные, удаляет временный файл, затем записывает информацию в File4, ждет завершения обмена между процессами Process2, Process3, закрывает разделяемую память и уничтожает всю группу процессов.

Процессы Process1 и Process2 взаимодействуют с помощью семафоров. Process1 записывает в разделяемую память содержимое файла File1, после этого по семафору Process2 считывает из памяти данные и пишет в File2.

Процессы Process2 и Process3 взаимодействуют с помощью очереди сообщений. Когда данные уже записаны процессом Process2 в File2, он отсылает сообщение своему потомку, после чего Process3 считывает из разделяемой памяти данные, пишет в свой файл File3, отсылает сообщение назад и завершается, после чего закрывается и его родитель Process2.

Рис.1 Схема взаимодействия процессов

2 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

С использованием функций в языке СИ связаны три понятия - определение функции (описание действий, выполняемых функцией), объявление функции (задание формы обращения к функции) и вызов функции.

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

Функция fork:

int fork ( )

Вызов fork приводит к созданию нового процесса (порожденного процесса) - точной копии процесса, сделавшего вызов (родительского процесса). Точнее, порожденный процесс наследует у родительского процесса следующие характеристики:

·        Окружение.

·        Флаг "закрыть при выполнении вызова exec"

·        Способы обработки сигналов (то есть SIG_DFL, SIG_IGN, SIG_HOLD, адреса функций обработки сигналов).

·        Разрешение переустанавливать действующий идентификатор пользователя.

·        Разрешение переустанавливать действующий идентификатор группы.

·        Состояние профилирования (включено/выключено).

·        Значение поправки к приоритету.

·        Все присоединенные разделяемые сегменты памяти.

·        Идентификатор группы процессов.

·        Идентификатор группы терминала.

·        Текущий рабочий каталог.

·        Корневой каталог.

·        Маска режима создания файлов.

·        Ограничение на размер файла.

Порожденный процесс отличается от родительского процесса следующим:

·        Порожденный процесс имеет свой уникальный идентификатор процесса.

·        Порожденный процесс имеет иной идентификатор родительского процесса, равный идентификатору процесса, его породившего.

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

·        Все semadj значения сбрасываются.

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

·        Обнуляются счетчики времени, потраченного для обслуживания этого процесса (tms_utime, tms_stime, tms_cutime, tms_cstime). Отменяется запрос к будильнику.


Информация о работе «Копирование содержимого Файла 1 в остальные файлы»
Раздел: Информатика, программирование
Количество знаков с пробелами: 13064
Количество таблиц: 0
Количество изображений: 2

Похожие работы

Скачать
112108
40
5

... исключающего ИЛИ двух операндов. Результат операции помещается в первый операнд. Эту операцию удобно использовать для инвертирования или сравнения определенных битов операндов.2.   Структура и выполнение EXE-файла.   EXE-модуль, созданный компоновщиком, состоит из следующих двух частей: 1) заголовок - запись, содержащая информацию по управлению и настройке программы и 2) собственно загрузочный ...

Скачать
59535
0
13

... меню. Нет необходимости создавать данные файлы вручную. Для этого мы воспользуемся программой Resource Workshop. 7.1. Создание ресурсов программы с помощью Resource Workshop 1. Запустите компилятор. Для этого активизируйте пиктограмму Borland C ++. 2. Выполните команду Project|New project. 3. Как было описано ранее, выберите имя и путь к создаваемому проекту. 4. Выберите Advanced в ...

Скачать
4229
0
0

... отмены вывода на экран строки, следующей непосредственно за ним. В остальных случаях команда ЕСНО выводит на экран текст, следующий за ней в строке. GOTO Применяется для перехода к определенной строке командного файла. При выполнении команды GOTO LABEL происходит переход к строке, начинающейся с текста :LABEL. IF Служит для проверки условия во время выполнения командного файла. Формат команды: IF ...

Скачать
11798
0
6

... элементы другого модуля будут доступны в данном модуле. Файл формы Форма является одним из важнейших элементов приложения C++ Builder. Процесс редактирования формы происходит при добавлении к форме компонентов, изменении их свойств, создании обработчиков событий. Рис. 4. Структура файла формы Когда к проекту добавляется новая форма, создаются три отдельных файла: Файл модуля (.cpp) - ...

0 комментариев


Наверх