Scheduling o cosa?

di il
1 risposte

Scheduling o cosa?

Ciao a tutti,
vorrei porvi una domanda.
Ho un software scritto in c che gira su un microcontrollore a 32 bit.

Il software deve gestire varie cose, ad esempio gestire gli input e gli output, gestire il modem e la connessione TCP, fare il parsing di un file JSON in arrivo dalla connessione TCP, ecc.

Chi ha scritto il software l'ha strutturato come ho indicato sotto, cioè un ciclo infinito che esegue ciclicamente le varie funzioni che gestiscono il tutto, SENZA INTERRUPT di alcun genere.


main()
{
	inizializzazione();
	
	while(true)
	{
		gestione_IO();
		gestione_modem();
		parser_JSON();
		gestione_seriale();
	}
}

Le funzioni dentro il ciclo sono strutturate in modo da essere non bloccanti (non so se è il termine giusto). Ad esempio la funzione parser_JSON() esegue il parsing di un file JSON una riga alla volta e poi ritorna. Questo perchè il JSON è composto da più di 1000 righe e effettuare il parsing in un unica sessione comporterebbe tenere impegnato il microcontrollore per fare solo quello e, ad esempio, perderebbe i dati in arrivo sulla seriale.
Quindi in sostanza le funzioni all'interno del ciclo fanno il loro lavoro un "passo" alla volta per simulare una sorta di multithreading. Ovviamente la cosa diventa complessa poichè le funzioni devono salvare i vari stati prima di ritornare per poi riprendere da dove avevano interrotto (ad esempio nel parsing del json deve memorizzare il numero di riga).

Io avrei usato una libreria FreeRTOS ma anche questa tecnica può essere valida.

A questo punto vorrei chiedere alcune cosa a chi è più esperto di me:

1) come si chiama questa tecnica? Qualcuno può indicarmi un libro, una guida, qualcosa per approfondire l'argomento?
2) come si chiama la tecnica delle funzioni non bloccanti (non so se è il termine giusto)? Libri, guide?

Grazie a chi più esperto di me e vuole darmi una mano.
Saluti.

1 Risposte

  • Re: Scheduling o cosa?

    1 una soluzione intelligente per un problema non banale
    2 non ne ho idea
Devi accedere o registrarti per scrivere nel forum
1 risposte