Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка операционных систем, процесс загрузки системы 
:(
    Опции темы
BSDyashnik
Дата 12.12.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



хочу изучить ядро FreeBSD. читаю http://www.freebsd.org.ua/doc/ru_RU.KOI8-R...book/index.html

очень многие вещи непонятны:
1) есть ли какие-то строго определенные правила загрузки ядра на x86(если есть, какую литературу почитать)
2) одинакова ли загрузка для разных ОС (понятно, что ядра разные, я имею ввиду сам процесс и сам код загрузки)
3) одинакова ли для разных ОС MBR
4) как я понимаю, для фряхи используется синтаксис AT&T, а каким компилятором компилировать - не знаю
5) что нужно почитать и понять работу процессора для x86(понятно сама суть, что надо загрузить ядро), но непонятно как?
6) если я буду писать свой загрузчик для простенькой программки - не спалю ли я чего? т.е. насколько безопасно
7) очень охота научиться и разобраться с системой с самого начала (пока до ядра), посоветуйте пожалуйста как и с чего начать (на Си писал много, на ассемблере - не писал)
8) будут возникать еще вопросы - прошу тему не закрывать

всем спасибо за внимание
PM   Вверх
Logree
Дата 12.12.2009, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



1. Нет(если не считать за правилос грузить его c PL 0)
2. Как хочешь так и пиши, стандартная схема - первичный загрузчик, вторичный, ядро.
3. Смотря что ты подразумиваешь под  MBR см тут.
4. Gas
5. Intel® 64 and IA-32 Architectures Software Developer's Manual
    wasm.ru
6. Нет. Маловероятно smile
7. Начинай учить ASM без него ни куда.


Это сообщение отредактировал(а) Logree - 12.12.2009, 18:48


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
BSDyashnik
Дата 12.12.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



Logree, благодарю за ответ.

что такое PL 0 ?

несовсем понятно, какой asm учить? учить по мануалам с интеловского сайта? а писать только в синтаксесе для gas. отличается ли gas для фряхи и линукса?

т.е. принципиально для всех ОС работает одна схема загрузки - первичный загрузчик, вторичный, ядро
тогда получается, что отличается только реализация!? но почему же тогда не используется один код загрузки для всех ОС?


если кто читал интеловские мануалы, скажите, той инфы, которая в них есть, достаточна для изучения загрузки ОС или же надо еще что знать из архитектуры именно на программном уровне?


Это сообщение отредактировал(а) BSDyashnik - 12.12.2009, 19:06
PM   Вверх
Logree
Дата 12.12.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Синтаксис значения не имеет лично мне нравиться fasmовский(это немного измененый интеловский), вообще все известные мне книжки по асм используют intel  синтаксис так что лучшебы начать с него.

Privilegen Level 0 - смотри мануал.

Цитата

т.е. принципиально для всех ОС работает одна схема загрузки - первичный загрузчик, вторичный, ядро
тогда получается, что отличается только реализация!? но почему же тогда не используется один код загрузки для всех ОС?

Я просто привёл пример - схема может быть другой, для меня странно что человек "много писавший на C"  задаёт такой вопрос.

Цитата

если кто читал интеловские мануалы, скажите, той инфы, которая в них есть, достаточна для изучения загрузки ОС или же надо еще что знать из архитектуры именно на программном уровне?

Мануалы Intel  не описывают способы реализации ОС, они описывают архитектуру процессора(хотя рекомендации и примеры кода присутствуют), про загрузку компьютера олезно почитать Bios Boot Specification.

PS Ищи сайты по OS Dev'у.

Это сообщение отредактировал(а) Logree - 12.12.2009, 21:13


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
BSDyashnik
Дата 13.12.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



Logree, спасибо за исчерпывающий ответ, пойду изучать.

p.s. по поводу что много писал, так я ж системным программированием не занимался - другое писал

уточнить хотел - что такое OS Dev'у? это http://wiki.osdev.org/Main_Page ?

Это сообщение отредактировал(а) BSDyashnik - 13.12.2009, 01:20
PM   Вверх
Logree
Дата 13.12.2009, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



smile  Я имел в виду любые сайты про разработку операцыонных систем smile


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
BSDyashnik
Дата 14.12.2009, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



взялся за асм, прочитал кучу статей и пришел к выводу, что все вставки в исходный код и отдельные модули (linux & freeBSD) используют синтаксис AT&T, но многие советуют начинать именно с компилятора nasm, потом переходить на as, наверное так и сделаю
PM   Вверх
500mhz
Дата 15.12.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



