Eigenes Betriebssystem / Programmieren

K

kornyfreak

Forum Benutzer
ok...
ich weiß, dass dieses thema echt alt ist...
trotzdem interessiert es mich ziemlich.

ich bin programmieranfäger, habe aber echt große ziele...
ich möche sehr schnell programmieren lernen.
mein ziel:
völlige unabhängigkeit von bestehenden systemen.

ich wollte nur fragen, ob jemand ein buch (online oder nicht)
kennt, dass sich für die Anfängerprogrammierung in z.B. "C" gut eignet.

das ist wirklich ein sehr ineressantes thema für mich, und ich würde wrchklich viel zeit dafür aufwenden...

danke!
 
Standardwerke übers Programmieren gibts viele, da kann ich Dir keins nennen, aber über Betriebssysteme:

Deitel, Operating Systems:
Operating Systems, 3/e

(sind so 1200 Seiten :p ;) )

aber fang vielleicht erstmal mit Programmieren an :D :cool:
 
ich lern gerade java (was mich nicht so direkt begeistert) aber danke!!
 
Für Dein Ziel ("völlige unabhängigkeit von bestehenden systemen.") ist Java in der Tat eine denkbar ungünstige Sprache und um ein Betriebssystem zu entwickeln ists auch verkehrt (oder sagen wir: nicht ideal).

Die Entwicklung in der Java-Welt sieht meist so aus, daß man auf jeden Fall vermeidet, immer wieder das Rad neu zu erfinden. Darum ist ein Großteil der Arbeit mit Java das Lernen, Verstehen und Anwenden von bestehenden (Teil-)Lösungen, sog. "Frameworks" für viele Zwecke, Beispiele: Spring, Hibernate/JPA, JAX WS, swing usw.
Wenn man mit Software Geld verdienen will, dann kann man es sich heute nicht mehr leisten, jedes mal wieder bei Null anzufangen.

In anderen Sprachen ist die Verbreitung bzw. Vielfalt von Frameworks nicht ganz so extrem (bspw. in .NET haste halt überwiegend das, was MS mitliefert), aber komplette Unabhängigkeit von bestehendem wirst Du heute seltenst erleben, es sei denn Du entwickelst wirklich ohne festen Zeit- und Kostenplan.

Ein "Guru" für UML/Objektorientierung und Vorgehensmodelle in der Software-Entwicklung ist z.B. Martin Fowler
 
Zuletzt bearbeitet:
ich will software entwickeln, die bisher nicht sehr gebräuchlich ist. ich finde es abolut schlecht, dass software immer wieder auf dem selben basiert. außer windows, mac und linux gibts nur wenige EIGENSTÄDIGE systeme die von "allein" laufen. niemanden interessiert sich für die grundlagen, und daher kommt immer das gleiche und nie was neues raus. ich möchte ewas entwickeln, das nicht wieder das gleiche ist. mac windows und linux ähneln sich auch irgendwie. hat jemand schonmal an einen runden monitor gedacht??
oder an einen computer mit laser beleuchtetem monitor?? ich wei das kinkt alles sehr verrückt, aber ich denke auch, dass sich manche nicht genügend zeit nehmen, um das richtig auszuarbeiten.
ich will einfach mal was neues bzw anderes....
 
naja, ich will Dir Deine Träume nicht nehmen, insofern: wenn Du (neue) Ideen hast, von denen Du überzeugt bist, dann mach nur.

ich finde es abolut schlecht, dass software immer wieder auf dem selben basiert.
da liegt allerdings ein Missverständnis vor. Die Basis muß einer gewissen Norm folgen, wie verbindet man sich zu einer Datenbank ? wie ruft man einen entfernten Prozess auf (z.B. sog. WebService) ? - dies sind nur einige Beispiele dafür, warum es definitiv nicht ohne gemeinsame Basis geht.

und:
Man kann nicht alles immer wieder neu erfinden (jedenfalls nicht, sobald es auch um Geld verdienen geht). Das wäre total uneffizient !
Das wäre wie ein Physiker, der jeden Früh wieder von vorn beginnt, zu untersuchen, warum eine Kugel eine schiefe Ebene herunter rollt und der zum Feierabend nie weiter ist als bis zu Newtonschen Gravitationsgesetz, um dann am anderen Morgen wieder von vorn zu beginnen.

Gewisse Dinge muß man einfach voraussetzen. Darüber kann man sich keine Gedanken machen (das muß nicht bedeuten, daß man sie nicht verstanden hat) und das das bedeutet auch nicht, daß diese Strategie der Grund ist, wenns an der Oberfläche (zu) wenig neue Ideen gibt.
Verwendung von Frameworks und Standard Design-Patterns merkt man dem Ergebnis nämlich nicht an, außer vllt. daran, daß es schnell fertig wurde und leicht Änderungen verträgt.

Bspw. gewisse grafische Gemeinsamkeiten ergeben sich einfach aus der Sache heraus. Diese Dinge sind so dermaßen logisch, die muß es immer irgendwie geben (wie sie konkret aussehen, das mag wieder ne andere Frage sein), zum Beispiel:
Scroll-Möglichkeiten, Radio-Buttons (="entweder oder"), Checkboxes (="ja/nein"), Schalter oder Flächen für OK und Abbrechen. Auswahlfenster für Verzeichnisse und Dateien (allgemein: Speicherplätze für Informationen).

hat jemand schonmal an einen runden monitor gedacht??
oder an einen computer mit laser beleuchtetem monitor??
das sind aber Hardware-Dinge, außerdem: was soll ein "laser beleuchteter monitor" bitte sein ? worin sollen die Vorteile liegen ? tststs
Ein runder Monitor würde für die meisten Zwecke die Fläche sehr schlecht ausnutzen und wäre nur für Spezialfälle sinnvoll.
 
Zuletzt bearbeitet:
Das sind ehrgeizige Ziele:

Wirklich bei Null anfangen heißt aber auch, die Hardware selbst zu bauen. Wenn du kein Multimilliardär bist, wirst du es recht schwer haben. Um ein eigenes Betriebssystem zu bauen, dass auch mit der Hardware kommunizieren kann, wirst du Assembler-Code verstehen lernen müssen. Aber wie ein Vorposter schon sagte: Wieso das Rad neu erfinden?

Nachdem du aber erst ins Programmieren einsteigst, ist für den Anfang eine menschenlesbare Sprache wie C++, C# udgl. genau das Richtige. Da lernt man Grundlagen der Programmierung.

Ich persönlich bin ja ein Java-Fan, weil es eben schon viele Frameworks gibt, wo man nicht immer wieder neue Methoden schreiben muss oder diese aus einem bereits geschriebenen Programm kopiert und adaptiert. Gerade in Verbindung mit GUI und DB sind Frameworks Gold wert, da man nicht an alles selber denken muss, sondern vieles schon da ist.

Nicht sehr gebräuchliche Software:

Den Ansatz find ich interessant. Sachen die nicht gebraucht werden, verkaufen sich in der Regel nicht sehr gut. Gegen Innovationen ist nichts einzuwenden, aber nachdem der Mensch ein Gewohnheitstier ist, haben Produkte, die nicht sehr intuitiv zu bedienen sind oder schon in ähnlicher Weise bekannt sind, ein schweres Leben. Schreib noch ein bisschen mehr, ich find das auch interessant. Runde Bildschirme sind auch so eine Sache. Welcher Nutzen steckt dahinter? Welche Vorteile bringt das dem Benutzer?

Aber in der Hinsicht hab ich auch recht wenig Phantasie. Ich bin eher im Team gut, wo aus mehreren guten Ideen eine richtig gute entsteht.

Lg JJ.
 
Ich persönlich bin ja ein Java-Fan, weil es eben schon viele Frameworks gibt, wo man nicht immer wieder neue Methoden schreiben muss
mich deprimiert es mitunter aber auch ziemlich, mich ständig in die Ideen fremder Leute reinzufräsen. Ausserdem sind diese -bedingt durch den Versuch, etwas Allgemeingültiges zu definieren- häufig (für mich) unnötig kompliziert. Mit swing (Framework für grafische Benutzeroberflächen) komm ich z.B. garnicht gut klar. Selbst log4j (relativ simpel, eigtl nur ein Paket für Logging) schmeißt manchmal Fehler und verlangt manchmal Einstellungen, die mich ziemlich abschrecken und nerven ("no appender found" - grrr).
 
