Teoria pt. 4 Flashcards

(9 cards)

1
Q

Cos’è un file di testo e che tipo di dati contiene? Quali sono le funzioni per leggere e scrivere su tale tipo di file?

A

Un file di testo è un file che contiene dati in formato testuale. I dati possono essere rappresentati come stringhe di caratteri o come numeri. Le funzioni per leggere e scrivere su un file di testo sono fscanf e fprintf.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Cos’è un sistema operativo e quali sono i suoi compiti principali?

A

Un sistema operativo è un software che gestisce l’hardware e le risorse del computer e fornisce servizi comuni per i programmi del computer. I suoi compiti principali includono la gestione della memoria, la gestione dei processi, la gestione dei file e la gestione delle periferiche. Crea una macchina virtuale per mettere in relazione l’utente e l’hardware.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cos’è un puntatore? Si facciano alcuni esempi di uso degli operatori di indirizzamento (&) e dereferenziazione (*)

A

Un puntatore è una variabile che contiene l’indirizzo di memoria di un’altra variabile. L’operatore di indirizzamento & restituisce l’indirizzo di memoria di una variabile, mentre l’operatore di dereferenziazione * restituisce il valore della variabile puntata dal puntatore. Ad esempio:
int x=10;
int *p=&x;
printf(“%d”, *p);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cosa è il tempo di vita di una variabile e il suo campo di visibilità? Dove sono visibili le variabili definite all’interno del blocco? E cosa succede al tempo di vita di una variabile se è allocata dinamicamente tramite malloc sempre all’interno di un blocco?

A

Il tempo di vita di una variabile indica il periodo di tempo durante il quale la variabile esiste in memoria. Il campo di visibilità indica dove la variabile può essere utilizzata nel codice. Le variabili definite all’interno di un blocco sono visibili solo all’interno di quel blocco. Se una variabile è allocata dinamicamente tramite malloc all’interno di un blocco, il suo tempo di vita continua fino a quando non viene deallocata esplicitamente tramite ‘free’, anche se il blocco in cui è stata allocata termina.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Si descriva la gerarchia delle memorie e per quale motivo è costruita

A

La gerarchia delle memorie è una struttura organizzativa delle memorie di un computer che tiene conto delle loro prestazioni e dei loro costi. La gerarchia delle memorie è costruita in modo tale che le memorie più veloci e costose siano vicine alla CPU, mentre le memorie più lente e meno costose siano più lontane. Questo permette di ottimizzare l’accesso ai dati e di ridurre i tempi di attesa. Il principio di progettazione di una memoria è quello di trovare un equilibrio tra la quantità di memoria necessaria, la velocità di accesso e il costo per bit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Cosa accade quando si modifica una struttura all’interno di una procedura?

A

Quando si modifica una struttura all’interno di una procedura, i cambiamenti apportati alla struttura saranno visibili solo all’interno della procedura stessa. Questo perché le variabili passate come argomenti a una funzione sono copiate nella memoria locale della funzione. Per rendere permanenti le modifiche apportate alla struttura, è necessario passare alla funzione un puntatore alla struttura originale.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cosa sono le variabili extern e static?

A

Una variabile extern è una variabile che viene definita in un file sorgente ma può essere utilizzata anche in altri file sorgente. Ciò consente di condividere variabili tra più file sorgente all’interno di un programma. Una variabile static invece ha una durata di archiviazione statica, il che significa che viene allocata per tutta la durata del programma. Se una variabile static è definita all’interno di una funzione, mantiene il suo valore tra le chiamate alla funzione. Se una variabile static è definita a livello globale (al di fuori di qualsiasi funzione), il suo ambito è limitato al file sorgente in cui è definita.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Da quali tempi è composto il tempo di accesso a un disco magnetico?

A

Il tempo totale di accesso a un disco magnetico è generalmente composto da 3 differenti tempi.
1)SEEK TIME: il tempo impiegato dal braccio di lettura/scrittura del disco per spostarsi dalla posizione corrente alla traccia desiderata.
2)TEMPO DI LATENZA rotazionale: tempo medio che occorre per far girare il piatto in modo che il settore desiderato sia sotto il braccio di lettura/scrittura.
3)TEMPO DI TRASFERIMENTO DEI DATI: tempo necessario per leggere o scrivere i dati dalla superficie del disco una volta che il braccio di lettura/scrittura è posizionato correttamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Cosa vuol dire che una funzione è tail-ricorsiva e a che cosa serve?

A

Una funzione ricorsiva è detta tail-ricorsiva quando l’ultima operazione eseguita dalla funzione è la chiamata ricorsiva a se stessa. La ricorsione tail è una tecnica che può essere utilizzata per ottimizzare le funzioni ricorsive in modo da evitare il consumo eccessivo di memoria. Quando una funzione è tail-ricorsiva, il compilatore può trasformarla in un ciclo iterativo, eliminando la necessità di mantenere in memoria lo stack delle chiamate ricorsive. Questo può migliorare le prestazioni e ridurre il consumo di memoria delle funzioni ricorsive.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly