singlepost

Как создать операционную систему? << На главную или назад  

Народ прошу без издевок, просто интересует вопрос, что нужно знать, что читать чтобы создать свою ось. Слышал надо почитать таненбаума и знать языки асемблер и си++. Свои шутки типа гыы ты ее никогда не напишешь или еще один чокнутый появился, оставьте при себе. Я давно занимаюсь веб-разработкой и знаком с программированием, вот щас у меня освободилось время и 3 годовалая идея по создаю своей оси из теории рвется в практику.

Если есть идеи или опыт подскажите, буду рад любому совету. Нет советов не пишите не засоряйте тему

Заранее всем благодарен

124 ответов в теме “Как создать операционную систему?”

  1. 53
    Нгамдкхе Кверос ответил:

    #53 +1, аналогично, но время даром не прошло, узнал много нового и интересного.

  2. 52
    Евгений Гаврин ответил:

    Тоже хотел в свое время написать ОС. Вырос =)

  3. 51
    Хакер Онлайн ответил:

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

  4. 50
    Хакер Онлайн ответил:

    тоже загорелся, а то противно жить без своей оси , давайте пробовать

  5. 49
    Жека Кирпичев ответил:

    Ярик, у тебя что, дисграфия и браузерный аспелчекерит?

  6. 48
    Ярик Слюсарчук ответил:

    я скжу что с++ тут врядли поможет, для начала надо определить как именно будет проходить любой процес в системе(дать програмам полное управление или зделать какие то библиотеки как в виндовсе),
    ну по проще просто зделать на асамблере програму способную запускатся без операцеонной системи но имело хоть би елементарную досовской текст на екране и при нажатиее какойто кнопки что-би можно било перефатить ето собитие, ну ето хоть то начало с которого можно продолжать, желаю успеха)))

  7. 47
    Vitaly Ch ответил:

    > А возможно ли создать БЫСТРУЮ операционную систему на Лиспе в современных условиях?

    такие уже существуют но поименно не помню. лисп достаточно быстр чтобы конкурировать с С.

  8. 46
    Евгений Безымянников ответил:

    на asm да :)

  9. 45
    Расул Фазлыев ответил:

    А возможно ли создать БЫСТРУЮ операционную систему на Лиспе в современных условиях?

  10. 44
    Нгамдкхе Кверос ответил:

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

    юмористы, не путайте линукс, открытые сырцы и бесплатность, это три большие разницы.

  11. 43
    Алан Миллер ответил:

    Благодарю за поправку и занятный материал.

  12. 42
    Глеб Раздолбаев ответил:

    Торвальдс взял за основу Миникс, написанную Эндрю Танненбаумом для своих студентов. А было это предположительно так:

    [quot]
    Здравствуйте, все те, кто использует миникс -

    Я делаю (бесплатную) операционную систему (это всего лишь хобби, и она не будет большой и профессиональной как gnu) для клонов 386(486) AT.

    Работа над ней началась в апреле и скоро будет закончена.Я бы хотел
    получить отзывы о том, что людям нравится/не нравится в миниксе, ибо моя ОС на неё похожа (такое же устройство файловой системы (из практических соображений)среди всего прочего).

    Я уже перенёс bash(1.08) и gcc(1.40), и всё, кажется, работает. Подразумевается, что практические вещи у меня появятся через несколько месяцев, и я хотел бы узнать, каких особенностей хотелось бы большинству. Любые предложения принимаются, но я не обещаю, что реализую их :-)

    Линус (torvalds@kruuna.helsinki.fi)

    PS. Да, у неё нет никакого миниксовского кода, и у неё есть многопоточная фс.Она НЕ переносима (применяет переключение задач 386-го, и т. д.), и, вероятно, никогда не будет поддерживать ничего, кроме жёстких дисков AT, т.к. это всё, что у меня есть :-( .
    [/quot]

  13. 41
    Алан Миллер ответил:

    Пакет офисных программ сам по себе уже работа не для одного человека. В теори всё возможно, но это тонны работы. Неплохо разобраться с моделью работы никсов(Потому что открыты, и наиболее разделены на составляющие) и погуглить по фразе "Теория операционных систем". С учётом задач поставленных в теории, проектировать ядро. Торвальдс написал ядро Linux бывши студентом(Взяв Unix за основу). Если я не ошибаюсь он развивает его до сих пор. Но обеспечить её необходимой базой даже минимального ПО, если нет гениальной революционной идеи, которая упростит его разработку в десятки раз невозможно для одного человека.
    Надо ещё не забывать, что над этими задачами работают ещё тысячи программистов. Гугл обещает свою ось к 2010ому году. Думаю там не один человек над ней будет трудиться, и наврядли "этот человек" будет откровенно глуп.

    P.S: Не одной операционной системы не видел, где в полной мере были бы воплащены современные требования теории.
    P.S.S: Прошу извинить если всё было сказанно не по разу, осбуждения читать нет времени.

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

  14. 40
    Kitt Wasserfall ответил:

    Menuet новый писать задумал?

  15. 39
    Cyber Max ответил:

    Да ну… ядро это ядро… набор драйверов это другое… прокладка HAL третье… графическая подсистема win32k.sys то четверное…

    Само ядро ntoskrnl.exe ( ну и все его там разновидности мальтипроц/PAE) .. а все остальное просто работает в нулевом кольце… но никак не ядро.

    А за С++ в нулевом кольце… это библиотека DirectX такое может практиковать.

    Ну и часть ядра Windows CE с подсистемами всякими написана на С++

  16. 38
    Vitaly Ch ответил:

    для меня все что на нулевом кольце – ядро по определению.

  17. 37
    Cyber Max ответил:

    >> уточняю – интерфейс приложений к драйверам видюхи в нулевом кольце
    >> реализован на С++.

    Я про ядро говорил… а не про интерфейс драйверов.

  18. 36
    Vitaly Ch ответил:

    > С++ в ядре Винды никогда не пахло!!!

    уточняю – интерфейс приложений к драйверам видюхи в нулевом кольце реализован на С++.

  19. 35
    Иван Горбачев ответил:

    "А "умные" юзверы Линуксы входят в ступор при компиляции драйвера, когда компилятор начинает ругаться на неизвестные методы или елементы структур…"

    Опыт работы с линуксом есть, раз такое говоришь? Я ни разу с подобным не встречался и ни разу не входил в ступор. Может я ядро не с "kernel.org вместе взятыми.." использую? Или дрова ГРАМОТНО написанные? :)

  20. 34
    Cyber Max ответил:

    >> грамотно и на С++ – это не совместимые вещи. ето что надо было курить
    >> чтобы плюсовый код в нулевое кольцо затащить?

    Грамотно и на С… С++ в ядре Винды никогда не пахло!!!

    >> Я рад за него. А ядро он видел, чтобы сравнивать?

    Да ядро видел.. и то что было выложено в инете, и то которое распространяется MS в позновательных целях.

    >> PS Часть ядра NT валяется в нете в свободном доступе – только пользы
    >> с этого никакой.

    Кому как… много интересного можно подчеркнуть, если еще уметь пользоваться IDA и символами

    >>>в >>отличи того же ядра Linux c kernel.org вместе взятыми..
    >> Интересно, а откуда такие сведения?

    На собственном опыте – разработка нормального работающего драйвера под Винды намного легче, чем аналогичного под линуху, когда с каждим новым релизом ядра Линуксы, код приходится адаптировать. А "умные" юзверы Линуксы входят в ступор при компиляции драйвера, когда компилятор начинает ругаться на неизвестные методы или елементы структур…

  21. 33
    Евгений Безымянников ответил:

    ненадо хз кого сравнивать с профи с многолетним опытом и неопытным "студентом" (без обид, но сам вопрос изначально показывает то, что предмет незнаком чуть более чем полностью)
    ненадо сравнивать аналог винды/юникса с непонятной ОС

    для контроллера от Texas, например, операционка 32 килобайта весит и что? на ней и задачи соответствующие выполняются: датчики опрашиваются, данные выдаются в сеть или контроллер usb

  22. 32
    Евгений Безымянников ответил:

    "код html с двумя php-шными вставками со значениями переменной – это реально, а алгоритмического отлаженого кода в 600 строк в день без копипаста – дайте посчупать."
    ну у php это типовые вещи.

    в делфях, к примеру за 3 месяца в программе для радиовещания наколбашено 21 тыс трок.

  23. 31
    Расул Фазлыев ответил:

    МИНИКС-3 от Таненбаума – ядро на ~4000 строк. А вся ось – ~20000 строк.

  24. 30
    Роман Чваников ответил:

    Холеварчег?
    //www.sql.ru/forum/actualthread.aspx?bid=16&amp...

    xD

  25. 29
    Микхаил Владимирович ответил:

    Интересно, а вот прикольно на каждую подобную тему поднимать такую шумиху… а ведь каждый знает, что из этого ничего не получиться)

  26. 28
    Vitaly Ch ответил:

    > #23 принципиально плюсовый код может быть нормально откомпилирован не хуже си, так что гипотетически использование плюса не гарантирует тормознутости… на практике да, обычно тормозней, но всё-равно сейчас уже не на много трансляторы умнее чем 15 лет назад.

    скомпилирован то может быть и может даже работать – но то что с ним тягаются Java и интерпретаторы всетаки наглядно иллюстрируют его тормознутость даже после современных компилеров …

  27. 27
    Нгамдкхе Кверос ответил:

    #23 принципиально плюсовый код может быть нормально откомпилирован не хуже си, так что гипотетически использование плюса не гарантирует тормознутости… на практике да, обычно тормозней, но всё-равно сейчас уже не на много трансляторы умнее чем 15 лет назад.

    #22 "в день реально до 600-800 строк делать, если на php работаем, допустим."

    не верю!
    код html с двумя php-шными вставками со значениями переменной – это реально, а алгоритмического отлаженого кода в 600 строк в день без копипаста – дайте посчупать.

    уснув на клаве можно и больше настрочить за полный рабочий день…
    5к строк кода на си в год это не мало. в принципе если грамотно применять модульное программирование можно раза в два-три больше, но вобще цифра вполне правдоподобная, от задачи конечно многое зависит, но как средняя температура по больнице это близко к истине, ещё 10к строк будут фактически написаны но на тесты для проги в 5к строк…

  28. 26
    Vitaly Ch ответил:

    точно не знаю но вероятней всего. подождем мож уточнит сей момент

    PS Часть ядра NT валяется в нете в свободном доступе – только пользы с этого никакой.

  29. 25
    Иван Горбачев ответил:

    >>Если на то пошло, то ядро Винды написано очень грамотно, в >>отличи того же ядра Linux c kernel.org вместе взятыми..

    Интересно, а откуда такие сведения? Вы видели ядро масдая?

  30. 24
    Vitaly Ch ответил:

    Макс умеет писать дрова для масдая отсюдова вероятно и оттолкнулся.

  31. 23
    Иван Горбачев ответил:

    Я рад за него. А ядро он видел, чтобы сравнивать?

  32. 22
    Vitaly Ch ответил:

    > Если на то пошло, то ядро Винды написано очень грамотно

    грамотно и на С++ – это не совместимые вещи. ето что надо было курить чтобы плюсовый код в нулевое кольцо затащить?

    Грамотно написано было ядро NextStep.

  33. 21
    Евгений Безымянников ответил:

    "Производительность хорошего прогера (без особого копи-паста) – 5 000 строчек в год. Делите и умножайте и да прибудет с вами сила! ))"
    12 строк в день? обезьяна печатает больше :)

    в день реально до 600-800 строк делать, если на php работаем, допустим.
    рекорд 3 тыс за сутки без копипаста.

    "если не опускать руки то через год – 10 из под моих пальцев выйдет таки операционка =)"
    и она морально устареет. у нее будет только одна актуальность – это "никомуненужность"

    "Попробую подитожить"
    надо 20 часов в сутки работать лет 5, что бы вышел толк и стать нормальным программистом, а потом начать писать что либо.

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

    если честно, то афтар не первый школьник, кто затевает нечто подобное.

    колибриОС посмотрите.

  34. 20
    Нгамдкхе Кверос ответил:

    а через десяток инкарнацый глядишь и офисный пакет получится.
    :-D

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

  35. 19
    Cyber Max ответил:

    >> Если не ошибаюсь – в ХР 75 000 000 (75 миллионов) строчек кода.

    Интересно, откуда такие сведения?

    >> если попытатся задействовать болучется нечто кривое на подобие
    >>маздая

    Если на то пошло, то ядро Винды написано очень грамотно, в отличи того же ядраLinux c kernel.org вместе взятыми.. извините конечно, но только полные идиоты меняют ядерные структуры с каждым новым релизом ядра, и обратная совместимость летит ко всем …

  36. 18
    Владимир Павленко ответил:

    Спасибо всем особенно Глебу (*Хрюккиннен*) Раздолбаеву и Роману xenomorf Сидякину. Попробую подитожить, необходимо минимум 1-2 часа в день, хорошая библиотека из книг по железу си и асемблеру и вера с настойчивостью и все обязателньо получится может не завтра и скорее всего не после завтра но если не опускать руки то через год – 10 из под моих пальцев выйдет таки операционка =)

    Еще раз спасибо всем кто учавствовал в обсуждении =)

  37. 17
    Vitaly Ch ответил:

    нормальные люди новые оси пишут путем кросс-компиляции до того момента когда на новой оси начнет запускатся gcc …

  38. 16
    Глеб Раздолбаев ответил:

    Тру хардкодеры пишут по 4 000 строк за выходные:))

    Ось начинается с загрузчика. Загрузчик пишется за вечер. А дальше начинаем играть в увлекательную игру "1984" – воображаем себе, что на дворе 1984-й год, и весь софт, когда-либо написанный для персоналок, состоит из одного этого загрузчика (ну хорошо, есть ещё ассемблер и компоновщик;). И начинается веселуха – напиши себе текстовый редактор, напиши себе интерпретатор командной строки и т.д.

    В ходе этого вылазят вопросы: а как делается распределение памяти и переключение задач; как написать файловую систему; как работать с жёсткими дисками через порты ввода-вывода; как работать с видеокартой, для начала VGA, потом VESA и т.д.

    Полезно почитать Танненбаума, где на большинство вопросов, касающихся ядер и файловых систем, есть какие-никакие ответы; полезно также ассемблер выучить. Хорошая книга Зубков С.В. ассемблер для ДОС, Виндовс и Уних (там заодно и про железо рассказано вкратце). Подробная книга про железо – Кулаков В. Программирование на аппаратном уровне. Хорошо зайти на wasm.ru, там раньше тусовались несколько маньяков, они написали хороших статей.

    И нужна хотя бы пара часов в день свободного времени.

    Понятно, что коммерческая ось (в особенности Национальная Русская ОС) из этого вряд ли получится, но фан всяко будет;)

  39. 15
    Иван Волынкин ответил:

    Тоже была такая идея.. Только писать графф оболочку под DOS. Но когда дело дошло до прямого программирования видеокарты, я забил.

  40. 14
    Микхаил Владимирович ответил:

    Я боюсь, что только год уйдёт на изучение Си, а то от пхп, там только 5% синтаксиса…)

  41. 13
    Vitaly Ch ответил:

    Я писал свою Ось. можно взять OS-Kit – там есть много базовых компонентов. для получения работающей альфы требуется один человеко-год. можеш подключится к проэкту JariOS – его начали в мае прошлого года.

    если же хочеш начать с нуля то надо знать

    1) Железо
    2) Ассемблер для этого железа
    3) С
    4) Make

    C++ и прочий хлам внутри ОС никогда не пригодится. если попытатся задействовать болучется нечто кривое на подобие маздая

  42. 12
    Роман Сидякин ответил:

    Я смотрю, обнадёжили человека… :) )

    То что одному написать аналог Windows XP на несколько десятков миллионов строк кода – это он и так понял (см. топикообразующий пост)…

    Но существуют *nix-дистрибутивы вмещающиеся всего на пару 3,5" дискет… Так что написать свою ОС не на столькоко сложно – на сколько это кажется! (не так страшен чёрт – как его малютка… :) )

    То что это в одиночку довольно тяжело и несколько безсмысленно, это понятно и автору топика. Но на сколько я понял – человек хочет этим занятся не для того чтобы написать какую-то конкретную ОС, по скольку какой-либо чёткой и конкретнойцели у него, судя по его постам, я не вижу. Человек просто хочет довольно скурпулёзно и подробно разобрать (читай – "заглянуть под капот") как работают ОС на низком уровне. Чего и куда там крутится, и что где вертится.

    Рекомендую изучить низкоуровневые языки типа ассеблера и Си (можно и С++ впридачу). Почитать Тоненбаума. Взять дизассемблер, или лучше готовые исходники ядра Linux, написать самостоятельно несколько драйверов, перелопатить несколько видов загрузчиков, и изучить "до самых косточек" несколько файловых систем… Думаю этого хватит на первые 3-5 лет.

    Ну, а позже, как наберётесь достаточно опыта и умений, а так же созреете с тем, что конкретно за ОС и для каких нужд вы хотите написать – думаю вопросов быть не должно (за исключением некоторых частных случаев).

    Just IMHO

  43. 11
    Александр Васюченко ответил:

    Также считаю, что одному писать ось очень очень сложно (может даже не реально). Это ж нужно наверно и свою файловую систему придумать и mbr-загрузчик писать. А чего стоит написать кучу драйверов для каждого устройства?
    И не вижу смылса писать эту ось только под себя. Тогда вы не сможите юзать ПО под другие ОС, если конечно не напишите эмулятор.

    А вообще для написании ОС, нужно обязательно знать Assembler.

  44. 10
    Расул Фазлыев ответил:

    Ну МБР можно спи-ить, например, у МИНИКС. Переделать под свою примитивную ФС и все. А драйверы можно на начальном этапе написать только для консоли и диска.

  45. 9
    Богдан Черненко ответил:

    Если не ошибаюсь – в ХР 75 000 000 (75 миллионов) строчек кода. Производительность хорошего прогера (без особого копи-паста) – 5 000 строчек в год. Делите и умножайте и да прибудет с вами сила! ))

  46. 8
    Расул Фазлыев ответил:

    Здесь посмотри:
    //vkontakte.ru/topic-912_21942156

  47. 7
    Виктор Александров ответил:

    Ты не сможешь. Во всяком случае в ближайшие 2-3 года. Даже начать.
    Почитай курсы по архитектуре ОС. По архитектуре ядра ОС. Планировщи задач, менеджер памяти, абстракция от оборудования, драйверы устройств – это все придется писать с нуля ))). Тысячи задач необходимо решить. И это не считая разработки низкоуровневого софта, компиляторов, исполнимых форматов, файловых систем, стандартныз библиотек для работы нужных программ и т.п.

    Намного более правильный путь – изучить архитектуру unix, и создать свой дистрибутив на основе Linux, благо таких желающих тысячи и как все делать вполне ясно. Это хотя бы продуктивно будет.

  48. 6
    Владимир Павленко ответил:

    Идея интересная но все же хочется стационарную написать чтобы понять принцип всего этого дела а потом уже на нововеенья реагировать и поспевать за ними.

  49. 5
    Владимир Павленко ответил:

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

  50. 4
    Глеб Раздолбаев ответил:

    Прогрессивная общественность уже давно задумывается о браузерной операционной системе;) Ну вот например:
    //www.f1cd.ru/os/reviews/web_operating_system_p...

  51. 3
    Николай Митропольский ответил:

    ну чтоб использовать на вашей ОС си и си++ придется еще компилятор под них портировать ;)

    вообще дело конечно интересное

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

  52. 2
    Woollen Sock ответил:

    а ты ассемблер и си знаешь?

  53. 1
    Владимир Павленко ответил:

    неа я с знаю пхп и аякс

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.