Software e Sistemi Operativi
Prof. Maurizio Naldi
A.A. 2015/16
Cosa vedremo
•  Il software applicativo
–  Categorie di SW
•  Il sistema operativo
–  Gestione programmi in esecuzione (processi)
–  Gestione memoria
–  Gestione dei file
Esempio di Classificazione del
Software
Sw
Sw di Sistema
Sistema
Operativo
Sw Applicativo
Office
Automation
Device Drivers
Foglio di
calcolo
Librerie
software
Communication
Enterprise
Entertainment
Navigazione
Web
Gestione
contabilità
Giochi in locale
Elaborazione
testi
Messaggistica
Gestione
magazzino e
prenotazioni
Giochi in rete
Presentazione
Email
Gestione
personale
Social
Software Proprietario
•  L’utilizzo e la ridistribuzione sono proibiti se non
si acquista una Licenza.
•  Nella maggior parte dei casi il software
proprietario è “chiuso”. Non viene cioè reso
disponibile nella forma (detta “sorgente”) che
permette modifiche e la piena comprensione del
funzionamento del software stesso.
•  All’interno del software proprietario trovano
posto anche i programmi shareware
–  È possibile redistribuire il programma ma per
continuare a usarlo (dopo un periodo di prova) è
necessario acquistare una licenza
Software Open Source
•  Il codice sorgente viene reso disponibile
•  Il termine “Open Source” indica un software la cui licenza
prevede la possibilità per tutti gli utilizzatori di ottenere il
codice sorgente
•  Offre la possibilità ad altri sviluppatori di migliorare il
software
•  La collaborazione di molti sviluppatori permette ad un
programma di essere più attentamente testato e più
facilmente reso disponibile sulle diverse piattaforme
rispetto al caso di un ristretto gruppo di sviluppatori
•  Si può dividere il software open source in
–  Software di pubblico dominio
–  Software con permesso d’autore copyleft
Open Source e Free Software
Non sono esattamente la stessa cosa. Rappresentano due
“filosofie” diverse, anche se in accordo su molti aspetti
•  Open Source è una metodologia di sviluppo:
•  Il fatto che il software debba essere Open Source o
meno è un problema pratico, non un problema etico.
Quando è Open Source, il software a pagamento è
un’alternativa difficile da gestire.
•  Free Software è un movimento basato su un principio:
•  Il software proprietario è un problema sociale e la
libertà di run, copy, distribute, study, change and
improve the software* è la soluzione.
*http://www.gnu.org/philosophy/free-sw.html
Free Software*
Le quattro libertà offerte dal free software:
1.  Libertà di usare il programma per qualsiasi scopo;
2.  Libertà di studiare come funziona il programma e
modificarlo in base alle proprie esigenze;
3.  Libertà di aiutare il tuo vicino, cioè la possibilità di
distribuire copie del software rielaborato, rendendolo
così accessibile a tutti;
4.  Libertà di pubblicare una versione modificata del
software.
*http://www.gnu.org/philosophy/free-sw.html
Open Source
Criteri dell’Open Source (http://opensource.org/osd)
1.  Libertà di redistribuzione (sta poi al singolo decidere se
farlo gratuitamente o se far pagare il prodotto);
2.  Per ogni programma deve essere disponibile il sorgente;
3.  Deve permettere lo sviluppo di programmi derivati;
4.  Deve garantire l’integrità del sorgente di ogni autore;
5.  Nessuna discriminazione verso singoli o gruppi di
persone;
6.  Nessuna discriminazione verso i settori di applicazione;
7.  La licenza deve essere distribuibile;
8.  La licenza non può essere specifica per un prodotto;
9.  La licenza non può essere imposta ad altri software;
10. La licenza deve essere tecnologicamente neutrale;
Pubblico Dominio
•  Di solito si usa il termine “pubblico dominio” come
sinonimo di “libero” (gratuito…) ma in realtà ha un
significato giuridico preciso
•  È un particolare software completamente privo di diritto
di autore (privo di copyright)
•  L’autore declina qualsiasi interesse proprietario
sull'opera, assegnandola al pubblico dominio.
•  Significa che il programma è modificabile e distribuibile
imponendo anche vincoli sul suo utilizzo
•  Quindi un software può nascere come pubblico dominio
ed essere modificato e redistribuito a pagamento
•  È il caso di X11, un noto software per la gestione della
grafica in ambiente Unix/Linux
Permesso d’autore (copyleft)
•  ll software con permesso d'autore (copyleft) è software
libero le cui condizioni di distribuzione non permettono di
porre alcuna restrizione addizionale all'atto di ridistribuire
o modificare il software.
•  Questo significa che ogni copia del software, anche se
modificata, deve essere software libero.
•  Un esempio di copyleft è la licenza GPL (General Public
Licence) utilizzata dalla maggior parte delle comunità
open source
•  Copyleft è un gioco di parole
–  copyright tende a tutelare il diritto d'autore, anche attraverso
limitazioni all'accesso della conoscenza;
–  copyleft intende tutelare il più generale diritto della collettività a
fruire dei prodotti
Free download
•  Il software liberamente scaricabile non appartiene
necessariamente ad una categoria precisa tra quelle
viste
•  Spesso anche software proprietario può essere scaricato
ed adoperato (ad esempio i vari plug-in per Internet
Explorer che permettono di vedere animazioni)
•  Si usa il termine Freeware per indicare questo tipo di
software che può essere liberamente scaricato e
redistribuito ma non modificato
•  Un’ulteriore categoria è rappresentata dal software che
può essere utilizzato, redistribuito e modificato senza fini
di lucro, ma che richiede una licenza commerciale se
utilizzato per altri scopi (esempio il software Qt).
Sistemi Operativi
Cos’è un S.O.
È un insieme di componenti software
che gestisce hardware e fornisce
servizi (comuni) alle applicazioni
Principali Obiettivi
•  Efficienza: cercare di utilizzare al
meglio le risorse del calcolatore
•  Semplicità: cercare di rendere più
semplice l’utilizzo dell'hardware
sottostante nascondendo i dettagli
Intermediazione del SO
Una singola applicazione perde la possibilità
di controllare direttamente tutte le risorse
Ma presenta vantaggi legati alla definizione
di modalità standard di interfaccia con i
dispositivi fisici, in modo da rendere
possibile:
• 
• 
sviluppare applicazioni in modo semplice,
modulare ed indipendente dallo specifico
hardware su cui viene fatto funzionare il sistema
operativo;
aggiornare il software di base e l'hardware in
modo trasparente ai programmi applicativi e
all'utente, ossia senza che vengano influenzati
dall'operazione.
Visioni fornite da un SO
•  Dall'alto: il sistema operativo fornisce
all'utente un modo semplice ed uniforme
di accedere le risorse disponibili
•  Dal basso: gestisce tutti le parti di un
sistema integrato, allocando in modo
efficiente le diverse risorse: processori,
memorie, dischi, interfacce di rete,
stampanti e altre periferiche.
Sviluppo di Unix/Linux/Mac OS
Componenti di un S.O.
•  Sistema di gestione del processore,
•  Sistema di gestione della memoria,
•  Sistema di gestione delle periferiche,
•  Sistema di gestione dei file (file system)
•  Sistema di gestione degli utenti e dei relativi comandi
(interprete comandi),
•  Sistema di gestione della rete.
Componenti di un S.O.
Utente
Interprete
comandi
Sistema
Operativo
Gestione
memoria
Gestione
periferiche
Software
applicativo
File
system
Nucleo (o kernel)
[gestione processore]
Hardware
Interfaccia
con la rete
SO vs. programmi applicativi
•  Programmi applicativi
–  hanno accesso a un
insieme ridotto di risorse;
–  possono utilizzare solo un
sottoinsieme non
privilegiato delle istruzioni
del processore
(esecuzione in modalità
utente);
–  non possono decidere
autonomamente quando
e come avere accesso
alle risorse del sistema
(richiedono al sistema
operativo l’esecuzione di
alcuni servizi);
–  …
•  Sistema operativo
–  ha accesso a tutte le
risorse;
–  può utilizzare tutte le
istruzioni del processore
(esecuzione in modalità
supervisore);
–  stabilisce in che ordine e
come le richieste che
riceve devono essere
soddisfatte;
–  …
Multiprogrammazione
elaborazione
attesa per operazioni di I/O
Tempo
In ogni istante, in memoria centrale sono presenti
diversi programmi applicativi (oltre al SO)
Progr. 1
Progr. 2
Progr. 3
Tempo
elaborazione
attesa per operazioni di I/O
Processo vs Programma
•  Programma:
entità statica composta dal codice
eseguibile dal processore.
•  Processo:
entità dinamica che corrisponde al
programma quando viene mandato in
esecuzione, ovvero:
–  l’insieme delle istruzioni;
–  dati (su cui operano le istruzioni);
–  stato (a che punto dell’esecuzione ci si trova,
cosa c’è nei registri, …).
Organizzazione di un SO
Gerarchia di
“macchine virtuali”
La visione della
macchina virtuale
a livello n è quella
fornita dall’HW e
dagli strati del SO
fino all’n-mo
(incluso)
Nucleo (Kernel)
•  Scopo principale: gestire i processi corrispondenti a tutti i
programmi che sono contemporaneamente attivi.
–  mette a disposizione risorse (CPU) virtuali tali che ogni processo
può essere eseguito come se fosse l’unico attivo
–  controlla l’esecuzione dei processi in modo da impedire che un
programma possa danneggiarne un altro
•  Attua una politica di alternanza (scheduling) nell’accesso
alla CPU reale da parte dei processi in esecuzione.
•  Interagisce con i diversi dispositivi hardware tramite
componenti software chiamati device drivers
•  Si occupa della risposta agli eventi esterni generati dalle
unità periferiche (interrupt) e degli errori di esecuzione
(eccezioni).
Gestore della memoria centrale
•  Assegna parti (dette “pagine”) della memoria centrale ai vari
processi in modo da soddisfare le relative esigenze in modo
trasparente ed efficiente.
•  Consente ai programmi di lavorare in un proprio spazio di memoria
virtuale senza dover tener conto delle pagine di memoria reale
occupata.
•  Si occupa di:
–  proteggere programmi e relativi dati caricati nella memoria di lavoro;
–  mascherare la collocazione fisica dei dati;
–  permettere, in modo controllato, la parziale condivisione degli spazi di
memoria associati ai vari programmi in modo che possano scambiarsi
dati durante l’esecuzione.
•  Fornisce ai processi la possibilità di lavorare come se avessero a
disposizione una memoria dedicata di capacità anche maggiore di
quella realmente disponibile come RAM (memoria virtuale).
Gestore delle periferiche
•  Fornisce una visione del sistema in cui i processi
possono operare mediante periferiche virtuali
•  Maschera le caratteristiche fisiche delle periferiche e le
specifiche operazioni di ingresso/uscita
•  Permette di effettuare operazioni contemporaneamente
su diversi dispositivi (tastiera, dischi, schede di rete).
File System (gestore dei file)
•  Organizza i contenuti dei dispositivi di
memoria di massa (dischi, CD, DVD, etc.)
•  Gestisce i file offrendo una visione logica
indipendente dalla reale rappresentazione
fisica sui dispositivi di memoria di massa
Organizzazione delle memorie
di massa
•  Obiettivo:
presentare agli utenti ed ai programmi una struttura
coerente dei dati e delle operazioni che è possibile
compiere su di essi.
•  Operazioni di base di un file system:
– 
– 
– 
– 
recupero di dati precedentemente memorizzati;
eliminazione (cancellazione) di dati obsoleti;
modifica/aggiornamento di dati preesistenti;
copia di dati (e.g., da un disco interno ad un disco rimovibile)
per backup o per il trasferimento;
–  …
•  I servizi vengono forniti sia ai programmi sia agli utenti.
In questo caso tramite comandi (copia, incolla, etc.)
File system
•  FILE (letteralmente “schedario”)
–  contenitore logico di informazioni (dati o istruzioni);
–  entità permanente per conservare le informazioni anche dopo la
terminazione del processo che lo ha generato.
•  Per ogni file:
–  Identificatore mnemonico
(nome.estensione, e.g., informatica.docx)
–  Date ed orari associati al file (creazione, ultima modifica, etc.)
–  Dimensione
–  Posizione effettiva dei dati nella memoria di massa
–  Altre informazioni
•  diritti di accesso al contenuto del file
•  utente proprietario del file…
–  Dati
File
•  I nomi dei file (soprattutto sotto Windows) sono in genere
composti da due parti:
–  nome (vero e proprio), che viene assegnato dall’utente
–  estensione, associata al programma che ha generato il file e
consente quindi di identificare, almeno sotto Windows, la
tipologia dei dati contenuti nel file
•  Ogni sistema operativo pone dei vincoli sulla lunghezza
dei nomi di file e sui caratteri di cui possono essere
costituiti
–  MS-DOS imponeva una lunghezza massima di 8 caratteri per il
nome e 3 per l’estensione
–  Windows ha un limite di 260 caratteri (compreso il path)
•  I file sono generalmente organizzati in cartelle (directory)
e sottocartelle in una gerarchia ad albero (o, al limite, a
grafo aciclico).
Esempio di file system ad albero
Organizzazione fisica dei dati
I file sono salvati sui dispositivi di memoria di
massa in modalità diverse a seconda del SO
Accesso ai file
I Sistemi Operativi moderni sono multi-utente
•  L’utente è riconosciuto quasi sempre sulla base della
coppia di informazioni: nome-password
–  Altre informazioni nella lezione sulla sicurezza!
•  Ogni file ha un proprietario, in genere l’utente che lo ha
creato.
Ad esempio un utente che crea un documento Word,
quando lo salva diventa il proprietario del file che contiene
il documento
•  Il proprietario può permettere ad altri utenti di leggere,
modificare o anche cancellare i propri file manipolando i
permessi associati al file
•  Esiste un utente privilegiato (Administrator sotto Windows,
root sotto Unix) che può accedere ai file di tutti gli utenti
indipendentemente dai permessi concessi o negati dal
proprietario del file.
Interprete dei comandi
•  Programma applicativo incluso nel Sistema
Operativo e direttamente accessibile dall’utente
•  Ha la funzione di interpretare i comandi che gli
giungono (da tastiera e/o point & click) e di
attivare i programmi corrispondenti.
•  Le operazioni che svolge sono:
–  lettura dalla memoria di massa del programma da
eseguire;
–  allocazione della memoria centrale;
–  caricamento del programma e dei relativi dati nella
memoria allocata;
–  creazione e attivazione del processo corrispondente.