Голямото започва от малкото. Така например ядрото Linux 0.0.1 се

...
Голямото започва от малкото. Така например ядрото Linux 0.0.1 се
Коментари Харесай

Хайде да си напишем своя собствена малка операционна система

Голямото стартира от дребното. Така да вземем за пример ядрото Linux 0.0.1 се състоеше единствено от 10 239 реда код, от които 20% бяха мнения. Такъв план би могъл да бъде сбъднат от студент като курсова или дипломна работа, програмирайки вечер на домашния компютър. Линус в действителност го е написал по време на следването си в университета, когато се е завърнал от армията.

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

Така да вземем за пример уеб сайтът OSDev.org дава управление от вида „ малко по малко “ точно за начинаещи, които желаят да напишат своя лична операционна система безусловно от нулата.

Той дава образователна информация за всички съставни елементи на една операционна система: документите за хардуера и архитектурата, паметта, спиранията, таймерите, графичната обработка, звука, входно-изходните устройства, съхранението, PCI, USB, мрежовите карти, безжичните мрежи и така нататък

Ръководството „ малко по малко “ не е смешка работа. Там си има раздел „ Създаване на операционна система “ и обособена страница „ В какъв ред да създадем всичко„.

Съвети за начинаещите
Разбира се, [и преди всичко] на екрана би трябвало се демонстрират низове и цели цифри (както десетични, по този начин и шестнадесетични). Това е един от най-лесните способи за премахване на неточности. Почти всеки от нас във версия 0.01 е минал през kprint() или kout. Извеждането на информация през серийния порт ще спести доста време за премахване на грешките, като отстрани загубата на информация заради скролването. Ще можете да тествате операционната си система от конзолата, да филтрирате по-интересните известия за премахване на грешките и да автоматизирате някои проби. Много е потребно да разполагате с работеща и надеждна система за обработка на спиранията и изключенията, която може да нулира наличието на регистрите. И вероятно да откри адреса на грешката. Планирайте картата на паметта (виртуална и физическа): решете къде да записвате данните. Почти невероятно е да се мине без разпределение на паметта по време на осъществяването (т.е. malloc и free), тъй че е целесъобразно колкото се може по-скоро да реализирате купчина (heap).

В общността на разработчиците на нови операционни системи са основани някои много забавни планове. Така да вземем за пример Fomos е пробна операционна система, написана на Rust. Нека се спрем малко по-подробно.

Експериментална операционна система на програмния език Rust

Fomos е чист опит за проучване на по този начин наречените екзоядра и какъв брой елементарно е да се пишат такива системи на Rust.

Авторът е осъществил главния най-малко за ядрото. Това са графичният излаз, динамичното систематизиране на паметта, зареждането и стартирането на паралелни приложения. Написани са пет приложения: app_background, app_c, app_console, app_cursor, app_test). Има поддръжка на мишка и клавиатура (драйверите са асинхронни задачи), всички приложения също се започват в несинхронизиран цикъл. Реализирано е кооперативно обмисляне (приложенията си предават ръководството допустимо най-често).

Сред неповторимите характерности създателят загатва, че тук приложенията са единствено контекстни функционалности, а систематичните извиквания отсъстват като събитие в тази Оценка за съвместимост. Когато обещано приложение се приключи (return;), контролът автоматизирано се връща на ядрото.

Дори паметта на приложението се намира в подтекст, който може да бъде автоматизирано непокътнат преди излизане:

//kernel just started... let app = App::new(..); let ctx = disk.load(app.id).unwrap_or(Context::new(..)); loop{ app._start(ctx); if restart_request{ disk.save(app.id, ctx) break; } } //handle restart...

Статично обвързван мини Linux

Не надалеч от „ лична операционна система “ е основаването на лична Linux дистрибуция или персонализирана версия на Windows (с унищожаване на ненужните стратегии, блокиране на телеметрията и т.н.).

Като образец можем да разгледаме Oasis – “ минималната Linux дистрибуция “. Това е дребна Linux система, която е много друга от нормалните Linux дистрибуции. Тя е по-скоро по-близка до BSD.

Главната специфичност на Oasis е цялостната статична взаимосвързаност. Това значи, че целият програмен продукт в базовата система е статично обвързван, в това число сървъра за визуализация (velox) и уеб браузъра (netsurf). Най-същественото преимущество на статичното свързване е, че едно приложение може да бъде несъмнено, че всички негови библиотеки са налични и че всички те са от вярната версия. По този метод се заобикалят проблемите със зависимостите (DLL Hell), а също по този начин приложението може да бъде капсулирано в един осъществим файл. Напълно независим двоичен файл, който елементарно се копира от компютър на компютър. И се извършва.

