Станислав писал(а):
Основная задача это создание функции добавлении страниц и их освобождении, т.е. использовании всего объёма памяти.
К тому, что я писал, добавь функции выделения и освобождения физ. памяти. Для отображения и отцепления страниц по указанному адресу прикладного пространства я использую счетчики присутствующих страниц (для каждой транс-страницы отдельный счетчик), чтобы выгружать транс-страницу, когда она не нужна в памяти, а также счетчики несвободных фреймов (свободный фрейм - это фрейм свободной области или стоп-фрейм, т.е. фрейм для отлавливания обращений по нулевому указателю или ниже/выше прикладного стека), чтобы освобождать транс-страницу, как обнуленную. Для отображения и отцепления страниц по произвольному адресу дополнительно понадобятся списки свободных областей. Еще нужно учитывать, что прикладной запрос на выделение памяти не должен пониматься ядром буквально (ядро сразу может вообще ничего не отображать, а только зарезервировать нужное количество памяти в общем пространстве внутренней/внешней памяти и поменять статус фреймов). Еще для приложений кроме операции выделения памяти используется операция резервирования, которая не требует от ядра указанного количества памяти, а просто делает участок пространства несвободным. Ошибка обращения к резервной области может обрабатываться приложением.
Цитата:
После перехода в страничный режим естественно добавляется обработка 14го прерывания, возможность сбрасывать страницы на винт, адресные пространства становятся защищены и много чего ещё с этим связанного.
Тут нужно вводить классификацию страниц/фреймов по типам. Для подкачки (или просто отложенного отображения) нужно управлять рабочим набором страниц, иметь алгоритм отбора страниц у других процессов и т.п.
Цитата:
Система уже есть(со своими объектами и иерархией)...
Система может и есть, но ядра в обычном понимании этого слова нет. Больше похоже на графическую библиотеку на голом железе.