歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> linux shell執行原理

linux shell執行原理

日期:2017/3/3 12:05:22   编辑: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
Copyright © Linux教程網 All Rights Reserved