Системное программирование
Системное программирование
Системное программирование — это область разработки, ориентированная на создание программного обеспечения, тесно взаимодействующего с аппаратным обеспечением и операционной системой. Такие программы управляют ресурсами компьютера, обеспечивают выполнение прикладных задач и формируют основу цифровой инфраструктуры: ядра ОС, драйверы, компиляторы, виртуальные машины, системные утилиты, встроенные приложения.
В отличие от прикладного программирования, системное требует глубокого понимания архитектуры компьютера, принципов работы памяти, процессоров, устройств ввода-вывода и механизмов операционной системы.
Архитектура вычислительных систем
Основа системного программирования — знание того, как устроен компьютер на физическом и логическом уровнях.
- 1.08. Принцип работы компьютера
- 1.08. Компоненты компьютерного железа
- 1.08. Устройства хранения данных
- 1.08. Графические процессоры и видеокарты
- 1.08. Периферийные устройства компьютера
- 1.08. Загрузка операционной системы
- 1.08. Архитектура персонального компьютера
- 1.08. ЭВМ
- 1.08. Основы автоматизации и автоматики
- 1.08. Память и накопители — типы и иерархия — типы и иерархия — типы и иерархия — типы и иерархия — типы и иерархия
- 1.08. Многоуровневая организация компьютера
- 1.08. Справочник по характеристикам устройств
- 1.08. Как работает компьютер — итоги — итоги — итоги — итоги — итоги
- 1.08. Как работает компьютер — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Также рассматриваются мобильные и портативные платформы:
- 1.08. Принцип работы компьютера
- 1.08. Компоненты компьютерного железа
- 1.08. Устройства хранения данных
- 1.08. Графические процессоры и видеокарты
- 1.08. Периферийные устройства компьютера
- 1.08. Загрузка операционной системы
- 1.08. Архитектура персонального компьютера
- 1.08. ЭВМ
- 1.08. Основы автоматизации и автоматики
- 1.08. Память и накопители — типы и иерархия — типы и иерархия — типы и иерархия — типы и иерархия — типы и иерархия
- 1.08. Многоуровневая организация компьютера
- 1.08. Справочник по характеристикам устройств
- 1.08. Как работает компьютер — итоги — итоги — итоги — итоги — итоги
- 1.08. Как работает компьютер — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Данные и их обработка на низком уровне
Системное программирование оперирует данными на уровне байтов, битов и адресов.
- 1.09. Данные и информация
- 1.09. Виды информации
- 1.09. Типы данных в вычислительных системах
- 1.09. Типизация
- 1.09. Метаданные
- 1.09. Данные и информация — итоги — итоги — итоги — итоги — итоги
- 1.09. Данные и информация — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Операции с данными:
- 1.10. Ввод и вывод
- 1.10. Чтение и запись
- 1.10. Кэширование
- 1.10. Манипуляции с данными
- 1.10. Базовые операции с данными — итоги — итоги — итоги — итоги — итоги
- 1.10. Базовые операции с данными — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Представление данных в памяти:
- 4.06. Архитектура выполнения программ
- 4.06. Битовые операции и низкоуровневое представление данных
- 4.06. Архитектура выполнения — итоги — итоги — итоги — итоги — итоги
- 4.06. Архитектура выполнения — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 4.06. Ошибки, исключения и отказоустойчивость
- 4.06. Отладка и видимость состояния
- 4.06. Вызовы и иерархия
- 4.06. Ресурсопотребление и метрики
- 4.06. Неиспользуемый код и технический долг
- 4.06. Сборка и культура производительности
Операционные системы и их ядро
Системное ПО тесно связано с операционной системой — программной средой, управляющей ресурсами.
- 2.01. Операционные системы
- 2.01. Классификация операционных систем
- 2.01. Ядро операционной системы
- 2.01. Windows
- 2.01. Linux
- 2.01. macOS
- 2.01. iOS
- 2.01. Android
- 2.01. История операционных систем
- 2.01. Требования к ОС и подходы к реализации
- 2.01. Справочник по Windows 11
- 2.01. Справочник по Linux
- 2.01. Линус Торвальдс — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git
- 2.01. Справочник по iOS
- 2.01. Справочник по Android
- 2.01. Операционная система — итоги — итоги — итоги — итоги — итоги
- 2.01. Операционная система — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Подробные справочники по популярным платформам:
- 2.01. Операционные системы
- 2.01. Классификация операционных систем
- 2.01. Ядро операционной системы
- 2.01. Windows
- 2.01. Linux
- 2.01. macOS
- 2.01. iOS
- 2.01. Android
- 2.01. История операционных систем
- 2.01. Требования к ОС и подходы к реализации
- 2.01. Справочник по Windows 11
- 2.01. Справочник по Linux
- 2.01. Линус Торвальдс — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git — ядро Linux и Git
- 2.01. Справочник по iOS
- 2.01. Справочник по Android
- 2.01. Операционная система — итоги — итоги — итоги — итоги — итоги
- 2.01. Операционная система — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- Windows, Справочник по Windows 11, Устройство файловой системы Windows
- Linux, Справочник по Linux
- iOS, Справочник по iOS
- Android, Справочник по Android
Платформы и выполнение кода
Системные программы часто зависят от целевой платформы.
- 2.02. Платформы в IT
- 2.02. Виртуализация
- 2.02. Программные платформы
- 2.02. Инструменты виртуализации
- 2.02. Платформы — итоги — итоги — итоги — итоги — итоги
- 2.02. Платформы — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 2.02. Серверные платформы
- Архитектура выполнения программ
- Архитектура современных процессоров
- Процесс выполнения исходного кода
Терминал и скрипты
Инструменты командной строки — ключевая часть системного администрирования и автоматизации.
- 2.05. Терминал - интерфейс командной строки
- 2.05. Терминал — итоги — итоги — итоги — итоги — итоги
- 2.05. Терминал — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 2.05. Знаки препинания в командной строке
- 2.05. Основные команды в Linux
- 2.05. Основные команды Windows
- 2.05. Сценарии для автоматизации
- 2.05. Поиск текста в файлах — grep, findstr и Select-String — grep, findstr и Select-String — grep, findstr и Select-String — grep, findstr и Select-String — grep, findstr и Select-String
- 2.05. Написание скриптов в Unix-системах
- 2.05. Автоматизация задач в Windows с помощью PowerShell
- 2.05. Справочник CLI-утилит и исполняемых файлов
Системное администрирование
Поддержка и настройка инфраструктуры — смежная дисциплина, тесно связанная с системным программированием.
- 2.06. Администрирование
- 2.06. Установка и первоначальная настройка ОС
- 2.06. ИТ-инфраструктура
- 2.06. Настройка и обслуживание серверов
- 2.06. Конфигурация рабочих станций
- 2.06. Сетевые подключения и диагностика
- 2.06. NAT и проброс портов
- 2.06. Планирование и автоматизация задач
- 2.06. Диагностика и обработка системных ошибок
- 2.06. Виртуальные машины, Home Lab и переход на Linux
- 2.06. Microsoft PowerToys и утилиты рабочей станции Windows
- 2.06. Сетевые аномалии и системные процессы
- 2.06. Организация домашней сети
- 2.06. Идентичность Microsoft Entra и RBAC
- 2.06. Windows Server — начало работы — начало работы — начало работы — начало работы — начало работы
- 2.06. Управление службами в Windows
- 2.06. Работа с базами данных в администрировании
- 2.06. Мониторинг, метрики и логирование систем
- 2.06. Администрирование Linux-систем
- 2.06. Полнотекстовый поиск для приложений
- 2.06. Windows на рабочей станции — жизненный цикл — жизненный цикл — жизненный цикл — жизненный цикл — жизненный цикл
- 2.06. GNU/Linux — рабочие столы и споры окружений — рабочие столы и споры окружений — рабочие столы и споры окружений — рабочие столы и споры окружений — рабочие столы и споры окружений
- 2.06. Windows — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки" — Store, защита, диспетчер и "сборки"
- 2.06. Системное администрирование — итоги — итоги — итоги — итоги — итоги
- 2.06. Системное администрирование — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 2.06. Диагностика производительности Linux
- 2.06. Системы аутентификации
Программы и исполняемые файлы
Системное ПО часто распространяется в виде исполняемых модулей.
- 1.19. Что такое программа?
- 1.19. Компиляторы и интерпретаторы
- 1.19. Что такое мобильное приложение
- 1.19. Программа — итоги — итоги — итоги — итоги — итоги
- 1.19. Программа — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 1.19. Программное обеспечение и операционная система
- 1.19. Классификация программ
- 1.19. Поведение программ
- 1.19. Установка, обновление и удаление программ
- 1.19. Взаимодействие программ с операционной системой
- Исполняемые файлы
- Архивы и установочные пакеты
- Конфигурационные файлы
- Специализированные форматы данных и их применение
Языки системного программирования
Для написания системного кода используются языки, предоставляющие прямой контроль над памятью и ресурсами.
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
- 9.11. Введение в программирование
- 9.11. Блоки
- 9.11. Scratch
- 9.11. Edublocks
- 9.11. Типы данных
- 9.11. Программа на Python
- 9.11. Программа на JavaScript
- 9.11. Путеводитель по языкам
- 9.11. MIT App Inventor
- 9.11. PascalABC.NET
- 9.11. Кумир
- 9.11. Стартовые проекты MIT Scratch
- 9.11. Scratch: платформер и демосцена
- 9.11. Практика 1 — радуга — радуга — радуга — радуга
- 9.11. Практика 2 — лабиринт — лабиринт — лабиринт — лабиринт
- 9.11. Практика 3 — баскетбол — баскетбол — баскетбол — баскетбол
- 9.11. Практика 4 — арканоид — арканоид — арканоид — арканоид
- 9.11. Практика 5 — астероиды — астероиды — астероиды — астероиды
- 9.11. Практика 6 — платформер — платформер — платформер — платформер
- 9.11. Метод обучения
- 9.11. Практика — Прыг-скок — Прыг-скок — Прыг-скок — Прыг-скок
- 9.11. Python — структуры данных — структуры данных — структуры данных — структуры данных
- 9.11. Python — turtle — turtle — turtle — turtle
- 9.11. Python — классы — классы — классы — классы
- 9.11. Практика — платформер — платформер — платформер — платформер
- 9.11. Программирование — итоги — итоги — итоги — итоги
Общие категории языков:
- 1.24. Основные языки
- 1.24. Естественные и искусственные языки в цифровой среде
- 1.24. Языки запросов - SQL и его аналоги
- 1.24. Языки разметки - HTML, XML, Markdown
- 1.24. Языки стилей - CSS и препроцессоры
- 1.24. Языки программирования
- 1.24. Визуальные языки программирования и моделирования
- 1.24. Классификация языков в IT — итоги — итоги — итоги — итоги — итоги
- 1.24. Классификация языков в IT — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
Алгоритмы и структуры данных
Эффективность системного кода зависит от выбора алгоритмов и организации данных.
- 4.01. Алгоритмы
- 4.01. Алгоритмы сортировки и поиска
- 4.01. Анализ эффективности алгоритмов
- 4.01. Графы — модели и задачи — модели и задачи — модели и задачи — модели и задачи — модели и задачи
- 4.01. Тренировка алгоритмического мышления
- 4.01. Кратчайший путь — алгоритм Дейкстры — алгоритм Дейкстры — алгоритм Дейкстры — алгоритм Дейкстры — алгоритм Дейкстры
- 4.01. PageRank — ранжирование на графе — ранжирование на графе — ранжирование на графе — ранжирование на графе — ранжирование на графе
- 4.01. Евклид и классические алгоритмы на числах
- 4.01. Регулярные выражения
- 4.01. Алгоритм обработки
- Структуры данных
- Основные структуры данных и их реализация
Конфигурации, данные и базы
Системные программы часто работают с конфигурациями и управляют хранилищами.
- 3.05. Знакомство с базами данных
- 3.05. Системы управления базами данных (СУБД)
- 3.05. Внутреннее устройство баз данных
- 3.05. Теоретические основы реляционных данных
- 3.05. Двенадцать правил Кодда
- 3.05. Роль базы данных в организации
- 3.05. Конкурентный доступ к данным
- 3.05. Восстановление после сбоя
- 3.05. Entity Relationship
- 3.05. Масштабирование БД — опорные темы — опорные темы — опорные темы — опорные темы — опорные темы
- Основы баз данных — итоги — итоги — итоги — итоги — итоги
- Основы баз данных — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 3.05. Управление данными - Data Governance
- Конфигурационные данные в текстовых форматах
- Основы NoSQL
- SQL - язык структурированных запросов
- Управление реляционными СУБД
Безопасность и надёжность
Системное ПО критично для безопасности всей системы.
- 2.08. Основы информационной безопасности
- 2.08. Основы информационной безопасности — итоги — итоги — итоги — итоги — итоги
- 2.08. Основы информационной безопасности — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 2.08. Аутентификация и авторизация
- 2.08. Антивирусная защита и лечение заражённых систем
- 2.08. Риски открытых Wi-Fi сетей
- 2.08. Устройство и надёжность паролей
- 2.08. Фаерволы
- 2.08. Шифрование данных и протокол SSH
- 2.08. DDoS и отказ в обслуживании
- 2.08. JWT — семь строк, которые обходят авторизацию — семь строк, которые обходят авторизацию — семь строк, которые обходят авторизацию — семь строк, которые обходят авторизацию — семь строк, которые обходят авторизацию
- 2.08. Смена пароля — пропущенный шаг re-auth — пропущенный шаг re-auth — пропущенный шаг re-auth — пропущенный шаг re-auth — пропущенный шаг re-auth
- 2.08. Админка по ?isAdmin=true
Разработка, отладка и оптимизация
Процесс создания системного кода включает строгую проверку и анализ производительности.
- 4.14. Процесс разработки программного обеспечения
- 4.14. Разработка и отладка — итоги — итоги — итоги — итоги — итоги
- 4.14. Разработка и отладка — чек-лист — чек-лист — чек-лист — чек-лист — чек-лист
- 4.14. Профессиональные практики и культура разработки
- 4.14. Типовые задачи разработчика — справочник-шпаргалка — справочник-шпаргалка — справочник-шпаргалка — справочник-шпаргалка — справочник-шпаргалка
- 4.14. Отладка
- 4.14. Анализ и оптимизация производительности приложений
- 4.14. Создание и публикация собственной библиотеки
- 4.14. Пет-проекты
- 4.14. План развития разработчика
- 4.14. Организация структуры кодовой базы
- 4.14. README для разработчика
- 4.14. Проверка и валидация
- 4.14. Разработка расширений для веб-браузеров
- Автоматическое управление памятью
- Система контроля версий Git
- Установка и настройка Git
Парадигмы и абстракции
Системное программирование сочетает низкоуровневый контроль и высокоуровневые концепции.
- 4.04. Проект программного обеспечения
- 4.04. Модульность и компонентный подход в разработке
- 4.04. Оптимизация размера и производительности приложений
- 4.04. Фреймворк
- 4.04. Библиотека
- 4.04. Сборка, компиляция и публикация приложений
- 4.04. Манифесты зависимостей — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile — requirements.txt, package.json, Dockerfile
- 4.04. Основы работы с контейнерами
- 4.04. Микрофреймворк
- 4.04. Основы архитектуры
- Программные парадигмы
- Объектно-ориентированное программирование
- Процессы и потоки выполнения
Системное программирование — это фундамент всей вычислительной экосистемы. Оно требует точности, дисциплины и глубокого понимания того, как устроен цифровой мир "под капотом". Навыки системного программиста позволяют не только писать эффективный код, но и проектировать надёжные, безопасные и масштабируемые решения, лежащие в основе современных технологий.