Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопросы по OSDev?

554
10 декабря 2003 года
Zhilin Mike
159 / / 11.02.2003
Привет Всем!!!

Я смотрю тут очень много умного народу в плане OSDev. поэтому у меня есть вопросы? я мало что знаю и поэтому решил что может мне кое что кое-кто расскажет.
К примеру какой формат файлов лучше использовать?
Что такое плоская или как называют flat model памяти... В чем плюс нереального режима процессора... и что это вообще такое? И еще куча вопросов... может кто нибудь мне на них ответит...а ребята???

Моя аська-85808006. Заранее благодарен,
Михаил.
1.8K
10 декабря 2003 года
gwg605
76 / / 06.03.2003
По поводу формата выполняемых файлов: сейчас вроде как самые распространенные форматы: elf и PE. В общем обеспечивают примерно одинаковые возможности. Я планирую использовать для начала PE, а потом кое что поменять.

flat model - когда весь код и данные находятся в одном адресном пространстве. В отличии от сегментной модели, где код и данные находятся в разных сегментах, и могут быть размазаны по нескольким сегментам.
Плюсы flat модели: простота поддержки
Плюсы segment модели: большее максимальное количество данных к которым может иметь программа.

В нереальном режиме проца, тебе доступно все адресное пространство процессора, но работаешь в реальном режиме.

По поводу остальных вопросов пиши сюда, попробую ответить, если ошибусь народ подправит.
554
11 декабря 2003 года
Zhilin Mike
159 / / 11.02.2003
Отлично... про форматы. Вот тогда возникает вопрос. Допустим у нас есть эти форматы - elf and pe. Как нам запустить их. Так а перед этим нам конечно же понадобится все считать с файловой системы, которой вообще то еще нет, или просто ручками - типа для загрузки ядра. А как запустить...т.е. как настроить? Это конечно уже реализационный вопрос.

Память.

Итак, как я понял - есть segment and flat model.
Тогда вопрос напрашивает следующий. Вот мы в защищенном режиме. И как мы к примеру для нашей проги, для которой не ясно какая модель, разделим данные коду и стеку в случаи плоской модели. Создавать одинаковые дескрипторы... только один для кода - другой для данных. И в компилить прогу так чтобы не было наложений кода на данные. Или всеже есть способ когда сама прога может и не знать про модельку, а мы так умно организуем ее работу... а?

Нереальный режим.

Значит доступно все адресное пространство и 32 разрядные регистры. Тогда вопрос такой. Мы попадаем в него из защищенного - а обратно мы можем вернутся... и если да, то к примеру моно ли в нереале загрузить кое что в область выше мегабайта а потом вернемся в защищенный уже передав управление на эту область, соответсвенно настроив все регистры.

Ну пока все... у меня еще много вопрос.. постоянно будет прирост. =)
С уважением Михаил.
260
11 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Начнем с запуска Ядра.
Пишется Boot Sector, для какой-либо конкретной файловой системы, который ищет и загружает в память файл ядра и передает на него управление.
Усе енто происходит в реальном режиме(в защищенный переводит ядро).

Модель памяти.
Наиболее перспективна FLAT модель со страничной организацией, где все адресное пространство можно адресовать с помощью 32 битного адреса. Да, замечание что стек может перекрыть данные или код верно, но кто запрещает нам, испрользуя страничную организацию, позаботиться об этом, да и вообще ОС может следить за стеком.

"нЕРЕАЛЬНЫЙ рЕЖИМ"
Как раз и используется для имения всей памяти из реального режима.

Это все базар, а вот реальные потуги(мои), можно заценить здесь www.robotronix.narod.ru

Да, кстати, за недоделки не вините - все еще только началось.
554
11 декабря 2003 года
Zhilin Mike
159 / / 11.02.2003
Модель памяти.
Опять же вопрос. Допустим у нас есть flat. Разберем ее работу. Есть программа-и как нам надо описать дескрипторы чтобы стек у нас не накрывал данные, если учесть что все у нас происходит в одном куске адресного пространства.

Нереальный режим.
Вопрос такой - а в нереальном режиме можно юзать функции Биоса или нет?

