Обратная связь
Курс состоит из двух дисциплин: «Системное программирование» и «Архитектура и эксплуатация высоконагруженных систем». На первой ты узнаешь о работе Linux и изучишь эффективное низкоуровневое программирование с использованием знаний об устройстве ОС и взаимодействии с ней. В рамках второй — освоишь теорию сетевых технологий и распределенных алгоритмов, познакомишься с современными инструментами разработки и эксплуатации высоконагруженных систем.
Уверенное владение любым языком программирования. Базовые навыки работы в командной строке и знание языка Си.
Цель курса — Научись работать с большими объемами данных и использовать все возможности Tarantool, чтобы стать востребованным IT-специалистом.
Офлайн-интенсивы проходят в вечернее время. В конце каждой лекции студенты получают домашнее задание на закрепление пройденных тем. В конце предмета «Системное программирование» — итоговый экзамен.
Смешанное занятие №1
История Unix, Linux. Архитектуры. Стандарты.
Linux vs Unix. Microkernel. FreeBSD, Ubuntu, Mac, System III, V, Unix time-sharing system, 4.4BSD.
Стандарты: ISO C, POSIX, Single Unix Specifications. Организации: Open Group, IEEE.
4 часа
Смешанное занятие №2
Ядро. Устройство. Планировщики процессов.
Ядро. Процесс и его представление в ядре. Состояния процесса, цикл жизни.
Типы совместной работы процессов: preemptive и cooperative. Планировщики и
IO Bound vs Processor Bound процессы, особенности планирования. Вызов nice, приоритеты. Единица планирования - timeslice. Планировщики в ядре, CFS. Вызовы sched_yield и sched_setaffinity.
4 часа
Смешанное занятие №3
Процесс. Режимы работы, память, ресурсы. Прерывания. Взаимодействие с ядром. Системные вызовы.
Режимы работы: привелигированныи, обычныи. Память, разбивка на секции. Ресурсы процесса - дескрипторы, локи. Прерывания процесса: исключения, аппаратные, шедулинг. Контексты работы: пользователь, ядро, сигнал. Обращения к ядру - системные вызовы: как определяются, передача параметров, возврат результата.
4 часа
Смешанное занятие №4
Виртуальная и физическая память. Cache, cache line, cache levels, cache coherence, false sharing. High and low memory, области памяти. Page tables. Память ядра и процесса пользователя, разметка, вызовы: kmalloc, vmalloc, brk, madvice, mmap, pmap. Malloc, его альтернативы.
4 часа
Смешанное занятие №5
Прерывания. Аппаратные и программные, их природа, назначение. Обработка прерываний. Сигналы - зачем нужни они, как устроены. Обработка сигналов, особенности, контекст выполнения, longjump, top and bottom halves. /proc/interrupts. signal, sigaction.
4 часа
Смешанное занятие №6
Файловая система и ядро. Виртуальная ФС. Файлы и типы: block, char, network. Представление в ядре: inode. Секторы. Планировщики IO операций - elevator-ы: Linus, Deadline, Anticipatory, CFQ, Noop. Page cache. Page nowrite/writethrough/ writeback. Работа с файлом - buffered, unbuffered, line.
4 часа
Смешанное занятие №7
Потоки в linux, представление в ядре. Отличие от процессов. POSIX.
Синхронизация: mutex, rw-lock, condition variable, spin-lock, barrier. Атомарные операции. Атрибуты потоков и объектов синхронизации. Взаимодействие с сигналами.
4 часа
Смешанное занятие №8
IPC. Pipe, FIFO. XSI и POSIX. Сокеты: доменные, обычные.
IPC. Pipe, FIFO. XSI: message queue, semaphore, shared memory. POSIX semaphore. Sockets: API, byte orderding. Доменные сокеты.
4 часа
Смешанное занятие №9
Сеть. Модели TCP/IP, OSI. Связь с ядром. Интерфейсы и примеры.
Сеть, краткая история от ARPANET. Каноническая модель OSI, реальная TCP/IP, стек
протоколов. Реализация сетевого взаимодействия в ядре. Пользовательский
интерфейс socket, connect, close, send, recv. TCP и UDP.
4 часа
Смешанное занятие №10
Advanced IO. Неблокирующие IO операции. Блокировка файла. Мультиплексирование: select, poll, kqueue.
Advanced IO. Неблокирующие IO операции. Блокировка файла: flock, lockf, fcntl. Multiplexed IO: select, poll, kqueue. Async IO: aio_read/write.
4 часа
Смешанное занятие №11
Пользователи, группы, права. Атрибуты и права доступа файлов и процессов. Группы процессов, сессии. /etc/passwd, /etc/group. Sticky bit. Демонизация процесса. Атрибуты глобальных объектов: локов, памяти.
4 часа