Autor Thema: ANSI C ¦ C89 ¦ C99 ¦ POSIX || Ich blick da nicht mehr dur  (Gelesen 7702 mal)

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
Hi!
Die Frage kam in mir auf, weil ich das Designdoku von <kA> gelesen habe. Du willst ja POSIX integrieren. Ich hab mich dann mal auf die Suche der Standardlib von C gemacht, um Unterschiede zu finden. Doch da gibts ja ganz verschiedene. 15 Header, 18 Header und 24 Header sind die glaub (ANSI, 89, 99). Doch welche sollte implementiert werden? Wo liegen die Unterschiede zu POSIX? Trotz Windows kein POSIX hat, gehen GNU programme teilweise. Ist daher kein POSIX nötig?
Zudem hat ich n paar Tut's über POSIX gelesen. Da steht überall was von Threads. Sind das Prozesse? Kann man die genau gleich verwalten? Gibt es da spezielle Verfahren?
Wenn ich POSIX implementieren würde, wären ja Shell, VI und AWK zwangsmässig dabei. Hab ich dann nicht gleich schon ein UNIX (ok, POSIX ist ja für UNIX). Ist eine Teilimplementation empfehlenswert?

Buh, das sind viele Fragen. Ich hoffe ihr könnt sie beantworten.

mfg, jeb

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #1 am: 16. September 2005, 12:52 »
Ja, das ist auch eine gewachsene, chaotische Sache, die ich zumindestens höchstens soweit umsetzen würde, wie es mir nicht das OS Design versaut.

Also, ich probier mein bestes:

- Meinst du SSJ7Gohan mit seinem Design für blubbOS? ;)

- Ja, wenn du Posix implementierst hast du in gewisser Weise ein Unix (auch wenn jemand meinte Nein, das ist nicht so, aber auf Nachfrage "wie das denn?" kam dann auch keine Antwort), wobei Unix evtl. noch etwas weiter gefasst sein könnte.

- Unter Windows, wenn du Cygwin oder MinGW meinst, die implementieren (so gut sie können) eine POSIX API auf der Win32 API, und lassen GCC usw. dann darüber laufen.

- Generell kann man aber sagen das es unter Windows komplette C Bibliotheken gibt, von daher können C Programme die nur diese und keine spezielle POSIX Funktionen (wie z.b. fork () oder ähnliches) benutzen natürlich eigentlich auch durch den Microsoft C Compiler gejagt werden und "richtig" unter Windows laufen. Nach meinem Wissen gehört z.B. das erwähnte fork nicht zum C Standard.

- Was ANSI, C89 (war das 89??) und C99 angeht, so lässt sich sagen das die Zahlen wenn ich mich richtig erinnere Jahreszahlen sind! ;)
Wobei ANSI dann noch älter als C89 sein sollte.

- Tja, was POSIX angeht, es gibt ja die pthread bibliothek, welche POSIX Threads wohl ermöglichen soll, aber zumindestens unter Linux ist es gar nicht so lange her das das mit den Threads noch so eine war. Ansonsten gibt es unter POSIX sonst wohl nur Prozesse.
*post*

Kevin_

  • Beiträge: 52
    • Profil anzeigen
    • http://fishing-online.lite-os.de
Gespeichert
« Antwort #2 am: 16. September 2005, 14:34 »
Zitat von: Legend

- Was ANSI, C89 (war das 89??) und C99 angeht, so lässt sich sagen das die Zahlen wenn ich mich richtig erinnere Jahreszahlen sind! ;)
Wobei ANSI dann noch älter als C89 sein sollte.

Nenene^^ ANSI is das Standartkomitee das die verschiedenen standarts absegnet/erstellt. und C89 und C99 sind die verschiedenen Version vom Standart. Wobei soweit ich weiß (noch) kein Kompiler den ganzen C99 Standart beherscht

POSIX ist ein Standart um die ganzen Unix Versionen halbswegs kompatibel zueindander zu machen. Wobei Windows NT auch mal nen POSIX Subsystem hatte, XP hat das aber nicht mehr gibt aber sachen zum downloaden die sowas implementieren

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #3 am: 16. September 2005, 16:50 »
Durchaus kann das alte Posixsubsystem evtl. sogar ziemlich komplett zurücksein, wenn man bedenkt das es von Microsoft selber den "Services for Unix" Download gibt.
*post*

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #4 am: 16. September 2005, 17:52 »
@war das wirklcih C89?:NEIN! Es ist glaub ich C90. Aber man sagt auch C89.
@kein C99-Compiler: Hab ich auch gelesen.

Was empfehlt ihr mir nun zu Implementation? Also ANSI bestimmt. Wie ist es mit C89 und C99 (gibts ja noch gar nicht richtig) ?
POSIX: Ich denke ich will einfach GCC haben. Ich würde mich natürlich sehr freuen (aber killt mich nicht grad, ich mach gerne Theorie), wenn GTK und SDL sowie Allegro portriert werden können. Keine Angst, ich glaub nicht das das einfach ist. Aber ich möchte einfach wissen, ob diese Programme spezielle Ansprüche haben oder einfach nur X sowie C-Lib brauchen.

mfg, jeb

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #5 am: 16. September 2005, 18:26 »
GCC könnte ja noch relativ einfach gehen, aber GTK, SDL und Allegro? Entweder neuschreiben oder die APIs anbieten, aber die APIs auf die GTK usw. aufsetzen sind selber verdammt riesig.
Und X ist sicher etwas komplexer, da du ja z.B. auch nen X Server brauchst, und die Kommunikation über Unix Sockets im lokalen Falle oder über TCP/IP im Netzwerkfall.
*post*

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 16. September 2005, 18:34 »
Ich hatte vor, POSIX so weit zu implementieren, dass erstmal GCC läuft. Den Kernel werde ich nicht auf POSIX anpassen, sondern es so wie Cygwin "emulieren" bzw. auf meinen Treibern aufbauen.

Für SDL, GTK und Allegro braucht man ja eigentlich nur einen X Server. Wie kommuniziert der X Server denn mit dem Kernel? Gibt es spezielle Systemcalls, die die Grafik regeln?

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #7 am: 16. September 2005, 21:03 »
Da bin ich ganz SSJ7Gohan's Meinung. Ich werde bestimmt nicht den X-Server implementieren. Das kann jemand machen, der ihn unbedingt für nötig hält. Ich dachte schon an Neuschreiben, doch kann man da ja schon nur bei der Lib einige Erleichterungen einprogrammieren und ich wollte wissen, bis wohin es sich lohnt.

Golum

  • Beiträge: 96
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 18. September 2005, 21:16 »
Der  X-Server lädt einen Treiber der dann die funktionen für die Grafik zur verfügung stellt, ich weiß jetzt aber nicht genau ob diese "Treiber" schon im Kernel laufen oder ob da noch eine Stude dazwischen ist.

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 18. September 2005, 21:33 »
Wenn man POSIX also mehr oder weniger vollständig implementiert, läuft dann auch der X Server, oder braucht der noch andere Schnittstellen?

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #10 am: 18. September 2005, 21:40 »
Wenn Treiber im Kernel laufen sollten (gut, bei ATI und NVidia ist das der Fall, beim VESA Server meine ich nicht), dann werden die die Funktion höchstwahrscheinlich als device file in /dev bereitstellen. Da kann man mal gucken ob man was dazu findet! ;)
*post*

 

Einloggen