Вопросы по OSDev?
Я смотрю тут очень много умного народу в плане OSDev. поэтому у меня есть вопросы? я мало что знаю и поэтому решил что может мне кое что кое-кто расскажет.
К примеру какой формат файлов лучше использовать?
Что такое плоская или как называют flat model памяти... В чем плюс нереального режима процессора... и что это вообще такое? И еще куча вопросов... может кто нибудь мне на них ответит...а ребята???
Моя аська-85808006. Заранее благодарен,
Михаил.
flat model - когда весь код и данные находятся в одном адресном пространстве. В отличии от сегментной модели, где код и данные находятся в разных сегментах, и могут быть размазаны по нескольким сегментам.
Плюсы flat модели: простота поддержки
Плюсы segment модели: большее максимальное количество данных к которым может иметь программа.
В нереальном режиме проца, тебе доступно все адресное пространство процессора, но работаешь в реальном режиме.
По поводу остальных вопросов пиши сюда, попробую ответить, если ошибусь народ подправит.
Память.
Итак, как я понял - есть segment and flat model.
Тогда вопрос напрашивает следующий. Вот мы в защищенном режиме. И как мы к примеру для нашей проги, для которой не ясно какая модель, разделим данные коду и стеку в случаи плоской модели. Создавать одинаковые дескрипторы... только один для кода - другой для данных. И в компилить прогу так чтобы не было наложений кода на данные. Или всеже есть способ когда сама прога может и не знать про модельку, а мы так умно организуем ее работу... а?
Нереальный режим.
Значит доступно все адресное пространство и 32 разрядные регистры. Тогда вопрос такой. Мы попадаем в него из защищенного - а обратно мы можем вернутся... и если да, то к примеру моно ли в нереале загрузить кое что в область выше мегабайта а потом вернемся в защищенный уже передав управление на эту область, соответсвенно настроив все регистры.
Ну пока все... у меня еще много вопрос.. постоянно будет прирост. =)
С уважением Михаил.
Пишется Boot Sector, для какой-либо конкретной файловой системы, который ищет и загружает в память файл ядра и передает на него управление.
Усе енто происходит в реальном режиме(в защищенный переводит ядро).
Модель памяти.
Наиболее перспективна FLAT модель со страничной организацией, где все адресное пространство можно адресовать с помощью 32 битного адреса. Да, замечание что стек может перекрыть данные или код верно, но кто запрещает нам, испрользуя страничную организацию, позаботиться об этом, да и вообще ОС может следить за стеком.
"нЕРЕАЛЬНЫЙ рЕЖИМ"
Как раз и используется для имения всей памяти из реального режима.
Это все базар, а вот реальные потуги(мои), можно заценить здесь www.robotronix.narod.ru
Да, кстати, за недоделки не вините - все еще только началось.
Опять же вопрос. Допустим у нас есть flat. Разберем ее работу. Есть программа-и как нам надо описать дескрипторы чтобы стек у нас не накрывал данные, если учесть что все у нас происходит в одном куске адресного пространства.
Нереальный режим.
Вопрос такой - а в нереальном режиме можно юзать функции Биоса или нет?
Ну еще одно замечание. Как моно писать бут сектор для определенной фс? просто может загрузить просто загрузчик, который уже сам будет расправляться, где и как лежит ядрышко. =)
И еще ,Рамон, можешь кинуть образ дискетки. А то дискет работающих нет, и соотвественно даже не посмотреть твои труды, ок?
ФАКТ: 80% ось девелоперов друзья, а все скажуь типо да, так и должно быть, НО вот у мя в аси сидит 96 чуваков и 53 из них ось девелоперы, их ние ники я встречаю на всех тех же сайтах и топиках на которых крутусь я... ну вообще тупо и не в тему но я к тому что для нас абревиатура osdev нечто большое чем набор символов, енто чуть ли не клан программеров... нам надо как то дружнее держаться... надо договариться и держаться на 1 портале... тогда мы будем сила..
Начнем с того что дескрипторов всего два: код и данные. И оба они покрывают все 4GB адресного пространства. Включена страничная организация палмяти. ESP указывает например на 0x80000000, и даже если очень сильно захотеть то гигового стека ты не получишь, в конце концов можно контролировать ESP.
"нЕРЕАЛЬНЫЙ рЕЖИМ"
Это все тотже Real Mode c BIOS'ом, но с возможностью адресовать все 4 гига.
BOOT
Можно поступить и так, но тогда нужно согласовывать где сидит загрузчик, писать утиль для его затиси, а можно проще(так поступил я), верем и пишем BootSector например конкретно для FAT, который из корневого или какого-либо другого каталога загружает ядро. Да кстате оразмере Boot'а я прекрасно уложился в 512 байт да еще и собработкой ошибок. И если быть точным то у меня ядро сочетает ф-ции Загрузчика и собственно ядра.
Образ дитскеты можно скачать здесь:
noxy_v0.076.zip
кстати про нереальный режим, он пашет тока на 32х разрядных камушек... и смысл его использовать - нет.... на 32х разрядных машинках надо в протекте сидеть...
Полностью с этим согласен
а чё ось ща может делать? странично вирт. память?
давай подробней... сриншот GUI (наработки) плизззз...
Кто тут уже начал писать ядра, вы их на чем пишите
на асме или на си?
Итак новый вопрос
Кто тут уже начал писать ядра, вы их на чем пишите
на асме или на си?
Вот, например, у меня ядро на асме(соблюдены соглашения си), а усе остальное будет на си
Итак новый вопрос
Кто тут уже начал писать ядра, вы их на чем пишите
на асме или на си?
Моно на чем угодно......
Личноя написал на turbo c
А сейчас переписал на spc--.....
PS Real Mode Forever
Моно на чем угодно......
Личноя написал на turbo c
А сейчас переписал на spc--.....
PS Real Mode Forever
гы..гы... она в реале работает?
хы... как же до тебя в асю достучаться?? вот мля задача....
Вот, например, у меня ядро на асме(соблюдены соглашения си), а усе остальное будет на си
ой... боже С.... бееее... беее.... простите меня тут немного вырвало =)
слушь..ты ответь на предыдущей вопрос про GUI и т.д.
ой... боже С.... бееее... беее.... простите меня тут немного вырвало =)
слушь..ты ответь на предыдущей вопрос про GUI и т.д.
Че бее??? Я же для себя пишу...
У меня план таков написать в реал а потом из него в протект нырнуть..
Тобишь все по очереди Не разабравшись с одним зачем браться за другое....???
GUI мне нравиться у ПОЛИТ ОС...
А насчет чтобы всем вместе писать...
Хмм? Только как? Что разделить кто в чем обладает и писать Так что ли??? Представляю как это все будет работать :)
И желательно на разных яхыках
Можете посмотреть ось на turbo c (Только ядро мое)
Не написано А слеплено...
http://fict.by.ru/sources/mythos.zip
Надеюсь ссылка жива :P
так ты мля в асю мож добавишь?
На мой взгляд си куда не хуже любого другого языка программирования для разработки ядра. Он не уступает асму... и при всем при этом вероятно сделать ошибку в ядре уменьшается.
Кстати вот тут народ что то вокруг всяких мелких вопросов крутится... флудит короче.
А кто нибудь думал вживить в ядрышко.. а точнее не в ядрышко а в модуль файловой системы такую вещь как файрвол... а..
И еще вот тут вопрос поступал насчет порождения процессов... конечно моно копировать старый... а моно и новый исполняемый фаил сразу подгружать...
моно конечно и то и другое реализовать... но может кто нибудь придумает еще более оптимальный вариант.
Еще... что еще хотел спросить.. лано потом.
Не флудите сильно. Михаил.
А кто нибудь думал вживить в ядрышко.. а точнее не в ядрышко а в модуль файловой системы такую вещь как файрвол... а..
А зачем? Можно пояснить идею?
И еще вот тут вопрос поступал насчет порождения процессов... конечно моно копировать старый... а моно и новый исполняемый фаил сразу подгружать...
Насколько я понимаю вы говорите о схеме используемой в Unix, для порожения себя самого?
А зачем копировать, у вас все загружено, надо просто расшарить общий код/данные между старым и новым процессом.
моно конечно и то и другое реализовать... но может кто нибудь придумает еще более оптимальный вариант.
Еще... что еще хотел спросить.. лано потом.
Не флудите сильно. Михаил.
Я предполагал делать следующим образом: есть некий Image (это может быть драйвер, исполняемый файл, длл). Система ведет реестр этих Image-ей. Как происходит загрузка, создается ентри в реестре, выделяется память для заголовка, в эту память мапится заголовок + описание всех секций.
Дальше создается процесс(некая структура с описанием процесса), для процесса создается виртуальное адресное пространство. Дальше в это виртуальное пространство мапятся секции кода и данных по информации из Image entry, в зависиости от типа Image(drv,exe,dll) мапятся в соответствующее адресное пространство. Производится настройка релокейшенов, настройка импорта экспорта. Ну а дальше по обстоятельствам.
Реальная загрузка данных и выделение под них физической памяти будет производится только когда произойдет непосредственное обращение к этим коду/данным (за исключением драйвера).
Когда Image есть в реестре загруженных Images, то создает еще один мап секций этого Image в соответствующее виртуальное адресное пространство, но мапится с доп. аттрибутом CopyOnWrite. Т.е. если страница данной секции уже есть в памяти то она будет использована, пока любой процесс не попытается ее изменить, если попытается то для этой страницы выделится отдельная страница физической памяти, туда скопируется оригинальная страница и изменится информация что данный процесс имеет свою версию этой стрницы. Таким образом код который только читается всегда будет в одном экземпляре.
Это я так побыстрому, там еще куча заморочек технического плана.
Валерий.
Не флудите сильно. Михаил.
гы...гы... понитуешься =))))))))))
гы... да ты наверно вместе с Павлом учишься?
так ты мля в асю мож добавишь?
Скажу по секрету .....
Что Тот Самый Павел И есть...
Мож у кого есть дока по fat12/32 на русском и поподробнее...
Да и еще вопрос
Мож у кого есть дока по fat12/32 на русском и поподробнее...
гы..гы... Павел =))))) а нафик те 2 аси? короче есть - найду намылю
гы..гы... Павел =))))) а нафик те 2 аси? короче есть - найду намылю
Какие две аси???????????????
URL=http://www.robotronix.narod.ru/download/files/noxy_v0.076.zip]noxy_v0.076.zip[/URL]
ну как с тобой мона связь держать?
ну как с тобой мона связь держать?
Я редко включаю асю и сюда захожу
Bochs-2.0.2 - FULL SUXXXXXXXXXXX. Так что если народ кто-то из вас запускал мою ось под ним и она не работала, то во всем виноват он. Это выяснилось недавно, когда я решил проверить этот ср*ный Bochs . Он некоректно эмулирует PCI32 Service и ни хр*на не понимает машино-зависимые регистры проца.
давайсорцы скорее и расскажи че твоя ось может делать?