Глава 1 🔧 5. C Runtime и системные вызовы в Linux — как программы общаются с ядром
В этом видео мы разбираемся с фундаментом userspace в Linux — C runtime и интерфейсом системных вызовов. Это ключевой материал, если вы хотите понять, как приложения взаимодействуют с ядром, и как это используется при написании драйверов. 📌 Что вы узнаете: ✅ Что такое glibc и зачем она нужна Зачем нам printf, malloc, open, если всё делает ядро? Как glibc превращает функции языка C в системные вызовы (syscall) Где находится libc.so.6, как проверить её версию Чем отличается glibc от самого ядра Linux 🔍 Как работает syscall() Что происходит, когда программа вызывает open() или write() Почему ядро не вызывает напрямую printf Как номер вызова (SYS_open, SYS_write) попадает в ядро Как strace позволяет наблюдать вызовы вживую 🧠 Практика: Запустим strace ./a.out и посмотрим, какие именно вызовы делает программа Разберём, как glibc использует инструкцию svc/int 0x80 (в ARM/x86) Объясним, почему для ioctl() нужен номер устройства и специальная структура 🔐 Почему это важно: Когда вы пишете драйвер ядра, вы реализуете функции, которые вызываются через syscalls. Понимая, как userspace и kernelspace обмениваются информацией, вы будете: Лучше проектировать интерфейсы Эффективнее отлаживать драйверы Безошибочно интерпретировать поведение программ в Linux 📘 Это часть 5 главы 1 из курса Linux Driver Development Guide for Raspberry Pi 3 (2025) Раздел документации: c_runtime/ 🌐 Онлайн-доступ: http://dochub.local
Название:
Глава 1 🔧 5. C Runtime и системные вызовы в Linux — как программы общаются с ядром
Категория:
Разное