根據系統調用的功能,可將其分為進程控制(類)的系統調用、進程通信(類)的系統調 用、文件操作(類)及設備管理(類)系統調用等。
進程控制類的系統調用
這類系統調用主要用於對進程的控制,如創建一個新的進程和終止一個進程的運行,獲 得和設置進程屬性等。
(1 )創建和終止進程的系統調用。在多道程序環境下,為使多道程序能並發執行,必須 先利用創建進程的系統調用,為需要並發執行的各程序分別創建一個進程。當進程已經執 行結朿或因發生異常情況而不能繼續執行時,可利用終止進程的系統調用來結朿該進程的 運行。
(2 )獲得和設置進程屬性的系統調用。當創建一個(些)新進程後,為了能控制它(們) 的運行,應當能了解、確定和重新設置它(們)的屬性。這些屬性包括:進程標識符、進程優 先級、最大允許執行時間等。此時可利用獲得進程屬性的系統調用,來了解某進程的屬性, 利用設置進程屬性的系統調用,來確定和重新設罝進程的屬性。
(3 )等待事件觸發的系統調用。進程在運行過程中,有時需要等待某事件(條件)出現 後,方可繼續執行。例如,一個進程在創建了一個(些)新進程後,需要等待它(們)運行結朿 後,才能繼續執行,此時可利用等待子進程結朿的系統調用進行等待。又如,在客戶/服務器 模式中,若無任何客戶向服務器發出消息,則服務器接收進程便無事可做,此時該進程就可 利用等待(事件)的系統調用,使自己處於等待狀態,一旦有客戶發來消息時,接收進程便被 喚醒,進行消息接收的處理。
進程通信類系統調用
在OS中經常采用兩種進程通信方式,即消息傳遞方式和共享存儲區方式。當系統中 采用消息傳遞方式時,在通信前,必須先打開一個連接。為此,應由源進程發出一條打開連 接的系統調用open connection,而H標進程則應利用接受選接的系統調用accept connection 表示同意進行通信;然後,在源進程和目標進程之間便可開始通信,利用發送消息的系統調 用send message或者用接收消息的系統調用receive message來交換信息。通信結束後,還須 再利用關閉連接的系統調用close connection結束通信。
用戶在利用共享存儲區進行通信之前,必須先利用建立共享存儲區的系統調用建立一 個共享存儲區,再利用建立連接的系統凋用將該共享存儲區連接到進程自身的虛地址空間 上,然後便可利用讀和寫共享存儲區的系統調用實現相互之間的通信。
文件操作類系統調用
對文件進行操作的系統調用數量較多,下面簡單介紹一些對文件基本操作的系統調用。
(1 )創建和刪除文件。當用戶需要在系統中存放程序或數據時,可利用創建文件的系 統凋用creat,由系統根據用戶提供的文件名和存取方式來創建一個新文件;當用戶不再需 要某文件時,可利用刪除文件的系統調用將文件刪除。
(2)打開和關閉文件。用戶在第一次訪問某個文件之前,應先利用打開文件的系統調 用open,將指定文件打開,即系統將在用戶(程序)與該文件之間建立一條快捷通路。在文 件被打開後,系統將給用戶返回一個該文件的句柄或描述符;當用戶不再訪問某文件時,又 可利用關閉文件的系統調用close將此文件關閉,即斷開該用戶程序與該文件之間的快捷 通路。
(3 )讀/寫文件。用戶可利用讀系統調用read,從已打開的文件中讀出給定數目的字 符,並送至指定的緩沖區中;同樣,用戶也可利用寫系統凋用write,從指定的緩沖區中將給定數目的字符寫入指定文件中。read和write兩個系統調用是文件操作類中使用最頻繁的 系統調用。
對文件進行操作的系統調用還有:建立目錄、移動文件的讀/寫指針及改變文件屬性等。