SII писал(а):
Кстати говоря, отвести под задачу все 4 Гбайта не удастся ни под каким соусом, какую-то часть придётся оставить системе (не обязательно 2 Гбайта, как в Винде, но пару-тройку страниц отвести точно придётся, а реально -- больше, чтобы не шибко извращаться в коде системы).
Ты не понял. 4ГБ реально отвести пользовательской программе. Просто все адреса работают с одним и тем же 4кБ блоком. Моя программа начинается с 0 адреса и приближается к 4ГБ пределу, ну при этом мы работаем с одним фиксированным блоком 4кБ в физической памяти.
Я не понимаю зачем отводить дополнительную область для системы.
Вся работа с системой ведется через прерывания. В Minix делается так, в Linux думаю тоже. Как в DOS.
Перед
Код:
int 31h
передавать в стек указатель на структуру данных.
Да можна отказаться от LDT, TSS, сегментов. Все делать в ручную. Сохранять регистры в ручную, заполнять дескрипторы тоже вручную через одну и ту же запись в GDT.
Но а как хранить таблицы распределения для каждого процесса?
Неужели для каждого процесса создавать новую 4МБ структуру?