Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Informatica, sbobinature su architettura e codifica 2018/2019, Appunti di Elementi di Informatica

Architettura e codifica dell'informazione, lezioni sbobinate della professoressa Pergola.

Tipologia: Appunti

2018/2019

Caricato il 02/04/2019

arianna_donati
arianna_donati 🇮🇹

4.1

(15)

16 documenti

1 / 23

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica, sbobinature.
Lezione 1, 7/03.
Codica dell’informazione:
L’informatica è soprattutto un modo di pensare molto razionale ed attento al
dettaglio, questi due aggettivi devono comunque essere propri del mestiere
dello psicologo, niente va lasciato al caso.
Il termine informatica è composto da: informazione + automatica, dove
l’informazione è data dai dati + istruzioni, cioè trattamento o elaborazione
automatici dell’informazione. Cioè l’informazione viene trattata da una
macchina dalla quale viene poi elaborata.
Dunque: elaborazione automatica dell’informazione.
Che cos’è l’informazione quando viene calata all’interno di un
disposizione digitale?
Cosa signico automatico?
Elaborazione informatica.
Cos’è l’informazione?
Codice: l’informazione del mondo reale viene rappresentata in modo numerico,
il modo viene deciso a priori per rappresentare l’informazione nelle macchine. Il
dato da solo quindi non ha alcun signicato, è la codica la cosa importante.
Essendo immersi nel mondo siamo circondati da informazioni, ognuna delle
quali ha una propria semantica: per la macchina la semantica non ha
importanza, lei si vede arrivare dei codici che sono di tipo numerico.
Di cosa si nutre la macchina? Di corrente: presenza o assenza di corrente.
L’unico linguaggio col quale possiamo esprimerci per farci capire dalla
macchina si basa sull’alfabeto binario: c’è o non c’è corrente? C’è o non c’è
campo magnetico? Si/No ecc…
Comunque due stati tra loro distinti.
Perché ho bisogno di rappresentare un’informazione all’interno della macchina?
Perché una macchina, se è vero che dal punto di vista astratto e logico non è
altro che un dispositivo che serve per eseguire velocemente delle istruzioni
molto semplici messe una di seguito all’altro, in modo da risolvermi i problemi:
input, elaborazione da parte della macchina = output, cioè la risoluzione dei
miei problemi. Da un punto di vista sico la macchina è composta di una serie
di componenti elettroniche che percepiscono solo ed esclusivamente due
condizioni: 0,1 e sono due situazioni distinguibili tra loro ed opposte. Perché
due? Perché le macchine di oggi sono costituite da milioni di transistor,
integrati in una placchetta di silicio. Per cui il processore, cioè il cervello della
macchina, è fatto sostanzialmente di milioni di interruttori, cos’è un
interruttore? Il transistor è un interruttore azionato elettricamente con un
voltaggio applicato al transistor stesso, da qui i due stati: presenza di voltaggio,
assenza di voltaggio (aperto non c’è luce, chiuso c’è luce), signica che una
qualsiasi informazione se la voglio presente all’interno della macchina devo
esprimerla come sequenze di 0 e 1 (aperto e chiuso), per forza.
Da un punto di vista logico lo 0 e l’1 prendono il nome di bit. Un bit si può
rappresentare come un quadratino di un foglio, che può contenere solo due tipi
di informazioni: o 0 o 1.
Cosa signica bit?
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Anteprima parziale del testo

Scarica Informatica, sbobinature su architettura e codifica 2018/2019 e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Informatica, sbobinature. Lezione 1, 7/03. Codifica dell’informazione:

L’informatica è soprattutto un modo di pensare molto razionale ed attento al dettaglio, questi due aggettivi devono comunque essere propri del mestiere dello psicologo, niente va lasciato al caso. Il termine informatica è composto da: informazione + automatica, dove l’informazione è data dai dati + istruzioni, cioè trattamento o elaborazione automatici dell’informazione. Cioè l’informazione viene trattata da una macchina dalla quale viene poi elaborata. Dunque: elaborazione automatica dell’informazione.

  • Che cos’è l’informazione quando viene calata all’interno di un disposizione digitale?
  • Cosa significo automatico?
  • Elaborazione informatica.

Cos’è l’informazione? Codice: l’informazione del mondo reale viene rappresentata in modo numerico, il modo viene deciso a priori per rappresentare l’informazione nelle macchine. Il dato da solo quindi non ha alcun significato, è la codifica la cosa importante. Essendo immersi nel mondo siamo circondati da informazioni, ognuna delle quali ha una propria semantica: per la macchina la semantica non ha importanza, lei si vede arrivare dei codici che sono di tipo numerico. Di cosa si nutre la macchina? Di corrente: presenza o assenza di corrente. L’unico linguaggio col quale possiamo esprimerci per farci capire dalla macchina si basa sull’alfabeto binario: c’è o non c’è corrente? C’è o non c’è campo magnetico? Si/No ecc… Comunque due stati tra loro distinti.

Perché ho bisogno di rappresentare un’informazione all’interno della macchina? Perché una macchina, se è vero che dal punto di vista astratto e logico non è altro che un dispositivo che serve per eseguire velocemente delle istruzioni molto semplici messe una di seguito all’altro, in modo da risolvermi i problemi: input, elaborazione da parte della macchina = output, cioè la risoluzione dei miei problemi. Da un punto di vista fisico la macchina è composta di una serie di componenti elettroniche che percepiscono solo ed esclusivamente due condizioni: 0,1 e sono due situazioni distinguibili tra loro ed opposte. Perché due? Perché le macchine di oggi sono costituite da milioni di transistor, integrati in una placchetta di silicio. Per cui il processore, cioè il cervello della macchina, è fatto sostanzialmente di milioni di interruttori, cos’è un interruttore? Il transistor è un interruttore azionato elettricamente con un voltaggio applicato al transistor stesso, da qui i due stati: presenza di voltaggio, assenza di voltaggio (aperto non c’è luce, chiuso c’è luce), significa che una qualsiasi informazione se la voglio presente all’interno della macchina devo esprimerla come sequenze di 0 e 1 (aperto e chiuso), per forza. Da un punto di vista logico lo 0 e l’1 prendono il nome di bit. Un bit si può rappresentare come un quadratino di un foglio, che può contenere solo due tipi di informazioni: o 0 o 1. Cosa significa bit?

  • BIT: binary + digit → l’unico modo per riuscire a dialogare con una macchina è esprimersi in qualche modo nella sua lingua, che si basa su di un alfabeto composto di due simboli: 0 e 1, i due stati dei circuiti elettronici.
  • BYTE: è un raggruppamento di 8 bit. Perché si passa dal bit ai multipli? Perché sul bit ci possono stare solo due informazioni, 0 e 1. Data la grande varietà di informazioni che sono oggi presenti, si raggruppano più bit per riuscire ad avere più informazioni sulla superficie. In 1 bit ci stanno due informazioni diverse tra loro, in 2 bit? 4 informazioni diverse. In 3 bit? 2 alla terza informazioni. Quindi quante informazioni posso codificare su di 1 Byte? 8 bit dunque 2 8 , 256 informazioni diverse tra loro ma non sono tante, dunque per aumentare la quantità di informazioni esprimibile è necessario ricorrere ad ulteriori multipli: Mega, Tera ecc… ovviamente si sta andando avanti: da Kilo a mega, a tera, e via dicendo… 1 Kilo: 10 alla terza; 1 Mega: 10 alla sesta; 1 Giga: 10 alla nona; 1 Tera: 10 alla dodicesima; ecc ecc… a multipli di tre. Nell’informatica c’è un problema: i costruttori dei dispositivi digitali non adottano tutti lo stesso sistema per esprimere le caratteristiche dei dispositivi: Standard IEC, Sistema di misurazione internazionale.
  • sistema di misurazione internazionale, SI: va su potenze di 10;
  • Standard IEC: più usato, va in sulle potenze di 2, dunque il Kilo: (2 10 ) 1 ; 1 Mega (2 10 ) 2 ; 1 Giga: (2 10 ) 3 …. Memoria: ha come unità di misura della capacità i Byte ed i suoi multipli, può essere espressa nelle due modalità e c’è una certa differenza nella capacità di immagazzinamento delle informazioni. Una qualsiasi informazione, dotata della propria semantica nel mondo reale, deve essere rappresentata in qualche modo su di un qualche dispositivo, il passaggio da informazione nel mondo alla sua rappresentazione sul supporto fisico prende il nome di codifica.

Per esempio: rappresentazione del numero 10. 1 0 → nel sistema di numerazione di base dieci posizionale, abbiamo deciso che la codifica del numero dieci è scritta come 1 0. In realtà però potrebbe essere scritto in qualsiasi modo perché basta mettersi d’accordo e decidere come scriverlo e rappresentarlo ma nel momento in cui il mio supporto non è più cartaceo ma digitale, cioè basato su digit, lo devo in qualche modo rappresentare con dei simboli che sono in grado di stare su di un dispositivo BITSTABILE, dunque su di un dispositivo digitale. NB: BITSTABILE, non una contraddizione col digitale. Significa che può assumere solo due stati diversi tra loro (0/1; V/F ecc…). Il numero dieci se lo voglio rappresentare su di un foglio lo posso scrivere come meglio credo, quando lo rappresento invece su di un supporto digitale devo utilizzare delle sequenze di bit, dunque sequenze di 0 e 1. Il passaggio inverso, è la decodifica.

Ascii ad Ascii esteso doveva essere in grado di poter utilizzare tutta la codifica precedente, dunque doveva essere compatibile. Questo bit in più dove è collocato? All’inizio della striscia di bit, ed è uno 0 in più. Oggi siamo alla codifica UNICODE, è un organismo internazionale che lavora in continuità per codificare i caratteri, attualmente a livello di caratteri standard viene effettuata su 16 bit, ed ho 2^16 codifiche possibili dei caratteri che possono andare a finire nella macchina. Il lavoro di unicode finirà mai? Gli alfabeti contengono chiaramente una serie finita di caratteri ma noi con la nostra lingua, siamo capaci di creare nuove parole ogni giorno per qualificare nuovi oggetti o usanze, questo è il problema della codifica alfanumerica.

Codifica parola “Cane”: nell’ascii, prendo la codifica della C, ci metto lo 0 davanti e così via dicendo… formo la parola cane stando attenta alle maiuscole, minuscole e in generale agli spazi. Per la decodifica NB: multipli di 8 (ascii estesa), allora parto.

Numeri : per i numeri la cosa è meno facile perché non ho tabelle per la corrispondenza simboli-bit, dunque: dato un numero decimale cioè intero senza virgola, è possibile passare ad un numero binario tramite una serie di divisioni successive per 2. Esempio: 5:2= 2 quoziente 1 resto, è il bit meno significativo della codifica binaria. 10:2= 5:2= 2:2=1:2=0:2= 0 0 1 0 1 0 Qual è quindi la codifica di 10? Il primo resto che io ottengo è il bit meno significativo, dunque è il primo numero che metto (lo 0 a destra): 01010 è 10 codificato in binario. Il numero 10 in quanti bit lo posso esprimere? 4, perché il primo bit è 0. Le macchine hanno uno spazio fisso per le codifiche, dunque ad esempio se in un dispositivo lo spazio lasciato alla codifica è 8 bit la codifica del numero 10 sarà preceduta da tanti 0 quanti sono gli spazi in più: 00001010. Codificare 18: 18:2= 9:2=4:2= 2:2=1:2= 0 devi andare avanti fino a quando non si ottiene un quoziente 0 1 0 0 1 pari a 0: 10010. Perché la codifica è così? Il nostro è un sistema di numerazione posizionale, il che significa che ogni cifra è da noi così interpretata: 1101 10 : quello più a destra è l’unità, 1x10 0 ; a sinistra le decine 0x10 1 ; a seguire le centinaia, 1x10 2 ; dopo le migliaia 1x10^3 quando noi leggiamo 1101, millecentouno. Siccome 1101 nella macchina non lo posso scrivere, devo utilizzare una semantica diversa per esprimere lo stesso concetto, dunque utilizzerò o 0 o 1. Dato che il sistema utilizzato dalla macchina non è in base 10 ma in base 2, dobbiamo tradurre tutto questo in binario: 1101 utilizzo C: cifra elevato alla sua posizione. 10 = 1x10 + 0x10 0 = C 3 x2^3 + C 2 x2^2 + C 1 x2^1 + C 0 x2 0 : 2 =?

