linux shell執行原理


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM