Главная / Программирование /
Многопоточное программирование с использованием POSIX Threads / Тест 8
Многопоточное программирование с использованием POSIX Threads - тест 8
Упражнение 1:
Номер 1
Над условной переменной определены основные операции:
Ответ:
 (1) wait
 
 (2) error
 
 (3) signal
 
Номер 2
До какого момента блокируется нить, выполнившая операцию wait
?
Ответ:
 (1) пока другая нить не выполнит операцию wait
 
 (2) пока другая нить не выполнит операцию signal
 
 (3) пока эта же нить не выполнит операцию wait
 
Номер 3
Над семафором определены основные операции:
Ответ:
 (1) signal
 
 (2) wait
 
 (3) post
 
Упражнение 2:
Номер 1
Какая операция, определенная над условной переменной, уничтожает атрибуты условной переменной?
Ответ:
 (1) pthread_condattr_destroy(3C)
 
 (2) pthread_condattr_getpshared(3C)
 
 (3) pthread_condattr_init(3C)
 
 (4) pthread_condattr_setpshared(3C)
 
 (5) pthread_cond_broadcast(3C)
 
 (6) pthread_cond_destroy(3C)
 
Номер 2
Какая операция, определенная над условной переменной, получает значения атрибута pshared
?
Ответ:
 (1) pthread_condattr_destroy(3C)
 
 (2) pthread_condattr_getpshared(3C)
 
 (3) pthread_condattr_init(3C)
 
 (4) pthread_condattr_setpshared(3C)
 
 (5) pthread_cond_broadcast(3C)
 
 (6) pthread_cond_destroy(3C)
 
Номер 3
Какая операция, определенная над условной переменной, инициализирует атрибуты условной переменной?
Ответ:
 (1) pthread_condattr_destroy(3C)
 
 (2) pthread_condattr_getpshared(3C)
 
 (3) pthread_condattr_init(3C)
 
 (4) pthread_condattr_setpshared(3C)
 
 (5) pthread_cond_broadcast(3C)
 
 (6) pthread_cond_destroy(3C)
 
Упражнение 3:
Номер 1
Какой функцией инициализируются неименованные семафоры?
Ответ:
 (1) sem_open(3RT)
 
 (2) sem_init(3RT)
 
 (3) sem_post(3RT)
 
Номер 2
Какой функцией создаются именованные семафоры?
Ответ:
 (1) sem_open(3RT)
 
 (2) sem_init(3RT)
 
 (3) sem_post(3RT)
 
Номер 3
Укажите существующие типы семафоров:
Ответ:
 (1) анонимные 
 (2) именованные 
 (3) неименованные 
Упражнение 4:
Номер 1
Укажите параметр системного вызова select(3C)
, который является числом, на единицу большим, чем максимальный номер файлового дескриптора во всех множествах, переданных как параметры:
Ответ:
 (1) int nfds
 
 (2) fd_set *readfds
 
 (3) fd_set *writefds
 
 (4) fd_set *errorfds
 
 (5) struct timeval * timeout
 
Номер 2
Укажите параметр системного вызова select(3C)
, являющийся множеством дескрипторов, которые следует проверять на готовность к чтению:
Ответ:
 (1) int nfds
 
 (2) fd_set *readfds
 
 (3) fd_set *writefds
 
 (4) fd_set *errorfds
 
 (5) struct timeval * timeout
 
Номер 3
Укажите параметр системного вызова select(3C)
, являющийся множеством дескрипторов, которые следует проверять на готовность к записи:
Ответ:
 (1) int nfds
 
 (2) fd_set *readfds
 
 (3) fd_set *writefds
 
 (4) fd_set *errorfds
 
 (5) struct timeval * timeout
 
Упражнение 5:
Номер 1
Какой параметр функции sem_init(3RT)
является инициализируемым семафором?
Ответ:
 (1) sem_t * sem
 
 (2) int pshared
 
 (3) unsigned int value
 
Номер 2
Чему равно значение параметра int pshared
функции sem_init(3RT)
, если семафор будет локальным в пределах процесса?
Ответ:
 (1) false
 
 (2) 0
 
 (3) ненулевое значение 
Номер 3
Какой параметр функции sem_init(3RT)
является начальным значением флаговой переменной семафора?
Ответ:
 (1) sem_t * sem
 
 (2) int pshared
 
 (3) unsignedintvalue
 
Упражнение 6:
Номер 1
Какая операция, определенная над условной переменной, устанавливает значение атрибута pshared
?
Ответ:
 (1) pthread_condattr_destroy(3C)
 
 (2) pthread_condattr_getpshared(3C)
 
 (3) pthread_condattr_init(3C)
 
 (4) pthread_condattr_setpshared(3C)
 
 (5) pthread_cond_broadcast(3C)
 
 (6) pthread_cond_destroy(3C)
 
Номер 2
Какая операция, определенная над условной переменной, является широковещательным вариантом операции signal
?
Ответ:
 (1) pthread_condattr_destroy(3C)
 
 (2) pthread_condattr_getpshared(3C)
 
 (3) pthread_condattr_init(3C)
 
 (4) pthread_condattr_setpshared(3C)
 
 (5) pthread_cond_broadcast(3C)
 
 (6) pthread_cond_destroy(3C)
 