Devo trovare il resto e il quoziente, quali sono? Per individuare il resto: l’ultima cifra non è più divisibile per 2, dunque è il resto, come normalmente accade nelle divisioni intere. Il quoziente invece è tutto il resto diviso 2, dunque dividendo il risultato sarà: C 3 x2 2 + C 2 x2 1 + C 1 x2 0 =? moltiplico il numero per la sua potenza, 4+2+0 = 6 101100: 0x2^0 + 0x2 1 + 1x2^2 +1x2^3 + 0x2^4 +1x2^5 = 32+8+4= 44. NB: per un numero vengono destinati 32 bit, 4 byte. Quanti numeri naturali posso codificare? 2 32 possibili informazioni diverse, quindi posso rappresentare da 0 a 2 32 - 1 unità, perché lo 0 equivale ad una informazione.

Lezione 8/03: Hadware e Software. Hardware: componenti circuitarie, fisiche, tutto quanto può essere tangibile. Software: l’esatto opposto, è l’insieme dei programmi che sono eseguiti dalla parte fisica. I software sono tipicamente dei file, lavorano su degli input che possono essere presenti o su un altro archivio o immessi al bisogno dall’utente. L’intersezione di queste due parole dà luogo a quello che prende nome di “firmware”.

  • Cos’è il Firmware? Circuiti all’interno dei quali sono presenti delle istruzioni o linee di codice.

Quando nascono i calcolatori? Intorno agli anni ’40, gli studi si sviluppano in tre luoghi diversi: America, Germania, Inghilterra. Sono gli anni della guerra ed in questo periodo erano presenti delle necessità stringenti tra cui avere la possibilità di fare dei calcoli balistici precisi, oltre a poter decriptare dei messaggi in codice scambiati tra alleati diversi. Alla fine nascono in Germania da studi sia accademici che militari, tutti i risultati ottenuti erano coperti da segreto militare, dunque noi oggi non ne sappiamo niente. L’altro posto in cui si studiavano i calcolatori è l’Inghilterra, di cui però sappiamo ben poco dal momento che appunto negli anni ’40 c’era la guerra e l’Inghilterra fu bombardata. Dunque la maggior parte delle informazioni sullo sviluppo dei calcolatori ci arriva dagli studi compiuti in America, dove il gruppo di studiosi che si occupava dell’argomento non prevedeva una componente militare, dunque quello che ci è arrivato è tutta l’opera degli studi compiuti da Von Neumann ed il suo gruppo. Il primo calcolatore vero e proprio è l’ENIAC, composto da 18 milla valvole, pesava 30 tonnellate ed occupava una superficie di 180 metri quadrati e la prima volta che venne accesse lasciò completamente al buio la cittadina accanto a dove era presente, in nemmeno 100 anni si sono fatti moltissimi passi avanti, ma l’idea centrale è sempre di Von Neumann. La sua idea nasceva dal fatto che in passato per eseguire programmi diversi era necessario intervenire a livello fisico sulla macchina, ora invece se noi vogliamo utilizzare due programmi contemporaneamente si fa semplicemente doppio click sul programma che vogliamo usare, senza dover fare cambiamenti fisici, questi programmi devono semplicemente risiedere all’interno di una memoria, la RAM. Questo modello prevede 5 componenti principali:

NB: USB: universal serial bus, la chiavetta usb è un po’ un abuso del termine in quanto usb è la porta, le chiavette sono memorie flash.

  • Bus di controllo: comandi, che partono dalla CU e vanno verso la memoria centrale.
  • Bus dati: dati codificati in binario.
  • Bus indirizzi: ci passano proprio gli indirizzi, che stanno ad indicare la riga di riferimento della RAM, ad ogni riga corrisponde un indirizzo. Esempio: se voglio far passare un’informazione dalla Ram la CU invia come ordine dal bus di controllo il comando “leggere”, e fa transitare l’informazione numerica per esempio, nel bus dati. Dunque a questo punto la Ram sa che deve leggere un dato numerico (in binario), ma dove? Allora transiterà nel bus degli indirizzi anche l’indirizzo della riga della Ram coinvolta.

Le operazioni all’interno di una macchina non avvengono in modo continuo. Hertz: 1/sec: unità di misura della frequenza. Cosa succede nel processore? La Alu ha dei registri dai quali prende i dati, che vanno a finire in dei circuiti per fare delle operazioni, il risultato va nuovamente a finire in altri registri. Dal momento che questi sono circuiti, dunque passano correnti, il dato deve avere il tempo fisicamente per poter attraversare tutti i circuiti. Questo tempo viene dato dal periodo di clock: è un dispositivo che emette dei segnali, onde, l’unità di tempo che serve a questi bit per attraversare tutti i circuiti della alu è data dal clock appunto, perché fisicamente i voltaggi devono attraversare una miriade di fili e voltaggi. Se l’onda è più serrata, significa che le operazioni vengono eseguite in un tempo più piccolo, ovviamente la frequenza di questo segnale sarà (frequenza: quante volte il voltaggio in un’onda cambia da 0 a 1 e viceversa) piccolina, perché all’interno di una data unità di tempo fa meno cambiamenti. Ecco perché dei processori con una frequenza di clock maggiore eseguono più velocemente le operazioni. Quindi possiamo dire che il clock rappresenta la frequenza dell’impulso di sincronizzazione, determina la velocità con cui le varie fasi delle operazioni di controllo ed esecuzione effettuate dalla cpu sono svolte. OVERCLOCKING: aumentare la frequenza di clock del processore. Il clock non è l’unico parametro da tenere in considerazione quando si compra un computer (oggi gira in giga-hertz), bisogna guardare infatti anche le dimensioni dei registri del processore e dei bus (parallelismo del processore).

