| VA Number | Virtual Adress | Physical Adress | Valid |
|---|---|---|---|
| VA 0 | 0x11 --> 0010001 | 000010001 --> 0x11 | YES |
| VA 1 | 0x6c --> 1101100 | 111101100 --> 0x1ec | YES |
| VA 2 | 0x61 --> 1100001 | 111100001 --> 0x1e1 | NO |
| VA 3 | 0x20 --> 0100000 | 00100000 --> 0x1e1 | NO |
| VA 4 | 0x3f --> 0111111 | 00111111 --> 0x1e1 | NO |
--------------- 0x00000000
| Segment 0 |
|-------------| 0x00000014
| |
| |
| |
| |
|-------------| 0x000001ec
| Segment 1 |
|-------------| 0x00000200
Die höchste erlaubte Adresse in Segment 0 ist 0x00000020. Die niedrigste valide Addresse des Segments 1 ist 0x000001ec. Um zu testen ob das stimmt kann mann alle validen Adressen des ersten Segments UND Adressen über dem Limit
-A 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
Der Aufruf muss wie folgt aussehen:
./segmentation.py -a 16 -p 128 -A 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 --b0 0 --l0 2 --b1 16 --l1 2 -c
Die Flags -l0 und -l1 setzten jeweils das Limit für das Segment auf 2:
Segment 0 nimmt also die virtuellen Adressen 0 und 1 an und
Segment 1 nimmt die Adressen 14 und 15 an
Man sollte das Limit -l so wählen, dass es 90% der Adressen des Adressraums -a abdeckt. Dann werden die restliche 10% über das gesetzte Limit gehen und einen Segmentation Fault auslösen.
Man setzt die Limits der Segmente auf 0, dann ist keine virtuelle Adresse valide.
Segment 0: 0x0000 bis 0x0040
Segment 1: 0x0380 bis 0x0400
| VA Nr. | Virtual Address | Physical Address HEX | PA DEC |
|---|---|---|---|
| 0 | 0x0000005c | ||
| 1 | 0x00000011 | ||
| 2 | 0x00000043 | ||
| 3 | 0x00000021 | ||
| 4 | 0x0000006c | ||
| 5 | 0x0000007a | ||
| 6 | 0x00000050 | ||
| 7 | 0x00000037 | ||
| 8 | 0x000000ff | ||
| 9 | 0x000000e9 | ||
| 10 | 0x00000001 | ||
| 11 | 0x0000014c | ||
| 12 | 0x000000b4 | ||
| 13 | 0x000000cf | ||
| 14 | 0x0000012b | ||
| 15 | 0x00000084 |