Schema della sezione

  • [seguono gli argomenti che tratteremo a partire dalla lezione 5/3 ed in quelle successive]


    da Kerrisk (cap. 2), pag. 21-42

    introduzione ai concetti fondamentali del sistema operativo Linux: 

    il kernel, i compiti principali del kernel; modalità kernel e modalità user;

    punto di vista dei processi; punto di vista del kernel

    la shell; utenti e gruppi, user ID, group ID, home directory, login shell, superuser;

    Single Directory Hierarchy, radice del file system, tipi di files (file regolari, directories);

    directories e links, nomi di files (filename), pathname, pathname assoluto e relativo, cartella di lavoro corrente;

    proprietario dei file, permessi dei file (read, write, execute su file regolari; read, write, execute su directory);

    universalità di I/O; system call open(), read(), write(), close(); descrittori di file; 

    programmi, processi, organizzazione della memoria di processo (text, data, heap, stack), creazione di un processo, esecuzione di un programma;

    system call fork(), execve();

    process id, parent process id, terminazione di un processo (da shell: echo $?)

    system call _exit(), wait(); valore di stato di terminazione;

    credenziali di processo (real user ID, real group ID, effective user ID, effective group ID);

    processi privilegiati/non privilegiati;

    processo init; variabili di ambiente;

    memory mappings (file mapping, anonymous mapping);

    librerie statiche e condivise;

    interprocess communication e sincronizzazione tra processi:

    signals, pipes, semaphores, shared memory;

    segnali: control-C; comando kill da shell; ps -ef per trovare il pid di processo;

    threads;

    date and time: Epoch;  process time (CPU time); system CPU time, user CPU time;

    comandi top, htop;

    file system /proc : /proc/<pid>/cmdline , /proc/<pid>/fd; /proc/cpuinfo;


    altri comandi da shell: git pull , cd , ls , tree , sudo , sudo apt update , sudo apt upgrade , echo, id, man, pwd