Software e Sistemi Operativi
SOFTWARE
“L’hardware è la parte che si può prendere a calci; il software
quella contro cui si può solo imprecare”.
SOFTWARE
E’ l’insieme dei dati e dei programmi che rendono possibile
l’inserimento dei dati e dei comandi da parte dell’utente, volti
all’elaborazione da lui desiderata e perseguita.
I programmi si dividono in sistemi operativi (che svolgono le
funzioni di base) e programmi applicativi (nati per funzioni
specifiche) .
Introduzione SO − 1
Il software può essere diviso in due grandi classi:
i programmi di sistema,
sistema che gestiscono le funzionalità del sistema di calcolo
i programmi applicativi,
applicativi che risolvono i problemi degli utenti
L’insieme dei programmi di sistema viene comunemente identificato con il
nome di Sistema Operativo (SO)
Definizione
Un sistema operativo è un programma che controlla l’esecuzione di
programmi applicativi ed agisce come interfaccia fra le applicazioni e
l’hardware del calcolatore
Introduzione SO − 2


Tutte le piattaforme hardware/software richiedono un sistema operativo
Quando si accende un elaboratore, occorre attendere alcuni istanti per poter iniziare
a lavorare: durante questa pausa il computer carica il SO
Scopo del sistema operativo
Gestione EFFICIENTE delle risorse del sistema di elaborazione
Rendere AGEVOLE l’interfaccia tra l’uomo e la macchina
Compiti del sistema operativo
Gestione dei processi
Gestione della memoria principale
Gestione della memoria di massa (file system)
Realizzazione dell’interfaccia utente
Gestione dell’accesso simultaneo di più utenti alla stessa macchina
Esecuzione simultanea di più processi sulla stessa macchina
Rilevamento e gestione degli errori
Accounting
Esempio: il SO come gestore risorse – 1
Si consideri un ristorante con un capo–cuoco (che dirige la cucina) ed i suoi
aiutanti, camerieri e clienti:
I clienti scelgono un piatto dal menù
Un cameriere prende l’ordine e lo consegna al capo–cuoco
Il capo–cuoco riceve l’ordine e assegna uno o più aiutanti alla preparazione del piatto
Ogni aiutante si dedicherà alla preparazione di un piatto, il che potrà richiedere più attività
diverse
Il capo–cuoco supervisiona la preparazione dei piatti e gestisce le risorse (limitate)
disponibili
Esempio: il SO come gestore risorse – 2
Il capo–cuoco è il sistema operativo!
I clienti sono gli utenti
Le ricette associate ai piatti sono i programmi
Il menù ed il cameriere costituiscono l’interfaccia verso il sistema operativo
(grafica e non)
Gli aiutanti sono i processi
La cucina è il computer; pentole, fornelli, etc. sono le componenti hardware
Esempio: il SO come gestore risorse – 3
Problemi del capo–cuoco:
Esecuzione fedele delle ricette
Allocazione efficiente delle risorse esistenti (aiutanti, fornelli, etc.)
Coordinamento efficiente degli aiutanti
Licenziamento degli aiutanti che non si comportano secondo le regole
Problemi del sistema operativo:
Efficienza nell’uso delle risorse (processori, memoria, dischi, etc.)
Protezione nell’uso delle risorse
Coordinamento dei processi
Tipologie di SO

Tipologie di SO:



Sistemi mono-utente - sistemi multi-utente
i sistemi mono-utente sono destinati ad elaboratori per usi personale
(tipo PC) mentre i sistemi multi-utente sono destinati ad elaboratori
utilizzati da piu` utenti contemporaneamente
Sistemi mono-programmati - sistemi multi-programmati
i sistemi mono-programmati gestiscono l’esecuzione di un solo
programma alla volta, mentre i sistemi multi-programmati
gestiscono piu` programmi contemporaneamente
Sistemi interattivi-sistemi batch
classificazione basata sull’ interazione con l’utente
Il SO come macchina estesa – 1
Visione a strati delle componenti hardware/software che
compongo un elaboratore
Il SO come macchina estesa – 2
Il SO può essere inteso come uno strumento che virtualizza
le caratteristiche dell’hardware sottostante, offrendo
all’utente la visione di una macchina astratta più potente e
più semplice da utilizzare di quella fisicamente disponibile
In questa visione, un SO…
…nasconde a programmatori/utenti i dettagli dell’hardware e
fornisce un’interfaccia conveniente e facile da usare
…agisce come intermediario tra programmatore/utente e
hardware
Parole chiave
Indipendenza dall’hardware
Comodità d’uso
Programmabilità
Il SO come macchina estesa – 3
L’utente è in grado di utilizzare la macchina fisica senza
conoscere i dettagli della sua struttura interna e del suo
funzionamento
 Hardware — fornisce le risorse fondamentali di
calcolo (CPU, memoria, device di I/O)
 Sistema Operativo — controlla e coordina lʼutilizzo
delle risorse hardware da parte dei programmi
applicativi dellʼutente
 Programmi Applicativi — definiscono le modalità
di utilizzo delle risorse del sistema, per risolvere i
problemi di calcolo degli utenti (compilatori,
database, video game, programmi gestionali)
 Utenti — persone, altri macchinari, altri elaboratori
