OSDev

для всех
Текущее время: 05 май 2024, 16:04

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 14:42 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
phantom-84 писал(а):
Повторяемся... Зачем постоянно релоцировать приложение, когда было бы вполне разумно в большинстве случаев вообще убрать релоки из основного модуля приложения? Я тоже "инициализирую всё через BIOS с использованием первого мегабайта", но это мне не мешает размещать рабочую часть ядра в верхней части ВАП. Инициализационные секции ядра имеют привязку к младшим адресам, "рабочие" секции - к старшим.


А что мешает строить приложение с базовым адресом в старших адресах, а не в младших?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 14:57 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
SII писал(а):
А у меня ядро может быть вообще где угодно -- иначе на АРМах нормальной жизни не будет. Например, у одних по нулевым адресам лежит встроенная флэш-память, а её не хочется каждый раз переписывать, отлаживая систему, и поэтому грузишь её в ОЗУ куда-то повыше. Ну а у других там именно ОЗУ, ну и т.д. :)
Мы не только о физическом размещении говорим. Если бы мне не нужен был первый мег для других целей, то, отказавшись от уплотнения "рабочих" секций внутри файла ядра, я бы мог их физически оставлять в базовой памяти, но в ВАП все равно размещать вверху. Мне реально релокация ядра пока не нужна (достаточно возможности менять базу ядра путем его перекомпиляции), хотя когда-то была идея иметь переменный размер прикладного пространства в зависимости от тек. потребностей ядра, но пока я этого не сделал.

SII писал(а):
А что мешает строить приложение с базовым адресом в старших адресах, а не в младших?
Невозможность изменения этого базового адреса без перекомпиляции всех приложений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 15:10 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
phantom-84 писал(а):
Зачем постоянно релоцировать приложение, когда было бы вполне разумно в большинстве случаев вообще убрать релоки из основного модуля приложения?

Надеюсь, ты же не собираешься писать ОС со своим форматом исполняемых файлов, в котором присутствует жёсткая привязка к адресам. Если так, то это типичный пример плохо спроектированной ОС. И PE, и ELF нормально релокируются. А самому ядру релокируемость не требуется при любой организации адресного пространства.
Повторю - принципиальных соображений в пользу top-half в нормально спроектированной ОС нет, плохо спроектированной и top-half не поможет, а разводить здесь религиозную войну мне не хочется.

SII писал(а):
Точно нельзя использовать вообще?

Хммм. Ну в принципе можно, но это сопряжено с такими трудностями, что лучше этого не делать. И при любом способе (временный выход из long mode или эмуляция системы команд) такое виртуальное адресное пространство не будет помехой.

SII писал(а):
Не только классический BIOS, но и UEFI?

Вот этого не знаю. С EUFI пока что плотно не работал.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 15:30 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Yoda писал(а):
Надеюсь, ты же не собираешься писать ОС со своим форматом исполняемых файлов, в котором присутствует жёсткая привязка к адресам. Если так, то это типичный пример плохо спроектированной ОС. И PE, и ELF нормально релокируются.
У меня есть формат, поддерживающий релокацию (на достаточно примитивном уровне), и есть формат, в котором она не предусмотрена вообще. Для основных модулей приложений как раз-таки обычно используется последний. Первый используется для либ и для драйверов пространства ядра, т.е. для модулей ядра. Поддержка либ на прикладном уровне пока что проработана не очень хорошо, поэтому это временное решение. Вопрос с выбором универсального формата исполняемых файлов (который, естественно, имеет поддержку релокации) также пока остается открытым. Речь шла не об отсутствии релокации в принципе, а о такой возможности, когда в этом нет особой необходимости.

Цитата:
Повторю - принципиальных соображений в пользу top-half в нормально спроектированной ОС нет, плохо спроектированной и top-half не поможет, а разводить здесь религиозную войну мне не хочется.
Для меня этот вопрос достаточно принципиален. Зачем постоянно выполнять релокацию основных прикладных модулей, когда этого можно практически вообще не делать. Однако с кем-либо воевать по этому поводу у меня тоже нет никакого желания :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 15:37 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Вот и получается, что ты твою систему обобщаешь на вообще. Если что-то плохо для тебя, это не означает что это вообще плохо.
Предлагаю завязать с этим религиозным оффтопом.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 15:53 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Yoda писал(а):
Вот и получается, что ты твою систему обобщаешь на вообще. Если что-то плохо для тебя, это не означает что это вообще плохо.
Нет, ну я ведь сказал, почему это плохо. Если для тебя это не важно, так и скажи. Уверен, другим не все равно, делать релокацию постоянно вхолостую или не делать. И хотят ли они тащить в экзешник релоки в обязательном порядке.

Цитата:
Предлагаю завязать с этим религиозным оффтопом.
Поддерживаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 15:57 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
phantom-84 писал(а):
Зачем постоянно выполнять релокацию основных прикладных модулей, когда этого можно практически вообще не делать


Ещё раз: что мешает строить прикладные программы с базовым адресом в старшей половине адресного пространства, а не в младшей? Никакого перемещения не потребуется ровно так же, как в случае с построением по нижним адресам (естественно, в этом случае при условии, что внизу сидит система).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 16:05 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Цитата:
Точно нельзя использовать вообще? Не только классический BIOS, но и UEFI? А то я в современных ПКшных реалиях плаваю...
Не важно. Всё виртуальное адресное пространство принадлежит разработчику ОС. И ни какие BIOS UEFI о нём не знают и с ним не работают.

По поводу куда мэпировать. Лучше в верх. Фантом правильно написал. Проще ядро поправить чем каждую пользовательскую программу. А пользовательскую вы и не поправите пока её сторонний разработчик её сам не поправит. Согласен с SII что нужно делать релоки. Но ОС должна подстраиваться под программы, а не наоборот. иначе причинно следственная связь нарушается. ОС ставит ограничения приклодная программа диктует свои требования. И вот после ОС уже исполняет эти требования. Иначе архитектура портиться, в том смысле что становиться запутонее и сложнее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 16:12 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
SII писал(а):
Ещё раз: что мешает строить прикладные программы с базовым адресом в старшей половине адресного пространства, а не в младшей? Никакого перемещения не потребуется ровно так же, как в случае с построением по нижним адресам (естественно, в этом случае при условии, что внизу сидит система).
Я уже говорил, что речь идет о гибкости в плане изменения размеров прикладного пространства и пространства ядра. Большинству приложений, привязанных к младшим адресам, пофиг, каков размер прикладного пространства, но они могут спокойно пользоваться бонусами большего, чем обычно, прикладного пространства, когда оно доступно. Также они могут "кое-как существовать" в меньшем или обычном в плане размера пространстве. При этом не нужна ни релокация, ни перекомпиляция исполняемых модулей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Stack overflow?
СообщениеДобавлено: 07 янв 2013, 16:15 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
О перекомпиляции речь не идёт, а релокации необходимы в любом случае. Без релокаций нельзя эффективно разместить динамически подключаемые библиотеки.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB