Agent and Object Technology Lab
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma
AOT AOT LAB LAB
Fondamenti di Informatica
Software di Base
Prof. Agostino Poggi
AOT AOT
LAB LAB Software di Base
Con 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 Programmi
L'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 Programmi
Esistono 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 Macchina
La 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 Loader
Il 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 Rilocazione
Esistono 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 Il Sistema Operativo
Il sistema operativo è quel software che:
Viene avviato automaticamente all'accensione della macchina
Consente di acquisire le funzionalità indispensabili per poter interagire con l'utente ed eseguire gli altri
programmi
Il sistema operativo 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 Classificazione
Funzionalità
Sistemi interattivi
Sistemi a lotti (o batch)
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 Diversi Sistemi Operativi
In un computer possono essere presenti più sistemi operativi
Questi sistemi operativi devono essere utilizzabili singolarmente
Un uso contemporaneo creerebbe un conflitto nella gestione delle risorse della macchina
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 Il Sistema Operativo
I programmi che costituiscono il sistema operativo sono:
Classificati rispetto alla loro funzionalità
Ordinati in base alla distanza dalla macchina
fisica
AOT AOT
LAB LAB Il Sistema Operativo
Software applicativo Interprete comandi Gestione dei file
Gestione delle periferiche Gestione della memoria Gestione dei processi Hardware
AOT AOT
LAB LAB Funzioni del Sistema Operativo
Il 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 Processi
Il 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 Processi
Il 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 Processi
L’esecuzione non è parallela, ma in ogni istante un solo programma è in esecuzione:
Ciclicamente ad ogni programma viene assegnato un intervallo di tempo di esecuzione fissato (time-sharing)
Se il programma termina prima dello scadere dell’intervallo di tempo:
• viene avviato un nuovo intervallo ed eseguito un altro programma
Se il programma non termina alla scadenza
dell’intervallo o si blocca in attesa di una risorsa:
• il programma viene sospeso, viene avviato un nuovo intervallo ed eseguito un altro programma
AOT AOT
LAB LAB Vita di un Processo
attivo
pronto
In attesa Salva
stato
Ripristina stato
Fine Interruzione Inizio
Terminato nuovo
AOT AOT
LAB LAB Gestione della Memoria
Il 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 Memoria
Cache
L2 Memoria
Principale
Memoria Secondaria CPU CacheL1
AOT AOT
LAB LAB Gestione della Memoria
Il 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 Memoria
Il 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
• La pagina che la contiene l’istruzione da eseguire viene trasferita in memoria primaria
AOT AOT
LAB LAB Gestione della Memoria
Due 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 Memoria
3: 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 10: Tl = 3, Ta = 9
FIFO LRU
AOT AOT
LAB LAB Gestione delle Periferiche
Il 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 Periferiche
La Gestione delle periferiche si basa su due elementi
Il BIOS
I driver
Il BIOS (Basic Input Output System) è uno strato di software utilizzato per standardizzare l'accesso ai diversi tipi di periferica
I driver sono delle schede hardware e dei
programmi software che permettono l’accesso ad
una specifica periferica
AOT AOT
LAB LAB BIOS
Il 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
• Velocità della tastiera
AOT AOT
LAB LAB Gestione delle Periferiche
In 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
AOT AOT
LAB LAB Interruzione
Le 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 Interruzione
Quando 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 File
Tra i compiti più importanti del sistema operativo vi è la gestione delle informazioni delle memorie di massa organizzandole logicamente e facilitando le operazione 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 System
Il 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 System
Un 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 System
Root
A: C: D:
f1 f2 d1 f1 d1
f2 f1
d1 f1 f1
AOT AOT
LAB LAB File
Un file è l’unità elementare di memorizzazione dei dati in memoria di massa
Ogni volta che vogliamo scrivere qualcosa in memoria
• Creiamo un file
• Modifichiamo un file già esistente
Ogni volta che vogliamo leggere qualcosa dalla memoria, leggiamo uno o più file
AOT AOT
LAB LAB File
Ad 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 Directory
Una 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 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 Directory
Un 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 Comandi
L’interprete di comandi permette all’utente di eseguire programmi e funzioni del sistemi operativi:
1. Riceve il comando
2. Lo interpreta richiamando le funzioni opportune del sistema operativo
Esistono due modalità di interazione tra l’utente e l’interprete di comandi
Testuale
Grafica
AOT AOT
LAB LAB Interprete di Comandi
AOT AOT
LAB LAB Interprete di Comandi
Un 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 Software Applicativo
Il 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
Esistono diversi tipi di software applicativo
Software 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 Software Applicativo
Tra 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
AOT AOT
LAB LAB Programmi di Videoscrittura
Un 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
disegni, di controllare l’ortografia, …
AOT AOT
LAB LAB Fogli Elettronici
Un 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 Presentazione
Un 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 Grafica
Un 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 Sistemi per la Gestione
di Basi di Dati
Un 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 Gestionali
Un 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