第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在 linux 中程序運行要分為用戶態(tài)和內核態(tài)?

為什么在 linux 中程序運行要分為用戶態(tài)和內核態(tài)?

達令說 2019-04-19 15:58:47
除了一些內核函數(shù)調用安全的原因,直接在內核棧上運行用戶空間程序有什么問題?如果假設用戶的程序是可信的,那么可以直接在內核棧運行還會有什么別的問題么,我主要在考慮在像docker這樣利用容器運行服務的環(huán)境下消除系統(tǒng)調用開銷。
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

Linux中每個進程有兩個棧,分別用于用戶態(tài)和內核態(tài)的進程執(zhí)行,內核棧就是用于內核態(tài)的堆棧。
運行在用戶態(tài)的程序不能訪問操作系統(tǒng)內核數(shù)據(jù)結構合程序。
內核態(tài)下,CPU可執(zhí)行任何指令,在用戶態(tài)下CPU只能執(zhí)行非特權指令。當CPU處于內核態(tài),可以隨意進入用戶態(tài);而當CPU處于用戶態(tài),只能通過中斷的方式進入內核態(tài)。一般程序一開始都是運行于用戶態(tài),當程序需要使用系統(tǒng)資源時,就必須通過調用軟中斷進入內核態(tài).
安全性是很重要的一點吧,如果錯用一些危險的指令,如清內存、設置時鐘等,以前剛用Linux很多不懂,sudo用得很爽,輸錯命令把dbus刪除了,結果慘烈地重裝系統(tǒng)了。
                            
查看完整回答
1 反對 回復 2019-04-19
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

在8086的16位cpu時代,操作系統(tǒng)還是DOS的時候,沒有區(qū)分內核態(tài)跟用戶態(tài),那時候可以隨意讀寫這16bit的addressspace,即完全控制計算機的內存,所以對程序的要求特別高,一不小心寫到不該寫的地方,就會導致系統(tǒng)掛掉.
后來intel就發(fā)明了擁有ring0-ring3這些訪問控制級別的cpu來保護系統(tǒng)內存(實際上也就是給內存劃分區(qū)域).ring0的就是我們所說的內核級別,給他劃分的區(qū)域通常是整個內存空間(這里不考慮部分x86平臺初始化時占用的內存),他想寫哪里就寫哪里.而用戶態(tài),是運行在內核給它分配的空間內,這樣就能很好的保護內存了.
而linux就是使用這一CPU特性的系統(tǒng).
update:抱歉跑題了...
                            
查看完整回答
反對 回復 2019-04-19
  • 2 回答
  • 0 關注
  • 2090 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號