Как написать свою операционную систему на python

I have ported Python interpreter to run in my operating system as a userspace program, it was the first program — and so far the only — that I ported; from this experience, I’d say it would certainly possible to write lots of the operating system functionality in Python; you can certainly even embed Python in the kernel with rather minimal feature support.

However you need to write assembly and C for the interrupts, low level memory management and so. In my case, I built a specially modified Python 2.5.2 against the Newlib C library; in minimal case you just need to provide heap memory management for the Newlib library, and you can have Python running on top of it.

As such, Python interpreter does not contain its own heap implementation, and it does depend on the C library, so you cannot run it on bare metal right away, but much more of the operating system kernel as is conventionally written, could also could be written in Python.

The special case of course are the microkernels, where much of the functionality is in userspace as services; these can be more naturally implemented in any preferred programming language, Python included.

Вопрос интересный. Из серии дискуссионных.

Сходу я-бы тоже написал — нельзя. Потому что не делают ОС на питонах обычно. Но
давайте раздвинем границы и порассуждаем.

Что такое ОС и вообще из каких частей она состоит? И какие к ней требования?
Когда говорят о написании ОС — то обычно имеют в виду некий эксперимент или чью-то
курсовую или дипломную работу в результате которой появляется нечто. И это нечто
имеет загрузчик. Загружается с флешки или диска. Содержит базовые средства
ввода команд (шелл). Управляет хотя-бы сетевым интерфейсом и дисками. И умеет
запускать хотя-бы 1 экспериментальную программу написанную для ЭТОЙ-же ОС.
А иначе — какой смысл вообще делать ОС под которую нет программ.
обладает небольшими размерами. В самом деле. У вас же не Debian чтоб
тащить пачку DVD дисков? Какие размеры кода генерит Python. Ну он вообще не генерит
кода как такового. Хотя возможно с использованием CPython мы сможем собрать
некий бинарник но здесь надо пообсуждать его недостатки. Размеры. И потенциальные
уязвимости самой архитектуры. Если в коде существует точка где можно вызвать eval — то
это уже потенциальное место для хакеров. Тут — требуется обсуждение с людьми которые
чуть больше знают чем я в инфо-безопасности. Передам им слово.
обладает высокой производительностью. Близко стоит к железу и не имеет никаких
посредников. Тоесть между ОС и железом не должно быть никаких прослоек. Какой длины
стек технологий стоит между Python и железом? ХЗ. Пускай знающие пояснят. С моей точки
зрения Python близок к Lisp или к JavaScript по духу и по идеологии. А надо быть близким
к C++, Rust e.t.c. Мультизадачность опять-же до кучи. Ее эффективно можно реализовать
только если код-быстрый.

Из творческих экспериментов о которых я слышал. ОС — Beos. Была написана много лет
назад на ООП языках как ОС для мультимедиа (?) или для чего-то там подобного. В настоящий
момент считается мертвой.

Еще была Singularity OS. Написана на ДотНете. Больше ничего о ней не знаю. Просто
читал когда-то в журнале. Сильно удивился. Дай бох. Если так можно то хорошо. Кто знающие
в теме — проясните ее статус на данный момент.

Еще слышал о том что дедушка Никлаус Вирт в своё время тоже создавал ОС. На базе Оберон.
Причем у него там были воплощены много его мечт и чаяний. Всякие модули. Динамические
библиотеки. UI был абсолютной свой. Я смотрел на презентации. Не впечатлило. Хотя уважаю
такую последовательность и упорство. Кто пользовался или устанавливал — просвятите.

Любые клоны Линукс. Да они являются осями но их создатели не закладывали никаких
усилий по разработке их ядра. Можно ли их рассматривать в данном топике? ХЗ. Я-бы не стал.
Есть известная ОС BolgenOS которая стала мемом. Ее создатель очень много потратил на само-пиар
и очень мало на разработку. Его усилия заключались во взломе всех текстовых надписей и копирайтов
а также картинок и обоев в типичном дистрибутиве Линукс. Стоит ли это рассматривать в топике?
Как по мне — неспортивно как-то. Нетворчески… Сюда-же до кучи Гентушников. Ничем особ значимым
они не отличились.

Любая встраиваемая в железо система по определению является ОС. Только пишется обычно
на Си или Асме или каком-нибудь Форте. Но она обычно очень ограниченная и в ней нет ничего
что-бы напоминало современные ОС. В них часто даже нет консоли. Поскипаем такие.

Резюмируя. Свою ОС писать — хорошо. Познавательно. Но лучше не на Python а на Си. И подходить
к вопросу нужно с глубокой идеей. Должны быть цели. Для чего. Чего мы хотим получить так чтоб
не тупо копировать Linux. Нужно очень хорошо знать железо. Лучше — нестандартное. Там — больше
будет пространство для маркетинга. Эльбрус там. Байкал. Или процессор GA144
который создал Чарли Мур (дада тот самый) в котором куча микро-ядер и которые понимают
Forth.

Вобщем надо знать железо.

os-project

Пишем свою собственную операционную систему с нуля!

Идея написать ОС возникла у меня в процессе поиска идеи для сайд-проекта. Это исключительно хобби-проект, не рассчитанный на серьезность и достоверность, и хотя я пытался объяснить многие новые и неочевидные концепты, с которыми я столкнулся в процессе разработки, я мог что-то упустить, так как я сам только учусь — именно поэтому я настоятельно рекомендую пользоваться гуглом и любыми другими источниками информации когда вы познакомитесь с чем-то новым в гайде. Гуглите абсолютно всё. Я серьезно.

**Prerequisites: **Для комфортного прохождения гайда нужно уметь программировать на языке Си на базовом уровне (одно из обязательных требований: понимать принципы работы с указателями), иметь опыт разработки на высокоуровневых ЯП. С синтаксисом ассемблера можно ознакомиться по ссылке ниже, но все же рекомендую побольше почитать или посмотреть по нему туториалов.

Навигация по репозиторию

guide/ — гайд с последовательными уроками, теорией и задокументированным кодом

  • Гайд разделен на главы, например 00-BOOT-SECTOR
  • Главы разделены на упражнения, например ex00
  • Упражнения содержат в себе код и теорию. Выглядят как main.asm

src/ — исходный код ОС

