- •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().
34)Условные переменные
Условные переменные используются для того, чтобы заблокировать потоки до выполнения определенных условий. Условные переменные обычно применяются в сочетании с взаимоисключающими блокировками, чтобы несколько потоков могли ожидать момента выполнения одного условия. Это можно сделать следующим образом. Сначала поток устанавливает взаимоисключающую блокировку, но и сам блокируется до момента выполнения определенного условия. На то время, пока поток заблокирован, установленная им блокировка автоматически снимается. Когда другой поток выполняет поставленное условие, он дает условной переменной сигнал о разблокировании первого потока. После разблокирования потока взаимоисключающая блокировка автоматически вновь устанавливается, и первый поток повторно проверяет условие. Если оно не выполняется, поток опять блокируется условной переменной. Если же условие выполняется, поток снимает взаимоисключающую блокировку и выполняется дальше.
35) Системные вызовы pthread_cond_init, pthread_cond_signal и pthread_cond_timedwait. Их предназначение и параметры.
int pthread_cond_init(pthread_cond_t *cond,
pthread_condattr_t *cond_attr);
Инициализирует условную переменную.
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime);
Блокирует поток на условной переменной, на определенное время.
int pthread_cond_signal(pthread_cond_t *cond);
Разблокирует поток, ожидающий условную переменную.
36) Системные вызовы pthread_cond_broadcast, pthread_cond_wait и pthread_cond_destroy. Их предназначение и параметры.
int pthread_cond_wait(pthread_cond_t *cond,
pthread_mutex_t *mutex);
Блокирует поток на условной переменной.
int pthread_cond_broadcast(pthread_cond_t *cond);
Разблокирует все потоки, ожидающие условную переменную.
int pthread_cond_destroy(pthread_cond_t *cond);
Удаление объекта – условная переменная.
37) Семафоры POSIX.1b отличаются следующим:
• Семафоры POSIX.1b обозначаются путевым UNUX - именем (если создаются с помощью sem_open), либо остаются безымянными (но с присвоением начального виртуального адреса, если они создаются посредством вызова функции sem_init).
• В POSIX.1b с каждым вызовом sem_open и sem_init создается один семафор, а не набор семафоров.
• Значение семафора POSIX.1b увеличивается и уменьшается на единицу с каждым вызовом sem_post и sem_wait соответственно.
38) Системный вызов sem_open. Его предназначение и параметры.
sem_t sem_open(char*name, int flags, mode_t mode,
unsigned int value);
Функция sem_open создает семафор, имя которого задано аргументом name. Значение name должно быть строкой символов, похожей на путевое UNUX – имя, и всегда начинаться с символа «/». Кроме того, не следует ожидать, что будет создан файл с таким именем. Значение аргумента flags может быть равно нулю, если функции известно, что указанный семафор уже существует. Флаг O_CREAT показывает, что следует создать семафор с заданным именем. Вместе с этим флагом можно указывать флаг O_EXCL, который заставляет функцию возвращать код неудачного завершения, если семафор с заданным именем уже существует. Аргументы mode и init_value используются при создании нового семафора. Значение аргумента mode - это права доступа на чтение и запись для владельца, группы и прочих пользователей, которые должны быть установлены для нового семафора. Аргумент init_value задает значение, которое должно быть присвоено семафору. Тип этого аргумента - целое без знака.
В случае успешного выполнения рассматриваемая функция возвращает указатель на структуру типа sem_t, а в случае неудачи -1.