====== Sommario lezioni ed esercitazioni ====== ---- **"valgrind: the 'impossible' happened: Killed by fatal signal"** ---- ^ Numero ^ Descrizione ^ Materiale ^ Altro ^ Data ^ | 1 |** Introduzione al corso **\\ **Lezione/Esercitazione**: 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). |{{:informatica:sol:laboratorio20:esercitazionib:gcccommandline.pdf| Compilazione con gcc.}}\\ {{:informatica:sol:laboratorio20:esercitazionib:variadicargs.pdf| Funzioni con argomenti variabili.}}\\ {{:informatica:sol:laboratorio20:esercitazionib:gestioneMemoriaC.pdf| Gestione della memoria in C}} \\ {{:informatica:sol:laboratorio20:esercitazionib:argcargv.pdf| Argc Argv}} \\ [[esercitazione1|Assegnamento1]] {{|Possibile soluzione.}} | [[https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Standards.html#C-Language|C standards in GCC]] | 18/02/20 |\\ | 2 |**Lezione**. Richiami di C (puntatori a funzioni, struct/union). Preprocessore. | {{:informatica:sol:laboratorio15:esercitazionib:c001puntatoriestringhe.pdf| Puntatori e stringhe}} \\ {{:informatica:sol:laboratorio17:esercitazionib:c003punfunzegenerico.pdf| Puntatori a funzione e 'void*'}}\\ {{:informatica:sol:laboratorio20:esercitazionib:structandunion.pdf| Strutture e Union}}\\ {{:informatica:sol:laboratorio15:esercitazionia:c004preprocessore.pdf| Preprocessore}}\\ | {{:informatica:sol:laboratorio:esercitazioni:c-refcard.pdf| Pieghevole comandi C}}\\ [[http://sourceware.org/gdb/current/onlinedocs/gdb.pdf.gz|GDB User Manual (gziped)]] \\ {{:informatica:sol:laboratorio:esercitazioni:gdbcheatsheet.pdf| Pieghevole comandi GDB}} \\ {{:informatica:sol:laboratorio15:esercitazionia:emacs-refcard.pdf| Pieghevole comandi Emacs}} | 18/02/20 |\\ | 3 |**Esercitazione**. Funzioni rientranti. Tokenizzazione di stringhe e generazione di numeri pseudo casuali. | {{:informatica:sol:laboratorio20:esercitazionib:reentrantfunc.pdf| Funzioni rientranti.}}\\ [[esercitazione2|Assegnamento2]] \\ {{|Possibile soluzione.}} \\ |{{:informatica:sol:laboratorio18:esercitazionib:gdb_valgrind.pdf| Note gdb e valgrind}}{{:informatica:sol:laboratorio19:esercitazionib:eserciziogdb.pdf| Esempio gdb}} | 25/02/20 |\\ | 4 |** Lezione **: Compilazione e linking in C. Creazione di librerie statiche e dinamiche. Classi di memorizzazione: //static//, //extern//. | {{:informatica:sol:laboratorio19:esercitazionib:c002_2prepcomplinkong.pdf| Compilazione e linking.}} \\ {{:informatica:sol:laboratorio19:esercitazionib:c002_4libreriec.pdf| Librerie statiche e dinamiche}} \\ {{:informatica:sol:laboratorio19:esercitazionib:c002_3classimemc.pdf| Classi di memorizzazione}} \\ | | 25/02/20 |\\ | 5 |**Esercitazione**. Creazione di librerie statiche (.a) e dinamiche (.so). Utilizzo di macros. Utilizzo di static. | [[esercitazione3|Assegnamento3]] \\ {{|Possibile soluzione.}} \\ | | 3/03/20 |\\ | 6 |** Lezione **: Struttura a directory del FS Linux/Unix, principali directory, path assoluto e relativo. Utilizzo di gdb e valgrind. Libreria standard di I/O. | {{:informatica:sol:laboratorio20:esercitazionib:dirfsunix.pdf|Gerarchia di directory.}} \\ {{:informatica:sol:laboratorio20:esercitazionib:c002libreriaio_c.pdf|Libreria di IO.}} | **CorsoB**: vedere anche il video LibreriaIO.mp4 | 3/03/20 |\\ | 7 |**Esercitazione**. I/O testuale e binario con la libreria standard. | [[esercitazione4|Assegnamento4]] \\ {{|Possibile soluzione.}} \\ | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 8 |** Lezione **: Utilizzo di make e sintassi del makefile/Makefile. Introduzione alla shell bash: concetto di shell, alcuni semplici comandi (cut, cat, find, chmod, etc...). Creazione di semplici script in bash| {{:informatica:sol:laboratorio16:esercitazionib:02c008makefile.pdf| Makefile}} \\ {{:informatica:sol:laboratorio17:esercitazionib:shell_intro.pdf| Introduzione alla Shell}}\\ | [[ http://www.gnu.org/software/bash/manual/bash.html|Bash reference manual]]\\ [[http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html | Bash guide for Beginners]] | **CorsoB**: vedere videolezioni Makefile{1,2}.mp4 e BashIntro{1,2}.mp4 |\\ | 9 |**Esercitazione**. Makefile e comandi bash. | [[esercitazione5|Assegnamento5]] \\ {{|Possibile soluzione.}} \\ | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 10 |**Lezione**. Script in bash. | {{:informatica:sol:laboratorio20:esercitazionib:shell_scripting2.pdf| Scripting in bash}} | [[https://linuxacademy.com/blog/linux/conditions-in-bash-scripting-if-statements/|If statements in bash scripting]] | **CorsoB**: vedere videolezioni ScriptBash{1,2,3}.mp4 |\\ | 11 |**Esercitazione**. Scripts in bash. | [[esercitazione6|Assegnamento6]] \\ {{|Possibile soluzione.}} \\ | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 12 |** Lezione **: Chiamate di sistema per la gestione di files e directories. | {{:informatica:sol:laboratorio20:esercitazionib:scfiles.pdf|SCs per I/O}} | | **CorsoB**: vedere videolezione SystemCallIO.mp4 |\\ | 13 |**Esercitazione**. Esercizi su SC per la gestione di files e directories. |[[esercitazione7|Assegnamento7]] \\ {{|Possibile soluzione.}} | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 14 |** Lezione **: Processi: fork, wait/waitpid e differenziazione del codice con exec*. | {{:informatica:sol:laboratorio15:esercitazionib:07lcs_processi.pdf|Processi}} | | **CorsoB**: vedere videolezione SystemCallProcessi.mp4 |\\ | 15 |**Esercitazione**. Esercizi con fork/waitpid/exec. |[[esercitazione8|Assegnamento8]] \\ {{|Possibile soluzione.}} | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram.|\\ | 16 |**Lezione**. Gestione dei threads POSIX: creazione/distruzione, mutex, condition variables, gestione terminazione. |{{ :informatica:sol:laboratorio18:esercitazionib:c005_1lcs_threadposix.pdf |PThreads.}} | | **CorsoB**: vedere videolezione PThreads.mp4 |\\ | 17 |**Esercitazione**. Esercizi con processi e threads. |[[esercitazione9|Assegnamento9]] \\ {{|Possibile soluzione.}} | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 18 |** 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 }} | **CorsoB**: vedere videolezione UnnamedPipe.mp4 |\\ | 19 |**Esercitazione**. Esercizi con processi, pipe e threads. | [[esercitazione10|Assegnamento10]] \\ {{|Possibile soluzione.}} | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 20 |** Lezione **: Comunicazione tra processi: socket AF_UNIX. Multiplexing di piĆ¹ sockets con ''select'' (accenni a ''poll''). | {{:informatica:sol:laboratorio15:esercitazionib:10lcs_sockets.pdf|Socket}}| | **CorsoB**: vedere videolezione SocketAF_UNIX.mp4 |\\ | 21 |**Esercitazione**. Esercizi con socket. Comunicazioni client-server ed uso della ''select''. | [[esercitazione11|Assegnamento11]] \\ {{|Possibile soluzione.}} | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram.|\\ | 22 |** 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.)]] | **CorsoB**: vedere videolezione Segnali.mp4|\\ | 23 |**Esercitazione**. Esercizi con gestione dei segnali con signal-handler e con ''sigwait''. | [[esercitazione12|Assegnamento12]] \\ {{|Possibile soluzione.}} | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 24 |** Lezione **. Pattern di implementazione di server concorrenti. | {{:informatica:sol:laboratorio20:esercitazionib:servermultithreaded.pdf|Note su server concorrenti}} | | **CorsoB**: vedere videolezione NoteServerMultiThreaded.mp4 |\\ | 25 |**Esercitazione**. Esercizi con thread e segnali, e schemi di implementazione di server concorrenti. | [[esercitazione13|Assegnamento13]] | | **CorsoB**: vedere il video con il commento degli esercizi sul gruppo Telegram. |\\ | 26 |**Esercitazione**. Question time sugli argomenti del corso. | | | |\\