🗊Презентация Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out)

Нажмите для полного просмотра!
Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №1Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №2Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №3Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №4Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №5Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №6Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №7Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №8Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №9Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №10Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №11Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №12Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №13Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №14Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №15Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №16Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №17Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №18Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №19Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №20Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №21

Содержание

Вы можете ознакомиться и скачать презентацию на тему Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out). Доклад-сообщение содержит 21 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Архитектура ЭВМ.
Операционные системы
Власов Евгений
Описание слайда:
Архитектура ЭВМ. Операционные системы Власов Евгений

Слайд 2





FIFO (first-in-first-out)
Для организации потокового взаимодействия любых (включая неродственные) процессов в операционной системе UNIX приме­няется средство связи, получившее название FIFO (от First Input First Output) или именованный pipe.
FIFO во всем подобен pipe, за одним исключением: доступ к FIFO  процессы могут получать не через родственные связи, а через файло­вую систему.
Описание слайда:
FIFO (first-in-first-out) Для организации потокового взаимодействия любых (включая неродственные) процессов в операционной системе UNIX приме­няется средство связи, получившее название FIFO (от First Input First Output) или именованный pipe. FIFO во всем подобен pipe, за одним исключением: доступ к FIFO процессы могут получать не через родственные связи, а через файло­вую систему.

Слайд 3





FIFO
Для этого при создании FIFO на диске создается файл специального типа, обращаясь к которому процессы могут обмениваться информацией. Для создания FIFO используется системный вызов mknod() или существующая в некоторых версиях UNIX функция mkfifo(). 
После открытия FIFO ведет себя точно так же, как и pipe. Для дальнейшей работы с ним применяются системные вызовы read(), write() и close().
Описание слайда:
FIFO Для этого при создании FIFO на диске создается файл специального типа, обращаясь к которому процессы могут обмениваться информацией. Для создания FIFO используется системный вызов mknod() или существующая в некоторых версиях UNIX функция mkfifo(). После открытия FIFO ведет себя точно так же, как и pipe. Для дальнейшей работы с ним применяются системные вызовы read(), write() и close().

Слайд 4





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

Слайд 5





FIFO
ВАЖНО!
При работе этих системных вызовов не происходит действительного выделения области ад­ресного пространства операционной системы под именованный pipe, а только заводится файл-метка, существование которой позволяет осуществить реальную организацию FIFO в памяти при его открытии с помощью системного вызова open(). 
Системный вызов lseek() к FIFO не применим!
Описание слайда:
FIFO ВАЖНО! При работе этих системных вызовов не происходит действительного выделения области ад­ресного пространства операционной системы под именованный pipe, а только заводится файл-метка, существование которой позволяет осуществить реальную организацию FIFO в памяти при его открытии с помощью системного вызова open(). Системный вызов lseek() к FIFO не применим!

Слайд 6





Использование системного вызова mknod() для создания FIFO
#include <sys/stat.h>
#include <unistd.h>
int mknod(char *path, int mode, int dev);
Параметр dev является несущественным в нашей ситуации, и мы будем всегда задавать его равным 0.
Параметр path является указателем на строку, содержащую полное или относительное имя файла, ко­торый будет являться меткой FIFO на диске. Для успешного создания FIFO файла с таким именем перед вызовом существовать не должно.
Описание слайда:
Использование системного вызова mknod() для создания FIFO #include <sys/stat.h> #include <unistd.h> int mknod(char *path, int mode, int dev); Параметр dev является несущественным в нашей ситуации, и мы будем всегда задавать его равным 0. Параметр path является указателем на строку, содержащую полное или относительное имя файла, ко­торый будет являться меткой FIFO на диске. Для успешного создания FIFO файла с таким именем перед вызовом существовать не должно.

Слайд 7





