天天看點

關于系統調用,庫函數,SHELL的轉摘,,,

這之間的關系,沒有成型的梳理過,,

但這個都将所有東東比較系統的講出了概要。。如同打通關節般暢快,特别是shell和系統調用的關系。。。讓我們在日常計算機操作中,不會迷失自己的方向。。。。

哈哈,這同學寫的技術博都短小,易懂,我馬上就可以全部看完啦。。。(三個系列:python,linux,tcp/ip)

~~~~~~~~~~~~~~~

<a href="http://www.cnblogs.com/vamei/archive/2012/09/19/2692452.html">http://www.cnblogs.com/vamei/archive/2012/09/19/2692452.html</a>

。。。。。。。

為了我們友善調用核心,我們将核心的功能總結成為系統調用(system call)。系統調用看起來就像是的c語言函數,你也可以在程式中直接調用。linux系統有兩百多個這樣的系統調用。系統調用給了上層程式一個清晰的接口,隐藏了核心的複雜結構。一個作業系統上的功能可以看作是系統調用的組合的效果,而且一個作業系統不可能作出超越系統調用的動作。可以說一個系統調用函數就像是漢字的一個筆畫,任何一個漢字都要由基本的筆畫(點、橫、撇等等)構成,而且我們不能臆造出筆畫。在指令行中輸入$man 2 syscalls可以檢視所有的系統調用。你也可以通過$man 2 read來檢視系統調用read()的說明。在這兩個指令中的2都表示我們要在2類(系統調用類)中查詢 (具體各個類是什麼可以通過$man man看到)。

由于系統調用非常基礎,是以有時使用起來很麻煩。比如說一個簡單的給變量配置設定記憶體空間的操作,就需要動用多個系統調用。linux定義一些庫函數(library routine)來将系統調用組合成某些常用的功能,以友善我們程式設計。比如上面的配置設定記憶體的操作,看以定義成為一個庫函數(像malloc()這樣的函數)。再比如說,在讀取檔案的時候,系統調用要求我們設定好所需要的緩沖。我們這個時候可以使用standard io庫中的讀取函數,而這個讀取函數既負責設定緩沖,又負責使用讀取的系統調用函數。使用庫函數對于機器來說并沒有效率上的優勢,但可以把程式員從細節中解救出來。庫函數就像是漢字的偏旁部首,它由筆畫組成,但使用偏旁部首更容易組成字,比如"鐵"。當然,你也完全可以不使用庫函數,而直接調用系統函數,就像“人”字一樣,不用偏旁部首。

(實際上,一個作業系統要稱得上是unix系統,必須要擁有一些庫函數,比如iso c标準庫,posix标準等。)

。。。。。。。。

關于系統調用,庫函數,SHELL的轉摘,,,