程式設計師的自我修養 Chapter 1

9,612
-1

Published on

0 Comments
21 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,612
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
70
Comments
0
Likes
21
Embeds 0
No embeds

No notes for slide

程式設計師的自我修養 Chapter 1

  1. 1. 程式設計師的自我修養 連結. 載入. 程式庫Shu-Yu Fu (shuyufu@gmail.com)
  2. 2. 第一篇 簡介1. Chapter 1 溫故而知新 a. 從Hello World說起 b. 萬變不離其宗 c. 站得高,望得遠 d. 作業系統的功能 e. 記憶體不夠麼辦 f. 團結力量大 g. 本章小結
  3. 3. 從Hello World說起#include <stdio.h>int main (){ printf ("Hello Worldn"); return 0;}你知道這個Hello World從編譯、靜態鏈結到作業系統如何載入程式、動態鏈結及執行階段程式庫和標準程式庫的實作嗎?
  4. 4. 萬變不離其宗● CPU、記憶體、I/O控制晶片
  5. 5. 匯流排【Bus】
  6. 6. PCI/ISA及南北橋設計的硬體架構
  7. 7. SMP與多核● CPU幾乎已經達到實體限制,4GHz● 對稱式多重處理,Symmetrical Multi- Processing● CPU的數量和處理的速度並不成正比● 將多個處理器合併在一起,以一個處理器的外 包裝出售
  8. 8. 站得高,望得遠
  9. 9. 作業系統的功能● 管理CPU、記憶體、I/O設備● CPU ○ 多重程式,Multiprogramming ○ 分時系統,Time-Sharing System ○ 多工系統,Multi-tasking ■ 行程,Process ■ 先佔式,Preemptive● 硬體驅動程式(Device Driver) ○ 讀檔
  10. 10. 記憶體不夠怎麼辦● 位址空間不隔離● 記憶體使用效率低● 程式執行的位址不確定● 虛擬位址,Virtual Address ○ 分段 ○ 分頁
  11. 11. 分段
  12. 12. 分頁● 虛擬頁,Virtual Page● 實體頁,Physical Page● 磁碟頁,Disk Page● 分頁錯誤(Page Fault)● MMU,Memory Management Unit
  13. 13. 分頁(cont.)
  14. 14. 團結力量大● 緒程,Thread,有時稱為羽量級行程 (Lightweight Process)● 由緒程ID、PC、暫存器集合和堆疊組成
  15. 15. 緒程的存取權限
  16. 16. 緒程排程
  17. 17. 緒程排程(cont.)● 優先順序排程(Priority Schedule) ○ 緒程優先順序(Thread Priority)● 輪轉法(Round Robin)● 餓死(Starvation) ○ 使用者指定優先順序 ○ 根據進入等待狀態的頻繁程度提升或降低優先順序 ■ IO密集型緒程(IO Bound Thread) ■ CPU密集型緒程(CPU Bound Thread) ○ 長時間得不到執行而被提升優先順序● 先佔(Preemption)
  18. 18. Linux的多緒程● 無論緒程或行程都稱為任務(Task)● 不同的Task之間可以共用記憶體空間。怎麼知 道Task實際使用多少?● 寫時複製(Copy-on-Write)
  19. 19. 緒程安全● void inc_x () { x++; }● 原子(Atomic)操作,glib● Semaphore《Glib Semaphores》 ○ 可以被任意緒程獲取並釋放● Mutex《類似binary semaphore》glib ○ 哪個緒程獲取了互斥器,哪個緒程就要負釋放這個鎖 定● Criticsl Section● Read-Write Lock ○ Sema、Mutex、CS遇到偶爾寫入的情況,效能不彰● Condition Variable
  20. 20. 緒程安全(cont.) ● 可重入(Reentrant) ● 過度最佳化 ○ volatile(C語言中volatile關鍵字)●CPU動態排程換序, ○ 參考(《大话处理器》连载——微架构(19) 乱序执行 总结) ○ barrier防止指令交換
  21. 21. 多緒程內部情況
  22. 22. 本章小結● 有夠雜的

×