系統調用原理

來源:互聯網
上載者:User

標籤:

1.系統調用是作業系統提供給使用者程式調用的一組“特殊”介面。可被看成是一個核心與使用者空間程式互動的介面

系統調用在系統中的主要用途無非以下幾類:

 1.1 控制硬體--系統調用往往作為硬體資源和使用者空間的抽象介面,比如讀寫檔案時用到的write/read調用。

1.2設定系統狀態或讀取核心資料——因為系統調用是使用者空間和核心的唯一通訊手段

1.3    進程管理——一系統調用介面是用來保證系統中進程能以多任務在虛擬記憶體環境下得以運行。

系統調用並非直接和程式員或系統管理員打交道,它僅僅是一個通過非強制中斷機制(我們後面講述)向核心提交請求,擷取核心服務的介面。而在實際使用中程式員調用的多是使用者編程介面——API,而管理員使用的則多是系統命令

2Linux系統調用機制
系統調用是作為一種異常類型實現的

_syscallN(parameters)
  其中N是系統調用所需的參數數目,而parameters則用一組參數代替。這些參數使巨集指令完成適合於特定的系統調用的擴充。

_syscall1( int, setuid, uid_t, uid )
  syscallN( )巨集指令的第1個參數int說明產生的函數的傳回值的類型是整型,第2個參數setuid說明產生的函數的名稱。後面是系統調用所需要的每個參數。這一巨集指令後面還有兩個參數uid_t和uid分別用來指定參數的類型和名稱。

 

int main(void)

{

   int a=syscall(318,100);//318是系統調用號,100是參數

   printf("%d\n",a);

   return 0;

}

syscall是核心提供為使用者程式的一個函數,

如果不使用syscall函數,也可以使用宏定義,但是在2.6.20以後的版本裡,沒有宏定義,需要自己從其他版本裡複製過來添加。

 

系統調用原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.