Successfully reported this slideshow.
Your SlideShare is downloading. ×

Os讀書會20170415

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 23 Ad
Advertisement

More Related Content

Similar to Os讀書會20170415 (20)

Recently uploaded (20)

Advertisement

Os讀書會20170415

  1. 1. OS第二次讀書會 2017/04/15 TA 鄭人瑋
  2. 2. Process的溝通方式 • Independent Process→獨立不受其他Process影響 • Cooperating Process→Inter-Process Communication(IPC) a) Shared Memory b) Message Passing (blocking send/receive, rendezvous) 2
  3. 3. Client-Server之間Process的傳遞(1/3) • Socket:ip address+port=a socket • 使用Socket是較底層有效率的,只允許傳遞字串 • 3 ways in socket: 1. Connection-Oriented(TCP) 2. Connectionless(UDP) 3. Multicast Socket(like broacast) 192.168.10.1:8080 192.168.10.1:80 3
  4. 4. Client-Server之間Process的傳遞(2/3) • Remote Procedure Call(RPC) • 運用在應用層的服務,將使記remote call內容包裝起來,執行起 來就像是在同一平台上直行程是一樣。 • 分散是網路服務、遠端管理、NFS檔案分享 • 詳細原理:https://www.zhihu.com/question/25536695 4
  5. 5. Client-Server之間Process的傳遞(2/3) Client Server Client Program Server Program Client Stub (Proxy) Server Stub (Proxy) Client Call Port Map TCP/IP Layer 1.exactly once(match maker方式) 2.at most once(timestamp方式) Application Layer Application Layer upload port info. XDR轉換(external data representation) →避免big/small endian 1 2 connect to server program search the port of server program 3 5
  6. 6. Pipe • 仿照硬體 pipeline 的行為,在process間開一條或數條線來放資 料 • 可以在Linux 指令或是CGI(common gateway interface)看到 • Ordinary Pipe and Named Pipe 6 read-end write-end
  7. 7. Ordinary Pipe 7 Process A f_mode f_pos … f_inode … f_op Process B f_mode f_pos … f_inode … f_op Pipe(類似中間的Buffer) fd[0](write end) fd[1](read end) fd[0](write end) fd[1](read end)
  8. 8. Ch4 執行緒(Thread) 8
  9. 9. Program? Process? Thread? 9
  10. 10. Program? Process? Thread? • Program→靜態的指令集(file) • Process→正在執行的指令集,有被載入主記憶體的 Program(executable file) • Thread→Process的小分身,共用Process的記憶體且自己也擁 有一個獨立的空間(Stack)可以做自己的事(e.g.多工的應用程式、 拼音檢查) 10
  11. 11. 如何Multi-programming? • Concurrent(並發)→利用排程(Scheduling)使多個process快速處 理,感覺很像同時處理很多事情。 • Single-core中實現,Single-threaded process 11 code data stack files register Thread~ 從排程pop out出來的Task 就由單一個Thread來處理
  12. 12. 如何Multi-programming? • Parallelism(並行)→真的可以同時進行多個process • 在multi-core中實現,multi-threaded process 12 code data stack1 files register1 Thread1~ stack2 register2 Thread2~ 從不同core pop out出來的task由一個 multi-threaded process接收處理
  13. 13. 如何Multi-programming? • 假設有150份15題的考卷,由3個TA來批改 • Data Parallelism→每個助教分別改50份考卷(1~15題) • Task Parallelism→每個助教改150份考卷分別的前、中、後5題 • Task Parallelism發揮所長,理論上效率較好,但會有溝通的問題, 所以實做上兩者速度會差不多 • 參考SIMD、MIMD架構:https://read01.com/6PJKon.html 13
  14. 14. Thread的分類 • User Thread • 在User端使用thread library產生thread • e.g. Pthreads, Win32 Thread, Java Thread。 • Kernel Thread • OS自己產生的thread • 用來處理OS各種服務(e.g. system call), daemon的使用以及處理User Thread • e.g. Grand Central Dispatch(GCP), Open MP, Thread Pool 14
  15. 15. Multithreading Model • Many-to-one→多個user thread連到單個kernel thread 15
  16. 16. Multithreading Model • One-to-one→單個user-thread連到單個kernel-thread • 最早實現multithreading的方式,但需要限制user-thread數量 以免kernel-thread負擔太重 16
  17. 17. Multithreading Model • Many-to-many→允許多個user-thread連到有限多個kernel- thread。 17
  18. 18. thread的分配方式 • Thread Pool→產生一個thread queue,有需要用時從中取出一 個thread出來用,而不用因thread不夠用而中斷目前正在執行的 thread。 18
  19. 19. thread的分配方式 • Grand Central Dispatch (GCP)→Apple用來開發支援multi- core的應用程式使用。將一個個task包在由Block所組成的 Dispatch queue裡面,再一個個丟到Thread pool去處理。 19
  20. 20. thread的分配方式 • OpenMP→實現跨平台的multithreading,主thread會先產生一 系列的子thread(fork())進行parallelism(multi-core),結束後子 thread們將併回去主thread(join())。 20
  21. 21. Signal • Signal handling→signal是通知特殊事件發生用的,通常由 Signal handler發出,而process接收到signal時則會用thread來 處理。 21
  22. 22. Thread的三種模式及刪除 • 欲刪除的thread稱為target thread • state = Disabled • target thread是不可被刪除的 • state = Defferred • 預設值,週期性檢查target thread是否被刪掉 • state = Asynchrous • 不管後果如何,直接刪掉target thread 22
  23. 23. Q & A 23

×