Расчет таблицы сегментов

У меня есть вопрос. Я «гуглил» это много раз, но не мог найти решение или какой-либо метод для его решения.

В системе, использующей простую сегментацию, таблица сегментов выглядит следующим образом (все значения указаны в десятичном формате):

| Segment | Base Register Value | Limit Register Value |
|---------|---------------------|----------------------|
| 0       | 3000                | 1024                 |
| 1       | 8192                | 1208                 |
| 2       | 1000                | 1200                 |
| 3       | 5000                | 2048                 |

а) Нарисуйте диаграмму распределения памяти, показывающую все сегменты.

b) Вычислить физические адреса, соответствующие следующим логическим адресам сегмент+смещение (если адрес вызывает ошибку, указать): 0+1200, 1+500, 3+1024.

c) Вычислите адреса логического сегмента+смещения, соответствующие следующим физическим адресам (если адрес вызывает ошибку, укажите): 9000, 50, 1200.


person Unicepter    schedule 10.01.2017    source источник
comment
А вопрос?   -  person user3344003    schedule 10.01.2017
comment
Я добавил как картинку. Разве ты не мог видеть?   -  person Unicepter    schedule 11.01.2017
comment
Хорошо, я тоже добавил это как текст :)   -  person Unicepter    schedule 11.01.2017


Ответы (1)


Вот ответы; Я думаю, вы поймете, если внимательно посмотрите на них:

a)

| Main Memory |              |
|-------------|--------------|
| 0           |              |
|             | Segment 2    |
| 1000        |              |
|             | unallocated  |
| 2200        |              |
|             | unallocated  |
| 3000        |              |
|             | Segment 0    |
| 4024        |              |
|             | unallocated  |
| 5000        |              |
|             | Segment 3    |
| 7048        |              |
|             | unallocated  |
| 8192        |              |
|             | Segment 1    |
| 9208        |              |
| ...         | unallocated  |

b) 0+1200 --> 4200, 1+500 --> 8692, 3+1024 --> 6024.

c) 9000 --> 1+808, 50 --> fault, 1200 --> 2+200.

person Community    schedule 11.01.2017
comment
Большое спасибо! Я наконец понимаю, как я могу сделать - person Unicepter; 11.01.2017