Ну еще одно замечание. Как моно писать бут сектор для определенной фс? просто может загрузить просто загрузчик, который уже сам будет расправляться, где и как лежит ядрышко. =)

И еще ,Рамон, можешь кинуть образ дискетки. А то дискет работающих нет, и соотвественно даже не посмотреть твои труды, ок?
447
11 декабря 2003 года
CodeWorld
315 / / 05.10.2003
LOL! да мы тут родные =)

ФАКТ: 80% ось девелоперов друзья, а все скажуь типо да, так и должно быть, НО вот у мя в аси сидит 96 чуваков и 53 из них ось девелоперы, их ние ники я встречаю на всех тех же сайтах и топиках на которых крутусь я... ну вообще тупо и не в тему но я к тому что для нас абревиатура osdev нечто большое чем набор символов, енто чуть ли не клан программеров... нам надо как то дружнее держаться... надо договариться и держаться на 1 портале... тогда мы будем сила..
260
11 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Модель памяти.
Начнем с того что дескрипторов всего два: код и данные. И оба они покрывают все 4GB адресного пространства. Включена страничная организация палмяти. ESP указывает например на 0x80000000, и даже если очень сильно захотеть то гигового стека ты не получишь, в конце концов можно контролировать ESP.

"нЕРЕАЛЬНЫЙ рЕЖИМ"
Это все тотже Real Mode c BIOS'ом, но с возможностью адресовать все 4 гига.

BOOT
Можно поступить и так, но тогда нужно согласовывать где сидит загрузчик, писать утиль для его затиси, а можно проще(так поступил я), верем и пишем BootSector например конкретно для FAT, который из корневого или какого-либо другого каталога загружает ядро. Да кстате оразмере Boot'а я прекрасно уложился в 512 байт да еще и собработкой ошибок. И если быть точным то у меня ядро сочетает ф-ции Загрузчика и собственно ядра.


Образ дитскеты можно скачать здесь:
noxy_v0.076.zip
447
11 декабря 2003 года
CodeWorld
315 / / 05.10.2003
кстати про нереальный режим, он пашет тока на 32х разрядных камушек... и смысл его использовать - нет.... на 32х разрядных машинках надо в протекте сидеть...
260
11 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Цитата:
Originally posted by CodeWorld
кстати про нереальный режим, он пашет тока на 32х разрядных камушек... и смысл его использовать - нет.... на 32х разрядных машинках надо в протекте сидеть...


Полностью с этим согласен

447
11 декабря 2003 года
CodeWorld
315 / / 05.10.2003
а где сорцы твоей оси? кстати дискеток у мя нет - примитивные носитиле инфы ;) скриншоты пришли... расскажи про ней...микроядро? как менеджер памяти организоваваешь? gui есть?... я тож ось пишу - SysBin.com
260
11 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Source ядра будет позже когда усе запашет нормально, да и рано еще текст то - черновик практически. Микроядро - собственно да, но пока дриверы в ядре(под монолит), но это только для отладки, потом разьединю когда напишу драйвак FAT'а. Менеджер памяти будет после FAT'а, GUI будет(есть наработки с ВЕСОЙ), но еще тоже рано(за багами не уследишь) будет после менеджера памяти и корректной работы с опредиленным оборудованием. Усе должно развиваться постепенно - шаг за шагом.

А вот и Screen только он старый
Screen
447
11 декабря 2003 года
CodeWorld
315 / / 05.10.2003
хе.. ну ка давай еще чё нить... интересно =)
а чё ось ща может делать? странично вирт. память?
давай подробней... сриншот GUI (наработки) плизззз...
554
12 декабря 2003 года
Zhilin Mike
159 / / 11.02.2003
Итак новый вопрос

Кто тут уже начал писать ядра, вы их на чем пишите
на асме или на си?
260
12 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Цитата:
Originally posted by Zhilin Mike
Итак новый вопрос

Кто тут уже начал писать ядра, вы их на чем пишите
на асме или на си?



Вот, например, у меня ядро на асме(соблюдены соглашения си), а усе остальное будет на си

