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)