Leute gesucht!!!
-
Original erstellt von volkard:
[quote]Original erstellt von Programmer85:
[qb]Hier steht alles! --> http://4116.rapidforum.com/topic=191787405160Mal schaun, ich hätte ein paar Vorschläge. Hat nämlich gar keinen Zweck, wenn Ihr was bastelt, was keiner haben mag. Und während ich so rumprogrammiere und mich über mein enges OS lächele, kommen mir manchmal Ideen, was man brauchen könnte.
- Persitenz auf OS-Ebene. jedes Objekt, hat seine eigene Adresse aud der Platte. Daß es zeitweise im RAM lebt, ist nur Performance-Ding. Will endlich nicht mehr Ladezeiten und Speicherzeiten haben. Und warum bootet mein OS nicht in 1 Sekunde? Macht das mal besser.
- Multithreading ohne Zeitscheiben erlauben, damit man in eigenen Progs auf Synchronisationsdinge verzichten darf und die high-performance-server noch mehr speed bringen. Mit nem schneller server auf dem os habt ihr dann auch ein nettes werbeargument. legt einfach alles frühzeitig so an, daß ihr bsd diesbezüglich aus dem rennen kickt.
- rechtevergabe auf objektlevel. vielleicht nehmen wir speicherseiten dafür? ein ganzer prozess ist ne zu große einheit für sowas, trozudem wird normalerweise der prozess (ist ja auch nur ein objekt) doie rechte kriegen, denke ich. passt auch irgendwie harmonisch zur persistenz.
- das filesystem muß endlich transaktionen unterstützen. und ich will nie mehr aufs commit warten müssen. also wenn ich 10GB auf den Platten umherkopiere und beide Platten gelockt sind, dann brauch ich als user doch nicht minutenlang warten müssen. einfach sofort links machen, copy-on-write-strategie aufsetzen und in der idlezeit die daten langsam rüberbeamen. fasst die transaktionen mal harmonisch mit der persistent und den rechten zusammen.
- die abhängigkeiten einzelner programmteile auf source-code-ebene überwachen, wie immer cachen, bei rausziehen der maus soll das bs zur laufzeit sich seine maus-sachen rausnehmen und die relevaten teile rekompilieren. also sowas wie jit, nur noch cooler. das bs kann man dann fein als code ausliefern, und es schraubt sich am zielrechner schon selber zusammen. ist für den anwendungsentwickler wichtig, daß er laufende programme nicht immer beenden muß, wenn er was ändert. es gibt kaum was geileres als laufzeitänderbare programme.
- dazu ist natürlich ne neue programmiersprache angesagt. lernt erstmal kurz compilerbau und macht eine, die sprache sollte die konzepte von c++ eigentlich alle können, aber ne weniger verkorkste syntax haben und wie java nicht mehr *.cpp und *.h. Außerdem muß sie persistenz von sich aus bereits als integralen Bestandteil haben. Keine vptrs, an die man nicht rankommt, oder so. das bs muß natürlich von vorn herein in der neuen sprache gebaut sein. ihr werdet belohnt durch ein wartbares bs, das 1/4 so groß ist wie vergleichbare. Das alles sollte sich mehr wie scripten anfühlen. unmittelbarer. man kann ja endlich am laufenden programm operieren.
- logischerweise muß ein panic-knopf her, transaktionen haben wir eh, alle kernel-änderungen der letzten beiden wochen macht man einfach cancelbar.
- ne grafische oberfläche wird eh nötig sein, ruhig den realitäten in die augen schauen und gleich anbieten. eher an java oder smalltalk orientieren, wie ne feine library dazu aussehen könnte, unter c++ läuft nur kumischer kram rum, was guis betrifft.Programmer85, sag mal, was hältst Du davon?
edit:
- die Sprache soll massiv multithreadingfähig sein. Ich hab immer Probs bei mehr als 10000 Threads. Will die Möglichkeit für schlanke Tasks, die nur nen Stack brauchen. Evtl sogar nur Heap-Speicher, die Aufrufrahmen könnt man zur Not auch da unterbringen. Würde vielen Simulationen guttun.[ Dieser Beitrag wurde am 07.07.2002 um 17:52 Uhr von volkard editiert. ][/QB][/QUOTE]
Biste dir da Sicher?? hmmm... gut oder nicht gut... du entscheidest! *lol*
Ne: Ich halte das davon, was ich davon halte
-
Original erstellt von <!>:
lächerlich. wie alt bist du? 12, 13, 14?
werde erst mal etwas älter und lern wie berits gesagt wurde: C++
wenn ich mir den text von deinem forum da anschaue muss ich nur schmunzeln.17!!!!!!
-
Original erstellt von BF_31:
würde mal vom Namen her sagen das er 85 ist:p
kann natürlich auch sein das 85 sein Geburtsjahr ist;)Jepp! Allright!!! 1985 ist mein Geburtsjahr! BINGO! Der kandidat hat 100 Punkte
-
Original erstellt von SideWinder:
**Ist ja kuhl. Da denkt man: Wow, wenn der Administrator dort ist, dann hat er sicherlich auch einiges an Wissen (bzw. hat es zumindest schon geschafft eine Community aufzubauen). Und sein Name-Thread fürs OS hier, war nur ein Joke.Dann die große Überraschung: Er ist so ziemlich der einzige angemeldete User im Forum :D.
Lass das OS doch sein ;).
MfG SideWinder**
MIt dem wissen, haste recht. oder auch net??? Siehe meine Page:
http://www.informatik-center.5er.com
-
3 - 4 Jahre?
Kein Problem - da brauchste nur 3 Leute die 8 Stunden täglich mit 10 Zeichen pro Sekunde ohne Pause oder nachzudenken schreiben... :p
-
3 bis 4 jahre. in der zeit könnte er informatik studieren und sich das nötige grundwissen schritchenweise aneignen und sofort im os mit einbauen.
als aller ersten schritt Würd ich sehen. erkundung des makrtes und analyse dises. was ist gut und was ist schlecht. was kann man úbernehmen. und was sollte man gleich durch eigene konzepte ersetzen.
vorschlag. POSIX wird über bord geworfen. wer braucht das schon. win-API sieht ja ganz toll aus. nur die die portierbarkeit innerhalb der versinen is zu gut. da sollte man abstriche machen.
na ja wigentlich das gegenteil währe vileicht sinnfoll
gruss termite
-
scherzkeks & volkard: Also ich habe um 13:00 Uhr 'n Zahnartzttermin, aber bis dahin sollte ich mit der ersten Version von unserem OS fertig sein. Ich schick euch das dann und ihr guckt mal, dass ihr die ganzen Feinheiten macht. Dann können wir heute abend an die Börse gehen
-
Linux hat nun bereits über 10 Jahe auf'm Pukel und basiert auf einem noch viel älteren Unix. Und da haben nicht nur 10 Mann mitgearbeitet, sondern eine gigantische Gemeinschaft. Und erst jetzt finde ich, dass es ein Richtig gutes OS ist.
Linux hat sich durchgesetzt, weil es das GPL-Prinziep verfolgt und relativ stabiel ist. Zudem ist es kostengünstig.
MacOS hat sich durchgesetzt, da es das einzige wirklich sinnvoll auf dem Mac einsetzbare OS ist. Und Macs sind nunmal Quasistandard in Sachen Audiobearbeitung.
Windows hat sich durchgesetzt, weil ... kein Ahnung. Das ist mir immer noch unverständlich.
Geht man von Windows aus, hast du gute Chancen. Schreib einfach gut aussehenden Schrott und du wirst steinreich.
-
@Helium: Warum sich Windows durchgesetzt hat? Es war am einfachsten zu bedienen. Und 80% aller Computeruser sind eben keine Profis, sondern Anfänger.
MfG SideWinder
-
Ich wiederhole meine Frage, da ich noch keine Antwort entdeckt habe:
Gibt es im Internet eine Anleitung zur Erstellung von OS?
-
@Erhard: Grundsätzlich, nein. Aber du wirst jede Menge Informationen dafür finden. Die du dir dann selbst zusammenstricken musst. Aber komplette Tutoriale werden Mangelware sein.
Gabs nicht mal in der ASM-FAQ was darüber?
MfG SideWinder
-
Original erstellt von Erhard Henkes:
Ich wiederhole meine Frage, da ich noch keine Antwort entdeckt habe:
Gibt es im Internet eine Anleitung zur Erstellung von OS?Ja, sicher gibt es das irgendwo!
-
Da!
http://warpserv.fh-bielefeld.de/teamos2/tricks.html
und
http://w3.aces.uiuc.edu/OS2/tricks.html
und
http://www.netlabs.org/
und da
http://www.edm2.com/
oder da:
http://www.ibm.com/us/mfg
Programmer
PS: Ich glaub, da werden sich sicher sehr hilfsreiche und nützliche "Sachen" herauschreiben![ Dieser Beitrag wurde am 09.07.2002 um 17:51 Uhr von Programmer85 editiert. ]
-
Zwei Beispiele von der EDM, die OS Codesnippets anbieten:
(NAtürlich wird die neue HEader process.h und OS2.h und Os.h benötigt!)Restaurieren und Speichern von aktuellen OS Einstellungen:
VOID GetStartupData(HWND hWndFrame) { HAB hab; CHAR szIniPath[64]; HINI hMyHini; SWP Swp; ULONG ulSwpSize = sizeof(SWP); ULONG SwpOptions = SWP_ACTIVATE | SWP_MOVE | SWP_SIZE | SWP_SHOW; USHORT RestoreValues[6]; ULONG ulRestoreValuesSize = sizeof(RestoreValues); /* ======================================================================== Load the physical pathname from the resource file. It should be defined something like this. STRINGTABLE LOADONCALL MOVEABLE BEGIN ID_INIPATH "C:\\APP.INI" END ======================================================================== */ hab = WinQueryAnchorBlock(hWndFrame); WinLoadString(hab, 0, ID_INIPATH, sizeof(szIniPath), szIniPath); if ((hMyHini = PrfOpenProfile(hab, szIniPath))!=NULLHANDLE) { if (PrfQueryProfileData(hMyHini, "App", "WindowSize", (PVOID)&Swp, (PULONG)&ulSwpSize)) { if (Swp.fl & SWP_MAXIMIZE) SwpOptions |= SWP_MAXIMIZE; else if (Swp.fl & SWP_MINIMIZE) SwpOptions |= SWP_MINIMIZE; WinSetWindowPos(hWndFrame, NULLHANDLE, Swp.x, Swp.y, Swp.cx, Swp.cy, SwpOptions); /* ======================================================================== Set the following flags in the frame window extra data. This will tell the frame what size it should restore itself to if you restart minimized or maximized. ======================================================================== */ if (PrfQueryProfileData(hMyHini, "App", "RestoreValues", (PVOID)&RestoreValues, (PULONG)&ulRestoreValuesSize)) { WinSetWindowUShort(hWndFrame, QWS_XRESTORE, RestoreValues[0]); WinSetWindowUShort(hWndFrame, QWS_YRESTORE, RestoreValues[1]); WinSetWindowUShort(hWndFrame, QWS_CXRESTORE, RestoreValues[2]); WinSetWindowUShort(hWndFrame, QWS_CYRESTORE, RestoreValues[3]); WinSetWindowUShort(hWndFrame, QWS_XMINIMIZE, RestoreValues[4]); WinSetWindowUShort(hWndFrame, QWS_YMINIMIZE, RestoreValues[5]); } } else WinSetWindowPos(hWndFrame, 0, 0L, 40L, 800L, 560L, SwpOptions); } else WinSetWindowPos(hWndFrame, 0, 0L, 40L, 800L, 560L, SwpOptions); PrfCloseProfile(hMyHini); return; } VOID SaveStartupData(HWND hWndFrame) { HAB hab; CHAR szIniPath[64]; HINI hMyHini; SWP Swp; USHORT RestoreValues[6]; WinQueryWindowPos(hWndFrame, &Swp); RestoreValues[0] = WinQueryWindowUShort(hWndFrame, QWS_XRESTORE); RestoreValues[1] = WinQueryWindowUShort(hWndFrame, QWS_YRESTORE); RestoreValues[2] = WinQueryWindowUShort(hWndFrame, QWS_CXRESTORE); RestoreValues[3] = WinQueryWindowUShort(hWndFrame, QWS_CYRESTORE); RestoreValues[4] = WinQueryWindowUShort(hWndFrame, QWS_XMINIMIZE); RestoreValues[5] = WinQueryWindowUShort(hWndFrame, QWS_YMINIMIZE); hab = WinQueryAnchorBlock(hWndFrame); WinLoadString(hab, 0, ID_INIPATH, sizeof(szIniPath), szIniPath); if ((hMyHini = PrfOpenProfile(hab, szIniPath))!=NULLHANDLE) { PrfWriteProfileData(hMyHini, "App", "WindowSize", (PVOID)&Swp, sizeof(Swp)); PrfWriteProfileData(hMyHini, "App", "RestoreValues", (PVOID)&RestoreValues, sizeof(RestoreValues)); } PrfCloseProfile(hMyHini); return; }
Eine Einfahche benutzung und erstellen des TELNETS mit PIPES
--------------------------------SERV.C------------------------------ #define INCL_DOSQUEUES #define INCL_DOS #include <os2.h> #include <process.h> #define PIPESIZE 256 #define HF_STDIN 0 #define HF_STDOUT 1 #define HF_STDERR 2 HPIPE hpOutR, hpOutW; HPIPE hpInR, hpInW; HPIPE hpErrR, hpErrW; HPIPE NmPipeHandle; RESULTCODES resc; CHAR szFailName[CCHMAXPATH]; void read( void *dummy ) { ULONG cbRead, cbWritten; CHAR achBuf[PIPESIZE]; do { DosRead( hpOutR, achBuf, sizeof(achBuf), &cbRead ); DosWrite( NmPipeHandle, achBuf, cbRead, &cbWritten ); } while ( cbRead ); } void write( void *dummy ) { ULONG cbRead, cbWritten; CHAR achBuf[PIPESIZE]; do { DosRead( NmPipeHandle, achBuf, sizeof(achBuf), &cbRead ); DosWrite( hpInW, achBuf, cbRead, &cbWritten ); } while ( cbRead ); } main(int argc, char *argv[], char *envp[]) { APIRET rc; HFILE hfSaveOut = -1, hfNewOut = HF_STDOUT; HFILE hfSaveIn = 10, hfNewIn = HF_STDIN; DosDupHandle( HF_STDOUT , &hfSaveOut ); DosDupHandle( HF_STDIN , &hfSaveIn ); DosCreatePipe( &hpOutR, &hpOutW, PIPESIZE); DosCreatePipe( &hpInR , &hpInW , PIPESIZE); DosDupHandle( hpOutW, &hfNewOut ); DosDupHandle( hpInR, &hfNewIn ); DosExecPgm( szFailName, sizeof(szFailName), EXEC_ASYNC, (PSZ) NULL, (PSZ) NULL, &resc, "C:\\OS2\\CMD.EXE"); DosClose(hpOutW); DosClose(hpInR); DosDupHandle( hfSaveOut, &hfNewOut ); DosDupHandle( hfSaveIn, &hfNewIn ); rc = DosCreateNPipe( "\\\\W304743B\\PIPE\\CMDPIPE", &NmPipeHandle , NP_ACCESS_DUPLEX, NP_WMESG | NP_RMESG | 0x01, 256 , 256 , -1 ); if ( rc ) return 0; rc = DosConnectNPipe( NmPipeHandle ); if ( rc ) return 0; _beginthread( &write , NULL, 64000, NULL ); read( NULL ); return 1; } ---------------------------------------CLNT.C--------------------- #define INCL_DOSQUEUES #define INCL_DOS #include <os2.h> #include <process.h> #include <string.h> #include <stdio.h> #define PIPESIZE 256 #define SERVER_PIPE_NAME "\\PIPE\\CMDPIPE" #define HF_STDIN 0 #define HF_STDOUT 1 HPIPE hp; ULONG ulAction; APIRET rc; void read( void *dummy ) { ULONG cbRead, cbWritten; CHAR achBuf[PIPESIZE]; do { DosRead( hp, achBuf, sizeof(achBuf), &cbRead ); DosWrite( HF_STDOUT, achBuf, cbRead, &cbWritten ); } while ( cbRead ); } void write( void *dummy ) { ULONG cbRead, cbWritten; CHAR achBuf[PIPESIZE]; do { DosRead( HF_STDIN, achBuf, sizeof(achBuf), &cbRead ); DosWrite( hp, achBuf, cbRead, &cbWritten ); } while ( cbRead ); } main(int argc, char *argv[], char *envp[]) { CHAR ServerPipe[CCHMAXPATH]; if ( argc != 2 ) return 0; strcpy( ServerPipe, "" ); strcpy( ServerPipe, "\\\\" ); strcat( ServerPipe, argv[1] ); strcat( ServerPipe, SERVER_PIPE_NAME ); printf( "%s\n", ServerPipe ); rc = DosOpen( ServerPipe, &hp, &ulAction, 0, FILE_NORMAL, FILE_OPEN, OPEN_ACCESS_READWRITE | OPEN_SHARE_DENYNONE, NULL ); if ( rc ) return 0; _beginthread( &write , NULL, 64000, NULL ); read( NULL ); DosClose( hp ); return 0; }
[ Dieser Beitrag wurde am 09.07.2002 um 17:58 Uhr von Programmer85 editiert. ]
[ Dieser Beitrag wurde am 09.07.2002 um 18:01 Uhr von Programmer85 editiert. ]
-
Der will uns verschaukeln.
-
Wirklich? volkard du musst so intelligent sein, wenn du das sofort kapiert hast!
MfG SideWinder
-
@Erhard
Schau hier mal:
http://www.linuxgazette.org/issue79/index.html
http://www.linuxgazette.org/issue77/index.html
-
wenn ich "Restaurieren und Speichern von aktuellen OS Einstellungen:" mal korrigieren darf:
also dsa sieht eher nach einem beispiel aus, wie man ein windows fenster an der selben position und mit der selben grösse öffnet, wie es geschlossen wurde.. (machen das nicht fast alle durchschnittsprogramme)das zweite ist schon verwunderlich, wieso nen telnet client mit pipes machen? fliegt ihr täglich mit dem flugzeug zur schule/arbeit?
also ich hab mal nen billig(telnet)client gecodet und der sah weitaus einfacher aus, als das und war vernünftig per tcp/ip zu benutzen... so nebenbei frage ich mich, ob man nicht sofort einen pipes-telnet-server coden müßte, damit das läuft...rapso->greets();
ps. naja, vielleicht liege ich total daneben mit allem, aber hab eh keine lust mir sowat richtig anzuschauen.
-
Danke für die Links. Das Thema finde ich nämlich nicht uninteressant. Aus diesem Thread werde ich mich aber ab sofort verabschieden.
-
Original erstellt von Erhard Henkes:
Danke für die Links. Das Thema finde ich nämlich nicht uninteressant. Aus diesem Thread werde ich mich aber ab sofort verabschieden.Aha!
Erst interessant finden, lesen, machen und tun, dann OHNE GRUND und STINKFRECH ohne zu Fragen abhauen!! *gemein*!