ich finde apple hat schon mal recht gut angefange:
ein system für das bestimmt konfigurierte hardware notwendig ist.
bei bei einem betriebssystem wäre es natürlich nützlich, gewisse funktionen selber einzustellen:
für z.B. windows design änderungen benötige ich manchmal gewisse programme, sprich z.B. TuneUp...
manchmal muss man mauell gewisse dateien im windows folder ersetzten oder löschen (kommt eher selten vor) um die gewünschten einstellungen zu erreichen.
es wäre doch viel einfacher, wenn man sich das ganze von Anfang an selbst einstellen kann (es würde natürlich eine jederzeit aufrufbare rekonstruktions partition geben, die jedoch DATEN NICHT LÖSCHT, außer man hat es darauf abgesehen). Im windows fressen sich manche dateien so tief rein, dass man sie nur mit Mühe wieder rausbekommt. Ist das nicht komisch? das eigene system kann auf windows baierende dateien nicht von der festplatte entfernen... also ich finde das sinnlos:
der benutzer sollte die KOMPLETTE "macht" über sein Geät haben. es dürfte nichts geben, das sich nicht löschen lässt (abgesehen vom system selber). Das system sollte sofort unterscheiden, ob eine Datei anteils des systems oder eines programms ist.
das ganze ist natürlich viel unstabiler als z.B. windows.
gegen so was lässt sich einfach was unternehmen:
KEIN programm darf änderungen in der System - partition vornehmen.
verlaufeinträge werden in einer extra partition gespeichert, die (wenn der benutzer es nicht genau darauf absieht) vom system geschützt wird.
das ganze ist natürlich ein leichtes daten-verlust-risiko;
als standart einstellung könnte man die daten natürlich schreib- löschgeschützt machen. (diese einstellung sollte der benutzer jedoch aufheben können)...
 
mich deprimiert es mitunter aber auch ziemlich, mich ständig in die Ideen fremder Leute reinzufräsen. Ausserdem sind diese -bedingt durch den Versuch, etwas Allgemeingültiges zu definieren- häufig (für mich) unnötig kompliziert. Mit swing (Framework für grafische Benutzeroberflächen) komm ich z.B. garnicht gut klar. Selbst log4j (relativ simpel, eigtl nur ein Paket für Logging) schmeißt manchmal Fehler und verlangt manchmal Einstellungen, die mich ziemlich abschrecken und nerven ("no appender found" - grrr).

Stimmt, Swing ist ärgerlich und kompliziert... ich arbeite mich grad in RichFaces ein, da geht vieles von allein... allerdings eher für WebApps gedacht.

JG JJ.
 
ich finde apple hat schon mal recht gut angefange:
ein system für das bestimmt konfigurierte hardware notwendig ist.
bei bei einem betriebssystem wäre es natürlich nützlich, gewisse funktionen selber einzustellen:
für z.B. windows design änderungen benötige ich manchmal gewisse programme, sprich z.B. TuneUp...
manchmal muss man mauell gewisse dateien im windows folder ersetzten oder löschen (kommt eher selten vor) um die gewünschten einstellungen zu erreichen.
es wäre doch viel einfacher, wenn man sich das ganze von Anfang an selbst einstellen kann (es würde natürlich eine jederzeit aufrufbare rekonstruktions partition geben, die jedoch DATEN NICHT LÖSCHT, außer man hat es darauf abgesehen). Im windows fressen sich manche dateien so tief rein, dass man sie nur mit Mühe wieder rausbekommt. Ist das nicht komisch? das eigene system kann auf windows baierende dateien nicht von der festplatte entfernen... also ich finde das sinnlos:
der benutzer sollte die KOMPLETTE "macht" über sein Geät haben. es dürfte nichts geben, das sich nicht löschen lässt (abgesehen vom system selber). Das system sollte sofort unterscheiden, ob eine Datei anteils des systems oder eines programms ist.
das ganze ist natürlich viel unstabiler als z.B. windows.
gegen so was lässt sich einfach was unternehmen:
KEIN programm darf änderungen in der System - partition vornehmen.
verlaufeinträge werden in einer extra partition gespeichert, die (wenn der benutzer es nicht genau darauf absieht) vom system geschützt wird.
das ganze ist natürlich ein leichtes daten-verlust-risiko;
als standart einstellung könnte man die daten natürlich schreib- löschgeschützt machen. (diese einstellung sollte der benutzer jedoch aufheben können)...