Windows 32 o windows 64, indicano la dimensione dei registri del processore, significa che se il mio processore ha dei registri che contengono delle istruzioni a 64 bit, dalla Ram prelevo le istruzioni e le metto in un registro a 64 bit, se invece il mio processore ha un registro a 32, ci vuole il doppio del tempo. Un software con windows 32 funziona su di un computer a 64? Certo, il contrario è difficilmente realizzabile. Se il processore ha registri a 64 bit, se ha un bus dati a 32 bit per riempire dalle informazioni centrali deve fare due giri per leggere i dati, dunque occhio anche ai dati del bus. LE MEMORIE: vengono classificate secondo:

  • Il loro scopo: ne hanno due principali il primo è quello di essere di supporto alla Cpu e il secondo è quello di memorizzare grandi quantità di dati.

La prima è la memoria centrale, RAM, che contiene istruzioni e dati sui quali le istruzioni devono operare secondo lo schema architetturale del ’47 di Von Neumann, sono memorie di tipo elettronico si chiamano Flip Flop, che funzionano col passaggio di corrente. Le loro caratteristiche: veloci e costose. Sotto hanno dei piedini o pin e hanno lo scopo di connettersi, all’interno di determinate slot, con i bus. La RAM ha un difetto, è volatile quindi necessita di essere alimentata in continuazione in modo elettrico, perché al momento in cui la macchina viene spenta, il contenuto della Ram si può considerare vuoto. L’altro scopo, quello di funzionare da archivio, riguarda le memorie di massa (hard disck, memorie elettriche ecc..) garantisce la reperibilità e l’immagazzinamento di dati dopo lungo tempo ma non sono eterne (hard disck: 10 anni, cd: 100 anni, chiavette: in base all’utilizzo, dunque in base alle operazioni di scrittura) hanno una loro durata temporale. Si basano su un principio di lettura magnetica, ottica o elettronica. Sono non volatili, dunque mantengono i dati anche in assenza di alimentazione e sono più economiche ma sono più lente rispetto alla memoria centrale, questo è uno dei motivi per i quali le istruzioni risiedono all’interno della memoria centrale. Per valutare la velocità di funzionamento delle memorie ci sono molti parametri tra cui:

  • access time: intervallo di tempo tra il momento in cui una richiesta di accesso dalla CPU arriva alla memoria e l’istante in cui la memoria termina il proprio compito;
  • tempo di ciclo: tempo di accesso + tempo necessario affinché la memoria riesca a stabilire di nuovo le condizioni per un successivo accesso. Per esempio quando si vuole recuperare un’informazione dalla Ram è una operazione distruttiva, dunque prima di riuscire a rileggerla è necessario che la Ram ricostruisca l’informazione;
  • transfer rate: quantità di dati trasferiti nell’unità di tempo, quantità di dati per unità di tempo cioè la velocità;
  • capacità di memoria: multipli dei byte;
  • costi;
  • modalità di accesso: diretta, sequenziale, mista e associativa. La Ram, random access memory significa: memoria ad accesso casuale, cioè la quantità di tempo che io impiego per recuperare un dato è indipendente dalla posizione che occupa il dato nella memoria, prende il nome anche di accesso diretto. Per cui la quantità di tempo che mi serve per prendere un determinato dato è uguale per tutti, a prescindere dal posto in cui si trovi. Modo di accesso all’informazione sequenziale: esempio nastro magnetico, cioè bisogna scorrere per arrivare fino al punto che ci interessa. Modalità di accesso mista: tra diretto e sequenziale, esempio: dischi in vinile tra l’altro molto simili all’hard disck. Per riuscire ad ascoltare quello che voglio prendo la testina di lettura e la poggio nelle vicinanze della traccia che mi interessa ed attendo che la testina vi ci passi sopra per ascoltarla. Il movimento della testina: accesso diretto, attesa della traccia: sequenziale.

Quindi → RAM: il suo compito è mantenere le istruzioni oggetto di esecuzione ed i dati sui quali questi operano. Volatile e riscrivibile, cioè si può sovrascrivere

software, come tutti gli altri. Al momento in cui questo è pronto ad accogliere i comandi dell’utente, significa che è in esecuzione. Seguendo Von Neumann almeno un pezzo del sistema operativo deve stare nella Ram, anche se non stiamo facendo niente.

  • Demoni: in informatica, programmi che girano in back ground come l’antivirus ad esempio, viene messo in esecuzione subito dopo che il sistema operativo è stato caricato nella Ram.
  • Voglio far partire un altro programma ma lo spazio della Ram è tutto occupato, dunque i casi sono due: o la macchina ci impedisce di lavorare con word o la macchina applica delle politiche di alternanza cioè butta fuori qualche programma per farci andare word. Ce ne accorgiamo dai tempi di attesa. ATTENZIONE: tutti i software su cui si fa doppio click sono in esecuzione, anche se non si stanno utilizzando. Tipicamente le istruzioni di un programma che vengono eseguite si rivolgono al 10% di tutte le istruzioni delle quali è composto un programma. Esempio se utilizziamo word probabilmente utilizzeremo sempre le stesse funzioni. In più se un’istruzione fa riferimento ad un dato o ad un’informazione specifica, è probabile che in futuro faccia riferimento alla stessa istruzione della prima volta. (In mathlab i cicli) questo principio prende il nome di località temporale nell’esecuzione dei programmi, fa in modo che la politica di sostituzione in questa gerarchia sia quella che prende nome di LRU. Inoltre è presente anche il principio di località spaziale: sempre vicino a quel dato che ho appena preso è probabile che nell’immediato futuro io possa riferirmi a dati o istruzioni che gli stanno vicini. LRV: last recently viewed cioè si butta fuori quello che è il programma che da più tempo non viene utilizzato. Il principio della località spaziale invece interviene nel momento in cui lanciando ad esempio word, sarebbe sufficiente che io portassi dall’hard disk alla Ram, la prima istruzione di word. Il trasferimento in questa gerarchia di memoria avviene a blocchi, dunque non una sola istruzione ma un blocco di istruzioni consecutive.

Cosa c’è nella Ram quando il computer è spento? Niente. Dove devono stare i programmi per poter essere eseguiti? Nella Ram. Cosa succede dunque dal momento in cui io premo un pulsante fino a quando non arriva l’interfaccia utente del sistema operativo. Questa fase prende il nome di BOOSTRAP, che cosa succede dunque? Nelle macchine digitale esistono quelle che si chiamano ROM, read only memory. All’inizio questo tipo di memorie potevano essere scritte solo da costruttore della macchina ed in seguito potevano essere solo lette, ci siamo evoluti e quindi oggi non si parla più di memorie non riscrivibili ma sono tutte memorie flash. Le Rom fanno parte di quella categoria di intersezione tra software e hardware, sono delle memorie ma al loro interno sono presenti delle istruzioni, quando si accende la macchina queste istruzioni vengono eseguite (schermo nero e scritte bianche), servono per fare una diagnostica della condizione di “salute” del nostro elaboratore. Dopodichè va a prelevare i programmi, dal disco fisso sede di ogni software. Le istruzioni all’interno della Rom hanno il compito di individuare la posizione nel disco fisso, in cui si trova il nucleo, il core, del sistema operativo ed infilarlo nella Ram, a quel punto possiamo interagire con

la macchina. Per cui questo Gap di assenza di righe significative all’interno della Ram viene colmato dalle istruzioni nella ROM. Periferiche: le memorie di massa, sta ad indicare tutto ciò che si trova alla periferia del calcolatore, come i dispositivo I/O. Tutte le periferiche sono collegate alla macchina con una interfaccia, costituita da dei circuiti specifici per ogni periferica che fanno da tramite tra il processore e la periferica stessa. Fanno da traduttore per riuscire a far capire tra loro i segnali del processore e la periferica. Collegato al calcolatore attraverso un’interfaccia connessa al bus del sistema. Di queste interfaccia noi vediamo la parte esterna cioè le porte, per collegare i nostri dispositivi. Esternamente queste schede hanno dei pin, dei piedini che servono per riuscire a collegarle con i bus. Tutto questo viene collegato alla Scheda Madre. Sopra la superficie della scheda madre sono presenti diversi slot che servono per attaccare periferiche, aumentare memoria ecc ecc… Memoria espandibile: un alloggiamento della Ram o più di uno, possono essere annessi alla scheda madre, recuperando i bus. Fisicamente memoria espandibile significa che all’interno della scheda madre sono presenti degli alloggiamenti specifici per aumentare la memoria Ram, con schede aggiuntive. Ogni periferica è dotata di una scheda che implementa l’ Interfaccia della periferica stessa e serve per riuscire a colloquiare con il processore. VGA/HDMI sono quelle nuove: Hight definition multimedial interface, interfaccia computer televisione. Le interfaccia devono collegarsi ai bus, se all’interno di una macchina ci fosse un solo bus condiviso da ogni dispositivo, la macchina non sarebbe molto performante, perché le informazioni non potrebbero essere mandate contemporaneamente. Data la quantità di informazioni che trattiamo oggigiorno servono invece dei bus dedicati ad ogni periferica. Memoria cache e cpu hanno un rapporto diretto infatti il loro bus è unico, non condivisibile da altri; Ram e cache hanno un bus unico; scheda video siccome deve trattare molte informazioni, perché le immagini devono essere rese a video contemplano moltissimi bit per cui anche la scheda video ha un bus proprio. Maggiore è la quantità di informazioni che la periferica tratta più è probabile che abbia “un’autostrada privata”. NB: bus non unico, sempre più bus dedicati alle singole periferiche per evitare che la macchina sia troppo lenta. Scheda madre: dentro c’è il processore, banchi di Ram, la cache sta dentro il chip del processore dopodichè sono presenti le schede che implementano le interfacce dei dispositivi hardware che vogliamo collegare alle macchine. All’interno della scheda madre abbiamo anche la Rom. Sono presenti anche pile, a cosa possono servire? Quando accendiamo la macchina, ipotizzando di non avere un collegamento alla rete rimane comunque memorizzata la data e l’ora, il che significa che questa informazione risiede all’interno di qualche memoria alla quale serve poca alimentazione per riuscire a essere attivi.

Memorie di massa: possono essere elettroniche per esempio, ci sono di varie dimensioni, hanno un accesso diretto all’informazione e sono piuttosto costose (hard disk, SSD).

