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


Architettura dei Calcolatori: Organizzazione, Memoria e Gestione dei File, Appunti di Elementi di Informatica

Una panoramica approfondita dell'architettura dei calcolatori, coprendo argomenti chiave come l'organizzazione del sistema di elaborazione, i diversi tipi di memoria (ram, rom, cache, memoria di massa), la gestione dei file e il funzionamento della cpu. vengono descritti in dettaglio i componenti principali, il ciclo fetch-decode-execute e il modello di computer giocattolo lmc. Utile per studenti universitari e di scuola superiore interessati all'informatica.

Tipologia: Appunti

2023/2024

Caricato il 06/05/2025

irene-fedrizzi-2
irene-fedrizzi-2 🇮🇹

5 documenti

1 / 23

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
INTRODUZIONE ALL’INFORMATICA
L’informatica è uno strumento per descrivere e risolvere problemi mediante una serie di calcoli.
ALGORITMO insieme di passi che definiscono il modo in cui viene risolto un problema, ma:
-il risultato che si vuole ottenere deve essere definito in modo preciso e verificabile;
-gli input del problema devono essere manipolabili da un computer;
-i passi da svolgere devono essere eseguibili da un computer.
DA ALGORITMI A PROGRAMMI
Prima che un computer possa risolvere un problema è necessario scoprire un algoritmo che lo risolve. L’algoritmo
deve essere rappresentato in una forma compatibile con la macchina. La rappresentazione di un algoritmo si
chiama programma.
Per comodità degli esseri umani, i programmi sono stampati su carta o visualizzati su uno schermo. Per la comodità
delle macchine, i programmi sono codificati in modo compatibile con la macchina. Il processo di sviluppo di un
programma e la sua codifica in forma compatibile con la macchina si chiama programmazione.
HARDWARE E SOFTWARE
Iprogrammi e gli algoritmi che essi rappresentano sono definiti software:
-Descrive le operazioni che trasformano informazione;
facilmente modificabile dall’utente;
La macchina stessa è nota come hardware:
-Descrive la struttura fisica del calcolatore: le operazioni che è in grado di eseguire e come comunica l’informazione
con l’esterno;
-Non èmodificabile dall’utente.
LO STUDIO DEGLI ALGORITMI
Lo studio degli algoritmi è nato come questione matematica; la ricerca di algoritmi è iniziata molto prima dello
sviluppo dei computer.
Obiettivo: trovare un unico insieme di operazioni che permettono di risolvere tutti i problemi di un particolare tipo.
Una volta trovato un algoritmo, risolvere il problema si riduce al semplice processo di seguire le indicazioni
dell’algoritmo.
ALGORITMI E INTELLIGENZA
Si può dire che l’intelligenza necessaria per risolvere il problema è codificata nell’algoritmo. Catturare l’intelligenza
attraverso gli algoritmi ci permette di costruire macchine che eseguono compiti utili. Il livello di intelligenza delle
macchine è limitato dall’intelligenza che può essere trasmessa attraverso gli algoritmi.
I LIMITI DEI COMPUTER
Possiamo costruire una macchina che svolga un compito solo se esiste un algoritmo per eseguirlo. Viceversa, se non
esiste un algoritmo per risolvere un problema, la soluzione di quel problema è al di delle capacità delle macchine.
L’identificazione dei limiti delle capacità algoritmiche si è consolidata come argomento in matematica negli anni
Trenta.
Lo studio delle capacità algoritmiche che ne derivò fu l’inizio del campo oggi noto come informatica.
ALGORITMI E INFORMATICA
È lo studio degli algoritmi a costituire il nucleo dell’informatica.
AlgoritmiLimitazioni Applicazioni Analisi Esecuzione Comunicazione Scoperta
Rappresentazione
COMPETENZE
1) il modo in cui le informazioni vengono codificate e memorizzate all’interno dei computer
2) il funzionamento interno di base di un computer
3) il software che controlla il funzionamento complessivo di un computer (sistema operativo)
4) la rappresentazione degli algoritmi e il processo di sviluppo di programmi in Python
5) chiudiamo il nostro studio indagando i fondamenti teorici dell’informatica, per comprendere i limiti degli
algoritmi (e quindi delle macchine).
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17

Anteprima parziale del testo

Scarica Architettura dei Calcolatori: Organizzazione, Memoria e Gestione dei File e più Appunti in PDF di Elementi di Informatica solo su Docsity!

INTRODUZIONE ALL’INFORMATICA

L’informatica è uno strumento per descrivere e risolvere problemi mediante una serie di calcoli. ALGORITMO →insieme di passi che definiscono il modo in cui viene risolto un problema, ma: -il risultato che si vuole ottenere deve essere definito in modo preciso e verificabile; -gli input del problema devono essere manipolabili da un computer; -i passi da svolgere devono essere eseguibili da un computer. DA ALGORITMI A PROGRAMMI Prima che un computer possa risolvere un problema è necessario scoprire un algoritmo che lo risolve. L’algoritmo deve essere rappresentato in una forma compatibile con la macchina. La rappresentazione di un algoritmo si chiama programma. Per comodità degli esseri umani, i programmi sono stampati su carta o visualizzati su uno schermo. Per la comodità delle macchine, i programmi sono codificati in modo compatibile con la macchina. Il processo di sviluppo di un programma e la sua codifica in forma compatibile con la macchina si chiama programmazione. HARDWARE E SOFTWARE →I programmi e gli algoritmi che essi rappresentano sono definiti software : -Descrive le operazioni che trasformano informazione; -É facilmente modificabile dall’utente; →La macchina stessa è nota come hardware : -Descrive la struttura fisica del calcolatore: le operazioni che è in grado di eseguire e come comunica l’informazione con l’esterno;

  • Non è modificabile dall’utente. LO STUDIO DEGLI ALGORITMI Lo studio degli algoritmi è nato come questione matematica; la ricerca di algoritmi è iniziata molto prima dello sviluppo dei computer. → Obiettivo : trovare un unico insieme di operazioni che permettono di risolvere tutti i problemi di un particolare tipo. Una volta trovato un algoritmo, risolvere il problema si riduce al semplice processo di seguire le indicazioni dell’algoritmo. ALGORITMI E INTELLIGENZA Si può dire che l’intelligenza necessaria per risolvere il problema è codificata nell’algoritmo. Catturare l’intelligenza attraverso gli algoritmi ci permette di costruire macchine che eseguono compiti utili. Il livello di intelligenza delle macchine è limitato dall’intelligenza che può essere trasmessa attraverso gli algoritmi. I LIMITI DEI COMPUTER Possiamo costruire una macchina che svolga un compito solo se esiste un algoritmo per eseguirlo. Viceversa, se non esiste un algoritmo per risolvere un problema, la soluzione di quel problema è al di là delle capacità delle macchine. L’identificazione dei limiti delle capacità algoritmiche si è consolidata come argomento in matematica negli anni Trenta. →Lo studio delle capacità algoritmiche che ne derivò fu l’inizio del campo oggi noto come informatica. ALGORITMI E INFORMATICA È lo studio degli algoritmi a costituire il nucleo dell’informatica. Algoritmi→Limitazioni →Applicazioni →Analisi →Esecuzione →Comunicazione →Scoperta →Rappresentazione COMPETENZE
    1. il modo in cui le informazioni vengono codificate e memorizzate all’interno dei computer
    2. il funzionamento interno di base di un computer
    3. il software che controlla il funzionamento complessivo di un computer (sistema operativo)
    4. la rappresentazione degli algoritmi e il processo di sviluppo di programmi in Python
    5. chiudiamo il nostro studio indagando i fondamenti teorici dell’informatica, per comprendere i limiti degli algoritmi (e quindi delle macchine).

PENSARE DA INFORMATICI

-Come i matematici gli informatici si avvalgono di linguaggi formali per esprimere dei concetti; -Come gli ingegneri gli informatici progettano svariate cose, compongono singole parti in sistemi e valutano costi e benefici tra varie alternative; -Come i naturalisti gli informatici osservano come si comportano dei sistemi complessi, formulano delle ipotesi e verificano le loro previsioni. Risolvere problemi richiede: -formulare il problema -pensare in maniera creativa alle possibili soluzioni -esprimere una soluzione in modo chiaro ed accurato -Imparare a programmare è un ottimo modo per mettere alla prova la propria bravura nel risolvere problemi. COS’è UN PROGRAMMA Serie di istruzioni che spiegano come effettuare un “calcolo”: un calcolo di tipo matematico soluzione di equazioni, radici di un polinomio; un calcolo di tipo simbolico ricerca di una parola in un testo, manipolazione di sequenze di DNA o RNA; un calcolo di tipo multimediale elaborazione di un’immagine, visualizzazione di un filmato. TIPI DI ISTRUZIONI Ci sono cinque tipi di istruzioni fondamentali:

  • input : ricevimento di dati dalla tastiera, da un file, dalla rete,...
  • output : invio di dati allo schermo, salvataggio su un file, trasmissione verso la rete,...
  • matematiche : esecuzione di operazioni matematiche di base, come addizione, moltiplicazione,...
  • condizionali : controllo di determinate condizioni ed esecuzione del blocco di istruzioni appropriato
  • ripetizioni : esecuzione ripetuta di una certa azione

PYTHON →Linguaggi formali e linguaggi naturali

