os programmierung
-
ich weiß, niemand will so etwas hier lesen, aber ich schreib es trotzdem einmal. ich möchte in meiner studienzeit ein einfaches os schreiben.
es sollte aus einem kernel bestehen, der nur speicher und prozessmanagment übernimmt. weitere funktionen des os sollten von halbprivilegierten diensten erledigt werden zb einem dienst, der den dateizugriff steuert oder das netzwerk oder auch die konsole.
ich hab auch weitere ideen, doch will ich die nicht alle jetzt gleich schreiben, ohne überhaupt eine rückmeldung. wenn sich jemand dafür interessiert, dann bitte schreibt mir doch. und bitte keine "das kannst DU sowieso nicht" antworten. ich behaupte nicht, irgendeinem os konkurenz machen zu können. ich möchte es nur aus eigenem interesse am programmieren und an betriebssystemen versuchen. und zeit hab ich genug, da ich noch lange studieren werden *g*.
ich hoff, dass konstruktive antworten kommen bzw überhaupt welche. meine icq nummer is 54419178, falls sich jemand direkt bei mir melden will....
-
Kauf dir ein paar bücher....
-
OS-Developer ist dein OS eigentlich schon im Handel?
-
erstens: ich bin nicht der os developer.
zweitens: ich hab schon ein paar büchergibt s hier wirkclich niemanden den das interessiert? sind nur spiele interessant? schade...
-
Klingt nicht uninteressant...
Aber... Es fehlen mir ein paar Infos....
-
cool endlich mal eine positive antwort :-))
also ein paar infos:
die meisten funktionen des betriebssystems sollten nicht im kernel liegen. der kernel sollte nur mehr für die prozess und speicherverwaltung zuständig sein. dieser wird im ring 0 sitzen. also ein wirklicher mikrokernel.im ring 1 laufen bestimmte daemonen. das sind serverprozesse, die als richtige prozess vom kernel verwaltet werden, aber eben ein paar mehr rechte haben, aber nicht ganz alle. solche dienste sind zb: ein consolen daemon (in den verschiedene shells dynamisch während der laufzeit geladen werden können, telnet/ssh server ist auch hier direkt eingebaut) dateisystem (zuständig für alle dateioperationen einschließlich netzwerk dateisystem), netzwerk allgemein (von arp über ip4/6 bis zu tcp/udp; hier sind auch routing protokolle einzubauen), gui (hmm naja solte auch ein daemon werden, aber das is eher noch weit in der zukunft...)
in ring 2 liegen alle derzeit inaktiven prozess, die nicht 0 und 1 sind (eh klar). dadurch kann kein laufender prozess der in ring 3 lauft auf andere speicherbereiche oder ports zugreifen, als die seinen....
die api sollte über call gates laufen. der kernel, die daemonen und die programme kommunizieren über shared memory (das vom kernel aber verwaltet wird), das von programmen mit api funktionen beschrieben bzw ausgelesen wird.
das os sollte ähnlich wie unix multiuser-fähig sein. und zwar in erweiterter funktion. zb sollte der browser oder andere (netzwerk) programm unter einem anderen user laufen als der menschlich eingeloggte. dadruch lassen sich bugs wie zb der im flash player in griff bekommen. (hab das selber in linux simulieren können und es klappt gut.) so kann auch verhindert werden, dass ein prozess unverhältnismäßig viel performance verbraucht und sich nicht einmal die maus bewegen lässt.....
grundsätzlich sollte alles sehr stark auf standards hinauslaufen. zb das installieren von programme (sollte wie bei apt-get klappen ) bis hin zur aufteilung der dateisystem hierarchie... nicht so wie bei linux, wo suse kde in /opt/kde ablegt und kde selber eigentlich ganz so anders hin will... und so sachen. alles sollte genau geregelt sein. und zwar von anfang an.... was aber nicht heißt, dass man solche sachen nicht mehr konfigurieren kann.
hmmm ich bin auf die antworten gespannt....
-
Hi info-student,
das klingt so als hättest du schon
etwas Ahnung von der Materie. Da das für mich noch etwas
zu hoch ist halte ich mich raus.
Trotzdem würde mich der Verlauf des Projekts interessieren.
Ich würde auch mal Alpha/Betatest spielen.Bye Peter.
-
danke für dein interesse
aber warten wir einmal ab. das "projekt" hat ja noch nicht einmal begonnen...
-
Hallo info-student
Ich würde sehr gerne mithelfen. Allerdings habe kein grosses Vorwissen in diesem Gebiet. Ich habe mich einmal etwas mit Assembler-Programmierung beschäftig. Und ich habe mir auch schon einmal vorgenommen einen Bootmanager oder ein Mini-OS (wirklich mini noch viel viel kleiner als deines) zu programmieren. Leider bin ich noch nicht dazu gekommen.
Momentan beschäftige ich mich in meiner Ausbildung (Lehre als Informatiker Fachrichtung Applikationsentwicklung (CH)) mit der programmierung neuronaler Netze. Ich könnte mir aber gut vorstellen danach an so einem Projekt mitzuhelfen.
Gruss schoetz
-
sagen wir es mal so: lust hätte ich schon. nur könnte ich es nicht!
-
Hallo...
möglicherweise hilft dir das hier ja weiter...
http://www.binary-pulse.org/projects/view_art.php?id=47&page=1&dir_id=8
sehr low-level festplatten ansteuerung so mal zum anfangen
aber über ein bios und ide controller usw... gehts sehr viel einfacher
ciao
-
hallo, dein projekt interessiert mich. ich programmiere zwar nicht mehr allzu viel, hab aber selber mal mit einem sehr kleinen os begonnen, allerdings noch mehr dos-like. kannst dich gern mal bei mir melden: xx
-
hi an alle!
scheinbar gibt s ja doch etwas interesse an der os-programmierung. das freut mich echt, da so ein projekt ohne viel mithilfe eh nicht zu bewältigen ist.
als erstes sollten die grundvoraussetzungen feststehen, bevor die planung beginnt. welche grundsätzlichen features sollte das os haben? in welcher sprache wird es hauptsächlich geschrieben? welche asm syntax sollte verwendet werden (da is vielleicht nasm mit der intel syntax klug, da es den für linux und windows gibt)?
wichtig sollte auch sein, dass man neue features erst dann einbaut, wenn schon existierende wirklich gut funktionieren. nichts halb ausgegohrenes.
wir brauchen dann auch eine möglichkeit uns mitzuteilen. nur den thread hier zu verwenden wird nicht ausreichen denk ich. irgendwelche ideen?
ja ok. das is wohl das erste was wichtig ist. die planung sollte so gut wie möglich sein, da man dann hoffentlich weniger probleme beim implementieren hat.
meine vorstellung ist, dass ein großer teil in c++ programmiert wird. nur wirklich wichtige teile sollten direkt in asm geschrieben werden (teile die man in c++ nicht schreiben kann bzw teile, die sehr perfomant sein müssen bzw teile die an bestimmte prozessoren angepasst werden sollten). der erste teil sollten die elementaren datentypen sein, wie queue, stack, string, array, list (vielleicht schon im kernel). sie sollten ein wichtiger teil des os darstellen und deshalb verstärkt aufmerksamkeit bekommen, da sie sich vom kernel bist hin zur api durchziehen sollten (einheitlich eben). hier bietet sich eben c++ an.
paralell dazu könnte mit einem einfachen bootsektor, in dem schon in den protected mode geschalten wird, begonnen werden. dieser bootsektor ladet einen testkernel, der halt irgend eine dummy-meldung ausgibt. so wie "kernel loaded :-)" oder so. nur um zu zeigen, dass er funktioniert.
ok jetzt bin ich auf eure reaktion(en) gespannt.
-
Hallo...selbst find ich mich nicht in der lage ein OS zu programieren.
Dan nur wenig ASM erfahrung und nur mit altem prozessoren (8085).
C kann ich aber ich hab nicht genug zeit dafür... Jedoch kan ich dir die
möglich keit auf meiner Seite bieten dein Projekt zu verwalten und publizieren.
Project boards, sehr gute dokumentations möglichkeiten, todo listen, download section, maillinglist (private und öffentliche), gratis e-mail (unlimited space), schnelle leitung =>100 od. 10 Gbit usw...
alles gratis => studenten seit (wir sind zwei). Da es sich um grosses projekt
handelt würde ich euch dann nur english als sprache anraten. Linus Torvalds hat
auch alles in englisch gemacht (glaub ich jedenfalls).
Wenn du dich dafür interessierst sag mir bescheidunter:
www.binary-pulse.org
Byebye
-
Hi,
ich hab etwas Ahnung in ASM und kann rel. gut C++! (Hab 2. Runde im BWInf erreicht [Hab mit C++Builder geproggt, kann aber auch C++!])Also ich würde gerne mitmachen! Zeig mal was du schon hat (fals du schon was hast)!
Hab auch schon mal einen Bootloader in ASM geproggt!!
Danke
Alexander Sulfrian (sulfrian@gmx.net)
PS: Könnte auch noch ne Kategorie OS-Programmierung in meinem Forum einrichten!
Merry Xmas!
-
@info-student:
du willst ein micro-kernel system schreiben??
falls dein projekt wirklich "nur" zu spasseszwecken dienen soll denk ich mal ist das vertretbar. denn: microkernel ist besser strukturiert, der kern wird kleiner, viele dinge können im userspace laufen.das thema ist wirklich heiss diskutiert. schon linus und tannenbaum haben sich böse mails dazu geschrieben (minix(microkernel) vs linux(monolithischer kern).
den jetzigen stand der betriebssysteme nach zu urteilen hat sich wohl der monolithische kern durchgesetzt, und zwar aus performance-gründen.
linux ist von natur aus monolithisch, windows nicht von natur aus, ist aber im laufe der zeit mehr oder weniger so geworden (sehr viel ist in den kernel-space gewandert um die vielen context-switches zu vermeiden).....den unix systemaufbau kenn ich nicht 100% von daher verkneif ich mir nen kommentar. micr-kernel systeme wie mach gibts nicht wirklich mehr, bzw. haben keine große beseutung mehr.nächstes problem ist, dass die jungs die mal microkernel systeme geschrieben haben, echte betriebsystemhacker waren. da waren die performanceverluste wahrscheinlich noch kleiner, da die fiess assembler hacken konnten und alles zeitkritische so doch "etwas" schneller machen konnten.
beim microkernel bekommst du halt probleme mit der kommunikation zwischen den einzelnen komponenten. wenn da immer zwischen kernel und userspace geswitchet werden muss.(bzw, ring x nach ring y....so war es glaub ich bei deinem ansatz)ja, zu guter letzt will ich dir noch etwas mut machen:
hör nicht auf die "das schaffst du doch nie"-jungs. heutzutage ist es wohl unmöglich ein konkurrenzfähiges os zu schreiben, da gegen win, linux und unix nicht mehr viel zu machen ist. höchstens du hast einfach nen coolen ganz neuen ansatz. aber: minix war am anfang auch nur 10000 LOC gross. Linux ist auch mit ein paar assemblerroutinen geboren worden. von daher ist es jedenfalls sehr wohl möglich ein kleines os zum spass zu schreiben.
wenn du viel in c++ schreiben willst würde ich vielleicht mal folgenden ansatz verfolgen(so hättest du vielleicht auch was neues):
windows ist beispielsweise auch in gewisser weise objektorientiert. in dem sinne, dass alles als objekt dargestellt wird (stichwort: object-manager, etc.). es wird allerdings nicht objektorientiert programmiert(is ja in C und asm geschrieben). du könntest ja vielleicht mal checken inwiefern es möglich ist einzelne objekte im os wirklich als klassen zu programmieren. fraglich ist halt nur die performance. ist aber unter umständen ne coole sache. dann hättest du ein vollkommen objektorientiertes os. (klar ist, dass du um teile in assembler nicht rum kommst. und das ganze ist keine lange überlegte idee.....ist mir nur gerade beim schreiben gekommen).
-
so, im proggen bin ich noch net so weit.. nur nen bisschen c++, aber wenn s wirklich was wird kann ich evtl. space (webspace, ftp, http) zur Verfügung stellen zum down/upload von files.. also, dass auch andere mithelfen können oder sich das ziehen können, dann könnte ich evtl. auch ne page dazu machen ..
-
@valen16:
danke für das angebot. ich werd daran denken. vorerst wird sicher lange zeit nichts publiziert werden, da man ja zuerst was funktionierendes braucht@Alexander Sulfrian
ebenso danke für s angebot. werd daran denken. derzeit hab ich nichts was wirklich teil des os sein sollte. ich hab mir das nur mit den datentypen überlegt und eine halbwegs schnelle string klasse geschrieben...@icke
ja hab von diesen diskussionen gehört. ein grund für einen mikrokernel ist eben die bessere sturukturierung. man kann zb den netzwerkstack einfacher updaten ohne ein anderes system zu verändern. zb den sound oder so was. also sachen die ja eigentlich gar nichts miteinandern zu tun haben.du hast sicher recht. context-switches brauchen zeit. doch das brauchen sie in anderen betriebssystemen auch. außerdem hat das os ja neben dem kernel und dem user space noch einen 3. raum. in ihm laufen die daemonen. sie sollten schon mit genügend rechten ausgestattet werden, dass sie direkt auf die hardware zugreifen können. die frage ist nun, wo ich mehr context-switches hab als ein mikrokernel... kommunikation lauft über shared memory. die daemonen haben so viele rechte, dass sie jedem user space programm direkt daten in den schoß schreiben können. und das sollte auch so sein. ich möchte so wenig wie möglich kopieren im speicher. alles so direkt wie möglich.
calls in den kernel direkt sollten mit sysenter und sysexit funktionieren sofern das der prozessor unterstützt. ich weiß, das können nicht viele.zu c++: ja genau so hab ich mir es gedacht. das ist sicher etwas neues, wenn die api nur mehr rein oop ist. das ist dann sicher ein unterschied zu den großen betriebssystemen und auch zu vielen anderen kleineren... (auch atheos is nicht in c++. nur die gui.)
der nachteil ist, dass die api dann vollkommen neu ist und mit posix zb rein gar nichts zu tun hat. (was ja vielleicht auch nicht ganz schlecht ist).du scheinst dich gut auszukennen. würd mich freue, wenn man mehr von dir hören könnte, entweder neue ideen, oder kommentare zu anderen
@ranus.net
hmm das mit der homepage merk ich mir. aber vorerst ist das zweitrangig, weil für mich das os wichtig ist. nicht eine homepage. ein kleines forum so mit phpbb oder so wär vielleicht irgendwann praktisch.
-
Die Diskussion Monolith vs Micro ist übrigens hier nachzulesen (sehr interessant)
Diskussionicke:
linux ist von natur aus monolithisch, windows nicht von natur aus, ist aber im laufe der zeit mehr oder weniger so geworden (sehr viel ist in den kernel-space gewandert um die vielen context-switches zu vermeiden)Jap, Windows ist ein Microkernel allerdings ohne die Vorteile eines Microkernels:) Kann man wohl heute auch als Monolith bezeichnen.
Denke das heutzutage der Monolith Linux eher der Idee eines Mikrokernel entspricht (kernel module).icke:
micr-kernel systeme wie mach gibts nicht wirklich mehr, bzw. haben keine große beseutung mehr.Ja stimmt, aber Hurd ist doch bald fertig, das ist so weit ich weiß ein richtiger Microkernel. Vielleicht der Kernel der Post-Linux-Ära.
Interessant in dem Zusammenhang auch die Aussage von Linus vor 11 Jahren:I can (well, almost) hear you asking yourselves "why?". Hurd will be
out in a year (or two, or next month, who knows), and I've already got
minix.Den Satz über Hurd kann man so wie er da steht auch Heute schreiben:) Na ja, ich denke diesmal wird nächste Jahr wirklich was brauchbares released...
sorry nur halb "On Topic"
bis dänn, O'Dog
-
klar das ist kein prob. aber ich kann euch evtl. da was einrichten : www.coders-zone.de www.coders-zone.de/vorlage
das geht erst bald on ....