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


storia dell'informatica, Sintesi del corso di Fondamenti di informatica

Descrivo in poche pagine la storia dell'informatica

Tipologia: Sintesi del corso

2024/2025

Caricato il 15/06/2026

marcoperotto
marcoperotto 🇮🇹

4 documenti

1 / 25

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INFORMATICA
Bisogna aspettare fino al XVII secolo d.c. per avere la prima vera innovazione rispetto
all'abaco. A 19 anni Blaise Pascal, per aiutare suo padre nella soluzione di problemi di
calcolo, inventa la pascalina. La pascalina è il primo grande passo avanti: la logica
dell'operazione è controllata della macchina, ma poteva effettuare "solo" addizioni e
sottrazioni. Il problema vero è che la logica che governa le operazioni è "cablata" nella
macchina calcolatrice, non introdotta dall'esterno così come dall'esterno venivano
introdotti i numeri con cui fare il calcolo. La soluzione veramente definitiva del problema
del calcolo era di costruire una macchina che potesse fare qualunque tipo di calcolo
semplicemente comandandoglielo, non ricostruendola appositamente per quel tipo di
calcolo, cioè una macchina PROGRAMMABILE
introdotta da Charles Babbage intorno al 1840, è il primo esempio di macchina di calcolo
programmabile.
Un algoritmo è una sequenza di passi elementari che porta alla soluzione del problema.
Il nome algoritmo richiama quello del padre dell'algebra e primo matematico Al-
Khuwarizmi vissuto in Persia intorno al XI secolo d.c.
Indica l'insieme delle operazioni necessarie a risolvere un problema.
L'informatica è la scienza degli algoritmi
Alan Turing: è considerato uno dei padri dell’informatica, moltissime sue
idee/congetture sono attuali anche oggi. Inventa la macchina di Turing e il test di Turing.
Il modello di Turing è un modello astratto e puramente teorico di calcolatore: è un
"esperimento mentale" , non una macchina effettivamente costruibile. È universale
perché può calcolare tutto ciò che è scritto nei suoi programmi. Alla base del
funzionamento c'è la stessa idea che sta alla base della macchina analitica, cioè l'idea di
una macchina programmabile.
John von Neumann è il primo a descrivere un computer effettivamente costruibile.
L'informatica è l'insieme dei processi e delle tecnologie che consentono la creazione, la
raccolta, l’elaborazione, l'immagazzinamento e la diffusione dell'informazione .
Massimo numero rappresentabile è il numero più grande esprimibile con un dato
numero di cifre.
La codifica dei caratteri deve avere due caratteristiche fondamentali : essere
standardizzata e garantire la copertura di tutti i caratteri utilizzati nel mondo
Le categorie principali del software sono sistemi operativi e programmi
Rappresentazione delle informazioni :
Possono elaborare vari tipi di informazioni: testi , immagini , suoni.
Tutti gli altri tipi di informazioni devono essere convertiti in qualche modo in forma di
numeri. Segnali analogici : insieme continuo di valori, trasmettono molte
informazioni.Vantaggi del digitale : semplice , non ambiguo.
Un segnale digitale è binario , cioè un segnale discreto e basato su due valori
Bit: binary digit; un bit può assumere solo due valori (0,1)
2 bit= 4 informazioni
6 bit sono abbastanza per 61 informazioni
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19

Anteprima parziale del testo

Scarica storia dell'informatica e più Sintesi del corso in PDF di Fondamenti di informatica solo su Docsity!

INFORMATICA

Bisogna aspettare fino al XVII secolo d.c. per avere la prima vera innovazione rispetto all'abaco. A 19 anni Blaise Pascal, per aiutare suo padre nella soluzione di problemi di calcolo, inventa la pascalina. La pascalina è il primo grande passo avanti: la logica dell'operazione è controllata della macchina, ma poteva effettuare "solo" addizioni e sottrazioni. Il problema vero è che la logica che governa le operazioni è "cablata" nella macchina calcolatrice, non introdotta dall'esterno così come dall'esterno venivano introdotti i numeri con cui fare il calcolo. La soluzione veramente definitiva del problema del calcolo era di costruire una macchina che potesse fare qualunque tipo di calcolo semplicemente comandandoglielo, non ricostruendola appositamente per quel tipo di calcolo, cioè una macchina PROGRAMMABILE introdotta da Charles Babbage intorno al 1840, è il primo esempio di macchina di calcolo programmabile. Un algoritmo è una sequenza di passi elementari che porta alla soluzione del problema. Il nome algoritmo richiama quello del padre dell'algebra e primo matematico Al- Khuwarizmi vissuto in Persia intorno al XI secolo d.c. Indica l'insieme delle operazioni necessarie a risolvere un problema. L'informatica è la scienza degli algoritmi Alan Turing: è considerato uno dei padri dell’informatica, moltissime sue idee/congetture sono attuali anche oggi. Inventa la macchina di Turing e il test di Turing. Il modello di Turing è un modello astratto e puramente teorico di calcolatore: è un "esperimento mentale" , non una macchina effettivamente costruibile. È universale perché può calcolare tutto ciò che è scritto nei suoi programmi. Alla base del funzionamento c'è la stessa idea che sta alla base della macchina analitica, cioè l'idea di una macchina programmabile. John von Neumann è il primo a descrivere un computer effettivamente costruibile. L'informatica è l'insieme dei processi e delle tecnologie che consentono la creazione, la raccolta, l’elaborazione, l'immagazzinamento e la diffusione dell'informazione. Massimo numero rappresentabile è il numero più grande esprimibile con un dato numero di cifre. La codifica dei caratteri deve avere due caratteristiche fondamentali : essere standardizzata e garantire la copertura di tutti i caratteri utilizzati nel mondo Le categorie principali del software sono sistemi operativi e programmi Rappresentazione delle informazioni : Possono elaborare vari tipi di informazioni: testi , immagini , suoni. Tutti gli altri tipi di informazioni devono essere convertiti in qualche modo in forma di numeri. Segnali analogici : insieme continuo di valori, trasmettono molte informazioni.Vantaggi del digitale : semplice , non ambiguo. Un segnale digitale è binario , cioè un segnale discreto e basato su due valori Bit: binary digit; un bit può assumere solo due valori (0,1) 2 bit= 4 informazioni 6 bit sono abbastanza per 61 informazioni

