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


Allocazione dinamica della memoria, Appunti di Fondamenti di informatica

Come l'informatica si occupa dell'elaborazione e della rappresentazione delle informazioni, con un focus sulla dinamica dell'allocazione della memoria in un computer. Il testo include esempi e spiegazioni dettagliate su come le operazioni di lettura e scrittura avvengono nella memoria centrale, come funzionano i registri MAR, MDR e RDP, e come i programmi possono essere caricati e eseguiti. Il documento anche include una sezione su Assembly e una tabella per illustrare il ciclo di esecuzione di una CPU.

Tipologia: Appunti

2020/2021

Caricato il 15/09/2022

luca-conti-11
luca-conti-11 🇮🇹

12 documenti

1 / 71

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Conti Luca
Gennaio 2021
INFORMATICA
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47

Anteprima parziale del testo

Scarica Allocazione dinamica della memoria e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

Conti Luca

Gennaio 2021

INFORMATICA

Sommario

1. Introduzione all’informatica [pag. 3 ] - Cos’è l’informatica? - L’evoluzione; - Caratteristiche; - Concetti, Codifica e Decodifica; - _Processo operativo;

  1. Numeri e operazioni [pag. 6 ]_
    • Rappresentazione posizionale e pesata;
    • Metodi di conversione.
    • Operazioni;
    • Segno;
    • Complemento a due;
    • Bit di Flag;
    • _Virgola fissa e virgola mobile;
  2. Informazioni ed Elaborazione [pag. 1 5 ]_
    • Informazioni;
    • Elaborazione dell’informazione;
    • Porte logiche;
    • Analisi e sintesi dei circuiti;
    • _Circuiti logici;
  3. Macchina di Von Neumann [pag. 2 1 ]_
    • Introduzione e parti;
    • Memoria;
    • Operazioni;
    • Lettura e scrittura della memoria;
    • Interfaccia con le periferiche;
    • Tipologia di istruzioni;
    • _Esecuzione di un programma;
  4. Assembler [pag. 3 1 ]_
    • Introduzione;

Viene assegnato il valore 0 in caso, la tensione è nulla. Viene assegnato il valore 1, quando il transistor riceve la presenza del segnale di tensione.

I. Introduzione all’Informatica

  • Cos’è l’informatica L’informatica è un insieme di due aspetti, il primo l’elaborazione dell’informazione, mentre il secondo la rappresentazione della stessa informazione. Le informazioni legate all’informatica sono di tre tipi: I. Numeriche {N,Z,Q,R,C}; II. Alfanumeriche {Tutti i tasti della tastiera}; III. Multimediali {video, immagini ed audio};
  • L’evoluzione L’informatica nasce nel 1600 con l’invenzione delle prime macchine meccaniche, durante il corso del tempo si evolve con le tecnologie pneumatiche (calcolatori elettronici), fino ad arrivare ai giorni nostri in cui la tecnologia è diventata elettronica e si divide in due famiglie:
  • I calcolatori analogici, in cui il numero che si vuole rappresentare viene rappresentato subito come una grandezza fisica; a=1,37 il modo più semplice per rappresentarlo è 1,37 volt
  • I calcolatori digitali, che operano in due stati stabili;
  • Caratteristiche Nell’informatica la comunicazione avviene mediante numeri, ma poiché il sistema decimale non sarebbe conveniente, si utilizza un sistema numerico di due cifre, lo 0 e l’1, detto sistema binario. I componenti comunicano tra loro mediante numeri, ma questi numeri sono ricavati da segnali di tensione, che vengono convertiti da un transistor; Il transistor è un dispositivo elettronico che lavora in due stati stabili, ed assegna ad ogni stato un valore, lo 0 o l’1; Solitamente i transistor hanno queste due configurazioni di tensione: 0 V 3,3 V 0 V 5 V 0 1
  • Concetti, Codifica e Decodifica Quando noi scriviamo sulla tastiera andiamo ad inserire all’interno della macchina i cosiddetti concetti, che nel modo in cui li scriviamo non sono affini alla macchina stessa, per questo motivo dobbiamo tradurli attraverso la decodifica. Fig. 1.1. Schema di codifica e decodifica. Per svolgere l’operazione di codifica si fissa un numero n di bit, (i bit sono una quantità di informazione associata ad un alfabeto composto da due simboli) dipendono dalla capacità della macchina, successivamente vado ad indicare il numero massimo di codifiche distinte disponibili in quella macchina con 2n, ed il numero di concetti da codificare deve essere compreso tra 0 e 2n- 1. N.B. Si pone il - 1 perché è associato alla codifica dello 0. L’operazione di decodifica è l’operazione inversa, per questo sul grafico ci sono le doppie frecce, infatti ci permette di tradurre il linguaggio binario, più appetibile alla macchina, nel linguaggio da noi utilizzato, o meglio nell’informazione voluta in quel momento, che sia di testo, audio o video. Decodifica dei primi dieci numeri Fig.1.2. Esempio codifica. Poiché so che devo decodificare i primi 10 numeri, avrò 10 concetti, quindi avrò la necessità di utilizzare una macchina con almeno 4 bit. 0 ≪ 𝑐𝑜𝑛𝑐𝑒𝑡𝑡𝑖 ≪ 2 𝑛^0 ≪ 10 ≪ 16 − 1

II. Numeri e operazioni

  • Rappresentazione posizionale e pesata Come già detto precedentemente in informatica non si utilizza il sistema di numerazione decimale, bensì quello binario. Per la conversione tra i due sistemi si sfrutta la cosidetta rappresentazione posizionale e pesata. La rapresentazione posizionale e pesata è un sistema che assegna ad ogni numero del sistema decimale il valore di 10n, in cui n varia appunto in base alla posizione dove si trova quell’elemento all’interno del numero intero. a10=123 123= 3* 2^0 +2* 2^1 +1* 2^2 In poche parole con questo metodo in base a quanti n numeri abbiamo andiamo ad assegnare ad ogni elemento il 10 elevato al suo esponente. Gli esponenti partono da n- 1 fino ad arrivare a 0, n-1 essendo l’esponente maggiore si assegna al primo elemento da sinistra, successivamente passiamo al secondo elemento da sinistra al quale si assegna n-2 e così via, fino ad arrivare al primo elemento da destra al quale si assegna 0. La rappresentazione viene definità posizionale, perché nella codifica è importante la posizione, infatti se non fosse così 123 sarebbe uguale a 321, invece non lo è. Si definisce poi pesata perché è un metodo efficiente. Dalla notazione posizionale e pesata possiamo andare a ricavare un importante risultato dell’informatica, ossia l’Algortitmo di lunga divisione. a 10 = a 0 *2^0 +a 1 *2^1 +a 2 * 2^2 +…+ an- 1 *2 n-^1 raccogliendo il 2 a fattor comune ottengo a 10 =a 0 +2(a 1 +a 2 *2^1 +a 3 *2^2 +…+an- 1 *2n) in cui a 10 è il dividendo, a 0 il resto, 2 il divisore e la parte in parentesi è il quoziente.
  • Metodi di conversione Per passare da decimale a binario o viceversa esistono due metodi. Il primo metodo per passare da decimale a binario consiste in una divisione in linea. Prima di svolgere questa divisione però bisogna fissare un valore di n tale che 2 𝑛^ − 1 ≫ 𝑎 10 Dove a10 è il numero in decimale che si vuole convertire. a 10 = a10 ∈ N 2 𝑛^ − 1 ≫ 𝑎 10 27 − 1 ≫ 123

61^1 a

30^1 a

15^0 a

7^1 a

3^1 a

1^1 a

0^1 a

(a 10 ) 2 =a6 a5 a4 a3 a2 a1 a0=1111011= =12^0 +12^1 +02^2 +12^3 +12^4 +12^5 +1*2^6 =1+2+0+8+16+32+64= Inizialmente per svolgere la conversione vado a trovare un valore di n tale che 2n-1 sia maggiore di 123. Successivamente svolgo la divisone in colonna di 123 per 2 e trovo una serie di 0 ed 1, che rappresentano il risultato della conversione e vanno letti dal basso all’alto. Infine ho dimostrato la correttezza della conversione mediante la rappresentazione pesata.

  • Operazioni Con i numeri binari si possono svolgere le operazioni di addizione, sottrazione, moltiplicazione. Addizione Dati due numeri a10=32 e b10=15 svolgere l’operazione di addizione. Addizione

100000 + a 2

1111 = b^2

101111 C^2

C2=101111 = 1 + 12^1 + 12^2 + 12^3 + 02^4 + 1*2^5 = 1 + 2 + 4 + 8 + 0 + 32 = 47

Il risultato in binario è 101111, che convertito in decimale è 47

7^1

3^1

1^1

0^1

16^0

8^0

4^0

2^0

1^0

0^1

Conversione di a10 Conversione b n=6 a 2 =10000 n=4^ b 2 =

Dopo aver effettuato le conversioni da decimale a binario, svolgo la moltiplicazione in cui la somma di 1+1 da come risultato 0 con un resto di 1 Il risultato finale è C 2 =1 1011 che equivale a 27 in decimale.

  • Segno Un fattore molto importante da tenere in conto nella conversione binaria è il segno del numero, infatti per evitare un'unica combinazione di 0 e 1 per due numeri diversi si pone un valore davanti al numero ottenuto. Nel caso in cui il numero è positivo pongo 0, nel caso in cui il numero è negativo pongo 1. Questo problema si verifica principalmente nell’estensione dei numeri in Z a ∈ Z e |a|∈ N a=segno(a)|a| a10=+15 sign(a)|a| a MS = a10=- 15 sign(a)|a| a MS = In questo esempio notiamo che il modulo del numero 15 in binario è 1111, di conseguenza poiché al + si assegna 0 ed a – si assegna 1, vado a porre questi valori davanti ai due numeri, ottenendo due configurazioni diverse ed evitando errori di lettura. 1001 x a 11 = b 1001 1001 - 11011 C N Z + -

Z

Fig.1. Estensione numeri in Z

  • Complemento a due Il complemento a due è il metodo di rappresentazione dei numeri più utilizzato in informatica. Questo metodo è diventato molto diffuso principalmente per un motivo, ossia le operazioni di addizione e sottrazione vengono riunite in un unico circuito detto sommatore, questo è possibile perché nel CP2 non viene analizzato il segno. Il CP2 è molto utile nel caso dei numeri in Z e per la rappresentazione di questi è neccessaria una condizione −𝟐𝒏^ ≪ 𝒙 ≪ 𝟐𝒏−𝟏^ − 𝟏 , con x ∈ Z. Questa condizione sostanzialmente ci dice che il numero x in decimale deve essere compreso tra gli estremi, quindi per la trasformazione del numero in CP2 dobbiamo scegliere un valore n di bit addatto a far rispettare la condizione. Nel CP2 ci sono due diverse configurazioni in base alla positività o negatività di x: 𝑥𝐶𝑃 2 = (𝑥)𝑏𝑛,𝑛 𝑠𝑒 𝑥 ≫ 0 CP 𝑥𝐶𝑃 2 = ( 2 𝑛^ − |𝑥|)𝑏𝑛,𝑛 𝑠𝑒 𝑥 < 0 Quindi nel caso il numero sia positivo, questo rimane invariato, nel caso il numero sia negativo, questo diventerà 2n^ meno il modulo di x. Siano dati i numeri decimali a10=+5 e b10=-5 trasformarli in CP2. Poiche a10=+5 è un numero maggiore di zero resterà +5, quindi devo solo decidere il numero di n bit per far si che sia valida la condizione −𝟐𝒏^ ≪ 𝒙 ≪ 𝟐𝒏−𝟏^ − 𝟏. Scegliendo un valore di n=4 la condizione è rispettata −𝟏𝟔 ≪ 𝟓 ≪ 𝟏𝟓 e posso procedere alla trasformazione in binario. In questo caso, quando trasformo in binario, mi sarebbero bastati n=3 bit, ma poiché ne ho scelti 4 devo continuare la divisione in colonna fino a quando non ho 4 fattori. Passiamo ora alla conversione di b10=-5, essendo questo un numero negativo il suo valore cambierà; inanzitutto devo scegliere un valore n di bit, è poiché prima ho scelto n=4 ed rispettava la condizione lo riscelgo. Dopo aver scelto il valore di n bit, passo alla trasformazione del numero che diventa b10 = 2 n - |x| = 16 – 5 = 11.

2^1

1^0

0^1

0^0

5^1

2^1

1^0

0^1

L’esercizio così è concluso, la parte evidenziata è il numero trovato con i bit a disposizione, ed il primo numero della parte in verde rappresenta il segno, che per l’appunto è positivo e rappresenta +11, confermando la correttezza del calcolo. Anche in questo caso ho la presenza di un bit di carry.

  • Bit di Flag In informatica i bit di flag, sono un insieme di informazioni binarie che permettono di trasformare un calcolatore, in una macchina in grado di prendere decisioni. Il funzionamento di queste avviene mediante l’assunzione di due stati, vero o falso, ossia 1 o 0, e questi bit si attivano ogni volta che eseguo un operazione. Esistono diversi tipi di bit di flag, i principali sono: - Carry; - Overflow; - Positività; - Zero; o OVERFLOW L’Overflow è una condizione che si verifica quando il risultato è scorretto su n bit, poiché il segno degli operandi è discorde con quello del risultato. Questo avviene in 0+0=1 oppure 1+1=0. Per ovviare a questa situazione, utilizzo un numero maggiore di bit. a – b = a + (-b) a CP2 = b CP2 =(1110) + 1 = 0001 + 1 = 0010 In questo caso non ho Overflow perché gli addendi sono discordi. a CP2 = b CP2 =(0010) + 1 = 1101 + 1 = 1110

RIS 101011

In questo caso ho Overflow, perché quando non ho due numeri discordi, due numeri negativi non ne possono generare uno positivo, per risolvere la situazione basta considerare un numero di bit maggiore, così da far rientrare nella soluzione l’1 davanti alla parte evidenziata, che rende il risultato corretto. o CARRY Indica che il risultato non è contenibile nei bit usati per il calcolo, come negli esercizi precedenti. o ZERO Indica se la codifica su n bit contiene tutti 0; o POSITIVITA’ Indica se c’è come primo elemento uno 0 in CP2. o NOTZERO Indica se la codifica su n bit non contiene tutti 0; o NEGATIVITA’ Indica se c’è come primo elemento uno 1 in CP2. I bit vengono memorizzati in celle, detti registri, ed ogni cella contiene un bit. Il registro più importante è quello di flag, che appunto ci da notizie della varia presenza dei bit appena introdotti. Per dirci se questi bit sono presenti la macchina deve prendere delle decisioni, ma non è in grado di farlo, bensì è il grado di svolgere calcoli, quindi trasformo queste decisioni in operazioni. If (condizione logica) allora Ist1. altrimenti Ist2.

  • if (a ≫ b) a – b ≫ 0
  • if (a = b) a – b = 0
  • Virgola fissa e virgola mobile In informatica esistono due tipologie di virgole, o meglio due metodi di utilizzo di virgole, la virgola fissa e la virgola mobile. La virgola fissa è quella utilizzata in aritmetica, la cui posizione, così come dice il suo nome è fissa. La caratteristica della virgola fissa è che un certo numero di byte, fissato, sarà utilizzato per rappresentare la parte intera ed un certo numero di byte verrà utilizzato per rappresentare la parte decimale. Qundi quando utilizzo la virgola fissa, stabilisco un valore di q e di n e scrivo il numero in base a quei valori X ∈ Q X= 3. 1 Se soddisfa Ist1. , altrimenti Ist2. n-q q

III. Informazioni ed elaborazione

  • Informazioni Come detto precedentemente esistono tre tipi di informazioni legate alla macchina; Abbiamo le informazioni: I. Numeriche {N,Z,Q,R,C}; II. Alfanumeriche {…,’a’, …,’z’,….’A’,….,’Z’,…,’0’,…,’9’,…}; Le informazioni alfanumeriche composte in totale da 256 caratteri, racchiusi nella tabella ASCI=American Standard code information interchange. III. Multimediali {video, immagini e segnali}; I segnali sono un numero infinito di punti a intervalli definiti. Sostanzialmente si campiona il segnale ogni periodo di tempo T e si va a studiare l’informazione; questo intervallo di cui si studierà l’informazione sarà pari a n bitk campioni. Fig.1.5 Grafico dei segnali. Le immagini sono caratterizzate dai pixel, che sono un informazione di colore. Per i pixels si usa la codifica dei colori RGB, che è in grado di trasformare un informazione da 3 byte a una che ha due byte. Queste informazioni sono la luminanza, che è l’elaborazione dell’immagine in scale di grigio, mentre l’altra e la crominanza che è l’aggiunta di colore al grigio. In sostanza possiamo dire che un immagine è una specie di tabella di dimensione _nm*sizeof(pixels)_ , divisa in tanti quadratini, in cui ogni quadratino rappresenta un pixel. Ogni pixel è una composizione cromatica di 3 colori (3byte=red,green,blu) che poi posso convertire in due byte. Fig. 1.6. Tabella dell’immagine in pixels.
  • Elaborazione dell’informazione Come detto nel capitolo precedente, in informatica si lavora mediante i segnali di tensione che vengono “riscritti” come 0 e 1 per comunicare con l’intera macchina.

L’elemento che riceve questi segnali di tensione è il transistore, in particolare il transistore CMOS. Fig.1.7. Transistore CMOS nelle due posizioni di vero e falso. Come possiamo vedere dall’immagine il transistore può assumere due posizioni, nell’immagine di sinistra abbiamo il passaggio di tensione e di conseguenza il transistore assegnerà il valore 1 ossia di verità. Nell’immagine a destra il transistore è aperto e non avviene il passaggio di corrente e si assegna il valore 0 ovvero quello di negatività. Basandoci su queste due informazioni ricavate fino ad ora, ovvero quella di positività e quella di negatività, possiamo iniziare a scrivere la prima tabella di verità, ossia quella di negazione. NOT sia a, b ∈ B, e possiamo notare che la negazione di a è il suo opposto, infatti il valore 0 di falso diventa 1 ed il valore 1 di vero diventa 0.

  • Porte logiche Nel paragrafo precedente abbiamo introdotto la prima porta logica ossia quella di negazione,ma oltre a quellane esistono altre, alcune derivare, altre no. - OR A B 0 1 1 0 a b C 0 0 0 0 1 1 1 0 1 1 1 1 Fig.1.9. simbolo di OR

a b^ Fig,1.8. simbolo Not C=a or b Almeno uno dei due ingressi deve valere uno.

  • Circuiti logici Con le porte logiche, precedentemente presentate, nasce la possibilità di creare dei circuiti logici, combinando queste porte tra loro. Alcuni dei più semplici ma più importanti circuiti sono il semisommatore e il sommatore completo. I. SEMISOMMATORE Il semisommatore, detto anche half adder, è un componente elettronico digitale, che esegue la somma di due bit in ingresso e ne presenta il risultato in uscita, inoltre viene calcolatore anche il riporto, senza però tenere conto di un riporto precedente. Fig.2.3. Rappresentazione grafica di un semisommatore Come possiamo vedere dall’immagine all’interno del semisommatore troviamo un EX-OR e una AND, inoltre vediamo che ha due uscite, una dedicata al risultato, l’altra per il resto. A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 RESTO DA SOM (^) RN RN- 1 RN- 2 R1 μ A An- 1 …. A1 A B Bn- 1 …. B1 B RESTO C r Cn- 1 …. C1 C Per il funzionamento del semisommatore partiamo dal porre μ=0, quindi in questo caso è inutile metterlo nella riga per la somma poiché è nullo. Successivamente dopo aver deciso se μ è nullo o no, eseguiamo la somma tra i due elementi entranti nel semisommatore, ossia A e B, dopo aver eseguito ogni somma Tabella di verità del semisommatore. C=A and B S=A (+) B

andiamo a porre il resto R nella colonna successiva e ripeto il processo fino alla conclusione dell’operazione, così da ottenere la somma ed il resto in uscita. Un fatto molto importante e da notare è che il resto ottenuto rappresentano i bit di flag. II. SOMMATORE COMPLETO Il sommatore completo o full adder, è un circuito logico caratterizzato da tre ingressi e due uscite. La sua caratteristica è quella di eseguire la somma di due numeri in binario. Il sommatore completo è formato da due semisommatori ed una OR. Fig.2. 4. Rappresentazione grafica di un sommatore completo An Bn Cn- 1 Sn Cn 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Fig.2.5. Full adder in cascata B OP Bi 0 0 0 0 1 1 1 0 1 1 1 0 Tabella di verità del sommatore completo Questa è la rappresentazione effettiva di un full adder, che viene posto a cascata. In ingresso abbiamo A e B, in cui il valore di B varia in base se l’operazione sulla sua linea è + o

-. NB la linea delle operazioni si unisce con B mediante una EX- OR Successivamente nel blocco in blu si esegue l’operazione che crea un resto C, che viene passato al blocco successivo, fino all’ultimo in cui va a rappresentare il bit di carry ed un resto S che rappresenta i bit di flag. Un fattore importante da tenere in conto è che l’elemento B è collegato ad una linea di operazione che ne fa variare il valore.