作者byshen (死败)
看板CSSE
标题Re: [问题] segmentation 与 paging
时间Mon Nov 24 08:12:06 2008
闲聊一下,
我印象中 x86 的 segmentation 是在支援 paging 前就有的东西,
所以 x86 为了 backward compatible 还是一直保留着 segmentation。
然後现在一般 OS 就算要使用 x86 的 paging,也还是须要先设定 segmentation,
只不过 segmentation 的 base 设成 0,limit 设成 4GB,
让 segmentation 看起来有跟没有一样。
BTW,ARM 处理器的 memory protection 有分含 MMU 和 MPU 两种,
MPU 跟 x86 的 segmentation 似乎有那麽一点类似?
※ 引述《ILoveMouse (ILoveMouse)》之铭言:
: 我想补充一些些东西
: 现在大部分 OS 不会用到 segmentation
: 原因不外乎 porting 增加困难
: 因为目前我知道的常见 CPU 似乎只有 x86 有 segmentation
: 像 ARM, MIPS, PowerPC, Sparc 等常见的都没有
: 所以很少 OS 会特别利用 x86 的 segmentation
: 或许有些 OS 有 但大部分没有
: 而为什麽会有 segmentation 呢
: 除了 darkcc 板友说的
: 我觉得是因为当时 x86 想说
: 在做 swap in/out 时
: 不一定以 page 为单位
: 可以用 segmentation 为单位
: 比方说 OS/2 那时的 swap out
: 就不是以 page 做 swap out
: 而是用 segmentation
: 你可以参考看看
: 有误请指教 ^^
: ※ 引述《darkcc (will)》之铭言:
: : 离上课已经有点遥远...有待补充...
: : segment是把程式跟资料分开那个吧...
: : 分开之後程式归程式,资料归资料,程式是不可变动的,资料是运算过程会变动的
: : 因此程式区块可以开唯读甚至共享,只要每个process都用自己的资料就好了
: : 用virtual memory让程式不会直接碰到记忆体,也同样有保护作用
: : 这样才不会有人偷偷改os或其他软体的资料...
: : 再者由os负责协调各程式实体记忆体分配,多工才不会为了记忆体分配打架
: : 因为看到的记忆体位置都是独立的,所以不会认床
: : 当程式与实体记忆体没直接关联时os才可以在底层做手脚
: : page-in/out也是这样子才可以实现,随便找空间塞而不影响程式运作...
: : 学到系统程式对这部分会比较清楚
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.166.18
1F:推 final01:OS课本的 segmentation跟x86 的segmentation不太一样吧 11/25 22:53