Introduzione ad architettura

1.1 Il principio di astrazione/implementazione Astrazione per macchine livello n con linguaggi n. 1.2 I livelli principali di astrazione Livelli in breve 1.2.1 Livello 0 Qua è utile indagare la Porte Logiche in cui si indagano in un modo molto alto il funzionamento di porte È il livello fisico delle porte logiche e dell’ingegneria elettrica. 1.2.2 Livello 1 Link utili potrebbero essere la Central Processing Unit ...

April 8, 2024 · Reading Time: 2 minutes ·  By Xuanqiang Angelo Huang

Central Processing Unit

La struttura moderna degli elaboratori sono basati principalmente sull’architettura di Von Neuman, l’unica differenza è che gli elementi di questa architettura. Struttura e funzione della CPU La CPU si può dividere in tre parti principali: Una unità di controllo che coordina i processi Registri che immagazzinano temporaneamente piccole quantità di informazioni ALU che fa i calcoli ordinategli dalla CPU Registri Principali Program Counter o Instruction Pointer Contiene un pointer all’istruzione da eseguire così lo prende dalla memoria Instruction Register Contiene l’istruzione da eseguire Memory Address Register Prende l’indirizzo del contenuto interessante dalla memoria Memory Data Register Prende il contenuto dalla memoria Program Status Word Raccoglie lo stato di esecuzione del programma, se fallisce se tutto ok oppure se ci sono errori ALU Aritmetic Logic Unit, è la componente che fa i calcoli. Per sapere cosa deve fare, è la Control Unit che collega certe vie dai registri all’ALU. A seconda del genere di architettura può collegarsi direttamente in memoria (CISC) oppure sempre passando per i registri (solitamente RISC) ...

April 8, 2024 · Reading Time: 7 minutes ·  By Xuanqiang Angelo Huang

Message Passing

ora abbiamo alcune primitive per passarci i messaggi, vogliamo creare metodo in modo che i processi si possano sincronizzare mandando messaggi. la memoria è sempre privata. Primitive Send e receive Send Spedizione del messaggio input deve avere un identificato al processo su cui spedire. Se si vuole espandere si possono avere multicast e broadcasting ma non li studieremo in questo corso. Receive Ricevi messaggi Tassonomia dei message passing (!) Slide ...

August 28, 2024 · Reading Time: 2 minutes ·  By Xuanqiang Angelo Huang

Memoria virtuale

Memoria virtuale Perché è utile la MV? I programmi non usano tutta la memoria, ma pensano di averla tutta disponibile dal suo punto di vista. L’idea principale è che molte zone di memoria sono inutili per lungo tempo, possono essere utilizzati per altro. caricamento codice dinamico Per esempio anche a caricare il codice di un compilatore è diviso in fasi, se andiamo a caricare tutto, stiamo utilizzando solo un pezzo piccolo, tanta inefficienza, se una pagina contiene una parte del compilatore potrei caricare in memoria solamente le parti eseguite sul momento, giusto per fare un esempio diciamo. Crescita dei segmenti stack, heap, ad esempio ci permette di far crescere come ci pare la stack, e anche caricare solamente le parti della stack che ci servono, e mantenere la memoria libera per altro. Gestione degli errori. che utilizzerà i dati solamente della parte di gestione di memoria attuale diciamo. Paginazione a richiesta Questo è un aspetto della cache delle pagine di cui abbiamo già parlato in Livello OS. ...

August 28, 2024 · Reading Time: 9 minutes ·  By Xuanqiang Angelo Huang

Livello applicazione e socket

