Операционная система с нуля
Меня попросили выбрать проект для моего курса операционной системы в моем университете. У меня возникла идея создать операционную систему с нуля на Python.
У меня есть несколько ограничений:
- У меня всего 3 месяца.
- Я хочу сделать это на Python.
- Я могу сказать 20-30 часов в неделю.
Я хочу знать, насколько это возможно? Например, как далеко я могу пойти в том же здании. Я был бы очень доволен, если бы я смог запустить базовую версию (что-то с несколькими очень запущенными приложениями.) Возможно ли это с заданными ограничениями?
Есть ли книга, которая может помочь мне в качестве руководства? (не обязательно для python, мне просто нужно руководство, чтобы рассказать мне, как мне нужно делать ОС)
Если идея не осуществима, может ли кто-нибудь сказать мне, сколько мне нужно, чтобы уменьшить мою идею?
Любая помощь очень ценится!
Ответы
Ответ 1
Увеличьте это. Я бы порекомендовал взглянуть на одну очень маленькую часть операционной системы, которую вы хотели бы сделать, возможно, на параллельную обработку. Невозможно, чтобы вы могли написать всю операционную систему менее чем за 500 часов, пусть всего 5000 часов. Реальный вопрос заключается в том, что это для бакалавриата или аспирантуры? Ответ на это будет в значительной степени отражать то, что необходимо пройти.
Добавление
Возьмите книгу по теме об операционной системе, которая вас интересует, и сосредоточьтесь на ней в течение 3 месяцев, и вы можете просто создать что-то хорошее. Операционные системы могут показаться, что они не делают много снаружи, но думают об этом таким образом, Windows имеет ~ 50 миллионов строк кода.
Ответ 2
Требуется ли вашему профессору "низкоуровневый" компонент в проекте? Например, все, что касается аппаратного обеспечения или архитектуры команд. Если это так, ваш профессор не позволит вам выполнять проект в Python. Проект должен быть написан на C и сборке. И вы всегда будете работать над модификацией ядра Linux.
Однако в настоящее время операционная система больше не ограничивается аспектом низкого уровня. Виртуализация, база данных, распараллеливание построены поверх операционной системы. Если ваш профессор является "старой школой", он может не рассматривать эти новые темы в составе операционной системы. Таким образом, вам может потребоваться принести некоторые образцы идей вашему профессору и получить разъяснения.
Следует ли идти на низкоуровневые, как предполагали некоторые, полностью зависит от образовательных целей профессора.
- Для обучения базовым конструкциям параллельного программирования, таким как события, семафоры и мьютексы. Это можно обучить, написав несколько многопоточных приложений. Это, возможно, слишком просто, как цель для класса ОС. Тем не менее, это фактически самый "продаваемый" навык, который вы получите от класса.
- Вариант этой темы - научить, как "использовать" особый вкус API-интерфейсов ОС.
- Чтобы научить писать приложения, которые эффективно используют операционную систему. Это может потребовать, чтобы вы реализовали некоторые алгоритмы, основанные на ОС начального уровня, внутри "имитируемого OS-проекта" (например, в Java или Python, также могут быть на С++). Каждый аспект может быть изучен в отдельных проектах/симуляторах без использования полномасштабной ОС.
- Например, чтобы научить эффективно использовать кеш файл, необходимо, чтобы ученики играли с кешем файлов игрушек с использованием простого алгоритма.
- Для обучения аппаратного аспекта операционной системы (включая уродство), а именно, как она взаимодействует с архитектурой набора команд и аппаратным вводом-выводом. Обычно это делается с помощью "встроенной системы" с небольшой макетной доской.
- Учить реальные алгоритмы, используемые в современной операционной системе. Это потребует большого количества считывания бумаги, а также реализации нетривиального алгоритма внутри реального ядра Linux. Этот уровень подходит для обучения выпускников.
Хороший проект будет включать один или несколько из:
- Ввод/вывод
- Хранение
- Решение о том, как кэшировать/предсказывать, что нужно предварительно загрузить
- Запуск/управление/протоколирование задач (процессов, потоков или функций Python), локально или удаленно
- Управление ресурсами
- Требовать, чтобы каждый процесс давал оценки того, сколько пиковой памяти будет использоваться, и регулярно сообщать процент "прогресса" на протяжении всего их выполнения, а затем может использоваться вместе для оценки использования ресурсов
- Связь
- Concurrency
Проект, который напрямую не взаимодействует с оборудованием, но будет хорошим проектом, будет:
- Если ваш проект обеспечивает абстракцию операционной системы приложениям, которые будут запускать "внутри" вашего проекта
- Другими словами, "приложения" полагаются исключительно на ваш "проект операционной системы" для своих операций ввода-вывода, хранения, управления задачами, ресурсов, связи.
- Ваш проект делает хорошее (эффективное, измеримое) использование реальной операционной системы (Windows, Linux и т.д.)
Тогда это будет хороший проект операционных систем, независимо от используемого языка.
Я бы предложил реализовать вашу собственную memcached, map-reduce или простую систему управления версиями в качестве хороших примеров проектов.
Отредактировано: удален ranting
Ответ 3
Я не понимаю, как вы думаете, что вы можете написать операционную систему на Python. Вам нужен собственный код, чтобы хотя бы загрузить интерпретатор во время загрузки, не говоря уже об аппаратной связи, драйверах и т.д., И все это было бы почти невозможно сделать при использовании существующих интерпретаторов Python при работе на голой машине. Я также размышляю, если вам известно, что вам придется переносить заданный интерпретатор Python для компиляции и запуска без базовой операционной системы, которая сама по себе заставит вас заняться какое-то время.
Хорошо, что вы амбициозны, но я, честно говоря, думаю, что вы не можете даже закончить основную операционную систему, не говоря уже о "некоторых очень простых приложениях".
Ответ 4
Вероятно, вы не можете сделать это за один семестр.
Если вы хотите сделать что-то похожее, ознакомьтесь с операционной системой Solo, созданной Per Brinch Hansen и его учениками в Caltech. Они все это писали в Concurrent Pascal, производном Паскаля, разработанном Бринчем Хансеном.
Источник для Solo доступен в Brinch Hansen "Архитектура параллельных программ" . (ссылка на PDF всей книги) Вашему профессору ДОЛЖЕН иметь копию. Ваша университетская библиотека должна иметь копию. Иногда копии появляются на Amazon.
Или вы могли бы сделать версию Brinch Hansen RC4000 Nucleus. (Google - ваш ДРУГ.)
Ответ 5
Вероятно, вы можете закодировать небольшую встроенную ОС в указанный вами период времени, используя концепции, которые старше десятилетия. Многие новые операционные системы требуют гораздо более сложного планирования и эвристики управления памятью, чем это было бы типично для небольшой встроенной ОС; проектирование всей современной ОС было бы не практичным проектом с одним человеком, но можно было бы сделать что-то интересное с некоторой подсистемой. Я лично считаю, что есть место для улучшения флеш файловых систем, но я не знаю, что подумает ваш проф. Что ваш проф действительно ищет?
Ответ 6
В нашем университете у нас есть курс операционной системы, где мы тоже должны что-то развивать на Linux. Не вся ОС. Мы разработали собственную политику планирования и файловую систему для Linux. Но это будет сделано в C, так как linux находится в C.
Ответ 7
Я знаю... идея довольно игривая. Даже у меня был этот опыт (на некоторое время: p).
Но на самом деле, когда вы вникаете в него, вы понимаете, какое большое слово вы только что сказали. Я не хочу говорить, что вы не можете создать ОС. Потому что я верю в то, что скрываю недостижимые мечты. Причина в том, что это поможет вам быстрее учиться.
В любом случае, ПИТОН? па. Переходим к C.
- Читать (принципы): Системные процессы
& Амп; услуги.
- Запись (код): Практика и привыкание
для кодирования. Использовать язык как инструмент, а не
навык.
- Узнать (из ошибок): это
лучшая вещь. У вас будет ОС, если
вы узнаете frm dem.
Я бы посоветовал не тратить ваши 3 месяца на поиски, как создать ОС за 3 месяца и, скорее,
Также, делая вещи, которые говорят, что работа, которую вы пытаетесь, является куском пирога.
например: http://linuxologist.com/1-general/create-your-own-linux-distro/
Даже этот заголовок вводит в заблуждение и обескураживает.
Все, что сказал. Лучшее из удачи:)
Ответ 8
Узнайте, что другие люди сделали в мире операционных систем. В дополнение к упомянутым выше книгам загрузите источник ядра linux linux и начните его изучать: http://www.kernel.org/. Книга Роберта Любэ по ядру Linux, Linux Kernel Development, даст вам отличный обзор всех частей, связанных с ядром.
Основное внимание будет уделено тому, как планировщик O (1) работает в новых ядрах, поскольку планирование - это лишь одна из многих и основных проблем, возникающих при написании операционной системы.
Ответ 9
Возможно создание операционной системы на Python . Однако вам может потребоваться выбрать C или Assembly, потому что на этих языках создана база огромная.
Ответ 10
lol, мне это напоминает
http://www.getacoder.com/projects/programming_c_87390.html
Создание полной ОС, такой как Windows или Mac или Linux, столь же сложно, как создание MMORPG.
Может быть, вы должны сделать простейшую ОС, которая позволяет вам успешно загружать и запускать некоторые простые сценарии командной строки, например, как работает DOS, но в Python и запускает Python.
Ответ 11
Приятель, вот ответ, который вы искали:
Написание операционной системы не отличается от написания любого другого приложения, на самом деле это намного проще, чем писать любой другой код по той причине, что операционная система является ПОЛЬЗОВАТЕЛЬНЫМ ПОЛЬЗОВАТЕЛЕМ или что подразумевается как платформа... и вы знай!.
Все предыдущие из них Чрезвычайно полезны!, а ВСЕ ПРЕДЫДУЩИЕ, ВКЛЮЧАЯ ЭТО ОДИН, ПОМОЖЕТ ВАМ КОДИРОВАТЬ ВАШЕГО О.С. фактически менее чем за три месяца.
Пожалуйста, постарайтесь быть объективными и избавиться от отрицательных ответов (это просто разбор ума...)
Разработчик программного обеспечения действительно CODE EVERYTHING, который приходит ему на ум! (в моем случае я был разработчиком программного обеспечения SUPERB до тех пор, пока у меня не было мозговой аварией и в течение значительного периода страдала гипоксией... не хочу говорить дальше об этом... меня травмировали...)...
Давайте говорить ясно:
Если вы хотите построить O.S. сделайте следующее и начните СЕГОДНЯ!:
-
Определите, хотите ли вы написать SHELL или хотите написать CORE O.S.;
-
Планирование основных функций O.S., процессов и т.д.
-
Выберите уровень, на котором вы хотите его построить:
-
ОЧЕНЬ НИЗКИЙ УРОВЕНЬ (требуется язык сборки, а также проблемы с памятью, процессором и ОБОРУДОВАНИЕМ), НЕОБХОДИМЫЕ ТАКЖЕ - НЕ ПРИНИМАЮТСЯ В МЕСЯЦЕ ТРИ МЕСЯЦА... ОН НЕТ!...)...
-
Средний уровень (здесь вы можете использовать решение STANDARD, которое является языком программирования C!);
- Высокий уровень (это уровень, который вы, возможно, захотите использовать Python, означает, что вы будете использовать ВСЕ те же ресурсы и оболочки, которые вам предлагают операционные системы, будь то любое распределение Linux или UNIX (R) Windows (R), CP/M (R) или любые другие известные до настоящего времени);
Из-за времени, необходимого для его создания, я должен предположить, что вы выполняете работу в колледже, чтобы зарабатывать кредиты... и все же в случае, если вы работаете в корпорации, или если вы работаете на себя или ваш собственный генеральный директор, вы должен иметь ресурсы, назначенные этому проекту... Предполагаю, вы строите его для академических!
Представьте, что вы пишете оболочку, которая облегчит запуск вашей работы, и, пока вы пишете оболочку, ваш ум должен рисовать реальное ядро, наряду с адресацией и наряду с процедурами самого низкого уровня...
Я думаю, вы можете знать MS (R) -DOS (R). Версия 3.3 является одной из самых простых и обогащающих (педагогически говорящих) операционных систем, когда-либо созданных и опубликованных корпорацией Microsoft (r). Пожалуйста, проявляйте творческий подход, не клонируйте это, просто вдохновляйте на это внимание, а затем создавайте что-то свое Профессор или конечный потребитель будет восхищаться и наслаждаться!.
Не забывайте, что мы находимся в эпоху графического интерфейса пользователя, поэтому не входите в текстовые сообщения, хотя ASCII по-прежнему является самым красивым выражением возраста компьютера, вы можете играть с обоими интерфейсами.
Как только вы начнете работать с Top на Dowm, вы узнаете, как легко создавать подпрограммы на языке высокого уровня, и как только вы его построите и отлаживаете, возможно, вы ускорите создание CORE os. то есть: загрузка, управление памятью и т.д....
Не вмешивайтесь в дело с перерывами, или вы можете в конечном итоге потерять энтузиазм НЕПРАВИЛЬНО!... Оставьте ПОДЗЕМУ O.S. заниматься и заботиться о прерываниях.
Менее чем за три месяца у вас будет свой первый прототип, и тогда вам нужно заставить его работать хорошо (чтобы отладить его, я имею в виду!). Превосходите себя!
Если вы работаете с SOLO, вам нужно будет написать руководство, ЭТО ПРИНИМАЕТ УДОБНО ДРАГОЦЕННОЕ ВРЕМЯ, ЧТО НЕ ХОТИТЕ ПОТЕРЯТЬ... Мой совет (пожалуйста, не смейтесь, я использовал эту технику, и это сделало сегодня Magnate зарабатывает МИЛЛИАРДЫ ) ЗАПРЕЩАЕТСЯ В БУМАГЕ, ОБРАБОТАННЫЙ ВСЕ, ДОКУМЕНТАЦИЯ (ЭТО ПОСМОТРЕТЬ, ЧТО ВАШЕ КОЛИЧЕСТВО МОШЕННИЧЕСТВА МОТИРА - ФАКСИС! И ДАЖЕ ЭТО НЕ РАВНО СКОРОСТЬ ВАШИХ МЫСЛЕЙ, ЧТО ЯВЛЯЕТСЯ ЖЕСТКОЙ КОПИРОВАТЬ, ЧТОБЫ ДОЛЖНО ПОЛУЧИТЬ УБЕДИТЕСЬ, КОМПЬЮТЕР И РЕДАКТИРУЙТЕ ЭТО МАРШРУСУЮ-МАТЕРИ. A.PDF С ИЛЛЮСТРАЦИЯМИ, В РАМКАХ С ВИДЕО БУДЕТ РАЗРЕШАТЬ И УДАЛИТЬ ГЛАЗА КОНЕЧНОГО ПОТРЕБИТЕЛЯ!.
Помните, что создание первого месяца должно быть фактически SHELL основных функций, которые операционная система BASIC должна доставить пользователю:
- Командный процессор;
- Список файлов в каталоге;
- Создание/редактирование и удаление файлов;
- Создание/редактирование и удаление каталогов;
- Доступ к дисковым устройствам (дискетам, компакт-дискам, жестким дискам, флэш-накопителям и т.д.);
- Обновление и отображение информации на экране!;
Я бы сосредоточился главным образом на предыдущем, а затем ЧТО-НИБУДЬ другое легко получается благодаря созданию обогатительных подпрограмм (поверьте мне, эта фаза вызывает привыкание, и у вас не будет БОЛЬШЕ жизни, когда вы достигнете этой позы для вас, выйдут замуж за этот проект, и вы больше никогда его не покинете), не бойтесь, это будет работать!.
Представьте свою операционную систему, и если ваши ожидающие растущие фонды появятся или если ваш ожидаемый рейтинг получит более высокий рейтинг, который вы ожидаете, вы можете продолжать расширять свой проект, а затем строить его в более прочное, надежное и устойчивое приложение!.
Представьте себе, что вы используете эту платформу в качестве истца для любого оборудования, с которым вы можете работать: ROBOTS, AUTOS; САМОЛЕТЫ; ДИСТАНЦИОННОЕ УПРАВЛЕНИЕ; ETC...
Я знаю, что вам понравится это задание, и я знаю, что вы будете развлекаться! Только настоящий программист имеет такие амбиции!
Бог благословит Америку!
KnowBuddy