====== 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.