GeirGrusom Skrevet 25. februar 2007 Del Skrevet 25. februar 2007 (endret) Webside:http://osproject.brinkster.net/ Prosjektet heter nå Dvorient medlemmer: GeirGrusom staalezh strykejern norgul Jaffe chills CronoMan De som vil være med, kan enten si ifra på #[email protected] eller sende meg eller en annen medlem en PM Vi bruker GNU GRUB som bootloader. SourceForge.net prosjekt kommer i løpet av få dager. worklog: 25.02.2007 Idéen er at alt i operativsystemet skal fungere som "devices" alle mapper, alle filer, alle programmer, vil bli listet i "filsystemet" noe lignende unix Men: all devices kan ha en rekke funksjoner, kun én er delt av alle: enum denne funksjonen viser alle funksjonene som denne devicen har, list, delete, close etc. Så hvis et program eller brukeren vil vite hvor mange harddisker det er på maskinen, kan den kalle sys/dev/hdd/list Som så forer en stream med en liste over alle harddiskene så kan man kalle sys/dev/hdd/hdd0/:freespace f.eks. for å få vite hvor mye ledig plass det er på disken Mange devices har en funksjon som heter type, som forer en stream med all data i den devicen, f.eks: sys/dev/hdd/hdd0/MyFolder/readme.txt/:type 18.03.2007: Vi har funnet ut at alt av objekter vil bli definert med en XML fil, eller stream Idéen er tatt fra Glade User Interface til GTK+ og Gnome Dette gjør at alt av objekter som skal lages, defineres først i en XML fil, som blir parset av systemet. Dette gjelder også GUI når det kommer på banen. Men i første omgang, blir det for alt av objekt orientert programmering i C av drivere o.s.v. Nærmere detaljer kommer etterhvert som vi får diskutert dette. 21.03.2007: Shellet (når den tid kommer) vil i utgangspunktet bruke Python som språk. Men vi vil begynne med en enkel sak skrevet i C, for å kunne behandle systemet i begynnelsen. Dette vil bare kunne drive filbehandling, og starte programmer. Python shellet, vil ha full python syntax, og være istand til å kjøre "exposed" funksjoner. Vær obs på at hvis man kjører "exposed" funksjoner fra moduler, så vil den modulen forbli i minnet til shellet avsluttes. 23.03.2007: Vi vil i starten bruke FAT som filsystem, dels fordi det er enkelt, og dels fordi disketter bruker FAT12, dette skriver jeg på as we speak. Vi skal ha et stream system for å lese og skrive til all slags devices, som det nå jobbes med av staale. Jaffe har fått til IRQ nå, så dette blir bra. 25.03.2007: Jaffe har fått til allokering av 4KB pages i kernelen, dette er første skritt mot dynamisk minneallokering. Stor takk til Jaffe Endret 26. mars 2007 av GeirGrusom Lenke til kommentar
Barely dead Skrevet 25. februar 2007 Del Skrevet 25. februar 2007 (endret) skjønte lite av det du skrev :!:du mener sikkert at du vil ha flere program samlet under et program, tror jeg Endret 25. februar 2007 av larshaugli18 Lenke til kommentar
GeirGrusom Skrevet 25. februar 2007 Forfatter Del Skrevet 25. februar 2007 (endret) Jeg holder på å lage en test-shell i C#, som skal fungere sånn som tanken er... bare litt mer jobb nå, så kan jeg vise dere edit: Jeg har bare litt problemer med å få IO streamene til å fungere på tvers av funksjonene. Tenk for deg hvordan linux er, du har root/dev hvor alle devices ligger, idéen er at alt skal være devices for operativsystemet, så alle programmer som kjører, vil bli listet i en egen device f.eks. /sys/dev/mem/app f.eks. /sys/dev/mem/app/list vil lage en liste over alle programmer som er igang, inn i en stream, og gi det til enten ditt program, eller consolen. Endret 25. februar 2007 av GeirGrusom Lenke til kommentar
Barely dead Skrevet 25. februar 2007 Del Skrevet 25. februar 2007 høres bra ut, bare litt vanskelig å forstå Lenke til kommentar
Barely dead Skrevet 25. februar 2007 Del Skrevet 25. februar 2007 (endret) driver du å lager operativsystemet eller er det bare en ide Endret 25. februar 2007 av larshaugli18 Lenke til kommentar
j000rn Skrevet 25. februar 2007 Del Skrevet 25. februar 2007 Mange devices har en funksjon som heter type, som forer en stream med all data i den devicen, f.eks:/sys/dev/hdd/hdd0/MyFolder/readme.txt/type 8023126[/snapback] Hmm... og hva om jeg har 2 filer: /sys/dev/hdd0/myfolder/readme.txt og /sys/dev/hdd0/myfolder/readme.txt/type ? Kanskje det hadde vært bedre å brukt noe annet enn /. F.eks: /sys/dev/hdd0/myfolder/readme.txt:type ? Tror du har mye annet å tenke på om du skal skrive et OS igrunn.... Good luck! Lenke til kommentar
GeirGrusom Skrevet 26. februar 2007 Forfatter Del Skrevet 26. februar 2007 Vel, tenkte at en kanskje kan skrive * foran funksjoner eller noe, for å skille dem fra filer i en mappe, men idéen er at current path = current device Planen var også at operatiovsystemet internt, skulle ha alle funksjoner (som "dller" og slik) som en del av operativsystemet, så hvis du vil allokere minne, kan du kalle (i C) device dev = GetDeviceHandle("sys/dev/mem"); int *ptr = AllocateMemory(dev, sizeof(int)); eller i C++: MemoryDevice *dev = (MemoryDevice*)GetDeviceHandle("sys/dev/mem") int *ptr = dev.alloc(sizeof(int)); tenkte også at programkode formatet skal støtte VM programmer, og flere prosessorer i samme fil. Lenke til kommentar
Dead_Rabbit Skrevet 26. februar 2007 Del Skrevet 26. februar 2007 Men hvilke nye features (bortsett fra at *alt* er devices, hvis jeg forsto deg rett..) har du tenkt til å implementere? Altså, hvis du ikke vil ha et OS som krever 3-4 GB for å starte, har du jo Linux/Unix som du refererer til. Lenke til kommentar
GeirGrusom Skrevet 26. februar 2007 Forfatter Del Skrevet 26. februar 2007 Planen skal være et lite, effektivt OS, som er enkelt, og logisk (og det skal ikke Unix ha på seg at det er) Jeg har laget en liten shell i C#, som fungerer nogenlunde sånn jeg hadde tenkt meg, foreløpig kan man slette filer, og mapper, og avslutte prosesser med den. Den krever .NET 2.0 for å fungere Jeg har også fundert mye på programfilformatet, at den faktisk støtter VM kode i exe filen, samt flere typer prosessorer i samme fil. For å kalle funksjoner, skriver du : foran, f.eks. :enum viser alle funksjoner som er tilgjengelig i den aktive devicen. :list lister alle undergrupper :delete sletter, :kill avslutter prosesser :getfilename får tak i filnavnet til moduler prøv selv ngos.zip Lenke til kommentar
steingrim Skrevet 26. februar 2007 Del Skrevet 26. februar 2007 For å kalle funksjoner, skriver du : foran, f.eks. :enum viser alle funksjoner som er tilgjengelig i den aktive devicen.:list lister alle undergrupper :delete sletter, :kill avslutter prosesser :getfilename får tak i filnavnet til moduler Så... det du har nå er et shell, skrevet i C#. Veien fra en kommandotolker til et operativsystem er ganske lang og inkluderer flere språk enn C# Hvis du virkelig vil skrive et OS (jeg har gjort det selv og det er veldig gøy!) så er det en del mer man bør tenke gjennom enn akkurat hvordan shellet skal fungere. Lenke til kommentar
GeirGrusom Skrevet 26. februar 2007 Forfatter Del Skrevet 26. februar 2007 (endret) Jeg er klar over dette, jeg har selv drevet mye med Assembly og C++ og lest blant annet lest litt fra Realtime Operating Systems Jeg har ikke tid til å drive med dette nå, siden jeg begynner å få litt dårlig tid på et prosjekt som skal være i beta stadiet i løpet av mars, så jeg har bare luftet idéen med dere. Glemte å nevne at < tar deg tilbake én, samme som cd.. i DOS Endret 27. februar 2007 av GeirGrusom Lenke til kommentar
ze5400 Skrevet 27. februar 2007 Del Skrevet 27. februar 2007 Hvis det blir noe av dette prosjektet, blir det da GLP, eller "Geir Exclusive Several Thousands of Dollar$ Operating System" ? Lenke til kommentar
GeirGrusom Skrevet 27. februar 2007 Forfatter Del Skrevet 27. februar 2007 Det kan du banne på! ($) ($) __..__ \____/ Lenke til kommentar
Wattengård Skrevet 27. februar 2007 Del Skrevet 27. februar 2007 Mesteparten av det du nevnte er jo enkelt scriptbart med PowerShell for windows, og en kombinasjon av shell-scripting, /proc og /dev i unix. -C- Lenke til kommentar
GeirGrusom Skrevet 27. februar 2007 Forfatter Del Skrevet 27. februar 2007 ChrisitanW: Jeg er klar over det, sjekk ut ngos.zip i en av mine forrige poster, det er et shell jeg laget i C# for dette, grunnen er at det jeg nevner er beste forklart gjennom et shell. Idéen er ikke selve shellet, men at hele Operativsystemet sitt driversystem, og programmeringsinterface skal fungere på den måten, at shellet skal kunne ha full kontroll (i teorien) over operativsystemet. Tenkte også at alle programmer har en liste over securitytokens, som sier hva dette programmet trenger for å kjøre (nettverk, GUI, filsystem, minnekontroll, hardware access etc.) for å kunne gjøre to ting: hindre brukeren i å starte et eventuelt skadelig program, eller å kjøre programmet "exclusive" Operativsystemet laster kun driver og slikt som trengs for at det programmet skal kjøre, ikke noe mer, for å gi dette programmet alle ressursene det trenger. Alle programfiler skal eksportere minst én funksjon: int main og at denne vil bli listet når du er inne på f.eks. /sys/dev/hdd/hdd0/programs/winamp/winamp.exe/main Alle funksjoner må deklarere hva slags datatype de tar imot, sånn at en i shellet faktisk kan kalle spesifikke funksjoner, hvor parameterne kan være av type byte, word, dword, qword, dqword, ptr, eller float80 Dette kan med enkelhet implementeres, men jeg tror ikke jeg har sett det før noen steder. Så hvis en modul eksporterer "int get_something(int hello, byte hei, char *halla) Så skal shellen være istand til å pushe riktig datatyper til stacken før programkoden startes, i forhold til hva slags data brukeren har skrevet. Dette er ikke mulig å få til med et script, men det er mulig å få til i Windows med C/C++ og litt inline assembly, eller rett i assembly eller D Men jeg er ikke interresert i et shell, jeg har tenkt mye på GUI og grafikk også. Jeg er fullstendig imot å bruke 3D aksellerator for grafikken på et OS, siden det er å kaste ressurser rett i søpla, mens det ikke egentlig tilfører noe man ikke kunne klart seg uten, det gjør det bare mye lettere for programmereren. Lenke til kommentar
Bakke Skrevet 28. februar 2007 Del Skrevet 28. februar 2007 (endret) Vis du gjennomfører prosjektet og lager et nytt OS, kan jeg få en kopi? Alltid spennende med et nytt OS Jeg og syns at vista krever litt for mye og "misbruker" ressurser. Så jeg liker idèen din Edit: Skrive feil... Endret 28. februar 2007 av mhbakke Lenke til kommentar
Jaffe Skrevet 28. februar 2007 Del Skrevet 28. februar 2007 Vis du gjennomfører prosjektet og lager et nytt OS, kan jeg få en kopi? Alltid spennende med et nytt OS Jeg og syns at vista krever litt for mye og "misbruker" ressurser. Så jeg liker idèen din Edit: Skrive feil... 8047274[/snapback] For å si det sånn, dette blir vel i beste fall et hobbyprosjekt med støtte av lite hardware, støtte for få programmer, osv. Se på f.eks. Linux, så ser du at selv om tusenvis av folk arbeider på det, er det lite brukt sammenlignet med Windows. Lenke til kommentar
GeirGrusom Skrevet 28. februar 2007 Forfatter Del Skrevet 28. februar 2007 (endret) Du har nok rett... men var det ikke slik Linux begynte også da? Selvsagt vil all kode jeg lager, og binærfiler, være helt gratis på alle mulige måter. Men som sagt har jeg et stort program som er inne i en litt kritisk fase nå, som jeg må bli ferdig med, så jeg får ikke begynt noe før det. edit: det hadde vært gøy hvis noen andre er interresert i å hjelpe til også Endret 28. februar 2007 av GeirGrusom Lenke til kommentar
Jaffe Skrevet 28. februar 2007 Del Skrevet 28. februar 2007 Du har nok rett... men var det ikke slik Linux begynte også da? Selvsagt vil all kode jeg lager, og binærfiler, være helt gratis på alle mulige måter. Men som sagt har jeg et stort program som er inne i en litt kritisk fase nå, som jeg må bli ferdig med, så jeg får ikke begynt noe før det. edit: det hadde vært gøy hvis noen andre er interresert i å hjelpe til også 8048342[/snapback] Det jeg ville få frem er at han kan se langt etter en Windows/Linux-erstatter. Lenke til kommentar
Bakke Skrevet 28. februar 2007 Del Skrevet 28. februar 2007 Så vel ikke etter noen Windows/Linux erstatter, hadde bare hvert gøy å prøvd et OS som noen her på forumet hadde laget Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå