Как написать операционную систему с нуля?
===========================================

 Жду адекватных ответов, а не таких как: тебе заняться не чем, это не реально..и т.д  

В общем интересует какие ресурсы необходимы для написания операционной системы? Какие ЯП необходимо знать, сколько времени примерно может уйти на написание альфа версии ОС, и на сколько это сложно и вообще реализуемо? 

 Я очень давно, лет 17 назад, тоже загорелся идеей написать собственную операционную систему. К тому моменту я довольно хорошо изучил систему MS-DOS изнутри - писал резидентные файловые вирусы, но так сказать, с конструктивной целью - изучения "внутренностей" MS-DOS (ни один из моих вирусов не содержал деструктивных функций). К сожалению, разработка моей ОС дальше загрузчика и драйвера файловой системы не продвинулась, хотя планы были грандиозные - многозадачность и поддержка "громадных" объемов оперативной памяти - на тот момент у меня была 386SX с двумя мегабайтами оперативки :) Писал на Ассемблере. А потом познакомился с Watcom C (который и ныне здравствует, под названием Open Watcom), и интерес к написанию собственной ОС окончательно остыл.  
  

Можно взять исходники любой операционки и "расковырять" их. По поводу "тебе заняться нечем, это нереально" и т.д - реально, даст уникальный опыт и +100500 к респекту в кругах коллег-программистов :) Насчет ЯП - однозначно С/С++. Зная С/С++, изучаешь новый язык, на нём основанный, примерно за неделю. 

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

Учитывая все это, такие системы обычно пишут не совсем с нуля. Пример: QNX. За основу взято юниксовое ядро и переписано под систему реального времени. Теперь они активно продают свою систему для управленя атомными реакторами.  
  

ОС является прослойкой между сторонними программами и железками компьютера. Тут всплывает проблема возможности работы со всем зоопарком железа - для этого нужно создавать под каждую железки драйвер, управляемый вашей ОС. Некоторые производители ОС решили такую задчу с маркетинговой точки зрения - производители железок пишут сами драйвера под их систему. Как собираетесь решать этот вопрос вы? С другой стороны нужно заставить разработчиков писать программы под вашу ОС. Тоже обратите внимание, какие "пряники" предлагают за это другие производители ОС. Тут же, на хабре полно описания этих предложений.  
  

Если же речь идет о создании операционки "для себя", вопросов нет - ваше время и ваше желание. Вам нужно просто проанализировать, какие функции для разработчиков предоставляют другие ОС (в основном это базовые: возможность работать с файловой системой и конвертация данный в файловой системы из/в устроств ввода/вывода и хранения данных.  
  

Так же можно изучить все грабли, сделанные другими: например ту же коллибри, или поискать исходники какого-нибудь ДОСа (Микрософт своей досни опубликовали вроде бы, TR-DOS можно найти и т.п.) или поизучать предтече Линукса - minix (ведь Торвальдс начал именно с нее). А еще лучше присоединиться к какому-нибудь существующему проекту (Minix, Linux, Kollibry, ReactOS) и начать создание чего-либо под них. 

 прошли те времена когда операционку писал 1 человек.  

сейчас для этого нужен коллектив - солидный коллектив 

 Почитайте, что такое операционные системы для начала и теорию по ним. Книжка есть даже такая "Операционные системы". И не будете задавать идиотских вопросов. 

 Я написал операционную систему за 10 минут и понадобилось только немного ассемблера, и представления о том что такое BIOS. ОС ничего не умеет. Ответ на ваш вопрос: потребуется 10 минут, небольшие знания ассемблера, небольшие знания того что такое BIOS и google, короче вполне реализуемо. Вас такой ответ устроит? Мне, по моей наивности может быть, кажется что нет. 

 ReactOS пилится с 98 года, простите, но 16 лет как бы, а их даже бетой сложно назвать.  

Хотите написать свою ОС с "нескучными обоями"?  

Книжки уже посоветовали, а еще понадобиться дофигилиард бабла, потому что единолично это просто не потянуть, а людям, хочется кушать и прочие мелкие радости жизни.   

Язык программирования, ххм C / C++ 

 Автор не написал, **какую задачу решает** и потому ответить на его вопрос без треша невозможно. 

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

В любом случае в двух словах не расскажешь. Если настроены серьезно, придется изучить кучу материала. Наверно самый главный ресурс: [wiki.osdev.org/Main\_Page](http://wiki.osdev.org/Main_Page)  
  

Начать например можно с: [Beginner\_Mistakes](http://wiki.osdev.org/Beginner_Mistakes) и [Getting\_Started](http://wiki.osdev.org/Getting_Started). 

 Операционку сейчас написать легко (все относительно, конечно). Дорого - написать достаточное количество драйверов.   
  

Те компании, для которых это не дорого, столкнулись с таким обломом: нужно найти достаточное количество желающих писать приложения для их операционок. ОС без приложений - кому нужна? Зачем? Самсунг и микрософт изо всех сил привлекают разработчиков, но их успехи космически далеки от андроида, яблочного и GNUсного семейств.  
  

Поэтому, и по ряду других причин, вопрос о написании очередной новой операционки целесообразно поставить с другого ракурса: **а зачем?**  
  

Почему для решения ваших задач нельзя использовать готовые наработки? Вы уверены, что вам нужна именно ОС? Новое ядро? Или только оболочка?  
  

Пожалуй, имеет смысл говорить не столько о финансовых затратах, сколько о культурных достижениях - в ядрах сосредоточены сотни тысяч решений, 30-50-летний опыт. Делать что-то по другому - конечно нужно, но было бы адекватным решением определиться - **что именно и зачем**?  
  

Более прямые ответы:  

- хорошо бы понять, какой именно объем работ подразумевается под написанием ОС? Если не использовать имеющееся, что именно и зачем нужно сделать заново? Хотя можно поспорить, что смысла не имеет...  

- C/C++  

- Присоединяйтесь к опенсорсным проектам. Это лучшая школа, из существующих. Лучше вы нигде программировать не научитесь.  

- Затраты в больших проектах измеряются в человекочасах. 

[На сколько сложно написать свою мобильную операционную систему?](http://toster.ru/q/109473) 

 По-моему, ответы очевидны: 100% нужен ассемблер, ВОЗМОЖНО свяжетесь с Си (хотя я бы выбрал Ди). Ресурсы - документация на проц Интел (есть на любом ассемблерном сайте типа wasm.ru), немного теории операционок (защита, синхронизация, IPC, микроядра).  

По времени - если только "войти в защищённый режим, обрадоваться", то быстро - час от силы. Если с распределителем памяти - долго, +1 мес. На всё остальное ещё по +6 мес каждой технологии, т.к. с каждым разом будет всё сложнее. В итоге, весь пыл проходит месяца за два. :)  

Вам имеет смысл попробовать QNX - там уже много чего написано, причём коммерческого качества и проверенного временем. Да ещё POSIX совместимая. Но там ужасная IDE с ужасным С++. Зато GUI уже написаны. :)  
  

Ещё один интересный вариант - COSMOS: [www.codeproject.com/Articles/220071/Csharp-Open-So...](http://www.codeproject.com/Articles/220071/Csharp-Open-Source-Managed-Operating-System-Quick) - OS на C# 

 Читал, читал коменты, вы все услажняете! Берем ядро ос допустим Linux, но желательно все же свое ядро (в интернете можно найти множество туториалов на эту тему), так как не каждая ос хорошо пойдет на данном ядре. В любой программе типа DevelStudio либо С пишем Desktop (Рабочий стол) ну и туда приколы всякие типа Пуска, нижней панели, вида курсора и тд. Или в Ютубе много уроков) 

 Направьте свои силы в полезное русло и сэкономьте время - присоединяйтесь к уже существующему проекту.  
  

www.Reactos.org - рекомендую. 

 Вот [примерное описание того](http://phantomexos.blogspot.ru/), с чем придется столкнуться