66556
РАБОТА С ТЕРМИНАЛОМ. УПРАВЛЕНИЕ ПРОЦЕССАМИ. ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ: КАНАЛЫ
Лабораторная работа
Информатика, кибернетика и программирование
Цель работы изучение механизмов управления устройствами ввода-вывода UNIX при помощи специальных файлов устройств основных принципов управления процессами способов создания и уничтожения процессов механизмов планирования процессов простейших видов взаимодействия процессов...
Русский
2014-08-22
32.29 KB
0 чел.
Министерство образования и науки Российской Федерации
Санкт-Петербургский государственный политехнический университет
Факультет технической кибернетики
Кафедра «Информационная безопасность компьютерных систем»
ОТЧЕТ
по лабораторной работе №6
«РАБОТА С ТЕРМИНАЛОМ.
УПРАВЛЕНИЕ ПРОЦЕССАМИ.
ВЗАИМОДЕЙСТВИЕ ПРОЦЕССОВ: КАНАЛЫ»
по курсу «Операционные системы»
Выполнил
студент гр. 2088/4 А.А.Чернышев
<подпись>
Руководитель А.С. Коноплев
<подпись>
Санкт-Петербург
2011
Цель работы - изучение механизмов управления устройствами ввода-вывода UNIX при помощи специальных файлов устройств, основных принципов управления процессами, способов создания и уничтожения процессов, механизмов планирования процессов, простейших видов взаимодействия процессов (посредством каналов pipe) в ОС UNIX и Windows.
Материалы из методического пособия 06.pdf, материалы интернет ресурсов msdn.com, и rus-linux.net, unix-manuals.com.
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;
}
Опишите функции создания и завершения процессов в UNIX.
int fork()- создание процесса, void exit(int status) завершение процесса.
Каков максимальный размер программного канала?
Зависит от системы.
Каков алгоритм системного вызова fork() в UNIX?
Сразу после выполнения системного вызова fork() основной и порожденный процессы являются абсолютными близнецами; управление и в том, и в другом находится в точке, непосредственно следующей за вызовом fork().
Чтобы программа могла разобраться, в каком процессе она теперь работает в основном или порожденном, функция fork() возвращает разные значения: 0 в порожденном процессе и целое положительное число (идентификатор порожденного процесса) в основном процессе.
При выполнении системного вызова fork() ядро системы осуществляет:
1) Выделение памяти под описатель нового процесса в таблице описателей процессов.
2) Назначение уникального идентификатора процесса (PID) для вновь образованного процесса.
3) Создание логической копии процесса, выполняющего системный вызов fork, включая полное копирование содержимого виртуальной памяти процесса-предка во вновь создаваемую виртуальную память, а также копирование составляющих контекста процесса-предка в режиме ядра.
4) Копирование таблицы файловых дескрипторов родительского процесса и увеличение счетчиков открытых файлов (процесс-потомок автоматически наследует все открытые файлы своего родителя).
5) Возврат из системного вызова с передачей идентификатора нового процесса в процессе-предке и нулевого значения в процессе-потомке.
ОС 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 в. в Гер... | |||