Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

aiuto domande orale


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 47 risposta/e

#1
giulia

giulia

    Advanced Member

  • Utente
  • StellaStellaStella
  • 285 Messaggi:
dove posso trovare degli esercizi svolti x la codifica???

-quanti e quali valori si possono rappresentare col complemento a 2 e relativi esempi
-architettura pipeline
-codifica numeri: complemento a due e modulo e segno (xkè si usa complemento a due e no modulo e segno), conversione da e in base esadecimale
-convertire da un numero da base due a base otto: ci sono due metodi: quello di passare prima a base dieci e poi a base otto e quello diretto
-il context switch (con relativa domanda trabocchetto per l'efficienza del S.O basata sulla grandezza dei quanti e del numero di context switch
ho un registro dati di 8 bit e un registro indirizzi di 5 bit , come può essere strutturata la mia memoria centrale
- conversione da base 5 a base 10, e un complemento a 2

-Se ho un bus indirizzi di 5 cavi e un bas dati di 8,descrivere la dimensione della memoria
-Convertire un numero binario in base 10 (Trabocchetti del prof: chiedere che tipo di codifica, se normale o complemtento a 2 e numero di bit)
-codifica di un numero da base 10 a base 4;



#2
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
Hai praticamente chiesto mezzo programma di informatica :D
Allora un pò alla volta risponderò a tutto, ma per quando riguarda la codifica dei numeri ti invito a vedere le slide 8 e 9 che trovi quì come avevo suggerito anche ad un altro utente!

#3
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
vedi questi esempi trovati su google.
Cmq in generale per convertire un numero da base dieci in base 2 o 16 bisogna dividere per la base di conversione (2 o 16) finchè il quoziente dell' ultima divisione è zero.Poi bisogna leggere i resti dal basso verso l'alto componendo così il numero in binario.
Il resto della prima divisione è detto LSN (cifra binaria meno significativa)
Il resto dell' ultima divisione è detto MSN (cifra binaria più significativa)
Esempio:
conversione base dieci ---->base due    *fra parentesi indico la base del numero considerato
83(dieci):2(dieci)=41(dieci) ---->resto=1 ---->LSN
41(dieci):2(dieci)=20(dieci) ---->resto=1
20(dieci):2(dieci)=10(dieci) ---->resto=0
10(dieci):2(dieci)= 5(dieci) ----->resto=0
5(dieci):2(dieci)= 2(dieci) ----->resto=1
2(dieci):2(dieci)= 1(dieci) ----->resto=0
1(dieci):2(dieci)= 0(dieci) ----->resto=1 ---->MSN
quindi 83(dieci)=1010011(due)
N.B. Convertendo in base sedici i resti non saranno sempre 1 o 0 come avviene per la base due, ma saranno i numeri interi compresi fra [0,15], in questo caso il resto rappresenta la posizione del simbolo corrispondente nell' alfabeto esadecimale, cioè:
alfabeto esadecimale= 0(0) - 1(1) - 2(2) - 3(3) - 4(4) - 5(5) - 6(6) - 7(7) - 8(8) - 9(9) - A(10) - B(11) - C(12) - D(13) - E(14) - F(15)
Fra parentesi c' è la posizione dei simboli, ovvero i resti delle divisioni del numero da convertire.
Esempio:
conversione base dieci----->base sedici   *fra parentesi indico la base del numero considerato
83(dieci):16(dieci)=5(dieci) ---->resto=3
5(dieci):16(dieci)=0(dieci) ----->resto=5
quindi 83(dieci)=53(sedici)

Conversione base due ---->base dieci
Prima abbiamo visto che:
83(dieci)=1010011(due)
ora per fare il contrario fai così:
moltiplichi ogni cifra binaria per la base di conversione elevata alla posizione della cifra binaria considerata.
Le posizioni partono dalla 0 e vanno da destra verso sinistra.
Esempio:
1010011(due)=1*2^6+0*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=64+16+2+1=83(dieci)

Conversione base sedici ---->base dieci
si procede come da base due a base dieci, ma questa volta la base da elevare all' esponente "posizione" è 16.
Esempio:
83(dieci)=53(sedici)
53(sedici)=5*16^1+3*16^0=80+3=83(dieci)

Per convertire da base due a otto converti prima in base dieci e poi in base otto. Per convertire in base otto ( da base dieci) si procede allo stesso modo della conversione da base dieci a base due, solo che questa volta le divisioni le devi fare per 8 anzichè per 2. Leggi quì!

#4
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

-architettura pipeline

il concetto di CPU pipeline è legato al discorso di miglioramento delle prestazioni di un processore. Infatti, per migliorare le prestazioni di un processore si possono seguire due strade:
1.ridurre il tempo necessario per l' esecuzione delle singole istruzioni;
2.aumentare il numero di istruzioni che sono eseguite in parallelo ;
Nelle CPU, la modalità di parallelizzazione dell' esecuzione delle istruzioni si chiama pipelining. Come saprai, le istruzioni in un processore vengono eseguite in maniera sequenziale e procedono nel senso descritto dal cosiddetto "ciclo delle CPU". Ora se tutti i processori dovessero seguire sempre tutto il ciclo completo per ogni processo di un software , l' unico modo che avremo per incrementare le prestazioni di questo processore sarebbe aumentarne il clock, ovvero la frequenza con cui il processore "smista" i processi. Tuttavia , anche se questa soluzione risulta essere fattibile ci sono dei limiti "tecnologici", infatti incrementare il clock di un processore significa, dal punto di vista fisico: incrementare il livello di miniaturizzazione dei transistor,creare memorie volatili con un transfer rate più elevato, costruire dei bus ancora più veloci (e stiamo parlando solo del processore, cioè non stiamo considerando altri hardware essenziali per il funzionamento del calcolatore).L' alternativa a tutto ciò è la CPU pipeline.In pratica quello che si fa è questo: visto che ci sono dei limiti tecnologici per aumentare il clock di un processore, si fa in modo che più istruzioni vengano eseguite in parallelo. Attenzione ho detto in parallelo non in contemporanea, infatti la cpu pipeline agisce come una catena di montaggio in cui ogni istruzione di un dato processo viene elaborata da un singolo stadio della pipeline.
Ma quali sono i vantaggi di questo metodo di operare?
I vantaggi sono evidenti: se la CPU pipeline è divisa in diversi stadi ognuno dei quali deputati a svolgere un certo ruolo, ovvero ad eseguire determinate istruzioni, questo significa che ogni stadio della CPU pipeline può lavorare in modo "quasi" indipendente rispetto ai suoi stadi precedenti o successivi.
E' evidente, inoltre, che maggiore è il numero di stadi della pipeline e maggiore sarà l' incremento di prestazioni del processore in quanto maggiore sarà il numero di istruzioni che possono essere eseguite in parallelo.
Esistono svantaggi?
Si. Lo svantaggio principale è racchiuso nel "quasi" di prima. Infatti non è del tutto corretto dire che gli stadi della pipeline lavorano in modo indipendente tra loro. Per capire il perchè ti faccio un esempio:
supponiamo che il nostro processore sia un pipeline a 3 stadi debba eseguire un certo processo costituito da tre istruzioni sequenziali A,B e C ognuna delle quali può essere svolta da uno stadio della pipeline(in particolare lo stadio1 può svolgere l' istruzione A, lo stadio2 può svolgere l' istruzione B e lo stadio3 svolge l' istruzione C).Ora, trascuriamo tutti i dettagli relativi all' accesso in memoria, il caricamento dei dati dalle celle etc, ma soffermiamoci su ciò che avviene nella CPU pipeline. Quello che succede è che quando il processo arriva al punto di essere eseguito, in teoria la CPU dovrebbe essere in grado di svolgere in parallelo le istruzioni A,B e C dai rispettivi stadi. Il problema è che il processo deve essere svolto in maniera sequenziale, questo significa che se non si finisce di svolgere l' istruzione A non si può passare alla B, quindi nel frattempo che l' istruzione A venga svolta dallo stadio1, gli altri stadi stanno fermi .Inoltre una volta terminato lo svolgimento di un' istruzione in uno stadio, per passare allo stadio successivo si impiega del tempo durante il quale lo stadio che deve ricevere i dati da elaborare è in attesa, quindi è ancora fermo(tempo di latenza).
Ora è chiaro che se si considera una singola istruzione, la pipeline risulta essere inefficiente rispetto ad un processore "normale" che elabora le istruzioni in maniera sequenziale, anzi in questo caso la pipeline risulta essere addirittura sconveniente. Ma se si considera che le istruzione che un calcolatore deve elaborare sono in quantità elevatissime, allora si capisce tutto il vantaggio di usare la pipeline, perchè mentre uno stadio per esempio esegue un istruzione relativa ad un processo, lo stadio che si è liberato passa direttamente alla successiva producendo in questo modo lo "scorrere" di istruzioni tipico della pipeline.
Il problema principale dello sviluppo di una pipeline non consiste nelle istruzioni da elaborare o nella quantità di stadi da introdurre, ma consiste nel bilanciare i tempi di esecuzione di tutti gli stadi in modo da ridurre al minimo i tempi morti e quelli di latenza.
Dunque, in conclusione, l' incremento di prestazioni dovuto alla CPU pipeline risulta minore del numero di stadi introdotti.

#5
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

-il context switch (con relativa domanda trabocchetto per l'efficienza del S.O basata sulla grandezza dei quanti e del numero di context switch

Il context switch (commutazione di contesto) è una particolare operazione che viene eseguita dal gestore di processi di un sistema operativo.
In pratica, durante il ciclo di vita di un processo (mi riferisco chiaramente ad un sistema operativo multitasking)) possono essere necessarie operazioni di interruzione dell' esecuzione del processo per diverse ragioni, infattono esistono le cosidette interruzioni interne ed esterne.
Ora senza scendere troppo nel dettaglio le interruzioni (interne o esterne che siano) non sono altro che degli eventi che fanno in modo che lo scorrere del processo si blocchi in attesa di qualche input o output da parte di una periferica esterna. Immagina di dover scrivere un documento su Word: una volta che hai avviato il programma (Word appunto) il gestore di processi del sistema operativo fa in modo di caricare i dati relativi all' avvio e l' esecuzione del programma, ma ad un certo punto mette il processo in stato di attesa, di attesa cioè di un input, in questo caso il gestore attende che tu digiti da tastiera qualche cosa. Ma questo cosa significa in altre parole: significa che il processo ( l' esecuzione del programma di videoscrittura) ha generato un interrupt (in questo caso esterno) in attesa di input da tastiera. Ora che c' entra tutto questo col context switch?.
Prima ho detto che il S.O che stavo considerando era multitasking, cioè in grado di gestire più processi "contemporaneamente". Ora il " contemporaneamente " è tra virgolette perchè come saprai tutti i calcolatori basati sul modello macchina di Von Neumann si basano sulla sequenzialità dell' esecuzione delle istruzioni, che poi vengano utilizzati degli espedienti tipo il pipelining per simulare un' apparente contemporaneità dell' esecuzione di istruzioni è un altro discorso, ma di norma le istruzioni scorrono in maniera sequenziale. La domanda dunque è: se le istruzioni devono essere eseguite in maniera sequenziale, come fa il sistema operativo ad essere multitasking? Cioè come è possibile gestire simultaneamente più processi se il processore ne può svolgere solo uno alla volta?
Per rispondere continuo l' esempio che stavo facendo prima: immagina che mentre stai scrivendo il tuo documento su Word ti va di voler ascoltare della musica. Quindi cosa fai: riduci ad icona word vai nella cartella dove hai salvati i file musicali che vuoi ascoltare e ne apri uno. Ora visto che il processore può eseguire le istruzioni sequenzialmente tu non avresti potuto aprire il file musicale mentre avevi ancora word aperto. Avresti dovuto chiudere word e ascoltare il brano, ma in realtà quello che succede è che il gestore dei processi del S.O. genera un interruzione nel processo relativo all' esecuzione del programma Word( lo mette cioè in attesa di input da tastiera) . Nel contempo Il gestore dei processi salva il contesto relativo al programma che hai messo da parte per aprire il file musicale, quindi il processo del programma word viene messo in attesa , in attesa che il suo contesto venga commutato, in attesa cioè che l' utente riprenda l' esecuzione di quel programma di cui il gestore dei processi ha salvato il contesto. Nel momento in cui, dopo aver aperto il tuo file musicale vuoi continuare a scrivere sul documento word che stavi realizzando ecco che avviane la commutazione del contesto, il context switch.
Rimane un ultimo dubbio: se i processi vengono eseguiti in maniera sequenziale, come è possibile che mentre ascolti la musica puoi anche scrivere su word?
Il realtà il context switch non avviene solo nel momento in cui tu riprendi l' esecuzione del programma di videoscrittura dopo averlo messo in attesa. Il context switch avviene continuamente all' interno del gestore dei processi del S.O. infatti è questo che rende il S.O. multitasking .

Le decisioni riguardanti l'esecuzione di un cambio di contesto tra due programmi vengono intraprese da un componente del sistema operativo, lo scheduler, il quale invierà le proprie decisioni ad un altro modulo del sistema operativo, il dispatcher che eseguirà effettivamente il cambio di contesto. A seconda di quale strategia di servizio (algoritmo di scheduling) venga seguita, lo scheduler controlla la ripartizione del tempo di CPU tra tutti i processi attivi.

lo scheduler (da to schedule letteralmente "mettere in lista", ovvero "pianificare") è un programma sotto forma di un algoritmo che, dato un insieme di richieste di accesso ad una risorsa, stabilisce un ordinamento temporale per l'esecuzione di tali richieste, privilegiando quelle che rispettano determinati parametri, in modo da ottimizzare l'accesso a tale risorsa e consentire così l'espletamento del servizio/istruzione o processo desiderato.


Infine per quanto riguarda i trabocchetti del prof. sull' efficienza , credo che ora sia chiaro che il context switch dipende dal tipo di algoritmo dello scheduler, quindi l' efficienza dipende dal tipo di politica adottata per la commutazione dei contesti ( in generale si tratta delle politiche FIFO e LIFO)

#6
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

ho un registro dati di 8 bit e un registro indirizzi di 5 bit , come può essere strutturata la mia memoria centrale

Non ne sono sicuro al 100%, ma la formula dovrebbe essere questa:
numero_combinazioni=numero_celle * lunghezza_cella
Quindi avendo un registro dati di $ 8 $ bit, dovresti poter rappresentare $ 2^8 $ combinazioni di lunghezza $ 8 $ .
Di conseguenza il numero delle celle sarà $ 2^8/2^3=2^5 $, cioè $ 2 $ elevato alla lunghezza del registro indirizzi, cioè $ 5 $.
Quindi la memoria centrale dovrebbe essere strutturata di $ 2^5=32 $ celle di $ 8 $ bit ciascuna, cioè di un byte.

-Se ho un bus indirizzi di 5 cavi e un bas dati di 8,descrivere la dimensione della memoria

Dovrebbe essere lo stesso ragionamento.

#7
h.luisa

h.luisa

    Advanced Member

  • Utente
  • StellaStellaStella
  • 33 Messaggi:
Per l'orale c'è anke la parte reti di calcolatori?in quanto nn riesco a trovarla sulle mie slides qualcuno può x favore postarla qui?grazie mille!

#8
Linda

Linda

    Member

  • Utente
  • StellaStella
  • 12 Messaggi:
devi andare su iwt, io nn sono riuscita a trovarla da nessuna altra parte!

#9
h.luisa

h.luisa

    Advanced Member

  • Utente
  • StellaStellaStella
  • 33 Messaggi:
Scusate ma sulla parte spiegata prima pipeline della cpu,sistema operativo scendono così tanto nel dettaglio i prof?

#10
Snaky

Snaky

    Advanced Member

  • Utente
  • StellaStellaStella
  • 239 Messaggi:
Ciao, potete aiutarmi a rispondere a queste 2 domande??
1) E' possibile rappresentare su 4 bit il numero -14??
2)Se ho 3000 valori da codificare in base 16, quanti bit mi servono?

La prima io ho cercato di risponderla utilizzando il complemento a 2 e mi viene 10 come risultato (cioè ho impegnato solo 2 bit), poi ho aggiunto 2 zeri (ovviamnete da dx verso sx) per completare i 4 bit ma facendo il percorso al contrario non mi dà lo stesso risultato di partenza. Di conseguenza ho sbagliato :)

