Indice

Multithreading sui retrocomputer 6502/6510

PREMESSA: DAI THREAD AI PROTOTHREAD

In informatica il multithreading indica il supporto nell'esecuzione di più “thread” o flussi di esecuzione. Nei sistemi con forti vincoli di memoria come i computer basati sui processori 6502/6510, il multi-threading tradizionale può determinare un eccessivo sovraccarico di memoria. Nel multi-threading tradizionale, infatti, ogni thread richiede il proprio stack che occupa, a sua volta, parti estese della memoria disponibile.

Grazie ad alcune caratteristiche specifiche del linguaggio C è possibile costruire una serie di “macro” che permettono di implementare una funzionalità analoga, ma più leggera, dei thread: i protothread 1). Lo scopo dei protothread è implementare un flusso sequenziale di controllo senza implementare automi a stati finiti complessi e senza ricadere, necessariamente, nel caso di un multi-threading completo.

I protothread sono estremamente leggeri (ognuno di essi richiede solo due byte di memoria per funzionare), sono privi di stack e forniscono un contesto (semantico) ad un sistema basato su eventi. Il fatto di essere privi di stack li rende particolarmente utili in quei contesti dove la velocità è essenziale e l'occupazione di spazio critica.

I protothread sono implementati in C puro e non richiedono alcun codice assembler specifico per la macchina. Possono essere quindi utilizzati su tutte le piattaforme che suportano il compilatore C e, di conseguenza, anche in quelle supportate dalla libreria MIDRES.

Questo tutorial illustrerà come usare la funzionalità esposta dalle primitive della libreria MIDRES, e la loro applicazione al gioco "The Elevator".

INDICE

1)
questo articolo illustrerà come usare la funzionalità esposta dalle primitive della libreria MIDRES; tali primitive sono fortemente ispirate alla protothreads library scritta da Adam Dunkels con il supporto di Oliver Schmidt, al quale si rimanda per eventuali approfondimenti