Дорожные блоки при создании пользовательской операционной системы
Мне кажется, что наиболее распространенный чрезмерно амбициозный проект, который программисты (например, Comp. Sci. grads) пытаются решить, - это создание собственной операционной системы. (Попытка создать свой собственный язык программирования + компилятор, вероятно, еще более распространен, но не настолько амбициозен.)
Для тех, кто (как и я), достаточно глупый, чтобы попытаться: кроме огромного размера, , какие самые большие ошибки или неожиданные препятствия, с которыми вы столкнулись при попытке создать свою собственную ОС с нуля?
Изменить: Отличный вопрос ОС: Какие ресурсы для начала работы в разработке операционной системы?
Ответы
Ответ 1
Имея возможность говорить на основе фактического опыта (AROS, самыми большими препятствиями являются:
- Курица и яйцо (no os ↔ нет приложений ↔ нет пользователей ↔ не могут привлекать разработчиков)
- Почему даже пытаются конкурировать с Windows? Apple не преуспевает, и у них много денег, и Linux не преуспевает, несмотря на огромное и энтузиазм сообщества.
- Большие компании вообще не заинтересованы в том, чтобы принести свои приложения в вашу ОС (Adobe Acrobat Reader, MS Office, Macromedia Flash, Java от Sun). Без них и без хороших альтернатив OSS вы не сможете привлечь пользователей.
- Это займет очень много времени. В моем случае это было примерно 15 лет, чтобы получить 1,0 (и мы еще не на 100%).
- Совместимость. Чтобы получить пользователей, вы должны быть совместимы с тем, что существует (чтобы люди могли продолжать использовать свои данные и т.д.). Если вы совместимы, зачем менять свою ОС?
Итак, если вы планируете писать свою собственную ОС, вы должны подумать об этом:
- Это займет много времени.
- В течение долгого времени вы будете в одиночестве. Мне повезло, потому что у меня было это чрезвычайно фанатичное и преданное сообщество Amiga, которое просто не сдавалось.
- Вы должны найти нишу, где вы можете предложить услугу, которую никакая другая ОС не может предложить.
- Люди, которые могут это делать, часто получают лучшие предложения о работе, потому что восприятие "написания ОС тяжело":)
- Вы станете членом очень маленькой элитной группы программистов, которая может сказать: "Я написал свою собственную ОС, и она может сделать больше, чем распечатать" Hello world! "
Ответ 2
Был там, сделал это. Самым большим препятствием, по крайней мере для меня, были драйверы устройств. Кодирование ядра ОС - это "забавная часть", однако она бесполезна, не имея возможности делать I/O (диск, клавиатура, видео, сеть, по крайней мере). Сегодня, если бы у меня снова было время и желание участвовать в таком проекте, я бы, вероятно, нацелился на Xen VM вместо необработанного оборудования - если ни на что другое, то потому, что он скрывает множество уродливых особенностей x86, а также аппаратных средств. Xen представляет собой хороший унифицированный, независимый от аппаратного обеспечения вид устройств ввода/вывода и по-прежнему дает вам свободу играть с "интересными" частями ОС (мм, управление процессами, синхронизация, прерывания и т.д.).
Ответ 3
Самый большой Roadblock? Я думаю, что когда вы узнаете, сколько пробелов в спецификациях и сколько ошибок есть в различных реализациях.
Серьезно, даже если у вас будут все спецификации для всех компонентов (например, USB, DMA, IRQ, ваш процессор...), вы обнаружите, что: а) некоторые вещи не указаны (например, что происходит, если вы отправляете определенная последовательность вашего USB-устройства), и б) некоторые вещи просто прослушиваются, и вам нужно их обойти (т.е. десятки ошибок в процессоре, которые подробно описаны в исправлениях CPU, которые публикуются как Intel, так и AMD)
Я не знаю, сколько обходных путей для ошибок там в современной операционной системе, но так как Linux и * BSD - с открытым исходным кодом, их драйверы говорят вам много, то есть этот. И ожидаем получить серьезные негативные побочные эффекты, такие как этот.
Итак, если вы попытаетесь написать ОС, будьте готовы много проклинать производителей оборудования и начать терять веру в качество современных ПК: -)
Ответ 4
Я думаю, что многие люди, которые в противном случае хорошие программисты, не знают, как мало они знают о том, как работают компьютеры. Вам понадобится серьезный контроль над основами, чтобы заставить машину загружать вашу ОС с диска, и этот тип знаний довольно распространен в наши дни. В настоящее время вы не найдете полки книг об этом.
Интересно, что несколько недель назад я задал вопрос о SO, который включал в себя тип знаний, который был хлебным маслом серьезных программ для ПК 10-15 лет назад, и один комментатор сказал, что они считают его аппаратным вопрос.
Я вообще не стучу их, но я подумал, что это интересное размышление о том, как изменились навыки.
Ответ 5
Я думаю, что самый большой дорожный блок - это пользователи - пока вы не построите большую часть рабочей системы, у вас вряд ли будут какие-либо пользователи. Без пользователей у вас нет запросов к функциям, отчетов об ошибках и, следовательно, ограниченной мотивации. Тем не менее, даже если вы создаете рабочую ОС, нет никакой гарантии, что вы получите базу пользователей, если вы не найдете крючок, который привлекает людей, - что отличает вашу ОС отдельно, чтобы люди могли попробовать бета-версии, висеть там, где практически нет рабочих приложений, перенесенных на него и т.д.
Вам может быть интересно проверить SkyOS - он был разработан в основном одним разработчиком (теперь небольшой командой разработчиков). Статья в Википедии содержит хорошее резюме. Я думаю, что это хороший пример того, как можно справиться с такой сложной задачей и получиться неплохо. Они сделали некоторые интересные вещи с помощью SkyOS, и это особенно здорово видеть, что в значительной степени это связано с усилиями одного человека в свободное время.
Ответ 6
Написание ОС встречает те же проблемы, что и другие крупные программные проекты.
В нем отсутствуют четко определенные цели, а также проблемы с временной шкалой/оценкой из-за отсутствия опыта.
Также для программиста было бы полезно сначала создать операционную систему типа "hello world", чтобы он/она узнал концепции развития ОС, а затем может сосредоточиться на разработке ОС (а не на концепциях ОС).