Параметр mode устанавливает атрибуты прав доступа различных категорий пользователей к FIFO, аналогичные атрибутам задающим права доступа для файлов. Этот параметр задается как результат побитовой операции «или» значения S_IFIFO и параметра mode.
Параметр mode устанавливает атрибуты прав доступа различных категорий пользователей к FIFO, аналогичные атрибутам задающим права доступа для файлов. Этот параметр задается как результат побитовой операции «или» значения S_IFIFO и параметра mode.
При создании FIFO реально устанавливаемые права доступа получаются из стандартной комбинации параметра mode и маски создания файлов текущего процесса umask, а именно – они равны (0777 & mode) & ~umask.
Описание слайда:
Параметр mode устанавливает атрибуты прав доступа различных категорий пользователей к FIFO, аналогичные атрибутам задающим права доступа для файлов. Этот параметр задается как результат побитовой операции «или» значения S_IFIFO и параметра mode. Параметр mode устанавливает атрибуты прав доступа различных категорий пользователей к FIFO, аналогичные атрибутам задающим права доступа для файлов. Этот параметр задается как результат побитовой операции «или» значения S_IFIFO и параметра mode. При создании FIFO реально устанавливаемые права доступа получаются из стандартной комбинации параметра mode и маски создания файлов текущего процесса umask, а именно – они равны (0777 & mode) & ~umask.

Слайд 8





Использование системного вызова mkfifo() для создания FIFO
#include <sys/stat.h>
#include <unistd.h>
int mkfifo(char *path, int mode);
Параметр path является указателем на строку, содержащую полное или относительное имя файла, ко­торый будет являться меткой FIFO на диске. Для успешного создания FIFO файла с таким именем перед вызовом функции не должно существовать.
Параметр mode соответствует пqараметру mode системного вызова mknode().
Описание слайда:
Использование системного вызова mkfifo() для создания FIFO #include <sys/stat.h> #include <unistd.h> int mkfifo(char *path, int mode); Параметр path является указателем на строку, содержащую полное или относительное имя файла, ко­торый будет являться меткой FIFO на диске. Для успешного создания FIFO файла с таким именем перед вызовом функции не должно существовать. Параметр mode соответствует пqараметру mode системного вызова mknode().

Слайд 9





Особенности поведения вызова open() при открытии FIFO
Системный вызов open() при открытии FIFO также ведет себя несколько иначе, чем при открытии других типов файлов, что связано с возможностью блокирования выполняющих его про­цессов. 
Если FIFO открывается только для чтения, и флаг O_NDELAY не задан, то процесс, осуще­ствивший системный вызов, блокируется до тех пор, пока какой-либо другой процесс не откроет FIFO на запись. Если флаг O_NDELAY задан, то возвращается значение файлового дескриптора, ассоции­рованного с FIFO.
Описание слайда:
Особенности поведения вызова open() при открытии FIFO Системный вызов open() при открытии FIFO также ведет себя несколько иначе, чем при открытии других типов файлов, что связано с возможностью блокирования выполняющих его про­цессов. Если FIFO открывается только для чтения, и флаг O_NDELAY не задан, то процесс, осуще­ствивший системный вызов, блокируется до тех пор, пока какой-либо другой процесс не откроет FIFO на запись. Если флаг O_NDELAY задан, то возвращается значение файлового дескриптора, ассоции­рованного с FIFO.

Слайд 10





Особенности поведения вызова open() при открытии FIFO
Если FIFO открывается только для записи, и флаг O_NDELAY не задан, то процесс, осуществивший системный вызов, блокируется до тех пор, пока какой-либо другой процесс не откроет FIFO на чтение. Если флаг O_NDELAY задан, то констатируется возникновение ошибки и возвращает­ся значение -1. 
Задание флага O_NDELAY в параметрах системного вызова open() приводит и к тому, что процессу, открывшему FIFO, запрещается блокировка при выполнении последующих операций чтения из этого потока данных и записи в него.
Описание слайда:
Особенности поведения вызова open() при открытии FIFO Если FIFO открывается только для записи, и флаг O_NDELAY не задан, то процесс, осуществивший системный вызов, блокируется до тех пор, пока какой-либо другой процесс не откроет FIFO на чтение. Если флаг O_NDELAY задан, то констатируется возникновение ошибки и возвращает­ся значение -1. Задание флага O_NDELAY в параметрах системного вызова open() приводит и к тому, что процессу, открывшему FIFO, запрещается блокировка при выполнении последующих операций чтения из этого потока данных и записи в него.

