零‘OS基礎
- 分時
- 實時
算法的特性:
- 1 又窮性,算法是執(zhí)行時候運行的有窮性,程序只是一段實現算法的代碼
- 2 確定性,算法對于特定的輸入有特定的輸出,程序提供了確定算法結果的平臺
- 3 可行性,算法需要考慮設計的可能,程序則具體是實現算法上的設計
- 4 輸入,算法有輸入,算法的輸入依靠程序的平臺提供
- 5 輸出,算法的輸出也靠代碼的支持
單內核:效率比較高,但是,一損全損。
微內核:其他設備出錯,不影響內存等的使用功能
UNIX家族OS的共同特點
- 很簡潔,僅幾百個系統(tǒng)調用
- 所有的東西都當作文件對待
- C語言編寫內核和系統(tǒng)工具軟件,強大的移植能力
- 高效的創(chuàng)建進程,獨特的fork
- 提供一套簡單與穩(wěn)定的進程間通信元語(IPC)
- 以文本形式存儲配置數據
內核編程的特點
無libc,無任何第三方庫,不能包含第三方頭文件
GNU C而非ANSIC
沒有內存保護機制
不要輕易在內核中使用浮點數
容積小而固定的棧--內核棧的大小為兩頁
同步和并發(fā)--
1.Linux是多任務操作系統(tǒng) 2.內核支持對稱多處理器系統(tǒng) 3.中斷是異步來的 4.Linux內核可以搶占可移植的重要性--
字節(jié)序、字節(jié)對齊、不假定字長
死循環(huán)和無限遞歸的區(qū)別?--無限遞歸在調用函數的時候,會無限分配空間,導致棧區(qū)被占滿,爆炸。
進程睡眠
- 被動
- 主動
- 深度睡眠
- 淺度睡眠
內核線程
內核空間
對于提供的保護機制的現代操作系統(tǒng)來說,內核獨立普通應用程序,他處于系統(tǒng)態(tài)
被系統(tǒng)態(tài)保護起來的內存空間,成為內核空間
用戶空間
處理器在任何制定時間上的活動概括如下:
- 運行于用戶空間,執(zhí)行用戶進程(可睡眠)
- 運行于內核空間,處于進程的上下文,代表某個特定的內核線程執(zhí)行(可睡眠)
- 執(zhí)行于內核空間,處于一場上下文,與任何用戶進程無關,一般用來處理個特定的異常(如中斷,軟中斷)
Linux編碼風格--內核
1.接近K&R C風格
2.縮進
1)制表符(8個字符長度),反對多層縮進
2)每行最多80個字符
3.switch語句
1)case和switch同列
2)Through Case 時加注釋于下一行
4.花括號
1)函數體采用同列
2)其他采用:左括號緊跟在語句的最后,與語句同行,有括號要新起一行作為該行第一個字符,且于對應的語句同列
3)有花括號可以不單獨占一行,與后續(xù)關鍵字同行
4)不需要一定使用括號的語句可以忽略它(敗筆)
5.命名規(guī)范
6.函數
1)函數代碼長度不應該超過兩屏
2)局部變量不超過10個
3)允許使用inline
7.注釋
1)應該描述代碼要做什么和為什么這樣做,而不是通過什么來實現的
2)注釋不應該包含誰寫了那個函數,修改日期和其他瑣碎而無意義的內容
3)注釋中,重要信息常?!皒xx:”開頭,而bug通常是已“FIXME:”開頭
8.Typedef
typedef NT T; typedef int INT; x += y; x = x + y; typedef strcut STU { // }STU;
1)內核開發(fā)者強烈反對使用Typedef,認為:
2)
3)
4)
9.在源碼中減少使用ifdef
1)...
2)do{}while(0)和正常語句的區(qū)別
10.結構初始化
- C語言中
struct STU st={“xx”,“ww”,“ee”,“ff”}; - 內核中
struct foo my_foo = {.a = INTIAL_A,.b = INTIAL_B};
11.客文化
- 黑客--尋找漏洞,采取安全措施,防止核客攻擊計算機。褒義Hacker
- 核客--尋找系統(tǒng)漏洞,以便破壞(貶義)
- 駭客--專業(yè)從事商業(yè)軟件,惡意入侵別人的網站等(Cracker)
- 極客--隨著互聯網文化的興起,這個詞包含智力超群和努力的語意
- 紅客--一種精神,熱愛祖國,堅持正義,開拓進取的精神,抵御反擊破壞者
- 百客--網絡守護神
- 灰客--不黑不白
- 博客--愛寫blog的人
- 播客--愛show愛語音的人
- 閃客--瘋狂熱愛制作flash的人
- 賺客--憑借自己的網絡知識技術獲利的人