chapter 1~2

chapter 1:
Unix基礎知識,主要講述了後面幾章的內容的概要,幾乎涵蓋了全書所有的內容,當然更爲細


節的東西需要各章詳述。
有幾點是我以前沒有注意的:
1.系統調用和庫函數的差異,從我們程序員的角度來看是沒有什麼差異,我們都是一樣調用,不關心實現細節。但是兩者執行的空間是不一樣的,顯然,系統調用是在內核空間執行的,而庫函數是在用戶空間執行的。這用牽涉到內核空間和用戶空間的差異,可以上網查查。
2.shell是每個系統系統不同的,就如同我們不關注現在各種各樣的unix系統的差異一樣,我們也不關注bash,c shell等shell的差異。登陸,密碼,用戶之類相信用linux系統的同志們都知道些,更爲細節的東西可以找到相應的資料,沒必要現在記憶那麼多。提一點的是,如果你現在處於root用戶,你不能找回root這個賬戶的密碼,不知道有沒有什麼方法。
3.man是unix系統的用戶手冊,基本上都有,man XXX就行了,中間可以加入數字,比如man 3 ls,一般最初查詢是不用數字的,查得內容會有提及,可以進一步查看。可惜,man也不會標出函數是不是系統調用。
4.I/O,要嚴格區分是否緩衝,這不管對實現還是應用都是有很大區別,一般的,系統調用open,read之類的是不帶緩衝的,標準IO是帶緩衝的,最常用的printf,都不會陌生。I/O口都是文件,關鍵在具體是什麼,鍵盤,屏幕等具體的內容,但在實現上都是文件,這也是迴應unix中一切設備都是文件。
5.出錯處理,出錯會返回一個錯誤號,可以man errno,可以查看定義好的錯誤。並對不同的錯誤進行不同的處理。很多錯誤都是返回這種錯誤號的。
6.signal問題比較嚴重,之前沒怎麼接觸,主要是外部程序給正在運行的程序發信號,應該用什麼樣的機制來處理的問題。
7.time,時間之前同樣沒有怎麼關注,主要是我們處理小問題的時候,在當前高速cpu的平臺上基本不會考慮時間的問題。時間分爲兩大類:日曆時間,就是utc,從97-1-1零點開始這樣一個時間,用毫秒值表示,用來表示時間概念。另一類時間是cpu時間,又被分爲時鐘時間,用戶cpu時間,系統cpu時間。用來評估程序執行時間。
第一章向來是簡介性質的,後文會依次展開,不急不急。

chapter 2:
本章講述unix系統標準化和實現,我們基本不關注實現,因爲我不會去記unix現在有什麼版本,因爲我只用linux。其他的就不怎麼關注了,而linux發行版基本也只用ubuntu,基本跟着公司走啦。
只看三類標準:ISO C,POSIX,SUS。
ISO C就是C標準,基本gcc全部全部滿足。
POSIX標準原先定義的系統調用接口,現在也不怎麼區分了。
SUS:single unix specification,posix.1的超集。包括了xsi擴展
至於哪個系統實現哪些標準,是在太過繁雜,沒什麼必要記得那麼清楚。
限制問題就是一個確定,就是一個值或者其他什麼是在編譯時確定,運行時確定,編譯時頭文件去確定就行了,運行時確定系統提供了兩個幾個函數,sysconf,pathconf,fpathconf等函數。其實基本數據類型,同樣地,只是現在我們基本不關心一個int究竟是幾位?什麼時候會越界等問題。但是unix會提供一些typedef,像什麼size_t之類的。但這些問題基本上對底層的一個封裝,爲了更大程度的可移植性。
基本就這樣的,我向來不關心那麼規範標準,因爲積累不夠啊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章