使用分段和分页组合的系统 问题

a system using a combined segmentation and paging Problem

提问人:Fathy Ramadan 提问时间:11/10/2023 更新时间:11/10/2023 访问量:19

问:

在使用组合分段和分页的系统中:最大分段大小为 4 MB,页面大小为 4 KB,进程虚拟内存大小为 4 GB,物理内存 (RAM) 大小为 4 GB。希望将页表大小限制为一页。自由帧列表为 (10, 20, 30, 40, 50, 60, 70, 80)。帧分配是从列表头(最左边)完成的。具有 2 个大小分别为 3 KB 和 6 KB 的段的进程 A 将完全加载到 RAM 中。

对于进程 A:其段表的起始地址是什么?构建其段表和页表,显示以下内容:(假设第 1 段在第 2 段之前完全加载) a.段表字段:段编号、基数和限制。b.Page 表格字段:页码和帧码)。 与物理地址 (0003C000)16 对应的虚拟地址的流程是什么?虚拟地址的计算方式

虚拟地址将如何计算 我试图解决它,但答案不同

内存管理 操作系统 分页

评论


答:

1赞 Juntire 11/10/2023 #1

进程 A 的段表:

段号 基础 限制
0 0 3 KB
1 3 KB 9 KB

进程 A 的页表:

段号 页码 帧号
0 0 10
0 1 20
1 0 30
1 1 40

如何计算与物理地址对应的虚拟地址 (0003C000)16:

  1. 物理地址在第二段(3 KB 到 9 KB)的范围内。
  2. 页面偏移量为 3C000 / 4096 = 9。
  3. 虚拟地址的计算方式如下:
Virtual address = Segment base address + Page number * Page size + Page offset
Virtual address = 3 KB + 1 * 4 KB + 9 = 7096

因此,与物理地址 (0003C000)16 对应的虚拟地址是 7096

解释:

在组合的分段和分页系统中,虚拟地址通过两个步骤转换为物理地址:

  1. 段号用于索引段表,以获取段基址和限制。
  2. 页码用于索引段的页表以获取帧号。
  3. 帧号用于从物理内存中获取物理地址。

下图显示了如何在组合的分段和分页系统中将虚拟地址转换为物理地址:

                            +-----------------------+
                            |       Segment table     |
                            +-----------------------+
                                 |
                                 |
                                 V
                    +-----------------------+
                    |       Page table       |
                    +-----------------------+
                        |
                        |
                        V
                    +-----------------------+
                    |       Physical memory   |
                    +-----------------------+

虚拟地址分为三个部分:

  • 段号:此部分用于索引段表。
  • 页码:此部分用于索引段的页表。
  • 页面偏移量:此部分用于定位帧内的字节。

物理地址的计算方式如下:

Physical address = Segment base address + Page number * Page size + Page offset

在进程 A 的情况下,虚拟地址 7096 被转换为物理地址 (0003C000)16,如下所示:

Segment number = 1
Page number = 1
Page offset = 9

Segment base address = 3 KB
Page size = 4 KB

Physical address = 3 KB + 1 * 4 KB + 9 = 7096