II MODULO
Obiettivi formativi
Obiettivi generali: Il corso ha come obiettivi i concetti, la struttura, e i meccanismi dei sistemi operativi. Verranno trattate caratteristiche fondamentali, presenti fin dai sistemi più tradizionali, ma anche peculiarità dei sistemi moderni che nascono come conseguenza dell’evoluzione ricorrente della tecnologia. Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux. Obiettivi specifici: Caratteristiche e concetti dei sistemi operativi moderni, con particolare riferimento ai sistemi Unix e Linux. Si inizierà con una descrizione dell’evoluzione dei sistemi operativi nel tempo, per continuare con concetti fondamentali come i processi, lo stallo, e relativi meccanismi di prevenzione, la concorrenza tra processi, la gestione della memoria, processore e I/O, i file system e la sicurezza. Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux. Conoscenza e comprensione: Capire in modo profondo come i sistemi operativi danno supporto all’esecuzione dei programmi degli utenti e gestiscono le periferiche hardware di un computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate. Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux. Applicare conoscenza e comprensione: Progettare programmi a livello utente e di sistema in modo efficiente e sicuro. Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse. Capacità critiche e di giudizio: Essere in grado di predire l’uso delle risorse richieste da un programma, di scoprire una possibile situazione di stallo in un sistema multiprogrammato, garantire la mutua esclusione tra processi e l’accesso protetto a zone di memoria o risorse sensibili. Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux. Capacità comunicative: Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware. Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux. Capacità di apprendimento: Saper sfruttare la conoscenza acquisita nella progettazione di sistemi e di programmi utente nel modulo successivo del corso. Essere in grado di usare questa conoscenza nell’apprendimento di proprietà di sistemi più complessi come quelli distribuiti e cloud. Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.
Programmi - Frequenza - Esami
Programma
Prerequisiti
Testi di riferimento
Frequenza
Modalità di esame
Bibliografia
Modalità di erogazione
Programmi - Frequenza - Esami
Programma
Prerequisiti
Testi di riferimento
Frequenza
Modalità di esame
Bibliografia
Modalità di erogazione
Programmi - Frequenza - Esami
Programma
Prerequisiti
Testi di riferimento
Frequenza
Modalità di esame
Bibliografia
Modalità di erogazione
Programmi - Frequenza - Esami
Programma
Prerequisiti
Testi di riferimento
Frequenza
Modalità di esame
Bibliografia
Modalità di erogazione
- Anno accademico2025/2026
- CorsoInformatica
- CurriculumTecnologico
- Anno2º anno
- Semestre2º semestre
- SSDINF/01
- CFU6