Eine Binsenweisheit auf einer Pinwand in den Räumen der Fakultät für Informatik der Universität Wien:

Use Windows, reboot.
Use Linux, be root!

Soviel zur absoluten Macht des Benutzers...

LG JJ.
 
Ich finde auch, daß Apple gut angefangen hat:

Unter der bunten Oberfläche arbeitet ein Unix mit 64 Bit.
Wie bei meinem Linux auch.

Nur mein Gnome war bissl billiger. Und wenn man sich auskennt, kann er auch mehr.
 
niemanden interessiert sich für die grundlagen, und daher kommt immer das gleiche und nie was neues raus. ich möchte ewas entwickeln, das nicht wieder das gleiche ist. mac windows und linux ähneln sich auch irgendwie
ich muß allerdings sagen, daß ich den Eindruck habe, Dir ist nicht bewusst, was ein Betriebssystem alles tut und was es können muß:
Die Dinge, die Du hier beschreibst, die mögen für Dich spannende Ideen sein, aber in einem kompletten Betriebssystem sind das wahrscheinlich allenfalls die letzten 2 bis 3 %.

Insofern muß ich Dir den Zahn echt mal ziehen:
Wenn Du wirklich alles selbst neu schreibst, dann müsstest Du Dir zunächst Gedanken über ganz andere Dinge machen - nämlich über alles, was nach dem Einschalten des Rechners und nach dem Bios passieren soll.

Da fängst Du dann aber wirklich bei Adam und Eva an und -da kannste sicher sein- bis Du überhaupt eine (leere) grafische Arbeitsfläche hast, über der Du auch nur eine Maus bewegen kannst, da bist Du -wie gesagt- mit dem zugrunde liegenden "Betriebssysten" eigentlich schon zu mindestens 90 % fertig.

Da ist der Ansatz, der in Stichs Beitrag steckt, doch etwas realistischer: Benutz Linux und mach einen neuen, eigenen Desktop (also eine GNOME oder KDE-Alternative). Da bist Du auch locker mal die nächsten Jahre beschäftigt :rolleyes:, kannst aber auf die Basis eines bestehenden Systems zurückgreifen, was I/O Operationen, Dateisystem, Speicher- und Jobverwaltung, Berechtigungskonzept, Sicherheit (um nur Einiges zu nennen) anbelangt.
 
Zuletzt bearbeitet:
Ok ich hab noch einen anderen Einwurf:

Die genannten Daten stammen aus diversen Artikeln in Linux Blogs und Zeitungen.

Ein fertiges Fedora 9 enthält 204.500.946 Zeilen Code. Schätzungen zufolge dauert es etwaq 60.000 Mannjahre, so eine Distribution zu bauen.

Aber zück mal deinen Taschenrechner und mach eine kleine Abschätzung, wie lange du ohne nachdenken nur fürs Eintippen von so vielen Zeilen mit sagen wir mal 40 Zeichen pro Zeile brauchen wirst.

Tipp: Nimm den Taschenrechner von Windows, der kann mehr Stellen anzeigen als dein kleiner für die Schule.

edit: Poste uns doch mal ein Stück code von dir, dann können die Forenmitglieder beurteilen, wie viele 1000 Jahre du leben wirst müssen, bis du ein IBM DOS hinbekommen hast...

Aber ernsthaft: Wenn du dich für hardware-nahe Programmierung wirklich interessierst, dann such nach Microcontrollern für den Anfang, ein PIC oder ATMEL Entwicklerboard kann da viel helfen und da bist du zu Preisen unter dem eines Netbooks dabei. (und bald ist Weihnacht...)
 
Zuletzt bearbeitet:
btw.: ist das eigtl. richtig, daß Linux in c++ geschrieben ist ?

edit: Poste uns doch mal ein Stück code von dir, dann können die Forenmitglieder beurteilen, wie viele 1000 Jahre du leben wirst müssen, bis du ein IBM DOS hinbekommen hast...
nun, dazu muß man aber fairerweise sagen, daß der Fragesteller ja eigentlich ein Buch über Programmierung (mit c) sucht. Ich hab sogar schon Kollegen gefragt, aber gute Tips hab ich immer noch keine, hier machen alle nur Java, PHP und ein bisschen VB.NET.

