@@ -37,53 +37,210 @@ KintsugiOS — это минималистичная x86 операционна
3737
3838### Реализовано
3939- ** Собственный загрузчик** с переходом из реального режима в защищённый
40+ - Двухэтапная загрузка: BIOS → загрузочный сектор → защищённый режим → ядро
41+ - Чтение ядра с диска через BIOS INT 0x13 (CHS/LBA)
42+ - Инициализация GDT, IDT и перепрограммирование PIC
43+ - Переход из реального режима (16-bit) в защищённый (32-bit)
44+ - Настройка сегментных регистров и стека
45+
4046- ** GDT (Глобальная таблица дескрипторов)** с полноценной сегментацией памяти
47+ - Три дескриптора: нулевой, сегмент кода, сегмент данных
48+ - Настройка прав доступа: Present, DPL, Type биты
49+ - Гранулярность 4KB для доступа ко всей 4GB памяти
50+ - База 0x00000000, лимит 0xFFFFFFFF
51+
4152- ** Продвинутое управление памятью** с двумя уровнями аллокации:
4253 - Аллокатор на основе связанных блоков памяти с разделением и слиянием
54+ - Структура блока: size, next pointer, is_free flag
55+ - Алгоритм best-fit для минимизации фрагментации
56+ - Автоматическое объединение соседних свободных блоков
57+ - Выравнивание на границу 16 байт
58+ - Динамическое расширение кучи от 1MB до 16MB
59+ - Функции диагностики:
60+ - kmemdump() — детальный дамп состояния кучи
61+ - get_meminfo() — статистика использования памяти
62+ - kmemcheck() — проверка целостности блоков
63+
4364- ** Драйверы оборудования** :
4465 - VGA-экран с поддержкой цветного текста и прокрутки
66+ - Прямой доступ к видеопамяти 0xB8000
67+ - 16 цветов текста и фона
68+ - Автоматическая прокрутка при заполнении экрана
69+ - Позиционирование курсора через порты 0x3D4/0x3D5
70+ - Функции: kprint(), kprint_at(), kprint_colored()
4571 - Клавиатура (PS/2) с обработкой модификаторов (Shift, Ctrl, Alt, Caps Lock)
72+ - Обработка скан-кодов через порт 0x60
73+ - Таблицы символов для верхнего/нижнего регистра
74+ - Поддержка backspace, enter, специальных комбинаций (Ctrl+C)
75+ - Состояния модификаторов: shift_pressed, ctrl_pressed, alt_pressed, caps_lock
4676 - Таймер с программными прерываниями
77+ - Настройка PIT на частоту 50 Гц
78+ - Глобальный счётчик тиков
79+ - Функция wait() для задержек в миллисекундах
4780 - ATA PIO с поддержкой LBA-адресации
81+ - Поддержка LBA28 (до 128GB дисков)
82+ - Идентификация устройств через команду IDENTIFY
83+ - Чтение/запись секторов (512 байт)
84+ - Ожидание готовности устройства с таймаутами
85+ - Поддержка master/slave устройств
86+
4887- ** Система прерываний** (IDT, ISR, IRQ) с кастомными обработчиками
88+ - 48 записей в IDT (32 исключения + 16 аппаратных прерываний)
89+ - Ассемблерные заглушки для сохранения контекста
90+ - Ремаппинг PIC на вектора 32-47
91+ - Обработка исключений: деление на ноль, GPF, page fault и др.
92+ - API для регистрации обработчиков: register_interrupt_handler()
93+ - Автоматическая отправка EOI в контроллеры прерываний
94+
4995- ** Командная оболочка "Keramika Shell"** с поддержкой команд:
50- - ` help ` — список команд
96+ - ` help ` — список команд с описанием
5197 - ` clear ` — очистка экрана
52- - ` end ` — остановка CPU
53- - ` malloc ` — выделение памяти
54- - ` free ` — освобождение памяти
55- - ` info ` — информация о системе
56- - ` memdump ` — дамп памяти
57- - И другие...
98+ - ` end ` — остановка CPU (HLT инструкция)
99+ - ` malloc ` — выделение памяти с указанием размера
100+ - ` free ` — освобождение памяти по адресу
101+ - ` info ` — информация о системе: память, CPU, версия
102+ - ` memdump ` — дамп состояния кучи
103+ - ` echo ` — вывод текста с поддержкой аргументов
104+ - ` sleep ` — задержка в миллисекундах
105+ - ` reboot ` — перезагрузка системы
106+ - ` rand ` — генерация случайного числа по алгоритму xorshift32
107+ - ` randrange ` — случайное число в диапазоне
108+ - ` binpow ` — бинарное возведение в степень
109+ - ` ls ` — список файлов в корневой директории FAT12
110+ - ` cat ` — вывод содержимого файла
111+ - ` load ` — загрузка файла в память по адресу
112+ - ` fat12info ` — информация о файловой системе FAT12
113+ - ` qemushutdown ` — выключение QEMU через порт 0x604
114+
115+ - ** Файловая система FAT12 (Read Only)** в kernel/fs/fat12.c
116+ - Чтение и парсинг загрузочного сектора FAT12
117+ - Извлечение параметров: bytes_per_sector, sectors_per_cluster, root_entries
118+ - Вычисление смещений: fat_start_sector, root_dir_start_sector, data_start_sector
119+ - Обход 12-битных записей FAT с учётом чётности/нечётности кластеров
120+ - Форматирование имён файлов из формата 8.3 (удаление пробелов)
121+ - Поиск файлов в корневом каталоге по имени
122+ - Чтение файлов через обход цепочек кластеров
123+ - Буферизация таблицы FAT для уменьшения обращений к диску
124+ - Поддержка специальных значений FAT: 0xFF7 (bad cluster), 0xFF8-0xFFF (end of chain)
125+ - Функции: fat12_init(), fat12_find_file(), fat12_read_file(), fat12_list_root()
126+
58127- ** Библиотека KKLibC (Kintsugi Kernel LibC)** включая:
59128 - Работу со строками, генерация числа и прочие стандартные вещи (stdlib.h)
129+ - strlen(), strcpy(), strcmp(), strtok(), strstr(), strchr()
130+ - itoa(), utoa(), atoi(), hex_strtoint()
131+ - strspn(), strcspn(), strpbrk()
60132 - Форматированный вывод (stdio.h)
133+ - printf(), printf_colored(), printf_at()
134+ - Поддержка форматирования: %d, %x, %s, %c, %u
135+ - Флаги: выравнивание, дополнение нулями, префиксы
136+ - sprintf(), snprintf(), vsnprintf()
61137 - Функции памяти (mem.h)
138+ - kmalloc(), kfree(), krealloc()
139+ - memcpy(), memset(), memmove(), memcmp(), memchr()
140+ - memory_set(), u32memory_set()
62141 - Библиотека для математики (math.h)
142+ - binary_pow() — бинарное возведение в степень
63143 - Типы данных (ctypes.h)
144+ - Стандартные типы: u8, u16, u32, s8, s16, s32
145+ - Функции классификации символов: isalpha(), isdigit(), etc.
146+ - Макросы: KB, MB, GB, ASSERT()
64147 - Общий заголовочный файл kklibc.h
148+ - Включение всех модулей библиотеки
149+ - Определение версии системы: VERSION
65150 - Библиотека стандартных методов (stdlib.h)
151+ - Генерация случайных чисел: rand(), rand_range() на основе xorshift32
152+ - Системные функции: reboot(), wait()
153+ - Функции поиска: fuzzy_search()
66154
67155### В разработке
68- - [ ] Файловая система Fat12
156+ - [ ] Файловая система Fat12 (Write+Read)
157+ - Реализация записи файлов
158+ - Создание новых записей в каталоге
159+ - Обновление таблицы FAT при выделении кластеров
160+ - Запись данных в секторы диска
69161 - [ ] Файловая система ext2
162+ - Исследование структуры ext2
163+ - Чтение суперблока и групповых дескрипторов
164+ - Работа с inode и блоками данных
165+ - Поддержка каталогов и длинных имён
70166 - [ ] Планировщик задач
167+ - Структуры данных для описания процессов
168+ - Механизм переключения контекста
169+ - Алгоритмы планирования (round-robin, приоритеты)
170+ - Очереди готовых и заблокированных процессов
71171 - [ ] Пользовательское пространство
172+ - Разделение привилегий (ring 0 vs ring 3)
173+ - Системные вызовы через прерывания
174+ - Защита памяти через сегментацию/страничность
175+ - Базовые библиотеки для пользовательских программ
72176 - [ ] Inter-Process Communication
177+ - Очереди сообщений
178+ - Разделяемая память
179+ - Семафоры и мьютексы
180+ - Каналы (pipes)
73181 - [ ] Загрузка ELF
182+ - Парсинг заголовков ELF
183+ - Загрузка сегментов в память
184+ - Настройка таблиц страниц
185+ - Передача управления точке входа
74186 - [ ] Графический интерфейс
187+ - Переход в графический режим VESA
188+ - Примитивы рисования: линии, прямоугольники, текст
189+ - Оконная система
190+ - Обработка событий мыши
75191 - [ ] Многозадачность
192+ - Создание и уничтожение процессов
193+ - Управление ресурсами процессов
194+ - Синхронизация и взаимное исключение
195+ - Сигналы и обработчики
76196 - [ ] Пользовательский режим
197+ - Механизм переключения между кольцами защиты
198+ - Проверка прав доступа
199+ - Обработка нарушений привилегий
200+ - API системных вызовов
77201 - [ ] Сетевой стек
202+ - Драйвер сетевой карты (например, RTL8139)
203+ - Протоколы: Ethernet, IP, ARP
204+ - Транспортные протоколы: TCP, UDP
205+ - Сокеты и API для сетевых операций
78206 - [ ] Псевдографический интерфейс
207+ - Текстовый режим с расширенными символами
208+ - Оконный менеджер в текстовом режиме
209+ - Диалоговые окна и элементы управления
210+ - Обработка фокуса ввода
79211 - [ ] Полностью реализованный LibC
212+ - Расширение KKLibC полным набором функций
213+ - Поддержка плавающей точки
214+ - Функции работы со временем и датой
215+ - Локализация и кодировки
80216
81217### Готово
218+ - [x] Файловая система Fat12 (Read Only)
219+ - Чтение загрузочного сектора и параметров
220+ - Обход корневого каталога
221+ - Чтение цепочек кластеров
222+ - Форматирование имён файлов 8.3
82223 - [x] Динамические аллокаторы памяти
224+ - Аллокатор кучи с best-fit алгоритмом
225+ - Разделение и слияние блоков
226+ - Диагностика и отладка памяти
83227 - [x] Чувствительность к регистру
228+ - Обработка Caps Lock состояния
229+ - Таблицы символов для обоих регистров
230+ - Корректная работа модификаторов
84231 - [x] Драйвер ATA PIO
232+ - LBA-адресация 28-бит
233+ - Идентификация устройств
234+ - Чтение/запись секторов
85235 - [x] Система прерываний с обработкой исключений
236+ - Полная IDT с 48 записями
237+ - Обработчики всех стандартных исключений
238+ - API для регистрации обработчиков
86239 - [x] Полноценная shell-оболочка
240+ - 16 встроенных команд
241+ - Разбор аргументов и история ввода
242+ - Интеграция с файловой системой
243+ - Управление памятью и системой
87244
88245## Требования
89246
0 commit comments