Главная /
Внутреннее устройство ядра Linux
Внутреннее устройство ядра Linux - ответы на тесты Интуит
Курс об основных конструктивных элементах ядра Linux.
Список вопросов:
- # Что такое файловая система?
- # Каким образом организована файловая система с точки зрения пользователя?
- # Файловая система может предоставлять доступ к:
- # Какие из перечисленных файловых систем предоставляют доступ к реальным, а не сгенерированным данным?
- # Дисковая файловая система предоставляет доступ к:
- # Сетевая файловая система предоставляет доступ к:
- # Как соотносится VFS и дисковые файловые системы?
- # Что предоставляется ядром Linux в качестве интерфейса к файловой системе?
- # Что такое VFS?
- # Что описывает структура file_system_type?
- # Что возвращает метод mount() (или get_sb()) из структуры file_system_type?
- # Какие из перечисленных ниже полей входят в структуру file_system_type?
- # Какие из перечисленных ниже полей входят в структуру super_block?
- # Счётчик ссылок в структуре super_block:
- # На что указывает член структуры super_block struct super_operations* s_op?
- # Что описывает struct inode?
- # Какие из перечисленных ниже полей входят в структуру inode?
- # Какие времена хранятся в inode?
- # Каким образом в ядре организована коллекция структур inode?
- # Что является ключом поиска в хеш таблице inode, находящейся в ядре?
- # Какие из перечисленных ниже полей находятся в структуре dentry?
- # Как организованы в памяти ядра основные объекты файловой системы?
- # Чем отличается жёсткая ссылка от символической?
- # Какие из утверждений правильно описывают связи между struct file_system_type, super_block, inode, dentry?
- # Какие операции являются основными для директории?
- # Что делает операция readdir?
- # Что делает операция lookup?
- # Из каких шагов состоит операция lookup?
- # По каким ключам выполняется поиск в dentry hash?
- # Какие шаги выполняются при операции lookup, если dentry не найден в hash-таблице?
- # Кем и когда создаётся новый dentry в кэше detnry?
- # Что происходит с созданной в процессе поиска dentry в памяти, если на файловой системе не находится искомого файла?
- # Что означает пустая ссылка на inode для структуры dentry?
- # Каким образом для файловых систем решается проблема актуальности кэша dentry?
- # Для чего служит метод revalidate()?
- # Для каких файловых систем имеет смысл поддержка метода revalidate()?
- # Какие объекты файловой системы должны создаваться в ядре при загрузке драйвера файловой системы?
- # Какие объекты файловой системы создаются в ядре при монтировании файловой системы?
- # Какие объекты создаются в ядре при поиске пути в файловой системе?
- # Каким образом в ядре решается проблема разрастания дерева каталогов в памяти?
- # Упорядочены ли dentry в списке lru?
- # Когда происходит очистка кэша dentry на основании списка lru (least resently used)?
- # За счёт чего увеличиваются счётчики ссылок на dentry?
- # Что входит в контекст открытого файла?
- # Что такое файловый дескриптор?
- # При каких вызовах увеличивается количестово ссылок на объекты dentry?
- # При каких вызовах увеличивается количество ссылок на объекты struct file?
- # При каких вызовах увеличивается количество ссылок на объекты struct files_struct?
- # Какие операции могут выполняться при вызове unlink?
- # Если количество жестких ссылок на inode при удалении файла уменьшилось до 0,то:
- # Если количество жестких ссылок на inode при удалении файла осталось больше 0, то:
- # Для каких операций используется команда shell mount?
- # Какие параметры задаются при монтировании файловой системы?
- # Как передаётся управление при вызове команды shell mount?
- # Какие действия исполняются системным вызовом sys_mount()?
- # Как и кем используется идентификатор монтируемого устройства при монтировании файловой системы?
- # Каким образом системна функция sys_mount использует структуру file_system_type монтируемой файловой системы?
- # Что описывает объект vfsmount?
- # Какие поля держит объект vfsmount?
- # Для чего используется флаг D_MOUNTPOINT?
- # Как выглядит lookup если в искомом пути задействовано несколько файловых систем?
- # Как ищется нужный объект vfsmount?
- # Что является ключём в hash таблице структур vfsmount?
- # Что выполняет команда mount c ключом --bind?
- # Как организуется синоним каталога, полученный в результате выполнения команды mount c ключём bind?
- # Может ли процедура lookup() зациклиться при выполнении поиска пути, где часть пути является синонимом каталога?
- # Счётчики ссылок на какие объекты повышает операция монтирования файловой системы?
- # Что является результатом операции lookup и сохраняется в структуре file (в виде ссылок)?
- # Что происходит при монтировании одной и той же файловой системы много раз?
- # Какая последовательность операций выполняется при операции размонтирования файловой системы?
- # Каков будет результат команды umount, если приложение открыло файл на размонтируемой файловой системе?
- # В каком случае возможно наличие в памяти ядра корневой dentry файловой системы, не связанной с точкой монтирования?
- # Каким образом и какой экземпляр объекта superblock получает VFS при повторном монтировании файловой системы?
- # К чему приводит флаг read-only установленный для объекта superblock или его отсутствие?
- # Каким образом возможно сделать доступ к файловой системе только для чтения, если она уже смонтирована с полным доступом?
- # Какие операции выполняются при выполнении системного вызова link()?
- # Как проверяется возможность создания жёсткой ссылки при выполнении системного вызова link()?
- # Можно ли к одной и той же точке монтирования смонтировать больше одной файловой системы?
- # За что отвечает сетевой стек ядра linux?
- # Из чего состоит сетевой стек ядра linux?
- # Для чего служит struct net devices?
- # Какие виртуальные сетевые устройства существуют?
- # Что такое loopback (lo) интерфейс?
- # Для чего служит виртуальная сетевая карта loopback?
- # Виртуальной сетевой устройство bonding служит для:
- # Для чего используется виртуальное сетевое устройства bonding?
- # то такое технология SR-IOV применительно к сетевым устройствам?
- # Каким образом приложение взаимодействует со стеком сетевых протоколов для посылки/получения данных по сети?
- # Сокет для приложения выглядит:
- # Чем отличается работа приложения с сокетами от работы с обычными файлами ?
- # Как соотносится семиуровневая модель OSI и сокеты?
- # Как соотносятся протоколы стека TCP/IP Linux и семиуровневая модель OSI?
- # Какие уровни определяет ядро для протоколов выстраивающихся в сетевой стек?
- # Каковы особенности инициализации файловой системы sockfs?
- # В чём сходство в организации связей между объектами ядра при работе с файлами и при работе с сокетами?
- # Чем отличается создание сокета от открытия файла?
- # Где хранятся параметры, данные и состояния сокета?
- # Какие из утверждений относительно целей разделения данных между структурами Sock и socket верны?
- # Какие поля есть в структуре socket?
- # Какие уровни модели OSI описывает объект структура Sock?
- # Структура inet_sk, описывающая сетевой уровень модели OSI содержит:
- # Структура tcp_sk, описывающая транспортный уровень модели OSI содержит:
- # Структура inet6_sk, описывающая транспортный уровень модели OSI содержит:
- # Какие данные доступны сетевому стеку при посылке данных по сети наружу?
- # В чём состоят особенности обработка принятых по сети данных?
- # В каком виде ходят данные по сетевому стеку?
- # Каким образом пролегает входящий путь сетевого пакета?
- # Что сетевой адаптер делает при получении сетевого пакета?
- # Кем обрабатывается прерывание от сетевой карты
- # В каком контексте происходит обработка прерывания от сетевой карты?
- # Во время обработки сетевого пакета в драйвере сетевой карты:
- # В случае задержек в обработке прерывания от сетевой карты и большого количества входящих пакетов:
- # Что делает драйвер сетевой карты при обработке прерывания?
- # Где находится специальная очередь пакетов для обработки стеком протоколов?
- # Каким образом передаётся управление коду обработчика входящих пакетов после обработки в драйвере сетевой карты?
- # Есть ли какие недостатки у способа по-пакетной обработки входящего трафика
- # В чём особенности работы драйвера сетевой карты при использовании NAPI?
- # В чём особенности работы обработчика программного прерывания NET_RX_SOFTIRQ при использовании NAPI?
- # Каким образом вызываются обработчики протоколов для стека протоколов
- # Каким образом определяется последующий обработчик протокола?
- # Каким образом подсистема сокетов получает данные от стека сетевых протоколов
- # После поступления данных в очередь пакетов подсистемы сокетов происходит:
- # Какова стратегия выделения памяти под входящие сетевых пакеты в драйверах сетевых устройств:
- # К методам каких объектов идёт обращение из системного вызова при посылке приложением данных в сеть?
- # Каким способом происходит передача посылаемых в сеть данных от приложения модулям ядра при использовании системных вызовов write() или send()
- # Сколько памяти выделяется под сетевой исходящий пакет в ядре LINUX?
- # Что происходит при посылке исходящих данных в сеть?
- # В каком контексте может исполнятся обработка исходящего трафика?
- # Каким образом выполняется отправка данных в сеть после обработки исходящего трафика драйверами сетевых протоколов?
- # Каким образом драйвер протокола TCP выполняет клонирование исходящих пакетов?
- # Каким образом выполняется оптимизация клонирования структур sk_buff?
- # Чем отличается выделение памяти под объекты sk_buff через skb clone cache от выделения памяти через kmemcache
- # В каких объектах ядра создаются очереди сетевых пакетов?
- # В каких очередях сетевых пакетов не допускается потери пакетов (не постановка в очередь из-за отсутствия памяти)?
- # При работе с какой очередью пакетов проблемы недостатка ресурсов решаются управлением потока сетевых пакетов?
- # Что описывает структура sk_buff?
- # Как соотносятся приходящий пакет и структура sk_buf?
- # Какие данные содержит структура sk_buf?
- # Какие указатели на данные пакета содержит sk_buff
- # Какие ограничения и трудности имеет линейный sk_buff?
- # Возможно ли и если возможно, в каких случаях данные сетевого пакета размещаются более чем в одном буфере памяти?
- # Что происходит в сетевой подсистеме с sk_buff для исходящего трафика?
- # Какой модуль сетевой подсистемы создаёт и инициализирует объект sk_buf для исходящего трафика?
- # Каким образом происходит формирование заголовков сетевого пакета?
- # Что случается с структурами данных sk_buff и памятью на входящем трафике?
- # Какой модуль создаёт и инициализирует структуру sk_buff при обработке входящего трафика?
- # При получении пакета создаётся объект sk_buff. Какие значения указателей этой структуры возможны сразу после её создания?
- # Для чего используется функция сетевой подсистемой skb_copy_bits?
- # Для чего используется функция skb_may_pull()
- # Какие могут выполняться операции если будет обнаружено что в линейной части пакета данных меньше запрошенного значения
- # Что делает с указателями структуры sk_buf метод skb_pull?
- # Что делает функция skb_reserve?
- # Что делает операция skb_push
- # Каковы направления оптимизации структуры sk_buf?
- # Каким образом sk_buf используется при обработке на стеке TCP/IP?
- # Каким образом sk_buf оптимизируется с точки зрения выделения памяти?
- # Что содержится в поле "управляющий блок" (cb) структуры sk_buff?
- # Как каждый протокол обходится с ранее оставленными в поле "cb" (управляющий блок) структуры sk_buff данными другого протокола?
- # Каким образом проверяется что данные, описывающие состояние протокола не переполнили поле "cb" (управляющие блок) структуры sk_buf?
- # За что отвечает протокол уровня MAC (Ethernet)?
- # За что отвечает протокол сетевого уровня IP?
- # За что отвечает протокол транспортного уровня TCP?
- # откуда получает протокол IP входящий пакет
- # Какие операции выполняются с входящим пакетом при обработке протоколом IP?
- # Какие проверки выполняет протокол IP сразу по получению сетевого пакета?
- # за что отвечает Net Filter
- # Когда применяются правила Net Filter?
- # Что может случиться с пакетом после фильтрации Net Filter?
- # Какие варианты действий с входным пакетом возможны при маршрутизации?
- # В каких случаях входящий пакет может быть уничтожен?
- # Какому протоколу передаёт пакет протокол IP в случае если он забирает пакет себе?
- # В каких случаях при маршрутизации пакета может быть задействован протокол ICMP?
- # откуда получает протокол IP исходящий пакет
- # Какие операции выполняются с исходящим пакетом при обработке протоколом IP?
- # Куда может передаваться исходящий сетевой пакет протоколом IP?
- # Что олицетворяет destination entry?
- # Какое поле destonation entry определяет правило последующей обработки пакета?
- # В какой момент destination entry связывается с сетевым пакетом?
- # Какие варианты оптимизации работы протокола IP реализованы или были реализованы ядре
- # Когда на dst инициализируется функция input
- # Как организована синхронизация кэша destination entry при изменении таблицы маршрутизации?
- # Обработку каких операций предусматривает подсистема fib?
- # Какие реализации хранения правил маршрутизации в ядре linux существуют?
- # Для чего служат объекты Neighbors в ядре?
- # Зачем нужен планировщик процессорного времени?
- # Что означает "эмуляция многозадачности" современными операционными системами?
- # В чём заключается многозадачность операционная системы?
- # За что отвечает функция schedule()?
- # Какие шаги выполняются при вызове функции schedule()?
- # С какими объектами ядра next и current работает функция schedule()?
- # Как работает процедура переключения контекста с процесса current на процесс next?
- # Когда может быть вызвана функция schedule?
- # Что такое preemtive kernel?
- # На основании каких параметров планировщик выбирает следующую задачу для выполнения?
- # Чем отличается планировщик real-time системы от обычного планировщика ядра linux?
- # Как планировщик реализует процедуру выделения времени задачам
- # Какие основные трудности решались при разработке планировщиков ядра Linux?
- # В чём недостаток выделения времени приложениям квантами фиксированного размера?
- # Каким образом решили проблему учёта времени процессов?
- # В чём особенность интерактивного процесса с точки зрения планировщика?
- # В чём была проблема выделения времени интерактивному процессу
- # Как решили проблему выделения процессорного времени интерактивному процессу?
- # Какие проблемы возникают при разработке планировщика для многопроцессорной системы?
- # К чему ведёт постоянное перемещение процесса между процессорами?
- # Каким образом были решены проблемы разработки планировщика для SMP?
- # Какие операции выполнял первый (старый) планировщик?
- # Какие усовершенствования были сделаны в планировщике О(1)?
- # В чём особенность планировщика CFS?
- # Для чего служит idle процесс?
- # Что такое проблема priority inversion?
- # Как решается проблема priority inversion
- # Что такое Page Cache в ядре Linux?
- # Какие кэши есть в ядре Linux?
- # В чём назначение кэшей ядра Linux?
- # Какие режимы работы есть у кэшей ядра Linux?
- # Какие утверждения верны насчёт режима кэша write back?
- # Какие утверждения верны насчёт режима кэша write through?
- # В каком режиме работает Page cache в Linux?
- # Как связаны объекты VFS и кэш?
- # Что показывают флаги, содержащиеся на страничке кэша?
- # Что происходит при чтении данных из файловой системы с использованием Page Cache?
- # Что происходит при чтении данных из файловой системы если страничка кэша присутствует, но флаг uptodate не выставлен?
- # Какую часть работы чтения данных выполняет слой block layer?
- # Что происходит при записи в файл в режиме write back
- # В каких случаях происходит считывание данных с носителя на страницу кэша?
- # Ниже приведены последовательно этапы жизненного цикла страницы кэша Page Cache. Укажите какие этапы являются лишними?
- # В каких случаях для страницы кэша выставляется флаг uptodate?
- # В каких случаях для страницы кэша выставляется флаг Dirty?
- # В каких случаях выставляется флаг write back?
- # Когда ядро пишет кэш на носитель?
- # Где высвобождаются странички памяти, когда в системе кончается память
- # Как ядро следит за количеством dirty страничек памяти
- # Каким образом ядро учитывают запись данных в страницу памяти, отображённой на диск?
- # Что происходит когда ядро получает page fault прерывание при первой записи в память, отображённой на диск?
- # Какие могут возникнуть проблемы при записи данных с страницы памяти, отображаемой на диск на носитель?
- # Как решается проблема гонок при записи данных на носитель с страницы, отображённой на диск?
- # Как ядро находит приложения, в адресное пространство которых отображен страница
- # Как соотносится ограничение "грязной" памяти в ядре с количеством общей памяти?
- # Когда файл открывается без кэша?
- # Что произойдёт при открытии файла 2-мя приложениями, одно из которых записало данные в кэш, а затем другое пишет данные напрямую на носитель?
- # Какие варианты поиска свободной памяти можно задать через gfp флаги?
- # Какие основные задачи решает ядро операционной системы?
- # Какие основные ресурсы контролирует ядро операционной системы?
- # Меж-процессное взаимодействие (IPC) обеспечивается:
- # Каковы минимальные требования к аппаратуре для того что бы ядро linux могло на ней выполняться?
- # Каким образом операционная система Linux контролирует распределение процессорного времени между процессами?
- # Системный вызов отличается от не системного:
- # Что такое POSIX?
- # Как соотносятся системные вызовы Linux c POSIX?
- # Как соотносятся функции стандартной библиотеки С под Linux c POSIX?
- # Какое утверждения про функции стандартной библиотеки С (libc) верно?
- # Каким образом происходит передача управления коду ядра при системном вызове?
- # Каковы особенности исполнения системных вызовов?
- # Какие достоинства монолитного ядра?
- # Каковы достоинства микро-ядра?
- # LINUX использует ядро следующего типа:
- # Какие основные подсистемы включает в себя ядро?
- # Для чего может используется подсистема Netlink?
- # Для чего может быть использована файловая система procfs?