Posted: Wed May 02, 2007 4:32 pm
ИМХО - люди изобретают велосипед.
Serge, не навязывай свои взгляды, тем более не совсем правильные. Активизировать графический режим еще до перехода в защищенный режим только потому, что так "проще" - это совершенно неправильный подход! Ты не допускаешь, что в защищенном режиме системе может понадобиться многократно менять графический режим?Наконец в каком режиме будет работать система, текстовом или графическом ? Перейти в графический режим можно только через вызов БИОС
А вот об этом и топик...Serge wrote:P.S.
Дом начинают строить с фундамента, а ты строишь крыльцо со ступеньками, загрузчик для безъядерной операционной системы, потому что никакого ядра нет и в помине, нет даже представления о том как это ядро будет устроено и как будет работать. Список желаемых функций ядра ещё не ядро. Куда это ядро должно грузиться, по каким адресам ? Как будут передаваться параметры при системных вызовах и данные между разными адресными пространствами ? Как вообще эти пространства будут устроены ?
Где будут хранится GDT, IDT, список страниц, таблица прерываний с их обработчиками, менеджер памяти который выделяет для всего этого память? В загрузчике? Так он же будет выгружен, чтоб не занимать лишнюю память. Кому придётся оперировать со страницами и таблицами *DT? Ядру? Так оно же даже не знает где это всё находится, т.к. загрузчик по тихому выделил память разместил всё там и сленял.Загрузчик должен сначало первести процессор в P-Mode, затем обязательно настроить
страничную адресацию, затем выделять при помощи страничной адресации куски памяти и заносить в эти куски наши драйвера и приложения по конфигурационному файлу на загрузку.
Вот и я о том же. Знать порядок загрузки ядра и драйверов хорошо. Только по каким адресам это ядро будет размещаться ? Где будет хранить свои системные данные ? Как будет организовано адресное пространство системы, управление памятью, обработка прерываний, планирование и переключение задач, обмен IPC ? Это и есть фундамент. И здесь требуются не общие фразы "ядро выделяет память, ядро переключает потоки", а понимания того как это будет работать на "железе" и подробное описание алгоритмов и структур данных. А этого нет.Графический режим, GUI и все такое тоже явно не тянут на роль фундамента...
Где будут хранится GDT, IDT, список страниц, таблица прерываний с их обработчиками, менеджер памяти который выделяет для всего этого память?
Мы ведь не драйверы пишем, а систему, для отладки и старта системы х1600 с головой хватит, у меня даже нет такого монитора, чтоб поддерживал такое разрешение.Да, замечательно когда драйвер может менять видеорежим, только под Linux, Windows и MacOS ATI и NVIDIA делают драйверы, а для Колибри нет. Есть видеодрайвер Транса, программирующий CRT для смены частоты и режима, но на х1600 он уже не работает.
И ещё, после того как он включит P-Mode и страничную адресацию, он потеряет возможность читать диск, т.к. драйвера не загружены.Загрузчик должен сначало первести процессор в P-Mode, затем обязательно настроить
страничную адресацию, затем выделять при помощи страничной адресации куски памяти и заносить в эти куски наши драйвера и приложения по конфигурационному файлу на загрузку.
Принципиально, не нужен, но может быть полезен в том случае, когда прикладной код по каким-то там причинам не выполнил анализ результата, полученного от некоторой функции, которая вернула ему NULL-указатель. Предположим, функция возвращает какую-то структуру, тогда при доступности первой страницы во время чтения этой структуры приложение может к примеру прочитать стартовый код, не вызвав сразу появление ошибки, а если бы эта страница была недоступна, то неизбежная в общем ошибка была сразу идентифицирована системой.1. Зачем принципиально нужен стоп фрейм ??? (размером в одну страничку или 4mb)
2. Зачем системе нужно перехватывать обращения по нулевому адресу ???
Причин много. Вот некоторые из них. Во-первых, далеко не вся информация в исполняемом файле может быть нужна при выполнении программы; во-вторых, в файле часто требуется хранить несколько секций, не выровненных на определенную границу в памяти и имеющих далеко не смежные адреса привязки, т.е. адреса, по которым эти секции нужно загружать в память.3. По каким объективным причинам не следует делать содержимое файла - точной копией образа памяти ???
(я считаю слово 'просто' есть первый шаг к слову 'надежно', а слово 'примитивно' не более чем дань 'текущей моде' и 'устоявшимся стереотипам')