Unibo Logo

Sistemi Operativi
2023-2024

Renzo Davoli

 
 Home
 Informazioni generali
 Sistemi Operativi
 Attività di Laboratorio
 Materiale
 Studenti AA passati

Documentazione

I documenti che trovate qui di seguito, insieme ai vostri appunti presi durante le lezioni, costituiscono una base sufficiente per imparare gli argomenti principali per le parti di laboratorio del corso di Sistemi Operativi. La semplice lettura di questi documenti non è sufficiente: dovrete utilizzare i metodi presentati sui testi per risolvere gli esercizi presentati a lezione. Non solo, potrete utilizzare questa conoscenza per risolvere i vostri problemi di programmazione (di sistema e non).

Linguaggio C

Il linguaggio C è descritto in un libro di testo ritenuto fondamentale, detto brevemente K&R (dal nome degli autori, Kernighan and Ritchie - autori sia del libro che del linguaggio!). A differenza degli altri libri per il corso di LSO, questo libro è fondamentale per ogni informatico che si rispetti. Ciò nonostante, pubblichiamo qui alcuni link che possono essere utili a imparare il C.
  • Ansi C for programmers on Unix systems, di Tim Love
    Questo testo (73 pagine) contiene una descrizione del linguaggio C per chi conosce già un linguaggio di programmazione procedurale imperativo. Descrive brevemente tutte le caratteristiche fondamentali. Consigliato.
    [Pdf][Postscript]
  • GNU C Language Introduction and Reference Manual di Richard Stallman, Trevis Rothwell, Nelson Beebe. Questo testo recentemente aggiornato (09/2022) presenta una introduzione alla programmazione in C e il manuale di riferimenti di GNU C (estensione di ANSI). [git] [ copia locale pdf ]
  • C Programming Notes, di Steve Summit
    Questo corso (in formato html) è suddiviso in due parti; la prima è introduttiva, mentre la seconda contiene informazioni più avanzate. Questo testo è nato come supplemento al K&R, ma può essere consultato anche da solo. Se il testo precedente non vi basta, questo potrebbe essere la soluzione.
    [Parte 1 (versione online)][Parte 2 (versione online)][Parti 1 e 2 (versione tar.gz)]
  • Programming in C - UNIX System Calls and Subroutines using C, di Dave Marshall
    Un altro corso molto completo, che contiene anche una interessante discussione sul system call e interprocess communication. Per questo motivo è citato anche nel seguito. Alcune parti sono relative al laboratorio dell'autore, come
    [Versione online][Versione tar.gz]
  • Elenco funzioni della libreria standard ANSI C
    Un semplice elenco di funzioni, per capire cosa si può fare. Se avete bisogno di più dettagli, utilizzate il comando man 3 nomefunzione su una macchina Linux.
    [Versione online]
  • Ansi C Reference Card
    [Copia originale] [Copia locale]
  • The C Library Reference Guide
    [Copia originale]
  • The GNU C Reference Manual
    [Copia originale]
  • The GNU C Library Reference Manual
    [Copia originale]
  • The C Library Reference Guide
    [Copia originale]

Unix

Un testo semplice che spiaga alcuni dei concetti base di Unix è il seguente:
  • Introduction to Unix, di G. Fiamingo et al. (testo veramente introduttivo)
    [Pdf]
  • Guida alla programmazione in Linux, di Simone Piccardi (testo non completo, ma valido)
    [Html] [Pdf]
  • GNU Linux Advanced Administration by Remo S. Boldrito, Josep J. Esteve
    [pdf] [pdf]
  • The Art of UNIX Programming, di Eric S. Raymond (unico nel suo genere)
    [Html]
  • Linux System Administration Paul Cobbaut [pdf] [pdf]
  • Amministrare GNU/Linux, di Simone Piccardi - truelite
    [Html] [pdf]
  • Interfaccia Utente a caratteri (testuale) Interprete dei comandi Shell scripting , di Vittorio Ghini (prof. SO - unibo Cesena)
    [pdf]
  • vi cheatsheet, di Miles Davis et al.
    [Html]
  • The Linux Command Line, di William Shotts
    [pdf]

Shell scripting

Per quanto riguarda shell scripting, non esiste un testo (stampato) di riferimento. I testi qui indicati sono più che sufficienti.
  • Advanced Bash-Scripting Guide, di Mendel Cooper
    Guida completa alla shell bash.
    [Pdf]
  • The Awk Manual (autori vari)
    Guida al tool awk.
    [Pdf]
  • Effective AWK Programming
    Un'altra guida ad awk.
    [Html]

Python

  • Da Zero a Python in 45 minuti. Andrea Colangelo
    [Pdf] [Pdf(local copy)]
  • Python for Programmers, Alex Martelli
    [Pdf]
  • Pensare da informatico, A. Dowley, J Elkner and C. Meyers
    [Pdf] [Pdf(local copy)]
  • Think Python, A. Dowley, J Elkner and C. Meyers
    [sito] [pdf] [Pdf(local copy)]
  • Manuale python per ragazzi, Aurora Martina, Angelo Raffaele Meo, Clotilde Moro, Mario Scovazzi.
    [Pdf] [Pdf(local copy)]

Sistemi di Versioning

  • Pro Git
    Scott Chacon and Ben Straub [html, pdf]
  • git-crash-course
    Davide Alberani. [git, markdown]
  • Git User’s Manual
    [html]
  • Pro Git
    [html]
  • Git Tutorial: A Comprehensive Guide
    [html]
  • git - la guida tascabile - niente di complicato!
    [html]
  • Version Control with Subversion (Sussman, Fitzpatrick, Pilato)
    [Sito del libro]

Build System

UNIX (storia)

Varie

  • RAID6: "EVENODD: An Optimal Scheme for Tolerating Double Disk Failures Mario Blaurn et al."

Linux

Per la documentazione relativa a Linux, vi consigliamo di dare un'occhiata al Linux Documentation Project . Questi progetti raccolgono testi con licenze libere su Linux e informatica in generale. La pagina con il maggior numero di testi è quella relativa al CD.

PS
Questa pagina non viene aggiornata molto spesso; alcuni link possono essere obsoleti. Se trovate broken link o nuova documentazione, siete pregati di comunicarlo a entrambi i docenti.