2.0K
12 декабря 2003 года
PingOfDeath
46 / / 06.06.2003
Цитата:
Originally posted by Zhilin Mike
Итак новый вопрос

Кто тут уже начал писать ядра, вы их на чем пишите
на асме или на си?



Моно на чем угодно......
Личноя написал на turbo c
А сейчас переписал на spc--.....

PS Real Mode Forever

447
12 декабря 2003 года
CodeWorld
315 / / 05.10.2003
Цитата:
Originally posted by PingOfDeath


Моно на чем угодно......
Личноя написал на turbo c
А сейчас переписал на spc--.....

PS Real Mode Forever



гы..гы... она в реале работает?
хы... как же до тебя в асю достучаться?? вот мля задача....

447
12 декабря 2003 года
CodeWorld
315 / / 05.10.2003
Цитата:
Originally posted by Ramon


Вот, например, у меня ядро на асме(соблюдены соглашения си), а усе остальное будет на си



ой... боже С.... бееее... беее.... простите меня тут немного вырвало =)
слушь..ты ответь на предыдущей вопрос про GUI и т.д.

2.0K
12 декабря 2003 года
PingOfDeath
46 / / 06.06.2003
Цитата:
Originally posted by CodeWorld


ой... боже С.... бееее... беее.... простите меня тут немного вырвало =)
слушь..ты ответь на предыдущей вопрос про GUI и т.д.



Че бее??? Я же для себя пишу...
У меня план таков написать в реал а потом из него в протект нырнуть..
Тобишь все по очереди Не разабравшись с одним зачем браться за другое....???

GUI мне нравиться у ПОЛИТ ОС...

А насчет чтобы всем вместе писать...
Хмм? Только как? Что разделить кто в чем обладает и писать Так что ли??? Представляю как это все будет работать :)
И желательно на разных яхыках

Можете посмотреть ось на turbo c (Только ядро мое)
Не написано А слеплено...
http://fict.by.ru/sources/mythos.zip

Надеюсь ссылка жива :P

447
14 декабря 2003 года
CodeWorld
315 / / 05.10.2003
гы... да ты наверно вместе с Павлом учишься?
так ты мля в асю мож добавишь?
554
15 декабря 2003 года
Zhilin Mike
159 / / 11.02.2003
Кстати .. в реале.. хорошо вещь сначала в нем написать ядро... чисто механизм взаимодействия... а потом лишь заменить некоторые модули...
На мой взгляд си куда не хуже любого другого языка программирования для разработки ядра. Он не уступает асму... и при всем при этом вероятно сделать ошибку в ядре уменьшается.
Кстати вот тут народ что то вокруг всяких мелких вопросов крутится... флудит короче.
А кто нибудь думал вживить в ядрышко.. а точнее не в ядрышко а в модуль файловой системы такую вещь как файрвол... а..
И еще вот тут вопрос поступал насчет порождения процессов... конечно моно копировать старый... а моно и новый исполняемый фаил сразу подгружать...
моно конечно и то и другое реализовать... но может кто нибудь придумает еще более оптимальный вариант.
Еще... что еще хотел спросить.. лано потом.
Не флудите сильно. Михаил.
1.8K
15 декабря 2003 года
gwg605
76 / / 06.03.2003
Цитата:
Originally posted by Zhilin Mike
А кто нибудь думал вживить в ядрышко.. а точнее не в ядрышко а в модуль файловой системы такую вещь как файрвол... а..


А зачем? Можно пояснить идею?

Цитата:

И еще вот тут вопрос поступал насчет порождения процессов... конечно моно копировать старый... а моно и новый исполняемый фаил сразу подгружать...


Насколько я понимаю вы говорите о схеме используемой в Unix, для порожения себя самого?
А зачем копировать, у вас все загружено, надо просто расшарить общий код/данные между старым и новым процессом.

Цитата:

моно конечно и то и другое реализовать... но может кто нибудь придумает еще более оптимальный вариант.
Еще... что еще хотел спросить.. лано потом.
Не флудите сильно. Михаил.



