进程的创建,创建进程的两种方式

一:进程的创建

      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中,没有进程层次的概念,所有的进程地位都相同

四:进程的状态

进程主要分为三种状态,运行态,阻塞态,就绪态。

        进程的创建,创建进程的两种方式_第1张图片

五:创建进程的两种方式

# # # 方式一:
# 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('主')

六:进程之间相互隔离:

进程的创建,创建进程的两种方式_第2张图片

你可能感兴趣的:(进程的创建,创建进程的两种方式)