Open Data e Trasparenza come punto di contatto fra cittadinanza e politica
Costrutti linguistici
1. COSTRUTTI LINGUISTICI
COSTRUTTI SPECIFICI PER LA CONCORRENZA
S TRUTTURE D ATI
DESCRITTORE PROCESSO
Typedef struct{
PID nome;
modalita_di_servizio servizio;
tipo_contesto contensto;
tipo_stato stato;
PID padre;
int N_figli;
des_figlio prole[max_figli];
p_des successivo;
} des_processo;
PUNTATORE ALL’ELEMENTO SUCCESSIVO
typedef des_processo * p_des;
PI D
typedef int PID;
MODALITÀ DI SERVIZIO
typedef struct {
int priorita;
int delta_t;
} modalita_di_servizio;
DESCRITTORE FIGLIO
Typedef struct {
PID figlio;
boolean terminato;
}
CODA DI DESCRITTORI
Typedef struct{
P_des primo, ultimo;
} des_coda;
2. F UNZIONI
D ISPONIBILI
PID assegna_nome();
p_des descrittore(PID x);
void inserimento(p_des pro, des_coda coda);
p_des prelievo(des_coda coda);
I MPLEMENTAZONE
M O N O P R O C ES SO R E
SALVATAGGIO STATO
Void salvataggio_stato(){
P_des esec = processo_in_esecuzione;
esec->contesto= //valori dei registri della CPU//
}
RIPRISTINO STATO
Void Ripristino_stato(){
P_des esec = processo_in_esecuzione;
//valori dei registri della CPU//=esec->contesto;
}
ASSEGNAZIONE CPU
void assegnazione_cpu{
int k=0;
p_des p;
while (coda_processi_pronti[k].primo == null)
k++;
p=prelievo(coda_processi_pronti[k]);
}
PIE ( P R O C E S S O I N E S E C U Z I O N E )
PID PIE(){
PID nome_processo_in_esecuzione;
p_des esec = processo_in_esecuzione;
nome_processo_in_esecuzione = esec->nome;
return nome_processo_in_esecuzione;
}
4. int k = indice_figlio(p_padre, esec->nome);
p_padre->prole[k].terminato=true;
inserimento(esec, descrittori_liberi);
if(p_padre->stato==//attende che il figlio termini//){
int pri = p_padre -> servizio.priorita;
inserimento(p_padre, coda_processi_pronti[pri]);
p_padre->stato = //processo attivo//;
}
Assegnazione_cpu();
}
INTERRUZIONE TEMPORIZ ZAZIONE (TIME SLICE)
Void interruzione_temporizzazione(){
P_des esec = processo_in_esecuzione;
int k;
k = esec->servizio.priorita;
inserimento(esec, coda_processi_pronti[k]);
assegnazione_cpu();
}
M UL T I P R O C E SSO R E
Il codice rimane sostanzilmente identico. Tranne per il fatto che l’accesso a
coda_processori_liberi e descrittori_liberi deve essere esclusivo. Inoltre processo in
esecuzione dovrà essere un array.