Этот репозиторий-это путешествие через концепции операционной системы, с практическими реализациями в C. Каждый день фокусируется на конкретной теме, обеспечивая теоретическое понимание и практическое опыт кодирования.
| День | Тема | Концепция категория | Уровень сложности | Фокус реализации |
|---|---|---|---|---|
| 1 | Процесс концепции | Процессы | Легкий | Определение процесса |
| 2 | Состояния процесса и переходы | Процессы | Середина | Государственная диаграмма реализация |
| 3 | Механизмы создания процессов | Процессы | Середина | Fork (), exec () syscalls |
| 4 | Основы планирования процессов | Планирование | Середина | FCFS Алгоритм |
| 5 | Алгоритмы планирования | Планирование | Жесткий | SJF, приоритет, круглый робин |
| 6 | Контекст переключение | Процессы | Жесткий | Детали реализации |
| 7 | Поток концепции | Нить | Легкий | Базовое понимание потока |
| 8 | Создание и управление потоком | Нить | Середина | Posix Threads |
| 9 | Сравнение процессов с потоком с ними с | Нить | Середина | Сравнительный анализ |
| 10 | Многопользовательские модели | Нить | Жесткий | Пользовательские потоки ядра |
| 11 | Основы параллелистики | Синхронизация | Середина | Расовые условия |
| 12 | Мутекс и семафоры | Синхронизация | Жесткий | Выполнение |
| 13 | Концепции тупика | Синхронизация | Жесткий | Стратегии профилактики |
| 14 | Алгоритмы обнаружения тупиков | Синхронизация | Жесткий | Алгоритм банкира |
| 15 | Обзор управления памятью | Память | Легкий | Иерархия памяти |
| 16 | Логический против физического адреса | Память | Середина | Адрес перевод |
| 17 | Смежное распределение памяти | Память | Середина | Стратегии распределения |
| 18 | Механизм пейджинг | Память | Жесткий | Реализация таблицы страниц |
| 19 | Алгоритмы замены страницы | Память | Жесткий | FIFO, LRU, оптимальный |
| 20 | Сегментация | Память | Середина | Таблица сегмента |
| 21 | Концепции виртуальной памяти | Память | Жесткий | Спрос на пейджинг |
| 22 | Внутренние внутренние границы памяти (Malloc, бесплатно) | Управление памятью | Жесткий | Пользовательский распределитель памяти |
| 23 | Динамические методы управления памятью | Управление памятью | Жесткий | Стратегии пула памяти |
| 24 | Основы файловой системы | Файловые системы | Легкий | Файл концепция |
| 25 | Структура файловой системы | Файловые системы | Середина | Структуры каталогов |
| 26 | Методы распределения файлов | Файловые системы | Середина | Смежный, связанный |
| 27 | Управление свободным пространством | Файловые системы | Жесткий | Бит вектор, связанный список |
| 28 | Механизмы защиты файлов | Файловые системы | Середина | Контроль доступа |
| 29 | Управление системой ввода/вывода | Системы ввода/вывода | Середина | Устройства ввода/вывода |
| 30 | Алгоритмы планирования дисков | Системы ввода/вывода | Жесткий | Сканирование, C-сканирование |
| 31 | Управление прерыванием | Низкий уровень | Жесткий | Прерывать векторы |
| 32 | Расширенная реализация системного вызова | Программирование низкого уровня | Жесткий | Дизайн обертки Syscall |
| 33 | Расширенная отслеживание системных вызовов | Низкий уровень | Жесткий | Перехват Syscall |
| 34 | Разработка модуля ядра | Низкий уровень | Жесткий | Загружаемые модули ядра |
| 35 | Межпроцессная связь | МПК | Жесткий | Трубы, очереди сообщения |
| 36 | Общая память продвинулась | МПК | Жесткий | Низкоуровневая общая память |
| 37 | Программирование сокета глубокое погружение | Сеть | Жесткий | Реализация необработанной розетки |
| 38 | Планирование процессора продвинуто | Планирование | Жесткий | Многоуровневые очереди |
| 39 | Операционные системы в режиме реального времени | Специализирован | Жесткий | RTOS Design |
| 40 | Управление памятью ядра Linux | Ядро | Жесткий | Распределитель плиты |
| 41 | Процесс синхронизация продвинулась | Синхронизация | Жесткий | Алгоритм Петерсона |
| 42 | Теория графа распределения ресурсов | Синхронизация | Жесткий | Представление тупика |
| 43 | Методы фрагментации памяти | Память | Середина | Продвинутая фрагментация |
| 44 | Управление кешами | Память | Жесткий | Кэш -когерентность |
| 45 | Журналинг файловой системы | Файловые системы | Жесткий | Механизмы транзакции |
| 46 | Разработка драйвера устройства | Низкий уровень | Жесткий | Драйверы устройства персонажа |
| 47 | Реализация механизма безопасности | Безопасность | Жесткий | Ядро контроля доступа |
| 48 | Процесс планирования симулятор | Планирование | Жесткий | Комплексный симулятор |
| 49 | Внутренние сетевые файловые системы | Файловые системы | Жесткий | Распределенный дизайн FS |
| 50 | Механизмы обработки ошибок. | Низкий уровень | Жесткий | Управление исключением |
| 51 | Гипервизор виртуальной памяти | Передовой | Жесткий | Методы виртуализации |
| 52 | Распределенные алгоритмы ОС | Передовой | Жесткий | Консенсусные протоколы |
| 53 | Встроенный дизайн ядра ОС | Специализирован | Жесткий | Минимальное ядро |
| 54 | Microkernel Advanced Design | Архитектура | Жесткий | Прохождение сообщения |
| 55 | Профилирование производительности ОС | Передовой | Жесткий | Отслеживание ядра |
| 56 | Параллельная обработка примитивы | Передовой | Жесткий | Низкоуровневый параллелизм |
| 57 | Механизмы устойчивости к разлому | Передовой | Жесткий | Методы восстановления |
| 58 | Усовершенствованная балансировка нагрузки | Передовой | Жесткий | Стратегии планирования |
| 59 | Контейнеризация внутренней | Передовой | Жесткий | Реализация пространства имен |
| 60 | Примитивы синхронизации ядра | Передовой | Жесткий | Spinlocks, RCU |
| 61 | Анализ уязвимости безопасности | Безопасность | Жесткий | Переполнение буфера |
| 62 | Криптографические механизмы ядра | Безопасность | Жесткий | Примитивы шифрования |
| 63 | Методы обнаружения вредоносных программ | Безопасность | Жесткий | Обнаружение уровня ядра |
| 64 | Спектетняя | Безопасность | Жесткий | Анализ трассировки ядра |
| 65 | Дизайн распределения памяти | Память | Жесткий | Пользовательская реализация кучи |
| 66 | Расширенные механизмы IPC | МПК | Жесткий | Усовершенствованная передача сигналов |
| 67 | Методы отладки ядра | Низкий уровень | Жесткий | Анализ аварии ядра |
| 68 | Усовершенствованная обработка Syscall | Низкий уровень | Жесткий | Оптимизация SYSCALL |
| 69 | Полный прототип ядра ОС | Проект | Жесткий | Минимальное загрузочное ядро |
Каждый проект охватывает 3 дня, что позволяет углубленное исследование и реализацию.
Создайте минимальное загрузочное ядро
Реализуйте пользовательский распределитель памяти
Разработать симулятор файловой системы
Создать симулятор планирования процессов
Разработать менеджер виртуальной памяти
Разработать модуль нагруженного ядра
Реализуйте сетевую файловую систему
Создайте ядро операционной системы в реальном времени
ЛИЦЕНЗИЯ
Это расширенный образовательный ресурс для понимания операционных систем посредством глубокой реализации.