Filesystem

Perché filesystem? Questa è l’idea presa dall’archivio, come se fosse un ufficio che deve tenere delle pratiche ordinate in cartelle e cartelloni. L’utilizzo principale è dare un interfaccia comune di accesso ai dispositivi. perché dispositivi diversi hanno sotto modi di accedere diversi, questa interfaccia facilita molto l’accesso. Informazioni dei files (5+) 🟨 Il file è l’unità logica di memorizzazione. il formato che c’è dentro è gestito dall’applicazione, non dal file system!...

9 min · 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....

9 min · Xuanqiang 'Angelo' Huang

Gestione delle risorse

Gestione delle risorse Introduzione Definizione classe, fungibilità Classe di risorse sono un insieme di risorse fra loro equivalenti (nel senso che uno può rimpiazzare l’uso dell’altro), anche detti fungibili. Statico o dinamico Anche in economia ci sono tali definizioni! Queste risorse possono essere allocate staticamente o dinamicamente, in modo simile a quanto abbiamo detto in Gestione della memoria. Statico quando già in fase di compilazione del processo, o di avviamento del processo gli dò la memoria, e quella sarà per tutti il tempo della sua vita....

8 min · Xuanqiang 'Angelo' Huang

Programmi Concorrenti

Vorremmo cercare di stabilire una teoria riguardante programmi che vengono eseguiti appunto concorrentemente, senza una esecuzione classica uno dpo l’altro Esempio mini-programma rallentamento #include <stdio.h> #include <pthread.h> void test(void *s) { for (int i = 0; i < 10; i++) { printf("%s\n", s); for (int j = 0; j < 100000000; j++); } } int main(int argc, char *argv[]) { pthread_t t1, t2; pthread_create(&t1, NULL, (void *)test, "Uno"); pthread_create(&t2, NULL, (void *)test, "Due"); pthread_join(t1, NULL); pthread_join(t2, NULL); } Example output:...

5 min · 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...

2 min · Xuanqiang 'Angelo' Huang