1. linux系統程式設計的3大基石:系統呼叫、c庫、c編譯器
呼叫系統呼叫:位於使用者空間的應用程式無法直接訪問核心空間。從安全性和可靠性角度考慮,也需要禁止使用者空間的程式直接執行核心**或操縱核心資料。但從另外乙個角度看,核心也必須提供這樣一種機制,當使用者空間的使用者希望執行系統呼叫時,可以通過該機制通知核心。有了這種機制,應用程式就可以「深入核心」,執行核心允許的**。
2. linux 程式設計的概念
2.1 檔案
檔案是linux系統中最基礎最重要的抽象。檔案必須先開啟才能訪問。檔案開啟後是通過檔案描述符來引用,該描述符是從開啟檔案關聯的元資料到檔案本身的對映。與檔案關聯的是索引節點inode,索引節點中會儲存和檔案相關的元資料,如檔案修改時間戳、所有者、型別、長度以及檔案資料的位置——但不包含檔名。
檔案通常通過檔名從使用者空間開啟,目錄是可讀名稱到索引編號之間的對映。名稱和索引節點之間的配對稱為鏈結(link)。
硬鏈結:當不同名稱的多個鏈結對映到同乙個索引節點時,我們稱該鏈結為硬鏈結(hard links)。要從目錄中刪除檔案,需要從目錄結構中取消鏈結(unlink)該檔案,為了確保在刪除所用的鏈結之前不會刪除檔案,每個索引節點包含鏈結計數(link count),記錄該索引節點在檔案系統中的鏈結數。當unlink某個路徑時,其鏈結計數會減1;只有當鏈結計數為0時,索引節點及其關聯的資料才會從檔案系統中真正刪除。
符號鏈結特殊檔案:linux只支援四種特殊檔案:塊裝置檔案、字元裝置檔案、命名管道以及unix域套接字。字元裝置是作為線性位元組佇列來訪問,塊裝置是作為位元組陣列來訪問,命名管道是以檔案描述符作為通訊通道的程序間通訊(ipc)機制,它可以通過特殊檔案來訪問。普通管道是將乙個程式的輸出以「管道」形式作為另乙個程式的輸入,普通管道是通過系統呼叫在記憶體中建立的,並不存在於任何檔案系統中。命名管道和普通管道一樣,但是它是通過fifo特殊檔案來訪問的。套接字(socket)是最後一種特殊檔案,支援不同程序間的通訊,包括unix域套接字,unix域套接字使用檔案系統上的特殊檔案進行互動,該檔案稱為socket檔案。
2.2 程序
程序是執行時的目標**:活動的、正在執行的程式。
資料結構 第1章 基本概念
1.演算法描述 演算法是一組完成特定任務的有窮指令序列。所有的演算法都必須有 輸入,輸出,確定性,有限性和有效性。2.選擇排序 selection sort 原理 首先在排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序列未尾。依此類推,直到所...
第20章 反常積分 基本概念
20.2 關於無窮區間的積分 20.3 比較判別法 20.4 極限比較判別法 20.5 p判別法 20.6 絕對收斂判別法 主要內容 考慮積分 b af x dx ab f x dx 當函式f f 在區間 a,b role presentation style position relative a...
基本概念 1
首先要知道ecmascript 中的一切都區分大小寫。識別符號就是變數 函式 屬性的名字,或者函式的引數。ecmascript使用的是c風格的注釋,包括單行注釋和塊級注釋。ecmascript 5 引用了嚴格模式的概念。要在整個指令碼中啟用嚴格模式,可以在頂部新增如下 use strict 在函式內...