分段表计算

时间:2017-01-10 17:02:10

标签: operating-system base segments register-allocation

我有一个问题。我“多次搜索”它,但无法找到解决方案或任何方法来解决它。

  

在使用简单分段的系统上,分段表如下(所有值均为十进制):

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

a)绘制一个显示所有段的内存分配图表。

     

b)计算对应于以下段+偏移逻辑地址的物理地址(如果地址生成错误,请指出):0+12001+5003+1024

     

c)计算与以下物理地址对应的逻辑段+偏移地址(如果地址生成错误,请指明):9000501200

1 个答案:

答案 0 :(得分:0)

以下是答案;我认为你会仔细看看它们会理解:

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 --> 42001+500 --> 86923+1024 --> 6024

c)9000 --> 1+80850 --> fault1200 --> 2+200