View on GitHub

Computer Architecture and Operating Systems

Course taught at Faculty of Computer Science of Higher School of Economics

Exam Topics for Year 2019/2020

Exam topics for year 2019/2020 taken from here.

English

Computer architecture and assembler language

  1. Intro: Computer architecture concept
  2. ISA and assembler language
  3. Assembler, assemble language. RISC and MIPS
  4. Registers and memory
  5. Code addressing: conditionals, loops and arrays
  6. Stack and subroutines
  7. Mathematical coprocessor
  8. Call frame and macros
  9. Polling and MMIO
  10. Exceptions and traps
  11. Interrupts
  12. Pipeline and branch prediction
  13. Cache

Operating system programming

  1. Challenges of OS and disadvantages of Assembler language
  2. C programming language
  3. C: multifile compiling
  4. C: Addressing and address arithmetic
  5. Multitasking
  6. More on memory
  7. C programming language at a glance
  8. Filesystems
  9. File input/output
  10. Processes
  11. Permissions
  12. Permissions (part II), multifile C project
  13. Strings
  14. Regular expressions
  15. Inter-process communications: signals
  16. Inter-process communications: messages and shared memory

Architecture of an operating system

  1. Overview. Syscall → utility → shell → script → service
  2. TCP/IP overview
  3. Sockets
  4. Pre-system boot
  5. System boot
  6. Systemd services
  7. Packages. Repository. Community
  8. Free Software
  9. Package maintaining
  10. System hardware setup
  11. Network setup
  12. Application bus
  13. High-level languages and OS
  14. Granting privileged actions

Russian

Архитектура компьютера и язык ассемблера

  1. Система команд и её место в архитектуре ЭВМ
  2. Ассемблер и язык ассемблера
  3. RISC и MIPS
  4. Регистры и память, виды адресации
  5. Адресация в коде:
    • условные операторы
    • циклы
    • массивы
  6. Стек и подпрограммы
  7. Понятие конвенции
    • +конвенции по вызову подпрограмм
    • +конвенции по использованию регистров
  8. Математический сопроцессор
  9. Кадр вызова подпрограммы
  10. Макроассемблер
  11. Поллинг и MMIO
  12. Исключения и программные ловушки (traps)
  13. Прерывания
  14. Конвейер
  15. Предсказание перехода
  16. Кеш: прямой и ассоциативный
  17. Виртуальная память
  18. Выгрузка страниц (swap)

Системное программирование и Си

  1. Основные конструкции и типы данных в Си
  2. Сборка многофайлового проекта в Си
  3. Системы сборки, GNU make
  4. Адресация и адресная арифметика в Си
  5. Обеспечение многозадачности в ОС
  6. Выделение и освобождение памяти в Си
  7. Файловые системы (два определения)
  8. Файловый/поточный ввод-вывод
  9. Процессы
  10. Права доступа
    • Базовая дискреционная модель
    • SetUID/SetGID
  11. Строковые операции в Си
  12. Регулярные выражения
  13. IPC: Сигналы
  14. IPC: Сообщения и разделяемая память

Архитектура операционной системы

Несколько более детальный список вопросов для отдельного выставления баллов по финальному тесту четвёртого модуля.

  1. Операционная система
    • Задачи ОС и примеры их решения
    • «Цветочек»: Syscall → utility → shell → script → service
    • Интерфейсы ОС
  2. Командная оболочка (shell):
    • Как язык программирования
    • Как пользовательский интерфейс
    • Как инструмент интеграции («скриптования»)
  3. Стек протоколов TCP/IP
    • Задачи, решаемые на каждом из уровней
    • Пакеты, инкапсуляция/декапсуляция пакетов
    • Независимость уровней
  4. Сокеты и работа с ними
    • Виды сокетов
    • send()/recv() против read()/write()
    • Пример кода, использующего сокеты
  5. Досистемная загрузка
    • Этапы досистемной загрузки и решаемые ими задачи (в теории)
    • Досистемная загрузка конкретной ОС (на практике)
  6. Загрузка операционной системы
    • Задачи ядра ОС
    • Процесс init и его особенности
  7. Возможности Systemd
    • Основные задачи, решаемые systemd
    • Юниты: .service, .mount и другие, структура .service-файла
    • Сокет-активация .socket-активируемой службы
  8. Пакеты в Linux
    • Свойства пакета
    • Установщик пакетов и пакетный диспетчер
    • Установка, удаление и обновление пакетов
  9. Репозиторий, дистрибутив, сообщество
    • Особенность пакетов в репозитории
    • Сопровождение репозитория сообществом: основные задачи
    • Информационные ресурсы сообщества
  10. Открытая разработка и свободное лицензирование
    • Разрешительные (BSD-like) и копилефтные (GPL/MPL-like) свободные лицензии. Определение СПО (по Столлману).
    • Бизнес-модели, основанные на или использующие СПО
  11. Процесс сопровождения пакетов
    • Этапы превращения ПО в исходных текста в пакет
    • Требования к пакету, публикуемому в репозитории
  12. Настройка сети в Linux
    • Настройка сетевых интерфейсов вручную
    • Настройка маршрутизации и DNS
    • Автоматическая настройка
  13. Прикладная шина
    • Назначение и архитектура
    • Пример сервиса
  14. Системное программирование на языках высокого уровня
    • Достоинства и недостатки системного программирования на языках высокого уровня
    • Пример программы, взаимодействующей с ОС на известном вам языке высокого уровня
  15. Повышение привилегий процесса
    • Недостатки традиционной SEUID/SETGID модели
    • Архитектура Polkit