系統程式設計三大基石:系統呼叫,c庫,c編譯器
1.系統呼叫:從作業系統中獲得符合或者資源,又使用者空間向核心發起的函式呼叫,如 read , write 等系統呼叫函式
2.c庫:linux 應用程式的核心,glibc ,系統呼叫封裝,執行緒支援, 基本應用工具
3.c編譯器: gcc 。編譯器輔助實現了c標準和系統的abi。
api 和 abi
api:應用程式介面,軟體模組之間再源**層互動的介面。提供標準介面的方式進行封裝,
abi:應用程式二進位制介面,特定的架構上兩個或者多個軟體模組之間的二進位制介面。abi保證二進位制**相容。
標準:posix 和 sus
檔案和檔案系統:
檔案:檔案必須被開啟才能訪問,每個程序開啟的每個檔案都有唯一的檔案描述符--乙個整數表示,簡寫為fd,在使用者空間中共享。
普通檔案:線性位元組陣列方式組織的資料,位元組流。
檔案長度:檔案大小的位元組計數,組成檔案的線性陣列裡位元組的數目。
inode節點:檔案系統在磁碟上實際物理物件,也是核心中的資料結構的概念實體
對映由核心**對某乙個特定檔案系統實現和管理。
特殊檔案:塊裝置,字元裝置,命名管道(fifo),unix域套接字。
檔案系統:合法層次結構組織的檔案和目錄的集合。
掛載:檔案系統從全域性的檔案和目錄的名字空間獨立的新增
解除安裝:檔案系統從全域性的檔案和目錄的名字空間獨立的移除
掛載點:檔案系統中要掛載在名字空間中特定的位置。
linux支援記憶體的虛擬檔案系統,nfs,**檔案系統,原生檔案系統(ext3),xfs,fat
程序:執行中的目標**:生存的程式,以及資料、資源、狀態等變數,由核心仲裁和管理的系統資源管理,計時器,掛起訊號量,開啟檔案,網路連線,硬體,ipc。儲存在程序描述符中
支援搶占式多工和虛擬記憶體。
執行緒:程序中的活動單位,負責執行**和維護程序的執行狀態。linux程式被單執行緒化。
包括棧,處理器狀態,目標**當前位置。
linux獨特的執行緒檢視:偶然共享某些資源的程序。
程序體系:每個程序都有唯一的正整數表示,即id,第乙個程序是1.
程序終止之後,不會立即從系統中移除,核心將在記憶體中儲存程序的部分內容,允許父程序檢視該程序的狀態-------程序等待。
使用者和組:使用者和組認證。每個使用者和唯一的正整數關聯--使用者id。
每個程序域乙個使用者id關聯,用來識別這個程序的使用者,稱為程序的真是uid。
檔案許可權:檔案的所有者,所屬組,許可權位集。分別對應uid,gid,other 對檔案的讀,寫,執行的許可權。
檔案所有者和許可權資訊儲存在檔案的inode中
訊號:單向非同步通知機制。一般用於通知程序發生某些事件。
程序間通訊:ipc,管道,命名管道,訊號量,訊息佇列,共享記憶體,快速使用者空間互斥體(futuxes)
標頭檔案:大量的標頭檔案。
錯誤處理:錯誤通常通過函式的返回值表示,並通過特殊的變數errno來描述。
錯誤值告訴呼叫函式發生了錯誤,但不提供錯誤的原因,errno變數用於定位錯誤的原因。
#include
extern int errno;
將 errno 的值轉換到對應的文字,這些函式僅在錯誤報告的時候有必要。 perror();
#include
void perror(const char *str); 向stderr 列印出以str 指向的字串為字首,
char *strerror(int errnum);
int strerror_r(int errnum, char *buf, size_t len); 執行緒安全的。
使用errno 程式設計時,忽視了 庫函式和系統呼叫都可以修改errno 的值。
linux系統程式設計概述 系統呼叫
一 系統程式設計概述 1 什麼是linux系統程式設計 在有作業系統的環境下程式設計,並使用作業系統提供的系統呼叫及各種庫,對系統資源進行訪問。學會了c語言再知道一些使用系統呼叫的方法,就可以進行linux系統程式設計了。二 系統呼叫 1 系統呼叫 system call 是 作業系統為在使用者態執...
系統程式設計概述(程序)
程序概念 所有的裝置都是圍繞儲存器工作的 標準輸入裝置輸入指令,載入到記憶體中,然後記憶體交給cpu處理指令,將處理好的指令再交給記憶體,內存在交給標準輸出裝置。時載入到cpu的暫存器上處理 什麼是程序 說的通俗一點就是進行中的程式 作業系統通過pcb來控制程序的執行,這個pcb 一種程序描述符 也...
Linux 系統程式設計
1 i o操作 2 檔案和目錄管理 3 記憶體管理 1 建立匿名記憶體對映 2 對映 dev zero檔案 類unix 作業系統中,dev zero是乙個特殊的檔案,當你讀它的時候,它會提供無限的空字元 null,ascii nul,0x00 其中的乙個典型用法是用它提供的字元流來覆蓋資訊,另乙個常...