dipende da che linguaggio vuoi usare.
puoi scrivere un sistema operativo quasi interamente in C.
dico quasi perche' ci vorra' qualcosetta in assembler e qualcosetta cablato nella ROM per fare il boot, ovviamente.
cmq c'e' sicuramente molto da sapere sulla programmazione concorrente (processi, semafori, ...)