BSDyashnik
не забивайте себе голову мертвым компилятором (nasm), fasm перспективней и постоянно развиваеться
никто не мешает компилить фасмом obj и линковать gccсшным линкером
или как альтернатива http://www.openwatcom.org/index.php/Download
там интеловский синтаксис в инлайн асме


--------------------

PM MAIL ICQ   Вверх
BSDyashnik
Дата 15.12.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



500mhz, спасибо, с выбором все еще не определился(хотя установил и попробовал все)
суть заключается в том, что под никсами используется синтаксис AT&T, вот, и скорее всего только as годиться, хотя практически нигде в литературе он не используется
PM   Вверх
BSDyashnik
Дата 15.12.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



у меня вот проблема с пониманием некоторых вещей:
например, возьмем реальный режим.
1) пусть сегментные регистры 16 разрядные(пока не дошел до 32 разрядных), тогда адресное пространство от 0 до 65535.
физический адрес, который вычисляет процессор равен сегментный адрес*16 + смещение

вот, вопрос в том, что тут же перекрываются адреса, т.е. если сегментный адрес  и смещение в пределах от 0000 до FFFF, например:
13E5h x 10h + 17h = 13E50h + 17h = 13E67h 
и
13E6h x 10h + 07h = 13E60h x 07h = 13E67h

так получается, что сегментный адрес имеет не весь диапозон от 0000 до FFFF

собственно, как это понять? или может я что недопонимаю?
 

2) когда запускается программа, у нее есть как минимум три сегмента (cs, ds, ss)
не понимаю, каким образом в них записываются адреса соответствующих сегментов и как они разбросаны в оперативной памяти? предполагаю, что это делает каким то образом операционка, ну а если просто эта программа загружается во время загрузки(типа как загрузчик), кто ж тогда нахначает адреса этих сегментов? всю жизнь считал, что исполняемый код представляет некую так сказать абстракцию, и весь это код последовательно загружается в оперативную память и последовательно выполняется(т.е. получается, что код загрузился по какому то адресу, а в сегментные регистры записываются адреса из этого загруженного кода соответствующие адреса сегментов)

ребята, помогите понять что и как, запутался совсем

PM   Вверх
500mhz
Дата 16.12.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



1) все не помню по поводу сегментов давно это было,в реал моде сегмент принятно считать 64 кб, ну не суть важно, короче по вопросу, в режиме 8086 если сделаю seg:0xFFFF + offset:0xFFFF то следуя формуле 
Цитата
физический адрес, который вычисляет процессор равен сегментный адрес*16 + смещение 
  выйду за рамки первого метра памяти но на самом деле адрес будет равен началу первого мегабайта памяти (для простоты это как змея кусаяшая себя за хвост), в реальности при включеной А20 (это такая шняга которая включает 20 битную шину) получим адрес в след метре памяти.  для справки А20=1 по умолчанию на всех процах после 286.

2) тут дело в типе файлов, СОМ - это просто кусок кода (бинарник) размером не более 64 кб без всяких заголовков который ложиться в память с адреса 0х100, у него CS=DS=SS и так далее, естественно значения ставяться операционкой. У ЕХЕ есть заголовок в котором описано из чего он состоит где что лежит и какие значения дать сегментам. Типа так

====Заголовок ЕХЕ=====

====Секция кода======

====Секция данных====

никто не запрещает в ехе слепить все в 1 секцию и присвоить сегментам одинаковый адрес все равно будет работать


--------------------

PM MAIL ICQ   Вверх
BSDyashnik
Дата 16.12.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



500mhz, спасибо за ответ, все равно не понял
вчера прочитал, что действительно, в реал-моде адреса перекрываются

PM   Вверх
500mhz
Дата 16.12.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



ну так что не понял то?

(seg:0xFFFF * 16) + offset:0xFFFF = 0х16FFE9  а на самом деле будет 0хFFE9  так как шина у тебя 16 бит , а вот если включена А20 тогда адрес так и останется 0х16FFE9 потому что с А20 шина имеет 20 бит


--------------------

PM MAIL ICQ   Вверх
BSDyashnik
Дата 16.12.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



(seg:0xFFFF * 16) + offset:0xFFFF = 0х16FFE9 а как это так получилось?


если

0xFFFF * 16 = 0xFFFF0

0xFFFF0 + 0xFFFF = 10FFEF
PM   Вверх
500mhz
Дата 16.12.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



BSDyashnik 
сорри ошибся, но суть та же )


--------------------

PM MAIL ICQ   Вверх
Logree
Дата 16.12.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Цитата

вот, вопрос в том, что тут же перекрываются адреса, т.е. если сегментный адрес  и смещение в пределах от 0000 до FFFF, например:
13E5h x 10h + 17h = 13E50h + 17h = 13E67h 
и
13E6h x 10h + 07h = 13E60h x 07h = 13E67h

так получается, что сегментный адрес имеет не весь диапозон от 0000 до FFFF

собственно, как это понять? или может я что недопонимаю?

Всё правильно smile - сегменты могут перекрываться, сегментный адрес имеет весь диопазон до 0FFFFh (адрес сегмента должен быть кратен 10h)
Пример:
чтобы загрузить программу по физ.адресу 10600h ты можешь
1. занести в сегментный регистр CS=1060h в IP=0000 (на рпямую с IP работать нельзя для этого нужно сделать jmp 1060h:0000h)
2. занести в сегрегистр CS = 1000h в IP=0600h (jmp 1000h:0600h)
в обоих случаях ты попадёшь на один и тот же код, только если ты таким образом передаёшь управление программе для первого случая нужно указать org 0, для второго org 0600h.
Цитата
2) когда запускается программа, у нее есть как минимум три сегмента (cs, ds, ss)
не понимаю, каким образом в них записываются адреса соответствующих сегментов и как они разбросаны в оперативной памяти? предполагаю, что это делает каким то образом операционка, ну а если просто эта программа загружается во время загрузки(типа как загрузчик), кто ж тогда нахначает адреса этих сегментов? всю жизнь считал, что исполняемый код представляет некую так сказать абстракцию, и весь это код последовательно загружается в оперативную память и последовательно выполняется(т.е. получается, что код загрузился по какому то адресу, а в сегментные регистры записываются адреса из этого загруженного кода соответствующие адреса сегментов)


прои загрузке сначала из ПЗУ копируется и запускается код BIOS, а вот он-то и назначает для загрузчика CS=0000h IP(OFFSET)=7C00h
Вообще выше я тебе уже советовал почитать Bios Boot Specification  там про это написано более подробно, ды и эта информация есть практически в любой статье про "написание собственного загрузч(щ)ика" smile



--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
500mhz
Дата 16.12.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



я так понимаю ТС хочет свой мсдос написат, я бы посоветовал смотреть в сторону flat mode (unreal mode)  там и фрейм буффер и памяти вся что есть и адресное пространство линейное


--------------------

PM MAIL ICQ   Вверх
Logree
Дата 16.12.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Цитата

я так понимаю ТС хочет свой мсдос написат

ТС с вами не согласен smile
Цитата

хочу изучить ядро FreeBSD



--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
500mhz
Дата 16.12.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



какая связь между загрузкой , сегментами памяти и ядром которое работает в пмоде и грузиться какимнить лилом или грубом? кстати сорцы последних паблике лежат , да и ядра тоже, изучай нехочу )))) имхо тут завуалированое оседевелоперство )


--------------------

PM MAIL ICQ   Вверх
Logree
Дата 16.12.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



smile Вы слишком много смотрели Коломбо


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
500mhz
Дата 16.12.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



омг!
сударь мы с вами земляки (Тольятти) но я там 11 лет как не живу (я не в России), неужели и туда докатился Коломбо? )))


--------------------

PM MAIL ICQ   Вверх
Logree
Дата 16.12.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Да, отметился smile



--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
BSDyashnik
Дата 16.12.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



спасибо, уже разобрался

целью написать ОС для себя не ставлю, цель другая, хорошо понимать проц, этапы загрузки и функционирование ядра


PM   Вверх
Logree
Дата 16.12.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Это ты сейчас так говоришь ;)


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
BSDyashnik
Дата 17.12.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



 smile 
PM   Вверх
500mhz
Дата 17.12.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



TC увиливает ) 99% умеющих кодить пытались написать свой мсдос )))


--------------------

PM MAIL ICQ   Вверх
GoldFinch
Дата 17.12.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(500mhz @  17.12.2009,  11:29 Найти цитируемый пост)
99% умеющих кодить пытались написать свой мсдос )))

откуда статистика?
PM MAIL ICQ   Вверх
500mhz
Дата 17.12.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



GoldFinch
а что сударь вы попал в 1%?


--------------------

PM MAIL ICQ   Вверх
Logree
Дата 17.12.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



только не мсдос а свою МОГООСЬ.


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
GoldFinch
Дата 17.12.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



500mhz, я не занимаюсь бессмысленными вещами, это же относится и ко многим
PM MAIL ICQ   Вверх
BSDyashnik
Дата 17.12.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 12.12.2009

Репутация: нет
Всего: нет



я рад за тех, кто попал в 99%
только ничего я не пишу, просто изучаю код
а чтоб писать ядро, нужны как минимум огромные знания, хотя б глубокое понимание какого либо ядра
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Linux/Unix"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Linux/Unix | Следующая тема »


 




[ Время генерации скрипта: 0.2001 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.