Weiterhin vermute ich -wie gesagt- daß "kornyfreak" noch sehr jung ist und schnell lernen wird, was ein Betriebssystem eigentlich alles tut. Deshalb halte ich mit meinen Buchtips zu Betriebssystemen auch nicht hinterm Berg :rolleyes: - hier also noch ein Standardwerk:

"Moderne Betriebssysteme" (Andrew S. Tanenbaum)
 
ich habe nicht gemeint, dass ein betriebssystem nicht auch auf z.B. linux basieren kann...
ich fände es genauso interessent mit dem aufbau von linux zu arbeiten.
nur wäre windows als grundbaustein nicht so meins.
mit windows kann der benutzer (außer er kennt sich wirklich gut aus)
fast keine einstellungen im system vornehmen.
ich finde das blöd.
man könnte natürlich hilfsmittel sprich:
fertige "Maussteuerung" oder so
für das system verwenden.
natürlich habe ich als erstes nicht an grafische oberflächen, sondern nur an eine simples boot-pack, dass vielleicht eine datei von F:/ nach C:/ kopiert oder so...
will nur nicht falsch verstanden werden...
 
Zitat aus Wikipedia:

Der Kernel ist ein in der Programmiersprache C geschriebener monolithischer Betriebssystemkern, wichtige Teilroutinen, sowie zeitkritische Module sind jedoch in prozessorspezifischer Assemblersprache programmiert.

Um gleich noch mit einem Irrtum aufzuräumen: Linux heißt nur der Kernel, dh eigentlich bzImage und die Module dazu. Das, was der unkundige Informatiker so nennt, heißt Distribution.

Die ganzen Oberflächen sind soweit ich weiß dann in c++ und in diversen Interpretersprachen wie Perl oder Java geschrieben.

edit:
ich habe nicht gemeint, dass ein betriebssystem nicht auch auf z.B. linux basieren kann...

Linux IST das Betriebssystem, darauf kann man dann aufbauen. Oder was dazu.
 
Win. XP´s grafische oberfläche wurde auch mit c++ und c# geschrieben!!
 
Ja das stimmt auch. Und von der Code Menge her dürfte es nah dran sein am Wert für Fedora.

Um zum ursprünglichen Thema zurückzukehren:

Du willst ja programmieren lernen, und dafür Tipps haben: Such dir eine Sprache aus, die frei ist, und gut dokumentiert. Am besten eine moderne, die viele Möglichkeiten und Beispiele bietet.

Für den Anfang super sind Interpretersprachen, weil da der Interpreter viele Fehler abfangen und Schaden vom Betriebssystem abwenden kann.

Wenn du was mit grafischer Oberfläche willst, wo man sich spielen und herumexperimentieren kann, dann empfehle ich Java. Dazu gibts haufenweise Doku, Beispiele usw.

Für den Einstieg empfieht es sich, mal alles zu installieren, dann ein Beispielprogramm zu nehmen, und mal laufen lassen. Sehen was es tut, und dann einfach mal Kleinigkeiten ändern.


Falls es interessiert: Ich habe meine ersten echten Programme für PICS und für einen 8085 in Assembler gemacht, und die meisten Sachen im Moment sind scripts für sh und bash.

Als "Hochsprache" für dienstliche Belange benutze ich zusätzlich Labview, wobei das nicht direkt eine Programmiersprache ist.
 
ich habe nicht gemeint, dass ein betriebssystem nicht auch auf z.B. linux basieren kann...
dann ists nur eben kein Betriebssystem, was Du entwickeln willst. Macht ja nix

Ich würde zum Einstieg irgendwas aus der .NET Welt oder Java empfehlen, das sind einfach die häufigsten "echten" Sprachen (natürlich gibts noch viel viel mehr, sowas wie Pearl, PHP, Cobol usw. oder auch "richtiges" C oder C++, ....). Allerdings find ich Java schon relativ komplex, für den Anfang (gute Entwicklungsumgebungen unterstützen dich!). Evtl. würd ich VB (bzw. VB.NET) vorschlagen.
 
Zuletzt bearbeitet:

Ähnliche Themen

Mit dem MacBook Pro 2016 den Schreibtisch entrümpeln?

NB mit Win7 für Office, Internet

Brauche Hilfe im Notebook-Dschungel

subnotebook (lenovo?) für reise. Betriebssystem?

XP Installation (Dualboot) auf X53SV-SO951V

Zurück
Oben