Chengcheng OS (CCOS) - 64 -битная операционная система Hobby. Я пишу это на x86, потому что мне нравится грусть и страдания. Этот проект все еще был в развитии. Я новичок в разработке операционной системы. Многие из концепций дизайна, которые я реализовал, вдохновлены Windows NT, такими как CCLDR (ОС загрузчик для ОС Chengcheng) и менеджер памяти. И есть гораздо больше курсов, которые мне нужно выучить в текущие месяцы. Итак, я не буду часто обновлять проект.

Уфи
CCOS использует UEFI для начальной загрузки CCOSKRNL. UEFI значительно облегчает развитие погрузчика ОС. Разработчик может напрямую вызывать интерфейсы, предоставленные UEFI (используйте язык C вместо сборки). Здесь нужно отметить, что CCOS по -прежнему нуждается в CCLDR (еще один двоичный исполняемый файл) для загрузки ccoskrnl. Это немного похоже на «загрузочный загрузчик второго этапа». Но на самом деле, bootx64.efi просто делит пространство ядра и ищет подходящее пространство физической памяти для загрузки изображения ccoskrnl. Затем CCLDR будет отображать пространство ядра в высокий адрес виртуального адресного пространства и установить GDT (таблица глобальной дескрипторы, значительную структуру для архитектуры X86.)
Многопроцессоры
Поддержка мультипроцессов является огромной проблемой для меня. Я не гарантирую хорошую реализацию многопроцессорной системы. На данный момент CCOS может правильно активно активно активно применять другие процессоры. Не так, как другая демонстрация операционной системы, CCOS помещает подпрограмму инициализации процессора приложения в изолированный двоичный файл и загружает ее в первую 1 MIB физической памяти и построить отдельно таблицу страниц для пространства памяти. Перед запуском прикладных процессоров CCOS исправят ссылку относительного адреса бинарной программы. Я должен признать, что это глупый дизайн.
Апик
APIC (расширенный программируемый контроллер прерываний) является критическим компонентом в современной компьютерной системе. Он предоставляет возможность для системы с несколькими процессорами и поддерживает многоуровневое приоритет прерываний на уровне оборудования. К сожалению, APIC сложный. Поскольку для полного понимания APIC требуется звуковое знание компьютерной системы, я реализую только основной драйвер APIC.
TrueType
CCOS отображает символы на экране с помощью шрифтов TrueType (шрифт по умолчанию в CCOS - Adobe Source Han Sans SC VF ). Это не стоит вывозить символы, используя рендеринг TrueType. Для ранней разработки ОС использование растрового шрифта является более рекомендуемым методом вывода символов.
Вероятно, самая большая вещь в хранении персонажей, как указано, состоит в том, что для создания всех размеров этой ОС персонажей необходим только один контур на каждого персонажа. Один контур может быть масштабирован до огромного диапазона различных размеров, некоторые из которых показаны ниже. Это позволяет отображать один и тот же символ на мониторах различных разрешений, и быть распечатанным в большом количестве разных размеров. Чтобы масштабировать контур символов, является простой математической операцией, как и другие преобразования, такие как вращение и отражения.
Структура TrueType сложна, я реализовал только Rasterizer Font без намека на TrueType. Подсказка лежит в основе TrueType. Его изобретатели, помня о разнообразии мнения о «правильном» способе намека, решили, что нет единого намека на парадигму, которую они навязывают разработчикам типа. Вместо этого они связали относительно простой раститель с новым интерпретированным языком программирования. Однако для чтения шрифта этого достаточно.
Это цирттическая выпуск здесь, которая заключается в том, что предварительная форма текста вывода CCOS очень пул. Плохое выступление серьезно замедлит работу CCO. Я не знаю, как оптимизировать функцию, потому что рисунок шрифта является относительно сложным процессом. Другим методом является использование растрового шрифта для шрифта TrueType.
Широкий чар
CCOS предлагает два типа символа, «char» и «wch_t» (Wide char, 4-bytes), для хранения всех символов. Независимо от типа символа, CCOS всегда сначала преобразует wch_t, а затем выводит широкую строку. Фактически, анализатор Truetype в CCOS использует только «Unicode 2.0 и далее семантика», которая идентификатором платформы = 0 и кодирование идентификатора = 3 в CMAP (CMAP - символ для таблицы картирования индекса Glyph, Struture in truetype.). Следовательно, он поддерживает исключительно основные многоязычные многоязычные символы многоязычных плоскостей (U+0000 до U+FFFF).
Менеджер памяти
Проектные идеи управления памятью вдохновлены Window NT, который содержит базу данных PFN, Lookside, схему самопоставления самостоятельного картирования PAGE, управление пулом памяти ламинирования и т. Д., Но не все.
Вывод графика с несколькими окнами
CCOS поддерживает мульти-Windows, что означает, что он может выводить текст в различном окне на экране. Отстаивать многопроцессоры отладки с помощью открытия окна «Указание» для каждого процессора. Даже если нет драйвера мыши, пользователь также может использовать клавиатуру, чтобы выбрать, какое окно необходимо для ввода символов.
Исправление ошибки: добавьте Spinlock, чтобы предотвратить конфликты нескольких выводов Windows
Динамический диспетчер памяти с обнаружением утечек памяти
Системная управление PTE
PCIE Management
Nvme драйвер
Драйвер клавиатуры (не срочный)
Qemu с 2 gib ram или выше
Я просто приблизительно разделяю пространство памяти так, чтобы пространство ядра использовала только квартал Vaillbe Ram. Но проблема должна заметить, что подпрограмма getMemoryMap () вернула неверную информацию о карте памяти при попытке выделить более высокую оперативную память (более 2 GIB) для QEMU. Я не пробую другую прошивку OVMF, поэтому я думаю, что такая ошибка может быть связана с моей OVMF.
ЦП x86_64 (Intel или AMD) с набором инструкций AVX
Существуют небольшие различия в программировании архитектуры x86_64 между Intel 64 и AMD64. Я разрабатываю CCOS на основе процессора AMD, но использую руководства по программному обеспечению Architement Intel® 64 и IA-32 в качестве справочного руководства по архитектуре x86_64. На данный момент, каким бы ни был поставщик процессора.
Для установки, пожалуйста, обратитесь к сборке CCOSKRNL
Математическая библиотека (перепроизведения/libm.a) была предоставлена @ESTRELLA
Нет лицензии.
Электронная почта: [email protected]
Chengcheng OS: https://github.com/ccoskrnl/ccoskrnl
Руководство разработчика программного обеспечения Intel® 64 и IA-32 Architectures Architectures
AMD64 Архитектура программиста Руководство 2: Системное программирование
Язык программирования C
Осдев Вики
Спецификация ACPI
Спецификация UEFI