Вопросы к зачету по курсу «Системное программное обеспечение»

1.  Процессы в Linux

1.1.  Что делает функция fork:

1.2.  азначение функции waitpid:

1.3.  Чем можно заменить код порожденного процесса:

1.4.  В каком диапазоне пользователь Linux может изменить приоритет своего процесса:

2.  System V IPC

2.1.  Какое значение можно использовать в качестве ключа нового объекта IPC:

2.2.  Для чего при создании объекта IPC применяют флаги IPC_CREAT и IPC_EXCL:

2.3.  Когда проверяются разрешения на доступ к объекту IPC

2.4.  Когда возможно повторное использование идентификатора объекта IPC

3.  Программные и именованные каналы

3.1.  Какие действия необходимо выполнить для передачи данных через программный канал из родительского процесса в дочерний

3.2.  Зачем нужна функция рореn

3.3.  В чем разница между программными и именованными каналами

3.4.  Что дает флаг 0_NONBLOCK

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

4.1.  Каковы допустимые флаги функции msgget

4.2.  Когда вызов функции msgsnd приводит к блокировке вызвавшего ее процесса

4.3.  Сообщение с каким типом вернет функция msgrcv, если в ней указан тип со значением меньше нуля

4.4.  Что позволяет сделать с очередью функция msgctl

5.  Разделяемая память

5.1.  В чем преимущества разделяемой памяти по сравнению с другими объектами IPC

5.2.  Для чего предназначена функция shmget

5.3.  Какое значение аргумента shmaddr рекомендуется указывать в функции shmat

5.4.  Что позволяет сделать с сегментом разделяемой памяти функция shmctl

6.  Семафоры System V IPC

6.1.  Для чего предназначены семафоры

6.2.  Что позволяет сделать с семафором функция semctl

6.3.  Каково назначение полей структуры struct sembuf

6.4.  Что происходит с процессом, вызывающим функцию semop с аргументом struct sembuf res = {0, -1, 0};

7.  Потоки в Linux

7.1.  Когда программа будет ждать завершения потока?

7.2.  Какие функции принудительно завершают работу потока?

7.3.  В каком состоянии создаваемый поток начинает свою жизнь?

7.4.  Какие атрибуты потоков может изменить обычный пользователь Linux?

8.  Взаимные исключения и условные переменные

8.1.  Когда необходимо инициализировать взаимное исключение функцией pthread_mutex_init?

8.2.  Когда происходит блокировка потока, использующего взаимное исключение?

8.3.  Какой второй параметр необходим в функции pthread_cond_wait

8.4.  Какие функции нужно вызвать процессам для совместного использования взаимного исключения?