Grazie in anticipo a tutti!!
...e mi sentirò grande solo qnd la gente ke amo potrà vivere, dividere il premio x aver scommesso su di me...

#11
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

1) E' possibile rappresentare su 4 bit il numero -14??

In generale con $ n $ bit puoi rappresentare:
1.In complemento a due: $ [-2^(n-1),2^(n-1)-1] $;
2. Con codifica in modulo e segno: $ [-2^(n-1)+1,2^(n-1)-1] $;
quindi con $ 4 $ bit non puoi rappresentare il valore $ -14 $

#12
Snaky

Snaky

    Advanced Member

  • Utente
  • StellaStellaStella
  • 239 Messaggi:

1) E' possibile rappresentare su 4 bit il numero -14??

In generale con $ n $ bit puoi rappresentare:
1.In complemento a due: $ [-2^(n-1),2^(n-1)-1] $;
2. Con codifica in modulo e segno: $ [-2^(n-1)+1,2^(n-1)-1] $;
quindi con $ 4 $ bit non puoi rappresentare il valore $ -14 $

Grazie...comunque la risposta alla prima domanda l'ho capita, ma per quanto riguarda la seconda no... :rosso:
...e mi sentirò grande solo qnd la gente ke amo potrà vivere, dividere il premio x aver scommesso su di me...

#13
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

2)Se ho 3000 valori da codificare in base 16, quanti bit mi servono?

Rispondo in generale:
Problema:Dato un insieme $ S $costituito da $ #S $ elementi, come identificare univocamente tali elementi mediante una codifica binari (ma anche ottale, esadecimale, etc..)cioè impiegando un alfabeto di soli due (ma anche 4, 8 o 16, a seconda del tipo di codifica) simboli?
Risposta:Se si suppone di adottare successioni binarie(o anche ottali, esadecimali, etc..)di lunghezza $ k $ costante, occorre allora stabilire il valore minimo di $ k $ che permetta di rappresentare gli $ #S $ elementi dell' insieme $ S $.
Una successione di $ k $ bit consente di identificare $ n=2^k $ elementi diversi.Il problema posto è inverso: dato il numero di elementi $ #S $ di elementi da identificare, bisogna determinare la lunghezza minima $ k $ per le successioni richieste.Dunque:
$ n=2^k $ $ => $ se $ n $ è noto e cioè $ n=#S $si ha $ k=|~log_2(#S)~| $
dove l' operatore $ |~x~| $ associa ad un numero $ x $ il minimo intero maggiore o uguale ad $ x $, cioè $ |~x~|>=x $.
Nel tuo caso si ha che:
$ #S=3000 $
base di conversione= $ 16 $
$ 3000=16^k $ $ => $ $ k=|~log_16(3000)~| $$ =2.8876866963458108062661743081039967590885771466915557=3 $

#14
Snaky

Snaky

    Advanced Member

  • Utente
  • StellaStellaStella
  • 239 Messaggi:
Per "reti di calcolatori" si intendono i vari bus?
...e mi sentirò grande solo qnd la gente ke amo potrà vivere, dividere il premio x aver scommesso su di me...

#15
squiki92

squiki92

    Advanced Member

  • Utente
  • StellaStellaStella
  • 37 Messaggi:
ragazzi ma voi state studiando dalle slide di IWT oppure dal libro??

#16
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

Per "reti di calcolatori" si intendono i vari bus?

No purtroppo, altrimenti era troppo facile.... :D .Per reti di calcolatori si intendono tipi e modalità di connessione di vari calcolatori dove calcolatore in questo caso assume il significato di computer come lo conosciamo noi, in una sola parola:internet.
Quindi bisogna parlate della rete, dei protocolli di rete TCP, UDP, le porte, il peer to peer, il file sharing, insomma c'è un bel pò di roba. Purtroppo riguardo questa parte ammetto che le mie conoscenze sono alquanto carenti, quindi se hai qualche dubbio in particolare postalo e vediamo di comprenderlo insieme!Cmq vedo un pò in rete se trovo qualcosa di interessante e riassuntivo(perchè il discorso è abbastanza ampio) e nel caso lo pubblico!

#17
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

ragazzi ma voi state studiando dalle slide di IWT oppure dal libro??

Ho visto le slides e mi sembrano fatte abbastanza bene, ma secondo me il testo è importante non tanto per i concetti, quanto per i passaggi, difatti l' unico difetto di dover studiare dalle slides è quello di imparare argomenti in maniera frammentaria.

P.S.La lezione su IWT di Reti di Calcolatori, mi sembra fatta abbastanza bene, ci sono 38 slides solo su questo argomento, quindi almeno per i concetti sommari, credo che vadano bene!

#18
RYU1989

RYU1989

    Advanced Member

  • Utente
  • StellaStellaStella
  • 157 Messaggi:
Ragazzi... qualcuno potrebbe postare le slides ke dice peppopeppo riguardanti l argomento ''reti di calcolatori'' ?? Stanno su iwt ma nn riesco a entrarci.......
grazie..

#19
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
Ecco le slide che stanno su IWT! Non chiedetemi come me le trovo visto che da IWT nn si possono scaricare , perchè veramente nn lo so!

#20
Snaky

Snaky

    Advanced Member

  • Utente
  • StellaStellaStella
  • 239 Messaggi:
Qual è la differenza tra variabile formale e variabile reale?
...e mi sentirò grande solo qnd la gente ke amo potrà vivere, dividere il premio x aver scommesso su di me...




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi