我正在研究组合的分页/分段系统,在我的书中有两种方法:
1.paged segmentation
2.segmented paging
我无法弄清楚两者之间的区别。我认为在分页分段中,分段被分成页面,在分段分页中,页面被分成段,但我不知道我是对还是错。同时在因特网上,仅使用一种方案来描述组合的寻呼/分段。我无法弄清楚为什么在我的课本中有两种方案。任何帮助将深表感谢。
答案 0 :(得分:34)
所以,在网上大力搜索这两个术语之间的差异或相似之后,我得出了最终答案。首先,我要写下相似之处:
现在要描述差异,我将不得不分别定义和描述每个术语:
va =(s,p,w)其中,va是虚拟地址,| s |确定的数量 段(ST的大小),| p |确定每个段的页数(大小为 PT),| w |确定页面大小。
address_map(s, p, w)
{
pa = *(*(STR+s)+p)+w;
return pa;
}
图表在这里:
va =(s1,s2,p,w)
address_map
(s1, s2, p, w)
{
pa = *(*(*(STR+s1)+s2)+p)+w;
return pa;
}
图表描述如下:
答案 1 :(得分:3)
事实上,分页有以下好处:
但是从细分中也看到了很好的行为:
可以合并给定的术语并创建以下术语:
实现分段分页需要采取多个步骤:
以下步骤在此方案中进行:
答案 2 :(得分:1)
细分会导致页面翻译和交换速度变慢
出于这些原因,分割在x86-64上大部分被删除。
它们之间的主要区别在于:
虽然拥有可配置的段宽度似乎更聪明,但随着您增加进程的内存大小,碎片化是不可避免的,例如:
| | process 1 | | process 2 | |
----------- -----------
0 max
最终会随着流程1的增长而变得:
| | process 1 || process 2 | |
------------------ -------------
0 max
直到分裂是不可避免的:
| | process 1 part 1 || process 2 | | process 1 part 2 | |
------------------ ----------- ------------------
0 max
此时:
使用固定大小的页面:
固定大小的内存块更易于管理,并占据了当前的操作系统设计。