lezione del 19 dicembre 2012 - Gruppo di Logica e Geometria della

Abilità Informatiche e
Telematiche
(Laurea Triennale + Laurea Magistrale)
Marco Pedicini
mailto:[email protected]
Corso di Laurea in Scienze della Comunicazione, Università Roma Tre
12 Dicembre 2012 - 11 Gennaio 2013
Parte IV
UD3.1 - Il Sistema Operativo
Alla fine di questa UD sarai in grado di
• Sapere cosa è un sistema operativo
• Conoscere l’architettura a livelli di un sistema operativo
• Distinguere file eseguibili e file dati di un sistema
• Distinguere tra programmi e processi
• Sapere cosa è il nucleo di un sistema operativo
• Distinguere tra uniprogrammazione e multiprogrammazione
• Sapere cosa è il gestore della memoria
• sapere cosa è il gestore delle periferiche
• aver appreso i concetti di:
• file, directory, volumi
• conoscere l’interprete dei comandi, sia con l’interfaccia
grafica sia con quella a caratteri.
Contenuti
• Cos’è un sistema operativo
• Architettura a livelli dei sistemi operativi
• I file eseguibili ed i file dati
• Programmi e Processi
• Il Nucleo di un sistema operativo
• Uniprogrammazione e Multiprogrammazione
• Il gestore della memoria
• Il gestore delle periferiche
• file, directory e volumi
• l’interprete dei comandi
• interfaccia grafica
• interfaccia a caratteri
Cos’è un Sistema Operativo?
• Il sistema operativo è un programma.
• Cosa fa ?
• Gestisce le risorse del calcolatore
• Fornisce un’interfaccia tra applicazioni e hardware
• Fornisce all’utente un insieme di programmi che realizzano
le funzionalità di base
Architettura a livelli!"#$%&'&&(")*)*+%,'++%
di un calcolatore
-%*(.*#)+#/+)&/"'
:+&6+&';-6"(&
7#*8&++-.+"
$-'"11(-)"9-*6-
7#*8&++-.+"'$&('
,-.+&/"'
01&#"+-2*
7#*8#"//-'"11(-)"+-23-4#&#-&'&'.+#5/&6+-')*/56,-.+&/"'01&#"+-2*
!"#$%"#&'$&(')"()*("+*#&
:<=
>
Macchine Virtuali
La macchina in grado di eseguire un linguaggio astratto viene
realizzata in modalità virtuale mediante traduzione delle
istruzioni dei programmi descritti nel linguaggio astratto in
sequenze di istruzioni per il linguaggio eseguibile dalla
macchina ospite:
Codice
Eseguibile
Linguaggio
Astratto
Esecuzione
Macchina Ospite
Macchina Virtuale
Macchine Virtuali
La macchina in grado di eseguire un linguaggio astratto viene
realizzata in modalità virtuale mediante traduzione delle
istruzioni dei programmi descritti nel linguaggio astratto in
sequenze di istruzioni per il linguaggio eseguibile dalla
macchina ospite:
Codice
Eseguibile
Linguaggio
Astratto
Esecuzione
Macchina Ospite
Macchina Virtuale
Macchine Virtuali
La macchina in grado di eseguire un linguaggio astratto viene
realizzata in modalità virtuale mediante traduzione delle
istruzioni dei programmi descritti nel linguaggio astratto in
sequenze di istruzioni per il linguaggio eseguibile dalla
macchina ospite:
Linguaggio
Astratto
Codice
Eseguibile
Traduzione
Esecuzione
Macchina Ospite
Macchina Virtuale
Il sistema operativo
• Il sistema operativo è il componente del software di base
responsabile della gestione delle risorse del calcolatore, e
in particolare, di come le risorse vengono allocate alle
applicazioni
• dal punto di vista dell’utente:
• l’utente può richiede al sistema operativo di eseguire una
applicazione facendo doppio click sull’icona
dell’applicazione stessa
• l’utente può cancellare o rinominare un’applicazione
• l’utente può esplorare i dischi fissi alla ricerca di una
particolare applicazione
• ma non vede come tutte queste operazioni vengono gestite
Architettura a livelli di un sistema
operativo
• I sistemi operativi hanno una struttura complessa, che può
essere descritta in modo gerarchico
• ciascun livello della gerarchia è relativo alla gestione di una
diversa tipologia di risorse
• le risorse gestite sono
•
•
•
•
•
i processori
la memoria
le periferiche
le memorie secondarie
l’interfaccia utente
• l’utente del calcolatore interagisce solo con l’interprete
comandi del sistema operativo
!"#
$
Architettura a livelli di un sistema
!"#$%&'&&(")*)*+%,'++%*
operativo
-%*(.*/%/&'0)*12'")&%,13
<=/*'5'*/*+(*1+-.3&=(1
9*2/.'*+(*1+:1,*
9*2/.'*+(*,,*+5*'1:*'1-;*
9*2/.'*+(*,,&+3*3.'1&
78-,*.
012/*3&+45*'&/16.
>'.?'&331+&55,1-&/161+*+,1@'*'1*+-.38=1
%&'()&'*+(*,+-&,-.,&/.'*
!"#
A
Esempi di sistemi operativi
DOS
Windows
Unix
Interfaccia testuale
Interfaccia grafica
OS 2
Interfaccia testuale
Interfaccia testuale e/o grafica
Interfaccia grafica
Mac OS X
Interfaccia grafica
Linux
Monotasking monoutente
Multitasking monoutente o multiutente a seconda
delle versioni
Multitasking multiutente
Multitasking multiutente
Multitasking multiutente
Multitasking
Monoutente
o
multiutente
Microsoft
Microsoft
Bell Laboratories
Derivato da Unix,
Open source
IBM
Apple
Il nucleo
Rapporto tra file e applicazioni: file
eseguibili
• Alcuni file, chiamati programmi o applicazioni, sono
riconosciuti dal sistema operativo come eseguibili
• nei sistemi Windows i file eseguibili sono determinati dalla
loro estensione (.exe .com .bat)
• nei sistemi Linux i file eseguibili non sono riconosciuti dal
nome, ma sono esplicitamente etichettati come tali con
speciali comandi (permessi, magic numbers)
Rapporto tra file e applicazioni: file
dati
• Il sistema operativo può gestire anche l’associazione tra
file e applicazioni in grado di interpretare il loro formato
• Nei sistemi Windows
• ogni estensione (.doc, .txt, .ppt, .pdf, ecc) viene associata
ad una applicazione in grado di interpretare il formato del
file (rispettivamente Winword, Notepad, PowerPoint,
AcrobatReader, ecc)
• quando si fa doppio click su un file, viene eseguita
l’applicazione associata all’estensione del file, e il file
selezionato viene aperto automaticamente dall’applicazione
• In alcuni sistemi Unix
• l’applicazione in grado di interpretare il formato del file
viene desunta dalla lettura dei primi byte del file stesso
(magic numbers)
Esercizio
• Su una piattaforma Windows
1 considera un file con estensione .pdf
2 rinomina il file con estensione .doc
3 fai doppio-click sul file
• cosa ti aspetti che succeda?
• perché?
• Ripeti lo stesso esperimento su una piattaforma Unix (per
esempio Linux)
• cosa ti aspetti che succeda?
• perché?
Programma e processo
• Per un file eseguibile o programma, oltre alle consuete
operazioni (creazione, cancellazione, apertura, chiusura,
lettura e scrittura) l’utente può richiedere l’operazione di
esecuzione
• Quando esegue un programma il sistema operativo
• reperisce nel file system il file contente il codice eseguibile
del programma
• alloca al programma le risorse necessarie per la sua
esecuzione (ad esempio, una certa quantità di memoria
centrale)
• copia il codice eseguibile del programma in memoria
centrale
• avvia l’esecuzione del programma
• Un programma in esecuzione viene chiamato processo
• il processo non va confuso con il file eseguibile, o
programma, corrispondente
• l’utente potrebbe richiedere l’esecuzione contemporanea
dello stesso programma più volte, generando diversi
processi tutti corrispondenti allo stesso programma
Il Kernel del Sistema Operativo
(Nucleo)
• Il nucleo (o kernel, o gestore dei processi) del sistema
operativo è responsabile della gestione del processore
• generalmente sotto il nucleo esiste fisicamente un solo
processore
• quindi il calcolatore potrebbe svolgere un solo programma
alla volta (uniprogrammazione)
• il nucleo ha il compito di ripartire il tempo di calcolo del
processore ai programmi in esecuzione, realizzando la
multiprogrammazione
• ciascun programma ha l’impressione di essere l’unico
programma eseguito dal calcolatore
• il nucleo gestisce anche l’eventuale presenza di più
processori
Uniprogrammazione'()*+&,+-..-/)&(%
•
! >)"".#"!./(&)(01102.&!% $%0-.+#+3#(+*7*%'#+"#
/0%6)**%0)#.,,)3()#".#8+3)#()"")#%/)0.;+%3+#(+#
Nella uniprogrammazione (ormai in disuso) il processore
!?@#/)0#0+/0)3()0)#"<)*)67;+%3)#()""<73+6%#
attende la
fine delle operazioni di I/O per riprendere
/0%6)**%
l’esecuzione dell’unico processo
9/0'3678
/0/./*3678
12*,'++*34
'+',-./*0'
5&&'+5
/0/./*3678
'+',-./*0'
5&&'+5
&'()*
!"#
$:
Multiprogrammazione
!"#$%&'()'*++*,%(-.
• Nella! multiprogrammazione
o multitasking
il processore'#%
!"##$%!"#$%&'()'*!!*+%(,&%!"#$%$*./%,)
“salta” da
un processo all’altro
tempo
()&*"++&)"%,+$#-$.
/$%01%()&*"++&%$##2$#-)&
)*%'"&&%+,
"&"'(
-!!"&-
"&"'(
)*%'"&&%+.
-!!"&- "&"'(
-!!"&-
)*%'"&&%+/
-!!"&-
"&"'(
/%#$0"&&12%
"&"'(
,
"&"'(
.
-!!"&"&"'(
-!!"&-
"&"'(
/
-!!"&"&"'(
"&"'(
,
"&"'
.
"&"'
/
!"#$%
345
67
Il gestore della memoria e Il gestore delle
periferiche
Il gestore della memoria
• Il gestore della memoria consente l’allocazione dinamica
della memoria centrale ai programmi in esecuzione
• a ciascun programma viene allocata un’area di memoria
virtuale sufficiente per la sua esecuzione
• il gestore della memoria gestisce la corrispondenza tra le
memorie virtuali e la memoria reale (RAM)
• la dimensione della memoria virtuale può essere maggiore
di quella reale
• i dati possono essere “parcheggiati” temporaneamente nella
memoria secondaria (Hard Disk)
Gestore delle periferiche
• Il gestore delle periferiche adatta la modalità d’uso delle
singole periferiche (che possono essere estremamente
diverse) a quello di poche tipologie di periferiche virtuali
• ad esempio, un programma può usare una stampante
senza conoscere i dettagli precisi di funzionamento della
stampante fisicamente disponibile
• un driver è un adattatore di dati dal formato virtuale
(generico) usato sopra il gestore delle periferiche a quello
reale della periferica effettivamente in uso
Il filesystem
Il filesystem
• Il filesystem gestisce le informazioni memorizzate nelle
memorie di massa (dischi)
• le informazioni vengono distribuite in file, cartelle e volumi
• un file è una sequenza di lunghezza variabile di byte e
costituisce l’unità di dati elementare gestita dal file system
• una cartella (o directory, o direttorio) è un contenitore di file
e cartelle
• un volume è una unità logica che contiene file e cartelle e
corrisponde ad una porzione (detta partizione) della
memoria di massa gestita dal file system
Alberi di cartelle
!"#$%&'(&')*%+$""$
Le cartelle, potendo contenere
altre cartelle, sono organizzate
gerarchicamente ad albero
!!
!"""
!""" "#$%#&'()*&+,
"#$%#&'()*&+,
## -*./)0)
-*./)0)
## 12234)#/5*(
12234)#/5*(
##
!"""67"$8'&
!"""67"$8'&
## 9'5*:'67"$8'&;/5<<
9'5*:'67"$8'&;/5<<
## 9'5*:'67"$8'&;/)<:
9'5*:'67"$8'&;/)<:
## #4=)$<</)0),,,,
#4=)$<</)0),,,,
##
$"""-'.$<'
$"""-'.$<'
##
-#('4>$/)0)
-#('4>$/)0)
##
!"""?@@#(#*ABBB
!"""?@@#(#*ABBB
67"$8'&1/5*)
67"$8'&1/5*)
67"6*C'&6*#4)/5<<
67"6*C'&6*#4)/5<<
67"D*&5/5<<
67"D*&5/5<<
!"#$%&'"((")#*+'",-+#
$+,'","&"#%('&"#
$%&'"((")#.+,+#
+&/%,011%'"#
/"&%&$20$%3",'"#%-#
%(4"&+
!"#
$#
,-"./&'$')*%+$""$
Volumi e cartelle
• I sistemi Windows gestiscono un albero di cartelle
separato per ogni volume
• questa caratteristica deriva dal DOS “Disk Operating
System”
• ad esempio: il file
a:\miadir\prova.txt
risiede nel volume a: mentre il file
c:\win\log.txt
risiede nel volume c:
• I sistemi Unix (come per esempio Linux) presentano
all’utente un singolo albero di cartelle, nascondendo
l’effettiva dislocazione dei file nei volumi
• ad esempio: il file /home/user/miadir/prova.txt potrebbe
risiedere su un disco diverso da quello su cui risiede il file
/usr/bin/ls, ma entrambi i file appartengono allo stesso
albero di cartelle
File
• Un file è l’unità di dati elementare gestita dal filesystem ed
è caratterizzato da
• un contenuto, cioè una sequenza di byte
• un identificatore, unico per ogni file
• I dati contenuti nel file devono essere opportunamente
interpretati
• le regole con cui interpretare il file sono chiamate formato
del file
• i formati dei file corrispondono a codifiche convenzionali di
informazioni adottate dalle applicazioni
Nome del file
Un file è identificato da un percorso ed un nome:
• il percorso indica la sequenza delle cartelle che occorre
traversare per raggiungere il file
• in alcuni sistemi indica anche il volume in cui si trova il file
• il nome è unico all’interno della cartella in cui si trova il file
• il nome può contenere il carattere “.” (punto)
• la parte terminale del nome dopo l’ultimo punto (quando
presente) viene chiamata estensione
• l’estensione è lunga generalmente tre caratteri (esempi: .txt
.doc .exe .htm, ?)
• in alcuni sistemi (tipicamente DOS e Windows) l’estensione
identifica il formato del file
Nome del file
• Per esempio, il nome
d:\Home\Java\Dispense\01-calcolatore.ppt
• dove
d:\Home\Java\Dispense\
è il percorso
• mentre
01-calcolatore.ppt
è il nome del file
• ppt è l’estensione e suggerisce che il file possa essere
interpretato correttamente dall’applicazione PowerPoint
Operazioni sui file
• Il sistema operativo mette a disposizione degli utenti le
seguenti operazioni
• creazione: l’utente, o più spesso un’applicazione lanciata
dall’utente, può creare file ed aggiungerli al file-system
• cancellazione: l’utente può cancellare un file
• apertura: l’utente, o più spesso un’applicazione lanciata
dall’utente, può dichiarare di essere interessato a leggere o
scrivere su un file, questa dichiarazione serve a prevenire la
modifica del file da parte di altri utenti/applicazioni
• chiusura: l’utente dichiara di aver terminato la lettura/modifica del
file
• lettura: l’utente legge il file
• scrittura: l’utente aggiorna il file
l’interprete dei comandi
Interprete dei comandi
l’interprete dei comandi è l’interfaccia utente del sistema
operativo
• definisce le operazioni che possono essere utilizzate
direttamente dall’utente finale, chiamate comandi
• esempi di comandi sono:
• esecuzione di una applicazione
• apertura di un documento (eseguendo l’applicazione in
grado di interpretare il suo formato)
• l’interprete comandi può essere
• basato su una interfaccia a caratteri come nei sistemi
operativi Linux, ma anche nel “prompt dei comandi” di
Windows (comando cmd)
• basato su una interfaccia grafica: come nei sistemi
operativi Windows e nell’ambiente grafico di Linux
Interfaccia grafica
• l’elemento principale è la scrivania (o desktop) sulla quale risiedono le
cartelle ed i file che corrispondono ai dati presenti sul disco fisso
• sul desktop si possono aprire delle finestre che astrattamente
corrispondono ai documenti che materialmente possono essere disposti
su una scrivania
• cartelle e finestre sono oggetti che l’utente può manipolare tramite il
mouse: drag&drop, menu contestuale, point&click, doppio click, ecc.
• sul desktop appaiono anche i programmi disponibili sotto forma di icona
• un menù che consente di selezionare delle voci corrispondenti a
programmi
• l’utente può richiedere l’esecuzione di un programma facendo doppio
click sull’icona corrispondente o selezionando la voce opportuna del
menù
• l’utente può mantenere aperte più finestre contemporaneamente
corrispondenti ai vari processi in esecuzione
!
!
!"2&#%&#()2:(*+,6+#4#*#(!"#1#,2@+'%#(4+(2%()*'9*-$$-(5-,#%4'(4'))+'(,!+,7(
12!!"+,'%-(,'**+1)'%4#%&#('(1#!#@+'%-%4'(!-(8',#('))'*&2%-(4#!($#%A
!"2&#%&#()2:($-%&#%#*#(-)#*&#()+A 5+%#1&*#(,'%&#$)'*-%#-$#%&#(
,'**+1)'%4#%&+(-+(8-*+()*',#11+(+%(#1#,2@+'%#
Esempio di interfaccia grafica
!"#
#$
,-$./)0*1)*)"#$%&'(()'*+%'&)('
l’utente può mantenere aperte
più finestre
contemporaneamente
!"2&#%&#()2:(
$-%&#%#*#(-)#*&#(
corrispondenti ai vari processi
)+A 5+%#1&*#(
,'%&#$)'*-%#-$#
in esecuzione
%&#(,'**+1)'%4#%&+(
-+(8-*+()*',#11+(+%(
#1#,2@+'%#
!"#
#%
Interfaccia a caratteri
• l’interfaccia a caratteri (detta anche shell dei comandi)
consente di interagire con il sistema operativo scrivendo e
leggendo delle sequenze di caratteri
• Nei sistemi Linux l’interfaccia a caratteri è lo strumento
principe di interazione con il sistema operativo
• Nei sistemi Windows si può ottenere un’interfaccia a
caratteri selezionando
Programmi-Accessori-Prompt dei comandi
oppure selezionando Avvio-Esegui e digitando “cmd”
Interfaccia a caratteri
• Utilizzando una interfaccia a caratteri l’utente può
richiedere l’esecuzione di un programma nel seguente
modo
• una speciale stringa, detta prompt, segnala all’utente che
l’interfaccia a caratteri è pronta a ricevere comandi
• l’utente scrive il nome del file corrispondente al programma
da eseguire e batte il tasto invio (o return)
• il sistema operativo avvia un processo corrispondente al
programma selezionato
• quando il processo è terminato all’utente riappare il prompt
dei comandi che gli consente di immettere un nuovo
comando
Parametri sulla linea di comando
• l’interfaccia a caratteri consente all’utente di specificare
delle stringhe aggiuntive (dette parametri) in coda al nome
del programma o del comando da eseguire
• Esempi
•
•
•
•
•
dir c:\miadirectory
cd ..
help dir
winword miofile.doc
dir *.exe *.com
• I progettisti di applicazioni hanno a disposizione dei
costrutti che consentono all’applicazione di recuperare la
lista delle stringhe (separate da spazi) presenti sulla linea
di comando
Flag
• I parametri vengono chiamati flag quando sono brevi
stringhe precedute da caratteri di controllo
• Esempi
• dir /a
• cd /?
• Alcune applicazioni richiedono flag seguiti da argomenti
accessori
• Esempi
• tar -t -v -z -f miofile.tgz miadir
• javac -g –source 1.3 –encoding UTF8 file.java
Riepilogo
• Cosa è un sistema operativo
• l’architettura a livelli dei sistemi operativi
• Il gestore della memoria
• Il gestore delle periferiche
• I file eseguibili e i file dati
• Programmi e processi
• Il nucleo del sistema operativo
• Uniprogrammazione e multiprogrammazione
• file, directory e volumi
• l’interprete dei comandi
• l’interfaccia grafica
• l’interfaccia a caratteri
Parte V
UD 3.2 – Il software
Tipi di Software
• Software di sistema (o di base)
• es: sistema operativo, drivers, librerie di sistema
• Software applicativo
• applicazioni o programmi
Sistema Operativo (SO)
• In inglese, Operating System (OS)
• è quel particolare software responsabile del controllo e
della gestione dei componenti hardware di un calcolatore e
dei software applicativi che su di esso vengono eseguiti
• intermediario tra l’utente e le risorse hardware, tra i
software applicativi e l’hardware
• fornisce un’interfaccia utente (testuale e/o grafica) di alto
livello alla macchina
OS come intermediario
FIGURA
Obiettivi del SO
• Semplicità
• rende l’uso del computer più semplice, mascherando la
complessità della piattaforma hardware
• Efficienza
• ottimizza l’uso delle risorse da parte dei software applicativi
• Flessibilità
• fornisce la visione di una macchina astratta, garantendo
un’interfaccia uniforme agli sviluppatori di software
applicativo
Virtualizzazione delle risorse hw
• Fornisce agli utenti e applicativi, delle risorse virtuali, più
semplici da usare rispetto a quelle reali
• Ad esempio nella gestione dei dischi
risorsa reale
risorsa virtuale
hard disk
filesystem
• senza la virtualizzazione, occorrerebbe:
• conoscere l’organizzazione fisica del disco ed il linguaggio
di gestione del controller,
• occuparsi di dare i comandi per la gestione del motore del
disco e della testina.
Servizi del SO
• Esecuzione di applicazioni
• caricamento degli applicativi nella memoria centrale
• allocazione delle risorse
• Accesso ai dispositivi di Input/Output (I/O)
• gestione di un’interfaccia logica verso i dispositivi (fornendo
operazioni astratte di lettura/scrittura)
• Accesso alle memorie di massa
• fornisce un’organizzazione logica dei dati sotto forma di
cartelle e file (File System)
Servizi del SO
• Controllo accesso
• condivisione di risorse da parte di più applicazioni (e utenti
nel caso di calcolatori multiutente)
• meccanismi di protezione e politiche di risoluzione degli
eventuali conflitti
• Gestione degli errori
• protezione del sistema da parte di applicazioni mal
funzionanti
• risoluzione di malfunzionamenti causati da problemi
hardware
Vantaggi di un SO
• Sono legati alla possibilità di definire un’ interfaccia
standard alle risorse fisiche (hardware) cosicchè sia
possibile:
• sviluppare programmi (=software applicativo) in modo
semplice, modulare ed indipendente dallo specifico
calcolatore
• aggiornare il software di base e l’hardware in modo
trasparente ai programmi applicativi e all’utente
Caratteristiche di un SO moderno
• multitasking
• esecuzione di più applicativi contemporaneamente
• supporto multiutente
• più utenti hanno la propria home con file e documenti
separati
• memoria virtuale
• uso del disco in caso di esaurimento memoria
• protezione della memoria
• impedisce ad un programma di accedere alla memoria di
un’altro programma in esecuzione
Sistemi operativi popolari
• Proprietari:
• Microsoft: MS-DOS, Windows
(3.1/95/98/ME/NT/2009/XP/Vista/7)
• Apple: Mac OS Classic, Mac OS X (Panther/Leopard/Snow
Leopard/Lion)
• Liberi (basati su Unix):
• Ubuntu, Fedora, Suse, Slackware, Debian, CentOS, Red
Hat
Windows
• è il sistema operativo più diffuso
• nasce nel 1984 come interfaccia grafica per il sistema
operativo di Microsoft MS-DOS venduto con i PC-IBM
• La versione corrente è Windows 8 che è stato rilasciato il
26 ottobre 2012
• interfaccia utente ridisegnata in funzione della usabilità su
touchscreen
• basato sul kernel di Vista
• molti miglioramenti under-the-hood (dietro le quinte)
• diverse varianti:
http://windows.microsoft.com/it-IT/windows8/products/compare
Linux
• Rientra in questa categoria ogni sistema operativo libero di
tipo Unix ottenuto integrando in un ambiente uniforme tre
tipologie di software:
• Kernel Linux: cuore del sistema operativo scritto da Linus
Torvalds nel 1991
• elementi del sistema GNU (acronimo ricorsivo “GNU is Not
Unix”), progetto di Richard Stallman per la creazione di
software di sistema liberi
• software libero
• l’ambiente così ottenuto viene detto distribuzione di un
sistema operativo basato su kernel linux o più brevemente
(ma meno precisamente) sistema linux.
Mac OS
• 1984: Macintosh: il primo computer ad avere un’interfaccia
grafica e un mouse
• il SO è il Mac OS (Macintosh Operating System)
• 2001: Mac OS X (si pronuncia ten): completamente
riscritto e basato su Unix alla fine delgi anni ’80 è il SO dei
moderni Mac la versione attuale è Mac OS X 10.9
Mountain Lion.
Interfaccia (utente) grafica (GUI)
• Graphical User Interface (GUI)
• fornisce all’utente un insieme di oggetti grafici attraverso i
quali poter interagire con il computer
• in contrapposizione ad un’interfaccia a linea di comando
(Command Line Interface: CLI)
• interazione via comandi testuali
• Elementi di un’interfaccia grafica:
• widgets (congegno)
• Icòne
• Desktop
• Pulsanti
• Finestre
• Combo box
• List box
• Drop Down list
Elementi di una GUI
• Text box
• Check box
• Radio button
• Slider
• Scrollbar (verticale e orizzontale)
• Tool bar (barra degli strumenti)
• Menu e Menu bars
• Status bar
• Dialog Box
Elementi di una GUI
• tool tip
• tab
• label (etichetta)
• progress bar
• dock
• spinner
• tree (albero)
• grid (griglia)
Interfaccie grafiche popolari
• Anche chiamati Desktop Environments
• Windows Aero (Windows Vista)
• http://www.microsoft.com/italy/windows/products/
windowsvista/features/details/aero.mspx
• Aqua (Mac OS)
• http://en.wikipedia.org/wiki/Aqua_(user_interface)
• KDE (Linux, Win/Mac experimental), Gnome (Linux)
• http://it.wikipedia.org/wiki/KDE
• http://it.wikipedia.org/wiki/Gnome
Programma (per calcolatore)
• Un programma per calcolatore è l’implementazione di un
algoritmo in un linguaggio adatto ad essere eseguito da un
computer
• algoritmo: è una sequenza logicamente ordinata di passi
(istruzioni) che consente di risolvere un dato problema
• algoritmi descritti con diagrammi di flusso
• Linguaggio di programmazione è un linguaggio formale,
dotato di lessico, sintassi e semantica, utilizzabile per
l’implementazione di un algoritmo.
• C , Java, C++, Basic, Assembly, Objective-C, Pascal
Diagramma di flusso: somma
Diagramma di flusso: somma
#include <stdio.h>
#include <stdlib.h>
int main()
{
int z;
int x = 0, y = 0;
printf("Inserisci il primo valore: ");
scanf("%d", &x);
printf("Inserisci il secondo valore: ");
scanf("%d", &y);!
z = x + y;
printf("La somma dei due numeri è la seguente: %d\n", z);
return 0;
}
Programma eseguibile
• un programma binario (o eseguibile) è direttamente
eseguibile da un calcolatore
• un programma scritto in un linguaggio di programmazione
può essere eseguito solo utilizzando un compilatore o un
interprete
• compilatore: è un programma che traduce il codice
sorgente da un linguaggio ad alto livello in un codice binario
(=programma binario)
• interprete: è un programma in grado di eseguire al volo un
altro programma a partire dal codice sorgente
• codice sorgente (o sorgente): insieme di istruzioni in un
dato linguaggio di programmazione
Software applicativo
• Applicazione: l’insieme di un programma eseguibile (o più
eseguibili) con tutte le risorse software (librerie, file di
configurazione, immagini, suoni) necessarie per offrire un
servizio all’utente finale
• Classificazione:
• a seconda del tipo di licenza concessa dall’autore verso il
fruitore (software libero vs software proprietario)
• a seconda dell’uso a cui è destinato
Open Source (sorgente aperto)
• Indica un software i cui software ne permettono e ne
favoriscono il libero studio e l’eventuale apporto di
modifiche da parte di programmatori indipendenti
• vantaggio: la collaborazione di più parti permette al
prodotto finale di raggiungere una complessità maggiore di
quanto potrebbe ottenere un singolo gruppo di lavoro
• Famosi software open source:
• Mozilla Firefox, VideoLan Client (VLC), OpenOffice, Gimp
Software libero (free software)
• è un software pubblicato con una licenza che permette a
chiunque di utilizzarlo e che ne incoraggia lo studio, le
modifiche e la redistribuzione
• si contrappone al software proprietario
• enfasi sulla libertà dell’utente nell’uso
• è anche open source (pre-requisito)
• è soggetto ad una licenza d’uso:
• gli autori precedenti devono essere menzionati
• bisogna distribuire anche le modifiche
• Esempio più eclatante: GNU/Linux
Altre tipologie di software
• Shareware: licenza che consente di utilizzare il software
per un determinato periodo di tempo, dopo il quale è
necessario pagare un costo per proseguire dopo la
scadenza, ancora usabile
• nag screen (con il termine Nag Screen (chiamato anche begware,
annoyware or a nagware) si intende la finestra di un’applicazione per PC
che si apre durante l’esecuzione dell’applicazione stessa, od al suo avvio.
All’interno sono presenti crediti dell’autore relativi al software oppure nel
caso delle applicazioni shareware, ricorda all’utente la necessità di
comprare il prodotto definitivo. Questi messaggi possono apparire in forma
di finestre che oscurano parte dello schermo, e possono essere chiuse,
permettendo all’utente di utilizzare l’applicazione, soltanto dopo alcuni
secondi): periodo d’uso restante
• es: Winzip
• Trial (prova): software completamente funzionante per un
dato periodo di tempo, dopo il quale si ha l’interruzione del
funzionamento è necessario l’acquisto della licenza
(codice seriale)
• Demo: software con ridotte capacità rispetto alla versione
completa (full); ad es: impossibilità di salvataggio, di
stampa
Categorie di applicazioni
• Desktop (o produttività personale)
• elaboratore di testi, fogli di calcolo, presentazioni,
fotoritocco, archiviazione (database), grafica artistica/
tecnica, musica, agenda, PIM (Personal Information
Manager)
• Education
• applicazioni utili per le scuole, sistemi di
auto-apprendimento
• Games
• Software development
Categorie di applicazioni
• Business o enterprise (applicazioni aziendali)
• Financial
• CRM (Customer Relationship management)
• ERP (Enterprise Resource Planning)
• contabilità, bilancio, magazzino, fornitori, clienti,
produzione, vendite, marketing, personale, controllo di
gestione
• OLAP (Online Analytical Processing)
• Project Management
• E-commerce
• Science
• applicazioni nei campi della scienza applicata (IA,
Astronomia, Biologia, Fisica, Chimica, etc)
Applicazioni desktop popolari
• Office automation:
• Microsoft Office (Win/Mac), OpenOffice .org
(Win/Mac/Linux), iWork (Mac)
• Internet Browsers:
• IE (Win), Mozilla Firefox, (Win/Mac/Linux), Opera, Google
Chrome, Camino, Safari (Mac)
• Client Mail (posta elettronica)
• Outlook/Outlook Express (Win), Apple Mail, Mozilla
Thunderbird(Win/Mac/Linux)
Applicazioni desktop popolari
• Instant Messaging
• MSN/Windows Live Messenger, (Win/Mac)
Skype(Win/Mac/Linux), ICQ(Win/Mac), Mercur y
(Win/Mac/Linux), aMSN(Win/Mac/Linux), Adium (Mac),
iChat (Mac), Pidgin (Win/Mac/Linux)
• Compression
• Winzip/Winrar (Win), Stuffit Expander (Win/Mac),
unzip/gzip/tar (Mac/Linux)
• Masterizzazione
• Nero Burning ROM (Win), Roxio Toast (Mac), cdrecord
(Linux)
Applicazioni desktop popolari
• Multimedia player
• Windows MPlayer (Win), VideoLan Client (Win/Mac/Linux),
RealPlayer, (Win/Mac/Linux) DivX Player, Quicktime
(Win/Mac), iTunes (Win/Mac), XBMC (Win/Mac/Linux)
• Peer-to-peer
• eMule , aMule, azureus, transmissions
• Visualizzazione PDF
• Adobe Acrobat Reader (Win/Mac/Linux), Apple Preview
(mac)
• Sviluppo applicazioni
• Eclipse (Win/Mac/Linux), Netbeans (Win/Mac/Linux)
Applicazioni professionali
• Adobe Creative Suite (Win/Mac)
• Photoshop, Illustrator, InDesign, Flash, Acrobat,
Dreamweaver, Firewor ks, After Effects, Premiere ,
Lightroom
• CAD (Computer Aided Design)
• Autocad (Win), Archicad (Win/Mac), Maya, Vector Works
• Apple Pro Software:
• Final Cut, Logic, Aperture, Motion
File System
• Astrazione attraverso la quale sono rappresentati gli
oggetti necessari alla memorizzazione, organizzazione
gerarchica, manipolazione, navigazione, l’accesso e la
lettura dei dati su un dispositivo di archiviazione
• es: unità di disco, file, cartelle, percorsi (path)
• La creazione del file system su un dispositivo di
archiviazione di massa viene generato al momento della
formattazione.
• File System popolari:
• FAT/NTFS (Windows), HPFS (Mac OS), ext/raiserfs (Unix)
Files e directories
• Un file (archivio) è un contenitore di informazione
digitalizzata
• I dati codificati in un file sono organizzati come una
sequenza di bytes, immagazzinati come un solo elemento
su una memoria di massa, all’interno di un File System su
quella data di memoria di massa
• fisicamente può essere scritto su più zone (blocchi, anche
non contigui) del supporto che lo ospita
• il SO si occupa di rendere trasparente alle applicazioni la
suddivisione fisica dei file e di gestire recupero e
lettura/scrittura dei blocchi fisici
• ogni archivio ha un nome (filename)
• i files sono organizzati in directories (o cartelle) in uno
spazio di nomi gerarchico
Path assoluti e relativi
• Path (percorso): un nome che contiene in forma esplicita
informazioni sulla posizione dei file all’interno del
filesystem:
• es: C:\Documents and Settings\Antonio\Desktop\Lezione2.pdf
• Path assoluto:
• indica la posizione di un file/cartella a partire dalla radice
del file system
• Path relativo:
• indica la posizione di un file/cartella a partire dalla directory
corrente
• es: Desktop\Lezione2.pdf (se la dir corrente è Antonio)
• Separatori di path: slash (/) in Unix/Mac OS, backslash (\)
Windows
Formato dei files
• Il contenuto di un file è conforme ad un particolare formato
• Una o più applicazioni in grado di interpretare e/o
modificarne il contenuto (aprire un file)
• Identificazione del formato:
• estensione del file (DOS, Windows) i tre caratteri finali del
filename dopo il punto
• metadati salvati dentro il file (Mac OS)
• primi byte (magic number) del file (Unix, Linux)
Files
• file ASCII vs file binari
• ASCII: file di testo, una sequenza di caratteri pura e
semplice, interpretabile da qualsiasi SO
• binari: interpretabili da un ben determinato applicativo in
una determinata piattaforma non intellegibili direttamente
dall’uomo
• Operazioni sui file:
• apertura/chiusura
• lettura/scrittura
Tipi di files
• File documenti
• CSV (Comma Separated Values), TXT (file di testo, ASCII),
RTF (Rich Text Format), DOC (MS Word), XLS (MS Excel),
PPT (MS PPT), MDB (MS Access), PDF (Adobe Acrobat)
• File composti da linguaggi di markup
• HTML, XML, CSS, DOCX/XLSX/PPTX (Office 2007)
• Codice sorgente
• BAS (Basic), C, CPP (C++), Java, PAS (Pascal), PY
(Python), PHP, ASP/JSP (Active/Java Server Pages)
Tipi di files
• Archivi compressi:
• ZIP, RAR, CAB (Windows), SIT (StuffIT), TAR (Unix), GZ
(Gzip), BZ2 (Bzip2)
• File grafici
• grafica raster
• JPG, TIF, GIF, PNG, BMP
• grafica vettoriale
• AI (Adobe Illustrator), CDR (Corel Draw), DWG/DXF
(Autocad), SVG (Scalable Vector Graphics)
Tipi di files
• File Audio
• AC3, MP3, MID (Midi), AAC (Advanced Audio Coding),
WAV, AIFF, RA (Real Audio), OGG (Vorbis), MKA (Matroska
Audio)
• File video
• AVI, MOV, MKV (Matroska Video), RM (Real Media), 3GP,
(cellulari), SWG (Flash), MPG (Mpeg), MP4, WMV
(Windows Media Video)
• File eseguibili
• EXE, BAT, JAR (Java), DLL (Librerie win), ELF, (Unix)
Mach-O (Mac)
• altri tipi di file
• INI (inizializzazione win), SYS (file di sistema win)