Я занимаюсь разработкой простой маленькой игрушечной ОС на С и сборке в качестве эксперимента, но начинаю беспокоиться из-за недостатка знаний о системной памяти.
Мне удалось скомпилироватьядро, запустите его в Bochs (загружается GRUB) и напечатайте "Hello, world!"Сейчас я пытаюсь сделать простой диспетчер памяти, чтобы начать эксперименты с другими вещами.
Я нашел некоторые ресурсы по управлению памятью, но у них не было достаточно кода, чтобы уйти (какя понял эту концепцию, но не знал, как ее реализовать).
Я попробовал несколько более или менее сложных стратегий, а затем согласился с смехотворно упрощенной (просто соблюдая смещение впамяти и увеличивайте его на размер выделенного объекта), пока не возникнет необходимость его изменения.Никакого контроля фрагментации, защиты или чего-либо еще.
Так что я хотел бы знать, где я могу найти больше информации, когда мне нужен более надежный менеджер.И я также хотел бы узнать больше о пейджинге, сегментации и других важных вещах.До сих пор я вообще не имел дела с подкачкой, но я часто упоминал об этом на сайтах по разработке ОС, поэтому я предполагаю, что рано или поздно мне придется иметь дело с этим.
I 'Мы также читали о некоторой форме косвенных указателей, где приложение содержит указатель, который перенаправляется диспетчером памяти в его реальное местоположение.Я уверен, что это довольно далеко, но мне кажется важным, если я когда-нибудь захочу попробовать виртуальную память или дефрагментацию.
А также, куда я должен поместить смещение моей памяти?Я понятия не имел, какое место было лучше, поэтому я просто случайно выбрал 0x1000
, и я уверен, что он вернется ко мне позже, когда я перезапишу свое ядро или что-то в этом роде.
Я бы тожехотелось бы знать, чего ожидать от производительности (например, значение big-O для выделения и освобождения) и каково будет разумное соотношение структур управления памятью к фактической управляемой памяти.
Конечно, не стесняйтесьответить только на подмножество этих вопросов.Любая обратная связь с благодарностью!