Livello trasporto Protocolli classici Introduzione a TCP e UPD Il quarto livello dei protocolli dell’architettura di Internet è il livello trasporto (transport), ed è basato su due protocolli in particolare: il Transmission Control Protocol (TCP) e lo User Data Protocol (UDP), che possono essere usati in alternativa tra loro. Questo è nel genere di *connession oriented e non, il primo, TCP è connection oriented, l’altro no, questa è l’unica differenza fra i due. Questa differenza è spiegata in maggior dettaglio qui [0.3.8 Servizi orientati alla connessione e non ...

June 12, 2023 · Reading Time: 13 minutes ·  By Xuanqiang Angelo Huang

Linguaggi Deterministici e DPDA

DPDA Definizione (2) La definizione di DPDA è molto simile a quella trattata in Linguaggi liberi e PDA, con solo costraints sulla deterministicità, che si traducono in due condizioni: Al massimo posso avere un risultato per ogni coppia di lettura e simbolo su stack Se ho una transizione senza leggere, posso avere solo quella Slide Linguaggio libero deterministico Un linguaggio è libero deterministico se esiste un PDA che lo riconosce per stato finale. ...

August 28, 2024 · Reading Time: 4 minutes ·  By Xuanqiang Angelo Huang

Linguaggi liberi e PDA

In questa parte del nostro percorso nei linguaggi di programmazione proviamo ad espandere NFA e DFA in modo che possano riconoscere linguaggi come $ww^r | w \in \{a, b\}^*$ , con r maggiore o uguale a zero (r per dire che è il contrario di w) (questo linguaggio per il pumping lemma). Grammatiche libere da contesto $$ G = \langle \mathcal{N}, S, \Sigma, \mathcal{R} \rangle $$ Dove $\mathcal{N}$ sono i non terminali, $S$ è il non terminale iniziale, $\Sigma$ sono l’alfabeto dei simboli finali e $\mathcal{R}$ le relazioni possibili. Spesso lo scriviamo solo tramite le relazioni, perché è la forma più compatta. I nodi di una derivazione da grammatica libera da contesto è chiamato costituente del linguaggio. Questo è più importante in linguistica. ...

August 28, 2024 · Reading Time: 5 minutes ·  By Xuanqiang Angelo Huang

LR(k) e YACC

LR(k) Grammatiche LR(k) Anche in questo caso proviamo a generalizzare il concetto dei pirmi k caratteri, in modo da generalizzare in qualche senso il concetto di LR(k), quindi andiamo a modificare la closure considerando ora first k Per ricordarti come si calcolava first k, andare a guardare Top-down Parser il problema che poi diventa pratico riguardo questo è l’impossibilità di gestire stringhe lunghezza k che sono una assurdità (esponenziale per la lunghezza) ...

August 28, 2024 · Reading Time: 5 minutes ·  By Xuanqiang Angelo Huang

Macchine Astratte

Definizione ed esempi per macchine astratte Una macchina astratta è un qualunque insieme di algoritmi e strutture di dati che permettono di memorizzare ed eseguire il linguaggio $L$, quindi una macchina astratta esiste per esguire il proprio linguaggio (inteso come insieme finito di istruzioni primitive che riesce ad comprendere e eseguire). Si può proprio dire che esiste una simbiosi fra macchina e linguaggio. Si potrebbe dire che la macchina fisica è soltanto una implementazione FISICA di un linguaggio, ossia una macchina che capisce ed esegue quel linguaggio e che sia solamente un caso particolare della macchina astratta. ...

August 28, 2024 · Reading Time: 6 minutes ·  By Xuanqiang Angelo Huang

Nomi e Scope

I Nomi e oggetti Oggetti denotati e identificatori I nomi sono sequenze di caratteri o numeri aka: token alfanumerico (anche IDENTIFICATORE (per token guardare Grammatiche Regolari) utilizzate principalmente come Astrazione sul controllo e sui dati (quindi sono cose molto più facili da ricordare rispetto il suo encoding binario o a indirizzi). Infatti utilizziamo i nomi per evitare di interessarci di informazioni come l’indirizzo di memoria del nostro dato o per creare una interfaccia con visibili solo nome della procedura e parametri. ...

August 28, 2024 · Reading Time: 7 minutes ·  By Xuanqiang Angelo Huang