Я предполагал делать следующим образом: есть некий Image (это может быть драйвер, исполняемый файл, длл). Система ведет реестр этих Image-ей. Как происходит загрузка, создается ентри в реестре, выделяется память для заголовка, в эту память мапится заголовок + описание всех секций.
Дальше создается процесс(некая структура с описанием процесса), для процесса создается виртуальное адресное пространство. Дальше в это виртуальное пространство мапятся секции кода и данных по информации из Image entry, в зависиости от типа Image(drv,exe,dll) мапятся в соответствующее адресное пространство. Производится настройка релокейшенов, настройка импорта экспорта. Ну а дальше по обстоятельствам.

Реальная загрузка данных и выделение под них физической памяти будет производится только когда произойдет непосредственное обращение к этим коду/данным (за исключением драйвера).

Когда Image есть в реестре загруженных Images, то создает еще один мап секций этого Image в соответствующее виртуальное адресное пространство, но мапится с доп. аттрибутом CopyOnWrite. Т.е. если страница данной секции уже есть в памяти то она будет использована, пока любой процесс не попытается ее изменить, если попытается то для этой страницы выделится отдельная страница физической памяти, туда скопируется оригинальная страница и изменится информация что данный процесс имеет свою версию этой стрницы. Таким образом код который только читается всегда будет в одном экземпляре.

Это я так побыстрому, там еще куча заморочек технического плана.

Валерий.

447
15 декабря 2003 года
CodeWorld
315 / / 05.10.2003
Цитата:
Originally posted by Zhilin Mike
Не флудите сильно. Михаил.


гы...гы... понитуешься =))))))))))

2.0K
17 декабря 2003 года
PingOfDeath
46 / / 06.06.2003
Цитата:
Originally posted by CodeWorld
гы... да ты наверно вместе с Павлом учишься?
так ты мля в асю мож добавишь?



Скажу по секрету .....

Что Тот Самый Павел И есть...

2.0K
17 декабря 2003 года
PingOfDeath
46 / / 06.06.2003
Да и еще вопрос
Мож у кого есть дока по fat12/32 на русском и поподробнее...
447
17 декабря 2003 года
CodeWorld
315 / / 05.10.2003
Цитата:
Originally posted by PingOfDeath
Да и еще вопрос
Мож у кого есть дока по fat12/32 на русском и поподробнее...



гы..гы... Павел =))))) а нафик те 2 аси? короче есть - найду намылю

2.0K
18 декабря 2003 года
PingOfDeath
46 / / 06.06.2003
Цитата:
Originally posted by CodeWorld


гы..гы... Павел =))))) а нафик те 2 аси? короче есть - найду намылю



Какие две аси???????????????

447
21 декабря 2003 года
CodeWorld
315 / / 05.10.2003
Цитата:
Originally posted by Ramon
URL=http://www.robotronix.narod.ru/download/files/noxy_v0.076.zip]noxy_v0.076.zip[/URL]


ну как с тобой мона связь держать?

260
23 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Цитата:
Originally posted by CodeWorld

ну как с тобой мона связь держать?



Я редко включаю асю и сюда захожу

260
26 декабря 2003 года
Ramon
1.1K / / 16.08.2003
Bochs-2.0.2 - FULL SUXXXXXXXXXXX. Так что если народ кто-то из вас запускал мою ось под ним и она не работала, то во всем виноват он. Это выяснилось недавно, когда я решил проверить этот ср*ный Bochs . Он некоректно эмулирует PCI32 Service и ни хр*на не понимает машино-зависимые регистры проца.
447
26 декабря 2003 года
CodeWorld
315 / / 05.10.2003
Цитата:
Originally posted by Ramon
Bochs-2.0.2 - FULL SUXXXXXXXXXXX. Так что если народ кто-то из вас запускал мою ось под ним и она не работала, то во всем виноват он. Это выяснилось недавно, когда я решил проверить этот ср*ный Bochs . Он некоректно эмулирует PCI32 Service и ни хр*на не понимает машино-зависимые регистры проца.


давайсорцы скорее и расскажи че твоя ось может делать?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог