shell簡介
Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。
運行背景
a 一個基本的linux系統結構
b.由上圖可以看出,shell 在系統中是處於中間層次的。他為用戶和kernel的交互提供了一種方式,方案。
c.關於分層結構的眾多優勢:
1、開發人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利於標准化;
5、利於各層邏輯的復用。
缺點:
1、降低了系統的性能。
2、有時會導致級聯的修改
shell命令執行原理
表層理解 我們一般做法就是:打開終端,輸入命令,敲回車,等待命令運行,得到結果
那麼,對於這個過程進行細致的解析,又包含了哪些東西呢?
打開終端,輸入命令,敲回車----IO中斷
等待過程:
shell分析命令及參數----shell(一個終端位置的解釋性程序)
fork拷貝附近成pcb相關資源,為命令執行做准備----系統調用
exec在fork得到的子進程中執行命令
執行完成,返回結果----堆棧保護,棧幀注:當執行命令如 ls &
&符號表示該命令在後台執行,而當命令執行過程中,我們是無法僅需輸入命令的,這是因為父進程在fork執行shell命令的同時,回執行wait等待子進程結束,除非用戶主動Ctrl+C中止命令執行或者Ctrl+z置入後台執行。
參考http://my.oschina.net/u/866271/blog/232840