Re: Learning Minix
Verfasst: Do Mär 28, 2024 8:25 am
Jetzt damit sie nicht weiter so gucken, um die Sache zu vereinfachen. Ich lerne gerade. Aber sie sind interessierte menschen. Und ich lerne. Das bedeutet, es gibt nichts anderes. Da sie sind da sind wir und wir das ausblenden können, kann man jetzt die sagen wir klassische Caesar Methode verwenden, wir am Anfang waren - Caesar gewinnt von ganz alleine. Das ist nicht bezogen auf Age of Empires. Lassen wir das. Es gibt moderatere Wege - ich kläre sie während dem lernen auf, worum es geht
Man kann, trotz der, ich sage nicht, Brute Force, aber Trotz Caesar, einen moderaten weg nehmen
Auf der anderen Seite, ich sage ihnen wie es geht.
Also, das Minix sieht jetzt sehr heftig aus, das ist es nicht
Also, sie haben - sie müssen jetzt vielleicht paar Sachen über ein Betriebssystem wissen, wenn sie das nicht wissen, dann hilft keiner moderater weg
Dann gehen sie aus Facbeook raus, und schalten bitte den Computer ab, sage ich ihnen moderat. Und wenn sie nicht wissen was ein pointer ist oder sich mit der Nummerierung von 0 an schwer tun
dann schalten sie bitte den PC ab und trennen bitte die Verbindung zum Internet. In diesem Falle muss ich moderat sagen, können sie nicht weiter machen
Sie müssen bei Pointer keine Angst haben Wenn sie derartig drauf sind, dann kann man nichts machen
Sie wollen wahrscheinlich beispiele haben, ich weiss wie das ist. Wenn der Pointer nicht sitzt
Sie haben eine Adresse einfach. Und sie fangen bei null an zählen
Wenn das nicht geht, verschwinden bitte
so - jetzt.
Sie haben 4 Sachen, quasi
1.) Sie haben einen Speichermanager - ich wende mich dem zu
2.) Sie haben ein Dateisystem
3.) Sie haben Kernel
Das Dateisystem, englisch File System - heisst, Englisch File system.
File System = fs
Memory Manager = mm
Also, sie haben den Memory Manager. Jetzt müssen wir nicht diskutieren, was Speicher und Riegel sind
Sie haben den Speichermanager
1.) Da kommt das BIOS - sie haben angenommen, muss ich noch mehr Info haben - 1 MByte Speicher - weil sie haben 4 Bit Segment und 16 Bit - bitte schon mal Facebook verlassen - das macht 20 Bit, und das macht ein 1 MByte. Jetzt habe ich hier einen wunderbaren PC - das ist der Clou - das sage ich gleich - das Problem, da muss ich noch nacharbeiten - es gibt ja, das Problem mit den Festplatten
das kommt auch noch. Wenn sie halt jetzt den PC lernen, dann müssten sie wissen was Shougart ist, lassen wir die Diskussion. Sie müssten schon wie viele verschiedene Disketten es gibt, von 720 kByte - bis 320 kByte, bis 1,44 MByte, dann müssen sie halt C - H - S können. Es gibt ein lustiges Programm, für DOS, so ein selbstgeschriebenes von irgendwem - das ist gut - das macht eine Sektorweise Copy, aber anhand dessen wie gross die Diskette ist. Das ist komisch, weil bei dem Programm, haben sie eine seltsame Eingabe.
Sie müssen angeben, wie viele Köpfe - jede Diskette, hat zwei Seiten, stimmt eben nicht, am Anfang hatten sie scheinbar eine, Sektoren und - Tracks ihre Diskette hat. Also sie haben
Halt, sie müssen halt mathematik machen. Sie haben bei CHS keinen Block. Das ist LBA - sie nummerieren die Blöcke durch. Sie haben - einen Kuchen und den Schneiden sie - im Sinne von Tinker, Taylor, Soldier, Spy, falls ihnen das was sagt, in verschiedene Stücke. Und jetzt das macht man so in Mathematik - sie wissen wie man Kuchen oder in ihrem Falle Pizza - wenn das kein Quadrat ist, teilt
gut, jetzt haben sie die Sektoren. dann haben sie den Track. Also, lauter konzentrische Kreise und dann haben sie die Seite
OK - demnach haben sie lauter disketten. Verschiedene - 720 kByte. Und 320 kByte. Da muss ich nach lernen
gut - und das wichtig, das merken sie, wenn ihnen das egal ist, ist alles egal. Und sie haben halt beim PC, zum Beispiel da bin ich gerade dran, verschieden Speichergrössen. Sie haben 640 kByte und sie haben 512 und 256 kByte. Dazwischen halt? Wie heissen die 384 oder 348 - sagen sie es - das ist nicht egal. Weil einer PC, der würde gar nicht tun. Das heisst, ich habe 3x 5160 IBM Mainboards, mit x88. und das verrückte ist - dass jetzt halt die neuen Festplatten da sind. Also, die die ganz neuen, jetzt sind wir ja bei NVME - da ist das alles egal. Und davor SATA und dann ist das egal. Nur, davor halt IDE - und jetzt haben diese ganzen komischen - XT-IDE Festplattenkarten, haben halt damit eine sie so lustige Karten. Der Witz ist - dass jetzt noch was kommt. Ich habe den Zilog Z80. Dafür gibt es einen einfachen Plan, in der Gebrauchsanweisung selber.
Also, Datenblatt, da steht die Schaltung. Und - der Witz ist, zu dieser Schaltung - gibt es dann Leute, die haben eine Karte gemacht. Ich habe diese Schaltung gebaut, die tut noch nicht. Das ist das, was Zilog vorgeschlagen hat. Also, die haben das teilweise nach oben modifiziert, aber das ist das.
Und, der Witz ist, dass das egal, ob sie das verdrahten, oder die Karte nehmen, die sie im Internet kriegen
Das sind quasi heim gemachte karten. die sind geätzt, sehen vernünftig aus, grün lackiert, aber sind heim gemacht. Ist das glecihe, wie selber löten
Und jetzt gibt es diese Karten. Diese komischen Zilog Z80, karten, da müssen sie alles selber einsetzen
Mit den XT-IDE Karten, der PC XT tut halt gar nicht, mit den neuen Festplatten - gar nicht. Muss es nicht. Mein erster PC hatte zwei Diskettenlaufwerke, das waren übrgens 720 kByte. Im Laden zu haben als DD formatiert
Und - trotzdem, wenn sie die neuen Platten haben wollen, dann müssen sie - diese Karten nehmen. XT-IDE karten heissen die. Die sind wie die zilog z80 Dinger mehr oder weniger, zu Hause gemacht. Was sie dafür brauchen, sind vor allem EEPROM's. Ich weiss nicht, was auf der Karte ist. Da sind auch noch mal EEPROM's drauf. Sie müssen das halt kaufen, alles rein stecken
Jetzt der Witz, mit meinem PC geht das. Was mir der Herr da geschickt hat. Das geht aber generell gar nicht so gut. Weil sie müssen, das BIOS modifizieren. Das ist kein Baustein, das ist ein Programm - aber das sitzt halt im Baustein. Für alle Fans, die Riegel mögen. Sind das Bausteine, wie der SRAM - halt im DIL oder DIP. Und die sitzen in dem Baustein
Jetzt der Witz, um das BIOS zu modizfieren müssen sie den Bausten halt oder mehr weniger, mit einem neuen BIOS ausstatten
Ich weiss es noch nicht genau, ich werde es wissen - aber, wie gross ist eigentlich das BIOS. Das ist die Frage. Das ist halt ein Programm. Und jetzt müssen sie, deswegen eigentlich wissen, welche gross die RAM Varianten sind. Also, der Witz ist halt :Das ist nicht egal. Weil sie müssen das Mainboard ganz genau kennen. Und der Witz ist, dass 320 kByet oder 512 kByte das ist nicht egal. Weil, als der Witz - sie haben, das weiss ich nicht 100%, aber das ist schon mal so eine Vermtung - Sie haben halt mit 20 Bit - 1 MByte, Speicheraaddressierung - und jetzt kommt das berühmte Problem, über dem berühmten. Sie haben immer noch, wieder 64 kByte würde ich mal sagen, wieder zu viel
Weil, sie haben ja, jetzt mit dem Segment was geschaffen. Ich würde sagen, das ist das BIOS - nur - es gibt halt andere Mainboards. Ich habe zwei mal das gleiche. Ich sage, die aus Japan, sind alle grün. Das war die Zeit, wo sich FuJITSHI, mühe gab, die Sache in die Hand zu nehmen. Die amerikanischen sind braun gold.
Das ist das gleiche Mainboards. Aber die haben RAM Banks, das ist mal standard. Dann haben sie aber noch irgendwelche komischen Sets und sonst was alles, das lerne ich gerne
Und - der Witz - da gibt es physisch verschiedene Sockel. das mainboard, wo die Karte passt, da sind noch BIOS man könnte sagen extensions drauf. das heisst, sie können EEPROM's hin zu fügen. Das müssten sie. Weil, sie müssen ja, für die Karte, einen Code unterbringen. Ich glaube, dass da EEPROM's drauf passen. Wenn ich richtig geguckt habe - nur - sie müssen halt, den Code unterbringen
Gut - und jetzt
Zum Speichermanager. Sie sehen, sie müssen den Speicher schon genau kennen
Sie haben halt
1.) FS - File Manager
2.) MM - Memory Manager
Und das zweitere, heisst halt so. Das Ding hat keine MMU. Und vieles nicht. Floating Pont und - FPU haben die ja teilweise
Aber - das FS - ich denke, dass es gut dann die Disketten zu kennen. Das macht sinn
Und - der Memory Manager. Der hat halt jetzt nicht so das komische Ansehen was man dem zutraut
1.) Sie haben halt den Kernel
Jetzt zwei PROCS
Also sie haben zwei Sachen
1.) Sie haben
TASKS
2.) Sie haben PROCS
das ist relativ simpel
Die TASKS haben sie nicht im MM - also im Memory Manager. Da haben sie nur PROCS . Und sie haben fast die identische Struktur im Memory Manager. Wie im Kernel
Die heisst, mproc - im Memory Memory Manager und die heisst, proc im Kernel, so weit ich weiss
Und machen wir es kurz. Sie haben folgende Strukturen
Sie haben
holes
mproc bzw. proc
mem_map
Und es geht jetzt um proc und mproc. Der Witz ist - das ist nahezu identisch, aber - sie haben das im Speichermanager
mit NR_PROCS und im Kernel mit NR_PROCS + NR_TASKS
Das ist halt immer der Witz, mit der Unterscheidung von Tasks und Procs. Das ist immer so eine Sache. Procs sind Prozesse. Ganz einfach. aber was sind tasks. Wenn man das Minix versteht, dann weiss man was ein Task ist. Das ist ein Betriebssystemspezifischer Prozess.
Es gibt bei Minix drei. File System, Memory Manager und Kernel
Es nicht daneben, die Konstanten zu lernen. Ich sage, drei klingt echt neben der Spur. 12 das klingt vernünftig. drei nicht
Aber, das weiss ich noch nicht, vielleicht irre ich mich
Weil
NR_TASKS sind 8
und NR_PROCS sind 16
Gut. Jetzt haben wichtigste Typ_defs
Sie haben
phys_clicks
und vir_clicks
Sie haben physikalische Clicks, was auch immer das ist. Man muss es halt lernen. Ich würde sagen 16 Byte. Weil, sie halt mit den Segmentregistern, machen sie - immer 16 Byte schritte. sie können 64 KByte Addressieren. Wenn sie das Segment verändern, um 1 Byte, ist das ein Sprung, um 16 Byte
Würde ich sagen - kann man später nachschauen. Stimmt wahrscheinlich. Dann gibt es phys_clicks. Das ist wird das 100% reale Sein
Und jetzt der Witz, dass sie vor allem
mem_map und das ist wichtig, weil sie haben ja bei Segment, ein Anfang und ein Ende
Und in mem_map, haben sie das physikalisch und virtuell, den Anfang
mem_vir
mem_phys
das ist der Anfang. Sie haben kein Ende, aber sie haben - mem_len. Ich vermute, das kommt daher, dass sie, wenn sie das Programm laden und nichts anderes tut das OS - dann laden sie das so, dass sie eine Länge haben
Und jetzt haben sie noch was. Das sind die Register. Die sind architekturspezifisch
Das sind
ax, bx, cx, dx, sp, bp, si, di, es, ds, ss, cs
und so weiter. Gut - dann haben sie NR_REGS
Sie haben folgende NR_ Konstanten
NR_REGS - das ist die Anzahl der Register, das macht sinn, sich das zu merken.
NR_SEGS - das ist die Anzahl der Segmente. Das entspricht ja den Registern
NR_TASKS - das sind die Tasks
NR_PROCS - das sind halt die Prozessse
NR_HOLES
Also, das ist relativ simpel.Sie müssen für den Task Switch - was ja eigentlich ein PROC_SWITCH ist, sich den gesamten Kontext merken. Dazu gehören die Register und die Segmente
Gut - wenn das passiert - sie haben den PIT 8253 - der witz ist, der hat zwei Zähler. So wenig ein Zähler interessant aussieht, auf den ersten Blick, abgesehen davon, dass jede Datei immer die Uhrzeit hat, ist das ja, nicht so interessant. Doch, weil sie haben 2 Zähler. Eigentlich drei am PIT 8253 - so weit ich weiss, können sie beim PC XT nur 2 benutzen
Und das brauchen sie - weil sie können keinen Task Switch machen.
Gut, dann gibt es halt einen Interrupt. Jetzt müssen sie alles neu laden. Und dazu gehören die Register. Deswegen haben sie NR_REGS und alle Register werden gesichert. Die Frage ist, was ist das für eine Struktur. Das ist ganz einfach
Weil die Register sind 16 Bit Breit. Da könnnen sie einen Signed INT oder oder UNSIGNED INT - ist ja egal. Nur, dann müssen sie das halt rein schreiben. Also haben sie ein Array. OK, und dann kommen die Speicherbereiche und dafür haben sie
mem_map und da müssen die Grenzen rein. Fertig
gut - Jetzt müssten sie, rein theoretisch, den Round Robin Task switch so machen, sie haben halt ihre MPROC struktur, sie zählen nach oben und müssen mit jedem Zeitgeber Intervall, die Struktur mit dem Zähler auslesen und rein schreiben in die Register, das kommt später
Gut - und jetzt haben sie noch zusätzlich die pid
das heisst, sie haben die für den Prozess, im Kernel und die heisst entsprechend anders, und sie haben die für den Speicher
m_pid
oder so. Das hat nichts mit dem Zähler zu tun. Sie haben dann noch die gid und die uid. Und dann haben sie das effektiv und real. Und dann halt noch einige Dinge
Gut - dann haben sie jetzt die Segmente
mem_map
dann die MPROC und jetzt die Holes
Das ist das andere Thema. Da bin ich jetzt. Wenn sie den Speicher angucken, dann gibt es nicht zu viel zu tun
Das erste, was ich nicht tun würde, ist das Ding so zu lernen, dass ich das von der Innerei her lerne. Das würde ich beim Speichermanager machen, wenn es nicht um das Prozess laden geht. Sie haben zwei Sachen. Sie haben einerseits so zu sagen, die rein form des Speichers und sie haben das Problem, mit dem Programm nachladen. Das ist ja das Hauptproblem
Und jetzt - müssen sie halt, immer die Funktionen unterscheiden
fork ()
exit ()
exec ()
break ()
alloc ()
signal ()
Das sind so die Hauptdinger. Das sind aber Systemaufrufe. Systemcalls. Wenn sie halt das in DOS anschauen oder in Minix oder Linux, die unterscheiden sich ja nicht so generell. Sie haben halt die ultimativen Anfänger Dinger, die es nicht sind, wegen PIO und Memory Mapped IO
Sie haben halt den IN und OUT Befehl. Und ich würde jetzt sagen, Pi Mal Daumen, muss ich für die Prüfung wissen - aber habe schon geschrieben, kam nicht vor, aber lerne ich gerade
Sie haben ja so zu sagen IN und OUT, das reicht ja gar nicht. sie haben ja - Ports - und wenn sie den Z80 angucken, dann hat, A und B- weit gefehlt. Wenn sie den löten und dann den Assembler schreiben und voraugsetzt es tut oder nicht - sie werden merken, es gibt zwar an dem PIO ein A und B, aber letzten sind das alles Ziffern. Also, sie zählen von 0 bis 255, konsekutiv nummiert, binär codiert. Gut - gut, sie haben ja für jeden Port immer eine Nummer. Und Memory Mapped, das ist eigentlich was anderes glaube ich - heisst einfach. Während sie für den Speicher Addressen verwenden, verwenden sie ja Addressen für die E/A. Und der Witz ist, dass sie nicht den Speicherbereich verwenden, der irgendwo im RAM besonders ist, das wäre eher DMA - das hat aber nichts mit Ports zu tun, sondern hier liesst die Festplatte heimlich aus dem Bereich. Gut - sie benutzen einfach Addressen
Und wie das geht - ist halt weil der Prozessor - pins hat. Der Prozessor hat ja Pins. Und wenn sie IN und OUT nehmen, dann ist das nicht irrelevant. Ob sie MOV oder IN und OUT nehmen. Weil, da werden gewisse - eigentlich 1 oder 2 Pins aktiviert oder HIGH/LOW gesetzt. Und das heisst, einfach, wenn der HIGH ist oder LOW dann wird ein Mal der Speicher addressiert und ein Mal die EA. Und deswegen haben sie den PIO
Sie haben beim Z80 einen SIO und PIO - und das komische ist, sie haben eigentlich zwei Mal P. Weil sie haben einen 084. heisst der hier. Und unter den 825x müssen sie gucken, 1, 7, 5. Einer ist ein DMA Steuerungsbaustein und einer Seriell und einer Parallel. Und sie haben halt beim Z80 haben sie - einen SIO und PIO. Und das müsste heissen PPIO. Weil sie haben einen Paralleln Programmierbaren Ein und Ausgabebaustein
Gut - und jetzt haben sie - die Systemaufrufe, lese von der Tastatur, und schreibe dahin. Ebenso in die festplatte. Das ist ja vom Benutzen standard, von ankleben nachher nicht schwer - imd trotzdem ist das nicht anfänger
Aber der Witz ist die besseren Routinen, von den Nutzern sind
EXIT
EXEC
BREAK
SIGNAL
ALLOC und so weiter
Und sie müssen halt die Programme von der Platte laden. Gut - jetzt kommt aber der Hauptteil
Wenn die Pointer unfähigen hoffentlich das Internet verlassen haben, dann erreicht sie vielleicht diese Botschaft - wir wissen worum es geht
Das unnötige Alloc
Ich sage mal so - das ist ein bisschen Hirnverbrannt. eigentlich haben sie beim x86er eine Mixtour aus einer Neumann und einer Harvard architektur
Weil Neumann trennt ja Code und Daten nicht. der x86er macht beides. Bzw. Sie können das überall ablagern
Wenn sie einen Controller nehmen, wie den Atmega8, dann haben sie ja eigentlich die Trennung perfekt. Weil sie brauchen gar nicht so sehr, den RAM normalerweise. Es gibt Leute, die wollen nichts anderes als RAM - wenn man denen erklärt, ihr Computer keinen RAM - dann glauben die, dass der nicht geht
Und das sind aber die, die freuen sich, wenn das LCD am Prozessor tut. Wenn der Effekt geht, dann geht der Computer. Das heisst eigentlich nicht RAM, sondern Speicher. Den RAM brauchen sie ja nur deswgen, weil sie Tabellen haben, wo ihre Rechnugnen etwas ändern. Für das LCD brauchen sie das nicht.
Und - wenn sie alloc () benützen, dann wird dem Anfänger - klar gemacht, da wird was vom Heap beansprucht
eigentlich haben sie
1.) Statische Daten und Code oder Text
2.) Heap
Das komische ist - dass der Heap eigentlich eben die Daten sind. Beim x86er mischen sie das. Weil sie können ihren Programmspeicher ändern. Beim Atmega8 nicht unbedingt. Das steht ja fest drin
Gut - und - jedenfalls - brauchen sie halt trotzdem das Alloc () das klingt, wenn die Bücher so liesst, als könnnte der Nutzer da speicher beanspruchen
Eigentlich ist das relativ seltam. weil das ALLOC betriebssystemspezfisch was anderes. Sie brauchen das eh. Sie müssen halt - Speicher beanspruchen - wenn sie ein neues Programm laden
Dann müssen sie lesen und rein schreiben. Gut
jetzt müssen sie sich nur die alloc.c angucken
also, die
mm/alloc.c
Also haben eine
mm/forexit.c
mm/exec.c
mm/break.c
...
Aber sie haben halt eine alloc.c
Und jetzt muss man nur wissen - man gibt
Speicher frei
Man halt neuen Speicher
Das ist eigentlich. Jetzt kommen ihre Holes. Der Witz ist, dass diese Struktur hole
struct hole {
} hole [NR_HOLES];
Da ist wieder NR_HOLES. Und das heisst, das ist ein Array. mit guten Grund - das hat zwei Gründe
1.) Sie haben jetzt eine Speicherliste
Der Witz ist halt, ich würde nicht sagen, die Bücher haben das nicht falsch gemacht. aus heutiger Sicht kapiert man nichts mehr
Wenn sie in C eine Liste haben - dann haben sie ja alloc () einfach. Oder realloc - oder malloc () und so weiter. Und dann haben sie ja ihre Liste mit Pointern. Und der Witz ist - dass ja dann das OS benutzen. Und das können sie ja jetzt nichts. Sie haben ja immer noch in der Realität. einen festen Speicher. Der wird ja nicht dynamisch
Und jetzt haben sie das OS - und sie können ja das OS nicht verwenden, damit das OS dynamisch den Speicher verwaltet.
Deswegen haben wir halt ein Array. Von den Holes. Und wir müssen jetzt unterscheiden, den Speicherplatz, den wir wirklich verwenden
Das ist ja mem_mapped. das ist einfach das vom Programm
Damit können wir nichts anfangen Für den Speichermanger. Weil wir haben zwei Mal wieder eine umgekehrte Seite
Wir haben halt den belegten Speicherbereich, es hängt von unserer Psychologie. Sind wir positivistisch und das Gegenteil
Wir sind positiv denkende Menschen, also naiv und gehen vom schlechten aus. Wir gehen davon aus, jedes Programm kriegt speicher und jeder merkt sich was er hat.
Und dabei verschwindet Speicherplatz, Stück für Stück. gut ein anders denkender Mensch, würde sagen - wir merken uns, wo ist speicher verbraucht. Für jeden. Und wir merken uns, wo ist Platz frei. Das Programm sich, wo ist der Speicher
Und - jetzt der Witz - gut - und jetzt müssen wir halt, dieses Allokieren mit was festen machen und das ist
struct holes {
} hole [NR_HOLES]
Gut, das ist beides. Eine Liste, für den nächste und eine Anzahl. Der witz ist, dass das nicht die Speicherplätze Bänke oder was auch immer sind
Sondern, dass das eine Liste ist. Das hat nichts damit zu, wo der Block ist. Die Liste speichert unabhängig der Blöcke, wo der nächste Platz ist. Das ist einfach eine Liste
Es gibt aber zwei
Eine, mit dem nächsten Platz und noch eine Liste.w enn ind er Liste gespeichert wird, wo der Speicher verbraucht ist, dann kommen programme aus dem Speicher wieder raus.
Und jetzt hat die Liste natürlich Löcher, also deswegen gibt zwei Listen, die beruhen auf einer Liste. Das sind dieselben Elemnte, quasi
Nur, die eine ist halt die nicht freispeicherliste, das ist insgesamt, sondern die Liste mit möglichen Einträgen und eine Liste, da kommen die rein, wo verbraucht sind. An Listeneinträgen
Und deswegen, man kann
Speicher freigeben
Speicher anforden
Das entspricht alloc und mem. Das spürt der Nutzer
das andere ist - del_slot und merge. das ist etwas anderes
Es gibt zwei Prinzipien
1.) Anfordern
2.) Freigeben
1.) Es realen Speicherplatz
2.) Die Verwaltungsliste
Und man kann
1.) Speicher anfordern
2.) Speicher freigeben
1.) Listeneintrag anfordern
2.) Listeintrag mit dem anderen vermischen, dann muss weil, da können zwei Löcher aufeinander folgen
Und dann gibt es max_hole
Also, die länge des grössten freien Speichers
Das ist für mich schon fast trivial
Ich glaube, dass es sich lohnt, die ganzen Dinger aus wendig zu lernen
Zum Beispiel ob sie
phys_clicks
und
phys_bytes und so weiter
oder
vir_clicks
Oder die Nummern von den Register. Das sind ja definitions. Ich würde es trotzdem lernen
dann kommen später so Dinger, wie klib88.s.
Ich weiss nicht, was das ist. Ich denke, oder mpx88.s. ich denke, dass man besonders halt nicht so daher kommt, dass man den Mechanimsmus anguckt, sondern ich glaube,
das man so verrückt die Idee klingt, dass ja alles ein Top-Down Ansatz erfolgt ist das eine Klasse
sie haben halt
Minix
FS
MM
Kernel
und so weiter
Minix
FS
MM
alloc.c
alloc_mem ()
free_mem ()
del_slot ()
merge ()
forkexit.c
exec.c
Kernel
Und so weiter. Ich glaube, wenn sie die Namen, wie bei Milchtüten, dann haben sie gewonnen. das ist das eine
Und das andere ist halt - dass sie halt vielleicht einfach wissen, es gibt eine mpx88s. was genau da drin steht, das kommt schon
Wissen muss man wissen es
Man muss wissen
mov al, byte ptr equip_flags
cmp al, 0000 0001b
je f15b
jmp start
das halt die - POST Chamber Mode Routine. Man halt alles wissen. Leute sagen man müsse es nicht. Und wollen weiter und doch nicht. Und dann wollen sie und sagen wir müssen mal und dann ach müsste man das wissen
So kommt das Chaos. Dabei ist das einfach.
Man kann, trotz der, ich sage nicht, Brute Force, aber Trotz Caesar, einen moderaten weg nehmen
Auf der anderen Seite, ich sage ihnen wie es geht.
Also, das Minix sieht jetzt sehr heftig aus, das ist es nicht
Also, sie haben - sie müssen jetzt vielleicht paar Sachen über ein Betriebssystem wissen, wenn sie das nicht wissen, dann hilft keiner moderater weg
Dann gehen sie aus Facbeook raus, und schalten bitte den Computer ab, sage ich ihnen moderat. Und wenn sie nicht wissen was ein pointer ist oder sich mit der Nummerierung von 0 an schwer tun
dann schalten sie bitte den PC ab und trennen bitte die Verbindung zum Internet. In diesem Falle muss ich moderat sagen, können sie nicht weiter machen
Sie müssen bei Pointer keine Angst haben Wenn sie derartig drauf sind, dann kann man nichts machen
Sie wollen wahrscheinlich beispiele haben, ich weiss wie das ist. Wenn der Pointer nicht sitzt
Sie haben eine Adresse einfach. Und sie fangen bei null an zählen
Wenn das nicht geht, verschwinden bitte
so - jetzt.
Sie haben 4 Sachen, quasi
1.) Sie haben einen Speichermanager - ich wende mich dem zu
2.) Sie haben ein Dateisystem
3.) Sie haben Kernel
Das Dateisystem, englisch File System - heisst, Englisch File system.
File System = fs
Memory Manager = mm
Also, sie haben den Memory Manager. Jetzt müssen wir nicht diskutieren, was Speicher und Riegel sind
Sie haben den Speichermanager
1.) Da kommt das BIOS - sie haben angenommen, muss ich noch mehr Info haben - 1 MByte Speicher - weil sie haben 4 Bit Segment und 16 Bit - bitte schon mal Facebook verlassen - das macht 20 Bit, und das macht ein 1 MByte. Jetzt habe ich hier einen wunderbaren PC - das ist der Clou - das sage ich gleich - das Problem, da muss ich noch nacharbeiten - es gibt ja, das Problem mit den Festplatten
das kommt auch noch. Wenn sie halt jetzt den PC lernen, dann müssten sie wissen was Shougart ist, lassen wir die Diskussion. Sie müssten schon wie viele verschiedene Disketten es gibt, von 720 kByte - bis 320 kByte, bis 1,44 MByte, dann müssen sie halt C - H - S können. Es gibt ein lustiges Programm, für DOS, so ein selbstgeschriebenes von irgendwem - das ist gut - das macht eine Sektorweise Copy, aber anhand dessen wie gross die Diskette ist. Das ist komisch, weil bei dem Programm, haben sie eine seltsame Eingabe.
Sie müssen angeben, wie viele Köpfe - jede Diskette, hat zwei Seiten, stimmt eben nicht, am Anfang hatten sie scheinbar eine, Sektoren und - Tracks ihre Diskette hat. Also sie haben
Halt, sie müssen halt mathematik machen. Sie haben bei CHS keinen Block. Das ist LBA - sie nummerieren die Blöcke durch. Sie haben - einen Kuchen und den Schneiden sie - im Sinne von Tinker, Taylor, Soldier, Spy, falls ihnen das was sagt, in verschiedene Stücke. Und jetzt das macht man so in Mathematik - sie wissen wie man Kuchen oder in ihrem Falle Pizza - wenn das kein Quadrat ist, teilt
gut, jetzt haben sie die Sektoren. dann haben sie den Track. Also, lauter konzentrische Kreise und dann haben sie die Seite
OK - demnach haben sie lauter disketten. Verschiedene - 720 kByte. Und 320 kByte. Da muss ich nach lernen
gut - und das wichtig, das merken sie, wenn ihnen das egal ist, ist alles egal. Und sie haben halt beim PC, zum Beispiel da bin ich gerade dran, verschieden Speichergrössen. Sie haben 640 kByte und sie haben 512 und 256 kByte. Dazwischen halt? Wie heissen die 384 oder 348 - sagen sie es - das ist nicht egal. Weil einer PC, der würde gar nicht tun. Das heisst, ich habe 3x 5160 IBM Mainboards, mit x88. und das verrückte ist - dass jetzt halt die neuen Festplatten da sind. Also, die die ganz neuen, jetzt sind wir ja bei NVME - da ist das alles egal. Und davor SATA und dann ist das egal. Nur, davor halt IDE - und jetzt haben diese ganzen komischen - XT-IDE Festplattenkarten, haben halt damit eine sie so lustige Karten. Der Witz ist - dass jetzt noch was kommt. Ich habe den Zilog Z80. Dafür gibt es einen einfachen Plan, in der Gebrauchsanweisung selber.
Also, Datenblatt, da steht die Schaltung. Und - der Witz ist, zu dieser Schaltung - gibt es dann Leute, die haben eine Karte gemacht. Ich habe diese Schaltung gebaut, die tut noch nicht. Das ist das, was Zilog vorgeschlagen hat. Also, die haben das teilweise nach oben modifiziert, aber das ist das.
Und, der Witz ist, dass das egal, ob sie das verdrahten, oder die Karte nehmen, die sie im Internet kriegen
Das sind quasi heim gemachte karten. die sind geätzt, sehen vernünftig aus, grün lackiert, aber sind heim gemacht. Ist das glecihe, wie selber löten
Und jetzt gibt es diese Karten. Diese komischen Zilog Z80, karten, da müssen sie alles selber einsetzen
Mit den XT-IDE Karten, der PC XT tut halt gar nicht, mit den neuen Festplatten - gar nicht. Muss es nicht. Mein erster PC hatte zwei Diskettenlaufwerke, das waren übrgens 720 kByte. Im Laden zu haben als DD formatiert
Und - trotzdem, wenn sie die neuen Platten haben wollen, dann müssen sie - diese Karten nehmen. XT-IDE karten heissen die. Die sind wie die zilog z80 Dinger mehr oder weniger, zu Hause gemacht. Was sie dafür brauchen, sind vor allem EEPROM's. Ich weiss nicht, was auf der Karte ist. Da sind auch noch mal EEPROM's drauf. Sie müssen das halt kaufen, alles rein stecken
Jetzt der Witz, mit meinem PC geht das. Was mir der Herr da geschickt hat. Das geht aber generell gar nicht so gut. Weil sie müssen, das BIOS modifizieren. Das ist kein Baustein, das ist ein Programm - aber das sitzt halt im Baustein. Für alle Fans, die Riegel mögen. Sind das Bausteine, wie der SRAM - halt im DIL oder DIP. Und die sitzen in dem Baustein
Jetzt der Witz, um das BIOS zu modizfieren müssen sie den Bausten halt oder mehr weniger, mit einem neuen BIOS ausstatten
Ich weiss es noch nicht genau, ich werde es wissen - aber, wie gross ist eigentlich das BIOS. Das ist die Frage. Das ist halt ein Programm. Und jetzt müssen sie, deswegen eigentlich wissen, welche gross die RAM Varianten sind. Also, der Witz ist halt :Das ist nicht egal. Weil sie müssen das Mainboard ganz genau kennen. Und der Witz ist, dass 320 kByet oder 512 kByte das ist nicht egal. Weil, als der Witz - sie haben, das weiss ich nicht 100%, aber das ist schon mal so eine Vermtung - Sie haben halt mit 20 Bit - 1 MByte, Speicheraaddressierung - und jetzt kommt das berühmte Problem, über dem berühmten. Sie haben immer noch, wieder 64 kByte würde ich mal sagen, wieder zu viel
Weil, sie haben ja, jetzt mit dem Segment was geschaffen. Ich würde sagen, das ist das BIOS - nur - es gibt halt andere Mainboards. Ich habe zwei mal das gleiche. Ich sage, die aus Japan, sind alle grün. Das war die Zeit, wo sich FuJITSHI, mühe gab, die Sache in die Hand zu nehmen. Die amerikanischen sind braun gold.
Das ist das gleiche Mainboards. Aber die haben RAM Banks, das ist mal standard. Dann haben sie aber noch irgendwelche komischen Sets und sonst was alles, das lerne ich gerne
Und - der Witz - da gibt es physisch verschiedene Sockel. das mainboard, wo die Karte passt, da sind noch BIOS man könnte sagen extensions drauf. das heisst, sie können EEPROM's hin zu fügen. Das müssten sie. Weil, sie müssen ja, für die Karte, einen Code unterbringen. Ich glaube, dass da EEPROM's drauf passen. Wenn ich richtig geguckt habe - nur - sie müssen halt, den Code unterbringen
Gut - und jetzt
Zum Speichermanager. Sie sehen, sie müssen den Speicher schon genau kennen
Sie haben halt
1.) FS - File Manager
2.) MM - Memory Manager
Und das zweitere, heisst halt so. Das Ding hat keine MMU. Und vieles nicht. Floating Pont und - FPU haben die ja teilweise
Aber - das FS - ich denke, dass es gut dann die Disketten zu kennen. Das macht sinn
Und - der Memory Manager. Der hat halt jetzt nicht so das komische Ansehen was man dem zutraut
1.) Sie haben halt den Kernel
Jetzt zwei PROCS
Also sie haben zwei Sachen
1.) Sie haben
TASKS
2.) Sie haben PROCS
das ist relativ simpel
Die TASKS haben sie nicht im MM - also im Memory Manager. Da haben sie nur PROCS . Und sie haben fast die identische Struktur im Memory Manager. Wie im Kernel
Die heisst, mproc - im Memory Memory Manager und die heisst, proc im Kernel, so weit ich weiss
Und machen wir es kurz. Sie haben folgende Strukturen
Sie haben
holes
mproc bzw. proc
mem_map
Und es geht jetzt um proc und mproc. Der Witz ist - das ist nahezu identisch, aber - sie haben das im Speichermanager
mit NR_PROCS und im Kernel mit NR_PROCS + NR_TASKS
Das ist halt immer der Witz, mit der Unterscheidung von Tasks und Procs. Das ist immer so eine Sache. Procs sind Prozesse. Ganz einfach. aber was sind tasks. Wenn man das Minix versteht, dann weiss man was ein Task ist. Das ist ein Betriebssystemspezifischer Prozess.
Es gibt bei Minix drei. File System, Memory Manager und Kernel
Es nicht daneben, die Konstanten zu lernen. Ich sage, drei klingt echt neben der Spur. 12 das klingt vernünftig. drei nicht
Aber, das weiss ich noch nicht, vielleicht irre ich mich
Weil
NR_TASKS sind 8
und NR_PROCS sind 16
Gut. Jetzt haben wichtigste Typ_defs
Sie haben
phys_clicks
und vir_clicks
Sie haben physikalische Clicks, was auch immer das ist. Man muss es halt lernen. Ich würde sagen 16 Byte. Weil, sie halt mit den Segmentregistern, machen sie - immer 16 Byte schritte. sie können 64 KByte Addressieren. Wenn sie das Segment verändern, um 1 Byte, ist das ein Sprung, um 16 Byte
Würde ich sagen - kann man später nachschauen. Stimmt wahrscheinlich. Dann gibt es phys_clicks. Das ist wird das 100% reale Sein
Und jetzt der Witz, dass sie vor allem
mem_map und das ist wichtig, weil sie haben ja bei Segment, ein Anfang und ein Ende
Und in mem_map, haben sie das physikalisch und virtuell, den Anfang
mem_vir
mem_phys
das ist der Anfang. Sie haben kein Ende, aber sie haben - mem_len. Ich vermute, das kommt daher, dass sie, wenn sie das Programm laden und nichts anderes tut das OS - dann laden sie das so, dass sie eine Länge haben
Und jetzt haben sie noch was. Das sind die Register. Die sind architekturspezifisch
Das sind
ax, bx, cx, dx, sp, bp, si, di, es, ds, ss, cs
und so weiter. Gut - dann haben sie NR_REGS
Sie haben folgende NR_ Konstanten
NR_REGS - das ist die Anzahl der Register, das macht sinn, sich das zu merken.
NR_SEGS - das ist die Anzahl der Segmente. Das entspricht ja den Registern
NR_TASKS - das sind die Tasks
NR_PROCS - das sind halt die Prozessse
NR_HOLES
Also, das ist relativ simpel.Sie müssen für den Task Switch - was ja eigentlich ein PROC_SWITCH ist, sich den gesamten Kontext merken. Dazu gehören die Register und die Segmente
Gut - wenn das passiert - sie haben den PIT 8253 - der witz ist, der hat zwei Zähler. So wenig ein Zähler interessant aussieht, auf den ersten Blick, abgesehen davon, dass jede Datei immer die Uhrzeit hat, ist das ja, nicht so interessant. Doch, weil sie haben 2 Zähler. Eigentlich drei am PIT 8253 - so weit ich weiss, können sie beim PC XT nur 2 benutzen
Und das brauchen sie - weil sie können keinen Task Switch machen.
Gut, dann gibt es halt einen Interrupt. Jetzt müssen sie alles neu laden. Und dazu gehören die Register. Deswegen haben sie NR_REGS und alle Register werden gesichert. Die Frage ist, was ist das für eine Struktur. Das ist ganz einfach
Weil die Register sind 16 Bit Breit. Da könnnen sie einen Signed INT oder oder UNSIGNED INT - ist ja egal. Nur, dann müssen sie das halt rein schreiben. Also haben sie ein Array. OK, und dann kommen die Speicherbereiche und dafür haben sie
mem_map und da müssen die Grenzen rein. Fertig
gut - Jetzt müssten sie, rein theoretisch, den Round Robin Task switch so machen, sie haben halt ihre MPROC struktur, sie zählen nach oben und müssen mit jedem Zeitgeber Intervall, die Struktur mit dem Zähler auslesen und rein schreiben in die Register, das kommt später
Gut - und jetzt haben sie noch zusätzlich die pid
das heisst, sie haben die für den Prozess, im Kernel und die heisst entsprechend anders, und sie haben die für den Speicher
m_pid
oder so. Das hat nichts mit dem Zähler zu tun. Sie haben dann noch die gid und die uid. Und dann haben sie das effektiv und real. Und dann halt noch einige Dinge
Gut - dann haben sie jetzt die Segmente
mem_map
dann die MPROC und jetzt die Holes
Das ist das andere Thema. Da bin ich jetzt. Wenn sie den Speicher angucken, dann gibt es nicht zu viel zu tun
Das erste, was ich nicht tun würde, ist das Ding so zu lernen, dass ich das von der Innerei her lerne. Das würde ich beim Speichermanager machen, wenn es nicht um das Prozess laden geht. Sie haben zwei Sachen. Sie haben einerseits so zu sagen, die rein form des Speichers und sie haben das Problem, mit dem Programm nachladen. Das ist ja das Hauptproblem
Und jetzt - müssen sie halt, immer die Funktionen unterscheiden
fork ()
exit ()
exec ()
break ()
alloc ()
signal ()
Das sind so die Hauptdinger. Das sind aber Systemaufrufe. Systemcalls. Wenn sie halt das in DOS anschauen oder in Minix oder Linux, die unterscheiden sich ja nicht so generell. Sie haben halt die ultimativen Anfänger Dinger, die es nicht sind, wegen PIO und Memory Mapped IO
Sie haben halt den IN und OUT Befehl. Und ich würde jetzt sagen, Pi Mal Daumen, muss ich für die Prüfung wissen - aber habe schon geschrieben, kam nicht vor, aber lerne ich gerade
Sie haben ja so zu sagen IN und OUT, das reicht ja gar nicht. sie haben ja - Ports - und wenn sie den Z80 angucken, dann hat, A und B- weit gefehlt. Wenn sie den löten und dann den Assembler schreiben und voraugsetzt es tut oder nicht - sie werden merken, es gibt zwar an dem PIO ein A und B, aber letzten sind das alles Ziffern. Also, sie zählen von 0 bis 255, konsekutiv nummiert, binär codiert. Gut - gut, sie haben ja für jeden Port immer eine Nummer. Und Memory Mapped, das ist eigentlich was anderes glaube ich - heisst einfach. Während sie für den Speicher Addressen verwenden, verwenden sie ja Addressen für die E/A. Und der Witz ist, dass sie nicht den Speicherbereich verwenden, der irgendwo im RAM besonders ist, das wäre eher DMA - das hat aber nichts mit Ports zu tun, sondern hier liesst die Festplatte heimlich aus dem Bereich. Gut - sie benutzen einfach Addressen
Und wie das geht - ist halt weil der Prozessor - pins hat. Der Prozessor hat ja Pins. Und wenn sie IN und OUT nehmen, dann ist das nicht irrelevant. Ob sie MOV oder IN und OUT nehmen. Weil, da werden gewisse - eigentlich 1 oder 2 Pins aktiviert oder HIGH/LOW gesetzt. Und das heisst, einfach, wenn der HIGH ist oder LOW dann wird ein Mal der Speicher addressiert und ein Mal die EA. Und deswegen haben sie den PIO
Sie haben beim Z80 einen SIO und PIO - und das komische ist, sie haben eigentlich zwei Mal P. Weil sie haben einen 084. heisst der hier. Und unter den 825x müssen sie gucken, 1, 7, 5. Einer ist ein DMA Steuerungsbaustein und einer Seriell und einer Parallel. Und sie haben halt beim Z80 haben sie - einen SIO und PIO. Und das müsste heissen PPIO. Weil sie haben einen Paralleln Programmierbaren Ein und Ausgabebaustein
Gut - und jetzt haben sie - die Systemaufrufe, lese von der Tastatur, und schreibe dahin. Ebenso in die festplatte. Das ist ja vom Benutzen standard, von ankleben nachher nicht schwer - imd trotzdem ist das nicht anfänger
Aber der Witz ist die besseren Routinen, von den Nutzern sind
EXIT
EXEC
BREAK
SIGNAL
ALLOC und so weiter
Und sie müssen halt die Programme von der Platte laden. Gut - jetzt kommt aber der Hauptteil
Wenn die Pointer unfähigen hoffentlich das Internet verlassen haben, dann erreicht sie vielleicht diese Botschaft - wir wissen worum es geht
Das unnötige Alloc
Ich sage mal so - das ist ein bisschen Hirnverbrannt. eigentlich haben sie beim x86er eine Mixtour aus einer Neumann und einer Harvard architektur
Weil Neumann trennt ja Code und Daten nicht. der x86er macht beides. Bzw. Sie können das überall ablagern
Wenn sie einen Controller nehmen, wie den Atmega8, dann haben sie ja eigentlich die Trennung perfekt. Weil sie brauchen gar nicht so sehr, den RAM normalerweise. Es gibt Leute, die wollen nichts anderes als RAM - wenn man denen erklärt, ihr Computer keinen RAM - dann glauben die, dass der nicht geht
Und das sind aber die, die freuen sich, wenn das LCD am Prozessor tut. Wenn der Effekt geht, dann geht der Computer. Das heisst eigentlich nicht RAM, sondern Speicher. Den RAM brauchen sie ja nur deswgen, weil sie Tabellen haben, wo ihre Rechnugnen etwas ändern. Für das LCD brauchen sie das nicht.
Und - wenn sie alloc () benützen, dann wird dem Anfänger - klar gemacht, da wird was vom Heap beansprucht
eigentlich haben sie
1.) Statische Daten und Code oder Text
2.) Heap
Das komische ist - dass der Heap eigentlich eben die Daten sind. Beim x86er mischen sie das. Weil sie können ihren Programmspeicher ändern. Beim Atmega8 nicht unbedingt. Das steht ja fest drin
Gut - und - jedenfalls - brauchen sie halt trotzdem das Alloc () das klingt, wenn die Bücher so liesst, als könnnte der Nutzer da speicher beanspruchen
Eigentlich ist das relativ seltam. weil das ALLOC betriebssystemspezfisch was anderes. Sie brauchen das eh. Sie müssen halt - Speicher beanspruchen - wenn sie ein neues Programm laden
Dann müssen sie lesen und rein schreiben. Gut
jetzt müssen sie sich nur die alloc.c angucken
also, die
mm/alloc.c
Also haben eine
mm/forexit.c
mm/exec.c
mm/break.c
...
Aber sie haben halt eine alloc.c
Und jetzt muss man nur wissen - man gibt
Speicher frei
Man halt neuen Speicher
Das ist eigentlich. Jetzt kommen ihre Holes. Der Witz ist, dass diese Struktur hole
struct hole {
} hole [NR_HOLES];
Da ist wieder NR_HOLES. Und das heisst, das ist ein Array. mit guten Grund - das hat zwei Gründe
1.) Sie haben jetzt eine Speicherliste
Der Witz ist halt, ich würde nicht sagen, die Bücher haben das nicht falsch gemacht. aus heutiger Sicht kapiert man nichts mehr
Wenn sie in C eine Liste haben - dann haben sie ja alloc () einfach. Oder realloc - oder malloc () und so weiter. Und dann haben sie ja ihre Liste mit Pointern. Und der Witz ist - dass ja dann das OS benutzen. Und das können sie ja jetzt nichts. Sie haben ja immer noch in der Realität. einen festen Speicher. Der wird ja nicht dynamisch
Und jetzt haben sie das OS - und sie können ja das OS nicht verwenden, damit das OS dynamisch den Speicher verwaltet.
Deswegen haben wir halt ein Array. Von den Holes. Und wir müssen jetzt unterscheiden, den Speicherplatz, den wir wirklich verwenden
Das ist ja mem_mapped. das ist einfach das vom Programm
Damit können wir nichts anfangen Für den Speichermanger. Weil wir haben zwei Mal wieder eine umgekehrte Seite
Wir haben halt den belegten Speicherbereich, es hängt von unserer Psychologie. Sind wir positivistisch und das Gegenteil
Wir sind positiv denkende Menschen, also naiv und gehen vom schlechten aus. Wir gehen davon aus, jedes Programm kriegt speicher und jeder merkt sich was er hat.
Und dabei verschwindet Speicherplatz, Stück für Stück. gut ein anders denkender Mensch, würde sagen - wir merken uns, wo ist speicher verbraucht. Für jeden. Und wir merken uns, wo ist Platz frei. Das Programm sich, wo ist der Speicher
Und - jetzt der Witz - gut - und jetzt müssen wir halt, dieses Allokieren mit was festen machen und das ist
struct holes {
} hole [NR_HOLES]
Gut, das ist beides. Eine Liste, für den nächste und eine Anzahl. Der witz ist, dass das nicht die Speicherplätze Bänke oder was auch immer sind
Sondern, dass das eine Liste ist. Das hat nichts damit zu, wo der Block ist. Die Liste speichert unabhängig der Blöcke, wo der nächste Platz ist. Das ist einfach eine Liste
Es gibt aber zwei
Eine, mit dem nächsten Platz und noch eine Liste.w enn ind er Liste gespeichert wird, wo der Speicher verbraucht ist, dann kommen programme aus dem Speicher wieder raus.
Und jetzt hat die Liste natürlich Löcher, also deswegen gibt zwei Listen, die beruhen auf einer Liste. Das sind dieselben Elemnte, quasi
Nur, die eine ist halt die nicht freispeicherliste, das ist insgesamt, sondern die Liste mit möglichen Einträgen und eine Liste, da kommen die rein, wo verbraucht sind. An Listeneinträgen
Und deswegen, man kann
Speicher freigeben
Speicher anforden
Das entspricht alloc und mem. Das spürt der Nutzer
das andere ist - del_slot und merge. das ist etwas anderes
Es gibt zwei Prinzipien
1.) Anfordern
2.) Freigeben
1.) Es realen Speicherplatz
2.) Die Verwaltungsliste
Und man kann
1.) Speicher anfordern
2.) Speicher freigeben
1.) Listeneintrag anfordern
2.) Listeintrag mit dem anderen vermischen, dann muss weil, da können zwei Löcher aufeinander folgen
Und dann gibt es max_hole
Also, die länge des grössten freien Speichers
Das ist für mich schon fast trivial
Ich glaube, dass es sich lohnt, die ganzen Dinger aus wendig zu lernen
Zum Beispiel ob sie
phys_clicks
und
phys_bytes und so weiter
oder
vir_clicks
Oder die Nummern von den Register. Das sind ja definitions. Ich würde es trotzdem lernen
dann kommen später so Dinger, wie klib88.s.
Ich weiss nicht, was das ist. Ich denke, oder mpx88.s. ich denke, dass man besonders halt nicht so daher kommt, dass man den Mechanimsmus anguckt, sondern ich glaube,
das man so verrückt die Idee klingt, dass ja alles ein Top-Down Ansatz erfolgt ist das eine Klasse
sie haben halt
Minix
FS
MM
Kernel
und so weiter
Minix
FS
MM
alloc.c
alloc_mem ()
free_mem ()
del_slot ()
merge ()
forkexit.c
exec.c
Kernel
Und so weiter. Ich glaube, wenn sie die Namen, wie bei Milchtüten, dann haben sie gewonnen. das ist das eine
Und das andere ist halt - dass sie halt vielleicht einfach wissen, es gibt eine mpx88s. was genau da drin steht, das kommt schon
Wissen muss man wissen es
Man muss wissen
mov al, byte ptr equip_flags
cmp al, 0000 0001b
je f15b
jmp start
das halt die - POST Chamber Mode Routine. Man halt alles wissen. Leute sagen man müsse es nicht. Und wollen weiter und doch nicht. Und dann wollen sie und sagen wir müssen mal und dann ach müsste man das wissen
So kommt das Chaos. Dabei ist das einfach.