Други функционалности на Oasis:
Бързо правене със 100% възпроизводимост. Всички пакети се построяват със Samurai, като се употребяват прокламации за създаване, генерирани от Lua скриптове. Това дава доста преимущества: оптимално време за компилиране, предвидими и възпроизводими компилации и понижени зависимости по време на самото компилиране. Минимални условия за евакуиране. Oasis може да се започва на всяка POSIX система с git, lua, curl, sha256, общоприети помощни стратегии за компресиране и крос-компилатора x86_64-linux-musl. BearSSL като систематична TLS и криптографска библиотека. BearSSL на C е необикновено ефикасна, къса и красива библиотека (20KB компилиран код, заема 25KB в паметта), която не е необятно публикувана, само че Oasis я употребява на всички места вместо LibreSSL. Дистрибуцията употребява и други по-леки други възможности на публикувани принадлежности. Например sbase вместо coreutils, ubase вместо util-linux, pigz вместо gzip, mandoc вместо man-db, bearssl вместо openssl, oksh вместо bash, sdhcp вместо dhclient или dhcpcd, vis вместо vim или emacs, byacc вместо bison, perp и sinit вместо sysvinit или systemd, Netsurf вместо Chromium/Firefox и така нататък д. Няма управител на пакетите. Вместо това задавате набор от спецификации за това кои файлове от кои пакети би трябвало да бъдат включени, а системата за създаване записва полученото дърво на файловата система в хранилището git. Добра интеграция с самостоятелните пакетни системи като pkgsrc и nix. Изключително опростена настройка. Най-сложният файл в конфигурацията по дифолт е 16-редовият скрипт за инициализация на системата /etc/rc.init. Съответствие с ISO C (като цяло). Основната цел е да се построява с cproc, компилатор на C, който е доста по-стриктен във връзка с стандарта ISO C от gcc или clang и е с порядъци по-малък размер. Повечето от пакетите на Oasis към този момент са сполучливо построени с cproc, а по останалите се работи.

За повече информация по отношение на процеса на инсталиране и администриране на Oasis вижте уикито на плана.

Интерфейс на операционната система осъществен посредством игрови енджин

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

По-горе е даден кадър от демо версията на GodotOS, а по-долу – нейният много гръмък филмов откъс.

GodotOS е по-скоро играчка, в сравнение с сериозен план. Неговата цел е да сътвори минималистичен и естетически изискан десктоп. Разработчиците креативен употребяват Godot Engine 2D и 3D игровия енджин не напълно по предопределение. Оказва се, че той може да се употребява за основаване на потребителски интерфейси за настолни приложения, а освен за игри.

Ядрото xv6

Учебната операционна система xv6 е повторна имплементация на истинската версия 6 на Unix (v6) от Денис Ричи и Кен Томпсън. Както вероятно знаете, тази фундаментална историческа операционна система е в основата на доста известни системи през днешния ден. В това число Linux и macOS (чрез разклонението BSD на семейството Unix).

Тази образователна Оценка за съвместимост се учи в курса на MIT за създаване на операционни системи (лабораторните задания в курса).

Браузърните енджини

Съвременните браузъри се приближават по своята трудност до операционните системи. Всъщност във връзка с функционалността те не им отстъпват доста, тъй като в браузъра може да се започва съвсем всяко приложение, написано на всеки език, и даже на асемблер (WebAssembly).Тоест на език от ниско равнище. Например, хромбуците на Гугъл работят с операционната система ChromeOS, която всъщност съставлява браузъра Chrome, който се зарежда върху ядрото на Linux.

Следователно основаването на нови браузъри може да се приближи по трудност до писането на нови операционни системи. Една от забавните нови разработки в тази област е Shadow – браузърен енджин, написан съвсем напълно на JavaScript.

Компонентите на Shadow

На специфичната демострационна страница можете да видите по какъв начин Shadow обработва другите уеб сайтове. Засега тя се оправя единствено с релативно лесните за визуализация уеб страници.

Но домашната страница на SerenityOS се обработва без неточности:

Една напълно бегла инспекция демонстрира, че Chrome демонстрира тази страница по напълно същия метод.

Между другото, SerenityOS (на KDPV) е различен образец за различна операционна система в жанр Unix, с графичен интерфейс в стила на 90-те години и функционалности от разнообразни модерни операционни системи. Наскоро се появи вест, че разработчиците на SerenityOS са пуснали кросплатформения браузър Ladybird на личен енджин.

Крос-платформеният браузър Ladybird от основателите на SerenityOS

За разлика от Shadow този браузър поддържа всички модерни стандарти съгласно тестванията на Acid3.

И това никога не е единственият браузър от самостоятелни разработчици. Като образци можем да споменем Servo (базиран на Rust енджин, в началото създаден от Mozilla, а в този момент поддържан от Linux Foundation) и Flow. Както и при операционните системи, тук има голямо поле за изпробване.

Разработването на лична операционна система, даже с на практика насоки, е дълго и мъчно пътешестване, само че също по този начин е вълнуващо, потребно и възнаграждаващо. Можете да си визиите по какъв начин един новак разработчик първо следва прецизно препоръките малко по малко и проекта, а по-късно от ден на ден се отдалечава от него и взема лични решения за дизайна на своята операционна система. В последна сметка той може да се окаже основател на нещо в действителност неповторимо и революционно. Което да откри приложение в колите, актуалните уреди и къде ли още не.

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

Към оригинала на тази публикация има доста мнения, най-вече, че тя е една доста добра стартова точка, за хората, които просто имат нужните умения и желаят да се занимават с това. Има и забележки, че не са упоменати KolibriOS и Haiku, които без подозрение са извънредно забавни, само че са малко отвън обсъжданата тематика.

Източник: kaldata.com

СПОДЕЛИ СТАТИЯТА


Промоции

КОМЕНТАРИ
НАПИШИ КОМЕНТАР