Доступ: 国内 | зарубеж
中文注解鸿蒙轻内核 | kernel_liteos_a_note — это версия на основе OpenHarmony kernel liteos a с добавлением китайских комментариев к исходному коду ядра.
Зачем читать исходный код ядра?
- Чтение исходного кода ядра — важный этап в карьере любого программиста. Это как закладка фундамента для здания знаний о компьютерах. Чем глубже фундамент, тем выше можно построить здание. Но зачем именно читать исходный код?
- Исходный код ядра не так уж велик, но он содержит концентрированные знания. Чтение помогает лучше усвоить информацию, избежать фрагментации знаний и потери связей между ними. Без достаточного количества точек соединения знания легко забываются. Соединение точек создаёт линии, линии образуют поверхности, а чем больше соединений, тем крепче запоминается информация. Таким образом, за короткое время можно создать плотную сеть систематизированных знаний, тренируя мозг и закрепляя информацию в долгосрочной памяти. Это похоже на езду на велосипеде: однажды научившись, вы сможете ездить даже после многих лет перерыва.
Любовь — причина и ответ
-
Благодаря опыту чтения Linux 2.6, полученному во время учёбы в университете, у меня появилась мечта провести систематический анализ низкоуровневых технологий и сделать его доступным для себя в любое время. Я также хотел помочь другим людям, интересующимся этой областью, быстрее понять компьютерные системы, не бросая их слишком рано. Однако из-за различных обстоятельств я почти отказался от этой идеи. И вот, когда в 2020 году Airmouse (鸿蒙) официально открыла свой исходный код, моя давняя мечта возродилась.
-
Проект включает три части: комментарии к исходному коду, написание статей и создание диаграмм. На данный момент комментарии к исходному коду завершены на 80%, написано более 80 статей, создано 20 диаграмм, и почти всё свободное время занято этим проектом. Даже мои сны наполнены мыслями о Airmouse. Это сложная задача, требующая многолетнего труда. За это время я получил поддержку и исправления от многих друзей, и я хочу выразить им свою благодарность!
Разработчик Airmouse Lite OS Kernel
- Спасибо OpenAtom Foundation, который предоставил такой замечательный исходный код. Моя давняя мечта наконец-то осуществилась. Изучая строку за строкой кода, можно почувствовать усилия и настойчивость разработчиков Airmouse Lite OS. Я уверен, что эта экосистема имеет большое будущее. Эти знания недоступны для сетевых критиков, которые никогда не смогут их понять. Можно смело сказать, что исходный код Airmouse Lite OS может служить учебником по таким предметам, как язык C, структуры данных, операционные системы, языки ассемблера, архитектура компьютеров, принципы работы компьютеров и микропроцессорные интерфейсы. Этот кладезь знаний нельзя просто изучить поверхностно. В моём сердце есть твёрдая решимость следовать этому пути, и я верю, что Airmouse ждёт успех.
Понимание ядра на трёх уровнях
-
Уровень общих понятий: этот уровень не требует специальных знаний. Обычные понятия, знакомые каждому, могут помочь понять сложные концепции. Например, можно объяснить работу ядра, используя понятные аналогии и истории. Цель этого уровня — связать незнакомые концепции с уже известными знаниями.
-
Уровень профессиональных понятий: здесь мы переходим к абстрактным профессиональным концепциям. Например, виртуальная память — концепция, которую обычные люди не понимают, но специалисты в области компьютерных наук знают её хорошо. Хотя понимание реализации виртуальной памяти не обязательно для успешной разработки приложений, оно важно для понимания основ. Серия статей пытается объяснить эти абстрактные концепции, чтобы привлечь больше людей к изучению основ программного обеспечения.
-
Уровень конкретного кода: это уровень, где мы разбираемся в каждой строке кода. Здесь мы рассматриваем реализацию кода и задаём вопросы, такие как «Что означает этот код?» и «Почему он был разработан именно так?». Серия статей о комментариях к исходному коду пытается объяснить реализацию на уровне кода, помогая читателям лучше понять его.
Четыре измерения ядра
Чтобы всесторонне проанализировать ядро, мы используем четыре подхода: рисование диаграмм, написание статей, комментирование исходного кода и составление сборников. Мы стремимся представить ядро в виде историй, диаграмм, документов и кода. Мне нравится фраза учителя И Чжана: «Методы исследования не равны методам представления». Низкоуровневые технологии не скучны, они могут быть интересными и важными для нашей жизни.
Часть 1: Сто диаграмм для **Airmouse | Одна диаграмма — одна основная идея | Скелетная система
- Если сравнить Airmouse с человеком, сто диаграмм представляют собой скелетную систему.
- Каждая диаграмма в серии тщательно проработана и занимает много времени. Поэтому мы стараемся делать диаграммы сложными и большими, предлагая в нашем публичном аккаунте возможность получить тройное увеличение разрешения последних версий диаграмм. Версия обозначается как v.xx, где xx представляет номер версии.
- Например, двусвязный список является одним из наиболее важных структур данных в ядре. Его можно сравнить с руками человека, поскольку он прикреплён к основной структуре данных и активно взаимодействует с ней. Он очень эффективен и активен, являясь ключевым элементом, который помогает основной структуре устанавливать связи с другими структурами. Его основные операции — вставка, удаление и обход — играют важную роль в анализе исходного кода. Хотя в интернете можно найти множество диаграмм двусвязного списка, они не всегда соответствуют нашим потребностям. Поэтому мы решили нарисовать свои собственные диаграммы основных операций.
Часть 2: Сто статей о ядре | Улавливание основных идей | Мышечная система
- Сто статей похожи на изучение мышечной и органной систем ядра, позволяя нам лучше понимать его структуру. Статьи основаны на комментариях к исходному коду и организованы таким образом, чтобы сделать информацию доступной и интересной. Они часто используют аналогии из реальной жизни, чтобы помочь читателям лучше запомнить информацию. Статьи доступны на разных платформах, включая WeHarmony, Github, Блог-сад, 51cto, Zhihu, Juejin и Pincong.
Часть 3: Миллион комментариев к ядру | Детальный анализ | Система клеток и сосудов
- Миллион комментариев позволяет увидеть мельчайшие детали ядра, подобно тому, как мы смотрим на него через увеличительное стекло. Комментарии не изменяют исходный код и сохраняют все английские комментарии нетронутыми. Новые комментарии представлены на китайском языке. Чтобы обеспечить лёгкость синхронизации с официальными версиями, мы стараемся не увеличивать количество строк кода и не нарушать его структуру. Комментарии включают введение в начале важных модулей, символы для помощи в понимании функций и подробные комментарии на уровне функций. Текст:
Это структура, которая очень важна и не определена в исходном коде ядра. Она была добавлена для удобства понимания.
- [@note_link] — это ссылка на веб-сайт, которая помогает понять информацию о модуле. Источник — официальная документация, блог «Байпан», внешние ссылки.
- [@note_good] — место, где можно поставить лайк исходному коду.
Четыре: справочное руководство | представление Doxygen | диагностика
На основе китайской аннотированной версии было создано справочное руководство, которое позволяет увидеть сеть с мельчайшими кровеносными сосудами. Аннотации поддерживают стандарт форматирования Doxygen.
-
Диаграмма показывает наглядные отношения вызова main в ядре. Без этой диаграммы разобраться в функции main было бы сложно. Сама main вызывается ассемблерной инструкцией bl main.
Перейдите по ссылке >> doxygen.weharmonyos.com | Справочное руководство, чтобы ознакомиться.
-
Диаграмма представляет собой индекс всех структур в ядре. Вы можете просмотреть детали каждой структурной переменной, нажав на неё.
Перейдите по ссылке >> doxygen.weharmonyos.com | Индекс структуры, чтобы ознакомиться.
Публикация четырёх больших репозиториев кода | Синхронизация исходного кода с официальным
Аннотации к ядру одновременно публикуются в Gitee, GitHub, Coding и Gitcode. Исходный код синхронизируется с официальным ежемесячно. Вот история синхронизации за последние несколько лет:
- 2024/04/13 — официальные небольшие исправления.
- 2024/03/04 — официальные изменения незначительны.
- 2023/11/24 — небольшие изменения.
- 2023/10/11 — официальное обновление редко за последние пять месяцев.
- 2023/05/26 — связано с BUILD.gn.
- 2023/04/10 — улучшен алгоритм планирования задач, добавлен deadline.
- 2023/03/01 — добавлены сетевые контейнеры и функция ограничения количества контейнеров.
- 2023/02/13 — поддерживается каталог proc/self.
- 2023/01/14 — синхронизирован с официальным кодом, поддерживаются PID-контейнеры.
- 2022/11/01 — удалён весь код, который проник в ядро через PLATFORM_QEMU_ARM_VIRT_CA7.
- 2022/09/21 — основной код не изменился, только улучшены тестовые примеры.
- 2022/07/18 — тонкая настройка кода при запуске.
- 2022/06/03 — добавлена опция компиляции jffs2.
- 2022/05/09 — каталоги стандартной библиотеки (musl, newlib) были скорректированы.
- 2022/04/16 — большое обновление модуля планирования задач.
- 2022/03/23 — каждый процессор теперь самостоятельно управляет прерываниями и таймерами, модуль планирования задач был значительно изменён.
- 2022/02/18 — официального обновления кода нет, только улучшение тестовых примеров.
- 2022/01/20 — синхронизация с официальным кодом. В этот раз официальное обновление коснулось тестовых примеров и MMU.
- 2021/12/20 — добавлен модуль LMS, улучшены PM и Fat Cache.
- 2021/11/12 — добавлена поддержка epoll, значительные изменения в оболочке, тонкая настройка процесса и задачи, исправление орфографических ошибок.
- 2021/10/21 — добавлен модуль оптимизации производительности perf, оптимизирован модуль файлового отображения.
- 2021/09/14 — обновлены каталоги common, extended и Makefile.
- 2021/08/19 — в каждом каталоге появился файл BUILD.gn, файлы в файловой системе были изменены.
- 2021/07/15 — незначительные изменения, добавлены blackbox и hidumper, некоторые макросы стандартизированы.
- 2021/06/27 — значительные изменения в файловой системе и драйверах устройств, перестройка структуры каталогов.
- 2021/06/08 — значительные изменения в компиляции, задачах, сигналах.
- 2021/05/28 — незначительные изменения, в основном исправление орфографии.
- 2021/05/13 — большие обновления в системных вызовах, переключении задач, обработке сигналов, перехвате исключений, управлении файлами, оболочке. Код стал более понятным.
- 2021/04/21 — официальный код оптимизирован во многих местах, которые ранее критиковались, выражена благодарность.
- 2020/09/16 — начало работы над китайскими аннотациями к лёгкому ядру.
Репозиторий системы аннотаций
В процессе аннотирования лёгкого ядра обнаружилось, что аннотирование только ядра недостаточно, поскольку оно связано с другими подсистемами. Если вы не знакомы с этими подсистемами, то будет трудно полностью аннотировать лёгкое ядро. Поэтому были частично аннотированы связанные репозитории:
- Компиляция и сборка подсистемы | build_lite.
- Стек протоколов | lwip.
- Файловая система | NuttX.
- Стандартная библиотека | musl.
О каталоге zzz
По сравнению с официальной версией, китайская аннотированная версия не содержит новых файлов, кроме каталога zzz. В этом каталоге хранятся некоторые файлы, необходимые для аннотирования, но не связанные с исходным кодом ядра. Этот каталог можно игнорировать. Название zzz было выбрано, чтобы он находился в конце списка, уменьшая вмешательство в существующую структуру каталогов кода. Идея создания каталога zzz взята из названия группы друзей в WeChat, у которых есть имя AAA. Возможно, в вашем WeChat тоже есть их знакомые. ## Официальные документы | Статический сайт
-
Для лучшего понимания OpenHarmony необходимо постоянно изучать материалы, в том числе официальные документы. Чтобы упростить доступ к официальной информации, был создан >> центр документации OpenHarmony. Он поддерживает поиск и доступен на китайском и английском языках. Предоставляется стабильная версия LTS, а содержание синхронизируется с официальными данными. >> Подробнее

Речи Жэнь Чжэнфэя (1994–2019)
-
Быть хорошим специалистом недостаточно, нужно ещё и разбираться в управлении. Читать статьи великих мастеров — это то, что нужно. Жэнь Чжэнфэй, несомненно, является величайшим предпринимателем в Китае. Чтение его статей может сэкономить вам десять лет усилий. Вы будете сожалеть только о том, что прочитали их слишком поздно. Это было пустой тратой времени. После тщательного отбора были собраны статьи Жэнь Чжэнфея за все годы, всего более 440 статей для вашего чтения. >> Подробнее

Благодарность
Выражаем особую благодарность 25 щедрым друзьям, которые поддержали нас бескорыстно (по состоянию на 13 апреля 2024 года). Среди них есть сотрудники предприятий и студенты, опытные профессионалы и просто любители. Мы благодарим всех и продолжим двигаться вперёд с этим теплом. >> Подробнее
Исторические пожертвования |
Последние пожертвования |
 |
 |
Ссылки
Комментарии ( 0 )