l’informazione da leggere o scrivere sotto alla testina. Si misurano in milioni di byte per secondo.

  • memorie Flash: memorie elettroniche ad accesso diretto molto veloci ma anche molto più costose.
  • Dischi ottici: cd/dvd/blue ray, cassette, floppy disk, dispositivi magnetici. Si basano sulla presente di un laser molto focalizzato, non si irradia. Nella storia ognuno di questi dispositivi ha subito delle trasformazioni tipiche del nostro tempo: Cd-rom, read only memory, il cui scopo era quello di ascoltare i brani musicali per soppiantare la produzione dei dischi in vinile. Venivano realizzati in maniera prestampata, costituiti di materiale riflettente che prendono nome di “land” e materiale non riflettente che si chiama invece “pit”. Quando il laser colpisce lo stato riflettente o non riflettente genera due stati diversi e distinguibili, dunque ancora un bit. Dunque un cd è costituito di diversi strati: un substrato di supporto con etichetta, uno strato riflettente ed un substrato di policarbonato. Il raggio laser lavora sullo stato riflettente e su quello di policarbonato, a seconda di come riflette questo laser, crea pit e land (forellini o parti lisce) che indicano la sequenza di 0 e 1, questo è il processo di scrittura del cd a monte. Da ricordare che i primi cd, dunque il cd-rom poteva essere solo letto dagli utenti. In seguito con l’avvento dei cd-WORM: (worm, write once read more) si possono scrivere una volta e basta dopo si poteva solo leggere perché le modifiche apportate nella fase di scrittura erano irreversibili. Funzionava sempre allo stesso modo degli altri cd ma sopra alla superficie riflettente era presente un materiale trasparente. Succedeva che quando lo stato trasparente veniva colpito da un laser ad alta potenza generava una macchia di colore, rompendo dei legami chimici, ovviamente quando il laser bruciava la superficie creava una modifica permanente. I cd di ultima generazione sono invece i CD – RW: cd riscrivibili, che significa che le modifiche apportate a questi materiali non sono permanenti ma reversibili. Abbiamo uno strato sempre riflettente (pit), sopra abbiamo un altro strato che ha la capacità di cambiare stato da cristallino ad amorfo. Quando il laser ad alta potenza fa passare dallo stato cristallino ad amorfo significa che la luce non riesce ad arrivare allo stato riflettente, se invece è sul cristallino riesce ad andare sotto. È reversibile perché se il laser passa dalla potenza alta ad una media lo strato amorfo torna ad essere cristallino, così la superficie si è raffreddata e dunque la modifica è come se non fosse avvenuta. Il loro arco di durata è di una centinaia di anni. Per la lettura: laser di bassa potenza. Differenza tra cd – dvd – blueray? DVD: pit più piccoli, spirale più serrata dunque presenza di più informazioni. Tecnologia dual layer: uno strato riflettente sul fondo coperto da uno stato semiriflettente; a seconda di dove viene indirizzato il laser, il raggio viene riflesso da uno strato o dall’altro, lo strato inferiore ha pit e land leggeremente più grandi per cui la sua capacità è leggermente inferiore.

14/03.

Sistemi operativi: un software, come tutti gli altri che come tale risiede nella ram e come tale viene eseguito dal processore. Il suo scopo è quello di fungere da intermediario tra la parte fisica (hardware) e l’utente. Possiamo vedere dunque la macchina come costituita da diversi strati di interazione dall’utenza all’hardware: nel centro abbiamo la sua parte fisica, l’hardware formato fisicamente dalla macchina, subito sopra abbiamo il sistema operativo che maschera tutta la complessità architetturale dei dispositivi digitali; si appoggia sul sistema operativo tutta una categoria di programmi che prende il nome di “software applicativi”, costituita dai programmi che sono utilizzati dagli utenti (come word per esempio), all’esterno di questi strati abbiamo infine l’utenza, che interagisce con i software applicativi: word, firefox, lettore musicale ecc… questi software non hanno diretto accesso all’hardware ma sono mediati dal sistema operativo: quando per esempio vogliamo stampare qualcosa da word, non è lui a mandare il comando di stampa ma è il sistema operativo che da word trasmette il comando alla stampante. Dunque cos’è il software applicativo? Sono tutti i programmi che fanno parte dei sistemi operativi, si dividono in tante categorie quanti sono i problemi che vanno a risolvere: dunque ci sono software per l’elaborazione di testo, elaborazione di dati, per le base di dati, per la grafica ecc ecc… oltre a questi ci sono gli strumenti di sviluppo che permettono di scrivere in linguaggio di programmazione ad alto livello, come mathlab. Perché ad alto livello? Per l’utilizzo di parole specifiche in inglese, il linguaggio sorgente. All’interno di mathlab c’è una categoria di software che prendono il nome di traduttori, il cui scopo è quello di tradurre le istruzioni in un linguaggio che prende il nome di codice eseguibile, perché eseguiti dal processore e quindi devono essere tradotti in linguaggio macchina costituito da 0 e 1. Abbiamo anche un’altra categoria di software applicativi, quelli per l’utilità di sistema che servono per garantire la sicurezza e le performance della macchina: antivirus, compressori (zip), programmi di backup ecc ecc… il primo compressore è stato il win-zip, fu inventato da un matematico americano ed era gratuito. Il sistema operativo è costituito da un insieme di moduli, ognuno dei quali è rivolto ad una componente hardware specifica. Nello schema architetturale di Von Neumann erano stati individuati 5 elementi funzionali:

  • processore;
  • Ram;
  • Memorie di massa;
  • Dispositivi I/O;
  • Collegamenti alle reti. I moduli del sistema operativo riflettono strettamente questa divisione. Quando la macchina è spenta il sistema operativo risiede sull’hard disk. NB: se lasciamo un cd all’interno della macchina e la spengiamo, nel momento del riavvio la prima cosa che viene fatta dalla macchina è quella di leggere il cd e dunque di prendere le informazioni per far partire il sistema operativo da lì. L’hard disk è il primo che viene letto nella fase di partenza della macchina e viene poi caricato sulla ram come tutti gli altri, fino al momento in cui questa non viene spenta. Qual è la differenza tra software applicativi e sistemi operativi? Le funzioni. Un programma come word non può dialogare con la stampante, invece chi ha accesso a tutte le risorse, hardware, della macchina è il sistema operativo. Gli

