系統呼叫決定了作業系統是否好用,功能是否齊全。
建立程序:fork
原程序叫父程序,新程序叫子程序。
當父程序fork建立子程序時,採用寫時拷貝的方案。先是父子共用同一記憶體,如果有一方要寫資料,就會將該記憶體塊進行拷貝。然後再寫。
fork可以根據返回值進行對父子程序的區分。
子程序可以使用exec函式族去執行另乙個程式。
父程序可以通過waitpid系統呼叫,通過傳入子程序程序號,來讓父程序知道子程序的執行狀態。
每個程序都有自己獨立的記憶體空間。
該記憶體空間會放入程式的**(**段),程式的資料(資料段)。
(這裡牽扯到物理分段分頁問題)
在堆分配記憶體的時候使用的系統呼叫,brk和mmap。
在linux下一切皆檔案。
每乙個檔案,linux都會分配乙個檔案描述符(乙個整數),我們一般通過這個檔案描述符來使用系統呼叫。
程式執行過程中遇到異常等情況就會發生中斷,傳送訊號給程序,程序收到訊號後進一步處理。
一般不重要的會忽略,重要的一般都會預設終止。
一般傳送的資料不長,可以使用訊息佇列。訊息佇列是在核心中。
傳送的資料較大,可以使用共享記憶體。也就是兩個程序同時使用一塊記憶體。當然為了解決兩個程序同時讀寫一塊記憶體造成的不確定性問題,引入了訊號量。它可以讓這部分程式同一時間只有乙個程序可以訪問。
不同機器之間的通訊使用的就是網路通訊,遵從網路協議(tcp/ip網路協議棧)。網路服務是通過socket套接字來提供。
在linux下有乙個開源的標準c庫就是glibc。它不僅提供了豐富的api,還封裝了系統呼叫。
了解linux下的系統呼叫
計算機系統的各種硬體資源是有限的,在現代多工作業系統上同時執行的多個程序都需要訪問這些資源,為了更好的管理這些資源程序是不允許直接操作的,所有對這些資源的訪問都必須有作業系統控制。也就是說作業系統是使用這些資源的唯一入口,而這個入口就是作業系統提供的系統呼叫。系統呼叫是屬於作業系統核心的一部分的,必...
Linux下簡單的系統呼叫
原創 2017年03月17日 21 31 20 本週是linux系統分析課程的第四周課程,本週主要講linux系統呼叫的過程,具體知識點和實驗結果總結如下。系統呼叫 系統呼叫只是乙個特殊的中斷。我們通過庫函式和系統呼叫打交道,庫函式把系統呼叫封裝起來。1 儲備知識 核心態和使用者態 核心態 在高執行...
實驗四 了解系統呼叫
水平有限,學的不深,不對之處,多多指教 本次實驗在實驗樓linux虛擬機器 環境進行。本次實驗中,我們以20號系統呼叫getpid為例來熟悉系統呼叫過程。該函式的功能為 返回當前程序標識。4通過編譯執行可以看到實驗結果,這裡得到的當前程序pid為7584。下面我們用c語言中嵌入彙編 的方式來對get...