Exam Topics for Year 2019/2020
Exam topics for year 2019/2020 taken from here.
English
Computer architecture and assembler language
- Intro: Computer architecture concept
- ISA and assembler language
- Assembler, assemble language. RISC and MIPS
- Registers and memory
- Code addressing: conditionals, loops and arrays
- Stack and subroutines
- Mathematical coprocessor
- Call frame and macros
- Polling and MMIO
- Exceptions and traps
- Interrupts
- Pipeline and branch prediction
- Cache
Operating system programming
- Challenges of OS and disadvantages of Assembler language
- C programming language
- C: multifile compiling
- C: Addressing and address arithmetic
- Multitasking
- More on memory
- C programming language at a glance
- Filesystems
- File input/output
- Processes
- Permissions
- Permissions (part II), multifile C project
- Strings
- Regular expressions
- Inter-process communications: signals
- Inter-process communications: messages and shared memory
Architecture of an operating system
- Overview. Syscall → utility → shell → script → service
- TCP/IP overview
- Sockets
- Pre-system boot
- System boot
- Systemd services
- Packages. Repository. Community
- Free Software
- Package maintaining
- System hardware setup
- Network setup
- Application bus
- High-level languages and OS
- Granting privileged actions
Russian
Архитектура компьютера и язык ассемблера
- Система команд и её место в архитектуре ЭВМ
- Ассемблер и язык ассемблера
- RISC и MIPS
- Регистры и память, виды адресации
- Адресация в коде:
- условные операторы
- циклы
- массивы
- Стек и подпрограммы
- Понятие конвенции
- +конвенции по вызову подпрограмм
- +конвенции по использованию регистров
- Математический сопроцессор
- Кадр вызова подпрограммы
- Макроассемблер
- Поллинг и MMIO
- Исключения и программные ловушки (traps)
- Прерывания
- Конвейер
- Предсказание перехода
- Кеш: прямой и ассоциативный
- Виртуальная память
- Выгрузка страниц (swap)
Системное программирование и Си
- Основные конструкции и типы данных в Си
- Сборка многофайлового проекта в Си
- Системы сборки, GNU make
- Адресация и адресная арифметика в Си
- Обеспечение многозадачности в ОС
- Выделение и освобождение памяти в Си
- Файловые системы (два определения)
- Файловый/поточный ввод-вывод
- Процессы
- Права доступа
- Базовая дискреционная модель
- SetUID/SetGID
- Строковые операции в Си
- Регулярные выражения
- IPC: Сигналы
- IPC: Сообщения и разделяемая память
Архитектура операционной системы
Несколько более детальный список вопросов для отдельного выставления баллов по финальному тесту четвёртого модуля.
- Операционная система
- Задачи ОС и примеры их решения
- «Цветочек»: Syscall → utility → shell → script → service
- Интерфейсы ОС
- Командная оболочка (shell):
- Как язык программирования
- Как пользовательский интерфейс
- Как инструмент интеграции («скриптования»)
- Стек протоколов TCP/IP
- Задачи, решаемые на каждом из уровней
- Пакеты, инкапсуляция/декапсуляция пакетов
- Независимость уровней
- Сокеты и работа с ними
- Виды сокетов
send()
/recv()
противread()
/write()
- Пример кода, использующего сокеты
- Досистемная загрузка
- Этапы досистемной загрузки и решаемые ими задачи (в теории)
- Досистемная загрузка конкретной ОС (на практике)
- Загрузка операционной системы
- Задачи ядра ОС
- Процесс
init
и его особенности
- Возможности Systemd
- Основные задачи, решаемые
systemd
- Юниты:
.service
,.mount
и другие, структура.service
-файла - Сокет-активация
.socket
-активируемой службы
- Основные задачи, решаемые
- Пакеты в Linux
- Свойства пакета
- Установщик пакетов и пакетный диспетчер
- Установка, удаление и обновление пакетов
- Репозиторий, дистрибутив, сообщество
- Особенность пакетов в репозитории
- Сопровождение репозитория сообществом: основные задачи
- Информационные ресурсы сообщества
- Открытая разработка и свободное лицензирование
- Разрешительные (BSD-like) и копилефтные (GPL/MPL-like) свободные лицензии. Определение СПО (по Столлману).
- Бизнес-модели, основанные на или использующие СПО
- Процесс сопровождения пакетов
- Этапы превращения ПО в исходных текста в пакет
- Требования к пакету, публикуемому в репозитории
- Настройка сети в Linux
- Настройка сетевых интерфейсов вручную
- Настройка маршрутизации и DNS
- Автоматическая настройка
- Прикладная шина
- Назначение и архитектура
- Пример сервиса
- Системное программирование на языках высокого уровня
- Достоинства и недостатки системного программирования на языках высокого уровня
- Пример программы, взаимодействующей с ОС на известном вам языке высокого уровня
- Повышение привилегий процесса
- Недостатки традиционной SEUID/SETGID модели
- Архитектура Polkit