осмысленное. Есть pmm, который создает набор range’ей(пока что только для ядра, потом для юзерспейса), range - адрес, длина и битмап, далее vmm, который маппит адрес в виртуальный и далее мне нужно два ядровых аллокатора, первый для аллокаций при инициализации(пока init-процесс не начался), второй уже для kernel-процессов. Второй, как мне кажется, должен работать над абстрацией, что-то вроде vm_area или vmobject, так как он хоть ядровый, но процесс, а вот первому, кажется, достаточно просто куска памяти(и вероятно, даже не нужно его переводить в higher-half, просто 1МБ статически выделить). Насколько такая архитектура валидна?
Т.е. pmm(bitmap) -> vmm(mapping) -> vm_area(allocator) -> mmap -> kmalloc(block) // примерно по такому же флоу должен идти user-space, просто mmap в виде сискола
и
static 1mb -> premalloc(block)
Есть классная идея, когда ядро ваще не аллоцирует память, оченно рекомендую.
Архитектура валидна, если работает, так что почему б не попробовать и не понять насколько это тебе подходит?
Как обычно, seL4
Мне скорее хочется научиться как правильно, а не просто завести это, но хорошо, спасибо)
правильно зависит от того чья идеология построения ОС ближе
Как правильно, такого нету. Есть правильно под твои конкретные требования.
как нравится, так и делай
это наверняка ещё сложнее чем когда в ядре
неа, реализация одинаково сложная
обычный набор аллокаторов не получается, так тут ещё и вне ядра
я думаю тут проблема в том что не хватает простых знаний для создания сколь угодно простого программного продукта
просто если из ядра убрать аллокатор возникает вопрос "а где ядру брать память?"
этот вопрос возникает если алокатор внутри
Обычный набор и не нужен если он вне ядра.
Ну в сел4 это решено просто - ядру не надо брать память, отличное решение.
А где оно процессы создаёт?
Обсуждают сегодня