-Linguaggi naturali sono le lingue parlate, come italiano, inglese, francese non sono opera di qualcuno, si sono evoluti naturalmente. -Linguaggi formali sono appositamente creati per specifiche applicazioni: la notazione matematica, la notazione delle reazioni chimiche,... -Linguaggi di programmazione sono linguaggi formali progettati per descrivere algoritmi. SIMBOLI E STRUTTURA I linguaggi formali seguono regole rigide che vanno rispettate alla lettera →regole sui simboli: definiscono gli elementi di base. Linguaggi naturali vs. linguaggi formali -Ambiguità -Ridondanza -Letteralità Pensate al computer come ad un impiegato con punti di forza: velocità, precisione e debolezze: -mancanza di empatia -incapacità di cogliere il quadro generale ERRORI DEI PROGRAMMI Gli errori di programmazione sono detti bug e il procedimento della loro ricerca e correzione è chiamato debug. →ci sono tre tipi di errori:

  1. Errori di sintassi : il programma non segue le regole sui simboli o sulla struttura
  2. Errori in esecuzione : interrompono l’esecuzione del programma
  3. Errori di semantica (o dilogica): il programma esegue senza errori, ma non fa’ la cosa giusta.

Byte : usato per le dimensioni della memoria e la velocità di trasmissione; posso usare sequenze di Byte. Un calcolatore è una macchina per elaborare simboli → linguaggio →informazione Si possono mediante esso memorizzare ed elaborare vari tipi di informazioni (numeri, testi, immagini, suoni…). Occorre rappresentare tale informazione in formato MANIPOLABILE dall’elaboratore. Altre unità di misura KiloByte (KB), MegaByte (MB), GigaByte (GB) Sistema Internazionale (SI): 1 KB = 1000 byte = 103 byte 1 MB = 1000 KB = 106 byte 1 GB = 1000 MB = 109 byte In informatica si adotta anche un altro sistema di misure – IEC – International Electrotechnical Commission: 1 KB = 1024 byte = 210 ∼ 103 byte 1 MB = 1024 KB = 220 ∼ 106 byte 1 GB = 1024 MB = 230 ∼ 109 byte →IEC è usato per la capacità della memoria di un elaboratore e per le dimensioni dei file; →SI è usato per le capacità degli hard disk e schede di memoria IL SISTEMA DECIMALE 10 cifre di base: 0, 1, 2,... , 9 Notazione posizionale: la posizione di una cifra in un numero indica il suo peso in potenze di 10: unità = 10^^0 = 1 (posiz. 0) decine = 10^^1 = 10 (posiz. 1) centinaia = 10^^2 = 100 (posiz. 2) migliaia = 10^^3 = 1.000 (posiz. 3) decine di migliaia = 10^^4 = 10. centinaia di migliaia = 10^^5 = 100. milioni = 10^^6 = 1.000.

... Esempio: numero in notazione decimale Il numerale 2304 in notazione decimale (o in base 10) rappresenta la quantità: 2304 = 2 · 10^^3 + 3 · 10^^2 + 0 · 10^^1 + 4 · 10^^ = 2000 + 300 + 0 + 4 = 2304 (numero) Nota: numero e numerale qui coincidono, perché il sistema decimale è quello adottato come sistema di riferimento. Il sistema binario 2 cifre di base: 0 e 1. Notazione posizionale: la posizione di una cifra in un numero binario indica il suo peso in potenze di 2: 2^^0 = 1 (posiz. 0) 2^^1 = 2 (posiz. 1) 2^^2 = 4 (posiz. 2) 2^^3 = 8 2^^4 = 16 2^^5 = 32 2^^6 = 64 2^^7 = 128 2^^8 = 256 2^^9 = 512; 210 = 1024; 211 = 2048, 212 = 4096;...

Cifre e numeri Sist. Decimale = 99... 99 = 10^^N − 1 Sist. Binario = 11... 11 = 2^^N − 1 Esempio: 11111111 (8 bit binari) = 2^^8 − 1 = 255 Per rappresentare 256 ci vuole un bit in più: 100000000 = 1 · 2^^8 = 256 Quindi: Fissate quante cifre (bit) sono usate per rappresentare i numeri, si fissa anche il numero più grande che si può rappresentare: con 16 bit: 2^^16 − 1 = 65. con 32 bit: 2^^32 − 1 = 4.294.967. con 64 bit: 2^^64 − 1 = circa 1, 84 · 1019 Conversione da base 2 a base 10 -Basta moltiplicare ogni bit per il suo peso e sommare il tutto; -La conversione è una somma di potenze; -Se il numero binario termina per 1 è dispari, altrimenti è pari Esempio: conversione del numerale 10100 10100 = 1 · 2^^4 + 0 · 2^^3 + 1 · 2^^2 + 0 · 2^^1 + 0 · 2^^0= 16 + 4= 20 Conversione da base 10 a base 2 Dividere il numero per 2 ripetutamente finché il risultato non è 0 Scrivere i resti in ordine inverso Esempio: conversione del numero 12 Divisioni: 12/2 = 6, 6/2 = 3, 3/2 = 1, 1/2 = 0 Resti: 0 0 1 1 12(10) = 1100(2) Codifica del testo Un testo è una sequenza di caratteri (lettere, numeri, punteggiatura, spazi,... ) Quanti caratteri possiamo avere? -26 lettere maiuscole + 26 minuscole = 52 -10 cifre -Circa 30 segni d’interpunzione -Circa 30 caratteri di controllo (a capo, fine del testo, tabulazione,... ) -Totale: circa 120 oggetti complessivi Quanti bit mi servono? Codice ASCII : utilizza 7 bit e può rappresentare 2^^7 = 128 caratteri -Con 8 bit (= 1 byte) rappresento 256 caratteri (ASCII esteso) →c’è spazio anche per le lettere accentate -UNICODE: può rappresentare anche i caratteri non latini (greco, cirillico, lingue orientali,... ) che usano 32 bit -UTF-8 (Unicode Transformation Format, 8 bit) è una codifica di caratteri Unicode in sequenze di lunghezza variabile di byte Problema: rendere digitale una informazione prettamente analogica Esistono due tecniche principali: →Una prevede la scomposizione dell’immagine in una griglia di tanti elementi (punti) che sono l’unità minima di memorizzazione: Formato Raster/Bitmap →La seconda strada prevede la presenza di strutture elementari di natura più complessa, quali linee, circonferenze, archi, etc.: F ormato Vettoriale

Bitmap a colori Analogamente possono essere codificate le immagini a colori: -bisogna definire un insieme di sfumature di colore differenti e rappresentarle mediante una opportuna sequenza bit -Nella codifica RGB si utilizzano tre colori rosso (Red), verde (Green) e blu (Blue) -Nella codifica RGB si utilizzano tre colori rosso (Red), verde (Green) e blu (Blue) -Ad ogni colore si associa un certo numero di sfumature codificate su N bit (2N possibili sfumature) Esempio Ad ogni colore si associa un certo numero di sfumature codificate su N bit (2^^N possibili sfumature): →con 2 bit per colore si ottengono 4 sfumature per colore e 4 · 4 · 4 = 64 colori →con 8 bit per colore si ottengono 256 sfumature per colore e 256^^3 ∼ 16 milioni di possibili colori Esempi di formati bitmap: JPG, PNG, BMP Codifica vettoriale delle immagini -Si utilizza quando le immagini da memorizzare hanno caratteristiche geometriche ben definite -Il disegno viene scomposto in elementi base come una linea o un arco di circonferenza -La memorizzazione dell’intera immagine avviene tramite la codifica di ogni singola parte -Richiede poco spazio: →Per definire un segmento bastano le coordinate dei due estremi (Linea dal punto <10;12> a <20; 30>) -Esempi di formati vettoriali: PostScript, PDF, SVG, WMF Codifica dei suoni -Si effettuano dei campionamenti su dati analogici -L’onda sonora viene misurata (campionata) ad intervalli regolari -Si rappresentano i valori campionati con valori digitali -La frequenza del campionamento determina la fedeltà della riproduzione del suono: →Minore è l’intervallo di campionamento e maggiore è la qualità del suono -CD musicali: 44000 campionamenti al secondo, 16 bit per campione -Si possono usare tecniche di compressione -Alcuni formati: WAV, MP3, OGG, AAC Codifica di filmati Immagini in movimento sono memorizzate come sequenze di fotogrammi -la sequenza continua di immagini viene discretizzata ottenendo una serie di immagini (frame) -In genere si tratta di sequenze compresse di immagini bitmap: ad esempio si possono registrare solo le variazioni tra un fotogramma e l’altro -Esistono vari formati contenitori (comprendente il sonoro): mpeg, avi, quicktime, mkv, wmv -La codifica stessa è specificata tramite codec →WMV9, MPEG-4, RealVideo, h -Lo stesso contenitore può ospitare codec diversi

SISTEMA DI ELABORAZIONE

