====== Sommario lezioni ed esercitazioni ====== ---- **"valgrind: the 'impossible' happened: Killed by fatal signal"** ---- ^ Numero ^ Descrizione ^ Materiale ^ Altro ^ Data ^ | 1 |** {{:informatica:sol:laboratorio21:esercitazionib:00-InformazioniCorso.pdf| Introduzione al corso}} **\\ **Lezione**: Compilazione con gcc: descrizione di alcuni parametri tipici (-g -c -o -I -O). Uso del C99 vs Ansi C. Richiami di C (stringhe, //argc//, //argv//, allocazione dinamica della memoria, strutture, funzioni con argomenti variabili, puntatori e stringhe). |{{:informatica:sol:laboratorio20:esercitazionib:gcccommandline.pdf| Compilazione con gcc.}}\\ {{:informatica:sol:laboratorio21:esercitazionib:argcargv.pdf| Argc Argv}} \\ {{:informatica:sol:laboratorio20:esercitazionib:structandunion.pdf| Strutture e Union}}\\ {{:informatica:sol:laboratorio20:esercitazionib:gestioneMemoriaC.pdf| Gestione della memoria in C}} \\ {{:informatica:sol:laboratorio15:esercitazionib:c001puntatoriestringhe.pdf| Puntatori e stringhe}} \\ {{:informatica:sol:laboratorio21:esercitazionib:variadicargs.pdf| Funzioni con argomenti variabili.}} \\ | [[https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Standards.html#C-Language|C standards in GCC]] | 16/02/21 |\\ | 2 |**Esercitazione**. Richiami di C (stringhe, puntatori e argc/argv). Uso di gdb. | [[esercitazione1|Assegnamento1]] Possibile soluzione. | {{:informatica:sol:laboratorio:esercitazioni:c-refcard.pdf| Pieghevole comandi C}}\\ [[https://sourceware.org/gdb/current/onlinedocs/gdb/|GDB User Manual]] \\ {{:informatica:sol:laboratorio:esercitazioni:gdbcheatsheet.pdf| Pieghevole comandi GDB}} \\ {{:informatica:sol:laboratorio18:esercitazionib:gdb_valgrind.pdf| Note gdb e valgrind}} \\ {{:informatica:sol:laboratorio15:esercitazionia:emacs-refcard.pdf| Pieghevole comandi Emacs}} | 18/02/21 19/02/21 |\\ | 3 |**Lezione**. Puntatori a funzioni, esempi. Funzioni rientranti: tokenizzazione di stringhe con 'strtok_r' e generazione di numeri pseudo casuali con 'rand_r'. Il preprocessore, compilazione condizionale. | {{:informatica:sol:laboratorio17:esercitazionib:c003punfunzegenerico.pdf| Puntatori a funzione e 'void*'}} \\ {{:informatica:sol:laboratorio21:esercitazionib:reentrantfunc.pdf| Funzioni rientranti.}} \\ {{:informatica:sol:laboratorio21:esercitazionib:c004preprocessore.pdf| Preprocessore.}} | | 23/02/21 |\\ | 4 |**Esercitazione**. Funzioni rientranti. Tokenizzazione di stringhe e generazione di numeri pseudo casuali. | [[esercitazione2|Assegnamento2]] \\ Possibile soluzione. \\ | | 25/02/21 26/02/21 |\\ | 5 |** Lezione **: Compilazione e linking in C. Classi di memorizzazione: //static//, //extern//. Creazione di librerie statiche e dinamiche. Makefile. | {{:informatica:sol:laboratorio21:esercitazionib:prepcomplinking.pdf| Compilazione e linking.}} \\ {{:informatica:sol:laboratorio21:esercitazionib:classimemc.pdf| Classi di memorizzazione}} \\ {{:informatica:sol:laboratorio21:esercitazionib:libreriec.pdf| Librerie statiche e dinamiche}} \\ | | 02/03/21 |\\ | 6 |**Esercitazione**. Creazione di librerie statiche (.a) e dinamiche (.so). Utilizzo di macros. Utilizzo del modificatore 'static'. | [[esercitazione3|Assegnamento3]] \\ Possibile soluzione. \\ | | 04/03/21 05/03/21 |\\ | 7 |** Lezione **: Makefile: a cosa serve e sua struttura. Struttura a directory del FS Linux/Unix, principali directory, path assoluto e relativo. Libreria standard di I/O. | {{:informatica:sol:laboratorio21:esercitazionib:makefile.pdf| Makefile}} \\ {{:informatica:sol:laboratorio20:esercitazionib:dirfsunix.pdf|Gerarchia di directory.}} \\ {{:informatica:sol:laboratorio20:esercitazionib:c002libreriaio_c.pdf|Libreria di IO.}} \\ | [[ https://makefiletutorial.com/ | Makefile tutorial]] | 09/03/21 |\\ | 8 |**Esercitazione**. I/O testuale e binario con le funzioni della libreria standard. Utilizzo di ''make'' per compilare. | [[esercitazione4|Assegnamento4]] \\ Possibile soluzione. \\ | | 11/03/21 12/03/21 |\\ | 9 |** Lezione **: Chiamate di sistema (SC) per la gestione di files e directories. | {{:informatica:sol:laboratorio21:esercitazionib:scfiles.pdf|SCs per I/O}} \\ | | 16/03/21 |\\ | 10 |**Esercitazione**. Esercizi su SCs per la gestione di files e directories. |[[esercitazione5|Assegnamento5]] \\ Possibile soluzione. | | 18/03/21 19/03/21|\\ | 11 |** Lezione **: Processi: fork, wait/waitpid e differenziazione del codice con exec*. | {{:informatica:sol:laboratorio15:esercitazionib:07lcs_processi.pdf|Processi}} | | 30/03/21 |\\ | 12 |**Esercitazione**. Esercizi con fork/waitpid/exec. |[[esercitazione6|Assegnamento6]] \\ Possibile soluzione. | | 01/04/21 09/04/21 |\\ | 13 |**Lezione**. Gestione dei threads POSIX: creazione/distruzione, mutex, condition variables, gestione della terminazione. |{{ :informatica:sol:laboratorio18:esercitazionib:c005_1lcs_threadposix.pdf |PThreads.}} | | 13/04/21 |\\ | 14 |**Esercitazione**. Esercizi con processi e threads. |[[esercitazione7|Assegnamento7]] \\ Possibile soluzione. | | 15/04/21 16/04/21 |\\ | 15 |** Lezione **: Comunicazione tra processi: pipe senza nome. | {{informatica:sol:laboratorio15:esercitazionib:09lcs_pipe.pdf|Pipe}} | [[SCExamples| Alcuni esempi con processi e pipe]]\\ {{ fifo_server.tgz | Esempio di protocollo client/server con "named pipe" (FIFO) }} | 20/04/21 |\\ | 16 |**Esercitazione**. Esercizi con processi, pipe e threads. | [[esercitazione8|Assegnamento8]] \\ Possibile soluzione. | | 22/04/21 23/04/21 |\\ | 17 |** Lezione **: Comunicazione tra processi: socket AF_UNIX. Multiplexing di piĆ¹ sockets con ''select'' (accenni a ''poll''). | {{:informatica:sol:laboratorio15:esercitazionib:10lcs_sockets.pdf|Socket}}| | 27/04/21 |\\ | 18 |**Esercitazione**. Esercizi con socket. Comunicazioni client-server ed uso della ''select''. | [[esercitazione9|Assegnamento9]] \\ Possibile soluzione. | | 29/04/21 30/04/21 |\\ | 19 |** Lezione **: Gestione dei segnali. Discussione sull'uso di "readn" e "writen". | {{:informatica:sol:laboratorio15:esercitazionib:11lcs_segnali.pdf|Segnali}} | [[https://www.gnu.org/software/libc/manual/html_node/Interrupted-Primitives.html | Nota su "partial read/write" (aka "short read/write")]] [[readnwriten | Implementazione di readn e writen (by R. Stevens et al.)]] | 04/05/21 |\\ | 20 |**Esercitazione**. Esercizi con gestione dei segnali con signal-handler e con ''sigwait''. | [[esercitazione10|Assegnamento10]] \\ Possibile soluzione. | | 06/05/21 07/05/21 |\\ | 21 |** Lezione **. Pattern di implementazione di server concorrenti. | {{:informatica:sol:laboratorio21:esercitazionib:servermultithreaded.pdf|Note su server concorrenti}} | | 11/05/21 |\\ | 22 |**Esercitazione**. Esercizi con thread e segnali, e schemi di implementazione di server concorrenti. | [[esercitazione11|Assegnamento11]] \\ Possibile soluzione. | | 13/05/21 14/05/21 |\\ | 23 |** Lezione **: Shell bash, e bash scripting. | {{:informatica:sol:laboratorio17:esercitazionib:shell_intro.pdf| Introduzione alla Shell }} \\ {{:informatica:sol:laboratorio20:esercitazionib:shell_scripting2.pdf| Scripting in bash}} | | 18/05/21 |\\ | 24 |** Esercitazione **: Comandi bash e semplici script. | [[esercitazione12|Assegnamento12]] \\ Possibile soluzione. | | 20/05/21 21/05/21 |\\