dateisystem addressierung

Von: , Frage gestellt am Sa, 21. Jan 2006
hallo!

hoffe das passt hier rein, hab irgendwie nix besseres gefunden :)

also:
ich lern grad auf meine klausuren (ich verrückter :P) und bin in "systemsoftware" in einer alten klausur über diese frage gestolpert, die ich trotz script und gegoogle nicht für mich beantworten kann; nichmal nen "ansatz" hab ich wirklich - irgendwas mit den inodes halt, aber mehr hab ich nich herausgefunden.

die frage:

In einem klassischen Unix-Dateisystem sei die Blockgröße 1KB und kann durch
32 Bit adressiert werden. Eine Datei sei 512 KB groß. Wie viele Blöcke der Datei
müssen 2-fach indirekt adressiert werden (Begründen Sie Ihre Antwort)?


kann mich da wer erleuchten?

danke im voraus
Geisterkarle

6 Antworten zu dieser Frage

  1. Antwort von (abgemeldet) nach einer Stunde 0 hilfreich
    Aber Karle...
    Du weisst doch, dass hier keine Hausaufgaben beantwortet werden.
    In einem IT-Studium sollte man m.E. als erstes lernen, google zu bedienen :fg:

    Die Sache ist nicht to schlimm wie Du Dir das vorstellst.
    Einfach mal ne Nacht drüber pennen, reinbohren bringt da garnix.

    Haeng Dich mal hier rein.
    google: filesystems
    http://www.tldp.org/HOWTO/Filesystems-HOWTO.html

    Aloha - digi (aEg)
    • Antwort von nach 2 Stunden 0 hilfreich
      Re: Aber Karle...
      Du weisst doch, dass hier keine Hausaufgaben beantwortet
      werden.
      will ich auch gar nicht; aber wenn ich vor nem berg steh, wärs nett, wenn ich irgend wo erzählt bekomme, wo der pfad nach oben is; der fehlt nämlich mir! In einem IT-Studium sollte man m.E. als erstes lernen,
      google zu bedienen :fg:
      wenn ich mit allem, was ich versucht hab, nach 30 min kein land mehr sehe, geb ich halt auf! Die Sache ist nicht to schlimm wie Du Dir das vorstellst.
      Einfach mal ne Nacht drüber pennen, reinbohren bringt da
      garnix.
      nacht drüber pennen bringt mich in 99% der fälle nicht weiter! Haeng Dich mal hier rein.
      google: filesystems
      http://www.tldp.org/HOWTO/Filesystems-HOWTO.html
      50% steht (todo)
      ansonsten irgendwelche verlinkungen
      -> da steht wirklich absolut nix sinnvolles; da such ich lieber wo anders!

      bin aber wenigstens irgendwie darüber mal zu einem verwertbaren ziel gekommen.

      Es gibt im Inode-Zeiger auf die ersten 12 Blöcke die die Daten der Datei enthalten. Außerdem gibt es einen Zeiger auf einen indirekten Block (der wiederum Zeiger auf den nächsten Satz von Blöcken der Datei enthält) einen Zeiger auf einen doppelt indirekten Block (der Zeiger auf weitere indirekte Blöcke enthält) und einen Zeiger auf einen dreifach indirekten Block (der Zeiger auf doppelt indirekte Blöcke enthält).

      erstmal jetzt meinen prof anschreiben, denn im script steht "10 blöcke"; weiteres gegoogelt hat (zwar auch nicht sicher, aber immerhin) aber die 12 bestätigen können.

      zudem muss ich das ja noch irgendwie kapieren. vielleicht kann man mir hier wenigstens meine jetzt folgende überlegung bestätigen bzw. verreissen:

      wichtig in dem zusammenhang sind 4 inodezeiger:
      der erste, direkte, der auf die ersten 12 blöcke verweist.
      dann den 1. indirekten, der auf einen block verweist, der im eigentlichen mit den enthaltenen daten der datei wenig zu tun hat, aber in dem die zeiger zu den nächsten 12 12er-blöcken sind.
      dann den 2. indirekten, der auf einen block verweist, in dem zeiger zu 12 blöcken der 1. stufe sind. somit 2fach indirekt auf die blöcke zeigt.
      und dann noch der 3. indirekte, der auf einen block der 2. stufe zeigt.

      für meine aufgabenstellung wäre das dann die rechnung:
      512 blöcke zu verweisen
      direkt: 12, bleiben 500
      1fach indirekt: 144 (12x12), bleiben 356
      also müssen 356 blöcke 2fach indirekt addressiert werden.

      korrekt? völliger blödsinn?

      tüftelnder
      Geisterkarle
      • Antwort von nach 9 Stunden 0 hilfreich
        Re^2: Aber Karle...
        Hi.. <I>Es gibt im Inode-Zeiger auf die ersten 12 Blöcke die die
        Daten der Datei enthalten. Außerdem gibt es einen Zeiger auf
        einen indirekten Block (der wiederum Zeiger auf den nächsten
        Satz von Blöcken der Datei enthält)
        erstmal jetzt meinen prof anschreiben, denn im script steht
        "10 blöcke"; weiteres gegoogelt hat (zwar auch nicht sicher,
        aber immerhin) aber die 12 bestätigen können.
        Den brauchst Du nicht zu fragen, stattdessen solltest Du die Aufgabenstellung nochmal aufmerksam lesen: Mit "klassisches Unix-Dateisystem" meint er wohl System V - da waren's noch 10. Du hast vermutlich eine ext2-Beschreibung ergoogelt, das adressiert 12 Blöcke direkt. zudem muss ich das ja noch irgendwie kapieren. vielleicht kann
        man mir hier wenigstens meine jetzt folgende überlegung
        bestätigen bzw. verreissen:
        wichtig in dem zusammenhang sind 4 inodezeiger:
        der erste, direkte, der auf die ersten 12 blöcke verweist.
        dann den 1. indirekten, der auf einen block verweist, der im
        eigentlichen mit den enthaltenen daten der datei wenig zu tun
        hat, aber in dem die zeiger zu den nächsten 12 12er-blöcken
        sind.
        Zu weit gedacht, das wäre schon doppelt indirekt.

        Der indirekte Block ist (daher der Name) ein ganzer Block voll "direkter" Adressen. SysV verwendet hier wie ext2 4 Byte pro Adresse, d.h. einfach indirekt können blocksize/4 Datenblöcke adressiert werden.

        Der doppelt indirekte Block enthält die Adressen von blocksize/4 einfach indirekten Blöcken, adressiert also maximal blocksize²/16 Datenblöcke. für meine aufgabenstellung wäre das dann die rechnung:
        512 blöcke zu verweisen
        direkt: 12, bleiben 500
        1fach indirekt: 144 (12x12), bleiben 356
        also müssen 356 blöcke 2fach indirekt addressiert werden.
        korrekt? völliger blödsinn?
        Bis auf die oben erklärten Korrekturen ok. Nochmal richtig rechnen darfst Du selbst ;-)

        genumi
        • Antwort von nach 18 Stunden 0 hilfreich
          Re^3: Aber Karle...
          Den brauchst Du nicht zu fragen, stattdessen solltest Du die
          Aufgabenstellung nochmal aufmerksam lesen: Mit "klassisches
          Unix-Dateisystem" meint er wohl System V - da waren's noch 10.
          Du hast vermutlich eine ext2-Beschreibung ergoogelt, das
          adressiert 12 Blöcke direkt.
          aha! mal wieder klar, dass man mit dem ältesten rumwerkeln muss, während die "welt" sich langsam sogar auf ext3 umstellt :P Der indirekte Block ist (daher der Name) ein ganzer Block voll
          "direkter" Adressen. SysV verwendet hier wie ext2 4 Byte pro
          Adresse, d.h. einfach indirekt können blocksize/4 Datenblöcke
          adressiert werden.

          Der doppelt indirekte Block enthält die Adressen von
          blocksize/4 einfach indirekten Blöcken, adressiert also
          maximal blocksize²/16 Datenblöcke.
          und die blocksize is ebenfalls 1kb (1024 byte) !?!? bzw. hängt die inode blocksize von der datablocksize ab? Bis auf die oben erklärten Korrekturen ok. Nochmal richtig
          rechnen darfst Du selbst ;-)
          direkt: 512 - 10 = 502
          obiges angenommen, passt in einen block 1024/32 = 32 adressen.
          1fach indirekt: 502 - 32 = 470
          diese 470 müsste also 2fach sein.

          nu korrekt?

          *langsamlichtaufgehender*
          Geisterkarle
          • Antwort von nach einem Tag 0 hilfreich
            Der Nebel lichtet sich
            Hi.. Der indirekte Block ist (daher der Name) ein ganzer Block voll
            "direkter" Adressen. SysV verwendet hier wie ext2 4 Byte pro
            Adresse, d.h. einfach indirekt können blocksize/4 Datenblöcke
            adressiert werden.
            und die blocksize is ebenfalls 1kb (1024 byte) !?!? bzw. hängt
            die inode blocksize von der datablocksize ab?
            Es gibt nur eine Blockgröße pro Dateisystem. Der indirekte Adressblock ist ein Filesystem-Block wie jeder andere, insbesondere ist er genauso groß. direkt: 512 - 10 = 502
            Soweit noch ganz einfach und auch richtig. obiges angenommen, passt in einen block 1024/32 = 32 adressen.
            Du hast Spaß dran, Dinge zu verwechseln, oder? 1 Bit != 1 Byte ;-)
            In 1024 Byte passen daher 256 32-Bit-Adressen. Bleiben 246 Blöcke, die doppelt indirekt addressiert werden.

            Und damit Du jetzt nicht völlig klar siehst, noch ein bisschen Verwirrung stiften: SysV FS adressiert seine Blöcke nur mit 24 Bit.
            Im Inode ist es dann auch so sparsam, nur drei Byte pro Adresse zu verwenden, während in den indirekten Adressblöcken jedes vierte Byte einfach Null ist.

            genumi
            • Antwort von nach einem Tag 0 hilfreich
              Re: Der Nebel lichtet sich
              Du hast Spaß dran, Dinge zu verwechseln, oder? 1 Bit != 1 Byte
              ;-)
              da komm ich auf die idee, dass ich ja das 1kb in byte umrechnen muss und mache bei byte gleich weiter o.O
              wie wärs 8192/32 (bit) *g*

              na! aufgabe wohl endlich gelöst! danke an alle ;)

              gruß
              Geisterkarle
Keine passende Antwort gefunden? Jetzt eigene Frage stellen!