SlideShare une entreprise Scribd logo
1  sur  23
OS第二次讀書會
2017/04/15
TA 鄭人瑋
Process的溝通方式
• Independent Process→獨立不受其他Process影響
• Cooperating Process→Inter-Process Communication(IPC)
a) Shared Memory
b) Message Passing
(blocking send/receive,
rendezvous)
2
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
Client-Server之間Process的傳遞(2/3)
• Remote Procedure Call(RPC)
• 運用在應用層的服務,將使記remote call內容包裝起來,執行起
來就像是在同一平台上直行程是一樣。
• 分散是網路服務、遠端管理、NFS檔案分享
• 詳細原理:https://www.zhihu.com/question/25536695
4
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
Pipe
• 仿照硬體 pipeline 的行為,在process間開一條或數條線來放資
料
• 可以在Linux 指令或是CGI(common gateway interface)看到
• Ordinary Pipe and Named Pipe
6
read-end write-end
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)
Ch4 執行緒(Thread)
8
Program? Process?
Thread?
9
Program? Process? Thread?
• Program→靜態的指令集(file)
• Process→正在執行的指令集,有被載入主記憶體的
Program(executable file)
• Thread→Process的小分身,共用Process的記憶體且自己也擁
有一個獨立的空間(Stack)可以做自己的事(e.g.多工的應用程式、
拼音檢查)
10
如何Multi-programming?
• Concurrent(並發)→利用排程(Scheduling)使多個process快速處
理,感覺很像同時處理很多事情。
• Single-core中實現,Single-threaded process
11
code data stack
files register
Thread~
從排程pop out出來的Task
就由單一個Thread來處理
如何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接收處理
如何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
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
Multithreading Model
• Many-to-one→多個user thread連到單個kernel thread
15
Multithreading Model
• One-to-one→單個user-thread連到單個kernel-thread
• 最早實現multithreading的方式,但需要限制user-thread數量
以免kernel-thread負擔太重
16
Multithreading Model
• Many-to-many→允許多個user-thread連到有限多個kernel-
thread。
17
thread的分配方式
• Thread Pool→產生一個thread queue,有需要用時從中取出一
個thread出來用,而不用因thread不夠用而中斷目前正在執行的
thread。
18
thread的分配方式
• Grand Central Dispatch (GCP)→Apple用來開發支援multi-
core的應用程式使用。將一個個task包在由Block所組成的
Dispatch queue裡面,再一個個丟到Thread pool去處理。
19
thread的分配方式
• OpenMP→實現跨平台的multithreading,主thread會先產生一
系列的子thread(fork())進行parallelism(multi-core),結束後子
thread們將併回去主thread(join())。
20
Signal
• Signal handling→signal是通知特殊事件發生用的,通常由
Signal handler發出,而process接收到signal時則會用thread來
處理。
21
Thread的三種模式及刪除
• 欲刪除的thread稱為target thread
• state = Disabled
• target thread是不可被刪除的
• state = Defferred
• 預設值,週期性檢查target thread是否被刪掉
• state = Asynchrous
• 不管後果如何,直接刪掉target thread
22
Q & A
23

Contenu connexe

Similaire à Os讀書會20170415 (20)

[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]Network
 
intro syslog syslogng
intro syslog syslogngintro syslog syslogng
intro syslog syslogng
 
syslog&syslog-ng
syslog&syslog-ngsyslog&syslog-ng
syslog&syslog-ng
 
Linux bonding
Linux bondingLinux bonding
Linux bonding
 
Net重點及作業解答
Net重點及作業解答Net重點及作業解答
Net重點及作業解答
 
Unix socket
Unix socketUnix socket
Unix socket
 
Lysu's Java Socket notes
Lysu's Java Socket notesLysu's Java Socket notes
Lysu's Java Socket notes
 
计算机网络:复习
计算机网络:复习计算机网络:复习
计算机网络:复习
 
網路概論
網路概論網路概論
網路概論
 
高性能并发网络服务器设计与实现
高性能并发网络服务器设计与实现高性能并发网络服务器设计与实现
高性能并发网络服务器设计与实现
 
实时消息推送系统
实时消息推送系统实时消息推送系统
实时消息推送系统
 
金盾集訓 II
金盾集訓 II金盾集訓 II
金盾集訓 II
 
提高扩展能力的常用模式——黄东
提高扩展能力的常用模式——黄东提高扩展能力的常用模式——黄东
提高扩展能力的常用模式——黄东
 
Tcpip
TcpipTcpip
Tcpip
 
Kafka的设计与实现
Kafka的设计与实现Kafka的设计与实现
Kafka的设计与实现
 
组网实践
组网实践组网实践
组网实践
 
電腦應用 3 網路概論
電腦應用  3 網路概論電腦應用  3 網路概論
電腦應用 3 網路概論
 
Mr&ueh数据库方面
Mr&ueh数据库方面Mr&ueh数据库方面
Mr&ueh数据库方面
 
第2讲 Osi分层模型
第2讲 Osi分层模型第2讲 Osi分层模型
第2讲 Osi分层模型
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 

Plus de Jen-Wei Cheng (6)

期末考猜題20170616
期末考猜題20170616期末考猜題20170616
期末考猜題20170616
 
Os讀書會20170616
Os讀書會20170616Os讀書會20170616
Os讀書會20170616
 
Os讀書會20170609
Os讀書會20170609Os讀書會20170609
Os讀書會20170609
 
Os讀書會20170518
Os讀書會20170518Os讀書會20170518
Os讀書會20170518
 
Os讀書會20170504
Os讀書會20170504Os讀書會20170504
Os讀書會20170504
 
Os讀書會20170407
Os讀書會20170407Os讀書會20170407
Os讀書會20170407
 

Os讀書會20170415