- •1)Права доступа к файлу
- •2)Родительский процесс, порожденный, «сирота»
- •3)Системные вызовы fork, exec ,wait.
- •4)Файловая система. Системные вызовы mount, umount.
- •5)Файловая система. I-nodes.
- •6)Жесткая и символическая ссылки.
- •7)Схема переходов процесса из состояния в состояние
- •8)Системные вызовы getpid, getppid
- •9)Системный вызов times. Ядерная и пользовательские фазы процессов.
- •10)Программные каналы. Fifo-файлы.
- •11)Очередь сообщений. Последовательность системных вызовов.
- •12) Параметры функции msgget.
- •13)Параметры функции msgsnd.
- •14)Параметры функции msgrcv.
- •15)Параметры функции msgctl.
- •16)Семафоры. Последовательность системных вызовов.
- •17)Параметры функции semget.
- •18)Параметры функции semop.
- •19)Параметры функции semctl.
- •20)Разделяемая память. Последовательность системных вызовов.
- •21)Параметры функции shmget.
- •22)Параметры функции shmat.
- •23)Параметры функции shmdt.
- •24)Параметры функции shmctl.
- •25)Последовательность системных вызовов при работе с socket.
- •26)Потоки стандарта Posix.1c
- •27) Системный вызов pthread_create.
- •28)Системные вызовы pthread_self,exit и sched_yield
- •29) Системные вызовы pthread_join kill
- •30) Взаимоисключающие блокировки. Пример тупиковой ситуации.
- •34)Условные переменные
- •35) Системные вызовы pthread_cond_init, pthread_cond_signal и pthread_cond_timedwait. Их предназначение и параметры.
- •36) Системные вызовы pthread_cond_broadcast, pthread_cond_wait и pthread_cond_destroy. Их предназначение и параметры.
- •38) Системный вызов sem_open. Его предназначение и параметры.
- •39) Системные вызовы sem_init. Его предназначение и параметры.
- •40) Системные вызовы sem_getvalue, sem_wait и sem_close. Их предназначение и параметры.
- •41) Системные вызовы sem_trywait и sem_unlink. Их предназначение и параметры.
- •42) Системные вызовы sem_post и sem_destroy. Их предназначение и параметры.
- •43.Последовательность вызовов api серверного гнезда.
- •44.Последовательность вызовов api клиентского гнезда.
- •45.Последовательность вызовов api дейтаграммного гнезда.
- •46.Предназначение системного вызова socket().
- •47.Предназначение системного вызова bind().
- •48.Предназначение системного вызова listen().
- •49.Предназначение системного вызова accept().
- •50.Предназначение системного вызова connect().
- •51.Предназначение системных вызовов send() и sendto().
- •52.Предназначение системных вызовов recv() и recvfrom().
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-закрывает гнездо