一:进程的创建
1,系统的初始化
2,一个进程在运行过程中开启了子进程
3,用户的交互式请求,而创建一个新进程(如双击qq)
4,一个批处理作业的初始化(只在大型机的批处理系统中应用)
关于进程的创建,UNIX和WINDOWS
1,在unix中系统调用的是:fork,fork会创建一个与父进程一摸一样的副本
2,在windows中该系统调用是:cresteprocess ,既负责处理进程的创建 ,也负责把正确的程序装入新进程
二:进程的终止:
1,正常退出
2,出错退出
3,严重错误(非自愿,执行非法指令,如引用不存在的内存,i/o等,可以捕捉异常
4,被其他进程杀死
三:进程的层次结构
无论是unix还是windows,进程只有一个父进程,不同的是:
1,在unix中所有的进程,都是以init进程为根,组成树形结构。父子进程共同组成一个进程组
2,windows中,没有进程层次的概念,所有的进程地位都相同
四:进程的状态
进程主要分为三种状态,运行态,阻塞态,就绪态。
五:创建进程的两种方式
# # # 方式一:
# from multiprocessing import Process
# import time
#
# def task(x):
# print('%s is running' %x)
# time.sleep(3)
# print('%s is done' %x)
#
# if __name__ == '__main__':
# # Process(target=task,kwargs={'x':'子进程'})
# p=Process(target=task,args=('子进程',)) # 如果args=(),括号内只有一个参数,一定记住加逗号
# p.start() # 只是在操作系统发送一个开启子进程的信号
#
# print('主')
# 方式二:
# from multiprocessing import Process
# import time
#
# class Myprocess(Process):
# def __init__(self,x):
# super().__init__()
# self.name=x
#
# def run(self):
# print('%s is running' %self.name)
# time.sleep(3)
# print('%s is done' %self.name)
#
# if __name__ == '__main__':
# p=Myprocess('子进程1')
# p.start() #p.run()
# print('主')
六:进程之间相互隔离: