66556

РАБОТА С ТЕРМИНАЛОМ. УПРАВЛЕНИЕ ПРОЦЕССАМИ. ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ: КАНАЛЫ

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы изучение механизмов управления устройствами ввода-вывода UNIX при помощи специальных файлов устройств основных принципов управления процессами способов создания и уничтожения процессов механизмов планирования процессов простейших видов взаимодействия процессов...

Русский

2014-08-22

32.29 KB

0 чел.

Министерство образования и науки Российской Федерации

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра «Информационная безопасность компьютерных систем»

ОТЧЕТ

по лабораторной работе №6

«РАБОТА С ТЕРМИНАЛОМ.

УПРАВЛЕНИЕ ПРОЦЕССАМИ.

ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ: КАНАЛЫ»

по курсу «Операционные системы»

Выполнил

студент гр. 2088/4    А.А.Чернышев

                           <подпись>

Руководитель     А.С. Коноплев

                           <подпись>

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

2011

  1.  Формулировка задания

Цель работы - изучение механизмов управления устройствами ввода-вывода UNIX при помощи специальных файлов устройств, основных принципов управления процессами, способов создания и уничтожения процессов, механизмов планирования процессов, простейших видов взаимодействия процессов (посредством каналов pipe) в ОС UNIX и Windows.

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

Материалы из методического пособия 06.pdf, материалы интернет ресурсов msdn.com, и rus-linux.net, unix-manuals.com.

3. Результаты работы

3.1. Выполнение индивидуального задания

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

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

 

//=========================================================//

//========================Пример 7=========================//

#include <sys/types.h>

#include <unistd.h>

#include <stdio.h>

int main()

{

   int fd[2], result;

   size_t size;

   char resstring[128];

   //pipe

   if(pipe(fd) < 0)

   {

       printf("Can\'t create pipe\n");

       exit(-1);

   }

   //create new proc

   result = fork();

   if(result <0)

   {

       printf("Can\'t fork child\n");

       exit(-1);

   }

   else if (result > 0)

   {

       //parent proc

       close(fd[0]);

       size = write(fd[1], "It`s a message from parent to child!", 128);

       if(size != 128)

       {

           printf("Can\'t write all string\n");

           exit(-1);

       }

       close(fd[1]);

       printf("Parent exit\n");

   }

   else

   {

       //child proc

       close(fd[1]);

       size = read(fd[0], resstring, 128); //попробуем прочитать из pip`a в 1-й раз

       if(size < 0)

       {

           printf("Can\'t read string\n");

           exit(-1);

       }

       printf("%s\n1st time read %dbytes\n",resstring, size); //выведет количество прочтенных байт

       resstring[0]  = '\0';

       size = read(fd[0], resstring, 128); //попробуем прочитать из pip`a во 2-й раз

       if(size < 0)

       {

           printf("Can\'t read string\n");

           exit(-1);

       }

       printf("%s2nd time read: %dbytes\n",resstring, size); //выведет количество прочтенных байт

       close(fd[0]);

   }

   return 0;

}

3.2. Ответы на контрольные вопросы

Опишите функции создания и завершения процессов в UNIX.

int fork()- создание процесса, void exit(int status) – завершение процесса.

Каков максимальный размер программного канала?

Зависит от системы.

Каков алгоритм системного вызова fork() в UNIX?

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

Чтобы программа могла разобраться, в каком процессе она теперь работает – в основном или порожденном, функция fork() возвращает разные значения: 0 в порожденном процессе и целое положительное число (идентификатор порожденного процесса) в основном процессе.

При выполнении системного вызова fork() ядро системы осуществляет:

1) Выделение памяти под описатель нового процесса в таблице описателей процессов.

2) Назначение уникального идентификатора процесса (PID) для вновь образованного процесса.

3) Создание логической копии процесса, выполняющего системный вызов fork, включая полное копирование содержимого виртуальной памяти процесса-предка во вновь создаваемую виртуальную память, а также копирование составляющих контекста процесса-предка в режиме ядра.

4) Копирование таблицы файловых дескрипторов родительского процесса и увеличение счетчиков открытых файлов (процесс-потомок автоматически наследует все открытые файлы своего родителя).

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

4. Выводы

ОС UNIX предоставляет достаточно удобный интерфейс для работы с терминалом. Одной из составляющих удобства является файл терминала.

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

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


 

А также другие работы, которые могут Вас заинтересовать

8582. Рационалистическая философия Р. Декарта и Лейбница 33 KB
  Рационалистическая философия Р. Декарта и Лейбница. Рационалистическая философия Р. Декарта. Рене Декарт (1596) - французский философ, стоявший у истоков рационалистической традиции. Исходной точкой в концепции Декарта является сомнен...
8583. Материализм Дж. Локка и Т. Гоббса 27.5 KB
  Материализм Дж. Локка и Т. Гоббса Материалистический сенсуализм усматривает в чувственной деятельности человека связь его сознания с внешним миром, а в показаниях его органов чувств - отражение этого мира. Видными...
8584. Учение Б. Спинозы о субстанции 30.5 KB
  Учение Б. Спинозы о субстанции. Онтологическая функция понятия Бога, в особенности пантеистического, состоящая в максимальном заострении проблемы единства мира, в высокой степени присуща философской доктрине Спинозы. Уже в первом своем произведении ...
8585. Субъективный идеализм Беркли и агностицизм Д. Юма 33 KB
  Субъективный идеализм Беркли и агностицизм Д. Юма. Субъективный идеализм Беркли. Учение, созданное Беркли это - субъективный идеализм. Отвергнув бытие материи, оно признает существование только человеческого сознания, в котором Беркли различает иде...
8586. Критическая философия И. Канта 32.5 KB
  Критическая философия И. Канта Основоположником немецкой классической философии является Иммануил Кант. Все творчество И. Канта можно разделить на два больших периода: докритический и критический. В докритический период И. Кант стоял н...
8587. Объективный идеализм Г.В.Ф. Гегеля 31.5 KB
  Объективный идеализм Г.В.Ф. Гегеля. Гегель в своей философии преимущество и первенство отдавал духу (философскому мышлению) над материей, то его справедливо называют идеалистом а поскольку он отрицал взгляды субъективных идеалистов и считал, что в ...
8588. Антропологический материализм Л.Фейербаха 33 KB
  Антропологический материализм Л.Фейербаха. Фейербах - последовательный и воинствующий материалист. Для него в мире существует лишь одно бытие - материя. Для него Материя и Бытие понятия тождественные, и он часто употребляет одно понятие вместо д...
8589. Кризис классической философии. Становление и развитие неклассической философии, ее основные черты 32 KB
  Кризис классической философии. Становление и развитие неклассической философии, ее основные черты. Кризис классической философии. Кризис классической философии и рациональности во второй половине XIX в. обнажает проблемы иррационального, интуитивног...
8590. Гуманитарно-антропологическое направление постклассической философии: философия жизни, экзистенциализм, неотомизм 34 KB
  Гуманитарно-антропологическое направление постклассической философии: философия жизни, экзистенциализм, неотомизм. Философия жизни. Философия жизни - направление в западно-европейской философской мысли, сложившееся в последней трети 19 в. в Гер...