Tuesday, September 8, 2009

System Call

簡單講, System Call就是一些低階函式, 它可以讓我們存取和控制檔案和設備。利用System Call, 且透過Linux Kernel的一些device driver, 可以讓我們跟硬體設備溝通。


然而, 執行system call會降低系統效率, 因為程式需經由切換到Kernel來呼叫system call, 且執行完還需返回。


舉個例子:
"read" system call, read會從檔案中讀取我們所設定的資料大小, 並將它存放在buffer中, 接著, 我們可以用"write"這個system call來將buffer裡的資料寫出來。


因此我們可以做個實驗, 也就是觀察在不同的buffer大小底下, 程式執行時間的差別。我們可以發現在buffer設定越大的時候, 其程式執行時間越短。原因就是, 在所要讀取的檔案大小固定之下, 當buffer越大, 則所需的system call次數就越少, 其執行時間當然就會越短




[Ref.]
Beginning Linux Programming 4/e, Richard Stones and Neil Matthew

0 意見: