进程

进程: 

进程是正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。

开启进程的方式:

第一种 

from multiprocessing import Process
def task(name):
pass
if __name__ == '__main__':
p=Process(target=task,args=('egon',))
p.start()
第二种:
class MyProcess(Process):
def __init__(self,name):
super(MyProcess,self).__init__()
self.name=name
def run(self):
pass
if __name__ == '__main__':
p=MyProcess('egon')
p.start()
 

 

关于创建的子进程,UNIX和windows

1. 在UNIX中该系统调用是:fork,fork会创建一个与父进程一模一样的副本,二者有相同的存储映像、同样的环境字符串和同样的打开文件

(在shell解释器进程中,执行一个命令就会创建一个子进程)

2. 在windows中该系统调用是:CreateProcess,CreateProcess既处理进程的创建,也负责把正确的程序装入新进程。

对比unix和windows

  1.相同的是:进程创建后,父进程和子进程有各自不同的地址空间(多道技术要求物理层面实现进程之间内存的离),任何一个进程的在其地址空间中的修改都不会影响到另外一个进程。

  2.不同的是:在UNIX中,子进程的初始地址空间是父进程的一个副本,提示:子进程和父进程是可以有只读的共享内存区的。

但是对于windows系统来说,从一开始父进程与子进程的地址空间就是不同的。

进程之间空间隔离:
进程之间空间互相隔离,在子程序的内存空间不影响父级程序
对于unix中的僵尸进程与孤儿进程:
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符
  仍然保存在系统中。这种进程称之为僵死进程。 

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。

孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

 

 

posted @ 2018-04-24 15:23  tianyu105529  阅读(89)  评论(0编辑  收藏  举报