Слайд 11





Особенности поведения вызова open() при открытии FIFO
Если процесс записывает данные в FIFO, с которым не взаимодействует в режиме чтения ни один другой процесс, то ядро посылает в него сигнал SIGPIPE, для уведомления . Если процесс пытается прочитать данные из FIFO, с которым ни один процесс не взаимодействует в режиме записи, то он прочитает оставшиеся (если они там были) данные и признак конца файла. Таким образом, если два процесса взаимодействуют через FIFO записывающий процесс после завершения работы должен закрыть свой дескриптор FIFO для того, чтобы читающий процесс получил признак конца файла.
Описание слайда:
Особенности поведения вызова open() при открытии FIFO Если процесс записывает данные в FIFO, с которым не взаимодействует в режиме чтения ни один другой процесс, то ядро посылает в него сигнал SIGPIPE, для уведомления . Если процесс пытается прочитать данные из FIFO, с которым ни один процесс не взаимодействует в режиме записи, то он прочитает оставшиеся (если они там были) данные и признак конца файла. Таким образом, если два процесса взаимодействуют через FIFO записывающий процесс после завершения работы должен закрыть свой дескриптор FIFO для того, чтобы читающий процесс получил признак конца файла.

Слайд 12





Сигналы UNIX
Сигналы являются программными прерываниями, которые посылаются процессу, когда случается некоторое событие. Сигналы могут возникать синхронно с ошибкой в приложении, например SIGFPE(ошибка вычислений с плавающей запятой) и SIGSEGV(ошибка адресации), но большинство сигналов является асинхронными. Сигналы могут посылаться процессу, когда система обнаруживает программное событие, например, когда пользователь дает команду прервать или остановить выполнение, или сигнал на завершение от другого процесса. Сигналы могут прийти непосредственно от ядра ОС, когда возникает сбой аппаратных средств ЭВМ. Система определяет набор сигналов, которые могут быть отправлены процессу. В Linux существует примерно 30 различных сигналов. При этом каждый сигнал имеет целочисленное значение и приводит к строго определенным действиям.
Описание слайда:
Сигналы UNIX Сигналы являются программными прерываниями, которые посылаются процессу, когда случается некоторое событие. Сигналы могут возникать синхронно с ошибкой в приложении, например SIGFPE(ошибка вычислений с плавающей запятой) и SIGSEGV(ошибка адресации), но большинство сигналов является асинхронными. Сигналы могут посылаться процессу, когда система обнаруживает программное событие, например, когда пользователь дает команду прервать или остановить выполнение, или сигнал на завершение от другого процесса. Сигналы могут прийти непосредственно от ядра ОС, когда возникает сбой аппаратных средств ЭВМ. Система определяет набор сигналов, которые могут быть отправлены процессу. В Linux существует примерно 30 различных сигналов. При этом каждый сигнал имеет целочисленное значение и приводит к строго определенным действиям.

Слайд 13





Сигналы UNIX
Для каждого сигнала в системе определена обработка по умолчанию, которую выполняет ядро, если процесс не указал другого действия. В общем случае существует пять возможных действий: завершить выполнение процесса (с создание core и без),  игнорировать сигнал, остановить процесс и продолжить процесс.
Описание слайда:
Сигналы UNIX Для каждого сигнала в системе определена обработка по умолчанию, которую выполняет ядро, если процесс не указал другого действия. В общем случае существует пять возможных действий: завершить выполнение процесса (с создание core и без), игнорировать сигнал, остановить процесс и продолжить процесс.

Слайд 14





Механизм передачи сигналов
Установление и обозначение сигналов в форме целочисленных значений
Маркер в строке таблицы процессов для прибывших сигналов
Таблица с адресами функций, которые определяют реакцию на прибывающие сигналы.
Отдельные сигналы разделяются на три различных класса:
Системные сигналы (ошибка аппаратуры, системная ошибка и т.д.)
Сигналы от устройств
Определенные пользователем сигналы
Как только сигнал приходит, он отмечается записью в таблице процессов. Если этот сигнал определен для процесса, то по таблице указателей функций в структуре Task определяется, как нужно реагировать на этот сигнал. При этом номер сигнала служит индексом таблицы.
Описание слайда:
Механизм передачи сигналов Установление и обозначение сигналов в форме целочисленных значений Маркер в строке таблицы процессов для прибывших сигналов Таблица с адресами функций, которые определяют реакцию на прибывающие сигналы. Отдельные сигналы разделяются на три различных класса: Системные сигналы (ошибка аппаратуры, системная ошибка и т.д.) Сигналы от устройств Определенные пользователем сигналы Как только сигнал приходит, он отмечается записью в таблице процессов. Если этот сигнал определен для процесса, то по таблице указателей функций в структуре Task определяется, как нужно реагировать на этот сигнал. При этом номер сигнала служит индексом таблицы.

Слайд 15





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

Слайд 16





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

Слайд 17





Сигналы UNIX
Не все сигналы могут быть проигнорированы. Например, при получении программой сигнала принудительного завершения SIGKILL система ничего не сообщает программе, а просто прекращает ее работу. Таким образом, преимущество сигналов перед другими средствами взаимодействия с программой заключается в том, что посылать программе сигналы можно в любой момент ее работы, не дожидаясь наступления каких-то особых условий. Источником сигналов может быть как операционная система, так и другие программы пользователя. Для реализации сигналов действительно используются программные прерывания.
Описание слайда:
Сигналы UNIX Не все сигналы могут быть проигнорированы. Например, при получении программой сигнала принудительного завершения SIGKILL система ничего не сообщает программе, а просто прекращает ее работу. Таким образом, преимущество сигналов перед другими средствами взаимодействия с программой заключается в том, что посылать программе сигналы можно в любой момент ее работы, не дожидаясь наступления каких-то особых условий. Источником сигналов может быть как операционная система, так и другие программы пользователя. Для реализации сигналов действительно используются программные прерывания.

Слайд 18


Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №18
Описание слайда:

Слайд 19


Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №19
Описание слайда:

Слайд 20





#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void term_handler(int i) {  
	printf ("Terminating\n");  
	exit(EXIT_SUCCESS);
}
int main(int argc, char ** argv) {  
struct sigaction sa;  
sigset_t newset;  
sigemptyset(&newset);  
sigaddset(&newset, SIGHUP);  
sigprocmask(SIG_BLOCK, &newset, 0);  
sa.sa_handler = term_handler;  
sigaction(SIGTERM, &sa, 0);  
printf("My pid is %i\n", getpid());  
printf("Waiting...\n");  
while(1) sleep(1);  
return EXIT_FAILURE;
}
Описание слайда:
#include <stdio.h> #include <stdio.h> #include <stdlib.h> #include <signal.h> void term_handler(int i) { printf ("Terminating\n"); exit(EXIT_SUCCESS); } int main(int argc, char ** argv) { struct sigaction sa; sigset_t newset; sigemptyset(&newset); sigaddset(&newset, SIGHUP); sigprocmask(SIG_BLOCK, &newset, 0); sa.sa_handler = term_handler; sigaction(SIGTERM, &sa, 0); printf("My pid is %i\n", getpid()); printf("Waiting...\n"); while(1) sleep(1); return EXIT_FAILURE; }

Слайд 21


Архитектура ЭВМ. Операционные системы. FIFO (first-in-first-out), слайд №21
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию