Il concetto di I-node nei sistemi UNIX
È un metodo utilizzato nei sistemi UNIX, in cui gli attributi dei file vengono conservati, separatamente dalle directory, in una struttura dati chiamata I-node. Questo concetto è particolarmente importante quando è necessario ripristinare un file system danneggiato. Gli attributi includono la dimensione del file e la sua locazione fisica, il proprietario e il gruppo di appartenenza, le informazioni temporali di modifica, ultimo accesso e cambio di stato e i permessi di accesso.
Ogni I-node ha associato un numero univoco all'interno del dispositivo e ogni file presente è identificato come un collegamento fisico all'I-node tramite il suo numero. Quando un programma cerca di accedere ad un file tramite un nome (es. documento.txt), il sistema operativo cerca l'I-node corrispondente e recupera tutte le informazioni sopra descritte per operare correttamente con il file.
Un I-node occupa un blocco, ma solo una piccola parte contiene gli indirizzi ai blocchi.
dei file. Si usa un approccio multilivello: i primi 12 puntatori puntano direttamente ai blocchi dei file, il tredicesimo punta ad un blocco riempito di riferimenti ai blocchi (blocco a indirezione semplice), il quattordicesimo ad un blocco di indirezione doppia, il quindicesimo a un blocco di indirezione tripla. Così un file può avere dimensione massima di (12+256+256^2+256^3) blocchi.
14. I/O programmato e con interruzioni- I/O gestito da interrupt: al termine di ogni operazione di I/O corrisponde un segnale rilevato dal controllore di interrupt. Il controllore del dispositivo genera un'interruzione della CPU sulla linea di richiesta delle interruzioni. La CPU rileva l'interruzione e la recapita al gestore delle interruzioni, che a sua volta gestisce l'interruzione corrispondente servendo il dispositivo. Se non ci sono altre interruzioni in corso, la richiesta viene gestita immediatamente, altrimenti viene momentaneamente ignorata e le interruzioni vengono
Gestite secondo un'eventuale priorità. Ergo, il servizio di I/O è richiesto dalla periferica stessa in modo asincrono con il flusso del programma, quindi il trasferimento avviene tramite un interrupt. L'istruzione che provoca lo scambio di dati è contenuta nella routine di servizio dell'interrupt. La CPU controlla lo stato del suo vettore delle eccezioni dopo l'esecuzione di ogni istruzione.
I/O programmato: si verifica quando il processore, usando un opportuno sw, accede allo spazio di indirizzi della periferica in esame per eseguire trasferimenti di dati in entrata o in uscita. L'I/O programmato avviene secondo una sequenza prevista, i cui tempi possono essere decisi dalla CPU. La CPU rimane in attesa attiva sul bit di "ready" del dispositivo fino a quando il dato non è pronto; quando lo è viene prelevato. In pratica, la CPU continua a chiedere al controllore se il dato è arrivato.
I/O tramite DMA: è
usato per evitare l'I/O programmato e per fare grandi trasferimenti di dati. Il DMA permette di scrivere i dati nel registro del controllore un byte alla volta, mentre quello programmato occuperebbe la CPU per troppo tempo perdendo di efficienza. Questa tecnica richiede un controllo di DMA (Direct Memory Access) che si trova concettualmente tra la CPU e la memoria, collegato tramite bus (il controllore deve essere dotato di un buffer dunque, per poter fare ciò). Per dare avvio a un trasferimento DMA, la CPU scrive in memoria un blocco di comando per il DMA. Esso contiene un puntatore alla locazione dei dati da trasferire, un altro puntatore alla destinazione dei dati e il numero di byte da trasferire. La CPU scrive l'indirizzo di questo blocco di comando nel controllore del DMA e prosegue con altre attività. Il controllore DMA agisce quindi direttamente sul bus della memoria, presentando al bus gli indirizzi di memoria necessari per eseguire il trasferimento senzaL'aiuto della CPU. Quindi il DMA consente di scaricare la CPU dal compito di trasferire dati tra il dispositivo di I/O e la memoria. Una volta terminata l'operazione di I/O il DMA interrompe la CPU avvisando della terminazione.
Soft-link e Hard-link
I link sono scorciatoie per accedere a file o directory. Permettono di avere più di un punto di accesso per lo stesso file o directory, ma le informazioni rimangono in un'unica copia. È possibile un solo livello di collegamento. In Unix ci sono due tipi di link:
- SOFT LINK: simili ai collegamenti Windows, in cui il file creato contiene solo il nome del riferimento. Quindi, se "nuovo" è un soft link a "vecchio", posso usare indifferentemente nuovo o vecchio per modificare i miei dati. Se però cancello vecchio perdo i miei dati, nuovo rimane, ma nel momento in cui lo uso avrò un errore. Se invece cancello nuovo perdo solo un modo di accedere ai dati.
- HARD LINK: non viene
creato alcun file, ma si fa riferimento agli stessi dati fisici (cioè i nomi dei due file sono equivalenti). Quindi, se nuovo è un hard linka vecchio posso usare indifferentemente nuovo o vecchio per modificare i dati e se cancello vecchio posso ancora accedere ai dati tramite nuovo (e viceversa).
Se cancello vecchio e poi lo ricreo allora ho due insiemi di dati diversi.
-
Sistemi operativi: domande base esame con soluzioni
-
Sistemi Operativi I - Concorrenza & Persistenza
-
Sistemi Operativi I - Teoria Completa
-
Definizioni Sistemi operativi