生成系統調用

生成系統調用

生成系統調用是指應用程式或作業系統核心需要作業系統提供更高許可權運行的服務時,必須使用系統調用命令。由作業系統捕獲到該命令後,便將 CPU 的狀態從用戶態轉換到系統態,然後執行作業系統中相應的子程式(例程),完成所需的功能。

基本介紹

  • 中文名:生成系統調用
  • 外文名:Generate System Calls
  • 學科:計算機
  • 原因:需要作業系統提供更高許可權的服務
  • 有關術語:系統調用
  • 領域:作業系統
簡介,進程控制類系統調用,創建和終止進程的系統調用,獲得和設定進程屬性的系統調用,等待某事件出現的系統調用,檔案操縱類系統調用,創建和刪除檔案,打開和關閉檔案,讀和寫檔案,進程通信類系統調用,信息維護,

簡介

系統調用是指運行在使用者空間的程式作業系統核心請求需要更高許可權運行的服務。系統調用提供用戶程式與作業系統之間的接口。生成系統調用是指應用程式或作業系統核心需要作業系統提供更高許可權運行的服務時,必須使用系統調用命令。系統調用的類型不同,生成系統調用的類型一般也不相同,對於一般通用的 OS 而言,可將其所提供的系統調用分為:進程控制、檔案操縱、通信管理和信息維護等幾大類。

進程控制類系統調用

這類系統調用主要用於對進程的控制,如創建一個新的進程和終止一個進程的運行,獲得和設定進程屬性等。

創建和終止進程的系統調用

多道程式環境下,為使多道程式能並發執行,必須先利用創建進程的系統調用來為欲參加並發執行的各程式分別創建一個進程。當進程已經執行結束時、 或因發生異常情況而不能繼續執行時,可利用終止進程的系統調用來結束該進程的運行。

獲得和設定進程屬性的系統調用

當我們創建了一個(些)新進程後,為了能控制它(們)的運行,應當能了解、 確定和重新設定它(們)的屬性。這些屬性包括: 進程標識符、進程優先權、最大允許執行時間等。此時,我們可利用獲得進程屬性的系統調用,來了解某進程的屬性,利用設定進程屬性的系統調用,來確定和重新設定進程的屬性。

等待某事件出現的系統調用

進程在運行過程中,有時需要等待某事件(條件)出現後方可繼續執行。例如,一進程在創建了一個(些)新進程後,需要等待它(們)運行結束後,才能繼續執行,此時可利用等待子進程結束的系統調用進行等待;又如,在客戶/伺服器模式中,若無任何客戶向伺服器發出訊息,則伺服器接收進程便無事可做,此時該進程就可利用等待(事件)的系統調用,使自己處於等待狀態,一旦有客戶發來訊息時,接收進程便被喚醒,進行訊息接收的處理。

檔案操縱類系統調用

對檔案進行操縱的系統調用數量較多,有創建檔案、刪除檔案、打開檔案、關閉檔案、讀檔案、寫檔案、建立目錄、移動檔案的讀/寫指針、改變檔案的屬性等。

創建和刪除檔案

當用戶需要在系統中存放程式或數據時,可利用創建檔案的系統調用 creat,由系統根據用戶提供的檔案名稱和存取方式來創建一個新檔案;當用戶已不再需要某檔案時,可利用刪除檔案的系統調用 unlink 將指名檔案刪除。

打開和關閉檔案

用戶在第一次訪問某個檔案之前,應先利用打開檔案的系統調用 open,將指名檔案打開,即系統將在用戶(程式)與該檔案之間建立一條快捷通路。在檔案被打開後,系統將給用戶返回一個該檔案的句柄或描述符;當用戶不再訪問某檔案時,又可利用關閉檔案的系統調用 close,將此檔案關閉,即斷開該用戶程式與該檔案之間的快捷通路。

讀和寫檔案

用戶可利用讀系統調用 read,從已打開的檔案中讀出給定數目的字元,並送至指定的緩衝區中;同樣,用戶也可利用寫系統調用 write,從指定的緩衝區中將給定數目的字元寫入指定檔案中。read 和 write 兩個系統調用是檔案操縱類系統調用中使用最頻繁的。

進程通信類系統調用

在 OS 中經常採用兩種進程通信方式,即訊息傳遞方式和共享存儲區方式。 當系統中採用訊息傳遞方式時,在通信前,必須先打開一個連線。為此,應由源進程發出一條打開連線的系統調用 open connection,而目標進程則應利用接受連線的系統調用 accept connection表示同意進行通信;然後,在源和目標進程之間便可開始通信。可以利用傳送訊息的系統調用 send message 或者用接收訊息的系統調用 receive message 來交換信息。通信結束後,還須再利用關閉連線的系統調用 close connection 結束通信。
用戶在利用共享存儲區進行通信之前,須先利用建立共享存儲區的系統調用來建立一個共享存儲區,再利用建立連線的系統調用將該共享存儲區連線到進程自身的虛地址空間上,然後便可利用讀和寫共享存儲區的系統調用實現相互通信。

信息維護

在 UNIX 系統中,設定了許多條用於系統維護的系統調用。
(1) 設定和獲得時間。超級用戶可利用設定時間的系統調用(stime),來設定系統的日期和時間。如果調用進程並非超級用戶,則 stime 失敗。一般用戶可利用獲得時間的系統調用ime 來獲得當前的日期和時間。
(2) 獲得進程和子進程時間(times)。利用該系統調用可獲得進程及其子進程所使用的CPU 時間,其中包括調用進程在用戶空間執行指令所花費的時間,系統為調用進程所花費的 CPU 時間、 子進程在用戶空間所用的 CPU 時間、 系統為各子進程所花費的 CPU 時間等,並可將這些時間填寫到一個指定的緩衝區。
(3) 設定檔案訪問和修改時間(utime)。該系統調用用於設定指名檔案被訪問和修改的時間。如果該系統調用的參數 times 為 NULL 時,檔案主和對該檔案具有寫許可權的用戶,可將對該檔案的訪問和修改時間設定為當前時間;如果 times 不為 NULL,則把 times 解釋為指向 utim buf 結構的指針,此時,檔案主和超級用戶能將訪問時間和修改時間置入 utim buf結構中。
(4) 獲得當前 UNIX 系統的名稱(uname)。利用該系統調用可將有關 UNIX 系統的信息存儲在 utsname 結構中。 這些信息包括 UNIX 系統名稱的字元串、 系統在網路中的名稱、 硬體的標準名稱等。

相關詞條

熱門詞條

聯絡我們