ЗНАЕТЕ ЛИ ВЫ?

Взаимодействие процессов, IPC



IPC – средства межпроцессорного взаимодействия

1) Сигналы. Системные сигналы.

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

По умолчанию реакция на большинство сигналов - прекращение процесса, получившего сигнал. Однако для большинства типов сигналов процесс может установить обработчик данного сигнала или установить игнорирование данного сигнала.

SIGKILL - завершение получившего его процесса. Этот сигнал не может игнорироваться и на него нельзя установить собственный обработчик

SIGTERM - запрос на завершение процесса. Процесс, получивший этот сигнал, должен завершиться.

SIGCHLD - этот сигнал система посылает родительскому процессу при завершении любого его дочернего процесса. Реакция на этот сигнал, установленная по умолчанию, - игнорирование.

SIGUSR1 и SIGUSR2 - за этими сигналами не зарезервированы никакие системные назначения. Процессы могут посылать эти сигналы друг другу и интерпретировать их по своему усмотрению.

 

2) Семафор — объект, позволяющий войти в заданный участок кода не более чем n потокам.

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

init(n): счётчик := n

enter(): ждать пока счётчик станет больше 0; после этого уменьшить счётчик на единицу.

leave(): увеличить счётчик на единицу.

Мьютексы — двоичные семафоры, которые могут находиться в одном из двух состояний.

Доступ к семафору: int semget (key_t key, int nsems, int semflag);

Операции над семафором: int semop(int semid, struct sembuf *semop, size_t nops)

Освобождение семафора: semctl(semid,IPC_RMID,0)

 

sem_init() sem_wait() sem_destroy()

 

3) Разделяемая память

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

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

Создание общей памяти: int shmget (key_t key, int size, int shmemflg)

Доступ к разделяемой памяти : void *shmat(int shmid, char *shmaddr, int shmflg)

Открепление разделяемой памяти : int shmdt(char *shmaddr)

Управление разделяемой памятью : int shmctl(int shmid, int cmd, struct shmid_ds *buf)

 

4) Очереди сообщений

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

Каждое сообщение имеет тип – целое число. Извлечение сообщений из очереди происходит в порядке их записи, однако процесс-получатель может указать, из какой подочереди (сообщения определенного типа) он хочет извлечь сообщение – в этом случае из очереди будет извлечено самое «старое» сообщение нужного типа

Доступ к очереди сообщений: int msgget (key_t key, int msgflag)

Отправка сообщения : int msgsnd (int msqid, const void *msgp, size_t msgsz, int msgflg)

Получение сообщения :int msgrcv (int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg)


 

Сети

1) Уровни ISO/OSI, TCP/IP

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

В настоящее время основным используемым стеком протоколов является TCP/IP.

Протокол – описание правил и сообщений, по которым ВС осуществляет обмен информацией.

Уровни ISO/OSI:

1. Физический: работа со средой передачи, сигналами и двоичными данными в битах.

2. Канальный: физическая адресация (передача по физическим линиям), в кадрах
передача данных по MAC’у

3. Сетевой: определение маршрута и логическая адресация (связь между ВС), в пакетах.

Маршрутизация по IP

4. Транспортный: прямая связь между конечными пунктами, надежность (корректная транспортировка

5. Сеансовый: управление сеансом связи

6. Представительский: представление и кодирование данных

7. Прикладной: доступ к сетевым службам, взаимодействие с прикладными системами

(например, подключение к браузеру)

На каждом уровне необходимо наличие протоколов

 

TCP — это транспортный механизм, дающий уверенность в достоверности получаемых данных. В отличие от UDP гарантирует целостность передаваемых данных и уведомление отправителя о результатах передачи.

Уровни IP:

1. Доступа к сети: доступ к сети, эти протоколы обмениваются фреймами

2. Межсетевой: работа с датаграммами, адресами, маршрутизация. Нет установления соединения с другими машинами.

3. Транспортный: доставка данных от ВС к ВС, установка сеанса. TCP протокол – сегментами (гарантируется целостность файлов).

4. Прикладных программ: прикладные программы и процессы, использующие сеть. Программы сами стандартизируют представление данных (в отличие от ISO/OSI)

Свойства TCP/IP протоколов: открытость, независимость от аппаратного обеспечения, стандартизация.

 

Соответствие уровней ISO/OSI – TCP/IP: 1,2 – 1 | 3 – 2 | 4,5 – 3 | 6,7 – 4

 

Установление соединения по протоколуTCP работает по принципу «трехшагового рукопожатия».

Клиент посылает серверу запрос на соединение (SYN). Если сервер готов установить соединение, он отправляет клиенту SYN и ACK. После этого клиент подключается к серверу.

Уже на этапе положительного ответа сервера клиенту сервер резервирует память под будущее соединение. Это недостаток, так как при достаточно большом количестве подключений к серверу возможен недостаток памяти.

 

2) Уровни до сетевого на примере IP (netmask, arp)

MAC – адрес, уникальный идентификатор, присваиваемый каждому физическому устройству – 6 байт.

IP —уникальный адрес узла в сети, построенной по протоколу TCP/IP. Представляет собой четырехбайтовое число.

Маска сети – битовая маска, определяющая, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Например, узел с IP-адресом 12.34.56.78 и маской подсети 255.255.255.0 находится в сети 12.34.56.0/24 с длиной префикса 24 бита.

С помощью маски модно определить, что один диапазон IP-адресов – в одной сети, а другой – в другой.

IPv4-32 бита, IPv6-128 бит

 

DNS – компьютерная система о получении информации о домене. По DNS узнаем IP. У каждой машины есть таблица маршрутизации: адреса сетей, маски, шлюзы.

(netstat –rn – показать таблицу)

 

ARP (протокол определения адреса) — протокол канального уровня, предназначенный для определения MAC-адреса по известному IP-адресу.

 

Узлы сети могут быть концентраторами и коммутаторами.

Концентратор получает пакет и отдает его всем IP, которые хотят его получить

Коммутатор получает пакет и пересылает его какому-то определенному IP

Алгоритм пересылки пакета по протоколу TCP/IP:

1. Узел А с IP(A) и MAC(A) хочет отправить пакет данных узлу B c IP(B) на парт http(80)

2. Узел А посылает широковещательный запрос в локальной сети «Кто знает узел с IP(B)?» по протоколу ARP.

3. Когда узел А получил от узла С ответ «я знаю» или «это мой IP», он отсылает пакет данных узлу С

4. В случае, если узел С присылал ответ «я знаю», то передача пакета по протоколу все равно идет от имени IP(A), но уже с MAC(C). Сохранение IP нужно для того, чтобы процесс В смог узнать, от кого пришел пакет.

 

SCTP – транспортный протокол.

Если кто-то отправил слишком много запросов к серверу TCP и сервер истратил все свои ресурсы, то SCTP от этого защищен – он не сразу резервирует память для будущего соединения (защита от ddos-атак). Это называется системой 4 рукопожатий. Первые 2 те же самые, но выделение памяти происходит только перед подключением клиента.





Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.156.32 (0.006 с.)