Python - Операционна система от нулата - CiupaCabra

Бях помолен да избера проект за моя курс по операционна система в моя университет. Бях бомбардиран с идеята да направя операционна система от нулата в Python.

система

  1. Аз съм само на 3 месеца.
  2. Искам да го направя в Python.
  3. Мога да кажа 20-30 часа всяка седмица.

Искам да знам доколко е осъществима идеята? Например колко далеч мога да стигна в изграждането на същото. Ще се радвам много, ако успея да стартирам основна версия (нещо с няколко съвсем базови работещи приложения.) Възможно е с дадените ограничения?

Има ли книга, която може да ми помогне като ориентир? (не е задължително да е за Python, просто се нуждая от ръководство, което да ми каже как да продължа да правя OS)

Ако идеята не е осъществима, някой може да ми каже колко трябва да намаля идеята си?

Всяка помощ е много благодарна!

11 отговора

Мащабирайте това много. Бих препоръчал да разгледате много малка част от операционната система, която бихте искали да направите, може би паралелна обработка. Няма възможен начин да можете да напишете цяла операционна система за по-малко от 500 часа, само за 5000 часа. Истинският въпрос е дали това е за бакалавърска степен или аспирантура? Отговорът на това много ще отразява какво е необходимо, за да се премине.

добавяне
Вземете книга по тема за операционната система, която ви интересува, и се фокусирайте внимателно върху нея в продължение на 3 месеца и може просто да създадете нещо добро. Операционните системи може да изглеждат като че ли не правят много отвън, но мислете за това по този начин, който има Windows

Има ли вашият учител "нисък" компонент в проекта? Например всичко, което се занимава с архитектура на хардуер или инструкции. Ако е така, вашият учител няма да ви позволи да направите проекта в Python. Проектът трябва да бъде написан на C и монтиран. И неизменно ще работите върху модифицирането на ядрото на Linux.

Сегашната операционна система обаче вече не се ограничава до ниския аспект. Виртуализацията, базата данни, паралелизацията са изградени върху операционната система. Ако вашият учител е "старо училище", тогава той/тя не може да разглежда тези нови предмети като част от операционната система. Така че може да се наложи да занесете няколко идеи за тест на вашия учител и да потърсите разяснения.

Дали това е ниско ниво, както някои предполагат, зависи изцяло от образователните цели на учителите.

Един добър проект би включвал едно или повече от:

  • Вход изход
  • Съхранение
    • Взема решение какво да кешира/предсказва какво да зареди предварително
  • Стартиране/управление/регистриране на задачи (процеси, нишки или функции на Python), локално или отдалечено
  • Управление на ресурси
    • Изисквайте всеки процес да дава оценки за това колко пикова памет ще бъде използвана и да отчита редовно процент на "напредък" по време на тяхното изпълнение, който след това може да се използва заедно, за да се правят оценки за използването на ресурсите
  • Комуникация
  • Съвпадение

Проект, който не взаимодейства директно с хардуера, но би бил добър проект, ще бъде:

  1. Ако вашият проект осигурява абстракция на операционната система към приложенията, които ще работят "вътре" във вашия проект
    • С други думи, „приложенията“ разчитат единствено на вашия „проект на операционна система“ за своите I/O, съхранение, управление на задачи, ресурси, комуникационни нужди
  2. Вашият проект прави добро (ефективно, измеримо) използване на реалната операционна система (Windows, Linux и т.н.)

Тогава това ще бъде добър дизайн на операционните системи, независимо от използвания език.

Бих предложил да приложите вашата собствена memcached система, map-намаляване или проста система за контрол на версиите като примери за добър проект.