作者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