INDICE 1.01 - Informatica, cosa significa 1.02 - L'hardware, CPU, MEMORIA (RAM, ROM, HDD) 1.03 - Il sistema di numerazione binario 1.04 - La logica binaria 1.05 - L’aritmetica binaria 1.06 - Sistema Operativo 1.07 - 1.08 - 1.09 - 1.10 - Le reti 2.01 - SubnetMask: come funzionano e come si calcolano le sottoreti 2.02 - Indirizzo Broadcast 2.03 - Notazione /lunghezza del prefisso 2.04 - 2.05 - Ritorna all'indice 1.01 - Informatica, cosa significa Il termine Informatica nasce dalla fusione delle due parole, INFORMazione e autoMATICA. L'informatica si occupa di memorizzare, gestire ed elaborare informazioni (dati) attraverso un mezzo (hardware) automatico (il COMPUTER). Vediamo di analizzare due termini base dell'informatica: HARDWARE: rappresenta tutto quello che per noi è tangibile (possiamo toccare ...) ad esempio nel computer, il monitor, il case (la base), la tastiere, il mouse, gli hard disk esterni, le chiavette USB. SOFTWARE: sono i programmi e le applicazioni che usesiamo ogni giorno: ad esempio, Windows, Linux, iOS, (questi 3 software sono Sistemi Operativi diversi che vedremo dopo) Office, OpenOffice, Acrobat, Autocad, .... Il software più importante è il Sistema Operativo (SO d'ora in avanti). I SO hanno il compito di renderci la vita facile. Devono permetterci di ottenere un risultato con un click. Il più utilizzato (almeno in Italia) è Windows, ma anche Andreoid che troviamo sui cellulari è un SO. Ritorna all'indice 1.02 - L'hardware, CPU, MEMORIA (RAM, ROM, HDD) La CPU La CPU (Central Processor Unit) è il "cervello" del computer. Si divide in 2 parti: 1. CU (Control Unit) organizza e controlla i dispositivi e si impegna ad ordinare le istruzioni da eseguire 2. ALU (Arithmetic Logic Unit) che si occupa della parte di calcolo La velocita della CPU si misura in MHz (Mega Herz) La MEMORIA Le MEMORIA è un elemento ovviamente fondamentale, poichè devo avere un "posto" dove salvare i dati ed i risultati delle elaborazioni. Abbiamo la MEMORIA CENTRALE (RAM Random Access Memory) che è una memoria volatile, cioè memorizza le informazioni solo temporaneamente, quando spegnamo il computer le informazioni memorizzate nella RAM vengono cancellate. Poi c'è la MEMORIA SECONDARIA (HDD Hard Disk o Disco rigido) che è più lenta della RAM ma molto più capiente. Ha la capacità di memorizzare le informazioni anche quando spegnamo il computer. La ROM è una memoria non modificabile, si può solo leggere e viene usata dal BIOS (Basic Input-Output System) L'unità di misura delle memorie è il BYTE. Un byte equivale a 8 bit (che vedremo nel prossimo capitolo, la Logica Binaria). Quindi: 1KB (Kilo Byte) = 1.000 Byte 1MB (Mega Byte) = 1.000.000 Byte 1GB (Giga Byte) = 1.000.000.000 Byte 1TB (Tera Byte) = 1.000.000.000.000 Byte Ritorna all'indice 1.03 - Il sistema di numerazione binario Facciamo un'introduzione partendo da un esempio di "peso" dei numeri naturali. Nel sistema di numerazione decimale, il numero 7345, costituito da 4 cifre, è "pesato" nel modo seguente: Questo significa che la cifra 7 ha un peso 10 volte superiore a quello della cifra 3, che a sua volta ha un peso dieci volte superiore rispetto a quello della cifra 4, la quale ha un peso dieci volte superiore rispetto a quello della cifra 5. Quindi si può scrivere: 7 × 10^3 + 3 × 10^2 + 4 × 10^1 + 5 × 10^0 = 7×1000 + 3×100 + 4×10 + 5×1 = 7000 + 300 + 40 + 5 = 7345 PS: 10^2 sta per 10 alla 2 (10 elevato alla potenza di 2) In questo modo, si possono definire altri sistemi di numerazione, semplicemente cambiando la base di riferimento. Scegliendo come base il valore più piccolo possibile, cioè 2, si ottiene il sistema di numerazione binario, con base 8 si ha il sistema di numerazione ottale, con base 16 si ottiene il sistema di numerazione esadecimale, ... Vediamo un'esempio, con la struttura utilizzata per il decimale sopra, in binario (esaminiamo il numero binario 1101): 1×2^3 + 1×2^2 + 0×2^1 + 1×2^0 = 1×8 + 1×4 + 0×2 + 1×1 = 8 + 4 + 0 + 1 = 13 Quindi si può scrivere 1101 binario = 13 decimale Qui sotto la tabella di raffronto dei primi numeri decimali convertiti in binari:
DECIMALEformulaBINARIODECIMALEformulaBINARIO
00×2^4+0×2^3+0×2^2+0×2^1+0×2^0=
0×16+0×8+0×4+0×2+0×1=
0+0+0+0+0=0
00000110×2^4+1×2^3+0×2^2+1×2^1+1×2^0=
0×16+1×8+0×4+1×2+1×1=
0+8+0+2+1=11
01011
1000011201100
2000101301101
3000111401110
4001001501111
5001011610000
60×2^4+0×2^3+1×2^2+1×2^1+0×2^0=
0×16+0×8+1×4+1×2+0×1=
0+0+4+2+0=6
001101710001
7001111810010
801000191×2^4+0×2^3+0×2^2+1×2^1+1×2^0=
1×16+0×8+0×4+1×2+1×1=
16+0+0+2+1=19
10011
9010012010100
10010102110101
Per convertire la parte non intera di un numero decimale nel corrispondente valore binario, si può procedere con moltiplicazioni successive. Infatti, moltiplicando la parte non intera per la base del sistema di numerazione, si ottiene, come parte intera, la cifra più significativa della parte non intera. Ad esempio, il valore decimale 0,853 moltiplicato per la base (10) dà come risultato 8,53 ovvero 8 è la cifra più significativa della parte non intera. Moltiplicando la nuova parte non intera (0,53) nuovamente per la base si ottiene 5,3 che fornisce come parte intera la seconda cifra non intera 5. Procedendo ulteriormente con le moltiplicazioni si ottengono, una dopo l’atra, tutte le cifre della parte non intera. Lo stesso ragionamento può essere applicato con un’altra base. Quindi, per trovare il valore binario corrispondente al valore decimale 18,3125 si può operare come segue: si considera innanzi tutto la parte intera, 18, a cui si applica il procedimento descritto in precedenza ottenendo 18 [10] = 10010 [2] Poi si considera la sola parte non intera (18,3125 - 18 = 0,3125) e si applicano le moltiplicazioni successive appena descritte, con base 2:
OperazioneRisultatoParte interaParte non intera
0,3125 x 20,62500,625
0,625 x 21,2510,25
0,25 x 20,500,5
0,5 x 2110
Il meccanismo delle moltiplicazioni, può essere arrestato quando la parte non intera si è ridotta a 0. Quindi, cosiderando le cifre ottenute come parti intere dei risultati parziali, prese nell’ordine nel quale sono state ottenute con le operazioni, si può scrivere: 0,3125[10]= 0,0101[2] per cui: 18,3125[10]= 10010,0101[2] Infatti:
Pesi2^42^32^22^12^02^-12^-22^-32^-4
Cifre10010,0101
1×2^40×2^30×2^21×2^10×2^0,0×2^-11×2^-20×2^-31×2^-4
1×160×80×41×20×1,0×0,51×0,250×0,1251×0,0625
16+0+0+2+0+0,25+0+0,0625=18,3125
Ritorna all'indice 1.04 - La logica binaria Un computer è in grado di eseguire operazioni logiche utilizzando l'algebra di Boole. Tale algebra consiste di un insieme di regole per la valutazione della veridicità dei predicati. Un predicato è una condizione che può assumere soltanto due valori: VERO e FALSO, che nell’algebra di Boole sono associati rispettivamente ai simboli 1 (VERO) e 0 (FALSO). Un predicato può essere assimilato ad una frase. Ad esempio, se si considera il predicato "Mario mangia una mela", esso può risultare vero (1) o falso (0) dipendentemente dal fatto che Mario stia effettivamente mangiando una mela o meno. Un'altro esempio di predicato può essere "Luigi cammina per la strada". In genere i predicati con cui il sistema ed i programmi avranno a che fare, saranno del tipo "Il valore contenuto all’indirizzo di memoria 1034293 è 35" oppure "La somma dei valori contenuti agli indirizzi di memoria 2470234 e 2470238 è maggiore di 20". Le operazioni logiche di base sono tre: l'intersezione, l'unione e la negazione. Intersezione (AND) L’operazione di intersezione logica, indicata in genere con i simboli /\ è un'operazione binaria (ovvero ha due operandi) ed è equivalente alla congiunzione "e" nella valutazione della veridicità di una frase, tanto che viene denominata anche con il nome and. Quindi il predicato: A /\ B che rappresenta l’intersezione di due predicati A e B, risulterà vero soltanto quando lo saranno entrambi i predicati A e B. L’operazione di intersezione logica (and) è definita dalla seguente tavola di verità Unione (OR) L’operazione di unione logica, indicata in genere con i simboli \/ è un'operazione binaria (ovvero ha due operandi) ed è equivalente alla congiunzione "o" nella valutazione della veridicità di una frase, tanto che l’operazione viene denominata anche con il nome or. Quindi il predicato: A \/ B che rappresenta l’unione di due predicati A e B, risulterà vero quando lo sarà uno dei due predicati A o B. L’operazione di unione logica (or) è definita dalla seguente tavola di verità Negazione (NOT) L’operazione di negazione logica, indicata in genere con il simbolo _ (posto sopra il predicato considerato), è un’operazione unaria (ovvero ha un solo operando) ed è equivalente alla negazione "non" nella valutazione della veridicità di una frase, tanto che l’operazione viene denominata anche con il nome not. Quindi il predicato: _ A che rappresenta la negazione di un predicato A, risulterà vero quando sarà falso il predicato A e falso quando il predicato A sarà vero. L’operazione di negazione logica (not) è definita dalla seguente tavola di verità Ritorna all'indice 1.05 - L'aritmetica binaria L’aritmetica binaria ha essenzialmente le stesse regole dell’aritmetica decimale, con l’accortezza che la base di numerazione è 2, ovvero si ha un riporto ogni volta che si raggiunge (o si oltrepassa) il valore 2. Di seguto sono riportati alcuni esempi esplicativi di come possono essere effettuate le quattro operazioni aritmetiche di base (somma, sottrazione, moltiplicazione e divisione) in notazione binaria. Somma Si considerino i due numeri 56,375[10] = 111000,01[2] e 26,75[10] = 11010,11[2] e se ne faccia la somma Infatti, 0 + 0 = 0, 1 + 0 = 1 ma 1 + 1 = 10[2] (cioè 0 con riporto di 1) e 1 + 1 + 1 = 11[2] (cioè 1 con riporto di 1). Il fatto è che con una base così piccola (2 è la minima possibile) bisogna tener conto di un sacco di riporti. Sottrazione Si considerino i due numeri 56,375[10] = 111000,011[2] e 26,75[10] = 11010,11[2] e se ne faccia la sottrazione Infatti, 0 - 0 = 0, 1 - 0 = 1 ma 10[2] - 1 = 1 (cioè nel caso 0 - 1 si preleva un’unità dalla cifra immediatamente a sinistra e si considera 10[2] - 1, inoltre se l’unità viene prelevata da una cifra 0 essa preleva a sua volta un’unità da quella immediatamente a sinistra e tale cifra diviene 1, cioè il risultato di 10[2] - 1 e cede l’unità a quella a destra, come avviene nel caso decimale 100 - 3 = 97). Al solito, con una base così piccola si devono considerare un sacco di questi casi. Eventualmente si può effettuare la somma tra il primo numero ed il complemento a 2 del secondo (senza tener conto delle virgole), ovvero 111000,011[2] + 100101,010[2], e scartare dal risultato la cifra più significativa. Quindi, scartando la cifra più significativa si ottiene (scartando quindi anche lo zero in testa) 11101,101[2]. Moltiplicazione Si considerino i due numeri 56,375[10] = 111000,011[2] e 13,75[10] = 1101,11[2] e se ne faccia la moltiplicazione. Per semplificare l’operazione di moltiplicazione si può fare in modo di moltiplicare ognuno dei fattori per un apposito valore in maniera che entrambi i fattori risultino interi. In questo caso, per quanto riguarda la notazione decimale, il primo fattore può essere moltiplicato per 1000 = 10[3] ed il secondo per 100[10] = 10[2], per cui il risultato andrà diviso per 10[3+2] = 10[5] = 10000[10], cioè si dovrà spostare la virgola di 5 posizioni verso sinistra. Per la notazione binaria il primo fattore può essere moltiplicato per 2[3] = 8[10] ed il secondo per 2[2] = 4[10], per cui il risultato andrà diviso per 2[3+2] = 2[5] = 32[10], cioè si dovrà spostare la virgola di 5 posizioni verso sinistra. Come si può verificare 775,15625[10] = 1100000111,00101[2] Anche nel caso delle moltiplicazioni, che sostanzialmente sono una serie di somme, ritorna fuori il problema dei riporti. Divisione Si considerino i due numeri 56,375[10] = 111000,011[2] e 13,75[10] = 1101,11[2] e se ne faccia la divisione. Per semplificare l’operazione di divisione si può fare in modo di moltiplicare sia il dividendo che il divisore per uno specifico valore, in maniera tale che il divisore risulti un valore intero: il risultato ottenuto in questo modo è lo stesso di quello che si sarebbe ottenuto effettuando la divisione tra i valori desiderati. In questo caso, per quanto riguarda la notazione decimale, il dividendo ed il divisore possono essere moltiplicati per 100[10] = 10[2], mentre per quanto riguarda la notazione binaria, entrambi possono essere moltiplicati per 2[2] = 4[10]. Come si può verificare 4,1[10] ~ 100,000110011[2], infatti 4,1[10] = 100,00011[2], cioè la sequenza 0011 si ripete indefinitamente (si tratta di un valore periodico, il cui periodo è appunto 0011). Ritorna all'indice 1.06 - Il Sistema Operativo Il sistema operativo è un insieme di programmi che svolge i seguenti compiti: - fa lavorare in modo corretto ed efficiente i vari componenti del computer; - rende semplici e comprensibili all’utente le varie operazioni svolte dal computer per consentirgli diinteragire con esso. Più in dettaglio il SO deve: - Gestire la CPU consentendole di eseguire i vari programmi nel modo corretto. - Gestire la memoria centrale (RAM) distribuendola nel modo migliore tra i programmi in esecuzione; in più gestisce la cosiddetta "memoria virtuale" - Gestire la memorizzazione dei dati sulle memorie di massa organizzandoli in file e directory (cartelle)e consentendone un facile e veloce accesso. Ogni sistema operativo ha un proprio modo di organizzare i dati sulle memorie di massa; pertanto è necessario che chiavette e hard disk rispecchino tale organizzazione per poter essere usati. Questo è il motivo per cui bisogna formattare tali dispositivi. - Gestire le periferiche di input/output (tastiera, mouse, video, stampante, ecc.). - Infine ha il compito di realizzare un interfaccia tra l’hardware, i programmi e l’utente, consentendogli un uso facile e sicuro di tutto il sistema SO ad interfaccia utente di tipo grafico (GUI - Graphic User Interface) Sono SO che usano una interfaccia utente in cui i comandi e i programmi sono rappresentati da immagini. Gli elementi caratteristici di questa interfaccia sono: - la finestra (window): può essere immaginata come uno "schermo nello schermo"; ogni programma ha una sua finestra attraverso la quale visualizza i dati di output; pertanto si possono avere più programmiattivi contemporaneamente, ognuno con la sua finestra sullo schermo; - il cursore o puntatore: di solito indicato con una freccia, serve a posizionarsi sui vari elementi delloschermo per selezionarli e attivarli; il puntatore viene mosso attraverso uno dei dispositivi di puntamento visti in precedenza; - l’icona: è la singola immagine associata ad un elemento dell’interfaccia (comando o programma). Questo tipo di interfaccia ha il vantaggio di essere molto intuitiva e quindi semplice da usare anche per gli utenti meno esperti (è più facile associare un’immagine ad una azione che ricordare il comando che consente di eseguirla). In più i programmi che usano l’interfaccia grafica, in genere associano gli stessi simboli agli stessi comandi; è quindi più facile, per chi ha già usato un programma del genere, imparare a usarne uno nuovo. Per contro è molto più complessa da realizzare e richiede computer molto più veloci. Ritorna all'indice 2.01 - SubnetMask: come funzionano e come si calcolano le sottoreti Vedi anche articolo in KB Subnet mask Subnet Mask o "Maschera di Sottorete", erroneamente chiamata "indirizzo di subnet", è necessaria al computer che deve comunicare con un altro indirizzo IP per sapere se deve instradare i pacchetti verso il gateway della sua rete locale oppure usare l'indirizzo di rete locale del destinatario (ethernet, tokenring o quant'altro). Il gateway (dall'inglese, portone, passaggio) è un dispositivo di rete che opera al livello di rete e superiori del modello ISO/OSI. Il suo scopo principale è quello di veicolare i pacchetti di rete all'esterno della rete locale (LAN). Da notare che gateway è un termine generico che indica il servizio di inoltro dei pacchetti verso l'esterno; il dispositivo hardware che porterà a termine questo compito è tipicamente un router. Nelle reti più semplici è presente un solo gateway che inoltra tutto il traffico diretto all'esterno verso la rete internet. In reti più complesse in cui sono presenti parecchie subnet, ognuna di queste fa riferimento ad un gateway che si occuperà di instradare il traffico dati verso le altre sottoreti o a rimbalzarlo ad altri gateway. Spesso i gateway non si limitano a fornire la funzionalità di base di routing ma integrano altri servizi come proxy DNS, firewall, NAT, etc Due o più computer per capire se operano sulla stessa rete TCP/IP usano la maschera di sottorete (comunemente chiamata Subnet Mask) per distinguere nell'indirizzo IP l'ID di rete e l'ID dell'host. La Subnet Mask blocca una parte dell'indirizzo IP in modo che il TCP/IP possa distinguere l'ID di rete dall'ID dell'host. Per comprendere meglio come la subnet mask blocchi la parte dell'indirizzo IP relativo all'ID di rete è necessario convertire i valori decimali dell'indirizzo IP e della Subnet Mask in binario Quindi in binario si ottiene: Eseguendo l'AND logico BIT per BIT fra l'indirizzo IP e la Subnet Mask si ottiene la separazione della parte dell'indirizzo IP che identifica l'ID della rete e dalla parte che identifica l'ID dell'host. Avremo: Come si può notare dalla figura sopra riportata, la parte di indirizzo IP interessata dai BIT settati ad 1 della Subnet Mask rimane invariata, mentre i BIT interessati dai BIT settati a 0 assume anch'esso il valore 0. Quindi ne viene fuori che la parte che rimane inalterata è l'ID della rete, mentre la parte che assume il valore 0 è la parte destinata all'Host. Nel caso sopra citato rimangono liberi per gli Host gli ultimi 8 bit dell'indirizzo di IP. Per calcolare il numero di Host che possono far parte della rete si esegue un semplice calcolo: Numero Host = 2^N – 2 Dove il primo 2 sta ad indicare il numero di possibili valori che può assumere il bit (0 o 1), N sta ad indicare il numero di bit destinati agli Host (8 nel nostro caso). Da questo numero bisogna sottrarre gli indirizzi estremi della nostra rete, in quanto non utilizzabili come indirizzi di Host (0 e 255 nel nostro caso). Vieni fuori quindi che nella rete sopra descritta possiamo utilizzare per gli Host gli indirizzi IP da 192.168.1.1 a 192.168.1.254 Ritorna all'indice 2.02 - Indirizzo Broadcast Nelle reti di calcolatori, un IP Broadcast è un indirizzo IP che consente l'invio delle informazioni a tutti gli host sulla stessa sottorete invece che ad un singolo destinatario. L'indirizzo broadcast si ricava calcolando l'OR logico tra l'indirizzo IP e il complemento bit-a-bit della subnet mask. Specchietto per determinare rapidamente la parte finale di una maschera di rete secondo la notazione decimale puntata. Ritorna all'indice 2.03 - Notazione /lunghezza del prefisso Esiste un altro modo di indicare Indirizzo IP e Subnet Mask, ed è il seguente: Come si nota dalla figura sopra riportata viene indicato oltre l'Indirizzo IP il numero di bit settati ad 1 della Subnet Mask, quindi scrivere /24 equivale ad indicare una Subnet Mask uguale a 11111111.11111111.11111111.00000000 che in decimale equivale a 255.255.255.0. Vediamo un esempio del metodo Chumley che si può applicare per subnets >/24 Consideriamo l’indirizzo: 192.168.4.18/29 /29 è proprio il numero di bits usati per la subnet mask. In tal caso la subnet mask sarà: 255.255.255.248. Effettuiamo il seguente calcolo: 256-248 = 8 Network Address (18 preso dall’indirizzo specificato) integer(18/8) = 2*8 = 16 -> 192.168.4.16 Broadcast Address (18 preso dall’indirizzo specificato) integer(18/8) = (2+1)*8–1 = 23 -> 192.168.4.23 Con il prefisso /29 si hanno 5 bit per le subnets e 3 bit per gli indirizzi IP e quindi il numero delle subnet è 32 (2^5) ed il numero degli indirizzi IP possibili è 8 (2^3). Nella form sotto sono elencate le 32 subnet possibile ed in ogni riga gli 8 IP disponibili (evidenziata in blu quella dell'esempio sopra):