Agent and Object Technology Lab
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma
AOT AOT LAB LAB
Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica Fondamenti di Informatica
Software di base
Michele Tomaiuolo
AOT AOT
LAB LAB
Software di baseSoftware di baseSoftware di baseSoftware di baseCon software di base si intendono tre tipi di programma software:
Software per permettere l’esecuzione di programmi scritti in linguaggi ad alto livello
Software per gestione di tutte le componenti hardware e software di un calcolatore
Software per l’esecuzione delle principali operazioni richieste dagli utenti
AOT AOT
LAB LAB
Esecuzione dei programmiEsecuzione dei programmiEsecuzione dei programmiEsecuzione dei programmiL'esecuzione un programma scritto con un
linguaggio ad alto livello è preceduta dai seguenti passi:
1. Traduzione in linguaggio macchina
2. Collegamento con programmi di supporto (calcoli, comunicazione con periferiche, …)
3. Caricamento in memoria
AOT AOT
LAB LAB
Esecuzione dei programmiEsecuzione dei programmiEsecuzione dei programmiEsecuzione dei programmiEsistono due modi per eseguire i 3 passi menzionati:
In sequenza, attraverso i tre programmi detti:
• Compilatore
• Linker
• Loader
In sequenza per ogni istruzione del programma, attraverso un programma detto interprete
AOT AOT
LAB LAB
Traduzione in linguaggio macchinaTraduzione in linguaggio macchinaTraduzione in linguaggio macchinaTraduzione in linguaggio macchinaLa traduzione di un programma scritto in un
linguaggio ad alto livello viene suddivisa in 2 passi:
Analisi (lessicale, grammaticale, contestuale)
Trasformazione del programma sorgente in codice oggetto
Il codice oggetto così formato non è eseguibile:
Può ancora contenere dei simboli irrisolti corrispondente a riferimenti esterni a programmi di servizio (accesso
alle periferiche, calcoli matematici, ...)
Contiene indirizzi relativi
AOT AOT
LAB LAB
Linker e loaderLinker e loaderLinker e loaderLinker e loaderIl Linker serve per collegare diversi moduli oggetto
Sostituisce ai simboli irrisolti i riferimenti esterni
Il Loader serve per caricare in memoria un programma rilocabile
Nel caricamento vengono fissati tutti gli indirizzi relativi (variabili, salti, … )
Vengono caricati anche i programmi di supporto, se necessari
AOT AOT
LAB LAB
RilocazioneRilocazioneRilocazioneRilocazioneEsistono due tipi di rilocazione
Statica
Dinamica
Con la rilocazione statica, gli indirizzi logici sono trasformati in indirizzi assoluti
Con la rilocazione dinamica, gli indirizzi logici sono utilizzati dal programma in esecuzione
Il programma compilato deve gestire l’indirizzamento tramite un registro speciale chiamato registro base
Il registro base mantiene l’indirizzo assoluto della parte di memoria dove si trova il programma
AOT AOT
LAB LAB
Sistema operativoSistema operativoSistema operativoSistema operativoIl sistema operativo è quel software che:
Viene avviato automaticamente all'accensione della macchina
Fornisce le funzionalità indispensabili per poter
interagire con l'utente ed eseguire gli altri programmi
Agisce come intermediario tra l’utente e l’hardware di un computer
Compiti principali del sistema operativo sono:
Semplificare l’utilizzo del calcolatore all’utente
Fornire un ambiente per eseguire programmi in modo conveniente ed efficiente
AOT AOT
LAB LAB
Criteri di classificazioneCriteri di classificazioneCriteri di classificazioneCriteri di classificazioneFunzionalità
Sistemi a lotti (o batch)
Sistemi interattivi
Tecniche di gestione delle risorse
Mono-programmazione
Multi-programmazione
Multi-elaborazione
Tipo di accesso fornito agli utenti:
Mono-utente
Multi-utente
AOT AOT
LAB LAB
Uso di piUso di piùUso di piUso di piùùù sistemi operativisistemi operativisistemi operativisistemi operativiIn un computer possono essere presenti più sistemi operativi
Questi devono essere utilizzati singolarmente
Uso contemporaneo → conflitto nella gestione delle risorse della macchina
Possibilità di virtualizzazione
Per poter installare più sistemi operativi è necessario:
Suddividere l'hard disk in sezioni separate (partizioni)
Assegnare a ognuna un sistema operativo
Caricare il sistema operativo dalla partizione desiderata
AOT AOT
LAB LAB
Sistema operativoSistema operativoSistema operativoSistema operativoI programmi che costituiscono il sistema operativo possono essere:
Classificati rispetto alla loro funzionalità
Ordinati in base alla distanza dalla macchina fisica
AOT AOT
LAB LAB
Sistema operativoSistema operativoSistema operativoSistema operativoSoftware applicativo Interprete comandi Gestione dei file
Gestione delle periferiche Gestione della memoria Gestione dei processi Hardware
AOT AOT
LAB LAB
Funzioni del sistema operativoFunzioni del sistema operativoFunzioni del sistema operativoFunzioni del sistema operativoIl gestore dei processi (o nucleo) è responsabile
dell’esecuzione dei programmi da parte dell’unità di elaborazione
Il gestore della memoria ha la funzione di allocare la memoria e partizionarla tra i vari programmi
Il gestore delle periferiche è responsabile delle operazioni di ingresso/uscita che coinvolgono le periferiche
Il gestore dei file è responsabile della gestione dei file in memoria di massa
L’interprete comandi (o shell) consente all’utente di attivare i programmi
AOT AOT
LAB LAB
Gestione dei processiGestione dei processiGestione dei processiGestione dei processiIl sistema operativo ha la responsabilità di gestire l’esecuzione dei programmi
Un programma in esecuzione viene indicato con il nome di processo
Un processo durante la sua vita può essere in cinque stati:
• Nuovo (new)
• Attivo (running)
• In attesa (waiting)
• Pronto (ready)
• Terminato (terminated)
Il sistema operativo può permettere l’esecuzione contemporanea di più programmi (multi-tasking)
AOT AOT
LAB LAB
Gestione dei processiGestione dei processiGestione dei processiGestione dei processiIl sistema operativo è responsabile delle gestione dei processi:
Crea e cancella i processi
Decide a quale processo assegnare la CPU
Sospende e riattiva i processi
Fornisce meccanismi per:
• La sincronizzazione dei processi
• La comunicazione fra i processi
• La comunicazione con le periferiche
• La gestione dei deadlock
AOT AOT
LAB LAB
Gestione dei processiGestione dei processiGestione dei processiGestione dei processiCon CPU singola non c’è reale parallelismo
In ogni istante un solo processo è in esecuzione
Ciclicamente ad ogni processo viene assegnato un intervallo di tempo di esecuzione fissato (time-sharing)
Se il processo termina prima dello scadere dell’intervallo di tempo…
• Viene avviato un nuovo intervallo ed eseguito un altro processo
Se il processo non termina alla scadenza dell’intervallo o si blocca in attesa di una risorsa…
• Il processo viene sospeso, viene avviato un nuovo intervallo ed eseguito un altro processo
AOT AOT
LAB LAB
Vita di un processoVita di un processoVita di un processoVita di un processoattivo
pronto
In attesa Salva
stato
Ripristina stato
Fine Inizio
Terminato nuovo
In attesa di I/O
AOT AOT
LAB LAB
Gestione della memoriaGestione della memoriaGestione della memoriaGestione della memoriaIl sistema operativo deve poter gestire in modo efficiente il caso in cui lo spazio di memoria
occupato dai programmi in esecuzione è più grande della memoria primaria del calcolatore
Questo problema si può avere anche con un singolo programma in esecuzione
Questo è solo possibile se oltre alla memoria primaria viene utilizzata dal sistema operativo anche la memoria secondaria del calcolatore
AOT AOT
LAB LAB
Gerarchia di memoriaGerarchia di memoriaGerarchia di memoriaGerarchia di memoriaCache L2
Memoria Principale
Memoria Secondaria CPU CacheL1
Obiettivo: creare l’illusione di una memoria grande, economica e veloce
~ 1ns - 100KB
~ 10ns - 1GB
~ 10ms, 100GB
AOT AOT
LAB LAB
Gestione della memoria Gestione della memoria Gestione della memoria Gestione della memoriaIl funzionamento della memoria virtuale è il seguente:
La memoria è divisa in un insieme di pagine di uguale dimensione
Ad ogni programma in esecuzione viene assegnato un certo numero di pagine in memoria primaria
Quando l’istruzione da eseguire non è in memoria primaria (page fault)…
• Una pagina della memoria primaria viene spostata in memoria secondaria (se necessario)
• La pagina che la contiene l’istruzione da eseguire viene trasferita in memoria primaria
AOT AOT
LAB LAB
Gestione della memoriaGestione della memoriaGestione della memoriaGestione della memoriaIl meccanismo di gestione della gerarchia di memoria si dice memoria virtuale
La memoria virtuale:
Sfrutta efficacemente la gerarchia
Rende il programma indipendente dalle dimensioni della memoria della macchina
Libera il programmatore dalla gestione dello spazio di memoria fisico
AOT AOT
LAB LAB
Gestione della memoriaGestione della memoriaGestione della memoriaGestione della memoriaDue fattori che determinano l’efficienza del sistema operativo nella gestione di memoria virtuale sono:
La scelta delle pagine di ogni programma che inizialmente vengono inserite in memoria
• Principio di località
La scelta della pagina da rimuovere dalla memoria primaria
• Algoritmo First–In–First–Out (FIFO)
• Algoritmo Least–Recently–Used (LRU)
AOT AOT
LAB LAB
Gestione della memoriaGestione della memoriaGestione della memoriaGestione della memoria3: Tl = 6, Ta = 10 4: Tl = 3, Ta = 8 5: Tl = 5, Ta = 11 6: Tl = 5, Ta = 7 7: Tl = 6, Ta = 9 2: Tl = 5, Ta = 7
8: Tl = 2, Ta = 11 1: Tl = 5, Ta = 6
9: Tl = 5, Ta = 7
FIFO LRU
AOT AOT
LAB LAB
Gestione delle perifericheGestione delle perifericheGestione delle perifericheGestione delle perifericheIl sistema operativo deve permettere l’interazione tra i programmi in esecuzione sul calcolatore e le sue periferiche
In particolare, il sistema operativo:
Permette di mascherare le caratteristiche hardware delle periferiche
Fornisce delle procedure ad alto livello che realizzano operazioni di input e output delle diverse periferiche del calcolatore
AOT AOT
LAB LAB
Gestione delle perifericheGestione delle perifericheGestione delle perifericheGestione delle perifericheLa Gestione delle periferiche si basa su due elementi
Il BIOS
I driver
Il BIOS (Basic Input Output System) è uno strato di software (firmware) utilizzato per standardizzare
l'accesso ai diversi tipi di periferica
I driver sono dei programmi software che
permettono l’accesso ad una specifica periferica
AOT AOT
LAB LAB
BIOSBIOSBIOSBIOSIl BIOS svolge anche la funzione di avvio di un computer
Svolge alcuni compiti di diagnostica
Inizializza l’hardware
• Controlla la memoria
• Verifica quali dispositivi sono collegati al computer
• Segnala eventuali condizioni di errore
Provvede ad effettuare il caricamento della parte iniziale (boot sector) del sistema operativo
Consente di modificare il setup del computer
• Data e ora
• Quantità di memoria utilizzata
• Numero e tipo delle unità a disco
AOT AOT
LAB LAB
Gestione delle perifericheGestione delle perifericheGestione delle perifericheGestione delle perifericheIn genere le periferiche:
Elaborano dati ad una velocità normalmente molto
inferiore rispetto alla capacità di elaborazione della CPU
Inviano dati verso la CPU in modo saltuario e imprevedibile
Il sistema operativo deve quindi disporre di un meccanismo che
Permetta di gestire una periferica mentre la CPU compie altre attività
Senza che la CPU debba interrogare continuamente le periferiche per sapere se sono pronte a ricevere o
inviare dei dati (polling)
AOT AOT
LAB LAB
InterruzioneInterruzioneInterruzioneInterruzioneLe periferiche vengono gestite attraverso un meccanismo detto interruzione (interrupt)
Nel suo stato normale di elaborazione la CPU ignora ciò che avviene nelle periferiche
Nel momento in cui una periferica deve inviare o
ricevere dei dati viene attivata una linea del bus che arriva alla CPU che genera una interruzione
AOT AOT
LAB LAB
InterruzioneInterruzioneInterruzioneInterruzioneQuando si genera una interruzione:
Il processo in esecuzione viene sospeso
Il suo stato viene salvato in modo tale che l’elaborazione possa riprendere poi esattamente dal punto in cui era
stata interrotta
Il trasferimento dati da/verso la periferica viene eseguito
Il processo sospeso viene riattivato
AOT AOT
LAB LAB
Gestione dei fileGestione dei fileGestione dei fileGestione dei fileTra i compiti più importanti del sistema operativo vi è la gestione delle informazioni delle memorie di massa, organizzandole logicamente e facilitando le operazioni su di esse
In particolare, il sistema operativo:
Organizza le informazioni delle memorie di massa
attraverso una struttura gerarchica (file system) basata su file e directory
Fornisce operazioni di alto livello per la gestione di file e directory
Protegge i dati da accessi esterni
Garantisce la condivisione sicura dei dati
AOT AOT
LAB LAB
File systemFile systemFile systemFile systemIl file system permette all’utente di vedere la
memoria di massa come un unico contenitore di dati organizzati secondo una struttura ad albero
Gli elementi di tale albero sono:
Memorie di massa
Directory
File
AOT AOT
LAB LAB
File systemFile systemFile systemFile systemUn calcolatore può avere diverse memorie di
massa (ad esempio, tre hard disk, un floppy disk, un CD-RW e un DVD)
Ogni memoria di massa è la radice di un sotto albero del file system del calcolatore
In un sistema operativo Windows alle diverse memorie di massa sono associate delle lettera identificative (A, B:
floppy disk, C: hard disk, D: CD-ROM, etc.)
Le directory rappresentano i nodi intermedi dell’albero
I file sono i nodi terminali dell’albero del file system
AOT AOT
LAB LAB
File systemFile systemFile systemFile systemRoot
A: C: D:
f1 f2 d1 f1 d1
f2 f1
d1 f1 f1
AOT AOT
LAB LAB
FileFileFileFileUn file è l’unità elementare di memorizzazione dei dati in memoria di massa
Ogni volta che vogliamo scrivere qualcosa su disco…
Creiamo un file, oppure
Modifichiamo un file già esistente
Ogni volta che vogliamo leggere qualcosa da disco…
AOT AOT
LAB LAB
FileFileFileFileAd ogni file sono associati:
Un nome
Un percorso (pathname)
Un tipo
Una dimensione
Delle protezioni
Il nome del file può avere un’estensione indicante il tipo del file
Ad esempio, in un sistema operativo Windows:
documento.doc
eseguibile.exe
AOT AOT
LAB LAB
DirectoryDirectoryDirectoryDirectoryUna directory (cartella) è un contenitore logico che può contenere file ed altre directory
Una directory ha un nome che la contraddistingue dalle altre directory e dai file
Una directory non può contenere più file e/o directory con lo stesso nome
Directory differenti possono contenere file e/o directory con lo stesso nome
Lo scopo principale delle directory è di catalogare i file presenti nel dispositivo di memorizzazione
AOT AOT
LAB LAB
Operazioni su file e directoryOperazioni su file e directoryOperazioni su file e directoryOperazioni su file e directoryUn file e una directory possono essere:
Creati
Rinominati
Cancellati
Copiati
Spostati
Il contenuto di un file può essere:
Visualizzato
Modificato
Eseguito
AOT AOT
LAB LAB
Interprete di comandiInterprete di comandiInterprete di comandiInterprete di comandiL’interprete di comandi permette all’utente di eseguire programmi e funzioni del sistema operativo
1. Riceve il comando
2. Lo interpreta richiamando le funzioni opportune del sistema operativo
Esistono due modalità di interazione tra l’utente e il sistema operativo
Testuale
Grafica
AOT AOT
LAB LAB
Interprete di comandiInterprete di comandiInterprete di comandiInterprete di comandiAOT AOT
LAB LAB
Interprete di comandiInterprete di comandiInterprete di comandiInterprete di comandiUn sistema operativo multi-utente deve possedere un meccanismo per identificare gli utenti
La tecnica più usata è quella di attribuire a ciascun utente una login ed una password
Ad ogni utente
Può essere attribuito un costo per le risorse da lui usate
Si può restringere l’accesso al file system e alle risorse
È associato un proprio ambiente personalizzato
AOT AOT
LAB LAB
SoftwareSoftware applicativiSoftwareSoftware applicativiapplicativiapplicativiIl calcolatore è diventato lo strumento principale non solo per le normali operazioni di ufficio, ma anche per gran parte delle altre attività umane
Scrivere un documento
Gestire la contabilità
Controllare le macchine di una catena di montaggio
AOT AOT
LAB LAB
Classificazione delle applicazioniClassificazione delle applicazioniClassificazione delle applicazioniClassificazione delle applicazioniSoftware orizzontale
Software di utilizzo generale
Software verticale
Software per compiti diffuso in particolari settori
Applicazioni personalizzate
Software scritto ad hoc per una determinata azienda o cliente
AOT AOT
LAB LAB
Principali Principali Principali Principali softwaresoftwaresoftwaresoftware applicativi applicativi applicativi applicativiTra gli svariati tipi di software applicativi
“orizzontale” i più utilizzati comunemente sono
Programmi di videoscrittura (word processor)
Fogli elettronici
Programmi di presentazione
Programmi di grafica
Sistemi per la gestione dei database
Programmi gestionali
Navigazione e comunicazione
AOT AOT
LAB LAB
Programmi di videoscritturaProgrammi di videoscritturaProgrammi di videoscritturaProgrammi di videoscritturaUn programma di videoscrittura permette di
scrivere, modificare, formattare, salvare su file e stampare un documento
Rispetto alla macchina da scrivere ha molti vantaggi
Separazione tra la fase di stesura e di stampa
Composizione di documenti copiando e incollando parti di testo
Gli editor più avanzati permettono di formattare un documento (cioè di impaginare il testo, di usare
diversi tipi di caratteri, …) di includere immagini e
AOT AOT
LAB LAB
Fogli elettroniciFogli elettroniciFogli elettroniciFogli elettroniciUn programma per la gestione di fogli elettronici ha lo scopo di fornire all’utente strumenti semplici e potenti per l’analisi dei dati
Un foglio elettronico è costituito da una matrice bidimensionale
In ogni cella della matrice è possibile inserire:
Dei valori numerici e testuali
Delle formule le cui variabili sono riferimenti a celle del foglio elettronico o di altri fogli elettronici
I fogli elettronici più avanzati permettono di
costruire delle rappresentazioni grafiche dei valori nel foglio elettronico
AOT AOT
LAB LAB
Programmi di presentazioneProgrammi di presentazioneProgrammi di presentazioneProgrammi di presentazioneUn programma di presentazione permette di
organizzare e presentare in pubblico informazioni multimediali attraverso la creazione di un file di
presentazione
Un file di presentazione contiene un certo numero di pagine di presentazione (diapositive)
Ogni diapositiva può contenere: testo, immagini, grafici ed elementi multimediali (suoni, video)
Il contenuto di ogni diapositiva può essere presentato dinamicamente attraverso degli strumenti di animazione
AOT AOT
LAB LAB
Programmi di graficaProgrammi di graficaProgrammi di graficaProgrammi di graficaUn programma di grafica permette di creare disegni, presentazioni e modificare immagini
Utilizzano solitamente il mouse o strumenti simili (penna ottica, tavoletta grafica) per interagire con l’utente simulando il modo di disegnare su carta
Esistono due tipi principali di programmi di grafica:
I programmi di tipo “paint” permettono di lavorare a livello di singolo pixel; sono usati ad esempio per
ritoccare fotografie o disegnare immagini a mano libera
I programmi di tipo “draw” permettono di disegnare immagini come insiemi di linee, punti, cerchi, ellissi, poligoni (grafica vettoriale) e di effettuare rotazioni, ingrandimenti, cambiamenti di angolatura
AOT AOT
LAB LAB
Gestione di basi di datiGestione di basi di datiGestione di basi di datiGestione di basi di datiUn sistema per la gestione di basi di dati (DBMS) è in programma che permette la creazione e il
mantenimento di grosse quantità di dati strutturati
Un DBMS ha il compito di:
Memorizzare i dati
Aggiornare i dati garantendo la consistenza, la riservatezza e l’integrità
Fornire un accesso ai dati attraverso interrogazioni ad alto livello
Trovano il loro utilizzo in molti parti della gestione di un’azienda, dalla contabilità alla gestione del personale, fino alla gestione del magazzino
AOT AOT
LAB LAB
Programmi gestionaliProgrammi gestionaliProgrammi gestionaliProgrammi gestionaliUn programma gestionale ha lo scopo di aiutare a gestire e mantenere le informazione e a preparare i documenti necessari all’attività di un’azienda
In particolare, un programma gestionale dovrebbe aiutare nelle seguenti attività:
Contabilità
Personale
Inventario
Magazzino
Ordini
Preventivi e fatture