作业系统L3-行程
行程(Process)–正在执行的程序
行程(Process) VS 程序(Program)
- 行程(Process):执行中的程序,主动个体
- 程序(Program):储存在硬碟中的可执行档,被动
- 一个程序可能有数个行程
行程记忆体结构
行程状态
- new: Process已被建立,取得PCB空间,未载入记忆体
- ready:Process已在记忆体,等待CPU
- waiting:Process邓带IO中
- running:Process取得CPU执行中
- terminated:完成工作,准备回收PCB
行程控制表(PCB)
又称任务控制表(task control block)
- 行程ID:唯一
- 行程状态︰running或waiting等
- 程序计数器︰指向下一个要执行指令的位址
- CPU暂存器:记录在暂存器的值
- CPU排班相关的资讯:
- 记忆体管理资讯:
- 会计资讯
- I/O资讯
行程排班
伫列
排班伫列
-
长程排班程序(Long-term scheduler,job scheduler):放入Ready queue,控制多元规划程度
-
短程排班程序(Short-term scheduler,PU scheduler):并将CPU分配给它
-
中程排班程序(Medium-term scheduler)
-
行程描述:
- I/O倾向行程(I/O-bound process):IO花费时间多
- CPU倾向行程(CPU-bound process):CPU花费多
-
置换(swapping):从记忆体移除行程,储存到磁碟OR从磁碟回存到记忆体继续执行
Context Switching
- CPU要从旧行程转到新行程时,在储存装置载入和储存状态
- Context Switching的转换时间是负担,OS和PCB影响时间
行程产生/结束
- fork():呼叫新行程
-
exec():新行程取代记忆体空间
- exit():新行程执行完後,删除自身
- abort():父行程可以结束子行程的执行
- wait():子行程输出资料到父行程
行程通讯
合作行程
- 行能够影响其它行程,或是受到其它行程所影响
- 好处:(1)资讯共享、(2)加速运算、(3)模组化、(4)方便性
-
行程间通讯(Inter-Process Communication, IPC)
-
讯息传递(Message passing)
- 共用记忆体(Shared memory)
- 无限缓冲区(unbounded-buffer)对於缓冲区的大小没有限制
- 有限缓冲区(bounded buffer)假设缓冲区的大小固定
独立行程
通讯链
- 构成
- send(P, message) –传送讯息给行程P
*** receive(Q, message) –从行程Q接收讯息**
- port(信箱埠):传送与接收讯息,两个行程共用信箱埠时,它们才可互相联系
- 操作
- 产生一个新的信箱埠
- 经由信箱埠传送并接收讯息
- 删除一个信箱埠
- 同步
- 等待(blocking),同步(synchronous)
- 等待传送(blocking send)︰传送行程等待,直到讯息被接收
- 等待接收(blockingreceive)︰接收者等待,直到有讯息出现
- 非等待(non-blocking)被视为非同步(asynchronous)
- 非等待传送(non-blocking send)︰传送行程送出讯息後继续执行
- 非等待接收(non-blocking receive)︰接收者取回有效讯息或无效资料
缓冲器(Buffer)
- 1.零容量(Zero capacity)–零讯息传送者必须等候接收者(约会)
- 2.有限容量(Bounded capacity)–有限长度n 的讯息如果链已经填满,那麽传送者必须等待
- 3.无限制容量(Unbounded capacity)–无限长度传送者不需要等待