ations softwa
plic
re
p
A
s softw
tem
ar
s
e
Sy
Hardware
Visione “a cipolla”
cipolla” del sistema
di calcolo
Architettura del sistema operativo
I SO sono costituiti da un insieme di moduli, ciascuno dedicato a svolgere una
determinata funzione
I vari moduli del SO interagiscono tra loro secondo regole precise, al fine di realizzare
le funzionalità di base della macchina
Interfaccia utente
Gestore dell’I/O
Gestore dei Processi
Gestore del
File System
Gestore della
Memoria Centrale
KERNEL
L’insieme dei moduli per la
gestione della CPU e della
memoria centrale è il
kernel
Ancora sul sistema operativo

Riassumendo: Il sistema operativo fornisce un ambiente per eseguire programmi in
modo conveniente ed efficiente; funge infatti da…
Allocatore di risorse — controlla, distribuisce ed alloca le risorse (in modo equo ed
efficiente)
Programma di controllo — controlla l’esecuzione dei programmi utente e le operazioni sui
dispositivi di I/O
Esempio:
Esempio il filesystem
Si ha a che fare con file, directory, etc., e non ci si deve
preoccupare di come i dati sono memorizzati sul disco
Windows & GUI
Barra
degli
strumenti
Menu a
discesa
Icone
Esempio
• Per ogni carattere immesso tramite la tastiera viene generato un codice
corrispondente
• Il codice, grazie ad una componente hardware, viene memorizzato in un’area
di memoria riservata(buffer) e viene inviato un segnale alla CPU (interrupt)
• Quando la CPU riceve l`interrupt dalla tastiera attiva un modulo (un piccolo
programma) chiamato terminal driver
• Il terminal driver invia al monitor una copia del codice del carattere immesso
per visualizzare il carattere
Software: device driver
I driver di periferica (device driver, appunto) sono
programmi specializzati nella gestione di un particolare
componente hardware.
E’ il sistema operativo a caricarli in memoria durante la
procedura di avvio di un computer.
Software: applicazioni
Sono tutti quei programmi che svolgono funzioni specifiche, e
che vengono “lanciati” dall’interno dei sistemi operativi:
1.
2.
3.
4.
5.
6.
fogli di calcolo
elaborazione testi
fotoritocco, disegno, grafica 3D
editing o riproduzione audio
editing o riproduzione video
“utilities” (compressione, antivirus, ecc.)
Elaboratore testi
Foglio elettronico
Database
Presentazioni
Desktop Publishing
Agenda, Posta, Calendario, Rubrica
PROCEDURA DI AVVIO DI UN COMPUTER
Quando si accede un computer la memoria RAM è vuota.
La memoria ROM contiene il BIOS che permette alla macchina di compiere
le prime operazioni di verifica ed enumerazione dei componenti installati
(memoria, video, dischi, tastiera,ecc…) e di comunicazione tra gli stessi.
In questa fase viene compiuta un’operazione di diagnosi del sistema
(conteggio memoria, controllo periferiche, assegnazione irq, ecc..) ed avviata
la procedura di BOOTSTRAP da disco. In una particolare traccia del disco
fisso (o, se presenti, dal floppy o dal cd-rom) è contenuto il codice di avvio
del sistema operativo installato.
Il bootstrap termina con l’avvio del caricamento dell’intero sistema operativo.
Una volta terminato il caricamento del sistema operativo, il computer è
pronto ad essere utilizzato, e possono essere avviati i programmi applicativi
per elaborare i documenti.
ALGORITMI
Un algoritmo è una sequenza finita, non ambigua, di passi eseguibili e
ripetibili un numero finito di volte per portare alla soluzione di un dato
problema.
Un algoritmo, a partire da informazioni in ingresso, produrrà un risultato in
uscita.
Esempi di algoritmi: ricette di cucina, istruzioni di montaggio di un oggetto,
calcolo dell’ipotenusa dai cateti, calcolo del Massimo Comun Divisore,
procedura per cambiare una ruota forata, ordinamento di una rubrica,
pagamento di un bollettino postale, ecc...
Il metodo più naturale per esprimere un algoritmo è descriverne i passi da
seguire nel linguaggio naturale.
Vediamo un esempio di espressione della procedura per pagare un bollettino
postale:



recarsi ad un ufficio postale
compilare il bollettino di conto corrente postale
effettuare il pagamento
NON AMBIGUITA’ DI UN ALGORITMO
La sequenza precedentemente vista non rappresenta un algoritmo in
maniera corretta in quanto non è priva di ambiguità. Infatti non indica quale
ufficio postale, che cifra indicare, non verifica che si disponga di tale
contante, ecc…
L’algoritmo andrebbe riscritto come:





recarsi al più vicino ufficio postale
consultare la tabella degli importi da pagare
compilare il bollettino di ccp
assicurarsi di avere la cifra necessaria al pagamento
effettuare il pagamento
Tale descrizione è più dettagliata, ma non è ancora del tutto priva di
ambiguità. Ciò è dovuto alla natura stessa del linguaggio naturale. Sono stati
pertanto definiti dei linguaggi specifici per la definizione degli algoritmi,
chiamati linguaggi di programmazione.
RAPPRESENTAZIONE DI UN ALGORITMO
Per rappresentare il flusso di esecuzione di un algoritmo può
essere utile ricorrere ai diagrammi a blocchi che indicano
graficamente la sequenza di operazioni da eseguire. Vediamo
due modi equivalenti di esprimere lo stesso algoritmo (di
Euclide) per il calcolo del M.C.D.
inizio
1. Prendi i valori da tastiera VAL1 e VAL2
finchè
RESTO<>0
INPUT:
VAL1, VAL2
Falso
se
VAL1 < VAL2
Vero
Vero
scambia
VAL1 e
VAL2
RESTO:=
VAL1 MOD VAL2
VAL1:=VAL2
VAL2:=RESTO
RESTO:=
VAL1 MOD VAL2
OUTPUT:
“MCD:” VAL2
fine
Falso
2. Se VAL1<VAL2 allora scambiali
3. Metti in RESTO il resto tra VAL1 e VAL2
4. Ripeti finchè RESTO<>0
5.
Metti in VAL1 il contenuto di VAL2
6.
Metti in VAL2 il contenuto di RESTO
7.
Metti in RESTO il resto tra VAL1 e VAL2
8. Fine Ripeti
9. Mostra il MCD che è pari a VAL2
LINGUAGGI DI BASSO LIVELLO
Come esprimere un algoritmo affinché un computer possa
interpretarlo ed eseguirlo?
In realtà la CPU è in grado di eseguire un numero molto ristretto
di operazioni estremamente semplici. E tali istruzioni sono
espresse in termini numerici, cioè ad ogni istruzione
corrisponde un numero.
Il linguaggio di programmazione le cui istruzioni hanno una
corrispondenza biunivoca con le operazioni svolte dal
microprocessore si chiama LINGUAGGIO MACCHINA.
Questo linguaggio si dice di BASSO LIVELLO in quanto è
strettamente legati alle istruzioni della CPU, quindi poco
naturale per l’uomo.
LINGUAGGI DI ALTO LIVELLO
Fortunatamente, per facilitare l’implementazione degli algoritmi,
a partire dalla metà degli anni ’50, sono stati creati anche dei
linguaggi di programmazione più evoluti, più simili al linguaggio
umano, e non legati all’architettura dell’elaboratore sul quale
vengono utilizzati. Tali linguaggi si dicono di alto livello.
Tali linguaggi devono essere convertiti in linguaggio macchina
affinché la cpu possa eseguirli. Tuttavia, essendo le istruzioni di
questi linguaggi molto potenti e simili al linguaggio umano, a
ognuna corrispondono molte istruzioni in linguaggio
macchina.
CALCOLO DEL MCD IN PASCAL
Questo programma, scritto nel linguaggio ad alto livello Pascal viene
trasformato, grazie al COMPILATORE, in linguaggio macchina.
Si ottiene così un FILE ESEGUIBILE (estensione .EXE nei sistemi windows)
formato da migliaia di istruzioni direttamente comprensibili per la CPU.
program CalcoloMCD(input,output);
var VAL1,VAL2,RESTO:long;
function Scambia(var V1, V2:long);
var VTMP: long;
begin
VTMP:=V1;
V1:=V2;
V2:=VTMP
end;
begin (* main *)
readln(V1);
readln(V2);
if (V1<V2) then Scambia(V1,V2);
RESTO:= V1 mod V2;
while RESTO<>0 do
begin
V1:=V2;
V2:=RESTO;
RESTO:=V1 mod V2
end;
writeln(‘Il MCD è ‘,V2)
end.
Shareware & Freeware


Shareware - È software reso disponibile gratuitamente per
un breve periodo (per consentire delle valutazioni). A
conclusione di tale lasso temporale, sarà necessario
corrispondere una somma in denaro per proseguirne
l’utilizzo. Una volta pagato e registrato, sono spesso rese
disponibili funzionalità aggiuntive non incluse nella versione
di valutazione.
Freeware - È software reso disponibile gratuitamente (come i
browser Web MS Internet Explorer e Netscape Navigator). Lo
sviluppatore potrebbe aver comunque posto delle limitazioni
(per esempio per evitare utilizzo commerciale).
Licenze Free

Free “as in beer”: gratis

Free “as in speech”: libero
Open Source non significa automaticamente software libero
Protezione & Privacy




Il diritto alla privacy è stato definito per cittadini della
Comunità Europea da una specifica direttiva, la 95/46/CE del
24 ottobre 1995, per la "tutela delle persone fisiche con
riguardo al trattamento dei dati personali, nonché alla libera
circolazione di tali dati".
Ogni stato europeo l’ha poi coniugata in legge del proprio
parlamento.
In Italia, la direttiva è stata tradotta nella Legge 675/96
Tutela delle persone e degli altri soggetti rispetto al
trattamento dei dati personali.
Vi è inoltre un organismo preposto a garanzia dell’attuazione
di tale legge: in proposito si può consultare il sito
www.garanteprivacy.it.