Operating Systems
The course is divided into 2 parts:
- ArduinOS
- Linux
In the ArduinOS part, you have to program a Operating System for the Arduino Uno. It has to fit the following requirements:
1. Het OS leest opdrachten die op de command line worden gegeven (3).
2. Vanuit de command line kan data in bestanden worden opgeslagen, een lijst getoond van opgeslagen bestanden,
de inhoud van bestanden getoond, bestanden gewist en de hoeveelheid beschikbare vrije ruimte getoond (4).
3. Er kunnen variabelen in het geheugen opgeslagen worden van de typen CHAR, INT, FLOAT en STRING, weer
teruggehaald uit het geheugen, en van waarde veranderd (5).
4. Een bestand in het bestandssysteem kan als proces gestart, gepauzeerd en gestopt worden (6).
5. Er wordt van verschillende processen bijgehouden wat de toestand is (running, suspended, terminated), de waarde
van de program counter, en welke variabelen bij dat proces horen (6, 7).
6. Het OS kan instructies in een bytecode-programma uitvoeren (6).
7. Het OS kan meerdere processen tegelijk uitvoeren (afwisselend ́e ́en instructie van elk proces) (7).
8. Vanuit een bytecode-programma kan data van de typen CHAR, INT, FLOAT en STRING naar bestanden geschreven
worden en uit bestanden gelezen (4, 6).
9. Vanuit een bytecode-programma kunnen andere processen opgestart (geforkt) worden en kan gewacht worden op
het voltooien van een ander proces (6, 7).
10. Bonus: Er zijn faciliteiten in het OS aanwezig voor het toekennen van prioriteiten aan processen, en een proces
wordt uitgevoerd met de toegekende prioriteit (8).
11. Bonus: Er zijn faciliteiten in het OS aanwezig voor het uitwisselen van data tussen twee processen door middel van
shared memory (9).
12. Bonus: Er zijn faciliteiten in het OS aanwezig voor het gebruik van semaforen voor gedeelde bestanden of shared
memory (9).
13. Bonus: Er is een compiler aanwezig die (een variant van) C- of Python-code omzet naar bytecode geschikt voor het
OS (hoeft niet op Arduino te draaien; parser hoeft niet zelfgeschreven te zijn).
In the Linux part, you have to hand in 17 assignments, in which you learn about the Linux operating system.