====== top — Speicher und Prozesse ====== top # im Terminal: Live-Anzeige, q beendet /bin/top.elf # als Programm: eine Momentaufnahme → [[lyxos:bin|Werkzeuge in /bin]] · [[lyxos:prozesse|Prozesse & Ring-3]] · [[lyxos:smp|SMP & Tasks]] · [[lyxos:bin:sysinfo|sysinfo]] ---- ===== Zwei Fassungen, ein Name ===== ''top'' gibt es doppelt, und der Unterschied ist wichtig: ^ ^ Woher ^ Verhalten ^ | **Terminal-Built-in** | im [[lyxos:vega|Vega]]-Terminal eingebaut | läuft in der Ereignisschleife des Terminals mit ''SysYield'' und zeichnet in den Zeichenpuffer; ''q'' beendet | | **''/bin/top''** | eigenes Ring-3-Programm | eine Momentaufnahme, dann Ende | Der eingebaute Weg wurde gewählt, weil das Terminal ein Kind bis zu dessen Ende blockiert: ein Programm, das sich selbst in einer Schleife auffrischt, würde das Terminal festhalten und seine Ausgabe erst beim Beenden zeigen. Als Built-in entfällt zugleich der ANSI-Parser — das Terminal schreibt direkt in seine Darstellung. ===== Ausgabe ===== top — Lyx OS Mem: 512 MB total 96 MB used 416 MB free Bump: 16 MB total 3 MB used 13 MB free Tick: 12045 (120 s) PID NAME STATE CPU% MEM 2 term RUN 4.1% 512 K 3 taskmgr READY 0.3% 128 K * **Mem** — Seiten des Seitenverwalters, in MB umgerechnet (256 Seiten = 1 MB). * **Bump** — der Bump-Bereich. Er ist die knappste Ressource; wer wissen will, ob eine große Anwendung noch hineinpasst, sieht es hier. * **Tick** — der 100-Hz-Zähler des Zeitgebers, dahinter in Sekunden. * **CPU%** — **kumulativ**, nicht momentan: ''cpu_ticks / pit_frame'', wie bei ''ps''. Bei 100 Hz ist die Auflösung 10 ms; kurze Läufe ergeben oft ein Delta von 0 und summieren sich erst über die Zeit. Gibt es keine Kindprozesse, steht dort ''(no child processes)''. ===== Woher die Zahlen kommen ===== ^ Syscall ^ Nr ^ Liefert ^ | ''sys_proc_info(slot, buf)'' | 202 | PID, Zustand, belegter Heap, CPU-Ticks, Name (16 B) | | ''sys_mem_stats(buf)'' | 203 | freie und gesamte Seiten, Tick-Zähler, Bump-Füllstand | | ''sys_cpu_stats'' | 205 | Kernzahl und je Kern die Zähler (busy, total) — der Aufrufer rechnet ''util = Δbusy/Δtotal'' | > **Der Puffer für ''sys_mem_stats'' ist 64 Byte groß, nicht 24.** Der Kernel füllt inzwischen bis +40 (''busy_ticks'', Bump-Füllstand). Ein zu klein bemessener Puffer schrieb über sein Ende hinaus — unauffällig nur deshalb, weil ''mmap'' ganze Seiten liefert. Wer eigene Werkzeuge gegen diesen Syscall schreibt, nimmt 64 Byte. Die frühere Nummer **204** (''cpu_idle_tick'', ein Leerlaufzähler je Kern) **gibt es nicht mehr** — sie wurde beim TO-8-Rückbau entfernt, nachdem TO-9.5 die Kernstatistik auf die echte Buchführung des Schedulers umgestellt hatte. Wer noch gegen 204 schreibt, bekommt keinen Wert. Unter QEMU sieht man regelmäßig Kern 0 bei ~100 % und die übrigen bei ~0 %: die Anwendungskerne laufen im Leerlauf, die SMP-Verteilung wird noch nicht genutzt. ---- Letzte Aktualisierung: 2026-08-27 — Seite neu angelegt, aus ''lyx-os/bin/top.lyx'' und ''vega/term.lyx'' erhoben.