Лаборатория Tarantool: Системное программирование

Научись работать с большими объемами данных и использовать все возможности Tarantool, чтобы стать востребованным IT-специалистом.
12 занятий, 48 ак.часов
Хочу учиться
Что дает курс

Курс состоит из 23 занятий по двум дисциплинам: «Системное программирование» и «Архитектура и эксплуатация высоконагруженных систем». На первой ты узнаешь о работе Linux и изучишь эффективное низкоуровневое программирование с использованием знаний об устройстве ОС и взаимодействии с ней. В рамках второй — освоишь теорию сетевых технологий и распределенных алгоритмов, познакомишься с современными инструментами разработки и эксплуатации высоконагруженных систем. С перечнем изучаемых тем в рамках курса можно ознакомиться на страницах двух дисциплин «Архитектура и эксплуатация высоконагруженных систем» и «Системное программирование».

Какие знания нужны

Уверенное владение любым языком программирования. Базовые навыки работы в командной строке и знание языка Си.

Как проходят занятия

Онлайн-интенсивы проходят в вечернее время. В конце каждой лекции студенты получают домашнее задание на закрепление пройденных тем. В конце предмета «Системное программирование» — итоговый экзамен.

Как поступить?

Регистрация
Заполни заявку и регистрируйся на курс до 25-го февраля включительно
Тестирование
Ссылка на тест придет на почту до 18:00 26-го февраля. Пройди тест до 18:00 28-го февраля
Зачисление
Письмо о зачислении придет на почту каждому студенту 3-го марта включительно
Начало обучения
Обучение начнется на неделе с 4-го марта по расписанию

Вопросы по обучению

Отборочный тест

Проверка знаний любого языка программирования, языка C и навыка работы в командной строке.

Требования к поступающим

Поступить могут студенты и аспиранты всех курсов и факультетов МФТИ, знающие какой-либо язык программирования.

Оборудование для обучения

Ноутбук с установленным Linux.

Нагрузка в неделю

8 ак. часов в неделю без учета времени на выполнение домашнего задания.

Место проведения

Онлайн.

Стоимость обучения

Обучение бесплатно.

Моего вопроса тут нет :(

Другие вопросы можно посмотреть здесь.

Программа

Смешанное занятие № 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.
 

Смешанное занятие № 2. Ядро. Устройство. Планировщики процессов.

 
Ядро. Процесс и его представление в ядре. Состояния процесса, цикл жизни.
Типы совместной работы процессов: preemptive и cooperative. Планировщики и
IO Bound vs Processor Bound процессы, особенности планирования. Вызов nice, приоритеты. Единица планирования - timeslice. Планировщики в ядре, CFS. Вызовы sched_yield и sched_setaffinity.
 

Смешанное занятие № 3. Процесс. Режимы работы, память, ресурсы. Прерывания. Взаимодействие с ядром. Системные вызовы.

Режимы работы: привелигированныи, обычныи. Память, разбивка на секции. Ресурсы процесса - дескрипторы, локи. Прерывания процесса: исключения, аппаратные, шедулинг. Контексты работы: пользователь, ядро, сигнал. Обращения к ядру - системные вызовы: как определяются, передача параметров, возврат результата.

Смешанное занятие № 4. Память. Виртуальная и физическая. Уровни кеша, кеш линия. Пользовательская память и память ядра. False sharing. High and low memory.

Виртуальная и физическая память. Cache, cache line, cache levels, cache coherence, false sharing. High and low memory, области памяти. Page tables. Память ядра и процесса пользователя, разметка, вызовы: kmalloc, vmalloc, brk, madvice, mmap, pmap. Malloc, его альтернативы.

Смешанное занятие № 5. Сигналы. Аппаратные и программные прерывания, их природа. Top and bottom halves. Сигналы и системные вызовы, контекст сигнала.

Прерывания. Аппаратные и программные, их природа, назначение. Обработка прерываний. Сигналы - зачем нужни они, как устроены. Обработка сигналов, особенности, контекст выполнения, longjump, top and bottom halves. /proc/interrupts. signal, sigaction.

Смешанное занятие № 6. Файловая система. Виртуальная ФС в ядре. Файлы, их типы. I/O операции и их планировщики в ядре. Page cache. Режимы работы с файлом.

Файловая система и ядро. Виртуальная ФС. Файлы и типы: block, char, network. Представление в ядре: inode. Секторы. Планировщики IO операций - elevator-ы: Linus, Deadline, Anticipatory, CFQ, Noop. Page cache. Page nowrite/writethrough/ writeback. Работа с файлом - buffered, unbuffered, line.

Смешанное занятие № 7. Потоки. Отличие от процессов. Атомарные операции. Синхронизация. Атрибуты. Особенности многопоточных процессов. Вид в ядре.

 
Потоки в linux, представление в ядре. Отличие от процессов. POSIX.
Синхронизация: mutex, rw-lock, condition variable, spin-lock, barrier. Атомарные операции. Атрибуты потоков и объектов синхронизации. Взаимодействие с сигналами.
 

Смешанное занятие № 8. IPC. Pipe, FIFO. XSI и POSIX. Сокеты: доменные, обычные.

IPC. Pipe, FIFO. XSI: message queue, semaphore, shared memory. POSIX semaphore. Sockets: API, byte orderding. Доменные сокеты.

Смешанное занятие № 9. Сеть. Модели TCP/IP, OSI. Связь с ядром. Интерфейсы и примеры.

 
Сеть, краткая история от ARPANET. Каноническая модель OSI, реальная TCP/IP, стек
протоколов. Реализация сетевого взаимодействия в ядре. Пользовательский
интерфейс socket, connect, close, send, recv. TCP и UDP.
 

Смешанное занятие № 10. Advanced IO. Неблокирующие IO операции. Блокировка файла. Мультиплексирование: select, poll, kqueue.

Advanced IO. Неблокирующие IO операции. Блокировка файла: flock, lockf, fcntl. Multiplexed IO: select, poll, kqueue. Async IO: aio_read/write.

Смешанное занятие № 11. Пользователи и группы. Вход в систему. Real and effective user. Права доступа у процессов, файлов. Сессии. Демонизация процесса.

Пользователи, группы, права. Атрибуты и права доступа файлов и процессов. Группы процессов, сессии. /etc/passwd, /etc/group. Sticky bit. Демонизация процесса. Атрибуты глобальных объектов: локов, памяти.

Экзамен № 1. Экзамен

Экзамен