Создание ОС. С чего начать?
Сначала о себе:
Я = :eek:, очень :eek:, очень очень :eek:
Сначала хочу Вас заверить, что я адекватный, отдающий себе отчет в том, над чем и сколько времени буду работать, человек!
- Я намерен заняться созданием полноценной ОС!
- Мои намерения оч. серьезные!
- Я владею С/С++, Знаю, что нужно С и Asm!
- Изучу Asm, как только..так сразу!
- Знаю, что нужно поместить загрузчик в загрузочную область носителя!
- Знаю, что можно написать ОС на С со вставками Asm!
- Скачал исходники многих ОС - Menuet, Kolibri, в том числе ядра Linux 0.94, 0.97, 0.98 и 2.6.32.8.
- Скачал книги "Кейслер. Проектирование операционных систем для малых ЭВМ", "Таненбаум, Вудхалл. Операционные системы. Разработка и реализация", "Таненбаум. Современные операционные системы"!
Что ищу:
- Что-то типа "Руководство по созданию операционной системы"
- Компилятор и описание работы с ним! Я не знаю как приступить к созданию ОС, т.к. не могу скомпилировать код!
- Мне НЕ нужно ничего о том, как организовать файловую систему, структуру данных в памяти и т.п. - я в состоянии реализовать свои ИМХО!
- Мне нужна информация о том, как переключать процессор с одного процесса/потока на другой, как работать с винтом на низком уровне и все в таком-же духе!
Вобщем, мне нужно что-то, что сделает меня способным реализовать полноценную ОС! ЭТО ВОЗМОЖНО! Ведь Линус Торвальдс смог, ведь много осей написано! Что, я глупее? Может быть я не владею знаниями, но прошу Вас помочь мне ими овладеть!
Я понимаю на что иду! Если Вы не в состоянии помочь, воздержитесь, пожалуйста, от комментов, в частности язвительных!
Гугл уже дымится от моих запросов, а результат не радует - никто не знает, что делать или не может толково объяснить, но это и понятно - вопрос создания ОС несколько специфичен!
П.С. Я не воздержан в своём выражении чувств и эмоций.
Тихо, тихо. Спокойней. Как раз мы - и есть самые компетентные люди в таких вопросах. Если вы попробуете воспользоваться поиском по форуму, вы увидите много таких тем. И ваши вопросы там рассмотрены в полной мере. Удачи! :)
потом составляешь спецификацию того , что ты хочешь сотворить .
потом программируешь в соответствии со спецификацией и отлаживаешь пока не заработает .
начать надо с осознания объема предстоящей работы и мозго****, после чего следует перейти к пьянству, затем бросить это гиблое дело и заняться созерцанием порносайтов!
ЗЫ: задавать такие вопросы могут только люди не имеющие ни какого понятия ни о ос, ни об организации эвм, ни о программировании в целом.
Ну и наконец нет такой книги где бы от и до была написана операционная система. Есть книги о архитектуре процессоров - это да, полно. Именно пользуясь документацией можно что-то и написать. Есть исходники других открытых ОС. Напр. Minix.
Реально можно написать ОС реального режима, что-то типа ДОС, создать ядро, и постепенно добавлять в нее новые драйвера для различный устройств.
Если речь идет о ОС с графическим интерфейсом "аля виндовс" - забудь, ты явно не представляешь объем работ. (Разве что пыхтеть 1-2 года над ОС реального режима, а потом в нее добавить клон нортона или волкова,- но я сомневаюсь что после 1-2 года ты вообще что либо захочешь туда добавлять)
Ну и наконец нет такой книги где бы от и до была написана операционная система. Есть книги о архитектуре процессоров - это да, полно. Именно пользуясь документацией можно что-то и написать. Есть исходники других открытых ОС. Напр. Minix.
Таннебаум и Вудхолл. Операционные системы, разработка и реализация.
то чего там нету, умный найдет в справочниках.
Я понимаю на что иду! Если Вы не в состоянии помочь, воздержитесь, пожалуйста, от комментов, в частности язвительных!
Гугл уже дымится от моих запросов, а результат не радует - никто не знает, что делать или не может толково объяснить, но это и понятно - вопрос создания ОС несколько специфичен!
надо сесть и начать что-то делать. а не впустую гуглить и спорить на форумах. читать книги, которые у вас есть и пробовать писать.
дорогу осилит идущий.
иначе вы пополните армию балаболов, которые тут во множестве клепали подобные темы.
дорогу осилит идущий.
иначе вы пополните армию балаболов, которые тут во множестве клепали подобные темы.
Я уже написал загрузчик на asm (компилил на nasm)! Работает, все честно, нарыл кучу документов, много чего перекопал, нашел кучу примеров...
Если Вы считаете, что я не осилю, значит, сами не в состоянии - по себе судите, а время даст знать, кто ошибался, а кто...
Это хорошо. А что именно ваш загрузчик загружает?
Если Вы считаете, что я не осилю, значит, сами не в состоянии - по себе судите, а время даст знать, кто ошибался, а кто...
Интересно, найдете вы в себе силы потом прийти сюда, и прокомментировать это своё высказывание? :rolleyes:
Интересно, найдете вы в себе силы потом прийти сюда, и прокомментировать это своё высказывание? :rolleyes:
Загрузчик ничего не загружает..пока! Выводит текст, читает с клавы... Главное, что он будет работать..как только я выучу ассемблер! С учетом моей самонадеянности это будет длиться не более месяца, а то и меньше!!
Дальше будет самое интересное!
Что касается высказывания: многие считают, что написать ОС не под силу одному человеку. Многие! ...но не все! Как минимум, я так не считаю! И если моя самоуверенность будет оправдана - это будет означать, что я оказался прав, а кто-то ошибся, если нет - :rolleyes: я всеравно ничего не потеряю, а приобрету бесценные опыт и знания! :D
все считают , что для одного человека это довольно сложная и утомительная работа .
а ещё нет смысла делать полноценную ось , к примеру общего назначения , если она не будет конкурентноспособна , поэтому они пишутся в учебно-образовательных целях и до полной готовности всё равно не доводятся .
если же набирать команду для серьёзного проекта , то набирать студентов глупо , а у профи есть свои дела и потому заинтересовать их можно только материально )
да и профи вряд-ли пойдут в команду к студенту .
Если Вы считаете, что я не осилю, значит, сами не в состоянии - по себе судите, а время даст знать, кто ошибался, а кто...
где я написал, что считаю, что вы не осилите?
Начни с постановки задачи, что ты хочешь сделать?
В виде конкретных ТТ (тех. требований).
все считают , что для одного человека это довольно сложная и утомительная работа .
а ещё нет смысла делать полноценную ось , к примеру общего назначения , если она не будет конкурентноспособна , поэтому они пишутся в учебно-образовательных целях и до полной готовности всё равно не доводятся .
если же набирать команду для серьёзного проекта , то набирать студентов глупо , а у профи есть свои дела и потому заинтересовать их можно только материально )
да и профи вряд-ли пойдут в команду к студенту .
Мне кажется, что обсуждение переростает (и не плавно) в дискуссию! Это ни к чему! Писать драйвера для существующих ОС это неинтересно, т.к. в таком случае я буду вынужден использовать то, что есть у ОСи, а для меня это неприемлемо! Кроме того, я уверен, что смогу создать ОС, которая будет соответствовать не пожеланиям неких одноклеточных пользователей, а будет идеальна с точки зрения программиста ( читай "МЕНЯ" )!
Как я уже сказал, я самоуверен, самонадеян! Кроме того хочу Вас заверить, что собираюсь создавать не конкурентоспособную, а полноценную ОСь! Я основательно уверен, что, даже в целях обучения себя, нужно довести дело до конца! А кто знает, может мне удастся создать НЕЧТО:D! Тогда я займусь доведением её до конкурентоспособности, хотя, на мой взгляд, это негативно отразится на её "идеальности"!
Полноценная ОСь, в моем понимании, - это ОСь, которая реализовывает полноценный функционал, т.е. тот, который мы привыкли видеть в винде, линухе, мак оси!
Но человек так устроен, что если просишь не включаться в разговор, все равно напишут "ИМХО в одиночку не справиццо"! :) Может это и хорошо...кто знает? :)
как вариант, могу предложить сразу потихоньку писать ядро и прилегающие к нему приблуды (зависит от выбранной архитектуры), а в качестве загрузчика использовать GRUB. По крайней мере, сэкономишь много сил и энтузиазма.
никто тебе мешать не собирается .
как напишешь - сообщи )
ой пардон... ещё один непризнанный гений...
Следующий вопрос: что значит "полноценный функционал, т.е. тот, который мы привыкли видеть в винде, линухе, мак оси" ?
Функционал - это "функция, определённая на множестве функций". Причем тут ОС ?
А что вы (вас там много?) привыкли видеть в "винде, линухе, мак оси" ?
Окошечки? :D
P.S. к твоему сведению, Линус перед созданием своей ОС довольно плотно был знаком с ОС UNIX. Ты же судя по постам (как в этой теме, так и в др) с трудом отличаешь ОС от приложения Notepad.
Как я уже сказал, я самоуверен, самонадеян!
оу, да ты и в правду крут! трепещу перед твоим могуществом!!!
ладно, допустим ты написал загрузчик, хотя скорее всего тупо скомпилил какой нить, написанный кем то для примера, что дальше?
а дальше тебе надо написать поддержку файловой системы, поддержку оборудования, ядро, компилятор.
Ричард Сталлман разрабатывал операционную систему ГНУ с 1984 по 1990, причем сам он гуру уникс систем, и работал он не один. Да и к тому же, к 1990 году в системе все еще не хватало ядра. Линус Торвальдс разрабатывал ядро линукс с 1985 по 1990. Соединение ядра Линуса и окружения ГНУ Сталлмана дали в итоге знаменитый Линукс.
Ты думаешь, у тебя получиться лучше чем у них? И как бы они знали, что писали, бо в совершенстве со всеми нутряшками знали юникс, а ты даже основ не знаешь.
ЗЫ: модерам, закройте этот дурдом! ;)
ЗЫЗЫ: не смог удержался, просто убило, как вчитался!!!
Компилятор и описание работы с ним! Я не знаю как приступить к созданию ОС, т.к. не могу скомпилировать код!
а ты, блин, думаешь, что для твоей мего оси, которая только в твоем воспаленном мозгу, уже кто то написал компилятор С? его тебе надо написать самому!!! как ты собрался что то писать, если такие элементарные вещи понять не можешь?
Чушь. Первый релиз, выложенный на ftp на всеобщее обозрение, был представлен Торвальдсом спустя несколько месяцев работы. Естественно, это было унылое говно, но это уже другая история...
[QUOTE=Artem_3A]
а ты, блин, думаешь, что для твоей мего оси, которая только в твоем воспаленном мозгу, уже кто то написал компилятор С? его тебе надо написать самому!!! как ты собрался что то писать, если такие элементарные вещи понять не можешь?[/QUOTE]
Ну и ну. Т. е. я правильно понял, что для того, чтобы заняться разработкой ОС, мне сначала нужно написать для неё компилятор ? Вот это уже настоящий ахтунг.
через 50 лет работы вы осознаете что вряд ли угонитсь за ними.
Идеальная ос для разработчика - сформулируйте требования чётче, увидите сколько вам предстоит работы.А потом увидите на сколько "для разработчика" продвинутся уже имеющиеся ОС, пока вы реализуете базовый план
Чушь. Первый релиз, выложенный на ftp на всеобщее обозрение, был представлен Торвальдсом спустя несколько месяцев работы. Естественно, это было унылое говно, но это уже другая история...
настолько унылое, что даже не работало?:D сам Линус называет дату завершения работы над ядром и создания линукс 90е годы, могу ошибаться с точной датой. Правда не читал, что бы Линус говорил дату начала создания ядра, но 84-86 следует из утвеждения Сталлмана, что Линус начал разрабатывать ядро не многим позже создания проекта ГНУ.
Ну и ну. Т. е. я правильно понял, что для того, чтобы заняться разработкой ОС, мне сначала нужно написать для неё компилятор ? Вот это уже настоящий ахтунг.
А вы полагаете, что для разработки ОС, достаточно просто купить интеловский компилятор или скачать gcc? На первом этапе возможно он и не столь необходим и можно обойтись ассемблерами, но все равно писать компилятор придется и это необходимо, или я не прав?
- Это неуловимый Джо!
- Что он так быст?
- Да нет. Просто, он никому не нужен.
Ищите, читайте, спрашивайте, учитесь, и ДЕЛАЙТЕ..а не критикуйте!
В вопросах критики все такие острые на язык, а как дать дельный совет...!
Не Ваше дело (простите), сколько лет я буду этим заниматься )! MenuetOS - написана на одном только асме, если не ошибаюсь! Если думаете "50 лет уйдет", намекните гуглу NanoOS, на С++ (! да-да именно на С++, ну и асме разумеется)! Ее реально написать за две-три недели (это конечно не полноценная ОС)!
Вопрос был задан с целью узнать быстро многие "подводные камни" ОСеписания, а не получить развернутую характеристику меня и моего вопроса! На это тему есть песня Tractor Bowling "Свобода"!
Я написал "..не могускомпилировать код.."! Это чушь! Я думал, что это делается не так, как обычно (а оказалось, что именно так, и ничего "военного" в том нет) А меня сразу грузить начали! А главного так и не сказали. Не по-братски это!
Я хотел получить информацию не от того, который "думает ИМХО", а от того, который "знает"!
Я буду делать то, что посчитаю нужным, но спасибо за внимание.
А не надо гадать - прочтите книгу "Just for fun", писаную самим Торвальдсом. В Интернете есть, кстати, русский вариант. Там он достаточно подробно излагает свою историю, включая даты.
А вы полагаете, что для разработки ОС, достаточно просто купить интеловский компилятор или скачать gcc? На первом этапе возможно он и не столь необходим и можно обойтись ассемблерами, но все равно писать компилятор придется и это необходимо, или я не прав?
Компилятор в данном случае - та же программа пользовательского уровня, как и любая другая, имеющаяся в ОС. Поэтому вопрос о том - "писать или не писать компилятор под новую ОС" - равносилен вопросу "писать или не писать ..(сюда подставить название любой другой пользовательской программы).. под новую ОС". Просто без компилятора разработку нужно будет вести в сторонней ОС (Торвальдс использовал, например, Minix до тех пор, пока gcc не портировали в Linux)
Я хотел получить информацию не от того, который "думает ИМХО", а от того, который "знает"!
Прочитав 4 страницы форума, например я не понял чего Вы хотите. Литературу - Вам посоветовали. Что то еще? Конкретно вопросы желательно задавать.
P.S.
* Что-то типа "Руководство по созданию операционной системы"
* Компилятор и описание работы с ним! Я не знаю как приступить к созданию ОС, т.к. не могу скомпилировать код!
* Мне НЕ нужно ничего о том, как организовать файловую систему, структуру данных в памяти и т.п. - я в состоянии реализовать свои ИМХО!
* Мне нужна информация о том, как переключать процессор с одного процесса/потока на другой, как работать с винтом на низком уровне и все в таком-же духе!
1) есть
2) FASM. Вместе с пакетом ФАСМа идет описание синтаксиса.
3) Отлично!
4.1) (потоки) Так процесса или потока? Ты говорил можешь это организовать сам... Я так понимаю многозадачность хочешь? Физически процессор не может выполнять несколько потоков в одно время. Тебе это надо организовать самому. Ты же это умеешь! ))
4.2) (винты) Через порты.
Есть мнение, что такой, или схожий путь - принесет аффтару несравненно гораздо больше пользы, чем очередное разочарование после мучений над изобретением очередного недовелосипеда?
P.S.
1) есть
2) FASM. Вместе с пакетом ФАСМа идет описание синтаксиса.
3) Отлично!
4.1) (потоки) Так процесса или потока? Ты говорил можешь это организовать сам... Я так понимаю многозадачность хочешь? Физически процессор не может выполнять несколько потоков в одно время. Тебе это надо организовать самому. Ты же это умеешь! ))
4.2) (винты) Через порты.
Спасибки!
Я в курсе! Если бы я и такого не знал, то явно не стал бы ОСь писать!!!:cool:
или написания закрузчика для уже имеющихся ядер типа миникс и написания программного транслятора С для него... и командной оболочки для него, и ещё менеджера задач.. для понятия устройства ОС.... может это даст толчок с чего надо начинать..
Надеюсь ты можеш обьективно воспринимать идеи других идей...
Вот мой набросок последовательно разработки ОС...
-Загрузчик(можно использовать уже готовые со своими доработками)
- Ядро
-- Переход ЦПУ из однго режима в другой..
-- Архетектура памяти
-- ФС(файловая таблица размищения, чтение, запись)
-- Диспечер задач/процессов и распределенние памяти между модулями
-- Функция для возможности работы с переферийными устройствами
-- Возможность использование сетевых устройств
-- Базовые функции ядра
-- Загрузка модулей (так как ядро которое я хотел бы создать базируется на модели микроядер)
-- Разработка некой прослойки между системными и пользовательскими процессами
-- Загрузка Shell'a
- Командный интерпритатор(Shell) (я думаю можно заточить уже готовые типа bash'a)
- Транслятор Асма и С (чтоб не приходилось загружать Винду или Уникс систему для компиляции модулей и програм для твоей системы)
вот так я думую... )))....я знаю у многих это вызовит улыбки....но т. к. я ещё не специалист в этом деле...мне простят мои ошибки))
Надеюсь это поможет автору топика )))))))))