Установка и запуск

  1. Установить эмулятор QEMU (подробнее: https://www.qemu.org/download/)
sudo apt install qemu-kvm qemu
  1. Собрать кросс-компилятор gcc для i386 архитектуры процессора. Удобнее использовать готовый отсюда: https://wiki.osdev.org/GCC_Cross-Compiler#Prebuilt_Toolchains. Для компьютеров на Linux с x86_64 архитектурой:
wget http://newos.org/toolchains/i386-elf-4.9.1-Linux-x86_64.tar.xz
mkdir /usr/local/i386elfgcc
tar -xf i386-elf-4.9.1-Linux-x86_64.tar.xz -C /usr/local/i386elfgcc --strip-components=1
export PATH=$PATH:/usr/local/i386elfgcc/bin
  1. Клонировать и собрать проект
git clone https://github.com/thedenisnikulin/os-project
cd os-project/src/build
make
  1. Запустить образ ОС с помощью эмулятора
qemu-system-i386 -fda os-image.bin

Справочник по синтаксису ассемблера NASM

https://www.opennet.ru/docs/RUS/nasm/nasm_ru3.html


Дополнительная информация

Ссылки на полезный материал которым я пользовался в качестве теории.

На русском языке:

  • Серия статей о ядре Linux и его внутреннем устройстве: https://github.com/proninyaroslav/linux-insides-ru
  • Статья «Давай напишем ядро!»: https://xakep.ru/2018/06/18/lets-write-a-kernel/

На английском языке:

  • Небольшая книга по разработке собственной ОС (70 страниц): https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
  • Общее введене в разработку операционных систем: https://wiki.osdev.org/Getting_Started
  • Туториал по разработке ядра операционной системы для 32-bit x86 архитектуры. Первые шаги в создании собсвтенной ОС: https://wiki.osdev.org/Bare_Bones
  • Продолжение предыдущего туториала: https://wiki.osdev.org/Meaty_Skeleton
  • Про загрузку ОС (booting): https://wiki.osdev.org/Boot_Sequence
  • Список туториалов по написанию ядра и модулей к ОС: https://wiki.osdev.org/Tutorials
  • Внушительных размеров гайд по разработке ОС с нуля: http://www.brokenthorn.com/Resources/OSDevIndex.html
  • Книга, описывающая ОС xv6 (не особо вникал, но должно быть что-то годное): https://github.com/mit-pdos/xv6-riscv-book, сама ОС: https://github.com/mit-pdos/xv6-public
  • «Небольшая книга о разработке операционных систем» https://littleosbook.github.io/
  • Операционная система от 0 до 1 (книга): https://github.com/tuhdo/os01
  • ОС, написанная как пример для предыдущей книги: https://github.com/tuhdo/sample-os
  • Интересная статья про программирование модулей для Линукса и про системное программирование https://jvns.ca/blog/2014/09/18/you-can-be-a-kernel-hacker/
  • Еще одна статья от автора предыдущей https://jvns.ca/blog/2014/01/04/4-paths-to-being-a-kernel-hacker/
  • Пример простого модуля к ядру линукса: https://github.com/jvns/kernel-module-fun/blob/master/hello.c
  • Еще один туториал о том, как написать ОС с нуля: https://github.com/cfenollosa/os-tutorial
  • Статья «Давайте напишем ядро»: https://arjunsreedharan.org/post/82710718100/kernels-101-lets-write-a-kernel
  • Сабреддит по разработке ОС: https://www.reddit.com/r/osdev/
  • Большой список идей для проектов для разных ЯП, включая C/C++: https://github.com/tuvtran/project-based-learning/blob/master/README.md
  • Еще один список идей для проектов https://github.com/danistefanovic/build-your-own-x
  • «Давайте напишем ядро с поддержкой ввода с клавиатуры и экрана»: https://arjunsreedharan.org/post/99370248137/kernel-201-lets-write-a-kernel-with-keyboard-and

Содержание

  • Как писать программы на Python
    • Интерактивный режим
    • Создание скриптов
  • Модули
    • Работа с модулями
    • Функции модуля os
      • Подмодуль path
  • Создание собственного модуля

Как писать программы на Python

Интерактивный режим

В ОС на базе ядра Linux можно программировать на Python в интерактивном режиме с помощью приложения «Терминал», в котором работает командная оболочка Bash. Здесь, чтобы запустить интерпретатор, надо выполнить команду python3.

s690712@s73000:~$ python3
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Последняя строка «>>>» — приглашение для ввода команд

Создание скриптов

Несмотря на удобства интерактивного режима, чаще всего необходимо сохранить исходный программный код для последующего выполнения и использования. В таком случае подготавливаются файлы, которые передаются затем интерпретатору на исполнение.
Файлы с кодом на Python имеют расширение .py.

Для написания скрипта подойдет практически любой текстовый редактор. Здесь создается и сохраняется файл с кодом. Далее его можно запустить на выполнение через терминал. При этом сначала указывается интерпретатор (в данном случае python3), потом имя файла (если файл находится в другом каталоге, то указывается с адресом, или надо перейти в этот каталог с помощью команды cd оболочки Bash).
.. code-block:: python

user:~$ python3 test.py

Модули

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

Так, модуль os ,из стандартной библиотеки языка программирования Python, — это библиотека функций для работы с операционной системой. Методы, включенные в неё позволяют определять тип операционной системы, получать доступ к переменным окружения, управлять директориями и файлами:
  • проверка существования объекта по заданному пути;
  • определение размера в байтах;
  • удаление;
  • переименование и др.

Работа с модулями

Для доступа к функционалу модуля, его надо импортировать в программу. После импорта интерпретатор «знает» о существовании дополнительных классов и функций и позволяет ими пользоваться.
.. code-block:: python

>>> import os
  • Чтобы увидеть перечень функций, входящих в этот модуль, воспользуемся встроенной в Python функцией dir(), передав ей в качестве аргумента имя модуля:
>>> dir(os)
['getgid', 'getgrouplist', 'getgroups', 'getloadavg', 'getlogin', 'getpgid', 'getpgrp', 'getpid', 'getppid', 'getpriority', 'getresgid', 'getresuid', 'getsid', 'getuid', 'getxattr', 'initgroups', 'isatty',]
  • Если мы не знаем, что делает та или иная функция, то можем получить справочную информацию о ней с помощью встроенной в язык Python функции help()
  • Второй способ импорта – это когда импортируется не сам модуль, а только необходимые функции из него:
>>> from os import name, environ
>>> environ
environ({'SHELL': '/bin/bash', 'PWD': '/home/s690712', 'LOGNAME': 's690712'..})

В таком случае при их вызове не надо перед именем функции указывать имя модуля

  • Чтобы импортировать сразу все функции из модуля:

Функции модуля os

Наиболее популярными функциями из модуля os являются те, которые позволяют получать данные о операционной системе, сведения о файлах и папках, хранимых в памяти на жестком диске ПК.

  • os.name -в зависимости от установленной ОС, он вернет ее короткое наименование в строковом представлении:
  • os.environ — словарь переменных окружения.
>>> os.environ
environ({'SHELL': '/bin/bash', 'PWD': '/home/s690712', 'LOGNAME': 's690712', ..})
  • По умолчанию рабочей директорией программы является каталог, где содержится документ с ее исходным кодом. Благодаря этому, можно не указывать абсолютный путь к файлу, если тот находится именно в этой папке. Получить сведения о текущей директории позволяет функция getcwd, которая возвращает полный адрес рабочего каталога на жестком диске.
>>> os.getcwd()
'/home/s690712'
  • os.chdir(path) — смена текущей директории.
  • os.listdir(path=».») — список файлов и директорий в папке.
>>> os.listdir()
['.gitconfig', 's690712\onetwo', '.bashrc', '.local', '.cache', '.bash_logout', '.lesshst', '.mozilla', '.python_history', 'cat.txt', 'newfail.txt', 'testgit', '.bash_history', '.swp', '.profile', '.config', 'bye.txt', '.git', '.viminfo']

Возможности модуля os позволяют не только отображать информацию об уже существующих в памяти объектах, но и генерировать абсолютно новые.

  • os.mkdir(path) — создать папку по пути path
  • Благодаря функции makedirs можно создавать сразу несколько новых папок в неограниченном количестве, если предыдущая директория является родительской для следующей. Таким образом, в следующем примере показывается генерация цепочки папок из s690712, one, two.
>>> os.makedirs('s690712onetwo')
  • os.remove(path) — удаляет путь к файлу.

Чтобы стереть из памяти папку, следует воспользоваться встроенной функцией rmdir, указав ей адрес объекта. Однако здесь присутствуют определенные нюансы, поскольку программа не позволит беспрепятственно удалить директорию, в которой хранятся другие объекты. В таком случае на экране отобразится ошибка.

  • os.rmdir(path) — удаляет пустую директорию.
  • os.removedirs(path) — удаляет директорию, затем пытается удалить родительские директории, и удаляет их рекурсивно, пока они пусты.

os предоставляет возможность быстрой смены названия для любого файла или же каталога при помощи метода rename. Данная функция принимает сразу два разных аргумента. Первый отвечает за путь к старому наименованию документа, в то время как второй отвечает за его новое название. В примере показано переименование директории folder в catalog. Стоит помнить, что метод может генерировать исключение, если по указанному пути нет файла.
.. code-block:: python

>>>os.rename(«s690712folder», «s690712catalog»)

Переименовывать можно не только один каталог, но и несколько папок сразу, только если все они находятся в одной иерархической цепочке. Для этого достаточно вызвать метод renames и передать ему путь к конечной директории в качестве первого аргумента. В роли же второго параметра выступает аналогичный адрес к папке, но только с новыми именами всей цепочки. Переименование директорий folder, first и second в catalog, one и two.

>>>os.renames(r"D:folderfirstsecond", r"D:catalogonetwo")

Подмодуль path

os.path — реализует некоторые полезные функции на работы с путями.

  • Чтобы избежать ошибок, связанных с отсутствием определенного файла или директории, которые должны быть обработаны программой, следует предварительно проверять их наличие с помощью метода exists. Передав ему в качестве аргумента путь к нужному файлу или папке, можно рассчитывать на лаконичный ответ в виде булевого значения true/false, сообщающего о наличии/отсутствии указанного объекта в памяти компьютера.
>>> os.path.exists('s690712hello.txt')
False
  • os.path.isabs(path) — является ли путь абсолютным.
  • os.path.isfile(path) — является ли объект по пути path файлом.
  • os.path.isdir(path) — является ли объект по пути path директорией.
  • os.path.islink(path) — является ли объект по пути path символической ссылкой.
  • os.path.getsize(path) — размер файла по пути path в байтах.
  • os.path.abspath(path) — возвращает абсолютный путь по относительному.

Иногда для взаимодействия с документом необходимо получить его полное имя, включающее разрешение, но не абсолютный путь к нему на диске. Преобразовать адрес объекта в название позволяет функция basename
.. code-block:: python

>>> os.path.basename("/home/s690712/bye.txt")
'bye.txt'

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

>>> os.path.dirname("/home/s690712/bye.txt")
'/home/s690712'
  • os.path.split(path) — разбивает путь на кортеж (голова, хвост), где хвост — последний компонент пути, а голова — всё остальное. Хвост никогда не начинается со слеша (если путь заканчивается слешем, то хвост пустой). Если слешей в пути нет, то пустой будет голова.
>>> os.path.split("/home/s690712/bye.txt")
('/home/s690712', 'bye.txt')
  • Обратно os.path.join(path1, path2) — соединяет пути с учётом особенностей операционной системы.
>>> os.path.join('/home/s690712', 'bye.txt')
'/home/s690712/bye.txt'
  • os.path.relpath(path, start=None) — вычисляет путь относительно директории start (по умолчанию — относительно текущей директории).
  • os.path.samefile(path1, path2) — указывают ли path1 и path2 на один и тот же файл или директорию
s690712@s73000:~$ cd hel
s690712@s73000:~/hel$ echo bye> hello.txt
s690712@s73000:~/hel$ cd ..
s690712@s73000:~$ python3
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.samefile("hel",".")
False

Создание собственного модуля

Когда интерпретатор Питона встречает команду импорта, то просматривает на наличие файла-модуля определенные каталоги. Их перечень можно увидеть по содержимому sys.path:

>>> import sys
>>> sys.path
['', '/home/s690712/lib/python37.zip', '/lib/python3.7', '/lib/python3.7/lib-dynload', '/lib/python3.7/site-packages', '//lib/python3.7/site-packages']

Это список адресов в Linux. Первый элемент – пустая строка, что обозначает текущий каталог, то есть то место, где сохранена сама программа, импортирующая модуль. Если вы сохраните файл-модуль и файл-программу в одном каталоге, то интерпретатор без труда найдет модуль.

В качестве тренировки создадим модуль с функциями для вычисления площадей прямоугольника, треугольника и круга, поместим его в отдельный файл square.py, a сам файл потом передадим в sys.path:

s690712@s73000:~$ vim square.py
-
#! python3
from math import pi, pow

def rectangle(a, b):
    return round(a * b, 2)

def triangle(a, h):
    return round(0.5 * a * h, 2)

def circle(r):
    return round(pi * pow(r, 2), 2)

Исполняемая программа count будет считать площадь круга по переданному ей значению радиуса. Ее код включает инструкцию импорта circle из модуля square.

s690712@s73000:~$ vim count.py
-
#! python3
from square import circle
print(circle(int(input())))
-
s690712@s73000:~$ python3
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.insert(0,'/home/s690712/square.py')
>>>
[1]+  Остановлен    python3
s690712@s73000:~$ python3 count.py
3
28.27

К сожалению, Python классифицируется как язык программирования очень высокого уровня. … Однако технически возможно создать операционную систему на основе Python, то есть; имеют только очень низкоуровневые вещи, написанные на C и ассемблере, а большая часть остальной операционной системы написана на Python.

Python является кроссплатформенным и будет работать в Windows, macOS и Linux. Когда дело доходит до выбора операционной системы, это в основном вопрос личных предпочтений. Согласно опросу Stack Overflow 2020 года, 45.8% разрабатывают с использованием Windows, 27.5% работают с macOS и 26.6% работают с Linux.

Какая ОС лучше всего подходит для разработки на Python?

Ubuntu — самый большой дистрибутив, linux mint основан на ubuntu, но среда рабочего стола больше похожа на windows xp / vista / 7. Оба варианта — прекрасный выбор. Чтобы стать лучшей программой на Python, программируйте на Python (например, войны кодов) и пишите сценарии для крутых вещей и автоматизации задач.

Можете ли вы создать свою собственную ОС?

Немногие программисты когда-либо пытаются создать ОС, и многие из тех, кто делает попытку, никогда не создают работающую систему. Однако, если вы дойдете до финиша и создадите функциональную операционную систему, вы попадете в элитную группу первоклассных программистов.

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

  1. Шаг 1: SUSEstudio. Перейдите на susestudio.com, войдите в систему с предпочитаемой учетной записью. Совет Вопрос Комментарий.
  2. Шаг 2: Создание. Щелкните Create Appliance. …
  3. Шаг 3: Создайте СЕЙЧАС. Щелкните по кнопке создания. …
  4. Шаг 4: Добавьте программное обеспечение. Добавить программное обеспечение на вкладке программного обеспечения. …
  5. Шаг 5: Создайте это. Щелкните сборку на вкладке сборки. …
  6. 4 комментария. kaneboswell123.

YouTube написан на Python?

«Python был важной частью Google с самого начала и остается таковой по мере роста и развития системы. … YouTube — большой пользователь Python, весь сайт использует Python для разных целей: просмотр видео, управление шаблонами для веб-сайта, администрирование видео, доступ к каноническим данным и многое другое.

Может ли Python работать на процессоре i3?

I3 2-го поколения достаточно для программирования на R и Python. Самые последние подойдут. … В остальном ноутбук i3 все равно был бы в порядке.

Python быстрее в Linux?

Производительность Python 3 в Linux по-прежнему намного выше, чем в Windows. … Git также продолжает работать намного быстрее в Linux. Для просмотра этих результатов или входа в Phoronix Premium требуется JavaScript. Из 63 тестов, проведенных в обеих операционных системах, Ubuntu 20.04 была самой быстрой, опережая в 60% случаев.

Сколько оперативной памяти мне нужно для Python?

Вы сможете легко скомпилировать Python даже с 1 ГБ оперативной памяти. Однако, если у вас выполняется много других процессов, например, много окон браузера, я бы выбрал как минимум 4 ГБ.

Достаточно ли 4 ГБ ОЗУ для Python?

Для запуска скриптов на распространенных языках, таких как C, C++, Java, JavaScript, python, sql и т. д. 4 Гб хватит для работы.

На каком языке написан Linux?

Linux / Языки программирования

Сколько там ОС?

Есть пять основных типов операционных систем. Скорее всего, именно эти пять типов ОС работают на вашем телефоне или компьютере.

Как сделать ОС с нуля?

Стратегии

  1. Загрузиться с нуля, без GRUB — СДЕЛАНО!
  2. Войдите в 32-битный режим — ГОТОВО.
  3. Перейти от сборки к C — СДЕЛАНО!
  4. Обработка прерываний — СДЕЛАНО!
  5. Вывод на экран и ввод с клавиатуры — СДЕЛАНО!
  6. Крошечная базовая библиотека libc, которая растет в соответствии с нашими потребностями — ГОТОВО!
  7. Управление памятью.
  8. Напишите файловую систему для хранения файлов.

Сколько времени нужно, чтобы написать операционную систему?

Согласно этой статье 10 недель. даже для программиста средней квалификации без опыта работы с оборудованием, но со следующими оговорками. Предоставляем подробные пошаговые инструкции для каждого этапа.

I have been pondering over the idea of a Python-based Operating System on top of the Linux kernel, much like how Android uses Java.

What if most of the system components were built using Python, this way most of the Operating System can be modified by anybody who understands Python code. This can allow anybody with Python experience to extend and fully customize the entire operating system. Since Python allows modules to be built using C, this can allow specific system components to benefit from speed where needed, such as a graphical interface. Using C interfaces also allows every part of the Linux kernel to be easily exposed to Python when attempting to build such an Operating System.

A large benefit of such an operating system is application portability, at least applications which are made in pure Python. The entire Operating System will run anywhere you can compile the Linux Kernel and Python into, with less effort than say porting all of Linux over to a different chipset. Python apps don’t need to be re-compiled for the target CPU, and if most of the Operating System is made in Python, porting will be quite easy.

Edit: (Something I want to clarify after looking at the down votes)

I don’t want to replace Linux, just a layer on top of it like Android does with Java. (Perhaps using virtualenvs)

Specific OS components will be compiled in C of course, since Python supports this using many different methods. Python shouldn’t be much slower or faster than a Java VM, and Java works nicely on embedded devices. The main point of using Python over Java is licensing. After seeing what Oracle is doing to Google in Court over Android and Java, developing a Python solution would prevent any such issues and innovation can continue. The reason for not just using a strictly C system, is that Python is much more dynamic at runtime and with computers ever so changing, using a static language at the Operating System’s core seems rather limiting.

About multitasking: The Linux kernel will be doing the multitasking. Python will not be kernel, or do any really low level stuff. GIL and stuff of CPython won’t be involved here.

How Android does it: Android Core

I have been pondering over the idea of a Python-based Operating System on top of the Linux kernel, much like how Android uses Java.

What if most of the system components were built using Python, this way most of the Operating System can be modified by anybody who understands Python code. This can allow anybody with Python experience to extend and fully customize the entire operating system. Since Python allows modules to be built using C, this can allow specific system components to benefit from speed where needed, such as a graphical interface. Using C interfaces also allows every part of the Linux kernel to be easily exposed to Python when attempting to build such an Operating System.

A large benefit of such an operating system is application portability, at least applications which are made in pure Python. The entire Operating System will run anywhere you can compile the Linux Kernel and Python into, with less effort than say porting all of Linux over to a different chipset. Python apps don’t need to be re-compiled for the target CPU, and if most of the Operating System is made in Python, porting will be quite easy.

Edit: (Something I want to clarify after looking at the down votes)

I don’t want to replace Linux, just a layer on top of it like Android does with Java. (Perhaps using virtualenvs)

Specific OS components will be compiled in C of course, since Python supports this using many different methods. Python shouldn’t be much slower or faster than a Java VM, and Java works nicely on embedded devices. The main point of using Python over Java is licensing. After seeing what Oracle is doing to Google in Court over Android and Java, developing a Python solution would prevent any such issues and innovation can continue. The reason for not just using a strictly C system, is that Python is much more dynamic at runtime and with computers ever so changing, using a static language at the Operating System’s core seems rather limiting.

About multitasking: The Linux kernel will be doing the multitasking. Python will not be kernel, or do any really low level stuff. GIL and stuff of CPython won’t be involved here.

How Android does it: Android Core

Понравилась статья? Поделить с друзьями:
  • Как написать свою нейросеть на python
  • Как написать свою научную статью
  • Как написать свою музыку поп
  • Как написать свою музыку на телефоне
  • Как написать свою музыку на компьютере