UNIX編程 - 基礎

UNIX結構

    說UNIX 先說UNIX是什麼,是個操作系統啊,操作系統是啥?是個大軟件,它控制計算機硬件資源,提供程序運行環境。一般叫它內核( kernel )。內核的接口就叫做系統調用,( system call )。公共函數庫在系統調用之上可以使用系統調用。shell是一種特殊的應用程序,爲運行其他程序提供了一個接口。

    在廣義上操作系統包括了內核和一些其他軟件,這寫軟件使得計算機能發揮作用,並給予計算家一些獨特的特性。這些軟件包括  系統應用程序,應用軟件,shell,以及公用函數庫。 

    所以操作系統既是指內核,又是指用的那種操作系統。


文件和目錄

文件系統

    UNIX文件系統是目錄和文件組成的一種層次結構。目錄的起點稱爲根(root),其名字是一個字符 / 。目錄( directoty )是一個包含許多目錄項的文件,每個目錄項都包含一個文件名和文件屬性的信息(文件類型-文件還是目錄?  文件大小   文件所有者   文件權限   修改時間)。

文件名

    目錄中的各個名字稱爲文件名,不能出現在文件名的字符只有 / 和 NULL ,/ 用來分隔構成路徑名,NULL用來終止一個路徑名。儘量不要用亂七八糟的。創建新目錄的時候會創建兩個文件名 .( 當前目錄 ) 和 .. ( 父目錄 ),在根目錄中, . 和 ..  是一樣的。

路徑名

    一個或多個以斜線的文件名序列 構成路徑名,以斜線開頭的路徑名稱爲絕對路徑名,否則爲相對路徑名。 

    可以通過  ls  察看 文件和文件名

工作目錄

    每一個進程都有一個工作目錄,有時候稱其爲當前工作目錄。進程可以用 chdir 函數更改其工作目錄。

起始目錄

    登陸時,工作目錄設置爲起始目錄


輸入和輸出

文件描述符

    文件描述符通常是一個非負整數,內核用它標示一個一個正在訪問的文件。當內核創建或打開一個新文件時,返回一個文件描述符,都寫操作的時候要用它。

標準輸入,輸出,出錯

    當運行一個新程序時,所有的shell爲其打開三個文件描述符:標準輸入,標準輸出,標準出錯。這三個描述符都鏈向終端,也可以重定義到某個文件。

不用緩衝的I / O

    函數 open  read  write  lseek  close 提供了不用緩衝的I / O 。這寫函數都使用文件描述符。

標準 I / O

    標準I / O函數提供了標準I / O ,


程序和進程

程序

    程序是存放在磁盤上,是一個目錄上的可執行文件。使用 exec 由內核將程序讀入存儲器。

進程和進程ID

    程序的執行實例被稱爲進程,UNIX系統確保每一個進程都有一個唯一的數字標識符,成爲進程ID ( process  ID )。

進程控制

    有三個主要函數 fork  exec  waitpid  。

線程和線程ID

    通常情況下,一個進程只有一個控制線程( thread ),同一時刻只執行一組機器指令。如果不同部分各使用一個控制線程,就能更充分使用系統的並行性。

    一個進程內所有線程都使用同樣的資源,與進程相同,線程也有ID,不過只在它所屬的進程內才能起作用。


出錯處理

    主要是使用perror

    void  perror ( const  char  *msg );


用戶標識

    登陸是用的用戶ID  是( user  ID ),管理員在確定一個用戶登陸名時確定其ID。用戶有一個唯一的用戶ID,用戶ID爲0的用戶爲根( root ) 或 超級 ( superuser )。

    口令文件登陸項也包括( group  ID ),通常在 / etc / group


信號

    信號是通知進程已發生某種情況的一種技術。進程遇到信號一般有三種選擇

1)忽略該信號

2)按系統默認方式處理

3)提供一個函數,信號發生後調用該函數。


時間值

UNIX有兩種不同的時間值

1)日曆時間  從 1970年1月1日 開始經歷的秒數。

2)進程時間也是CPU時間。


系統調用和庫函數

系統調用是直接調用內核,庫函數在其之上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章