linux shell執行原理

shell簡介

Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。

運行背景

a 一個基本的linux系統結構

linux shell執行原理

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置入後臺執行。


分享到:


相關文章: