説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

ANSWERS.md 3.0KB

Antworten

Warmup

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

Questions

  1. 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

  2. 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

  3. 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.

  4. Man setzt die Limits der Segmente auf 0, dann ist keine virtuelle Adresse valide.

  5. 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