Programma del corso

le parti tra parentesi quadre sono opzionali (l'inclusione o meno dipenderà dall'andamento del corso)


breve storia di Unix e C; breve storia di Linux, GNU Project, Linux Kernel; UNIX standards


concetti fondamentali

kernel, shell, users e groups, single directory hierarchy, directories, links, files;

programmi, processi, memory mapping, static and shared libraries, interprocess communication and synchronization

signals, threads, date and time, /proc file system


concetti di programmazione di sistema

system calls, library functions, the Standard C Library, the GNU C Library (glibc),

gestione degli errori restituiti dalle system calls e library functions


File I/O

"universalità" di I/O, aprile un file (open), leggere da un file (read), scrivere su un file (write), chiudere su un file (close), 

cambiare l'offset di un file aperto (lseek), ioctl()

atomicità e race conditions, fcntl(), relazione tra descrittori di file e files aperti,

duplicare descrittori di files, [file I/O con offset specificato: pread pwrite],

troncare un file: truncate ftruncate,

I/O non bloccante, I/O su file "grandi",

directory /dev/fd, creare files temporanei e /tmp/,


Processi

processi, programmi, process ID e parent process ID,

"memory layout" di un processo,

virtual memory, stack, command line arguments, environment,

[non local goto: setjmp(), longjmp()],


allocazione di memoria

allocare memoria sulla heap, [modificare il "program break", brk() sbrk()],

malloc e free, allocare memoria sulla stack


utenti e gruppi

/etc/passwd, /etc/shadow, /etc/group, ottenere informazioni su user e group, password encryption


credenziali dei processi

real user ID e real group ID,

effective user ID ed effective group ID,

set user ID e set group ID,

file system user ID, file system group ID,

getuid() geteuid() getgid() getegid() ,

setuid() setgid(),


[*time*]


[*system limits*]


system and process information

file system /proc,

informazioni su un processo,

uname()


[*file I/O buffering]


*file systems*

device special files, file systems,

[I-nodes], the Virtual File System,

mounting and unmounting a file system,

tmpfs,


file attributes

file timestamp, file ownership,

file permission, 


directories e links

directories e hard links, symbolic (soft) links, creare e rimuovere links,

rinominare un file,

creare e rimuovere directories, leggere directories,



monitoring file events


signals


timers and sleeping



process creation

fork(), exit(), wait(), execve()



process termination

exit(), _exit()



monitoring child processes

wait(), waitpid(),

orfani e zombies, [SIGCHLD]



program execution

execve()



threads

pthreads, thread creation, thread termination, thread id, join with thread,


threads syncronization

mutex, statically allocated mutex, locking and unlocking a mutex, mutex deadlock, dynamically initialize a mutex,

mutex types, condition variables, 


process priorities

nice values, 



daemons

syslog


[*shared libraries*]


interprocess communication overview

IPC facilities (pag. 877, Kerrisk)


pipes and fifos


[system V shared memory]


memory mappings

mmap, munmap, msync, 


[*virtual memory operations*]

mlock



introduction to posix IPC


[*posix message queues*]



posix semaphores



posix shared memory


[*file locking*]



sockets




****

linguaggio C


introduzione

variabili ed espressioni aritmetiche, istruzione for,

costanti simboliche, I/O a caratteri, array, funzioni, argomenti passati per valore,

array di caratteri, variabili esterne e loro ambiti


tipi, operatori ed espressioni

nomi di variabili, tipi dati e loro dimensioni, costanti, dichiarazioni, operatori aritmetici,

operatori relazionali e logici, conversioni di tipo, operatori di incremento e decremento,

operatori bit a bit (bitwise), operatori di assegnazione, espressioni condizionali,

precedenza e ordine di valutazione


controllo del flusso di istruzioni

istruzioni e blocchi, if-else, else-if, switch, loops (cicli) while e for, break e continue, goto e label (etichetta)


funzioni e struttura del programma

funzioni che restituiscono non-interi, variabili esterne, regole di scopo, file di intestazione,

variabili statiche, struttura di un blocco, inizializzazione, preprocessore C


puntatori ed array (vettori)

puntatori ed indirizzi, puntatori e argomenti di funzione, puntatori ed array,

aritmetica di indirizzi, puntatori a carattere e funzioni, array di puntatori, 

inizializzazione di array di puntatori, argomenti a lina di comando


strutture

basi delle strutture, strutture e funzioni, array di strutture, puntatori di strutture, riferimenti a strutture,

typedef, [union, bit-fields]



input/output

standard input e standard output, printf, scanf, stderr



Last modified: Thursday, 18 February 2021, 7:29 PM