Семинар 1:
-
Введение. Функции и задачи ОС. Что будет и чего не будет в курсе.
-
Командная строка. Встроенная справка (MANual pages).
-
Интерфейс системных вызовов. Библиотека (g)libc.
-
Структура линкуемого исполняемого (ELF)-файла.
-
LD и постановка программы на исполнение. Создание процесса.
Практика:
-
Пример собственной реализации функции-обертки над системным вызовом
-
Примеры программ fork, wait, waitpid, exit, exec*.
Семинар 2:
-
частотный анализ системных вызовов
-
диаграмма состояний процесса
-
оверхед на системный вызов
-
методики измерения времени
-
read/write--обеспечивают в штатных сценариях, но не гарантируют целостную передачу за 1 вызов. Решение — обернуть в циклы.
-
pipe, FIFO, cmd pipeline
-
ремарка о двусторонних пайпах
-
парсинг аргументов командной строки
-
ремарка о реэнтерабельности
-
пример: fork, exec, n-1(but <=2 each time) pipes
-
домашка #1
-
Не успели:
- Пример "reap zombies"
Семинар 3:
-
strtok, ремарка о реэнтерабельности
-
об ООП на С и процедурных языках
-
Ремарка о двунаправленных пайпах
-
домашка #2
-
IPC: разделяемая память -- способы, примеры, реализации и стандарты
- mmap
- SYS-V
- POSIX -- Не успели
Cеминар 4:
-
POSIX Shared Memory
-
Управление SYS V IPC. Монитор ipcs и лимиты в ядре.
-
IPC: очереди сообщений -- способы, примеры, реализации и стандарты
- SYS-V
- POSIX
-
Ремарка об очереди с приоритетом
-
Производительность IPC примитивов
-
домашка #3