esecuzione perché questo dovrà essere ripristinato al momento in cui passa dallo stato di pronto a quello di esecuzione. Dunque gestisce l’alternanza dei compiti del processore secondo alcune politiche, gestisce anche la risposta generata dalle unità periferiche → quando ad esempio la stampante ha finito di stampare, viene spedito un feedback al processore per avvisarlo e dunque da qui il gestore dei processi gestisci questi messaggi facendo passare di nuovo questo processo dallo stato di esecuzione a quello di pronto. Dal punto di vista del processore in ogni istante c’è un solo processo in esecuzione, se l’alternanza tra i processi è frequente l’utente ha l’impressione che tutti i programmi da lui lanciati siano in esecuzione in contemporanea, cosa che non è vera. Quali sono le politiche adottate dal processore per alternare i processi nello stato di pronto? Dipendono in primo luogo da sistemi operativi e da software in esecuzioni, per esempio alcuni software hanno priorità sull’esecuzione rispetto ad altre cose che possono accadere, la priorità utilizzata da praticamente tutte le macchine è quella che prende il nome di “Round Robin”, è una politica di tipo FIFO (first in first out) cioè il primo che entra all’interno dei processi pronti è il primo che entra nel processore. Esempio: P1, P2, P3. il processo P1 è il primo presente dunque è il primo che entra in esecuzione ma il Round Robin funziona secondo “time sharing”, partizioni di tempo, significa che non può essere monopolizzato con un solo processo il processore dunque viene assegnato ad ogni processo un quantum di tempo, ad esempio 10 millisecondi, vuol dire che trascorso questo tempo al processo P viene tolta l’attenzione del processore, passando allo stato di P “pronto” e viene data quindi l’attenzione al secondo processo, P2 che viene eseguito per il suo quantum di tempo dopodichè passa allo stato di pronto e quindi si sussegue P3, dopo P3 tornerà in cosa P1. P1 però ad un certo punto necessita di un intervento di I/O, significa che ha bisogno di un dispositivo di ingresso/ uscita, quindi il processo P1 passa nello stato di A, attesa e dunque verrà eseguito P2, per il suo quantum di tempo e dopo P3, per il suo tempo. Toccherebbe a questo punto di nuovo a P1 ma questo non è presente nella lista dei processi pronti, perché è ancora nello stato di attesa, dunque tocca di nuovo a P2, nel frattempo P1 è tornato allo stato di pronto, P2 finisce il suo quantum di tempo e quindi toccherà a P3 ad andare in esecuzione e dopo questo processo toccherà allora a P1. Per questo motivo non è saggio mandare in esecuzione 20 applicativi, la macchina andrà più lenta.

Programmazione concorrente: un programma che è eseguito riga per riga può essere mandato in esecuzione in due blocchi separati, non avviene tipicamente ma se i programmi sono fatti con la programmazione concorrente vuol dire che hanno dei pezzi di programmazione che possono essere eseguiti contemporaneamente.

Gestore della memoria principale: ha il compito di tenere traccia delle aree di memoria correntemente utilizzate e dei rispettivi utenti; decide quale processo caricare in memoria quando dello spazio si rende disponibili; ha il compito di allocare o liberare spazio in memoria a seconda delle richieste. Inoltre il gestore della memoria deve permettere in un modo che sia controllato, una parziale sovrapposizione degli spazi di memoria associati ai vari programmi (condivisione dati, istruzioni e scambio di messaggi); deve proteggere

programmi e relativi dati caricati nella memoria di lavoro mettendo in atto dei meccanismi per tutelare la privatezza dello spazio di lavoro assegnato a ogni processo (nessun processo deve poter leggere o modificare quanto contenuto nello spazio di indirizzamento virtuale di un processo). Il gestore della memoria utilizza determinante tecniche per riuscire a gestire il conflitto fra dimensione della memoria fisica e spazio complessivo richiesto dai programmi che devono essere eseguiti in modo concorrente e dai relativi dati:

  • consentire il caricamento di un programma a partire da un indirizzo qualunque della memoria;
  • ridurre la necessità di spazio tenendo in memoria solo una porzione dei programmi e dei dati;
  • estende la dimensione di un processo utilizzando delle zone di memoria non necessariamente contigue. Swapping: trasferimento del contenuto di un’area della memoria centrale in un’area della memoria di massa (area di swap) OK per processi in attesa e ~ OK per i processi pronti. Gestore delle periferiche, ha vari compiti:
  • garantisce l’accesso ai dispositivi I/O mascherando dettagli di basso livello come ad esempio problemi di indirizzamento, di sincronizzazione delle periferiche ecc… , tramite un insieme di comandi di alto livello per leggere e scrivere dati.
  • Gestisce conflitti che possono insorgere nel caso che diverse richieste arrivino contemporaneamente ad uno stesso dispositivo. Il sistema operativo gestisce le operazione sulle periferiche di I/O tramite:
  • un sistema di memoria a buffer (area di memoria usata per conservare temporaneamente i dati da trasferire ad un dispositivo);
  • l’interfaccia per il gestore del dispositivo di I/O;
  • i driver stessi per ciascun dispositivo di I/O.
  • controller, dispositivi hardware per effettuare le operazioni di trasferimento dati a livello fisico;
  • i driver, software per la gestione delle periferiche:
  • mascherano le caratteristiche specifiche dei controller;
  • forniscono un insieme di primitive ad alto livello per la gestione delle operazioni di ingresso/uscita utilizzabili dai programmi applicativi e dagli utenti. I drivers, sono dei file usati dal sistema operativo per effettuare la comunicazione tra computer e varie periferiche. Per porter funzionare correttamente ogni dispositivo deve avere il suo particolare driver registrato dal sistema operativo, esistono quindi i driver per la stampante, per il modem, per il lettore cd, scheda audio, scheda video ecc… I driver vengono installati sul computer attraverso un software di installazione automatica che viene fornite insieme ai dispositivi stessi. Plug and play è configurazione automatica dei driver: all’attivazione il sistema operativo scandisce ed esami tutte le periferiche collegate al sistema; le periferiche si fanno riconoscere specificando di quali driver necessitano, il sistema operativo installa gli opportuni driver per la loro gestione. Inoltre:
  • gestisce lo spazio libero su memorie di massa;
  • associa a un nome lo spazio fisico sulla memoria di massa;
  • fornisce meccanismi per la protezione dei dati;
  • rende trasparente la struttura fisica del supporto di memorizzazione;

volte ci sono dei caratteri che vengono elaborati da alcuni antivirus per esempio, come una ipotetica minaccia eliminando il file o avvisando l’utente. È buona regola che se il nome dei file è costituito da più parole, invece che dividere la parola con trattini, puntini ecc ecc… distinguere ogni parola con l’utilizzo di prima lettera maiuscola. La seconda parte del nome del file è costituita di solito da tre o quattro letterine in più che indicano la natura del file: .doc; .xls ecc… Cos’è l’estensione di un file? Il suo formato, cioè cosa troviamo all’interno di quel file. Ciccando con il tasto destro sul file e selezionando il “tasto proprietà” abbiamo accesso a tutti gli attribuiti dei file:

  • percorso;
  • dimensioni (in byte);
  • dimensioni su disco;
  • data creazione;
  • ultima modifica;
  • ultimo accesso.
  • Il formato nasconde al suo interno il linguaggio che il software dovrà leggere per decifrare l’informazione. Se viene cambiato il formato di un file testo da .doc a .txt per esempio, cambieranno molte cose visivamente come per esempio la formattazione del testo, dal carattere all’allineamento, perché è come se i due programmi parlassero lingue diverse. Proprietà di un file: apertura di una finestra in cui si specifica il tipo di file, aprire con un software di default. Se cambiamo il programma di default si apre una schermata con dei simboli piuttosto che delle parole, come detto già prima.
  • Dimensioni è diverso dalle dimensioni su disco perché la prima si riferisce alle dimensioni del file, l’altro si riferisce alle dimensioni che il file occupa fisicamente sul disco. Perché non sono uguali? Perché le informazioni vengono scritte e lette a blocchi sul disco, l’unità minima di informazione è il settore di una traccia per cui il file non può occupare il minimo spazio che gli serve.
  • Attribuiti: su windows ne vediamo solo due, su altri sistemi operativi posso fare altri tipi di distinzioni, comunque posso fare su windows una distinzione tra gruppi di utenti che possono solo leggere, solo lettura: l’utente può solo leggere il file; oppure possiamo nasconderli, ad esempio c’è tutta una categoria di file che solitamente rimane nascosta ed è quella dei file di sistema, sono nascosti per evitare che vengano eliminati inutilmente. Per non vedere più nemmeno la cartella devono essere cambiate le informazioni di default della cartella per nascondere tutto. Cosa succede quando facciamo doppio click su di un software? Il programma viene mandato in esecuzione, dietro a questa semplice azione c’è il lavoro dell’esecutore dei comandi che richiama il gestore dei file, o gestore della memoria secondaria o file system, che legge dalla memoria di massa il programma che abbiamo mandato in esecuzione. Dopo interverrà il gestore della memoria centrale, che sa quali parti di ram sono libere e quindi pone il software, o eventualmente disalloca programmi al momento non utilizzati, dunque alloca il software nella memoria centrale. Già due moduli del sistema operativo sono intervenuti per l’esecuzione, una volta trovato spazio quindi il software si trova fisicamente sulla Ram a questo punto servirà di attivare il

processo relativo alla messa in esecuzione, chi si occupa di fare questo? Il nucleo, o core o kernell, cioè la parte più vicina al processore. Dunque viene creato il processo relativo al software che abbiamo mandato in esecuzione. Esternamente tutto questo è visto tramite interfaccia utenti: ne esistono in realtà due di interfaccia:

  • GUI: graphic users interface;
  • CLI: interfaccia a caratteri o a linea di comando, che sta dietro alla GUI. La differenza tra GUI, chiamata anche point and click, e la CLI è che nel gui si clicca e basta e si manda così in esecuzione un programma nell’interfaccia cli invece occorre conoscere una sintassi particolare che ci permetta di rivolgerci alla macchina direttamente. Per esempio: se faccio doppio click su di una cartella, visualizzo tutto quello che c’è all’interno di questa cartella. Nel caso di cli invece c’è un comando particolare che si chiama “dir” che visualizza tutto quello che è presente all’interno della cartella specifica. Chi è la migliore tra le due interfaccia? Dipende:
  • facilità di utilizzo: Gui, più facile ed intuitiva;
  • controllo delle risorse del sistema: cli, può andare più a fondo infatti per l’esplorazione, più capillare;
  • Chi è più veloce: cli, non c’è da interpretare niente dal momento che viene dato un comando specifico per ogni azione;
  • Chi spreca minor risorse del sistema? Cli, dato che mette a video una schermata nera con carattere bianco. Le immagini oltre che essere pesanti a livello di byte devono essere rese a video, quindi le risorse impiegate del sistema sono maggiori nel Gui che nel Cli;
  • Le Gui hanno avuto grande sviluppo perché sono facili da utilizzare in più hanno anche altre proprietà che le rendono più attraenti: flessibilità, possibilità di eseguire un comando in modi diversi tra loro, cioè devono essere presenti diverse modalità di un comando per fare una stessa cosa, come per esempio fare una copia di un pezzo di testo in word: dopo aver selezionato il testo posso o premere il pulsante destro del mouse e selezionare copia, oppure posso andare sul menù in alto selezionare modifica e dopo copia, oppure posso premere contemporaneamente ctrl +c l’utilizzo dell’uno o dell’altra modalità dipende dalla scorciatoia che in quel momento vogliamo prendere; l’altra caratteristica delle Gui è la standardizzazione cioè sostanzialmente se apriamo un qualsiasi software le voci del menù, le immagini delle icone sono tutte simili ecc ecc… l’idea di base è quella di non far fatica a livello cognitivo per passare da un ambiente all’altro, dunque l’utente deve poter concentrarsi solo su ciò che deve fare non su come farlo. NB: modi per migliorare le performance delle macchine:
  1. non lasciare aperti tanti programmi perché di fatto, anche se non in primo piano, sono comunque in esecuzione;
  2. evitare di mandare in background programmi che non servono a noi direttamente e che sono in esecuzione solo perché chi ha programmato il computer ha deciso così;
  3. fare il defrag del disco: il gestore della memoria secondaria colloca un file dove trova posto frammentandolo dove crede, quando accedo all’informazione accedo a tutta dunque la testina si sposta da una parte all’altra per poter leggere tutto il file, se tutto il file fosse su di una stessa traccia sarebbe più veloce e facile, la deframmentazione fa proprio