Avros
Unix-ähnliches eingebettetes Mikrokernel-Betriebssystem für Atmel AVR-CPUs
Läuft auf ATMega1284p mit 16K RAM
Merkmale:
- Minimal Microkernel mit Message Passing -Einrichtungen, die Mehrheit der OS -Dienste ("Prozessverwaltung", Dateisystem, Gerätefahrer) werden durch separate Aufgaben (Server) implementiert, die mit ihren Clients (Benutzeraufgaben) und miteinander durch Nachrichtenübergabe kommunizieren
- Die derzeit implementierte Betriebssystementität ist unixartig. Mit vertrauten Systemaufrufen wird die Betriebssystementität hauptsächlich durch die OS-Service-Aufgaben (Server) definiert.
- Mehrere Betriebssystementitäten können auf derselben CPU koexistieren und denselben Mikrokernel teilen
- Kooperatives und/oder Timer -Interrupt -basierter präventive Multitasking
- Virtuelles Dateisystem mit UNIX -PIPES - (Dateinamen und Ordner werden noch nicht implementiert - Sie müssen sich auf jede Datei mit ihren jeweiligen Geräte-/Inode -Nummer -Duetten beziehen, z. B. Syntax: '2/1').
- Gerätetreiber werden als separate Aufgaben (Gewinde) ausgeführt, einschließlich Rohrgerät
- Einheitliche Geräte -Treiberschnittstelle
- Shell Access über USAArts, mehrere Sitzungen können bei Init hervorgebracht werden.
Repository
Main.c: Erste Aufgabe und Hauptfunktion - Das Betriebssystem führt diese Aufgabe zuerst aus. Es erstellt die Server in der Reihenfolge (TS, VFS, ES, PM, siehe unten für Bedeutung), legt Geräte ein, registriert die ausführbaren Ausführungen und spawns schließlich 'init', was die root -Aufgabe für jede Benutzeraufgabe ist.
Kernel: Microkernel und HAL (Hardware Abstraktionslayer) Quellcode
- Grundlegende Funktionen: Erstellung und Planung von Aufgaben (Priority Round Robin), Nachrichtenübergabe, Interrupt -Handling, Speicherzuweisung (Memory Manager -Server befindet sich in der Entwicklung, siehe Misc/).
- Idletask - läuft, wenn nichts anderes zu laufen ist - hält die CPU bis zum nächsten Interrupt an, um Strom zu sparen
USR
Server:
- PM: Process Manager -
Prozesshierarchie, Zombie -Prozesse, exit (), wait (), exec (), spawntask () - VFS: Virtual File Server - Dateideskriptoren, Filp -Tabelle, Inodes, Open (), Close (), Read (), Write (), Dup (), Pipe (), MkDev (), Mknod (), fstat () usw.
- SEMA: Einfacher Semaphore -Server (derzeit nicht genutzt) - P (), v ()
- TS: Zeitserver - Timer Interrupt Handler, Sleep (), Verfügbarkeit, Echtzeit
- EX: Executables Server - Register Runnable -Anwendungen und stellt sie an PM bereit, wenn eine Aufgabe exec () (AVR eine Harvard -Architektur -CPU ist. Das Betriebssystem kann das Binary nicht laden und in den Flash -Programmspeicher verbrennen)
Treiber:
- tty_usart0: Interrupt-gesteuerter TTY-Treiber für USAArT 0-Gerät
- MemFile: Speicherantriebsgerät mit Inode -Verwaltung
- POSPEDEV: Rohrgerät (Mehrlese, Multi-Write)
DOC: Dokumentation (Ansicht mit DIA: https://wiki.gnome.org/apps/dia/)
lib: src/queue.c: doppelt verknüpfte Liste