Номер 3
Какая операция, определенная над условной переменной, уничтожает условную переменную?
Ответ:
 (1) pthread_condattr_destroy(3C)
 
 (2) pthread_condattr_getpshared(3C)
 
 (3) pthread_condattr_init(3C)
 
 (4) pthread_condattr_setpshared(3C)
 
 (5) pthread_cond_broadcast(3C)
 
 (6) pthread_cond_destroy(3C)
 
Упражнение 7:
Номер 1
Бит POLLERR
в поле revents
устанавливается, если:
Ответ:
 (1) на устройстве возникла ошибка 
 (2) сокет, труба или терминальное устройство закрыты на другом конце 
 (3) значение fd
не соответствует валидному файловому дескриптору 
Номер 2
Бит POLLHUP
в поле revents
устанавливается, если:
Ответ:
 (1) на устройстве возникла ошибка 
 (2) сокет, труба или терминальное устройство закрыты на другом конце 
 (3) значение fd
не соответствует валидному файловому дескриптору 
Номер 3
Бит POLLNVAL
в поле revents
устанавливается, если:
Ответ:
 (1) на устройстве возникла ошибка 
 (2) сокет, труба или терминальное устройство закрыты на другом конце 
 (3) значение fd
не соответствует валидному файловому дескриптору 
Упражнение 8:
Номер 1
Укажите операцию, определенную над условной переменной, которая инициализирует условную переменную:
Ответ:
 (1) pthread_cond_init(3C)
 
 (2) pthread_cond_timedwait_np(3C)
 
 (3) pthread_cond_signal(3C)
 
 (4) pthread_cond_wait(3C)
 
Номер 2
Укажите операцию, определенную над условной переменной, которая выполняет ожидание с тайм-аутом:
Ответ:
 (1) pthread_cond_init(3C)
 
 (2) pthread_cond_timedwait_np(3C)
 
 (3) pthread_cond_signal(3C)
 
 (4) pthread_cond_wait(3C)
 
Номер 3
Укажите операцию, определенную над условной переменной, которая выполняет операцию signal
:
Ответ:
 (1) pthread_cond_init(3C)
 
 (2) pthread_cond_timedwait_np(3C)
 
 (3) pthread_cond_signal(3C)
 
 (4) pthread_cond_wait(3C)
 
Упражнение 9:
Номер 1
Укажите параметр системного вызова select(3C)
, являющийся множеством дескрипторов, которые следует проверять на наличие исключительных состояний:
Ответ:
 (1) int nfds
 
 (2) fd_set *readfds
 
 (3) fd_set *writefds
 
 (4) fd_set *errorfds
 
 (5) struct timeval * timeout
 
Номер 2
Укажите параметр системного вызова select(3C)
, устанавливающий тайм-аут, временной интервал, задаваемый с точностью до микросекунд:
Ответ:
 (1) int nfds
 
 (2) fd_set *readfds
 
 (3) fd_set *writefds
 
 (4) fd_set *errorfds
 
 (5) struct timeval * timeout
 
Номер 3
Сколько параметров имеет системный вызов select(3C)
?
Ответ:
 (1) 4 
 (2) 5 
 (3) 3 
Упражнение 10:
Номер 1
При каком значении своего параметра int timeout
, системный вызов poll(2)
работает в режиме опроса?
Ответ:
 (1) 0
 
 (2) 1
 
 (3) -1
 
Номер 2
При каком значении своего параметра int timeout
, системный вызов poll(2)
ждет готовности дескрипторов неограниченное время?
Ответ:
 (1) 0
 
 (2) 1
 
 (3) -1
 
Номер 3
Если poll(2)
возвращает управление по тайм-ауту, код возврата будет равен:
Ответ:
 (1) 0
 
 (2) 1
 
 (3) -1
 
Упражнение 11:
Номер 1
Параметр системного вызова poll(2)
, являющийся массивом описателей дескрипторов:
Ответ:
 (1) struct pollfd fds[]
 
 (2) nfds_t nfds
 
 (3) int timeout
 
Номер 2
Параметр системного вызова poll(2)
, являющийся количеством описателей в массиве fds
:
Ответ:
 (1) struct pollfd fds[]
 
 (2) nfds_t nfds
 
 (3) int timeout
 
Номер 3
Параметр системного вызова poll(2)
, определяющий тайм-аут в миллисекундах:
Ответ:
 (1) struct pollfd fds[]
 
 (2) nfds_t nfds
 
 (3) int timeout
 
Упражнение 12:
Номер 1
Укажите операцию, определенную над условной переменной, которая выполняет ожидание условной переменной:
Ответ:
 (1) pthread_cond_init(3C)
 
 (2) pthread_cond_timedwait_np(3C)
 
 (3) pthread_cond_signal(3C)
 
 (4) pthread_cond_wait(3C)
 
Номер 2
Чему равно значение параметра int pshared
функции sem_init(3RT)
, если семафор будет разделяемым между процессами?
Ответ:
 (1) false
 
 (2) 0
 
 (3) ненулевое значение 
Номер 3
При ошибке poll(2)
возвращает:
Ответ:
 (1) 0
 
 (2) 1
 
 (3) -1