Avrai bisogno di molte di queste strutture dati per lo scheduler. A seconda dell'algoritmo che si utilizza per pianificare i processi, si useranno diverse strutture di dati. Il più popolare, un algoritmo round-robin utilizzerà una coda (FIFO).
Farai anche un sacco di threading e fork / exec che non sono realmente dipendenti dalla struttura dei dati, ma utilizzano molta programmazione di "sincronizzazione".
Nella classe che ho preso non abbiamo effettivamente scritto il sistema operativo, abbiamo solo usato l'API di base fornita dal sistema operativo (come la lettura da un buffer, la scrittura su un buffer, fork, exec, ecc ...) e ha anche utilizzato linguaggi di livello superiore come C # e Java per implementare applicazioni multithread.
Capire i concetti alla base delle risorse, i problemi dei consumatori dei produttori (livelocking, deadlocking) saranno molto utili.