MainPage/System Software/Intro
Раздел 1. Основы системного программирования
Аннотация
Раздел посвящен основам системного программирования на языке Си в операционных системах семейства Linux. Для слушателей, не знакомых с основами языка Си, организуются мастер-классы, а также предлагается онлайн-курс “Программирование на Си и выполнение программ”.
本节专门介绍 Linux 系列操作系统中 C 语言系统编程的基础知识。 对于不熟悉 C 语言基础知识的学生,我们组织了大师班,并提供在线课程“C 语言编程和执行程序”。
Формат
- Два занятия в форме мастер-класса.
- Онлайн-курс “Основы программирования для Linux” (от 9 до 15 баллов).
- Задания для самостоятельного выполнения.
- Тестирование (от 3 до 5 баллов).
— - 大师班形式的两堂课。
- 在线课程“Linux 编程基础”(9至15分)。
- 独立完成的任务。
- 测试(3分至5分)。
План тем мастер-классов
- Структура программы на Си. Трансляция программы.
- Программа на Си в пределах одной функции: выражения, операторы, базовые типы данных.
- Структуры и объединения.
- Массивы, указатели и динамическая память.
- Подпрограммы в Си.
- Функции стандартной библиотеки.
-
Проблемы безопасности при программировании на Си.
- C 程序的结构。 节目的播出。
- 一个函数内的C程序:表达式、运算符、基本数据类型。
- 结构和协会。
- 数组、指针和动态内存。
- C 中的子程序。
- 标准库函数。
- C 语言编程时的安全问题。
Материалы по разделу 1
-
Пререквизит к дисциплине (если вы не программировали на Си) - онлайн-курс “Программирование на Си и выполнение программ”, ссылка для записи: https://stepik.org/course/73618/ (для освоения этого курса запись в класс не требуется, достаточно записаться на курс самостоятельно).
学科先决条件(如果您没有使用 C 语言编程) - 在线课程“C 语言编程和执行程序”,注册链接:https://stepik.org/course/73618/(要掌握本课程,请注册课程不是必需的,只需自己报名参加课程即可)。 -
Онлайн-курс “Основы программирования для Linux”, ссылка для записи
在线课程《Linux编程基础》,报名链接: Для записи на курс обязательно использовать эту ссылку, иначе контроль его освоения будет невозможен!
要注册课程,请务必使用此链接,否则将无法监控其发展! -
Книга Zhirkov I. Low-Level Programming //C, Assembly, and Program Execution on Intel. – 2017. – Т. 64.
《Zhirkov I. 低级编程//C、汇编和英特尔程序执行》一书。 – 2017。 – T.64。 -
Задания для самоподготовки: https://vk.cc/caTRvv
自备任务:https://vk.cc/caTRvv
Раздел 1*. Системное программирование Linux
Онлайн-курс “Операционные системы”. Успешное освоение курса до конца теоретического обучения даёт дополнительные баллы (от 12 до 20), которые пойдут в счёт экзамена.
在线课程“操作系统”。 在理论培训结束之前成功完成课程可以获得额外的分数(从 12 到 20),这将计入考试。
Ссылка для записи:
注册链接:
https://stepik.org/join-class/fa3703037123ba9161cdbaa43ed7e55b69e2da5a
Для записи на курс обязательно использовать эту ссылку, иначе контроль его освоения будет невозможен!
要注册课程,请务必使用此链接,否则将无法监控其发展!
Раздел 2. Многопоточное программирование
Аннотация
Цель раздела – познакомить слушателей с основами многопоточного программирования, примитивами и методами синхронизации потоков, принципами разработки многопоточных приложений с использованием POSIX-потоков.
本节的目的是向学生介绍多线程编程的基础知识、线程同步的原语和方法,以及使用 POSIX 线程开发多线程应用程序的原理。
Формат
- Два занятия в формате лекций с разбором примеров многопоточного кода. Одно занятие для проведения тестирования. Теоретический материал по многопоточному программированию присутствует в онлайн-курсе “Основы программирования для Linux” (раздел 1).
- Лабораторная работа (от 9 до 15 баллов).
-
Тестирование (от 3 до 5 баллов).
- 两节讲座形式的课程,包括多线程代码示例的分析。 一节课用于测试。 有关多线程编程的理论材料在在线课程“Linux 编程基础”(第 1 节)中提供。
- 实验室工作(9分至15分)。
- 测试(3分至5分)。
План тем лекций
Лекция 1. Создание и завершение потоков
- Возможности и организация библиотеки glibc.
- Управление потоками (pthread_create, pthread_cancel, cancellation point, InterruptedException и др.), получение результатов выполнения потока.
- Cancellation points2.
- Освобождение ресурсов (cleanup_push, cleanup_pop, обработка InterruptedException)
讲座 1. 创建和终止线程
- glibc 库的功能和组织。
- 线程管理(pthread_create、pthread_cancel、取消点、InterruptedException等),获取线程执行结果。
- 取消积分
- 释放资源(cleanup_push、cleanup_pop、处理InterruptedException)
Лекция 2. Примитивы синхронизации
- Логические и технические гонки данных;
- мьютексы;
- алгоритм Булочника;
- рекурсивные/нерекурсивные примитивы синхронизации;
- shared mutex, spin mutex;
- атомики;
- CAS;
- RAII;
- Futex.
- Conditional variables.
讲座 1. 创建和终止线程
- glibc 库的功能和组织。
- 线程管理(pthread_create、pthread_cancel、取消点、InterruptedException等),获取线程执行结果。
- 取消积分
- 资源释放(cleanup_push、cleanup_pop、处理InterruptedException)讲座2. 同步原语
- 逻辑和技术数据竞赛;
- 互斥体;
- Bulochnik 算法;
- 递归/非递归同步原语;
- 共享互斥体、自旋互斥体;
- 原子;
- CAS;
- RAII;
- 富泰克斯。
- 条件变量。
Лабораторная работа
Реализовать полноценный паттерн “producer-consumer” с использованием POSIXпотоков. Регламент использования gitlab (workflow), информация о настройке окружения можно найти здесь: https://disk.yandex.ru/d/b0wjBNYNFK8kbQ. Текст задания опубликован в репозитории, см. README.ru.md.
使用 POSIX 流实现成熟的“生产者-消费者”模式。 使用gitlab的规定(工作流程),有关设置环境的信息可以在这里找到:https://disk.yandex.ru/d/b0wjBNYNFK8kbQ。 作业文本已发布在存储库中,请参阅 README.ru.md。
Для получения варианта задания перейдите по ссылке: http://anuda.ru/r/6dd21bd02139441cb4bcd7be4628b66d
要获取该任务的版本,请点击链接:http://anuda.ru/r/6dd21bd02139441cb4bcd7be4628b66d
Для получения максимальных баллов за лабораторную работу необходимо сдать её до 30.04.24. После данного дедлайна баллы будут снижен.
要获得实验室工作的最高分,您必须在 2024 年 4 月 30 日之前提交。 在此期限之后,积分将被减少。
Раздел 3. Программирование в Shell
Аннотация
Раздел посвящен программированию в командной оболочке Shell, интерфейсу командной строки (CLI), использованию утилит семейства операционных систем Linux.
本节专门介绍 Shell 命令 shell、命令行界面 (CLI) 中的编程以及 Linux 操作系统系列实用程序的使用。
Формат
- онлайн-курс (от 9 до 15 баллов).
- тестирование (от 3 до 5 баллов).
- 在线课程(9分至15分)。
- 测试(3 到 5 分)。
Материалы
- В качестве материала для теоретической подготовки предлагается онлайн курс “Основы Linux” (от 9 до 15 баллов). Для записи на курс обязательно использовать предложенную ниже ссылку, иначе контроль прогресса будет невозможен! Ссылка для записи: https://stepik.org/join-class/74ab8eeb6c556658ff35e73dfa4fe7b0a7f490a9 Для записи на курс обязательно использовать эту ссылку, иначе контроль его освоения будет невозможен!
- Собель М. Linux. Администрирование и системное программирование //Москва: Питер. – 2016. – Т. 820.
- Роббинс А. Unix. Справочник //КУДИЦ-Пресс - 2007 - Т.864
-
Керниган Б., Пайк Р. UNIX. Программное окружение. – 2003.
- 提供在线课程“Linux基础知识”(9至15分)作为理论培训材料。 要注册课程,请务必使用下面的链接,否则将无法监控您的进度! 注册链接: https://stepik.org/join-class/74ab8eeb6c556658ff35e73dfa4fe7b0a7f490a9 要注册课程,请务必使用此链接,否则将无法监控其发展!
- 索贝尔·M.Linux。 管理和系统编程 //莫斯科:圣彼得堡。 – 2016。 – T.820。
- 罗宾斯A.Unix。 目录 //KUDITS-Press - 2007 - T.864
- Kernighan B.,Pike R.UNIX。 软件环境。 – 2003 年。
Раздел 4. Регулярные выражения
Аннотация
Раздел курса посвящен вопросам написания регулярных выражений. Рассматриваются теоретические основы регулярных выражений, синтаксис языка описания регулярных выражений.
本课程的一部分专门讨论编写正则表达式。 考虑正则表达式的理论基础和描述正则表达式的语言语法。
Формат
- Онлайн-тренажёр (ссылка будет опубликована позже)
-
Тестирование (от 3 до 5 баллов).
- 在线培训师(链接稍后发布)
- 测试(3分至5分)。
Материалы
- Фридл Д. Регулярные выражения.
-
Практические задания (будут опубликованы).
- Friedl D.正则表达式。
- 实践任务(待发表)。
Экзамен
Курс оканчивается экзаменом, либо, если был освоен раздел 1, то результаты его освоения могут быть засчитаны в качестве баллов за экзамен (от 12 до 20 баллов).
课程以考试结束,或者,如果已掌握第 1 部分,则其掌握结果可计为考试分数(从 12 到 20 分)。
Журнал
Промежуточный журнал:
https://docs.google.com/spreadsheets/d/1SjW-qbwmqpJZyLmrW-xcKKq_0CqBWpXaVa71osuAYrM/edit#gid=0