Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
Economia e Finanza
a.a. 2020-2021
Il Software
Ing. Andrea Pandurino
Università del Salento
Sommario
u Concetti di base
u Algoritmi
u Sistema Operativo
u Risorse
u Dipendenza dall’HW
u Sistemi Operativi più usati
u Funzioni e Struttura
u Macchina virtuale
u Bootstrap
u Kernel
u Shell
u Gestione memoria
1
Concetti di base
Analisi e programmazione - 1
u Tramite un elaboratore si possono risolvere
problemi di varia natura: emissione di certificati
anagrafici, gestione dei c/c di un istituto di
credito, prenotazioni ferroviarie…
u Il problema deve essere formulato in modo
opportuno, perché sia possibile utilizzare un
elaboratore per la sua soluzione
u Per analisi e programmazione si intende l’insieme
delle attività preliminari atte a risolvere problemi
utilizzando un elaboratore, dalla formulazione del
problema fino alla predisposizione
dell’elaboratore
u Scopo dell’analisi ð definire un algoritmo
u Scopo della programmazione ð definire un programma
2
Analisi e programmazione - 2
u Algoritmo ¾ elenco finito di istruzioni, che
specificano le operazioni eseguendo le quali si
risolve una classe di problemi
u Un particolare problema della classe viene risolto
utilizzando l’apposito algoritmo sui dati che lo
caratterizzano
u Un algoritmo non può essere eseguito direttamente
dall’elaboratore
u Programma ¾ ricetta che traduce l’algoritmo ed
è direttamente comprensibile, pertanto
eseguibile, da parte di un elaboratore
u Linguaggio di programmazione ¾ linguaggio
rigoroso che permette la formalizzazione di un
algoritmo in un programma
ANALISI
Programma
ELABORAZIONE Dati
Risultati
3
Esempio di algoritmo: una ricetta
u Pellegrino Artusi, critico letterario, scrittore e gastronomo, pubblicò
nel 1881 il manuale La Scienza in cucina e l'Arte di Mangiar bene,
una raccolta di 790 ricette tuttora in stampa, a cui possiamo fare
riferimento per proporre una metafora comunemente adottata per
ragionare attorno al concetto di algoritmo.
u A proposito delle ricette, valgono le seguenti considerazioni:
1. l'Artusi, nella stesura di una ricetta, presupponeva l’esistenza di
qualcuno, un cuoco, che la eseguisse per preparare il piatto;
2. una ricetta viene letta da un cuoco il quale, partendo da un insieme ben
preciso di ingredienti, esegue, in un ben preciso ordine, le istruzioni in
essa riportate giungendo, infine, a ottenere il piatto;
3. un cuoco, per realizzare uno dei piatti proposti dall'Artusi, deve
conoscere la lingua italiana;
4. un cuoco che non conosca la lingua italiana può realizzare una ricetta
dell'Artusi se dispone di qualcuno in grado di tradurgliela nella sua
lingua;
5. un cuoco non può realizzare un piatto la cui ricetta richieda la
preparazione di una salsa per lui sconosciuta (per esempio la
"balsamella' che l'Artusi richiede nella ricetta per «Cotolette di
arigustà»);
4
Analogamente, per gli algoritmi:
1. un algoritmo presuppone la presenza di qualcuno (o qualcosa) in grado di
eseguirlo, che definiremo esecutore (in informatica, ovviamente, sarà un
calcolatore);
2. l'algoritmo viene letto dall’esecutore il quale, partendo dai dati in input,
esegue le istruzioni in esso riportate seguendo un ordine ben preciso e
giungendo, al termine, a ottenere i dati di output;
3. l'algoritmo deve essere formulato in un linguaggio comprensibile
all'esecutore;
4. un esecutore può eseguire un algoritmo formulato in un linguaggio che non
conosce a patto che l'algoritmo stesso sia preventivamente tradotto in un
linguaggio che invece gli è noto;
5. l'algoritmo deve prevedere soltanto istruzioni elementari, che richiedono
all’esecutore la conduzione di operazioni elementari (operazioni che egli
sa compiere senza bisogno di ulteriori specificazioni);
6. un algoritmo può richiedere l'esecuzione di altri algoritmi precedentemente
specificati all'esecutore;
7. l'algoritmo deve essere formulato in un linguaggio non ambiguo, in cui cioè
ogni istruzione caratterizzi univocamente una delle operazioni che
l’esecutore è in grado di compiere;
10
5
Proprietà degli algoritmi
u Affinché una “ricetta”, un elenco di istruzioni,
possa essere considerato un algoritmo, devono
essere soddisfatti i seguenti requisiti:
u Finitezza: ogni algoritmo deve essere finito, cioè ogni
singola istruzione deve poter essere eseguita in tempo
finito ed un numero finito di volte
u Generalità: ogni algoritmo deve fornire la soluzione per
una classe di problemi; deve pertanto essere applicabile a
qualsiasi insieme di dati appartenenti all’insieme di
definizione o dominio dell’algoritmo e deve produrre
risultati che appartengano all’insieme di arrivo
u Non ambiguità: devono essere definiti in modo univoco i
passi successivi da eseguire; devono essere evitati
paradossi, contraddizioni ed ambiguità; il significato di
ogni istruzione deve essere univoco per chiunque esegua
l’algoritmo
11
I programmi, i linguaggi di
programmazione, i traduttori
u Un linguaggio di programmazione è un linguaggio formale
impiegato per descrivere algoritmi che devono essere
eseguiti da un calcolatore
u Il calcolatore è quindi un esecutore di algoritmi
u Un programma è un algoritmo espresso in un linguaggio di
programmazione (normalmente si presenta come un file di
testo).
u Un programmatore è una persona che, ben conoscendo uno
o più linguaggi di programmazione, «insegna» algoritmi ai
calcolatori scrivendo programmi.
u Il linguaggio macchina, caratteristico di una CPU e
costituito dalla codifica in binario di istruzioni che
corrispondono alle operazioni elementari eseguibili dalla
CPU stessa, è un linguaggio di programmazione.
12
6
Linguaggio macchina
u Programmare in linguaggio macchina, descrivere cioè un
algoritmo sotto forma di lunghissime sequenze di bit, è
un'attività estremamente noiosa nonché onerosa in termini di
tempo e di energie.
u I programmatori hanno quindi pensato di inventare il linguaggio
assemblatore, un linguaggio di programmazione che a ogni
istruzione (binaria) del linguaggio macchina associa una codifica
mnemonica in lingua inglese:
u per esempio, invece di scrivere in linguaggio macchina la sequenza
«01101011»: istruzione che specifica l'operazione di addizione, in
linguaggio assemblatore si può scrivere ADD, derivato dal verbo
"sommare" in lingua inglese e molto più espressivo.
u Gli stessi programmatori hanno quindi realizzato un programma
(assemblatore, assembler) che, leggendo in input il file
contenente un programma scritto in linguaggio assemblatore,
genera in output un altro file contenente la sua traduzione in
linguaggio macchina e quindi eseguibile dalla CPU.
13
Linguaggi di programmazione
u Ciò ha suggerito l'idea di realizzare linguaggi di
programmazione di alto livello (per esempio
Basic, Cobol, Fortran, Pascal, C, C++, Java, LISP,
Prolog), più vicini, nella sintassi e nella semantica,
ad altri linguaggi già impiegati dagli uomini, come
quelli naturali (tipicamente l'inglese) e quelli della
matematica e della logica, e in grado, quindi, di
rendere l'attività di programmazione più semplice
e produttiva.
u Naturalmente, per poter essere eseguito da un
calcolatore, un programma scritto in un linguaggio
di programmazione di alto livello deve essere
preventivamente tradotto nel linguaggio macchina
corrispondente.
14
7
Software: etimologia del termine
15
16
8
Ciclo di vita del software
1. La prima di esse è l'analisi che, partendo da un'indagine sull'ambito in cui il
nuovo software deve collocarsi, ha come scopo la produzione di un
documento di specifica contenente la definizione del problema che il
software dovrà risolvere, delle caratteristiche che dovrà esibire, dei costi
previsti per la sua realizzazione.
2. La progettazione, partendo dal documento di specifica, tratteggia la struttura
del prodotto software.
3. Nella fase di implementazione (o codifica), partendo dai documenti prodotti
alle fasi precedenti, si procede alla realizzazione di uno o più programmi la
cui integrazione costituirà il prodotto software.
4. Il collaudo sottopone quest'ultimo a una serie di test allo scopo di verificare se
soddisfi i requisiti indicati in fase di analisi.
5. Il rilascio consiste nell'installazione del prodotto software presso gli utenti
(consegnato al committente o rilasciato sul mercato).
6. La manutenzione comprende le attività, successive al rilascio, di modifica al
prodotto software per l’eliminazione di malfunzionamenti, l'estensione delle
sue funzionalità o il suo adattamento a mutate esigenze.
17
Categorie di software
u Il software per i calcolatori viene normalmente
classificato in due categorie:
u Software applicativo: programmi, detti applicazioni,
che risolvono o supportano l'utente nella risoluzione di
problemi specifici in determinati ambiti applicativi.
u Software di base: programmi di utilizzo generale che
consentono l'interazione dell'utente con il calcolatore,
gestiscono le risorse in dotazione allo stesso e supportano
l'esecuzione del software applicativo.
18
9
Il software applicativo
u Innumerevoli sono le applicazioni disponibili in ogni ambito applicativo. Tra quelle di
uso più comune, è necessario citare i software di produttività individuale (o
applicazioni d'automazione d'ufficio, office automation), spesso distribuiti in
pacchetti che ne raggruppano alcuni (suite come Microsoft Office, Apache
OpenOffice):
u Applicazioni di videoscrittura (word processor).
u Applicazioni per la gestione di fogli elettronici (fogli di calcolo, spreadsheet.
u Applicazioni per la produzione di presentazioni multimediali basate su diaposi-
tive (slide).
u Applicazioni di desktop publishing.
u Semplici applicativi per la gestione di basi di dati (DBMS, Data Base Manage-
ment System)
u Applicazioni grafiche e di fotoritocco
u applicazioni OCR (Optical Character Recognition)
u applicazioni CAD (Computer Aided Design, progettazione assistita dal calcolatore)
u videogiochi;
u applicazioni per la fruizione ed eventuale manipolazione di materiale multimedia
le, come audio player, video player
19
APP
u Sempre più popolari, vista la rapida diffusione dei dispositivi
su cui sono impiegate, sono le mobile application,
abbreviate in mobile app o, semplicemente, app.
u Si tratta di applicazioni specificamente realizzate per
smartphone, tablet o altri dispositivi mobili, che mirano a
fornire all'utente la possibilità di trarre i massimi benefici da
al cune caratteristiche offerte da tali dispositivi, quali la
mobilità, la connettività, la multimedialità e la capacità di
determinare la posizione geografica.
u Devono, al contempo, farei conti con alcuni limiti espressi
dai dispositivi mobili nel confronto con i calcolatori nei
formati più tradizionali in termini di autonomia energetica,
capacità di memoria, dimensioni dello schermo, disponibilità
di periferiche.
20
10
Il software di base: il sistema operativo
u Acquistando un calcolatore, ci aspettiamo che
l'hardware sia corredato di un sistema operativo
(SO, OS, Operating System); ovvero il software di
base, una collezione di programmi di utilizzo
generale per:
u l'interazione tra utente e calcolatore,
u la gestione delle risorse in dotazione allo stesso
calcolatore,
u il supporto all’esecuzione del software applicativo.
21
Rappresentazione grafica
u Il funzionamento di un Sistema Operativo può
essere rappresentato da un diagramma a livelli:
SW
applicativo
Sistema
Operativo
Utente
HW
22
11
Sistemi Operativi più usati
I Sistemi Operativi più usati nel mondo PC (che
comprende Desktop, Laptop, Tablet e Smartphone)
sono attualmente:
23
24
12
Struttura a livelli
u La struttura logica di un Sistema Operativo può
essere rappresentata da un diagramma a livelli in
cui ogni livello si occupa di una specifica funzione:
Gestione dell’I/O
HW
25
26
13
La gestione della CPU (cont.)
u Sempre negli anni '60,i video terminali
determinarono la progressiva scomparsa delle
schede perforate introducendo la possibilità per il
calcolatore di interagire con l'utente nel corso
dell’esecuzione di un programma: l'input poteva
essere inserito con la tastiera in funzione anche
dell'output che il calcolatore esibiva a video.
u Si collegarono allora più terminali allo stesso
calcolatore che divenne un sistema timesharing
(in inglese, "condivisione del tempo"), o
multitasking, in grado di offrire un parallelismo
virtuale, di simulare cioè, per ciascun utente, la
presenza di una CPU a lui dedicata.
27
28
14
La gestione della memoria centrale
u L’esecuzione di un programma richiede la creazione di un
processo a cui è necessario allocare, nella RAM, spazio per il
codice e per i dati.
u La multiprogrammazione, che prevede la coesistenza di più
processi, ciascuno con i suoi requisiti di occupazione della
RAM, favorisce naturalmente la nascita di conflitti tra essi
per l'impiego di tale risorsa, in genere di capacità limitata,
e impone quindi, all'interno del sistema operativo, la
presenza di un gestore per dirimerli.
u Esso prevede:
u controllare con efficienza la RAM;
u garantire lo spazio necessario a ciascun processo;
u proteggere lo spazio allocato a un processo da intrusioni non
autorizzate da parte di altri processi;
u gestire, in modo controllato, spazi comuni tra processi per la
condivisione di dati e lo scambio di messaggi.
29
30
15
La gestione dei file (file system)
u Il file system è il componente del sistema
operativo che si occupa della gestione delle
memorie di massa, al cui interno i dati sono
organizzati in file o cartelle, contenitori logici di
dati o istruzioni, unità base per la memorizzazione
persistente su memoria di massa.
31
Informazioni
File
MEMORIA DI MASSA
32
16
File System
u File System
Modalità di organizzazione e gestione delle
informazioni su memoria di massa.
u E' implementato tramite strutture dati
u Si basa sui concetti fondamentali di File e
Cartelle
u Consente all’utente finale di gestire le
informazioni in maniera semplificata e
gerarchica, senza conoscere i dettagli fisici
dei dispositivi di memoria
Sistemi Operativi differenti usano File System differenti e spesso
incompatibili
33
Memoria di massa
u Memoria di massa (memoria
secondaria)
Dispositivo hardware per la
memorizzazione a lungo termine delle
informazioni. Ne esistono varie tipologie:
u Hard Disk (Tecnologia magnetica)
u SSD (Tecnologia Flash)
u Penna USB (Tecnologia Flash)
u CD, DVD, Blu-Ray (Tecnologia ottica)
u Floppy disk (Tecnologia magnetica)
34
17
File
u File
Insieme di dati correlati memorizzati su
memoria di massa, caratterizzato da
attributi quali:
u Nome
u Estensione (Tipologia à Codifica)
u Dimensione
u Data e Ora di creazione/accesso
u Autorizzazioni, indicazione delle operazioni
consentite ai singoli utenti o a gruppi di
essi.
35
36
18
Cartella
u Cartella (Directory)
Contenitore logico di file.
Struttura dati astratta che consente di:
u Raggruppare le informazioni appartenenti a
file differenti secondo criteri scelti
dall'utente
u Organizzare gerarchicamente le
informazioni: è infatti possibile inserire
iterativamente cartelle (e relativi file)
all'interno di altre cartelle
37
Cartelle e gerarchia
Topolino
38
19
Path
u Path (Percorso)
Descrizione univoca del percorso per
raggiungere una risorsa (file o cartella) in
un File System.
Può essere:
u Assoluto
A partire dalla cartella root di una
partizione
ES: C:\Documenti\Esempio.doc
u Relativo
A partire dalla cartella attualmente in uso
ES: Pictures\Fotografia.jpg
39
C: ROOT
PRIMO LIVELLO
Documenti
Esempio.doc RISORSA
40
20
Path relativo: Esempio
Pictures\Fotografia.jpg
CARTELLA ATTUALE
Pictures
Fotografia.jpg RISORSA
41
42
21
Gestione dell’interfaccia
u Interfaccia utente (Shell)
Interfaccia di comunicazione tra l'utente e il
Sistema Operativo. Consente di selezionare ed
eseguire funzioni e comandi. Può essere di tipo:
u GUI (Graphical User Interface)
Interfaccia grafica basata su oggetti (Desktop, Icone).
Interfaccia utente standard dei moderni Sistemi Operativi
(WYSIWYG) What You See Is What You Get.
u CUI (Command User Interface)
Interfaccia testuale a linea di comando.
Standard nei SO più datati, è utilizzabile come opzione
anche in quelli recenti (Prompt dei comandi, Terminale).
43
44
22
Autenticazione informatica
u può essere condotta secondo tre modalità che
possono, per maggior sicurezza, essere impiegate
anche in combinazione tra loro.
u Dimostrazione di conoscenza: è la modalità più
frequente e consiste nel chiedere all'utente di esprimere
delle credenziali che devono corrispondere a quelle
note al sistema (account), tipicamente un nome utente
(username) e una parola chiave (password).
u Dimostrazione di possesso: l'utente deve dimostrare di
possedere un oggetto fisico quale, per esempio, una
smart card (una carta simile alle comuni carte di
credito, leggibile da un calcolatore mediante uno smart
card reader) o un drive USB.
u Dimostrazione di caratteristiche fisiche: l'utente deve
dimostrare di possedere determinate caratteristiche
fisiche (per esempio, lettura delle impronte digitali me-
diante un fingerprint scanner).
45
Tipologie di utenti
u Tra gli utenti di un calcolatore, si possono identificare
alcune figure di riferimento (che talvolta si sovrappongono
nella stessa persona fisica) a cui il sistema operativo deve
garantire autorizzazioni diverse.
u Amministratore di sistema (sistemista): garantisce il
funzionamento complessivo del calcolatore, installa hardware e
software e ne cura l'aggiornamento, configura il sistema
operativo e le periferiche, definisce le politiche di sicurezza,
crea gli account e attribuisce le relative autorizzazioni,
pianifica e gestisce il backup e le politiche di disaster recovery
in genere.
u Operatore di sistema: sostituisce l'amministratore, dietro sua
delega, in alcune operazioni di routine (sostituzione del
supporto di backup, creazione di un account).
u Programmatore: realizza applicazioni destinate in genere
all'impiego da parte di altri utenti.
u Utente applicativo: utilizza le applicazioni.
46
23
I software maligni
u Con il termine malware (ottenuto dalla contrazione di
malicious software, "software maligno") e spesso, per
estensione, con computer virus o semplicemente virus si
indica una classe di programmi specificamente progettati
per infiltrarsi, ed eventualmente apportare danni,
all'interno di un calcolatore senza il consenso informato del
suo proprietario.
u Il fenomeno è in costante espansione, anche grazie a
Internet che ne facilita la rapida distribuzione
u Un computer virus propriamente detto è un insieme di
istruzioni (un blocco di codice) nascosto all'interno di un
programma di uso comune (che risulta così infetto).
u Se il programma è mandato in esecuzione, viene eseguito
anche il blocco di codice virulento, il quale per prima cosa
costringe il calcolatore a cercare altri programmi nella
memoria di massa e a infettarli, dopo di che può procedere
ad arrecare danni di vario genere (per esempio
cancellazione o danneggiamento di file).
47
48
24
I software maligni (cont.)
u Un adware (advertising-supported software) è un
programma che, installato su un calcolatore, propone
all'utente pubblicità sotto forma di immagini, animazioni,
filmati, pagine web. In molti casi è installato con il consenso
del proprietario del calcolatore, in caso contrario è detto
adware disonesto.
u Con il termine crimeware si indica software di vario tipo
progettato per il furto d'identità: il criminale lo utilizza per
carpire le credenziali di altri per poi sostituirsi a loro nello
svolgimento di varie attività tra cui, per esempio, l'accesso
illegale a siti web per sottrarre merce o denaro.
u Un hoax (in italiano, "bufalà') è, in questo ambito, un
messaggio di posta elettronica che, senza fondamento,
annuncia l'imminente arrivo di altri messaggi infettati da
pericolosissimi virus.
49
50
25
I software maligni (cont.)
u Esistono poisistemi automatici di difesa la cui
installazione risulta, ai sensi dellavigente
normativa italiana, addirittura obbligatoria in tutti
gli ambiti salvo quello domestico.
u Firewall ("muro tagliafuoco"): un dispositivo hardware o
software che crea una barriera elettronica contro gli
attacchi in stile trojan horse.
u Antivirus: un software in grado di prevenire, individuare
e rimuovere i programmi malware (per essere
adeguatamente efficace necessita di un costante
aggiornamento).
51
26