Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
1
Software e Sistemi OperativiSoftware e Sistemi Operativi
SOFTWARESOFTWARE
“L’hardware è la parte che si può prendere a calci; il software quella contro cui si può solo imprecare”.
SOFTWAREE’ 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) .
2
Introduzione SO Introduzione SO −− 11
Il software può essere diviso in due grandi classi:i programmi di sistemaprogrammi di sistema, che gestiscono le funzionalità del sistema di calcoloi programmi applicativiprogrammi applicativi, che risolvono i problemi degli utenti
L’insieme dei programmi di sistemaprogrammi di sistema viene comunemente identificato con il nome di Sistema OperativoSistema Operativo (SO)
DefinizioneDefinizioneUn sistema operativo è un programma che controlla lcontrolla l’’esecuzione di esecuzione di programmi applicativiprogrammi applicativi ed agisce come interfaccia fra le applicazioni e interfaccia fra le applicazioni e ll’’hardwarehardware del calcolatore
Tutte le piattaforme hardware/software richiedono un sistema operativoQuando si accende un elaboratore, occorre attendere alcuni istanti per poter iniziare a lavorare: durante questa pausa il computer carica il SO
Introduzione SO Introduzione SO −− 22
3
Scopo del sistema operativoScopo del sistema operativo
Gestione EFFICIENTE delle risorse del sistema di elaborazione
Rendere AGEVOLE l’interfaccia tra l’uomo e la macchina
Gestione dei processiGestione della memoria principaleGestione della memoria di massa (file system)Realizzazione dell’interfaccia utenteGestione dell’accesso simultaneo di più utenti alla stessa macchinaEsecuzione simultanea di più processi sulla stessa macchinaRilevamento e gestione degli erroriAccounting
Compiti del sistema operativoCompiti del sistema operativo
4
Esempio: il SO come gestore risorse Esempio: il SO come gestore risorse –– 11
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–cuocoIl capo–cuoco riceve l’ordine e assegna uno o più aiutanti alla preparazione del piattoOgni aiutante si dedicherà alla preparazione di un piatto, il che potrà richiedere più attivitàdiverseIl capo–cuoco supervisiona la preparazione dei piatti e gestisce le risorse (limitate) disponibili
Esempio: il SO come gestore risorse Esempio: il SO come gestore risorse –– 22
Il capoIl capo––cuoco cuoco èè il sistema operativo!il sistema operativo!
I clienti sono gli utentiLe ricette associate ai piatti sono i programmiIl menù ed il cameriere costituiscono l’interfaccia verso il sistema operativo (grafica e non)Gli aiutanti sono i processiLa cucina è il computer; pentole, fornelli, etc. sono le componenti hardware
5
Esempio: il SO come gestore risorse Esempio: il SO come gestore risorse –– 33
Problemi del capo–cuoco:Esecuzione fedele delle ricetteAllocazione efficiente delle risorse esistenti (aiutanti, fornelli, etc.) Coordinamento efficiente degli aiutantiLicenziamento 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 risorseCoordinamento dei processi
Tipologie di SOTipologie 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-programmatii sistemi mono-programmati gestiscono l’esecuzione di un solo
programma alla volta, mentre i sistemi multi-programmatigestiscono piu` programmi contemporaneamente
Sistemi interattivi-sistemi batchclassificazione basata sull’ interazione con l’utente
6
Il SO come macchina estesa Il SO come macchina estesa –– 11
Visione a strati delle componenti hardware/software che compongo un elaboratore
Il SO come macchina estesa Il SO come macchina estesa –– 22
Il SO può essere inteso come uno strumento che virtualizzavirtualizzale caratteristiche dell’hardware sottostante, offrendo all’utente la visione di una macchina astrattamacchina astratta più potente e più semplice da utilizzare di quella fisicamente disponibileIn 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 chiaveIndipendenza dall’hardwareComodità d’usoProgrammabilità
7
Il SO come macchina estesa Il SO come macchina estesa –– 33
L’utente è in grado di utilizzare la macchina fisica senza conoscere i dettagli della sua struttura interna e del suo funzionamento
1.1. HardwareHardware — fornisce le risorse fondamentali dicalcolo (CPU, memoria, device di I/O)
2.2. SistemaSistema OperativoOperativo — controlla e coordina l’utilizzodelle risorse hardware da parte dei programmiapplicativi dell’utente
3.3. ProgrammiProgrammi ApplicativiApplicativi — definiscono le modalitàdi utilizzo delle risorse del sistema, per risolvere i problemi di calcolo degli utenti (compilatori, database, video game, programmi gestionali)
4.4. UtentiUtenti — persone, altri macchinari, altri elaboratori
Hardware
Sy
stems software
Applications software
Visione Visione ““a cipollaa cipolla”” del sistema del sistema di calcolodi calcolo
I SO sono costituiti da un insieme di moduli, ciascuno dedicato a svolgere una determinata funzioneI vari moduli del SO interagiscono tra loro secondo regole precise, al fine di realizzare le funzionalità di base della macchina
Architettura del sistema operativoArchitettura del sistema operativo
KERNELKERNEL
Gestore dei ProcessiGestore dei Processi Gestore della Gestore della Memoria CentraleMemoria Centrale
Gestore dellGestore dell’’I/OI/O Gestore del Gestore del File SystemFile System
Interfaccia utenteInterfaccia utente L’insieme dei moduli per la gestione della CPU e della memoria centrale è il kernelkernel
8
Ancora sul sistema operativoAncora sul sistema operativo
Si ha a che fare con file, directory, etc., e non ci si deve preoccupare di come i dati sono memorizzati sul disco
EsempioEsempio: il filesystemfilesystem
Riassumendo: Il sistema operativo fornisce un ambiente per eseguire programmi in modo conveniente ed efficiente; funge infatti da…
AllocatoreAllocatore di risorsedi risorse — controlla, distribuisce ed alloca le risorse (in modo equo ed efficiente)Programma di controlloProgramma di controllo — controlla l’esecuzione dei programmi utente e le operazioni sui dispositivi di I/O
Windows & GUIWindows & GUI
Menu a discesa
Barra degli
strumenti
Icone
9
EsempioEsempio
• 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 driverSoftware: device driver
I driver di periferica (device driver, appunto) sonoprogrammi specializzati nella gestione di un particolarecomponente hardware.
E’ il sistema operativo a caricarli in memoria durante la procedura di avvio di un computer.
10
Software: Software: applicazioniapplicazioni
Sono tutti quei programmi che svolgono funzioni specifiche, e che vengono “lanciati” dall’interno dei sistemi operativi:
1. fogli di calcolo2. elaborazione testi3. fotoritocco, disegno, grafica 3D4. editing o riproduzione audio5. editing o riproduzione video6. “utilities” (compressione, antivirus, ecc.)
Elaboratore testiElaboratore testi
11
Foglio elettronicoFoglio elettronico
DatabaseDatabase
12
PresentazioniPresentazioni
Desktop Desktop PublishingPublishing
13
Agenda, Posta, Calendario, RubricaAgenda, Posta, Calendario, Rubrica
PROCEDURA DI AVVIO DI UN COMPUTERPROCEDURA 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.
14
ALGORITMIALGORITMI
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 postalecompilare il bollettino di conto corrente postaleeffettuare il pagamento
NON AMBIGUITANON AMBIGUITA’’ DI UN ALGORITMODI 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 postaleconsultare la tabella degli importi da pagarecompilare il bollettino di ccpassicurarsi di avere la cifra necessaria al pagamentoeffettuare 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.
15
Rappresentazione di un algoritmoRappresentazione di un algoritmoDIAGRAMMA A BLOCCHI 1/4 DIAGRAMMA A BLOCCHI 1/4
Il metodo dei diagrammi a blocchi consiste in una descrizione grafica; esso permette un visione immediata dell’intero procedimento e dell’ordine di esecuzione delle varie istruzioni
I diagrammi a blocchi sono formati da simboli di forma diversa, ciascuna con un proprio significato; all’interno di ogni simbolo e presente un breve testo sintetico. Linee orientate con frecce, che uniscono fra loro i vari simboli, indicano il flusso delle operazioni.
startendistruzioni I/O
elaborazionecondizione
condizionesì no
sottoprogramma
Assegnamento ed istruzioni aritmetico-logiche
A=5 A=A+1 A=5sì no
Istruzioni di I/O
leggi A scrivi A
DIAGRAMMA A BLOCCHI 2/4DIAGRAMMA A BLOCCHI 2/4
16
Strutture di controllo
CONDIZIONE A DUE VIE
condizionesì
blocco 1
no
blocco 2
DIAGRAMMA A BLOCCHI 3/4DIAGRAMMA A BLOCCHI 3/4
Strutture di controllo
ITERAZIONE: CICLO A CONDIZIONE INIZIALE
condizionesì
blocco istruzioni
no
viene valutata prima la condizione di ciclo e poi EVENTUALMENTE entra nel blocco istruzioni
continua a ciclare fintanto che la condizione è vera. Esce dal ciclo quando la condizione è falsa
DIAGRAMMA A BLOCCHI 4/4DIAGRAMMA A BLOCCHI 4/4
17
LA PSEUDOCODIFICALA PSEUDOCODIFICA
La pseudocodifica è la descrizione di un algoritmo ottenuta utilizzando termini e parole del linguaggio comune, ma applicando una serie di regole che permettono di organizzare un tipo di testo formalmente rigoroso e strettamente orientato alla stesura degli algoritmi.
La pseudocodifica utilizza delle regole per strutturare il testo:Le parole chiavi che aprono e chiudono il testo di un algoritmo sono
INIZIO e FINE. Altre parole chiavi sono A, ALLORA, ALTRIMENTI, CASO, DA, DI, ESEGUI, FINCHE’, MENTRE, PASSO, PER, RIPETI, SE.
Ogni istruzione è indicata con una frase del linguaggio corrente e può contenere un’espressione di tipo aritmetico o logico
Le istruzioni leggi(lista di variabili) e scrivi(variabili e costanti) vengono utilizzate per descrivere le operazione di immissione ed emissione dei dati
La richiesta all’utente per acquisire i dati necessari all’elaborazione può essere indicata con chiedi(lista dei dati che servono)
Le variabili, le costanti vengono indicate da parole in minuscolo dette identificatori
Strutture di controllo
CONDIZIONE A DUE VIE
se condizione{
/* blocco 1 */...
}altrimenti{
/* blocco 2 */...
}
LA PSEUDOCODIFICALA PSEUDOCODIFICA
Strutture di controllo
ITERAZIONE: CICLO A CONDIZIONE INIZIALE
finchè condizione{
/* blocco istruzioni */...
}
18
ESEMPIOESEMPIO
h
bA= b × h
Dati input
Base e altezza del rettangolo
Dati outputArea del rettangolo
Algoritmo rettangoloINIZIO
Chiedi(base, altezza)Leggi(base, altezza)Area ← base * altezzaScrivi area
FINE
ESEMPIOESEMPIO
h
bA= b × h
Dati input
Base e altezza del rettangolo
Dati outputArea del rettangolo
Inizio Inizio
Fine Fine
Chiedi base, altezzaChiedi base, altezza
Leggi base altezzaLeggi base altezza
Scrivi areaScrivi area
Area ←base * altezzaArea ←base * altezza
19
RAPPRESENTAZIONE DI UN ALGORITMORAPPRESENTAZIONE 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.
1. Prendi i valori da tastiera VAL1 e VAL2
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
inizio
INPUT:VAL1, VAL2
RESTO:=VAL1 MOD VAL2
seVAL1 < VAL2
scambia VAL1 e VAL2
Vero VAL1:=VAL2VAL2:=RESTO
RESTO:=VAL1 MOD VAL2
finchèRESTO<>0
OUTPUT:“MCD:” VAL2
fine
Vero
Falso
Falso
CENNI SUL M.C.DCENNI SUL M.C.D
In matematica il MCD (a,b) di due numeri interi a e b, che non siano entrambi uguali a zero è il numero più grande per il quale possono essere entrambi divisi.
Esempi: MCD (12, 18)=6 MCD (-4, 14)=2 MCD (5, 0)=5Algoritmo di Euclide dice che dati due numeri naturali val1 e val2 si controlla se val2 è zero, se val2 è zero allora val1 è il MCD. Se non lo è, controllo che val1 > val2 se non èverificata questa ipotesi, scambio val1 con val2 e viceversa, quindi divido val1/val2 e si assegna ad r il resto della divisione.Se r=0 allora val2 è il MCD altrimenti occorre assegnare val1=val2 e val2=resto e si ripete di nuovo la divisione fino a quando r=0
20
Esempi calcolo MCD (1/4)Esempi calcolo MCD (1/4)
1) MCD (12, 18)val1=12 e val2=18
val1>val2 ? No! Quindi scambio i due valori
val1=18 e val2=1218:12= 1 con resto = 6Resto è uguale a 0? No!!val1=12 e val2=6 val1>val2 ? Si! Quindi divido 12:6=2 con resto = 0Resto è uguale a 0? Si!! MCD = val2=6
Esempi calcolo MCD (2/4)Esempi calcolo MCD (2/4)
2) MCD (-4, 14)val1=4 e val2=14
val1>val2 ? No! Quindi scambio i due valori
val1=14 e val2=414:4= 3 con resto = 2Resto è uguale a 0? No!!val1=4 e val2=2 val1>val2 ? Si! Quindi divido 4:2=2 con resto = 0Resto è uguale a 0? Si!! MCD = val2=2
21
Esempi calcolo MCD (3/4)Esempi calcolo MCD (3/4)3) MCD (216, 117)val1=216 e val2=117
val1>val2 ? Sì! Quindi non scambio i due valorival1=216 e val2=117
216:117= 1 con resto = 99Resto è uguale a 0? No!!val1=117 e val2=99 val1>val2 ? Si! Quindi divido 117:99=1 con resto = 18Resto è uguale a 0? No!!val1=99 e val2=18val1>val2 ? Si! Quindi divido99:18=5 con resto = 9Resto è uguale a 0? No!!val1=18 e val2=9val1>val2 ? Si! Quindi divido18:9 = 2 con resto 0Resto è uguale a 0? Sì!!MCD = val2=9
Esempi calcolo MCD (4/4)Esempi calcolo MCD (4/4)
3) MCD (150, 123)val1=150 e val2=123
val1>val2 ? Sì! Quindi non scambio i due valorival1=150 e val2=123
150:123= 1 con resto = 27Resto è uguale a 0? No!!val1=123 e val2=27 val1>val2 ? Si! Quindi divido 123:27=4 con resto = 15Resto è uguale a 0? No!!val1=27 e val2=15val1>val2 ? Si! Quindi divido27:15=1 con resto = 12Resto è uguale a 0? No!!val1=15 e val2=12val1>val2 ? Si! Quindi divido15:12 = 1 con resto 3Resto è uguale a 0? No!!val1=12 e val2=3val1>val2 ? Si! Quindi divido12:3=4 con resto 0Resto è uguale a 0? Sì!!MCD = val2=4
22
LINGUAGGI DI BASSO LIVELLOLINGUAGGI 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 LIVELLOLINGUAGGI 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.
23
CALCOLO DEL MCD IN PASCALCALCOLO 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 dobegin
V1:=V2;V2:=RESTO;RESTO:=V1 mod V2
end;writeln(‘Il MCD è ‘,V2)
end.
Shareware & FreewareShareware & 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).
24
Licenze FreeLicenze Free
Free “as in beer”: gratis
Free “as in speech”: libero
Open Source non significa automaticamente software libero
Protezione & PrivacyProtezione & 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.