How do I develop my own operating system?

Byg Dit Eget OS med C# og Visual Studio

02/06/2001

Rating: 4.78 (9238 votes)

Tanken om at bygge sit eget operativsystem fra bunden kan virke som en uoverstigelig opgave, forbeholdt de mest erfarne softwareingeniører. Det er en verden af bootloadere, kernerutiner og hardware-interaktion på lavt niveau. Men hvad nu hvis der fandtes et værktøjssæt, der gjorde denne proces lige så tilgængelig som at bygge en almindelig applikation? Det er præcis, hvad Cosmos-projektet tilbyder. Cosmos, som står for C# Open Source Managed Operating System, er ikke et operativsystem i sig selv, men snarere et sæt byggeklodser – en slags "Operativsystem-Lego" – der lader dig bruge velkendte værktøjer som Visual Studio og .NET-sprog til at skabe dit helt eget OS.

How do I create a COSMOS project in Visual Studio?
1) Open visual studio and navigate to File>New Project 2) In the new project dialog box, select COSMOS and then COSMOS Project in the templates box. Name the project and click OK! 3) Now you'll see a file "program.cs" in the solution explorer. Click and load it.

Denne artikel vil guide dig gennem de grundlæggende principper i Cosmos, vise dig, hvordan du kan oprette og køre dit første operativsystem på få minutter, og dykke ned i en af de mest revolutionerende funktioner: fuldt integreret debugging direkte fra Visual Studio.

Indholdsfortegnelse

Hvad er Cosmos Præcist?

Cosmos er et udviklingskit designet til at bygge operativsystemer ved hjælp af .NET-frameworket. Selvom navnet indeholder C#, kan ethvert .NET-baseret sprog anvendes, herunder VB.NET, F# og andre. Kernen i Cosmos er skrevet i C#, hvilket forklarer navnet. Ideen er at abstrahere de komplekse lavniveaudetaljer væk, så udviklere kan fokusere på logikken og funktionaliteten i deres operativsystem.

Cosmos kommer i to primære distributioner:

  • User Kit: Designet for dem, der ønsker at bygge deres eget operativsystem ved hjælp af Cosmos. Det er det ideelle udgangspunkt for begyndere og de fleste brugere. Denne artikel fokuserer på User Kit.
  • Dev Kit: Beregnet til udviklere, der ønsker at arbejde på selve Cosmos-projektet, forbedre dets kerne eller tilføje nye funktioner. Det kan sammenlignes med en SDK for Cosmos.

Ved at bruge Cosmos kan du skrive C#-kode, der kompileres til native maskinkode og kan bootes på en rigtig computer eller i en virtuel maskine, helt uden et underliggende OS som Windows eller Linux.

Dit Første Operativsystem på 5 Minutter

At komme i gang med Cosmos er overraskende enkelt. Hvis du er bekendt med Visual Studio, vil processen føles meget velkendt.

  1. Opret et nyt projekt: Åbn Visual Studio og opret et nyt projekt. I listen over projekttyper vil du finde "Cosmos Project". Vælg denne.
  2. Udforsk startkoden: Når projektet er oprettet, vil du se en filstruktur, der minder meget om en standard C# konsolapplikation. Du vil finde en Program.cs-fil, der indeholder kernen af din OS-logik.

Startkoden indeholder typisk en BeforeRun()-metode, der køres én gang ved opstart, og en Run()-metode, der køres i en uendelig løkke. Til at starte med kan du tilføje en simpel linje kode:

using System; using Sys = Cosmos.System; namespace CosmosKernel1 { public class Kernel: Sys.Kernel { protected override void BeforeRun() { Console.WriteLine("Cosmos er startet. Velkommen til mit OS!"); } protected override void Run() { Console.Write("Input: "); var input = Console.ReadLine(); Console.Write("Tekst modtaget: "); Console.WriteLine(input); } } }

Når du trykker på "Start" (F5), sker magien. Visual Studio kompilerer din kode, bygger et bootbart diskbillede og starter det automatisk i en virtuel maskine som VMWare Player. Du vil se en sort skærm med din velkomstbesked. Tillykke, du har lige bygget og bootet dit eget operativsystem!

Den Store Fordel: Integreret Debugging

En af de største udfordringer ved OS-udvikling er debugging. Traditionelt involverer det komplekse opsætninger med serielle kabler og specialiseret software. Cosmos revolutionerer dette ved at integrere debugging direkte i Visual Studio.

Can VB be compiled into a VM?
You could compile VB into pure assembly, or you could write a low level VM loaded at runtime (like singularity). Both would accomplish the questions parameters without needing to question the definition of what an operating system "is". Just for the record, my answer is exactly the same as the accepted answer!

Lad os prøve det. Sæt et breakpoint på linjen var input = Console.ReadLine(); i din Run()-metode, ligesom du ville gøre i en normal applikation. Kør dit OS igen. Når koden når til dit breakpoint, vil eksekveringen i den virtuelle maskine fryse, og Visual Studio vil stoppe på den pågældende linje. Du kan nu inspicere variable, se call stack og bruge andre velkendte debugging-værktøjer. Tryk F5 for at fortsætte eksekveringen.

Udover breakpoints understøtter Cosmos også "Step Into" (F11), hvilket giver dig mulighed for at gå gennem din kode linje for linje. Dette gør fejlfinding eksponentielt lettere og mere intuitivt.

Hvordan Virker det?

Debuggeren kommunikerer mellem din virtuelle maskine og Visual Studio via en virtuel seriel port. Derfor fungerer det bedst med virtualiseringssoftware, der har en pålidelig implementering af serielle porte, som f.eks. VMWare. For at debugge på rigtig hardware kræves et fysisk serielt kabel mellem udviklingscomputeren og testcomputeren.

Byg et Simpelt Kommandolinje-OS

Nu hvor du har de grundlæggende elementer på plads, kan vi gøre vores operativsystem lidt mere interaktivt. Vi kan bygge en simpel kommandotolk, der reagerer på specifikke inputs fra brugeren.

Lad os udvide vores Run()-metode:

protected override void Run() { Console.Write("> "); var input = Console.ReadLine(); if (input == "hej") { Console.WriteLine("Hej bruger! Tak fordi du bruger dette operativsystem!"); } else if (input == "om") { Console.WriteLine("Dette er et simpelt OS bygget med Cosmos."); } else if (input == "dato") { Console.WriteLine("Dags dato er: " + DateTime.Now.ToShortDateString()); } else { Console.WriteLine("Ukendt kommando."); } }

Med denne kode har du skabt et grundlæggende interaktivt system. Du kan nemt udvide det med flere kommandoer. Her er nogle ideer til at udvide funktionaliteten:

Tabel over Kommando-ideer

KommandoBeskrivelse
helpViser en liste over alle tilgængelige kommandoer.
shutdownStopper systemet sikkert (f.eks. ved at kalde Cosmos.System.Power.Shutdown()).
clearRydder skærmen (Console.Clear()).
calc [regnestykke]En simpel lommeregner, der kan evaluere simple matematiske udtryk.

Er der en Hage? Status for Projektet

Cosmos er et fantastisk værktøj, men det er vigtigt at være klar over, at det stadig er under aktiv udvikling. Selvom de grundlæggende funktioner og debugging er robuste, er der stadig mange avancerede områder, der arbejdes på. Ting som filsystemer (delvis understøttelse findes), multithreading, netværk og avanceret grafik er stadig på udviklingsstadiet.

What is a basic operating system?
By the end of this tutorial, you'll have a basic OS that can boot, load a kernel, display "Hello, World!", and run a simple shell. An operating system (OS) is a crucial piece of software that manages computer hardware and provides services for computer programs.

Dette betyder, at Cosmos er perfekt til at lære om operativsystemers opbygning, eksperimentere med kernekoncepter og bygge simple, specialiserede systemer. Det er måske ikke klar til at bygge den næste store konkurrent til Windows endnu, men det er et uvurderligt pædagogisk og eksperimentelt værktøj.

Ofte Stillede Spørgsmål (FAQ)

Hvad var det Syslinux, jeg så under opstart?

Cosmos bruger en bootloader ved navn Syslinux til at starte operativsystemet. Syslinux er kun ansvarlig for den indledende opstartsproces; så snart dit Cosmos-operativsystem er indlæst i hukommelsen, overtager det fuld kontrol, og Syslinux bruges ikke længere. Det har intet med Linux-distributioner at gøre.

Hvorfor er Cosmos en 'game-changer'?

For at køre .NET-kode kræves normalt en kompleks infrastruktur som Common Language Runtime (CLR) og en Just-In-Time (JIT) compiler. Disse komponenter er dybt afhængige af et eksisterende operativsystem (som Windows) for tjenester som hukommelsesstyring og P/Invoke-kald. At skulle genskabe alt dette fra bunden er en enorm barriere. Cosmos løser dette "bootstrap"-problem ved at levere sin egen specialbyggede .NET-runtime og compiler (kaldet IL2CPU), der oversætter .NET-kode til rå maskinkode, som kan køre direkte på hardwaren.

Kan jeg bruge VB.NET eller andre .NET-sprog?

Ja. Selvom de fleste eksempler og selve Cosmos er skrevet i C#, kan ethvert sprog, der kompilerer til .NET's Intermediate Language (IL), bruges til at skrive dit operativsystem.

Konklusion

Cosmos har med succes nedbrudt mange af de barrierer, der tidligere gjorde udvikling af operativsystemer til en niche-disciplin. Ved at integrere processen i det velkendte Visual Studio-miljø og tilbyde kraftfulde funktioner som integreret debugging, har Cosmos gjort det muligt for en helt ny generation af udviklere at udforske, lære og skabe i en verden, der før var utilgængelig. Uanset om du er studerende, hobbyist eller professionel udvikler med en drøm om at bygge dit eget OS, er Cosmos det perfekte sted at starte din rejse.

Hvis du vil læse andre artikler, der ligner Byg Dit Eget OS med C# og Visual Studio, kan du besøge kategorien Sundhed.

Go up