Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chapter 3: Processes (IPC in Message-Passing Systems (operations…
Chapter 3: Processes
IPC in Message-Passing Systems
operations
send(message)
receive(message)
message大小可以可固定也可變動
Direct Communication
Process之間要有名字
send (P, message)
receive(Q, message)
link可以是單向,但大多是雙向
Indirect Communication
透過信箱來收、送message
send(A, message)
receive(A, message)
Synchronization
Blocking (synchronous)
:star:
Blocking send
: 確定收送到手中才回家
Blocking receive
: 確定收到信才回家
Non-blocking (asynchronous)
:star:
Non-blocking send
: 信送出去就不管了
Non-blocking receive
: 不管有沒有收到信就這樣
rendezvous
:star: : send跟receive都blocking
Buffering
Zero capacity
: sender一定要等receiver,逼他收下
Bounded capacity
Unbounded capacity
Process Concept
Program與Process
Program :
被動
實體,存在disk中 (
executable file
:star:)
Process
: 正在執行中的program
分為多個部分
text section
:star: : 儲存program code
program counter
:star: : 目前process的活動狀態
Stack
:star: : 存放暫時的資料(e.g. function參數、區域變數)
Data section
:star: : 全域變數
Heap
:star: : 儲存run time動態配置的記憶體
p.4, 5例題:fire::fire::fire:
Process State
process執行時,
state
:star:會改變
New
: process被建立
Running
: 正在執行指令
Waiting
: 等待I/O或事件發生
Ready
: 等待被分配給CPU
Terminated
: 執行完畢
Process Control Block(PCB)
:star::star::star:
定義 : 包含了與process有關的資訊,又稱為
task control block
:star:
內容
Process state
Program counter
CPU暫存器
CPU scheduling information
記憶體管理資訊
計量資訊
I/O狀態資訊
Process Scheduling
Process Scheduling
Process scheduler
:star: : 挑選下一個要進入CPU的process
scheduling queues
:star:
Ready queue
:star: : 在main memory中,等待被執行
Wait queues
:star: : 等待事件發生(e.g. I/O)
CPU從一個process切到另一個process時
作法 : 將舊的狀態存起來,新process再利用
context switch
:star:載入saved state
Context
:star: : 整個執行的環境 ( a process represented in the PCB )
Multitasking in Mobile Systems
iOS (限制較多)
一個
foreground
:star: process
多個
background
:star: processes
Android (限制較少)
背景程式使用
service
:star:來執行工作
背景程式停了,service還可以繼續跑
IInterprocess Communication (IPC):star::star::star:
兩種model
Sharedmemory
:star: : 速度較快(不像messeage passing還要呼叫system call)
Message passing
:star: : 適合用於少量data(不須避免衝突)、在分散式系統中易實作
Producer-Consumer Problem
:star:
unbounded-buffer
:star: : buffer大小無限制
bounded-buffer
:star: : buffer大小固定
Communication in Client-Server Systems
Sockets
socket
:star: : 可視為溝通的端點
loopback
:star: : 127.0.0.1一組特別的IP位址可以用來refer to system on which process is running
三種socket
Connection-oriented (TCP)
:star:
Connectionless (UDP)
:star:
MulticastSocket
Remote Procedure Calls
Stubs
:star: : client-side proxy for the actual procedure on the server
The client-side stub locates the server and
marshalls
:star: the parameters
OS通常提供rendezvous (or
matchmaker
:star:) service來連接client跟server
Operations on Processes
系統必須提供機制
process creation
:star:
Parent
process:star:建立
children
process:star: => 形成樹狀結構(
tree
:star:)
process identifier (pid)
:star: : 可用於辨識、管理process
資源分享 : 父子共享、子用父一部份、不共用
執行 : 同時執行、子停止父才執行
位址空間 : 子複製父的、子自己load一個程式
例子 : fork() -> exec() -> 父親call wait() 等兒子terminate
fork()
Parent (pid > 0)
Child (pid = 0)
Parent process calls
wait()
for the child to terminate
process termination
:star:
exit()
: 執行最後一條指令,要求OS殺了他
wait()
: 從兒子回傳狀態、資料給爸爸
cascading termination
: processe掛了,子孫全死光
zombie
:star: : 兒子已經執行完畢,但爸爸沒call wait()
orphan
:star: : 爸爸直接離開,而沒有call wait()
abort()
: 父把子終止
Examples of IPC Systems
Pipes
Ordinary pipes
定義 : 爸爸建通道跟兒子溝通,其他人都不能進來
說明
write-end
:star: : 生產者寫入端
read-end
:star: : 消費者讀取端
單向、且須父子關係 =>
anonymous pipes
:star:
Named pipes
定義 : 不是父子關係也能進來溝通
說明 : 更強大、雙向、不須父子關係,可用於多個processes溝通
IPC in Shared-Memory Systems : 溝通是由user process控制而非OS