Python - Операційна система з нуля - CiupaCabra

Мені запропонували вибрати проект для мого курсу операційної системи в моєму університеті. Мене засипала ідея створити операційну систему з нуля в Python.

операційна

  1. Мені лише 3 місяці.
  2. Я хочу зробити це на Python.
  3. Я можу сказати 20-30 годин щотижня.

Я хочу знати, наскільки здійсненна ідея? Наприклад, як далеко я можу зайти в будівництві того самого. Я був би дуже радий, якщо б я зміг запустити базову версію (щось із декількома базовими запущеними додатками.) Це можливо з урахуванням обмежень?

Чи є книга, яка може допомогти мені як керівництво? (це не повинно бути для Python, мені просто потрібен посібник, який повідомить мені, як мені робити розробку ОС)

Якщо ідея нездійсненна, хтось може сказати мені, наскільки мені потрібно, щоб зменшити свою ідею?

Будь-яка допомога дуже вдячна!

11 відповідей

Масштабуйте це багато. Я б порекомендував переглянути дуже маленький фрагмент операційної системи, який ви хотіли б зробити, можливо паралельну обробку. Немає реального способу написати всю операційну систему менш ніж за 500 годин, всього за 5000 годин. Справжнє питання полягає в тому, чи це ступінь бакалавра чи аспірантура? Відповідь на це дуже відображатиме, що потрібно для проходження.

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

Чи є у вашого викладача "низький" компонент у проекті? Наприклад, все, що стосується апаратного забезпечення чи архітектури інструкцій. Якщо так, ваш вчитель не дозволить вам виконати проект на Python. Проект повинен бути написаний на мові C та змонтований. І ви завжди будете працювати над зміною ядра Linux.

Однак поточна операційна система більше не обмежується низьким аспектом. Віртуалізація, база даних, розпаралелювання побудовані поверх операційної системи. Якщо ваш учитель "стара школа", то він/вона не може розглядати ці нові предмети як частину операційної системи. Тож, можливо, вам доведеться донести кілька ідей для тестування до свого вчителя та шукати роз’яснень.

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

Хороший проект міг би включати одне або декілька з:

  • Введення-виведення
  • Зберігання
    • Вирішення, що кешувати/передбачення, що попередньо завантажити
  • Запуск/керування/реєстрація завдань (процесів, потоків або функцій Python), локально або віддалено
  • Управління ресурсами
    • Вимагайте, щоб кожен процес давав оцінки того, скільки пікової пам'яті буде використано, і регулярно повідомлятимуть відсоток "прогресу" протягом усього їх виконання, який потім можна буде використовувати разом для оцінки використання ресурсів
  • Спілкування
  • Паралельність

Проектом, який не взаємодіє безпосередньо з апаратним забезпеченням, але був би хорошим проектом, буде:

  1. Якщо ваш проект передбачає абстракцію операційної системи до програм, які будуть працювати "всередині" вашого проекту
    • Іншими словами, "програми" покладаються виключно на ваш "проект операційної системи" щодо своїх операцій вводу-виводу, зберігання, управління завданнями, ресурсів та потреб у зв'язку
  2. У вашому проекті ефективно (ефективно, вимірювано) використовується реальна операційна система (Windows, Linux тощо)

Тоді це буде хороший дизайн операційних систем, незалежно від використовуваної мови.

Я б запропонував застосувати власну систему memcached, зменшення карти або просту систему контролю версій як приклади хорошого проекту.