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 в целом достаточно похожа предоставляемой функциональностью. Основной проблемой при таком взаимодействии процессов может стать совместное использование канала несколькими процессами, однако для однонаправленной передачи данных одним процессом другому этот способ подходит идеально.


 

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

42878. Графы и алгоритмы на графах. Решение обыкновенных дифференциальных уравнений. Разработка программы для решения системы ОДУ, описывающей простейшую модель экосистемы (модель Лотка-Вольтерра). Методы оптимизации 1.58 MB
  Оптимизация как раздел математики существует достаточно давно. Оптимизация - это выбор, т.е. то, чем постоянно приходится заниматься в повседневной жизни. Термином "оптимизация" в литературе обозначают процесс или последовательность операций, позволяющих получить уточненное решение. Хотя конечной целью оптимизации является отыскание наилучшего или "оптимального" решения, обычно приходится довольствоваться улучшением известных решений, а не доведением их до совершенства. По этому под оптимизацией понимают скорее стремление к совершенству, которое, возможно, и не будет достигнуто.
42879. Создания простейшей экспертной системы 69.17 KB
  Если реакция системы не понятна пользователю то он может потребовать объяснения: CLIPS Первоначально аббревиатура CLIPS была названием языка С Lnguge Integrted Production System язык С интегрированный с продукционными системами удобного для разработки баз знаний и макетов экспертных систем. Теперь CLIPS представляет собой современный инструмент предназначенный для создания экспертных систем expert system tool. CLIPS состоит из интерактивной среды экспертной оболочки со своим способом представления знаний гибкого и мощного...
42880. Состояния международного туризма на современном этапе 84.24 KB
  Туризм – явление, известное каждому. Во все времена нашу планету пересекали многочисленные путешественники и первопроходцы. Но лишь недавно туризм возник как специфическая форма деятельности людей. Каждый из нас представляет себе туризм как отрасль, более или менее известную, поскольку все мы куда-то ездили и проводили отпуска вдали от дома. Туризм - сравнительно молодой феномен, имеющий, однако, корни, уходящие в древние времена.
42881. Поняття туризму. Класифікація, види і форми туризму 59.48 KB
  Термін туризм (tourism) першим вжив В. Жекмо в 1830 р. Слово «туризм» походить від французького «tour», що означає «прогулянка». До недавнього часу в різних країнах поняття «туризм», «турист» розумілися неоднаково. З розвитком туризму в сучасному світі, особливо міжнародного і з створенням міжнародних туристичних організацій, стало необхідним дати загальноприйняте визначення поняття «турист» і відповідно «туризм».
42882. SMS-Flooder 284.94 KB
  При атаках автоматизированных систем достаточно сложно определить предсказать уровень ущерба и риска который они могут предоставить. На основе вышеизложенного рассмотрим момент риска по формуле: Отсюда среднее значение ущерба для кривой риска будет равно Далее получим центральный момент риска: Откуда мы можем выразить второй центральный момент риска: Тогда среднеквадратичное отклонение будет иметь вид: Также оно может быть найдено относительно моды риска . Она может выражаться через решение следующего уравнения: Чтобы оценить ассиметрию...
42883. Химическая металлизация печатных плат 1.32 MB
  И так как вытравливается только этот минимальный слой около 3 мкм то величина подтравов минимальна до 2 мкм что позволяет воспроизводить проводники малой ширины. Поэтому в методе необходимо применять фоторезист толщиной около 30 мкм. Затяжкой Тентинг метод с общей металлизацией поверхности заготовки Слои 1 2 3 4 5 18 мкм 18 мкм 18 мкм Фольга 3 мкм 6 мкм 35 мкм Общая металлизация поверхности 30 мкм 40 мкм 40 мкм 50 мкм Фоторезист 25 мкм 35 мкм 35 мкм Металлизация рисунка 15 мкм 15 мкм Металлорезист 3 мкм 18 мкм 24 мкм 53 мкм Глубина...
42884. Разработка программы для построения графика временной функции в реальном и машинном времени 439 KB
  Создание MS-DOS QuickBASIC (сокращенное обозначение – QB) в середине 80-х годов произвело настоящую революцию в мире BASIC, результатом которой было то, что впервые этот язык занял достаточно прочные позиции среди средств разработки серьезных прикладных систем. В QuickBASIC в достаточно полной мере реализованы идеи структурного и модульного программирования, возможности использования процедур и функций.
42885. Разработка обучающей программы по планированию перемещения артиллерии при заданных рубежах: готовности; начала перемещения; выхода в атаку 247.06 KB
  После запуска следует выбрать какие рубежи заданы Для примера в варианте расчета при заданном рубеже начала перемещения дана схема отображающая перемещения войск в зависимости от введенных данных.