8 bit formano un byte. il byte viene utilizzato - insieme al bit come.unità di misura per esprimere la capacità della memoria , la potenza di un calcolatore , la velocità di trasmissione di una linea Numerale 111² = 1 in posizione 2 , 1 in posizione1 e 1 in posizione 0 12² + 12¹+1*2ⁿ = 4+2+1 = 7 Il sistema di numerazione binario ( base 2) utilizza una notazione posizionale basata su 2 cifre (0 e 1) e sulle potenze di 2. Il numero 1001 può essere rappresentato esplicitamente come 1001²= 1×2³ +0x2 ²+ 0x 2¹+ 1x2ⁿ= 9¹ⁿ Conversione da base 2 a base 10: è sufficiente moltiplicare ogni bit per il suo peso e sommare. È sufficiente moltiplicare ogni bit per il suo peso e sommare. Conversione base 10> base 2 : consideriamo ad esempio il numerale 42 in base 10 e cerchiamo la rappresentazione corrisponde in base 2. Esercizio: conversione base 2> 10

  1. 111011= 1* 2⅝+ 12⁴+12³+02²+12¹+1*2ⁿ= 32+16+8+0+2+1= 59
  2. 101111101= 12⅝+ 02⅞+12^6+12⅝+12⁴+12³+12²+02¹+1*2ⁿ= 381
  3. 101010101010= 12¹¹+02¹ⁿ+12^9+02^8+12⅞+02^6+12⅝+02⁴+12³+02²+12¹+02ⁿ= 2730¹ⁿ. Conversione base 10> 128¹ⁿ= 10000000. 5654¹ⁿ= 1011000010110² 511¹ⁿ= 1233¹ⁿ= 10001011001. I testi sono formati da caratteri , quindi il problema della digitalizzazione dei testi si riduce a come esprimere i caratteri in formato digitale. La codifica dei caratteri deve avere due caratteristiche fondamentali: •Essere standardizzata •garantire la copertura di tutti i caratteri utilizzati nel mondo La codifica standardizzata dei caratteri consente la comunicazione e lo scambio tra tutti i dispositivi che devono leggere e scrivere testi in formato digitale. Nel 1963 nacque il primo standard codifica negli USA : ASCII Esempio di decodifica ASCII: Molto semplice: si prende la stringa di 0 e 1, si divide la stringa in byte e si cerca nella tabella a quale carattere corrisponde ogni byte. Nel 1991 nacque UNICODE che comprende tutti i sistemi di scrittura. Oggi la codifica più diffusa è una versione di UNICODE che si chiama UTF-8: 8 Bit UCS transformation Format. Per rappresentare più caratteri servono più bit , quindi si è passati da una codifica a 7 bit , ad una codifica a 8 bit e poi ad una codifica con caratteri da 1 a 4 byte.

Due parametri importanti per la qualità delle immagini digitali che sono risoluzione e profondità del colore. La risoluzione indica la precisione con cui viene effettuata la suddivisione di un’immagine pixel. La profondità del colore è il numero di bit o byte utilizzati per rappresentare ciascun pixel. La dimensione dell’immagine è il numero di bit o byte che servono per memorizzarla. Dimensione = risoluzione x profondità del colore. Esempio : 640 pixel in larghezza , 480 pixel in lunghezza , 256 colore. Le immagini soprattutto quando sono in Truecolor, occupano molta memoria. Esistono tecniche di compressione delle immagini che consentono di ridurre la dimensione dello spazio occupato. Per esempio, una tecnica consiste nel codificare aree dello stesso colore in modo “abbreviato”

  • è un esempio di tecnica lossless, senza perdita di informazione
  • cioè, quando decomprimiamo l’immagine, questa è identica all’originale Le tecniche di compressione "lossy”, invece, causano perdita di informazione:
    • cioè, il processo di compressione “scarta” alcuni dati
  • quando si decomprime l’immagine, questa è diversa dall’originale: è degradata in qualità La compressione "lossy" permette di risparmiare molto più spazio della lossless. La codifica BMP(BITMAP), quella che codifica il colore per ogni pixel, oggi è utilizzata raramente, si preferisce JPG perché è meno “pesante”. Ma BMP ha una qualità superiore rispetto ai JPG. In un’immagine BMP, ogni pixel ha il proprio colore specifico e una maggiore risoluzione rispetto ai file JPG. Codifica di sequenze di immagini (dette fotogrammi o frame) Visto lo spazio elevato richiesto, occorrono tecniche di memorizzazione efficienti: per esempio, sono memorizzate solo le differenze tra un fotogramma e l’altro Codifica delle immagini in movimento. Esistono vari formati, soprattutto lossy: mpeg, divx, avi (microsoft), quicktime (Apple) (memorizzano anche i suoni). Nei film si memorizzano 24 frame/sec, nelle riprese 30 frame/sec. Codifica dei suoni: il suono è uno dei mezzi principali di comunicazione, anche i suoni possono essere codificati in digitale. Un suono è un’onda di pressione che si ha in presenza di un mezzo (l’aria, l’acqua). Quando un suono viene rilevato dall’orecchio o da un microfono, viene trasformato in uno stimolo– o segnale– elettrico. Durata, intensità e variazione nel tempo della pressione dell'aria sono le quantità fisiche che rendono un suono diverso da ogni altro. Sull'asse delle ascisse (x) viene rappresentato il tempo Sull'asse delle ordinate (y) viene rappresentata la variazione di pressione corrispondente al suono stesso. Si rappresenta quindi l’intensità del suono in funzione del tempo. Tempo e intensità sono quantità analogiche. La frequenza di campionamento si misura in HERTZ: 1 Hz = 1 campione al secondo 1 kHz = 1000 campioni al secondo. Il telefono usa 8000 campionamenti al secondo (8 kHz). I CD audio usano 44100 campionamenti al secondo (44,1 kHz). Analogamente alle immagini, maggiore è la frequenza dei campionamenti, migliore sarà la precisione con cui il segnale viene memorizzato e la fedeltà all’originale. Discretizzando esclusivamente sul tempo, abbiamo ancora campioni analogici (l’ampiezza è un valore analogico).

Occorre discretizzare anche l’ampiezza di ogni campione, per poterla esprimere con un numero binario. Esercizi:

  1. Dati 6 bit , quante informazioni distinte si possono rappresentare? 64 diverse informazioni.
  2. Quante informazioni distinte si possono rappresentare con un byte? 2⅞ =256.
  3. Quanti bit si devono utilizzare per rappresentare 20 informazioni distinte? 20>2⅝= 32
  4. Quante byte occupa la parola "letteratura" scritta in ASCII esteso? 8×11 = 88 bit uguale a 11 byte
  5. Quanti byte occupa la frase " l'inglese , il francese " scritta in ASCII esteso? 8×22= bit , 1×22= byte
  6. le parole città e citta' hanno la stessa rappresentazione in ASCII? No perche sono caratteri diversi
  7. Codificate i seguenti numeri binari nella corrispondente rappresentazione decimale? 101= 5 1011= 1101= 13 10000001= 1+128= 129 11001100= 128+64+8+4= 204 11111111= 128+64+32+16+8+4+2+1= 255
  8. Codifica binaria = 281= 100011001. Elememti della macchina di Von Neumann : Ram , cpu , dispositivi output input Funzionamento ad alto livello All'avvio dell'elaboratore , programmi e dati risiedono nella memoria secondaria. I programmi per essere eseguiti devono essere portati in memoria principale. Così anche i dati per essere utilizzati dai programmi. )La CPU (Central Processing Unit) esegue i programmi eseguendo le istruzioni di cui sono composti. RAM: per memorizzare un bit usa due diverse cariche elettriche : una carica per lo 0 e una carica per l' Memoria volatile > quando togliamo la corrente si perdono tutte le informazioni. La memoria principale:  Insieme alla CPU è la componente fondamentale del calcolatore  Permette di memorizzare sia il programma che i dati  Fisicamente è formata da componenti elettronici (transistor, resistenze, condensatori) miniaturizzati

l’istruzione e preleva gli operandi specificati Execute(esegui): esegue l’istruzione utilizzando la componente opportuna,memorizza i risultati e ricomincia. L’esecuzione (passo execute) comporta l’invio di comandi opportuni all’unità relativa che li deve effettivamente eseguire:

  • Calcoli →ArithmeticLogicUnit
  • Lettura/scrittura dati →memoria
  • Acquisizione/stampa→dispositividi I/O. •La frequenza con cui è eseguito il ciclo di fetch decode-execute è scandita dal clock (orologio interno): ad ogni impulso di clock la CPU esegue un ciclo • Lavelocità di elaborazione di una CPU dipende dalla frequenza del suo clock. ALU= Arithmetic logic unit: Esegue le operazioni di tipo aritmetico (ad es. somme) e logico (ad es.confronti) •Preleva gli operandi dai registri e deposita il risultato delle operazioni in uno (o più) registri. I registri sono piccole celle di memoria con tempi di accesso molto più bassi rispetto alla memoria primaria RAM.- Mantengono solo le informazioni necessarie per eseguire l’istruzione corrente. Si dividono in registri: generali speciali (PC, IR). I registri generali: Sono usati come celle di memoria temporanea; contengono gli operandi ei risultati delle istruzioni in esecuzione • In alcune architetture, alcuni registri hanno funzioni privilegiate; ad es.l’accumulatore in genere contiene il risultato delle operazioni. Il Program Counter è un registro speciale che contiene l'indirizzo in memoria principale della prossima istruzione da eseguire. Quando un programma viene avviato, l’indirizzo della prima istruzione viene caricato nel Program Counter. All’esecuzione di un’istruzione, il PC viene modificato per contenere l’indirizzo della prossima istruzione da eseguire (non necessariamente quella immediatamente successiva). L'INSTRUCTION REGISTER è un registro speciale. Contiene l’istruzione attualmente in esecuzione. La CU legge l’istruzione contenuta in IR e la esegue. Il processore esegue le istruzioni contenute nei programmi memorizzati in RAM Le istruzioni per essere comprese dalla CPU devono essere scritte in linguaggio macchina. Il processore lavora per cicli di esecuzione e ad ogni ciclo recupera dalla RAM la prossima istruzione da eseguire ed esegue l’istruzione. Le CPU si differenziano per classe, frequenza di clock, numero di «core» e dimensione dei registri. - CLASSE: indicata dal nome del produttore e da una sigla (es. per il produttore Intel la sigla può essere una sequenza di numeri o un nome come Pentium, Celeron, Core i9, Core i5 …). FREQUENZA DI CLOCK: è il principale indice della velocità del computer perché indica quanti cicli di esecuzione la CPU può svolgere nel singolo secondo; si misura in Hertz (Hz): 1 Hz = 1 ciclo al secondo, 1 Gigahertz (GHz) = un miliardo di cicli al secondo; nei processori attuali si parla di oltre 3 GKz (es. Intel Core i9 ha una frequenza di 3,5 GHz). NUMERO di «CORE»: nei microprocessori un singolo circuito integrato può contenere al suo interno varie CPU (es. dual core = 2 CPU, quad core = 4 CPU…); maggiore è in numero di CPU che lavorano in parallelo, maggiore la velocità del processore, quindi del computer.

