OS_chapter4_190417_进程管理
4.1 process concept
4.1.1 进程基本概念
- background:程序在并发环境中的问题
- process(进程):describe and manage the running-procedure of program
- the definition of process
- the features of process
- the differences between process and program(ppt)
- the tpye of process(ppt)
4.1.2 进程状态
status
- Running
- Ready
- Block/
Wait
状态转化
Linux中进程状态
- 挂起态常用于调试时
4.1.3 进程控制块
PCB:(process control block)
-
concept
data struct
-
进程=程序+PCB
-
程序可以同时有多个进程(PCB)
-
PCB中的基本成员(ppt)
PCB of Linux
- 0.11 版本Linux 结构简单,可以参考学习
进程的切换
- context:进程运行环境(CPU环境)
- 切换过程
换入进程的context进入CPU(从栈上来)
换出进程的context离开CPU(到栈上去)
4.2 process management
4.2.1 concept
manage all the behavior during the process lifetime
-
create a process with process ID
- 创建一个空白PCB(tag of process)
- process ID
- allocate space for process
- initialize PCB
- 新进程插入就绪队列
-
delete a process
-
block a process
- running/ready --> block
- 阻塞的时机/事件(4)
- 参数(parameter): 不同原因构建不同的blocking line
- block-realization
- wake up a process
- wake up a process which in blocking line
- 时机/事件(4)
- parameter:process ID
进程控制原语
-
原语:
函数
有若干指令构成的具有特定功能的函数
具有原子性
,其操作不可分割 -
进程控制原语
- 创建原语
- 撤销原语
- 阻塞原语
- 唤醒原语
4.2.2 Windows process control
参考实例
创建进程
- key point :
CreateProcess()
结束进程
ExitProcess:正常结束并返回通知
TerminateProcess:强制结束(no notification)
4.2.3 Linux process control
创建process
- function :
forck()
: 创建除initial外的所有进程 - exec 函数簇:
保证子进程执行与父进程不同的功能
- fock()
- 复制:
- 与 father process 相同的代码,数据,堆栈;即有相同行为;
- 主要区别为:
进程号不同
,与时间的信息不同
实例如下:
example 1
- 子进程时父进程的复制;且二者并发运行
- printf() 执行两次(子父各一)
example 2
- pid=0 son process (statement 1)
- pid>0 father process (statement 2)
并发执行,执行顺序有可能颠倒
- especially
- son process 有与 father process相同的代码
- 但
从其被创建处向下执行(不会递归无限创建子进程)
fork()函数实现
- code shows : 新建子进程处于就绪态
- exec函数簇:
保证进程执行与父进程不同的功能
back