NOTA:
Questi sono appunti presi a lezione da alcuni studenti e
NON sono stati ancora corretti.
Essi rappresentano pertanto una traccia delle lezioni tenute
durante il corso ma NON devono essere considerati
affidabili.
Questi appunti rappresentano pertanto soltanto una
indicazione degli argomenti trattati.
a. giordano, 1 Dicembre 2012
INDICE
Introduzione: “Cenni storici sui calcolatori” pag. 2
• Il sistema operativo pag. 8
Approfondimento pag. 11
• CPU/ Microprocessori pag. 14
Approfondimento pag. 20
• Dalla rete telefonica a quella dati pag. 22
Esempi di reti pag. 23
• Audio e video nei calcolatori pag. 28
Audio pag. 28
Video pag. 29
• Internet: come funziona la rete pag. 32
Approfondimento pag. 39
• Crittografia pag. 46
• Calcolatori su rete Ethernet pag. 48
Approfondimento pag. 50
2
I primi calcolatori erano macchine di dimensioni notevoli che avevano come obiettivo quello di
risolvere calcoli complessi ( anni 80’).
Come è noto, un qualunque fenomeno fisico o naturale è descrivibile mdiante un’insieme di
formule matematiche ovvero in un MODELLO MATEMATICO di entità variabile e così facendo i
problemi possono essere univocamente descritti e trattati da chiunque possa avere conoscenze
matematiche.
Più il fenomeno è complesso o più lo si vuole descrivere in dettaglio e con minori approsimmazioni,
più diventa complicato il modello matematico e nasce quindi la necessità di disporre di uno
strumento in grado di trattare il modello stesso: il calcolatore.
Fino agli anni 80’ i componenti degli elaboratori erano “tridimensionali” perché vi era la necessità
di maneggiarli ( prenderli, montarli ecc..), con il passare del tempo transistor e resistenze vengono
stampati analogamente ad un processo fotografico: nascono i Circuiti Integrati “VLSI”(1974). Uno
degli ultimi calcolatori “tridimensionali” famosi e cioè costruiti con componentistica non VLSI è il
PDP11 della Società Digital. Verso il 1980 compare il primo personal computer.
Da questo momento i prezzi iniziano a calare in modo sempre più significativo e si entra nell’ottica
di utilizzare il computer per innumerevoli altri compiti per i quali, nel passato, non ne sarebbe stato
giustificato l’impiego.
Oggi i calcolatori sono praticamente presenti dappertutto.
Gli schemi di principio e di funzionamento di base di un calcolatore degli anni 80’ e di uno di oggi
sono praticamente gli stessi e possono essere rappresentati secondo la rappresentazione di von
Neumann mediante tre principali blocchi funzionali. 3
ARCHITETTURA DI VON NEUMANN
La CPU o
microprocessore è la La memoria è la
parte operativa. Essa CPU Memoria sede di dati e
è adibita al comando istruzioni.
e a far funzionare
tutto il resto.
Esempio: processore
(anni 80) 8080 ….
… PENTIUM (ieri) Il blocco I/O
Input / (ingresso, uscita)
Output consente al pc di
interagire con il
Modem mondo circostante.
Tastiera
Mouse
Schermo
Stampante
Hard disk ….
…
.
Bit e Byte
I computer sono in grado di determinare se in un collegamento elettrico fluisce corrente oppure no
ed è grazie a questa abilità che si è potuto creare un alfabeto interno mediante il quale la macchina
può trattare i dati provenienti dall’esterno.
Questo sistema di codifica è chiamato alfabeto binario e si basa su sequenze di zeri e uni logici
associati agli stimoli elettrici che chiameremo BIT ( BInary- digiT).
Il computer leggerà un (1) in presenza di corrente e uno (0) in caso contrario cioè in assenza.
In termini di Volt in gioco avremo:
per lo (0) = 0 Volt 4
per l’(1) = 3,6 Volt ( nell’8080 invece all’(1) corrispondevano 5 Volt)
Il bit è la più piccola unità di trasmissione dati; per avere qualcosa di più sostanzioso è necessario
parlare di Byte ossia un insieme di 8 bit.
Operazioni elementari nei calcolatori di una volta
Cella di Situazione iniziale:
8 bit memoria 16
Ho 2 celle di memoria ognuna contenente
8 bit.
La prima ha indirizzo 0000H mentre
l’ultima FFFFH.
La memoria riconosce 16 fili, gli Address
64kb bus, che trasmettono sequenze di zeri e uni.
per
il Il Data bus composto da 8 fili si occupa del
mod. collegamento tra la memoria e la CPU.
8080 Un ulteriore filo chiamato RW consente
alla memoria di conoscere il compito alla
quale deve sopperire sia esso lettura o
scrittura.
F F F F H esadecimale
4 bit 4 bit 4 bit 4 bit
16 bit
Supponiamo sia presente nel calcolatore un programma in grado di trasformare numeri.
All’accensione del pc la Cpu invia alla memoria l’ordine di leggere la prima cella di memoria dove
è collocato il codice operativo della prima istruzione da eseguire. 5
1° ISTRUZIONE:
3A LINGUAGGIO ASSEMBLER
3A = MOV A, 98 (consente di spostare
98 l’indirizzo successivo nel registro di A)
Nella CPU una locazione di memoria
corrisponde ad un REGISTRO. 1° istruzione
REG A =
98 Codice operativo
+
CPU dato
2° ISTRUZIONE:
3A 2B = MOV B, 13
98 Il comando svolge la funzione riportata in
calce per ottenere a livello di CPU questo
2B risultato:
2° istruzione
13 REG A REG B
98 13
CPU 6
3° ISTRUZIONE:
3A ADD A,B
98 È un’unica istruzione fatta di un solo byte che
permette di eseguire la somma e
2B ottenere il risultato in A.
13 REG A
3F AB
N.B. Si possono avere al massimo 256 informazioni diverse.
4° ISTRUZIONE:
4A MOV 1234, A
12 Il contenuto di A viene spostato nella
locazione di memoria con indirizzo 1234.
34 Quando viene dichiarata una variabile le si
associa un’allocazione di memoria.
Viene letta l’istruzione 4A ma per poter
essere completata è necessario ricavare
l’indirizzo dai due byte successivi; è per
questo che il risultato sarà collocato nella
cella 1234H.
AB 1234H
Operazioni 7
Shift (SHL) Sposta tutto di una posizione a destra o a sinistra. Equivale a moltiplicare per due.
Jump(JNZ) a seconda del valore in entrata, salta da una parte all’altra della memoria.
Chi fabbrica microprocessori deve creare un codice che soddisfi le varie esigenze a cui deve
sopperire.
Esistono due classi di microprocessori:
CISC (complex instruction set computer)
RISC (reduced instruction set computer)
La famiglia più usata è la CISC, ma l’ideale sarebbe un compromesso tra le due.
I coprocessori matematici sono circuiti integrati aventi una struttura tabellare multidimensionale in
cui entrano “n” variabili ed escono “m” risultati. Essi vengono principalmente utilizzati per fare
calcoli come somme e moltiplicazioni e consentono di ottenere il risultato in un unico passaggio. In
genere sono collegati alla CPU tramite un BUS poiché ad essi manca la funzione di passare le
informazioni in memoria.
La velocità del collegamento CPU-MEMORIA dipende dalle dimensioni dell’intero sistema.
Il tempo di accesso alla memoria è di 10-100 nano secondi.
Il problema più rilevante infatti, è quello dello spazio.
Elementi come la CPU o i microprocessori stessi, essendo circuiti integrati, devono mantenere
dimensioni molto ridotte. L’aumento di queste comporta un possibile incremento dei difetti
strutturali e quindi il relativo mal funzionamento dei vari componenti.
Dagli anni ‘80 in poi inizia lo studio strutture che ottimizzano il funzionamento degli accessori
come scheda video, scheda audio ecc, ma lo schema di base del calcolatore rimane invariato. 8
IL SISTEMA OPERATIVO
APPLICATIVI
SISTEMA OPERATIVO
BIOS
HARDWAREEE
Il sistema operativo è un software che gestisce direttamente l’hardware della macchina. Esso è
formato da applicativi (es word, campo minato) che consentono di comunicare direttamente con il
computer, e che sono studiati per un particolare sistema operativo (es word di windows su linux non
viaggia). Il BIOS invece è comune a tutti i sistemi operativi. 9
Facciamo un esempio: un evento è qualcosa di asincrono che non dipende dal programma.
Consideriamo l’evento “muovo il mouse”:
CPU MEM
INT Il collegamento INT ha un piedino che fa arrivare
alla CPU il segnale “zero”. Questo significa che è
I/O successo qualcosa. La Cpu quindi legge l’indirizzo
che arriva da I/O e lo manda in memoria dove c’è la
la routine per servire l’I/O.
mouse
Nella CPU sono presenti un set di registri:
Program Counter
Stack Pointer 0000H 00001
400
RET
Parametri di ritorno
FFFFH
SP
(stack pointer)
FFF…
400 10
Lo stack pointer è un indirizzo che continua a spostarsi in avanti e indietro tenendo conto di
dove deve tornare; consente di annidare le informazioni (funzionamento similare a quello
degli IF annidati) Svolgo l’operazione
Si verifica un evento
Salvo il lavoro
Svolgo l’operazione dettata dall’evento
Con Stack pointer torno al lavoro iniziale
Il primo S.O. si chiamava DOS (Dis Operative System 1985-1995), successivamente è nato
windows. Non esisteva il mouse, si usava sola la tastiera e i caratteri alfanumerici. Quando il
calcolatore veniva acceso, sul monitor appariva la lettera “ C:\>” che indicava l’hard disk, la “A”
era il floppy disk.
C:\DATA\> questa scritta indicava che ci si trovava all’interno della cartella DATA.
I comandi e le istruzioni erano poche e semplici ad esempio:
COPY PIPPO-PLUTO era l’istruzione per copiare
… .exe oppure … .com erano i nomi del programma e venivano usati per chiamarlo e usarlo.
Con DOS poteva girare un solo programma alla volta e quando ciò avveniva non si poteva fare
nessun’ altra operazione. I programmi venivano lanciati con un’istruzione di salto e se entravano in
un ciclo infinito non si poteva più arrestarli e diventava necessario chiudere il computer.
La memoria era poca quindi non esistevano schede grafiche.
Windows 3.11 che girava sotto Dos, si prendeva carico di lanciare i programmi successivi, ed era
dotato di interfaccia grafica. 11
Windows 95 comunicava direttamente con il BIOS; era un sistema operativo multitasking dove
potevano girare più task, ovvero più programmi, e multiutente, cioè permetteva a più utenti di
usufruire del programma. Questo fu il primo esempio di time sharing, cioè ogni task è alternato
velocemente agli altri, ad esempio per un certo intervallo di tempo gira windows, poi Internet poi un
altro programma. Questa modalità è utilizzata ancora oggi; il funzionamento avviene a scatti, ma
-6
l’utente non lo percepisce in quanto gli intervalli di tempo sono dell’ordine di 10 secondi. Il
software gestisce la divisione dei tempi e il sistema operativo lo scheduler, tramite una tabella nella
quale si tiene conto di tutti i programmi che devono girare, l’interapp interrompe un programma in
esecuzione, salva il contesto come una fotografia degli indirizzi e del contenuto della CPU, e parte
il programma successivo. Questo appena descritto, è uno dei compiti principali del sistema
operativo multitasking, che permette di risparmiare tempo in quanto la CPU è molto più rapida
rispetto a tutto il resto.
Con la barra degli strumenti del desktop è possibile accedere alla finestra dei processi del task
manager, dove sono elencati tutti i programmi che stanno girando in modo alternato e che hanno
definita una parte di memoria, parti di codice eseguito ognuno nel proprio contesto.
Socket è una routine che permette ai programmi di dialogare tra di loro.
I Thread sono sottoprocessi che condividono la stessa parte di memoria, ad esempio con Visual
Basic è possibile creare due finestre tali per cui quello che scrivo su una appare anche nell’altra. I
thread vengono generati da un processo e muoiono con esso. La gestione dei Thread avviene con un
meccanismo simile a un semaforo, e può essere:
cooperativa: si gestiscono tra di loro
preventiva: stabilita dall’utente a priori
APPROFONDIMENTO
In informatica, un sistema operativo (abbreviato in SO, o all'inglese OS, operating system) è il
programma responsabile del diretto controllo e gestione dell'hardware che costituisce un computer e
delle operazioni di base. Si occupa anche di gestire gli accessi degli utenti e dei processi che
vengono eseguiti. Il sistema operativo è l'interfaccia uomo-macchina
Il sistema operativo si compone di un sistema vero e proprio detto kernel e da una serie di
programmi di sistema. 12
Un generico sistema operativo moderno si compone di alcune parti ben definite: un gestore di file
system che si occupa di esaudire le richieste di accesso alle memorie di massa, un gestore di
memoria virtuale che alloca pagine di memoria a richiesta e si assicura che questa sia presente nella
memoria fisica al momento giusto, uno scheduler che assicura ai vari processi in esecuzione una
ben definita quantità di tempo di elaborazione, uno spooler che accumula i dati da stampare e li
stampa in successione, una interfaccia utente (shell o GUI) che permette agli esseri umani di
interagire con la macchina ed un kernel, fulcro del sistema, che gestisce il tutto. A seconda dei casi,
un particolare sistema operativo può avere tutti questi componenti o solo alcuni. Vediamo ora una
serie di sistemi operativi possibili, dal più semplice al più complesso.
Praticamente il solo kernel, con una minima interfaccia interattiva per impartire i comandi. Permette
di scrivere in memoria il programma da eseguire e di lanciarlo, non ha nessuna altra caratteristica. È
semplicissimo (per un computer), spesso i suoi comandi sono semplici chiamate dirette a subroutine
in linguaggio macchina, è stato anche il primo tipo di sistema operativo mai implementato su un
computer. Controlla i processi base del sistema
Il secondo passo verso una migliore gestione del computer si ha con lo sviluppo di una interfaccia
utente separata dal kernel, un interprete di comandi che funga anche da interfaccia utente, da shell.
Questa shell primitiva di solito funge anche da interprete per un linguaggio di programmazione: a
seconda delle scelte dei progettisti del software può essere un vero linguaggio oppure un più
semplice linguaggio di scripting con cui creare comandi batch.
Un computer diventa molto più utile se dotato di una memoria di massa: per gestirla serve un
gestore di file system, cioè un insieme di funzioni che permetta di organizzare i dati sulla superficie
dei mezzi di memorizzazione secondo una struttura ben precisa. I sistemi operativi che risiedono su
disco (inizialmente floppy poi hard disk e altre piu' evolute unita' di massa) capaci di gestire un file
system sono detti genericamente Disk Operating Systems, cioè DOS appunto. L'esemplare più
famoso è senz'altro il MS-DOS della Microsoft. Esiste anche una versione libera del dos,
denominata: FreeDOS.
Alcuni programmi non hanno sempre realmente bisogno della CPU: a volte, invece di eseguire
istruzioni stanno aspettando che arrivino dei dati da un file, o che l'utente prema un tasto alla
tastiera. Quindi si può, in linea di principio, usare questi tempi "morti" per far girare un altro
programma. Questa idea, sorta fin dai primi anni 50, si concretizzò nei sistemi operativi
multitasking, cioè dotati di uno scheduler che manda in esecuzione più processi (esecuzioni di
programmi) contemporaneamente, assegnando a turno la CPU ad ognuno e sospendendo
13
l'esecuzione dei programmi in attesa di un evento esterno (lettura sulla/dalla memoria di massa,
stampa, input utente ecc.) finché questo non si verifica.
Dovendo ospitare in memoria centrale più programmi nello stesso tempo, i sistemi multitask hanno
bisogno di più memoria rispetto a quelli monotask: perciò questo tipo di sistemi operativi è quasi
sempre dotato di un gestore di memoria virtuale.
Se un computer può far girare più programmi contemporaneamente, allora può anche accettare
comandi da più utenti contemporaneamente: in effetti dal multitasking alla multiutenza il passo è
molto breve tecnicamente, ma fa sorgere una serie di nuovi problemi dal punto di vista della
sicurezza del sistema: come distinguere i vari utenti tra loro, come accertarsi che nessun utente
possa causare danni agli altri o alla macchina che sta usando ecc. Al giorno d'oggi, i diversi sistemi
operativi, come ad esempio il nuovo Windows CE 6 [1], sono progettati in modo che questo tipo di
operazioni avvengano nel più breve tempo possibile, valorizzando, ad esempio, software come i
middleware, i driver, le interfaccia utente, e molti altri.
Questi problemi si risolvono assegnando un account univoco per ogni utente, assegnando un
proprietario ai file ed ai programmi e gestendo un sistema di permessi per l'accesso ad essi, e
prevedendo una gerarchia di utenti (cioè di account) per cui il sistema rifiuterà tutti i comandi
potenzialmente "pericolosi" e li accetterà soltanto se impartiti da un utente in cima alla gerarchia,
che è l'amministratore del sistema (generalmente l'account root nei sistemi Unix, Administrator
nei sistemi Windows).
Un sistema operativo real-time è un sistema operativo utilizzato tipicamente in un ambito
industriale o comunque dove sia necessario ottenere una risposta dal sistema in un tempo massimo
prefissato. I sistemi operativi realtime si possono dividere in due categorie : hard e soft, a seconda
dei tempi di risposta. 14
CPU / MICROPROCESSORI
La CPU è la parte più significativa del calcolatore.
Al suo interno ci sono svariate “scatolette” che svolgono le princip
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti Informatica
-
Appunti Informatica
-
Appunti Elementi di informatica e programmazione
-
Informatica – Appunti