Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    UNIX: traduzione indirizzo Logico a Fisico

    Qualcuno sa come si effettua la traduzione di indirizzi logici in indirizzi fisici in Unix?

    Un esercizio di Sistemi Operativi che sto tentando di risolvere, mi chiede:
    si considerino 3 processi P1, P2 e P3 che accedono ai blocchi logici di due file A e B in unix in lettura e scrittura seguendo la seguente coda delle richieste di blocchi logici e file relativo:
    (6,B), (15,A), (34,B), (520,A), (4300,B), (4250,A), (4560,B), (4484,A)
    Si consideri inoltre che i file A e B abbiano i blocchi logici allocati ogni 2 a partire da 1 per il file B e da 0 per il file A, che l'unità disco è composta da 400 cilindri (da 0 a 399), ognuna di 290 blocchi da 4kb, indirizzi a 32 bit, transfer rate 50mb/s, e la latenza sia media. Se la testina sul terzo piatto ha eseguito l'ultimo movimento portandosi dal cilindro 120 al cilindro 150, si calcoli il tempo necessario per l'accesso alle tracce secondo a) SSTF e b) C-LOOK nel caso che arrivi al tempo 40ms la richiesta di lettura del blocco logico 1040 per il file A.

    I problemi riguardano fondamentalmente la prima parte dell'esercizio, cioè quella dove deve essere effettuata la conversione da indirizzi logici a indirizzi fisici tenendo conto del file system di Unix.
    La parte seguente, quella dove bisogna applicare gli algoritmi SSTF e C-LOOK bene o male la sappiamo fare.

    Le informazioni di cui sono in possesso sono le seguenti:
    Unix utilizza l’allocazione indicizzata, ed ogni blocco è di 4kb.
    Ogni file ha una tabella FMT composta da 15 elementi, ogni elemento viene chiamato inode che contiene le info relative ai file.
    In particolare i primi 12 puntano direttamente ai blocchi dati del file, quindi ad essi è possibile accedere direttamente.
    Gli altri tre, 13,14 e 15, puntano a blocchi indice, quindi I record successivi al 13 devono essere acceduti leggendo prima un blocco indice per ottenere il relativo indirizzo.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,313

    Moderazione

    Esiste un linguaggio di programmazione a cui fare riferimento?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    questo è un esercizio teorico, che mi consentirà poi di fare altre prove pratiche!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    è una versione supersemplificata bimbominkia-like di ext2.

    la risposta non è difficile.
    Unix utilizza l’allocazione indicizzata, ed ogni blocco è di 4kb.
    Ogni file ha una tabella FMT composta da 15 elementi, ogni elemento viene chiamato inode che contiene le info relative ai file.
    In particolare i primi 12 puntano direttamente ai blocchi dati del file, quindi ad essi è possibile accedere direttamente.
    Gli altri tre, 13,14 e 15, puntano a blocchi indice, quindi I record successivi al 13 devono essere acceduti leggendo prima un blocco indice per ottenere il relativo indirizzo.

    i primi 12 chunk contengono i dati, ossia fino a 48KB di file vengono memorizzati lì dentro (quindi avrai latenza+trasferimento e basta).

    per file più grandi "aumenti" di livello con indicizzazione indiretta sugli i node

  5. #5
    Si ma il vero problema è proprio l'effettuare questa operazione di aumento di livello??Cioè se vorrei tradurre i blocchi postati nell'esercizio, quali sarebberò i risultanti blocchi fisici, e come va fatto il calcolo???

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,313

    Moderazione

    Originariamente inviato da xdaniel2
    Si ma il vero problema è proprio l'effettuare questa operazione di aumento di livello??Cioè se vorrei tradurre i blocchi postati nell'esercizio, quali sarebberò i risultanti blocchi fisici, e come va fatto il calcolo???
    Qui non facciamo i compiti a casa conto terzi: approfondisci l'argomento e proponi una tua soluzione da discutere, senza attendere semplicemente che altri ti dicano per filo e per segno lo svolgimento dell'intero esercizio.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Non cerco per nulla lo svolgimento dell'esercizio, ma solo capire come ottenere un indirizzo fisico partendo da uno logico in Unix!!!! Se lo sapevo fare di certo nn lo chiedevo, volevo semplicemente capire il metodo!Quindi a mio parere questo tuo post è alquanto inopportuno!

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,313

    Moderazione

    Originariamente inviato da xdaniel2
    Non cerco per nulla lo svolgimento dell'esercizio, ma solo capire come ottenere un indirizzo fisico partendo da uno logico in Unix!!!!
    Se non sai nemmeno da dove partire per superare questo ostacolo, significa che devi riprendere in mano il libro e studiare come si fa. Se lo hai già fatto e non riesci per qualche dubbio specifico, devi poter dire qual è questo dubbio o almeno far capire cosa non ti è chiaro del processo di conversione. In caso contrario, stai semplicemente dicendo: "c'è questa conversione da fare... fatela voi e io aspetto di vedere come si fa", e questo non è la modalità con cui si partecipa a un forum.

    Originariamente inviato da xdaniel2
    Se lo sapevo fare di certo nn lo chiedevo
    Questo vale per qualsiasi discussione venga aperta qui, ma è irrilevante: non si pretenda che tu conosca la soluzione finale, ma che almeno tu sia in grado di spiegare cosa non comprendi della parte di esercizio che ti è stato assegnato.

    Originariamente inviato da xdaniel2
    Quindi a mio parere questo tuo post è alquanto inopportuno!
    I post inopportuni sono quelli in cui continui a riproporre la domanda senza prendere in considerazione quanto ti è stato già detto, ma ora dovrebbe essere già più chiaro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da xdaniel2
    Si ma il vero problema è proprio l'effettuare questa operazione di aumento di livello??Cioè se vorrei tradurre i blocchi postati nell'esercizio, quali sarebberò i risultanti blocchi fisici, e come va fatto il calcolo???
    in realtà i file system "moderni" non funzionano così, ma si tratta evidentemente di un modello semplificato ad uso didattico.
    ---
    La versione breve è: se un file è piccolo i suoi dati vengono mantenuti all'interno di una lista linkata (inode). In questo modo piccoli file non usano molto spazio.

    Se i file sono più grandi, si usano gli inode come puntatori ad altre liste di inote, man mano crescenti.
    Puntatore a lista di inode
    puntatore a lista di puntatori di inode
    puntatore a lista di puntatori di lista di puntatori di inode

    questo consente di poter avere file anche molto grandi, senza sprecare molto spazio per memorizzare le strutture (in realtà, come accennato, è diverso ma pazienza).

    ----
    Cosa, materialmente, non ti è chiaro\non riesci ad affrontare?

    PS ai "miei" tempi... un sistema operativo INTERO "stile *nix"...ti facevano scrivere [col VI]... compreso il file system... lì non avevi scelta tra "bere ed affogare"... vabbuò

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    1
    Ciao Daniel mi trovo davanti al tuo stesso esercizio volevo sapere se avevi trovato una soluzione a riguardo grazie per la disponibiltà

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.