Il calcolatore bus-oriented L’architettura di un elaboratore è costituita da: Bus, CPU, Memoria, periferiche di INPUT/OUTPUT Linguaggio macchina: codificato da sequenze di bit; è in grado di eseguire:

  • Istruzioni aritmetico-logiche (+ - x ÷)
  • Istruzioni di trasferimento dati (lettura e scrittura di dati dalla memoria e dai dispositivi di I/O)
  • Istruzioni di controllo (modificano il flusso di esecuzione delle istruzioni) Queste istruzioni sono eseguite dalla CPU (processore di esecuzione) secondo il ciclo Fetch-Decode-Execute L’esecuzione delle istruzioni in linguaggio macchina da parte del sottosistema di esecuzione (chiamato anche processore o CPU ) avviene secondo i seguenti principi: -dati e istruzioni sono memorizzati nella stessa memoria, che puo essere letta e scritta -i contenuti della memoria sono identificati dalla loro posizione, indipendentemente dal tipo di dato o istruzione -le istruzioni vengono eseguite in modo sequenziale, seguendo l’ordine in cui sono scritte nel programma, salvo indicazioni differenti contenute nelle istruzioni di controllo **CPU (Central Processing Unit)** In grado di eseguire programmi, ossia sequenze di istruzioni elementari. —>Costituita da tre parti: **1. unità aritmetico-logica ALU** : elaborazione dati, esecuzione istruzioni, gestione registri **2. registri:** piccole celle di memoria temporanea, servono per memorizzare gli operandi per le istruzioni di calcolo dell’ALU ( **generici** se utilizzati per gli operandi di un’operazione logica/aritmetica, e il risultato o **speciali** , per operazioni particolari come mantenere l’istruzione corrente da eseguire) **3. unità di controllo CU:** coordinare le attività. Preleva dalla memoria centrale l’istruzione da eseguire (tale istruzione è determinata dal registro PC) e la salva nel registro IR. **ALU** -L’ALUè l'unità aritmetico-logica che esegue le istruzioni e gestisce i registri della CPU. -Eun circuito in grado di eseguire operazioni aritmetiche e logiche su 2 operandi, rappresentati su n bit (es. 32/ bit); oltre al risultato dell’operazione puo produrre informazioni ulteriori (il risultato è zero, sie verificato un overflow, etc.) -Il tipo di operazione selezionata, in un dato istante, dipende dallo stato della CU. -Alcune delle operazioni possibili: aritmetiche, logiche, di confronto, lettura/scrittura della memoria

ESEMPIO

-Supponiamo do dover eseguire la seguente istruzione: “somma il contenuto dei registri R02 e R03 e metti il risultato nel registro R01”. Inizialmente supponiamo di avere nel registro PC l’indirizzo dell’istruzione sopra (x) -Fase di reperimento dell’istruzione (fetch): —>Lettura del contenuto della cella di memoria numero x —> Copia di tale contenuto nel registro IR. —>Incremento del valore di PC: PC=x + 1 -Fase di decodifica (Decode): —>Selezionare il circuito della somma della ALU; selezionare i registri R1 e R3 come input ed il registro R4 come output -Fase di Esecuzione (Execute): —>Attivare il circuito somma della ALU; Percorso dei dati illustrato Clock →è un orologio di sistema, la CPU utilizza gli impulsi del clock per sincronizzare le sue attività. L’unità di misura fa parte dell’ordine dei gigahertz (GHz). -Il processore esegue ogni istruzione mediante una sequenza ben definita di operazioni detta ciclo FDE -L’orologio di sistema (Clock) invia impulsi ad intervalli regolari predefiniti alle altre componenti del sistema. -La CPU utilizza gli impulsi del clock per sincronizzare le sue attività. -La velocità del clock, ovvero il numero di impulsi al secondo inviati al clock, si misura in Hz -Il processore esegue ogni istruzione mediante una sequenza ben definita di operazioni detta ciclo FDE -L’orologio di sistema (Clock) invia impulsi ad intervalli regolari predefiniti alle altre componenti del sistema. -La CPU utilizza gli impulsi del clock per sincronizzare le sue attività. -La velocità del clock, ovvero Il numero di impulsi al secondo inviati dal clock, si misura in Hz. -Maggiore è la velocità di clock, maggiore e la velocità della CPU (Attenzione pero che non è l’unico fattore per determinare la velocit`a di tutto il calcolatore) -Attualmente, il clock di una CPU di un PC è sull’ordine dei gigahertz (GHz), miliardi di cicli al secondo del clock, ovvero il numero di impulsi al secondo inviati dal clock, si misura in Hz.

La memoria svolge 2 compiti:

**1. supporto alla CPU (memoria centrale)

  1. archivio (memoria di massa)** Criteri di caratterizzazione della memoria: →velocità (tempo di accesso-quanto passa tra la richiesta e la relativa risposta-, velocità di trasferimento-transfer rate, cioè quanti byte al secondo si possono trasferire) → volatilità (cosa succede quando la memoria non è alimentata? Per quanto tempo i dati vi rimangono immagazzinati?) → capacità (quanti byte può contenere, dimensiona massima) → costo (per byte). Esistono diversi tipi di memorie, in base alle diverse esigenze (velocità per il supporto della CFU, non volatilità ed elevate dimensioni per l’archivio) e alle diverse tecnologie ( elettronica : veloce, costosa e volatile; magnetica e ottica : non volatile ed economica, ma molto lenta) Ci sono: 1. memoria centrale RAM: contiene i dati e le istruzioni dei programmi in esecuzione, opera come supporto alla CPU, **veloce, volatile, costosa.
  2. memoria di massa:** archivia grandi moli di dati che non vengono utilizzati di frequente, il contenuto deve essere accessibile anche dopo lo spegnimento del calcolatore, capiente, non volatile ed economica. (magnetiche per pc o a stato solido per disp.mobili) 3. Registri : contengono informazioni necessarie all’elaborazione della singola istruzione per la ALU (massima velocità e reattività). RAM La memoria centrale o memoria principale, detta anche RAM (Random Access Memory, ovvero memoria ad accesso casuale, perche qualsiasi cella puo essere letta/scritta in un tempo, mediamente, costante), è la memoria in linea con il processore, che contiene i dati e i programmi che sono attualmente utilizzati/in esecuzione →Un programma, quando non e oggetto di elaborazione,e memorizzato su memoria di massa (dischi) →Quando deve essere eseguito, viene caricato tutto o in parte, in memoria centrale RAM- La RAM puo essere considerata come una sequenza di celle: →ciascuna cella ha la dimensione di un byte (8 bit) →Ogni bit è presente come stato (alto o basso) di tensione e viene rappresentato con le cifre binarie 0/ →Ciascun byte nella memoriae individuato da un indirizzo che lo distingue da tutti gli altri, costituito da un numero variabile da 0 a 2^^N−1, dove N `e la dimensione in bit della parola (ovvero dei registri del processore). RAM- Le operazioni che si effettuano sulla memoria sono operazioni di lettura e scrittura: -Entrambe presuppongono l’utilizzo di un indirizzo che identifica univocamente la cella interessata all’operazione -L’operazione di scrittura è distruttiva, cioè cancella l’informazione precedentemente contenuta nella cella. -L’operazione di lettura preserva il contenuto della cella indirizzata: all’esterno della memoria centrale viene trasferita

Memorie a stato solido è la memoria di massa più comune nei dispositivi mobili, molto diffusa anche computer desktop e portatili. →Funzioni: -trasferimento dati (chiavette USB, schede di memoria) -possono sostituire i dischi magnetici (SSD) Questa tecnologia elettronica non volatile è caratterizzata da bassi consumi e piccole dimensioni, con capacità dai 256Mb ai 1, 2 e 4 TB; inoltre il tempo di accesso è istantaneo. La velocità di trasferimento dipende dalla tipologia: è bassa per le versioni più economiche (chiavette USB) e superiore a quella dei dischi magnetici negli SS. Caratteristiche di una Memoria I parametri fondamentali che definiscono una memoria sono: -Dimensione della parola (locazione di memoria) -Permanenza o volatilità dei dati -Capacità (numero di locazioni disponibili), espressa in KB, MB, GB, etc. -Tempo di accesso, necessario per accedere ad una locazione di memoria per un’operazione di lettura o scrittura, espresso in nanosec, millisec, sec →In base agli ultimi due parametri, è possibile definire una gerarchia di memorie, che va da memorie più capaci ma più lente (memorie di massa) a memorie piccole e veloci (registri). Gerarchia di Memorie Dati e tipi di memoria Ecco la classificazione delle memorie in base al tempo di utilizzo dei dati: →Registri: dati in utilizzo →Cache e RAM: dati di utilizzo in un futuro immediato →ROM: dati permanenti (programmi) utilizzati all’avvio del calcolatore →Memoria Secondaria: dati di utilizzo non immediato Bus è considerato l’architettura più consolidata per il calcolatore prevede che la CPU, la memoria e le periferiche siano collegate attraverso un unico canale di comunicazione, il bus. Esso è fisicamente realizzato mediante un insieme di connettori elettrici. Una delle caratteristiche del Bus è il numero di bit che riesce a trasportare contemporaneamente. Durante ogni transazione sul bus un dispositivo prende il controllo del bus, invia una richiesta ad un secondo dispositivo e svolta successivamente la richiesta, così il bus viene liberato per una successiva eventuale comunicazione.

Periferiche di Input/Output Sono i dispositivi di comunicazione ed interazione tra utente e computer: esse consentono l’acquisizione dei dati (input), la loro archiviazione (storage) e la loro presentazione verso il mondo esterno (output). Si possono classificare in base a tre diverse caratteristiche: → comportamento: Input (read once), output (write only) e memoria (rilettura/riscrittura); →Partner: uomo o macchina; →Velocità del flusso dei dati: quantità di dati trasferiti nell’unità di tempo da/verso la CPU o la memoria centrale. Wooklap -CU→coordina le attività -ALU→esegue le operazioni aritmetiche e logiche -Program Counter→contiene l’indirizzo della prossima istruzione da eseguire -Instruction Register→contiene la prossima istruzione da eseguire -Accumulatore→contiene dati da elaborare → I dati che la CPU elabora in questo momento: Registri →Le prossime istruzioni da seguire: Memoria Cache o Memoria Centrale (memoria intermedia più veloce di quella di massa) →Le foto della vacanza dell’anno scorso: Memoria di Massa

THE LITTLE MAN COMPUTER (LMC)

Esso è un modello di computer giocattolo, creato da Stuart Madnick nel 1965. Ha una architettura molto semplice: -una memoria composta da 100 celle, numerate da 0 a 99; -ogni cella può contenere un’istruzione oppure un dato, codificati con 3 cifre decimali con segno, dal valore −999 al valore 999; -un dispositivo di input che permette di ricevere valori numerici (sempre a 3 cifre con segno); un dispositivo di output che permette di stampare valori numerici;

  • 9 istruzioni possibili Simulatore: https://peterhigginson.co.uk/lmc/ LMC: CPU La CPU ha solamente 4 registri: -Program Counter: indirizzo della prossima istruzione da eseguire -Instruction Register: una cifra decimale che codifica l’istruzione da eseguire -Address Register: due cifre con un indirizzo di memoria -Accumulatore: a tre cifre, usato per fare i calcoli

LMC: Dati ed etichette Per semplificare la scrittura dei programmi, possiamo usare etichette che danno un nome a degli indirizzi di memoria. →Le etichette a sinistra di un’istruzione sono convertite nell’indirizzo di memoria in cui l’istruzione è memorizzata (loop start INP). →Le etichette a destra di un’istruzione prendono il valore dell’indirizzo di memoria indicato sopra (BRA loopstart) →Un’etichetta seguita da una dichiarazione DAT indica un indirizzo di memoria in cui i dati sono immagazzinati (un numero DAT 42) Esempio : valore assoluto Questo programma calcola il valore assoluto di un numero: usa un salto condizionato per capire se il numero è positivo o negativo →se negativo, sottrae il numero da 0 per cambiare il segno usa le etichette per semplificare la scrittura INP // ricevi il numero BRP fine // se `e zero o positivo, vai alla fine (// questa parte viene eseguita se il numero è negativo) STA numero // salva il numero in memoria, serve dopo LDA zero // carica 0 nell’accumulatore SUB numero // sottrai: 0 - numero // quando arrivi qui l’accumulatore contiene il valore assoluto fine OUT // produci il risultato HLT // fine. // definizione dei dati zero DAT 0 numero DAT 0 L’algoritmo di Euclide è un algoritmo per trovare il massimo comune divisore (MCD) tra due numeri interi; è uno degli algoritmi più antichi che si conoscono: è presente negli Elementi di Euclide (300 a.C.), ma probabilmente conosciuto già 200 anni prima. Esso procede sottraendo ripetutamente il numero più piccolo dal numero più grande. Per calcolare MCD (a, b):

  1. Se a = b, allora a `e il valore del MCD ed abbiamo finito
  2. Se a > b, allora a diventa uguale a a − b
  3. Se a < b, allora b diventa uguale a b − a
  4. Ripeti da 1) Esercizio : l’algoritmo di Euclide Scrivi un programma che esegue l’algoritmo di Euclide nel Little Man Computer. Come fa il programma a stabilire se a = b, a > b, oppure b > a? Come fa il programma a ripetere finché a non diventa uguale a b?

SISTEMA OPERATIVO - SO

Un sistema operativo è un insieme di programmi che agisce da intermediario fra hardware e software applicativo. È un insieme di moduli software che astraggono le caratteristiche dell’hardware sottostante, rendendo il calcolatore più semplice da utilizzare. Crea un ambiente per poter eseguire altri programmi. Esempi: Android e Apple, iOS, Linux, Windows (…) serve a: -Rendere utilizzabili le risorse fisiche presenti nel sistema →infrastruttura software, che si pone come interfaccia per l’infrastruttura hardware e serve a facilitarne l’utilizzo e la gestione. FUNZIONI

1. esecuzione di applicazioni (caricamento dei dati e delle istruzioni nella memoria centrale, preparazione e gestione risorse, inizializzazione dei dispositivi di ingresso/uscita) 2. ingresso ai dispositivi di input/output (gestione segnali necessari per il trasferimento dati, consente di ragionare in termini di operazioni astratte di lettura/scrittura) 3. archiviazione di dati e programmi (fornire un’organizzazione logica dei dati sotto forma di cartelle -directory- e file) 4. controllo di accesso (condivisione di risorse da parte di più utenti o applicazioni, meccanismi di protezione e politiche di risoluzione degli eventuali conflitti) 5. Rilevazione e gestione dei malfunzionamenti ELEMENTI DI UN SO —>MODULI SOFTWARE CHE SI OCCUPANO DI COSE DIVERSE 1. Sistema di gestione del processore (controlla la CPU, definisce quali programmi sono da eseguire e quali compiti sono da assegnare alla CPU) 2. Sistema di gestione della memoria centrale RAM (controlla l’assegnazione della memoria ai diversi programmi che possono essere contemporaneamente in esecuzione) 3. Sistema di gestione delle periferiche (garantisce l’accesso ai dispositivi di ingresso/uscita, maschera i dettagli di basso livello e gli eventuali conflitti che possono presentarsi nel caso che diverse richieste arrivino contemporaneamente a uno stesso dispositivo) 4. Sistema di gestione dei file - file system (consente l’archiviazione e il reperimento dei dati sfruttando le periferiche che costituiscono la memoria di massa) 5. Sistema di interfaccia utente - shell (interprete dei comandi, permette agli utenti di accedere in maniera semplice e intuitiva) 6. Sistema di gestione della rete (comunicazione con altri calcolatori, interfaccia con risorse collegate via rete).. SISTEMA DI INTERFACCIA UTENTE - LA SHELL È il programma che permette agli utenti di comunicare con il sistema e di avviare programmi applicativi. Può essere grafica o testuale (Linux) —> es) all’avvio di Windows la Shell è grafica, ma come altri SO ha anche una potente shell testuale. SISTEMA DI GESTIONE FILA - FILE SYSTEM Gestisce la memoria di massa. Presenta all’utente l’organizzazione logica dei dati e le operazioni possibili (modifiche, recupero, cancellazione).

  • FILE: contenitore logico di informazioni ; unità logica di memorizzazione, conserva le informazioni anche dopo la fine del programma che lo ha generato. nome.estensione Organizzati in cartelle in una gerarchia ad albero. Il percorso si ottiene mettendo in sequenza i nomi dei nodi che si incontrano partendo dalla radice per arrivare al file. L’unità di memoria di massa dove risiede il file si identifica con una lettera seguita dai due punti. es: C:\Didattica\Esami\primoappello.doc

ORGANIZZAZIONE AD ALBERO

IL PERCORSO DI UN FILE : stringa di caratteri Il percorso identifica in modo univoco un file: -si ottiene mettendo in sequenza i nomi dei nodi che si incontrano partendo dalla radice per arrivare al file -La sintassi dipende dal sistema operativo Windows: -L’unità di memoria di massa dove risiede il file si identifica con una lettera seguita da due punti (A:, B:, C:…) e il carattere di separazione è lo stesso di Linux. Linux e Mac OS -Le unità di memoria di massa diventano cartelle del file system -Esiste una “cartella speciale” che si chiama radice e contiene l’intero file system —>si identifica con il simbolo / -il carattere di separazione è / —>Esempio: /Didattica/Esami/primoappello.doc SISTEMA DI GESTIONE DEL PROCESSORE

  • prima → SO uni programmati ( monotasking ), esecuzione di un solo programma per volta
  • ora → SO multiprogrammati ( multitasking ), esecuzione di più programmi per volta (Windows, Linux, Mac OS (…) Ma se il calcolatore ha una sola CPU, come fa ad eseguire più programmi contemporaneamente? Affidandosi al gestore processi (time sharing, quanti, assegnazione ai processi per l’esecuzione sulla CPU). TIME SHARING:

PROGRAMMI E PROCESSI

Programma: Entità statica composta dal codice eseguibile dal processore. Processo: Entità dinamica che corrisponde al programma in esecuzione, composto da: codice (il programma), dato (quelli che servono per l’esecuzione del programma), stato (a che punto dell’esecuzione ci si trova, cosa c’è nei registri, ecc.). Per evitare l’utilizzo esclusivo della CPU da parte di un solo processo: -Tempo suddiviso in unità di tempo:quanti -Ogni processo ha assegnato un quanto di tempo per l’esecuzione sulla CPU che gli viene tolta allo scadere per assegnarla a un altro processo -Un processo rinuncia alla CPU spontaneamente quando è in attesa di operazioni di ingresso/uscita -La scelta dei turni di assegnazione della CPU ai processi dipende dalle politiche decise dal sistema operativo -La durata del quanto di tempo incide sulle prestazioni del sistema SISTEMA DI GESTIONE DELLA MEMORIA CENTRALE - RAM Si occupa di tenere traccia di quali parti della memoria sono usate e da chi, assegnare e liberare lo spazio di memoria quando necessario (chiedendolo al SO) e di decidere quali processi caricare quando diventa disponibile spazio in memoria. Il gestore della memoria “realizza” una macchina virtuale in cui ciascun programma opera come se avesse a disposizione una memoria dedicata. MEMORIA VIRTUALE -Nei SOmultitasking, più programmi possono essere caricati contemporaneamente in memoria -Spesso la memoria non è sufficiente per contenere completamente tutto il codice dei processi, ma nel modello FDE si assume che un programma risieda nella memoria principale per essere eseguito! -Il gestore della memoria ci permette di barare realizzando una memoria “virtuale” molto più grande di quella fisica →teniamo, per ogni programma, solo un sottoinsieme dei suoi dati e delle sue istruzioni. Il resto le parcheggiamo nella memoria di massa (tecnicamente nella cosiddetta area di swap) <z→quando ci viene chiesto un dato o un’istruzione non in memoria, si recupera in fretta dalla memoria di massa, si mette in quella principale, e poi si invia alla CPU.