Estratto del documento

Nozioni su architettura computer

Algoritmo

Algoritmo: Sequenza finita di passi/azioni, definiti con precisione, che portano alla realizzazione di un compito, ovvero alla soluzione di un problema. In altri termini l'algoritmo è la descrizione della soluzione di un problema in termini di un insieme di regole che, operando sui dati iniziali, consentono di ottenere dei risultati che costituiscono la soluzione del problema.

Esecutore

Esecutore: qualcosa/qualcuno che esegue i passi dell'algoritmo. Un esecutore è definito in base a 3 elementi:

  • Insieme delle operazioni che è capace di compiere
  • Insieme delle istruzioni che comprende/interpreta (che sa ricevere)
  • Insieme delle regole da associare per eseguire ogni istruzione

L'insieme di questi 3 elementi costituisce un linguaggio.

Linguaggio di programmazione

Il linguaggio di programmazione è il linguaggio che parla l'esecutore microprocessore (particolare tipo di esecutore). Il linguaggio che capisce il microprocessore è fatto da 0 e 1. Il microprocessore è fatto da transistor (analogico), mentre il calcolatore è digitale.

Java è un linguaggio di alto livello che consente agli umani di programmare, infatti per noi è troppo difficile il linguaggio 0 e 1. Ma al calcolatore questo non va bene, lui si aspetta 0 e 1.

Compilatore

Il compilatore è un programma che traduce gli statement che scrivo in Java. Alto livello significa vicino all'uomo, basso livello vicino ai transistor e medio livello è una via di mezzo. Il microprocessore si trova nella zona di basso livello.

Per programmare in Java abbiamo bisogno di un compilatore Java, prima si compila, poi si esegue. Java è “General Purpose” ovvero è nato per scopi multipli, come C++, anche se è specializzato per applicazioni di Internet.

Comandi

I comandi possono essere:

  • Compilati: lavoro su notes.txt ---> compilo al compilatore ----> .exe (scritto in linguaggio macchina). Quando un programma deve essere eseguito tante volte (come Word), è meglio usare la compilazione, così ho il mio file .exe pronto da lanciare.
  • Interpretati: scrivo gli statement, l'interprete prende il primo comando, lo traduce in assembler (linguaggio macchina), e lo esegue. L'interprete lavora in “real time”, statement per statement. Quando devo eseguire qualcosa una sola volta, allora è meglio interpretare i comandi. L'interprete traduce una sola volta, dunque l'interpretazione è più veloce della compilazione laddove nel codice siano presenti più comandi.

Java in realtà è compilato e interpretato. Funziona così: pippo.java --> JAVAC (compilatore) ---> pippo.class ---> Java Virtual Machine (interprete, esegue). Il .class in realtà non è scritto in linguaggio macchina, ma in bytecode, in eseguibile per il processore.

La JVM, che è un interprete, legge il bytecode, lo traduce in linguaggio macchina (assembler) e lo esegue. Per velocizzare la scrittura dei programmi, Java utilizza l’approccio “compilato-interpretato” perché difende meglio, e la JVM controlla che il programma non invada i miei files. In C++ la protezione non c’è. In Java ho un ambiente protetto e il programma Eclipse contiene compilatore e JVM.

Esempio di algoritmo: il Bancomat

ESEMPIO DI ALGORITMO: il Bancomat

INIZIO
Vai al bancomat
NO

Inserisci PIN
tessera OK
at funziona?

NO
FINE
Preleva Insertisci tessera
Cambia bancomat e importo

Similmente, l’algoritmo che dovrà eseguire il Bancomat sarà un ciclo di:

  • Scrivi “Inserire tessera”
  • Attendi tessera
  • Leggi Pin
  • Ecc.

Caratteristiche degli algoritmi

Gli algoritmi sono sequenziali, perciò sono monoprocessori. Esistono anche processori 1000-core, ma non sono utile, è meglio fare le cose in parallelo. In ogni algoritmo bisogna fare:

  • Scrivere STATEMENT
  • Eseguire DECISIONI
  • Fare dei CICLI

Torniamo all’esempio del Bancomat e chiediamoci: cosa ci deve essere dentro ad un Bancomat? Per rispondere a questa domanda introduciamo l’architettura di von Neumann, che fu il primo ad utilizzare un calcolatore in grado di memorizzare i programmi. Di seguito è schematizzata la macchina di von Neumann.

Elementi fondamentali di un calcolatore

Gli elementi fondamentali di un calcolatore sono:

  • CPU (esecutore): La CPU legge ed esegue un programma. È il componente del calcolatore in grado di eseguire istruzioni per l’elaborazione dati. Svolge anche funzioni di controllo e di coordinamento.

NB: la CPU capisce solo 0 e 1 !!! Essa è l’unità centrale di elaborazione. Essa è caratterizzata da:

  • Frequenze di Clock (segnale che fa progredire l’esecuzione del processore, ordine di GHz)
  • Set di istruzioni (linguaggio macchina)
  • Architettura interna, ovvero numero di ALU (unità aritmetica e logica), numero di registri, ampiezze dei bus dati e indirizzi.

Di seguito è mostrata l’architettura della CPU:

Elementi della CPU

Vediamo più nello specifico gli elementi della CPU: Anzitutto è notevole considerare che all’interno di una CPU vi sono circa 42 milioni di transistor. La CPU contiene un numero limitato di celle di memoria chiamate registri.

  • Registro contatore delle istruzioni (program counter, PC) memorizza la prossima istruzione da eseguire
  • Registro delle istruzioni (instruction register, IR) memorizza l'istruzione da eseguire opportunatamente codificata.
  • Registro di indirizzamento della memoria (memory address register, MAR) memorizza l’indirizzo della cella di memoria che deve essere acceduta o memorizzata.
  • Registro parola di stato (program status word, PSW) che contiene le informazioni codificate circa l’esito dell’ultima istruzione eseguita
  • Altri registri

Memoria principale RAM

Memoria principale RAM (Random Access Memory): è chiamata anche memoria centrale, fornisce e memorizza l’accesso a dati e programmi. Essa contiene il programma che esegue la CPU e i dati. Ma solo con questi elementi non si comunica con l’esterno, per i quali sono necessari i dispositivi I/O.

La memoria principale si compone di celle (locazioni) di memoria. Ogni cella è in grado di memorizzare una parola di memoria, ovvero una sequenza di bit di lunghezza fissata. Di solito una cella è formata da 8 bit, oppure da un word(16bit), doubleword(32 bit) quadword (64 bit).

Ogni cella è caratterizzata da:

  • Indirizzo, ovvero un numero che identifica la cella e ne consente l’accesso
  • Valore, che è la sequenza di bit memorizzata dalla cella
Anteprima
Vedrai una selezione di 5 pagine su 16
Nozioni di informatica (Java) e architettura computer Pag. 1 Nozioni di informatica (Java) e architettura computer Pag. 2
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Nozioni di informatica (Java) e architettura computer Pag. 6
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Nozioni di informatica (Java) e architettura computer Pag. 11
Anteprima di 5 pagg. su 16.
Scarica il documento per vederlo tutto.
Nozioni di informatica (Java) e architettura computer Pag. 16
1 su 16
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Emaguerra di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Pisa o del prof Foglia Pierfrancesco.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community