DIMENSIONE DEI REGISTRI: indica quanti dati vengono elaborati ad ogni ciclo di clock e determina la velocità del processore, dato che influenza la frequenza di scambio di informazioni tra CPU e RAM; la dimensione attuale può essere di 32 bit o 64 bit e si parla quindi di processori con architettura a 32 o 64 bit. Per conoscere la velocità di un microprocessore occorre quindi tenere conto sia della frequenza di clock sia della quantità di dati elaborabili ad ogni clock, cioè della dimensione dei registri. I registri: Sono piccole unità di memoria (32 64 bit) con tempi di accesso molto rapidi, più bassi rispetto alla RAM. Ospitano in modo organizzato tutte le informazioni necessarie per eseguire l’istruzione corrente. Sono in numero limitato (10, 20, 64) e si dividono in registri speciali e generali. Sono le unità di memoria più piccole, ad accesso più veloce e più costose. La memoria secondaria rispetto alla RAM è: permanente, meno costosa, maggiori dimensioni e più lenta. La memoria secondaria è la più grande, la meno veloce e la meno costosa. La CPU può eseguire (ed elaborare) esclusivamente programmi (e dati) che risiedono in memoria principale (RAM) • I programmi ei dati risiedonoinmemoriasecondaria • Perciò devono essere copiati inmemoriaprincipale • Quandosi esegueunprogramma, il sistema operativo locopiadallamemoria secondaria (es.hard disk)e lo scrive dentro la RAM; l’operazionesi chiamaloading ocaricamento. È compostada: • supporti di memorizzazione componente fisico in cui vengono immagazzinati i dati Es.: DVD • dispositivi di memorizzazione leggono/scrivono dati dal/sul supporto di memorizzazione Es.: lettore DVD. Registrazione magnetica: la testina emette impulsi elettrici che invertono la polarità della superficie del supporto; 0 e 1 corrispondono a superficie magnetizzata e non- magnetizzata Registrazione ottica: il laser crea scanalature sulla superficie del disco; 0 e 1 corrispondono a superficie scanalata e non-scanalata Registrazione allo stato solido: si creano dei circuiti; 0 e 1 corrispondono a circuiti aperti e chiusi > le memorie ssd sono quelle ad accesso più veloce. Hard disk: disco fisso , è la memoria secondaria per eccellenza , memoria di tipo magnetico. La memoria magnetica: sfrutta il fenomeno fisico della polarità, sul supporto sono presenti particelle magnetiche , la testina di lettura/scrittura cambia / rileva la polarità delle particelle. La ricerca di un dato su un disco comporta un certo tempo che dipende da due fattori: Il primo fattore è il tempo di ricerca (SEEK) che indica quanto impiega la testina a posizionarsi sulla traccia desiderata Il secondo fattore è il tempo di latenza (ROTATION LATENCY) che indica quanto impiega il disco a ruotare fino al settore desiderato. La memoria ottica sfrutta la riflessione della luce laser. Sul supporto sono presenti delle minuscole scanalature (pit) cheformanozone chiare (luceriflessa)ezone scure (lucenonriflessa). Dispositivi di Input e di output. Si definiscono PERIFERICHE in quanto sono dispositivi esterni al computer Dispositivi di input: servono ad immettere programma e dati necessari all’elaborazione Dispositivi di output: servono a presentare i dati prodotti dall’elaborazione ricevendoli da CPU e RAM. Hardware del monitor: la superficie del monitor è divisa in pixel , monitor a cristalli liquidi e matrice attiva.

Si basa su 2 principi: 1) Non occorre mantenere sempre in memoria tutti i programmi in esecuzione 2) Le parti dei programmi meno usate si possono spostare sulla memoria secondaria. Swapping: quando un processo non è in esecuzione posso toglierlo temporaneamente dalla RAM e metterlo in memoria secondaria; quando ritorna in esecuzione lo riporto in RAM spostando eventualmente un altro processo. Le pagine vengono riportate in memoria quando servono nuovamente, eventualmente spostandone altre su disco.

  • Thrashing (conla‘h’, to thrash = dimenarsi): il s.o. impiegapiù tempoatrasferirele pagineda esu disco che aeffettuarelavoro utile •Sintomo:l’hard disk viene usato intensamenteeil computerèinutilizzabile •Soluzione: Aumentare la quantità di RAM oppure usare meno programmi contemporaneamente. File system > parte del sistema operativo che si occupa di gestire e strutturare le informazioni memorizzate sulla memoria secondaria. Il sistema operativo si occupa di registrare la posizione di tutti i file all’interno della memoria secondaria. Inoltre, deve fornire una visione astratta dei file su disco modo che l’utente abbia la possibilità di: identificare ogni file con un nome astraendo dalla sua posizione nella memoria, avere un insieme di operazioni per lavorare sui file, struttura i file, organizzandoli in sottoinsiemi secondo le loro caratteristiche, per avere una visione “ordinata” delle informazioni sul disco ed effettuare l’accesso alle informazioni mediante operazioni ad alto livello, che non tengono conto del tipo di memorizzazione. File di programma: un programma è solitamente fatto da più file, installazione e disinstallazione, esecuzione (caricamento in memoria del file principale del programma e creazione del processo corrispondente). Documenti: a seconda del tipo di documento esso potrà essere creato ed elaborato con programmi specifici. Il file system permette inoltre di intervenire sull’organizzazione dei documenti. I file devono essere organizzati in memoria secondaria perché sia facile reperirli! Il primo passo è associare a ciascun file una denominazione che permetta di identificarlo univocamente. L’estensione viene scelta dal programma con cui viene creato il file e identifica la tipologia di informazioni in esso contenute. Pathname: nome del percorso e indica il percorso da seguire per raggiungere un file in memoria secondaria. Per organizzare gerarchicamente i file, il sistema operativo deve fornire all’utente un insieme di operazioni per: creare, rimuovere, rinominare una directory. I file occupano dei blocchi su disco, e il sistema operativo deve sapere quali sono i file memorizzati sul disco e sapere in quali blocchi si trovano per poterli reperire. Device directory > una tabella memorizzata in una porzione prefissata dal disco che contiene un elenco di file descriptor. Ciascun file o cartella ha il suo file descriptor. Grazie al file descriptor il file system può anche mostrare all’utente le informazioni sulle principali caratteristiche di ogni file. L’allocazione consiste nella collocazione dei file nella memoria fisica. Può seguire principi differenti che servono a ottimizzare l’uso dello spazio dell’hard disk. Assumendo che l’hard disk è suddiviso in blocchi (ad esempio di 512 bytes) e che ogni file può occupare più di un blocco, l’allocazione può essere: - contigua- sparsa linkata- sparsa indexat.

Ognifile è memorizzato in blocchi adiacenti, tra loro contigui. Il recupero dell’intero file è facile perchè: Dato il primo dei blocchi si sa dove recuperareglialtri Si ha uno sprecodi memoriaquandounasequenzadi blocchi contigui non è grande abbastanza da ospitare il file Se il file aumenta di dimensioni si deve riallocare l’intero file. Allocazione sparsa: i blocchi che compongono il file sono sparsi per il disco. Abbiamo allocazione sparsa linkata o indexata. Nell’allocazione linkata il file descriptor contiene l’indirizzo del primo blocco, l’accesso ai file diventa sequenziale invece nell’allocazione indexata il file descriptor contiene l’elenco di tutti i blocchi. Durante l’attesa si dice che il processore è in uno stato inattivo (idle). Un processo è un programma in esecuzione. Sistemi multi-programmati: più programmi sembrano essere eseguiti contemporaneamente. •Un processopuòtrovarsiin uno dei tre stati: – inesecuzione, cioèèin esecuzione nella CPU (max un processo in esecuzione per ogni CPU) – inattesa, cioèattendecheun’operazionediI/O termini (o qualche altro evento esterno si verifichi) – pronto, cioèpuò andarein esecuzione,mala CPU è occupata ad eseguire un altro processo. Il s.o. ha il compitodi sceglierequaletrai processi pr onti (in stato Ready) mandare in esecuzione in mododa usarel’elaboratorein modo efficiente (no sprechi) ed efficace (per es. contempidi attesalimitati). In quali casi è opportuno fermare un processo e concedere il processore ad un altro processo? Se un processo non si ferma mai in attesa di input/output o di una risorsa o se più utenti vogliono usare il computer. Si parla di scheduling del processore quando il processore viene diviso equamente tra i processi dello stesso utente. Non si può mai verificare la transizione da wait a running e manco da ready a wait. La gestione delle periferiche comporta: • Aggiornamento costantesullo stato delle periferiche (libere / occupate) • Decisioni in merito all’assegnazionedelle periferiche (nello scheduling dei processi) • Controllodelle periferiche quando non occupate (es. quando il processo ne termina l’utilizzo) • Facility per l'utente che vuole usare le periferiche. La gestione avviene tramite i driver. Ogni driver è specifico di una periferica e di un sistema operativo perché ogni tipo di hardware ha un proprio linguaggio e una propria interfaccia. Il vantaggio di usare un driver è che il sistema operativo non deve sapere nulla di come è fatta la periferica con cui deve comunicare. Lo spooling è utilizzato dai driver delle periferiche per rendere virtualmente disponibili e condivisibili più periferiche di quante se ne hanno. Il Sistema operativo supporta i programmi applicativi:

  • in fase di installazione e disinstallazione
  • tramite l'interfaccia utente
    • durante l’esecuzione. Il sistema operativo gestisce al meglio l’installazione e disinstallazione dei programmi applicativi andando a collocarne in memoria le diverse parti e configurando i file necessari al loro corretto funzionamento. Il Sistema operativo offre l'interfaccia utente che consente agli utenti di interagire con il software applicativo semplicemente cliccando su icone o digitando sulla tastiera. Il Sistema operativo supporta i programmi durante l’esecuzione in vari modi:
  • gestisce l'accesso alla CPU, assegnando i cicli di

L'HUB è un punto di snodo della rete, cioè un dispositivo fisico che collega più computer o altri dispositivi e crea una rete locale. La sua funzione è di ripetere i dati ricevuti da un computer a tutti gli altri collegati. Lo SWITCH è più semplice di un hub in quanto è in grado di indirizzare i dati solo al destinatario corretto. In questo modo riduce la congestione della rete. Un FIREWALL è un sistema di sicurezza di rete, che può essere realizzato come dispositivo hardware o programma software. Il firewall controlla il traffico di rete in entrata e in uscita come una barriera tra una rete interna e reti esterne bloccando accessi non autorizzati e minacce. Ma Internet non è una singola rete, è un insieme di reti esteso in tutto il mondo, è la rete delle reti. Quando si scrive Internet con la I maiuscola si intende proprio la specifica rete che collega tutte le reti. Ma quando si scrive internet con la i minuscola si intende la tecnologia dell'internetworking (creare rete) che si basa sui protocolli TCP/IP. La prima rete realmente costruita si chiamava Arpanet ed è la progenitrice di Internet:

  • costruita nel 1969 collegando solo 4 NODI, cioè: l’Università della California, l’Università di Stanford, l’Università di Santa Barbara e l’Università dello Utah. Il progetto rimane però vivo nelle Università dove si intuisce l’utilità della rete come strumento per scambiare conoscenza. - La rete viene rinominata INTERNET (primi anni Novanta) e nasce anche il WORLD WIDE WEB. Il World Wide Web è solo uno dei servizi offerti da Internet. È un sistema di distribuzione di informazione a livello globale che consente a computer diversi in tutto il mondo di collegarsi a documenti messi dentro Internet. Rete delle reti: interconnessione delle reti (eterogenee) già esistenti (inter-networking). La comunicazione tra le componenti di una rete avviene sempre seguendo delle regole molto precise, cioè un protocollo. Il protocollo deve definire:
  • come è strutturato un messaggio
  • come associare un indirizzo ad ogni elaboratore presente nella rete
  • quale percorso devono seguire i messaggi per arrivare a destinazione
  • come rilevare e gestire gli errori di comunicazione. Nella rete Internet: - la comunicazione si basa sul protocollo TCP/IP (Transmission Control Protocol / Internet Protocol) - i messaggi vengono scambiati tra i nodi della rete secondo la commutazione di pacchetto. •I nodi comunicano fra loro tramite “commutazione di pacchetto”:
  1. Quando partono dal mittente, i messaggi vengono spezzati in “blocchetti”
  2. Ogni blocchetto viene “impacchettato”, cioè, associato ad una serie di informazioni, ad esempio:
  • Indirizzo di origine e indirizzo di destinazione: Numero di sequenza
  • Tipo di protocollo
  • Dimensione del pacchetto.
  • Controllo di errore.

Un’altra strategia alternativa alla commutazione di pacchetto è la “commutazione di circuito”. È la strategia applicata nella linea telefonica: Viene riservato un circuito di canali di comunicazione punto a punto su ogni connessione lungo tutto il cammino dal mittente al destinatario. Il vantaggio è che il circuito riservato consente sempre la comunicazione veloce, ma il circuito risulta occupato anche quando non si scambiano dati e all’aumentare delle comunicazioni si possono creare colli di bottiglia. La rete Internet, cioè il World Wide Web (per semplicità detta Web), è composta da miliardi di pagine distribuite sui server di tutto il mondo. Le pagine del Web hanno diversi livelli di accessibilità: Il Surface Web contiene tutte le pagine a cui accediamo liberamente (senza bisogno di credenziali) Il Deep Web contiene tutte le pagine a cui accediamo solo utilizzando le nostre credenziali. Il Dark Web contiene pagine a cui accediamo con browser speciali e conoscendo indirizzi specifici. Nel Surface Web possiamo: trovare tutte le informazioni che ci servono accedendo ad esempio a Wikipedia scaricare video e immagini da YouTube vedere le informazioni sui corsi di studio dell’Università di Torino vedere la pagina di accesso della nostra banca online trovare gli orari di treni e aerei visualizzare le mappe di ogni parte del mondo. In teoria, per trovare le pagine che soddisfano una query di un utente, un motore di ricerca dovrebbe leggere tutte le pagine del Web alla ricerca delle parole della query. In pratica, la ricerca viene resa molto più rapida utilizzando algoritmi che consentono: di trovare le pagine senza leggerle per intero di ordinare le pagine secondo la rilevanza rispetto alla nostra ricerca senza conoscere il significato del contenuto delle pagine. L’operazione di trovare le pagine si chiama matching e viene svolta da un algoritmo che seleziona tutte le pagine che contengono le parole della query. L’algoritmo di matching più utilizzato (quello di Google) si basa sull’indicizzazione delle pagine web. L’indicizzazione è un sistema usato nelle biblioteche fin dall’antichità e consiste nel creare liste di indici che sono associati al contenuto di ogni pagina (contenuto visibile o no). Il motore di ricerca gliele propone in ordine di rilevanza rispetto alla query usando un algoritmo di ranking. L’algoritmo di ranking più utilizzato (quello di Google) si basa sul principio dell’autorevolezza delle pagine web. Al di sotto del Surface Web si trova il Deep Web, la parte profonda della Rete. Nel Deep Web possiamo:  accedere al nostro conto bancario online  fare acquisti sui siti che vendono vari prodotti  vedere le nostre analisi mediche  accedere al libretto universitario  iscriverci agli esami.

Gli indirizzi statici rimangono invece invariati e sono associati a particolari reti che devono essere raggiungibili. Essi garantiscono l'assegnazione di indirizzi IP coerenti ai siti web e agli indirizzi e-mail collegati, e questo è fondamentale per consentire agli altri dispositivi di trovarli regolarmente sul web. Per proteggere le informazioni personali e l’identità online, occorre nascondere l’indirizzo IP: utilizzando un server proxy; utilizzando una VPN (virtual private network). Gli indirizzi logici sono composti da due o più parti Separate da punti, ad es. www.unito.it •Specificano domini, sottodomini, sotto-sottodomini e così via, fino a identificare il singolo elaboratore collegato in rete. Gli ISP regionali sono collegati a ISP internazionali detti NBP (National Backbone Provider) che collegano le diverse reti nazionali. Nel loro insieme i gestori degli ISP regionali e NBP internazionali formano la dorsale di Internet, la sua struttura portante. Nel caso dell’Italia esiste una dorsale gestita dal consorzio GARR. •Il DNS è il servizio che gestisce la traduzione tra indirizzi logici e indirizzi IP •Un unico server DNS per l’intera Internet sarebbe ingestibile; quindi, esistono vari server DNS distribuiti sul territorio che realizzano il servizio.

  • Ogni server DNS mantiene una lista con la risoluzione solo di alcuni indirizzi
  • Se gli arriva la richiesta di tradurre un indirizzo logico in un indirizzo IP che fa parte della sua lista, manda all’host la traduzione
  • Se la richiesta riguarda un indirizzo di cui non conosce la traduzione, risale la gerarchia fino ad un server DNS che la conosce. •Costituito da documenti ipertestuali che si trovano su elaboratori distribuiti in tutto il mondo •I contenuti dei vari documenti sono in genere collegati fra loro mediante link •I contenuti sono consultabili mediante programmi chiamati browser. •Un sito web è una locazione sul WWW; contiene documenti (testo, filmati, grafica, suoni) per il web gestiti da una organizzazione •L’home page di un sito web è il primo documento che gli utenti vedono; fa da guida al contenuto del sito e consente di accedere in modo semplice alle sue parti mediante link •Un server web è un elaboratore che trasmette le pagine web; ha un indirizzo IP e, di solito, un indirizzo logico. Un server web ospita uno o più siti web Link ipertestuale (hyperlink): sono parti “sensibili” nel documento web (in genere evidenziate) che consentono di muoversi da un documento a un altro (anche tra siti web diversi). HTML: linguaggio con cui sono scrittele pagine web HTTP: protocollo usato per le comunicazioni. Un URL è composto da:
  • protocollo
  • host
  • percorso del file. Opzionalmente può terminare con:
  • parametri
  • identificatore del frammento. •Protocollo: tipo di servizio richiesto

–http (HyperText Transfer Protocol) –https che è lo stesso protocollo ma con utilizzo della crittografia nello scambio di dati –termina con i caratteri :/. La crittografia è molto usata nella comunicazione in rete, non solo con il protocollo http, per garantire la sicurezza. I messaggi in rete possono: - non arrivare a destinazione (interruzione della comunicazione) - essere osservati da chi non ne ha diritto durante il transito in rete (intercettazione)- essere inviati da indirizzi falsi (creazione)- essere cambiati duranti il transito (modifica). È un insieme di tecniche per trasformare il messaggio in modo che si leggibile sono dal destinatario. Si basa sulla cifratura delle informazioni e può essere simmetrica o asimmetrica. Le forme di crittografia usate prima dell'informatica erano:

  • a sostituzione: un gruppo di caratteri viene sostituito con un altro gruppo di caratteri
  • a permutazione: gruppi di caratteri vengono spostati nel testo. Cifrario di Cesare: numera le lettere dell’alfabeto, genera una chiave K tra 1 e 20, per cifrare, sostituisci la lettera numero X con la lettera numero(X+K) mod 21. Per decifrare, sostituisci X con (X+K) mod 21. Il sistema di indirizzamento delle risorse è basato su un unico meccanismo standard che consente di fare riferimento a tutte le risorse presenti nel Web nello stesso modo, Uniform Resource Locator (URL):
    • informazioni (testo, immagini, suoni, video, ...)
  • risultati di esecuzioni
  • programmi eseguibili. Ogni pagina è codificata in linguaggio HTML, cioè, composta da un insieme di testo, riferimenti a immagini, suoni e video (contenuto) + la descrizione di come la pagine dovranno apparire sullo schermo dell’utente- Quando il browser riceve il file HTML mette insieme il contenuto con la descrizione e crea dinamicamente la pagina che effettivamente vediamo sullo schermo. HMTL: Una pagina Web (o documento Web) è una sorta di contenitore HTML in cui diversi oggetti (immagini, form, applicazioni, …) possono essere richiamati per poter essere visualizzati dal browser. Si parla di embedded objects:
  • gli embedded object sono indicati dentro l’HTML
  • ogni embedded object corrisponde ad unfile (esterno al file HTML) che viene caricato dentro il documento Web e visualizzato dal browser
  • gli embedded object non devono necessariamente risiedere sullo stesso server del file HTML. Memorizzando solo l’HTML e non la pagina Web completa di tutti i contenuti (embedded object):– Il file HTML occupa poca memoria – Il browser adatta la pagina per visualizzarla con le dimensioni e le caratteristiche dello specifico dispositivo usato dall’utente (PC, smartphone, tablet …), ad esempio con differenti risoluzioni del video. Il linguaggio di markup HTML è stato creato proprio per permettere la corretta visualizzazione delle pagine su qualsiasi dispositivo hardware connesso in rete: – Fornisce solo delle linee guida generali per la

costruire macchine in grado di pensare e quindi anche di manifestare tale capacità tramite l'uso del linguaggio umano. Alan Turing (1912-1954) intorno al 1935 getta le basi teoriche dell’informatica, descrivendo la cosiddetta “macchina di Turing”. Ben presto i ricercatori cominciano ad intuire le potenzialità del computer, e a progettare applicazioni in molti campi in cui esso potrebbe sostituire utilmente l’uomo, anche superandone le capacità in termini di efficienza e rapidità Quando si tratta di applicazioni che richiedono intelligenza, si parla di INTELLIGENZA ARTIFICIALE. L’intelligenza artificiale non è quindi un’invenzione recente, anche se solo oggi se ne sente parlare spesso e ovunque. La nascita dell’intelligenza artificiale coincide con quella dell’informatica e si basa sull’idea che il computer possa simulare il comportamento degli esseri umani, eseguire gli stessi compiti che eseguono gli esseri umani ad esempio con il linguaggio. L'espressione Artificial Intelligence fu coniata nel 1956 dal matematico americano John McCarthy. Secondo le parole di Marvin Minsky, uno dei "pionieri" della A.I., lo scopo di questa nuova disciplina sarebbe stato quello di "far fare alle macchine delle cose che richiederebbero l'intelligenza se fossero fatte dagli uomini”. Uno dei primi compiti intelligenti a cui si pensò di poter applicare il computer fu la traduzione da una lingua all’altra. Il problema della traduzione era urgente: Le differenze linguistiche cominciavano ad essere percepite come barriere allo sviluppo economico e scientifico, ma anche ai rapporti sociali La conoscenza di lingue straniere era allora retaggio di pochi. Una macchina in grado di tradurre dal russo all’inglese e viceversa sarebbe stata uno strumento strategico fondamentale per affrontare con successo la “guerra fredda”. Molti ricercatori (matematici, ingegneri, informatici ante litteram), tra cui Turing, erano convinti che in pochi anni sarebbero state costruite macchine in grado di tradurre perfettamente da una lingua all’altra come traduttori professionisti umani. Ma fecero l'errore di non consultare i linguisti e i traduttori che conoscevano bene il problema. Proprio Alan Turing aveva lavorato per i servizi segreti inglesi ed aveva coordinato lo sviluppo delle macchine per la decrittazione. La ricostruzione di una macchina per la decrittazione (denominata “bomba”) costruita da Turing e il suo team a Bletchley Park nel 1939. Nascono i primi sistemi di traduzione automatica, progenitori di Google Translate e di tutti quei sistemi che oggi ci consentono di ottenere una (solitamente corretta) traduzione da una lingua all’altra. Per verificare le prestazioni di una macchina propose un test, noto come “test di Turing”, che consente di capire se il comportamento

che la macchina esibisce può essere considerato intelligente. Il test si basa sulla capacità della macchina di utilizzare il linguaggio umano, mostrando di comprenderlo e di saperlo generare in modo adeguato. Il computer supera il test se fornisce risposte tali da indurre degli esseri umani a credere di avere a che fare con un altro parlante umano. Il linguaggio è stato spesso considerato da filosofi e scienziati come la caratteristica più tipica degli esseri umani e come il modo in cui essi manifestano intelligenza. Superare il test di Turing sembra non essere sufficiente per mostrare l’intelligenza di una macchina. La soglia per verificare l’”intelligenza” di una intelligenza artificiale si è spostata anche verso la creatività, le emozioni e la capacità di fare ironia, tutte cose che entrano pesantemente in gioco in tutta la comunicazione umana. Una quantità di libri e film hanno proposto entità artificiali dotate di capacità di linguaggio e ragionamento molto simili a quelle degli umani.Nel 1968, Stanley Kubrik, nel film “2001 ODISSEA NELLO SPAZIO”, immagina che nel 2001 lo sviluppo dell’intelligenza artificiale sia stato tale da poter costruire macchine pensanti e parlanti. HAL9000 è l’IA del film, macchina "incapace di commettere errore", capace di pensare e di comunicare in linguaggio umano, ma anche di tentare di distruggere gli esseri umani per evitare di essere spenta. In “INTERSTELLAR “l’intelligenza artificiale TARS, dall’aspetto poco umano, dialoga con i protagonisti facendo anche ironia, e li aiuta nel corso del loro viaggio attraverso lo spazio-tempo. Tra le applicazioni di intelligenza artificiale con cui entriamo più spesso in contatto ci sono quelle che riguardano il linguaggio umano. Sono le cosiddette «tecnologie del linguaggio» di cui si occupa quella parte dell’intelligenza artificiale che prende il nome di linguistica computazionale o NLP (natural language processing). Esse comportano forme di COMPRENSIONE DEL LINGUAGGIO UMANO che sono possibili da parte di una macchina solo se essa “conosce” le parole e le regole che governano il linguaggio ed il comportamento linguistico. Oggi disponiamo di computer che producono prestazioni linguistiche quasi della stessa qualità di quelle prodotte da un essere umano. Si tratta di compiti molto complessi che richiedono conoscenza linguistica ed extra linguistica. Le tecnologie della parola funzionano nello svolgimento di certi compiti, su certi tipi di testi e in certi contesti di applicazione. Al pari di un essere umano, per poter comunicare in linguaggio umano un sistema di NLP deve:

**- acquisire la conoscenza relativa al linguaggio

  • rappresentare al suo interno tale conoscenza
  • utilizzare tale conoscenza in modo da poter ricevere domande, coglierne il significato, generare risposte, tradurre, ecc.** Noi umani acquisiamo la