Программа «Linux Kernel».
Общее описание
Linux сегодня - самая популярная операционная система в мире для суперкомпьютеров. Работа большого количества веб серверов в сети Интернет по всему миру и более миллиарда Android устройств осуществляется благодаря Linux. Огромное количество пользователей по всему миру используют GNU/Linux на своих домашних компьютерах. Этот курс позволит сформировать первоначальные знания по работе с ядром Linux. Курс Linux Kernel является важным для начинающих специалистов по низкоуровневому программированию. Участники узнают о принципах программирования на языке С в пространстве ядра, смогут делать свои собственные конфигурации ядра и работать с исходным кодом. Будут раскрыты и более узкие темы, по различным подсистем ядра: Kernel Virtual Memory, Process Management, Linux Scheduler, Kernel Synchronization Primitives, Kernel Time-keeping Architecture, Kernel Memory Management, Process Address Space и прочее.
Для кого рекомендовано обучение:Целевая аудитория - студенты 3-5 курсов технических факультетов. Необходимы знания основ алгоритмики, базовых понятий языка Си, основ аппаратного устройства компьютеров.
Цель программы : формирование базовых навыков низкоуровневого программирования, понимание основ архитектуры современных операционных систем.
Задачи программы:
1. Проявить у обучаемых интерес к системному программированию
2. Укрепить и улучшить знания языков Си, ассемблер
3. Ознакомить обучаемых с общепринятыми практиками программирования
4. Обучить использованию и чтению чужого кода, его анализу
Длительность обучения: 1 лекция в неделю (2 ач). Практика, обсуждения по домашним заданиям - отдельно (предположительно +1 час в неделю) 33ач
Результаты обучения: Получение знаний основ архитектуры ОС linux. Особенности общей архитектуры операционных систем. Основы низкоуровневого программирования. Углубленные знания и понимание языка Си, представление об ассемблере.
План обучения
|
Тема |
Время |
Материалы |
Комментарий |
|
1. Linux Introduction |
4,5 а.ч |
Введение в OC Линукс, история, основные концепции, базовые понятия архитектуры |
|
|
2. Version Control Systems |
1,5 а.ч |
Использование контроля версий для отчетности по тестовым заданиям. Введение в одну из систем контроля версий |
* опционально, при наличии свободных часов |
|
3. Linux Kernel |
4,5 а.ч |
Разделение ядра и пространства пользователя. Способы взаимодействия, ограничения, реализация на современных аппаратных архитектурах |
|
|
4. Linux memory management |
4,5 а.ч |
Выделение памяти, разница в использовании памяти между user space и kernel space. Память в ядре. Управление ею. |
|
|
5. Assembler, CPU Architectures |
4,5 а.ч |
Обзор аппаратных платформ. Архитектура процессоров. Ассемблеры, использование в ядре. |
* опционально |
|
6. Debugging techniques |
4,5 а.ч |
Техники отладки приложений, компонентов в ядре линукс. Отладка драйверов. Отладчики. |
|
|
7. Dynamic Libraries |
4,5 а.ч |
Модель динамических библиотек, принципы работы. |
|
|
8. Networking |
4,5 а.ч |
Сетевая подсистема в ядре линукс. Обзор основных компонентов. Использование сетевых интерфейсов. |
* в зависимости от наличия базовых знаний по сетевым технологиям |
