Documento universitario sui Sistemi di Elaborazione 1 2023-2024. Il Pdf, di Informatica, esplora la codifica binaria, l'architettura di Von Neumann, la gerarchia di memoria e la rappresentazione delle informazioni, includendo operatori condizionali e cicli di programmazione.
See more21 Pages


Unlock the full PDF for free
Sign up to get full access to the document and start transforming it with AI.
Tutti gli elaboratori codificano l'informazione in forma di numeri binari. L'unità atomica è costituita da bit, rappresenta una cella di memoria che può assumere uno di due valori (0 e 1). Solitamente si parla di memoria in termini di byte, cioè una successione di 8 bit. Può memorizzare un numero naturale tra 0 e 255 (ovvero 2^8-1). Più in generale, se ho N bit posso memorizzare un numero di valori differenti pari a 2^N.
Un computer, in italiano anche noto come elaboratore o calcolatore, è una macchina automatizzata programmabile in grado di eseguire sia complessi calcoli matematici (calcolatore) sia altri tipi di elaborazioni (elaboratore). Le architetture dei moderni elaboratori fanno riferimento ad un modello noto come 'architettura di Von Neumann' che è il modello con cui è stata descritta la struttura dei primi veri computer nell'immediato secondo dopoguerra mondiale.
Memoria di massa Periferiche di I/O Memoria centrale Unità aritmetico-logica (ALU) Unità di controllo Unità centrale di elaborazione Central Processing Unit (CPU)
CPU: esegue, coordina le istruzioni e comprende le componenti che eseguono le operazioni veloci. È composta da due parti: 1) Unità di controllo: tutta la parte hardware e software necessaria a sincronizzare il trasferimento di informazione. Coordina l'esecuzione dei programmi contenuti nella memoria centrale attraverso operazioni di fetch (richiamare la prossima istruzione da eseguire), decode (interpretare l'istruzione) e execute (esecuzione dell'istruzione). 2) Arithmetic and Logic Unit (ALU): esegue le elaborazioni fondamentali (es. op. matematiche, op. logiche). I dati su cui avvengono le elaborazioni sono contenute nei registri, memorie di capacità ridotta (16, 32, 64 bit), ma di rapido accesso. Ad oggi, è solitamente costituito da più core, ciascuno in grado di eseguire un'attività autonoma in parallelo con gli altri core. In teoria un computer dotato di 4 core è in grado di eseguire un complesso di attività 4 volte più veloce che se si usasse una sola CPU
Memoria Centrale: contiene i programmi in esecuzione, generalmente volatile, ovvero perde il contenuto se viene tolta alimentazione elettrica, più ampia perché contiene programmi in esecuzione. È più lenta dei registri, ma più veloce della memoria di massa. È detta anche RAM (Random access memory) perché il tempo di accesso ad una sua cella non dipende dalla posizione della cella stessa all'interno della memoria. Una porzione è detta ROM (Read-only memory), memoria non volatile che contiene codice scritto dal produttore. Cosa si intende per posizione di cella di memoria? Intendiamo la memoria come sequenza lineare di celle-contenitori, di dimensione pari a 1 byte. Ciascuna cella è identificata da un numero progressivo a partire da 0 detto indirizzo (di memoria). Per questioni di efficienza, la lettura/scrittura avviene in sottosequenze di byte contigue (2, 4 o più), identificate dal byte con l'indirizzo più basso.
Memoria di massa (secondaria): memoria non volatile, lento accesso ed economica, contiene grandi dimensioni. Esistono tre tecnologie principali: 1) Dischi magnetici: supporti con una o entrambe le facce ricoperte di materiale magnetizzabile. Dischi vengono montati su un asse rotante (tra 4200 e 15000 gr/min. L'accesso in lettura/scrittura avviene tramite una o più testine a seconda delle facce attive(movimento radiale) e le informazioni sono organizzate in tracce concentriche (unità di trasferimento) separate da settori. 2) Dischi ottici: funzionamento simile ai dischi magnetici, ma le informazioni sono organizzate in un'unica traccia a spirale (dall'esterno all'interno), la lettura (unica operazione possibile nei CD-Rom) avviene tramite un braccetto dotato di un emettitore laser e un ricevitore che misura, tramite la riflessione del laser, informazione binaria memorizzata sulla superficie del disco. Masterizzazione è effettuata tramite un laser con maggiore energia tramite il riscaldamento prodotto dal laser sulla superficie del disco. I dischi ottici sono più lenti dei dischi magnetici. 3) Dischi a stato solido: informazione memorizzata in termini di carica elettrica «intrappolata», detta tecnologia Flash. L'informazione binaria viene codificata dall'assenza (0) o presenza (1) di carica nella cella. Le operazioni di lettura/scrittura non richiedono parti meccaniche, molto veloci e tempi di accesso costanti. Possiede delle limitazioni come il costo elevato, la capienza ridotta e il degrado dovuto all'utilizzo.
Periferiche di I/O: comunicazione in ingresso (es. tastiera, microfono) e uscita (es. display, speaker) con l'utente. Comunicazione tramite porte e protocolli (gestiti da driver). Il file è archivio contenitore univocamente caratterizzato da un nome simbolico (filename) e da alcuni attributi. nome_proprio.ext dove ext è l'estensione che va da 1 a 5 caratteri. I file sono gestiti da una parte del sistema operativo, detta file system. A seconda del quale, i nomi possono distinguere minuscolo e maiuscolo (case-sensitive) oppure no (case-insensitive). Sono di dimensione non prefissata e generalmente sono memorizzati in memorie non volatili (memoria secondaria o terziaria). Sono organizzati in cartelle, dette directory e sottocartelle, tale organizzazione si chiama percorso. Una directory è un file speciale che elenca un sottoinsieme di file o di altre directory. Ha dunque una struttura ramificata (albero dei directory) a partire dalla directory radice o root root p1 p2 p3 f22 f23 q1 q2 pippo.a + C:\p1\q2\pippo.a pippo.a -+ C:\p1\q3\pippo.a q3 f11 ('/' in Unix, C:\ in Windows).Ogni directory contenuto nella radice definisce un nuovo livello entro il quale potrebbero trovarsi di nuovo file e directory, e questi ultimi creerebbero un ulteriore livello. Il nome di percorso (pathname) di un file indica in maniera univoca l'elenco delle directory per andare dalla radice al file.x
Grazie ai core la CPU opera molto più velocemente, ma il tutto è limitato dalla memoria centrale e da programmi che operano da soli, che rallentano molto l'operato. Perciò, è stata introdotto un altro tipo di memoria chiamato memoria cache (nascosta): collocata tra la CPU e la memoria centrale, è una memoria volatile molto veloce, ma molto costosa. Conserva i dati provenienti o destinati alla memoria centrale usati più di recente (copia di un sottoinsieme delle informazioni nella RAM). Tutta la tecnologia della cache è costruita per massimizzare la probabilità che il prossimo dato richiesto dalla CPU si trovi nella memoria cache. Recentemente sono stati definiti più livelli di cache (L1, L2, L3), con L1 più vicina alla CPU (generalmente ogni core ha una propria cache L1). Importante è capire la gerarchia della memoria: Andando dall'alto in basso della figura aumenta la capacità tipica, diminuisce il costo specifico ma aumenta il tempo di accesso. I due ultimi livelli distinguono memoria a stato solido da dischi magnetici per ribadire la diversa velocità. Talvolta, quando i supporti ottici o i vecchi nastri magnetici vengono usati per archivi di lungo periodo ad aggiornamento non frequente (ad esempio al backup), si parla di memoria terziaria. Un'ulteriore opzione di memorizzazione, disponibile da qualche tempo, rappresentata da quei servizi resi attraverso Internet che consentono la memorizzazione e manipolazione remota di file (cloud).
Processor SUPER FAST SUPER EXPENSIVE TINY CAPACITY CPU PROCESSOR REGISTER CPU CACHE FASTER EXPENSIVE SMALL CAPACITY CACHE LEVEL 1 (L1) CACHE LEVEL 2 (L2) CACHE LEVEL 3 (L3) CACHE PHYSICAL MEMORY FAST EDO, SD-RAM, DDR-SDRAM, RD-RAM and More .. PRICED REASONABLY AVERAGE CAPACITY RAMDOM ACCESS MEMORY (RAM) Memoria centrale SSD, Flash Drive AVERAGE SPEED PRICED REASONABLY AVERAGE CAPACITY NON-VOLATILE FLASH-BASED MEMORY Memoria secondaria VIRTUAL MEMORY Mechanical Hard Drives SLOW CHEAP LARGE CAPACTITY FILE-BASED MEMORY A Simplified Computer Memory Hierarchy Illustration: Ryan J. Leng Memoria secondaria o terziaria CPU SOLID STATE MEMORY
I linguaggi di programmazione hanno un certo numero di tipi di dati fondamentali, per i quali vengono definiti regole per la rappresentazione di costanti (literal) e un insieme abbastanza ampio di operazioni elementari. In questo modo si consente al programmatore di operare in modo astratto sulle variabili di tipo elementare. Importante è la distinzione tra quantità (o valore) e rappresentazione del valore: · Valore: è un concetto assoluto e consiste in una delle finite o infinite possibilità che il dominio del tipo di dati consente ad un suo rappresentante. · Rappresentazione: un concetto relativo, fa riferimento ad una convenzione, rispetto alla quale è possibile fornire un'informazione "corrispondente" al valore rappresentato. Esiste quindi una corrispondenza biunivoca tra valore e rappresentazione tale da consentire una più comoda manipolazione delle rappresentazioni piuttosto che dei valori. Si tratta di una rappresentazione approssimata di dati di dominio non finito per condurli a un dominio approssimato finito, in modo da rappresentare tutti i dati in sequenza ordinate, finite di bit. La rappresentazione può essere: · Interna: segue convenzioni compatibili con il funzionamento di un elaboratore (rappresentazione binaria); · Esterna: consente un'agevole manipolazione dell'informazione da parte dell'uomo. È compito dell'elaboratore eseguire delle operazioni per passare da una rappresentazione esterna ad una interna, e viceversa.
In Python non esiste un tipo riconducibile ai numeri naturali, ma solo si numeri interi (int). Viene considerato un numero naturale quel literal tale che sia un numero decimale senza punto radice e segno forniti in una notazione posizionale in un certa base b di n cifre. La rappresentazione in una notazione posizionale in un certa base b di n cifre di un numero a ha queste caratteristiche: · 0≤a≤Br-1 ● a = an- jan-2 ... a0 0 ≤ a; ≤ B-1 · a = an-ı*Bn-1 + ... + ao*Bo Somma in Base B: 1. Sommate le cifre dei numeri in base B aventi la stessa posizione 2. Controllate se la somma di due cifre è maggiore o uguale alla base 3. Se sì, sottraete la base e passate il riporto alla cifra successiva (massimo 1, perché si può dimostrare che la somma c di due cifre è 0 ≤ c ≤2*B-2) Dati a', a" due numeri in base B con n cifre: · 0 ≤ a',a" ≤ B"-1 . se s = a'+a"->0≤s≤2*(B"-1)=2*B"-2 . 2*B"-2 > B"-1 In generale la somma non è rappresentabile con n cifre: la condizione di superamento di capacità (overflow) è denotata dalla presenza di un riporto unitario dalla cifra più significativa (quella di peso n-1). Negli elaboratori, ove si utilizza la base 2, si decide a priori il numero n di bit riservati agli operandi e al risultato e così facendo si rende prefissato anche il valore massimo rappresentabile. Analoga è la sottrazione. Il prodotto e la divisione richiedono la costruzione di appositi componenti hardware del processore. Va comunque osservato che per la moltiplicazione si ha: p=a' *a" 0 <= p <= (b"-1)2 ~= b2*n Ciò significa che la rappresentazione del prodotto di due numeri a n cifre necessita in generale di 2*n cifre se si vuole evitare overflow. Per ragioni analoghe conviene prevedere che la divisione venga realizzata tra un dividendo a 2*n cifre e un divisore a n cifre, fornendo come risultato un quoziente e un resto rappresentati con n cifre. Questo però può produrre una condizione di overflow .. Un'ulteriore condizione di errore è data dalla divisione per 0 che, non essendo nemmeno definita l'operazione, produce un'eccezione o interruzione interna che deve essere gestita con un programma apposito.
Con due simboli e k cifre posso rappresentare 2k-1 numeri. Da binario a decimale: 54321 0 100101 2 = 1*25 + 0+24 + 0+23 + 1*22 + 0+21 + 1*2º = 25 + 22 + 2º = 3710 Da decimale a binario: 17010 / 2 quoziente resto 85 /2 0 1 101010102 == 17010 42 /2 21 /2 10 / 2 0 1 0 5 12 2 12 1 /2 0 1 1 0 DEI-DSS UNIV PD @ 20: