2позволяет встроить в бинарный файл информацию о путях поиска `.so`✓ Правильный ответ
3преобразует динамическую библиотеку в статическую
4запрещает динамическому линкеру искать зависимости
✓ Правильный ответ
позволяет встроить в бинарный файл информацию о путях поиска `.so`
Вопрос 11
В чём основной смысл использования `Makefile` в учебном проекте сборки?
1Makefile всегда заменяет компилятор GCC
2Makefile делает сборку воспроизводимой и позволяет пересобирать только изменившиеся части
3Makefile нужен только для запуска уже готовой программы
4Makefile используется только для редактирования файлов в `nano`
Вопрос 12
Что означает автоматическая переменная `$@` в типичном правиле Makefile?
1имя текущей цели правила
2имя первого зависимого файла
3список всех переменных окружения
4код завершения последней команды shell
Вопрос 13Ответ открыт бесплатно
Какой вариант наиболее правильно раскрывает различие между `man 2 open` и `man 3 printf`?
1`man 2 open` относится к системному вызову, а `man 3 printf` — к библиотечной функции✓ Правильный ответ
2`man 2 open` открывает редактор, а `man 3 printf` запускает компилятор
3оба варианта показывают одну и ту же страницу справки
4`man 2` используется только для команд shell, а `man 3` — только для драйверов
✓ Правильный ответ
`man 2 open` относится к системному вызову, а `man 3 printf` — к библиотечной функции
Вопрос 14
Что такое окружение процесса в Linux?
1набор открытых файлов, доступных только ядру
2массив строк вида `NAME=VALUE`, передаваемый процессу при запуске
3список всех пользователей системы
4двоичный файл, который создаётся после линковки
Вопрос 15
Что делает команда или встроенная функция shell `export`?
1удаляет переменную из памяти родительского процесса
2помечает переменную так, чтобы она попала в окружение запускаемых далее команд
3автоматически записывает переменную в исходный код программы
4делает переменную доступной ядру как системный вызов
Вопрос 16Ответ открыт бесплатно
Как ведёт себя окружение при `fork()`?
1дочерний процесс наследует копию окружения родительского процесса✓ Правильный ответ
2дочерний процесс всегда получает пустое окружение
3окружение родителя полностью переносится в ядро и удаляется из процесса
4`fork()` запрещён, если в окружении есть пользовательские переменные
✓ Правильный ответ
дочерний процесс наследует копию окружения родительского процесса
Вопрос 17
Что наиболее точно описывает роль файлового дескриптора в Linux?
1это имя файла, сохранённое в каталоге
2это маленькое неотрицательное число, через которое процесс обращается к открытому файлу или каналу
3это адрес функции в shared-библиотеке
4это номер строки в Makefile
Вопрос 18
Когда аргумент `mode` в вызове `open(path, flags, mode)` имеет практический смысл?
1только при использовании флага `O_CREAT`
2только при чтении из уже существующего файла
3всегда, независимо от флагов
4только при закрытии файла через `close()`
Вопрос 19
Что означает возвращаемое значение `0` у `read()` при чтении обычного файла?
1произошла ошибка доступа
2файл был успешно удалён
3достигнут конец файла
4ядро автоматически повторит чтение
Вопрос 20Ответ открыт бесплатно
Почему при использовании `write()` нельзя всегда считать, что все байты были записаны за один вызов?
1`write()` в Linux никогда не записывает больше одного байта
2возможна частичная запись, поэтому оставшиеся данные нужно дозаписывать в цикле✓ Правильный ответ
3`write()` используется только для каталогов
4`write()` всегда завершает процесс после первой записи
✓ Правильный ответ
возможна частичная запись, поэтому оставшиеся данные нужно дозаписывать в цикле
Вопрос 21
Для каких объектов `lseek()` неприменим в обычном смысле изменения позиции чтения/записи?
1для обычных файлов на диске
2для файлов, открытых только на чтение
3для pipe, FIFO и socket
4для файлов, созданных через `O_CREAT`
Вопрос 22
Для чего в учебной программе-копировщике используется `perror()`?
1чтобы вывести текстовое описание ошибки на основе текущего `errno`
2чтобы автоматически исправить ошибку чтения
3чтобы заменить системный вызов `read()`
4чтобы очистить содержимое файла назначения
Вопрос 23Ответ открыт бесплатно
Какое утверждение лучше всего объясняет роль каталога в файловой системе Linux?
1каталог — это обычная строковая переменная shell
2каталог хранит соответствие между именем файла и индексным дескриптором✓ Правильный ответ
3каталог всегда содержит только текстовые файлы
4каталог является копией всех данных файлов внутри него
✓ Правильный ответ
каталог хранит соответствие между именем файла и индексным дескриптором
Вопрос 24
Что такое inode в контексте файловой системы Linux?
1только пользовательское имя файла
2объект метаданных файла, связанный с содержимым, правами, владельцем, размером и другими свойствами
3команда для создания shared-библиотеки
4переменная окружения, отвечающая за поиск `.so`
Вопрос 25
Чем символическая ссылка принципиально отличается от жёсткой ссылки?
1символическая ссылка содержит путь к другому файлу, а жёсткая ссылка является ещё одним именем того же inode
2символическая ссылка всегда больше исходного файла, а жёсткая всегда меньше
3символическая ссылка создаётся только для каталогов, а жёсткая — только для устройств
4между ними нет различий на уровне файловой системы
Вопрос 26Ответ открыт бесплатно
Что показывает первый символ в выводе `ls -l`?
1размер файла в байтах
2тип объекта файловой системы✓ Правильный ответ
3номер процесса, который открыл файл
4количество строк в файле
✓ Правильный ответ
тип объекта файловой системы
Вопрос 27
Какой первый символ в `ls -l` обычно соответствует каталогу?
1`-`
2`d`
3`l`
4`p`
Вопрос 28
Какое утверждение о правах доступа к каталогу в Linux является наиболее корректным?
1право `x` для каталога связано с возможностью проходить через каталог и обращаться к объектам внутри него
2право `x` для каталога всегда означает запуск каталога как программы
3право `r` для каталога автоматически разрешает удалять любые файлы внутри него
4права доступа к каталогам в Linux не проверяются
Вопрос 29
Что представляет собой файловая система `/proc`?
1обычный каталог с резервными копиями пользовательских файлов
2виртуальную файловую систему, через которую можно получать сведения о процессах и состоянии системы
3архив статических библиотек ядра
4каталог, который существует только после запуска компилятора
Вопрос 30Ответ открыт бесплатно
Что характерно для разреженного файла?
1он не может иметь логический размер больше физически занятых блоков
2он может содержать «дыры», которые логически читаются как нули и не занимают соответствующий объём на диске✓ Правильный ответ
3он всегда является символьной ссылкой
4он создаётся только в оперативной памяти и не связан с файловой системой
✓ Правильный ответ
он может содержать «дыры», которые логически читаются как нули и не занимают соответствующий объём на диске
Вопрос 31
Для чего применяются блокировки областей файла?
1чтобы запретить компилятору собирать программу
2чтобы координировать доступ процессов к определённым участкам файла
3чтобы преобразовать inode в имя файла
4чтобы заменить механизм прав доступа `rwx`
Вопрос 32
В каком случае неименованный канал `pipe` подходит лучше всего?
1когда нужно связать потоки внутри одного процесса без участия ядра
2когда нужно организовать потоковую передачу данных между родственными процессами, например после `fork()`
3когда нужно сохранить сообщения в каталоге `/proc`
4когда требуется заменить все shared-библиотеки статическими
Вопрос 33Ответ открыт бесплатно
Какое событие обычно приводит к `SIGPIPE` при работе с каналом или сокетом?
1успешное чтение всех данных из файла
2запись в канал или сокет, у которого больше нет читателя✓ Правильный ответ
3создание нового inode
4вызов `make clean`
✓ Правильный ответ
запись в канал или сокет, у которого больше нет читателя
Вопрос 34
Чем FIFO отличается от обычного неименованного `pipe`?
1FIFO имеет имя в файловой системе и может использоваться неродственными процессами
2FIFO не относится к механизмам IPC
3FIFO всегда хранит данные на диске навсегда
4FIFO работает только внутри одного потока
Вопрос 35
Почему очередь сообщений может быть предпочтительнее простого байтового канала?
1потому что она запрещает нескольким процессам обмениваться данными
2потому что она позволяет работать с сообщениями как с отдельными единицами, а не только с непрерывным потоком байтов
3потому что она автоматически компилирует C-код
4потому что она используется только для удаления файлов
Вопрос 36Ответ открыт бесплатно
Какое утверждение о сигналах в многопоточной программе Linux является наиболее точным?
1disposition сигнала является свойством процесса, а маска сигналов — свойством конкретного потока✓ Правильный ответ
2disposition сигнала является свойством файла, а маска сигналов — свойством каталога
3каждый поток имеет полностью независимую таблицу обработчиков сигналов
4маска сигналов всегда одинакова для всех процессов системы
✓ Правильный ответ
disposition сигнала является свойством процесса, а маска сигналов — свойством конкретного потока
Вопрос 37
Что означает утверждение, что стандартные сигналы обычно не очередятся?
1если один и тот же стандартный сигнал несколько раз пришёл в заблокированном состоянии, после разблокировки обычно фиксируется один факт доставки
2стандартные сигналы вообще никогда не доставляются процессу
3каждый стандартный сигнал обязательно хранится с точным счётчиком повторов
4стандартные сигналы можно использовать только в драйверах ядра
Вопрос 38
Какие сигналы нельзя поймать, заблокировать или проигнорировать?
1`SIGINT` и `SIGTERM`
2`SIGKILL` и `SIGSTOP`
3`SIGUSR1` и `SIGUSR2`
4`SIGALRM` и `SIGPIPE`
Вопрос 39
Почему для нового кода предпочтительнее использовать `sigaction()`, а не `signal()`?
1`sigaction()` даёт более предсказуемое и расширяемое управление обработкой сигналов
2`sigaction()` полностью запрещает доставку сигналов процессу
3`signal()` работает только с файлами, а не с процессами
4`sigaction()` нужен только для сборки shared-библиотек
Вопрос 40Ответ открыт бесплатно
Какой подход к обработчику сигнала считается наиболее безопасным для начинающего системного программиста?
1выполнять в обработчике всю логику программы, включая ввод-вывод и выделение памяти
2в обработчике ограничиться простым действием, например установкой флага, а основную работу выполнить в обычном коде✓ Правильный ответ
3запускать из обработчика `gcc` для пересборки программы
4всегда вызывать `printf()` из обработчика без ограничений
✓ Правильный ответ
в обработчике ограничиться простым действием, например установкой флага, а основную работу выполнить в обычном коде
Вопрос 41
Какой режим `sigprocmask()` полностью заменяет текущую маску сигналов новой маской?
1`SIG_BLOCK`
2`SIG_UNBLOCK`
3`SIG_SETMASK`
4`SIG_REPLACE_ONLY`
Вопрос 42
Почему связка `sigprocmask()` + `sigsuspend()` важна при ожидании сигнала?
1она позволяет ждать сигнал без гонки между проверкой условия и засыпанием процесса
2она полностью отключает планировщик Linux
3она создаёт новый дочерний процесс
4она заменяет `fork()` и `exec()`
Вопрос 43Ответ открыт бесплатно
Что происходит после успешного вызова `fork()`?
1родительский процесс исчезает, а дочерний продолжает работу один
2родитель и дочерний процесс продолжают выполнение со следующей строки, но имеют разные PID и разные адресные пространства✓ Правильный ответ
3код программы автоматически заменяется другой программой
4создаётся новый поток в том же адресном пространстве без нового процесса
✓ Правильный ответ
родитель и дочерний процесс продолжают выполнение со следующей строки, но имеют разные PID и разные адресные пространства
Вопрос 44
Какое возвращаемое значение `fork()` получает дочерний процесс?
1`0`
2PID родительского процесса
3`-1` при любом успешном создании
4дескриптор исполняемого файла
Вопрос 45
Что делает успешный вызов семейства `exec`?
1создаёт второй процесс, полностью копируя память родителя
2заменяет образ текущего процесса новой программой и при успехе обычно не возвращается в старый код
3только добавляет новую переменную окружения
4завершает только дочерние потоки, не затрагивая программу
Вопрос 46Ответ открыт бесплатно
Почему родительскому процессу обычно нужно вызывать `wait()` или `waitpid()` после завершения дочернего процесса?
1чтобы собрать статус завершения ребёнка и не оставить зомби-процесс✓ Правильный ответ
2чтобы повторно выполнить препроцессор
3чтобы превратить дочерний процесс в поток
4чтобы автоматически создать FIFO
✓ Правильный ответ
чтобы собрать статус завершения ребёнка и не оставить зомби-процесс
Вопрос 47
Чем поток принципиально отличается от отдельного процесса в рассматриваемой модели?
1поток обычно выполняется в адресном пространстве своего процесса, а отдельный процесс имеет собственное адресное пространство
2поток всегда имеет собственную независимую файловую систему
3поток нельзя планировать операционной системой
4поток не может выполнять функции на языке C
Вопрос 48
Что делает `pthread_join()`?
1запускает новый процесс через `execve()`
2ожидает завершения указанного потока и позволяет получить его результат завершения
3немедленно уничтожает весь процесс
4блокирует все сигналы в системе
Вопрос 49
Зачем при работе с разделяемыми данными между потоками используют mutex?
1чтобы исключить одновременный некорректный доступ к критической секции
2чтобы заменить объектные файлы `.o`
3чтобы автоматически преобразовать поток в процесс
4чтобы запретить системные вызовы `read()` и `write()`
Вопрос 50Ответ открыт бесплатно
Какое утверждение наиболее точно связывает `mmap()`, модули ядра и драйверы в общей логике системного программирования Linux?
1`mmap()` всегда используется только внутри драйверов и не доступен пользовательским программам
2`mmap()` связывает виртуальную память процесса с файлом или областью памяти, а модули и драйверы встраиваются в ядро через специальные точки входа вроде `module_init()` и `module_exit()`, не имея обычной функции `main()`✓ Правильный ответ
3модули ядра собираются как обычные пользовательские программы и запускаются командой `./module`
4драйвер устройства — это только текстовый файл в `/proc`, не связанный с файловой моделью Linux
✓ Правильный ответ
`mmap()` связывает виртуальную память процесса с файлом или областью памяти, а модули и драйверы встраиваются в ядро через специальные точки входа вроде `module_init()` и `module_exit()`, не имея обычной функции `main()`
О материалах и доступе
Что входит в набор «Системное программирование.кс_СПО»?
50 вопросов с вариантами из опубликованных тестов (1). Сверьте формулировки и варианты с вашим заданием перед покупкой: разные программы могут содержать разные вопросы.
Какие ответы можно посмотреть бесплатно?
Нажмите «Показать ответы бесплатно»: после завершения индикатора откроется бесплатная часть ответов. Бесплатные ответы отмечены зелёным. При нескольких правильных вариантах отмечены все варианты из ключа ответа. Остальные ответы доступны после покупки.
Как получить полный доступ?
Стоимость — 2 499 ₽. Войдите в личный кабинет и оплатите выбранный предмет. Доступ действует 7 дней; подписки и автоматических списаний нет.
Что делать, если обнаружена ошибка?
Напишите нам и пришлите номер заказа, формулировку вопроса и подтверждение ошибки. Гарантия: 1 ошибка — вернём деньги.