Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по ОС.doc
Скачиваний:
50
Добавлен:
24.09.2019
Размер:
202.24 Кб
Скачать

23)Параметры функции shmdt.

Прототип функции shmdt имеет следующий вид:

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/shm.h>

int shmdt (void* addr );

Эта функция отсоединяет разделяемую память от заданного аргументом addr виртуального адреса вызывающего процесса.

Прежде чем вызывать данную функцию, необходимо получить посредством вызова shmat значение addr.

В случае успешного выполнения рассматриваемая функция возвращает 0, а в случае неудачи -1.

24)Параметры функции shmctl.

Прототип функции shmctl имеет следующий вид.

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/shm.h>

int shmctl (int shmid, int and, struct shmid_ds* buf);

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

Значение shmid — это дескриптор' разделяемой области памяти, полученный посредством вызова функции shmget.

Аргумент buf — это адрес объекта типа struct shmid_ds, который можно использовать для задания и выборки управляющих параметров разделяемой памяти, указанных аргументом cmd. Ниже перечислены возможные значения аргумента cmd и вызываемые ими действия:

Значение cmd Что должен сделать процесс копировать управляющие параметры разделяемой области памяти в объект, указанный аргументом bnf

IPC SET Заменить управляющие параметры разделяемой области памяти параметрами, определенными в объекте, на который указывает аргумент buf. Чтобы выполнить эту операцию, вызывающий процесс должен иметь права привилегированного пользователя, создателя или назначенного владельца разделяемой памяти.

IPC_STAT Рассматриваемый вызов может устанавливать только UID владельца области и идентификатор его группы, а также права доступа

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

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

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

В случае успешного выполнения рассматриваемый вызов возвращает 0, а в случае неудачи -1.

25)Последовательность системных вызовов при работе с socket.

Механизм программных гнезд (Sockets), вообще говоря, позволяет любому процессу обмениваться сообщениями с любым другим процессом, независимо от того, выполняются они на одном компьютере или на разных, соединенных сетью. Программные гнезда входят в число обязательных компонентов стандартной среды ОС UNIX, однако реализуются в разных системах по-разному. В BSD-ориентированных системах Sockets исторически реализуются в ядре ОС, и пользователям предоставляются пять специальных системных вызовов: socket, bind, listen, connect и accept.

socket-создает гнездо

bind-присваивает гнезду имя (привязка)

listen-задает длину очереди (в этой очереди клиентские сообщения ждут когда их будут обрабатывать)

accept-принимает запрос на соединение от клиентского гнезда

connect-посылает запрос на соединение с серверным гнездом

send, sendto-передает сообщение к удаленному гнезду

recv, recvto-принимает сообщения из гнезда

shutdown-закрывает гнездо