-
1. linux0.11開機時間
#define HOUR (60*MINUTE)
#define DAY (24*HOUR)
#define YEAR (365*DAY)
static int month[12] = {
0,
DAY*(31),
DAY*(31+29),
DAY*(31+29+31),
DAY*(31+29+31+30),
DAY*(31+29+31+30+31),
DAY*(31+29+31+30+31+30),
DAY*(31+29+31+30+31+30+31),
DAY*(31+29+31+30+31+30+31+31),
DAY*(31+29+31+30+31+30+31+31+30),
DAY*(31+29+31+30+31+30+31+31+30+31),
DAY*(31+29+31+30+31+30+31+31+30+31+30)
};
-
2.結構體賦值
-
3. 關於do_signal *(&eip) = sa_handler
網上有說 是因爲 兩個的類型不一樣 一個long 一個 unsigned long ,感覺這不是原因。
應該是另一種說法 eip = sa_handler 這條語句可能導致 編譯器進行優化 而棧中的值沒有改變 , 應該是這樣。
-
4.任務切換
-
5.寫時複製
-
6.需求加載(load on demand)/需求分頁(demand-paging)
-
7.指針的指針
-
8. I/O端口和尋址
-
9. 接口訪問控制
-
10. C程序編譯和鏈接
-
11. volatile
-
12. 嵌入彙編
這裏不同處理器用到的寄存器名字應該不一樣吧。。。目前看到的資料都是對應x86的eax,ebx啥的。。。然而我要做的事sparc
-
13. 圓括號中的組合語句
-
14. 目標文件符號表和字符串部分
-
15. 連接程序預定義變量
-
16. 高尾端/低尾端
不過給我啓發的是,在裘宗燕翻譯的《程序設計實踐》裏,這對術語並沒有翻譯爲“大端”和小端,而是“高尾端”和“低尾端”,這就好理解了:如果把一個數看成一個字符串,比如11223344看成"11223344",末尾是個'\0','11'到'44'個佔用一個存儲單元,那麼它的尾端(低字節)很顯然是44,前面的高還是低就表示尾端放在高地址還是低地址,它在內存中的放法非常直觀,如下圖:
X86小端,SPARC大端
-
內存地址空間
-
17. 分段機制
-
18. 一致/非一致代碼段
一致代碼段:
簡單理解,就是操作系統拿出來被共享的代碼段,可以被低特權級的用戶直接調用訪問的代碼.
通常這些共享代碼,是"不訪問"受保護的資源和某些類型異常處理。比如一些數學計算函數庫,爲純粹的數學運算計算,被作爲一致代碼段.
一致代碼段的限制作用
1.特權級高的程序不允許訪問特權級低的數據:核心態不允許調用用戶態的數據.
2.特權級低的程序可以訪問到特權級高的數據.但是特權級不會改變:用戶態還是用戶態.
非一致代碼段:
爲了避免低特權級的訪問而被操作系統保護起來的系統代碼.
非一致代碼段的限制作用
1.只允許同級間訪問.
2.絕對禁止不同級訪問:核心態不用用戶態.用戶態也不使用核心態.
通常低特權代碼必須通過"門"來實現對高特權代碼的訪問和調用.
不同級別代碼段之間轉移規則,是通過CPL/RPL/DPL來校驗.
-
19. sleep_on等待隊列
-
20.定時器鏈表
-
21.信號
-
22 . 塊設備
-
23. extern inline
-----------------------------------------------------------------------------------------------------2015-07-16---------------------------------------------------------------------------------------------------------------
24.硬盤讀寫
溫徹斯特硬盤
1973年,IBM研製成功了一種新型的硬盤IBM3340。這種硬盤擁有幾個同軸的金屬盤片,盤片上塗着磁性材料。它們和可以移動的磁頭共同密封在一個盒子裏面,磁頭能從旋轉的盤片上讀出磁信號的變化--這就是我們今天使用的硬盤的祖先,IBM把它叫做溫徹斯特硬盤。
個人電腦上的硬盤今年30歲了。當然,沒有一塊硬盤能如此長壽。早在1956年,國際商用機器公司(IBM)發明了世界上第一個磁盤存儲系統 IBM 305 RAMAC,這個只有5MB的存儲設備卻擁有50個24英寸的盤片。在那個時代,RAMAC是令人吃驚的計算機設備——就其笨拙程度而言,在今天毫無疑問也是令人吃驚的。
1973年,IBM研製成功了一種新型的硬盤IBM3340。這種硬盤擁有幾個同軸的金屬盤片,盤片上塗着磁性材料。它們和可以移動的磁頭共同密封在一個盒子裏面,磁頭能從旋轉的盤片上讀出磁信號的變化--這就是我們今天是用的硬盤的祖先——IBM把它叫做溫徹斯特(Winchester)硬盤,也稱溫盤。
“溫徹斯特”這個名字還有個小小的來歷;IBM3340擁有兩個30MB的存儲單元,而當時一種很有名的“溫徹斯特來複槍”的口徑和裝藥也恰好包含了兩個數字“30”;於是這種硬盤的內部代號就被定爲“溫徹斯特”。
溫徹斯特硬盤採用了一個了不起的技術:它的磁頭並不與盤片接觸;可以想象,如果要提高存取數據的速度,硬盤的盤片就應該越轉越快。但是如果磁頭與盤片接觸,那麼無論採用什麼材料都不可能勝任這種工作。技術人員想到讓磁頭在盤片上方“飛行”,與盤片保持一個非常近的距離。這個想法是可行的,因爲盤片高速旋轉會產生流動的風,只要磁頭的形狀合適,它就能像飛機一樣飛行。這樣,盤片就能旋轉的很快而不必擔心摩擦造成的災難。磁頭被固定在一個能沿盤片徑向運動的臂上。由於磁頭相對盤片高速運動,並且二者距離很近,哪怕是一丁點灰塵也會造成磁盤的損壞。所以,盤片、磁頭和驅動機構被密封在了一個盒子裏。