🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

4 total messages Started by Eric Mueller Thu, 28 May 1998 00:00
Frage zu Parity-Berechnung
#617
Author: Eric Mueller
Date: Thu, 28 May 1998 00:00
82 lines
3390 bytes
Und wiedereinmal (alle Jahre wieder) Poste ich meine Frage, auf
die mir bisher noch nie jemand geantwortet hat. Aber ich gebe nicht
auf ;-). Deshalb hier nochmals:


Hi liebe Netzgemeinde

Ich habe da im PC Direkt Magazin von 1996 (Sonderausgabe "Alles ueber SCSI")
mich mit dem Thema etwas auseinandersetzten wollen und bin auf Seite 44 
bei der Erklaerung ueber Paritaetspruefung bei RAID steckengeblieben. Irgend-
wie fehlt mir da der rote Faden, vielleicht kann mir einer weiterhelfen.

Es geht also um Paritaetspruefung bei RAID anhand einfacher XOR Vergleiche
bei 4 HDD plus einer Parity HDD. Das Beispiel zeigt "graphisch" und anhand
zweier Formeln, wie die Parity erst berechnet wird und wie anschliessend
bei einer defekten HDD wieder die Information zurueckberechnet werden kann.
Eigentlich weiss ich ja, wie man zwei binaere Werte XOR nimmt, aber wie man
mehrere Werte gleichzeitig XORt, sehe ich dem Beispiel nicht an, bzw. das
Beispiel kommt auf andere Werte als ich, wenn ich Schritt fuer Schritt
immer nur zwei Ziffern XORe. Wie also muss ich vorgehen?

Ich versuche, das Beispiel aus dem Heft hier zum Besten zu geben:

<ZITAT>

                                  Bits
                    7   6   5   4   3   2   1   0         Wert


HDD 1               1   0   1   0   1   1   0   0         172

HDD 2               0   1   1   0   1   0   1   0         106
(defekt)

HDD 3               1   1   1   1   0   0   0   0         240

HDD 4               1   0   1   0   1   0   1   0         156


Parity-HDD          1   0   1   0   1   0   1   0         170


Formel zur Berechnung des Paritaetsbits:

HDD 1         HDD 2        HDD 3          HDD 4        Parity
 bit7   XOR   bit7   XOR   bit7    XOR    bit7    =    bit7


Formel zur Berechnung eines Datenbits bei Plattenausfall:

HDD 1         Parity       HDD 3          HDD 4        HDD 2
 bit7   XOR   bit7   XOR   bit7    XOR    bit7    =    bit7

</ZITAT>

Ja, genauso stehts dort geschrieben. Muesste uebrigens nicht schonmal 
HDD 4 und die Parity HDD bei gleichem Bitmuster auch den gleichen Wert
haben??? Was ich nun machen wuerde ware fuer Bit 5 zum Beispiel:


1 XOR 1 = 0,  Bit 5 von HDD1 mit Bit 5 von HDD2
0 XOR 1 = 1,  Ergebnis von vorhin mit Bit 5 von HDD3
1 XOR 1 = 0,  Ergebnis von vorhin mit Bit 5 von HDD4 ergaebe bei mir 0, nicht
              wie im Heft 1.......

Wie also loest man eine Ketten-XOR-Rechnung???

Vielen Dank fuer die wohlwollende Antwort.

- Eric Mueller

eric.mueller@sd.id.ethz.ch

-- 
............................................................snip

   eric.mueller@sd.id.ethz.ch	+41-01/6321022 (Telefax)	

   925:                         +41-01/6323499 
                                Swiss Federal Institute of Technology
   PGP on request               ETH Zuerich, Switzerland
Re: Frage zu Parity-Berechnung
#614
Author: (C)hris
Date: Thu, 28 May 1998 00:00
18 lines
1148 bytes
Grundsaetzlich ist die Frage wie beim XOR die Klammern
gesetzt werden.

(A XOR B) XOR C ist nicht gleich A XOR (B XOR C).

Das wurde da irgendwie unterschlagen. Somit ist XDOR
nicht distributiv oder wie das schon wieder hiess.

Koennte es auch ein Fehler in Deiner Literatur sein? Ist
ja in Computer-Literatur keine Seltenheit.

Die Formel um auf das Partity-Teil zu kommen ist mir nicht
ersichtlich: Ich habe ein paar Varanten probiert und bin nicht
darauf gekommen (nicht dass ich mir Muehe gegeben haette):
Alle Kombinationen fuehren nicht zum gewuenschten Resultat.

(C)hris, der Bit-Schiebende
Re: Frage zu Parity-Berechnung
#615
Author: Thomas Klaeger
Date: Fri, 29 May 1998 00:00
51 lines
2533 bytes
On 28 May 1998 15:25:47 GMT, eric@sd.id.ethz.ch (Eric Mueller) wrote:

>Eigentlich weiss ich ja, wie man zwei binaere Werte XOR nimmt, aber wie man
>mehrere Werte gleichzeitig XORt, sehe ich dem Beispiel nicht an, bzw. das
>Beispiel kommt auf andere Werte als ich, wenn ich Schritt fuer Schritt
>immer nur zwei Ziffern XORe. Wie also muss ich vorgehen?
>
>
>1 XOR 1 = 0,  Bit 5 von HDD1 mit Bit 5 von HDD2
>0 XOR 1 = 1,  Ergebnis von vorhin mit Bit 5 von HDD3
>1 XOR 1 = 0,  Ergebnis von vorhin mit Bit 5 von HDD4 ergaebe bei mir 0, nicht
>              wie im Heft 1.......
>
>Wie also loest man eine Ketten-XOR-Rechnung???
>

Hoi Eric,

Deine �berlegung ist schon richtig - deshalb schreiben sie ja auch, dass die
HDD2 defekt ist :-)

Die XOR-Berechnung ist voll kommutativ, assoziativ, ..., also

A XOR B = B XOR A
A XOR B XOR C = (A XOR B) XOR C = A XOR (B XOR C)

Das ist so, weil XOR �quivalent zur Addition Modulo 2 ist - dh addiere alle
Eing�nge einer XOR-Berechnung mit mehreren Eing�ngen und nimm den Rest wenn Du
das Resultat durch 2 teilst.

Aus dieser Vorschrift erh�ltst Du einen einfachen Test: Wenn die Anzahl Bits
(ohne das Parity-Bit) mit Wert 1 ungerade ist, dann ist das Parity-Bit 1, sonst
ist es 0. Oder: Wenn die Anzahl Bits (mit Parity-Bit) mit Wert 1 gerade ist,
dann sind alle Bits korrekt.

Hier nochmals das Beispiel aus dem Heft, mit den richitgen Werten:

                                  Bits
                    7   6   5   4   3   2   1   0         Wert

HDD 1               1   0   1   0   1   1   0   0         172
HDD 2   
(defekt)            0   1   1   0   1   0   1   0         106 
 richtig            0   1   0   1   1   1   0   0
HDD 3               1   1   1   1   0   0   0   0         240
HDD 4               1   0   1   0   1   0   1   0         156

Parity-HDD          1   0   1   0   1   0   1   0         170

Gruss Thomas
Re: Frage zu Parity-Berechnung
#616
Author: Marc SCHAEFER
Date: Fri, 29 May 1998 00:00
46 lines
1951 bytes
(C)hris <chris@staubli.ch> wrote:
> (A XOR B) XOR C ist nicht gleich A XOR (B XOR C).

a b c a X b  b X c  (a X b) X c  a X (b X c)
0 0 0   0      0         0           0
0 0 1   0      1         1           1
0 1 0   1      1         1           1
0 1 1   1      0         0           0
1 0 0   1      0         1           1
1 0 1   1      1         0           0
1 1 0   0      1         0           0
1 1 1   0      0         1           1

maybe I am missing something, but it looks commutative (b.) and
associative (a.), thus
   a. (a X b) x c == a X (b X c)
   b. (a X b) == (b X a)

But not distributive (unlike AND, for example)
   (a X b) X c != (a X c) X (b X c)
counter example:
   a = 0, b = 0, c = 1

   (0 X 0) X 1  !=  (0 X 1) X (0 X 1)
       1        !=          0


`AND' is distributive:
    (a AND b) AND c == (a AND c) AND (b AND c)
                    == a AND c AND b AND c
                    == a AND b AND c == (a AND b) AND c

Another interesting property of XOR:
   if
      a X b == c 
   then
      a == c X b == (a X b) X b == a X (b X b) == a

This is because:   c X b == (a X b) X b == a X (b X b) == a
                                        ^ associativity (cf above)

Some ciphers probably also are based on the property that
   (text X key) X key == text

RAID systems are interested in p = a X B; a == p X B for example.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads