线程、进程结构

[root@localhost ~]# pstree -ap | grep server.php
|-php,7900 server.php
| |-php,7901 server.php
| | `-php,7903 server.php
| | |-grep,8558 –color=auto server.php
| `-php,8548 server.php
| |-php,8549 server.php
| | `-php,8551 server.php

http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

进程与线程的一个简单解释

三、进程线程的区别

3.1进程

1、进程之间不共享任何状态

2、进程的调度由操作系统完成

3、每个进程都有自己独立的内存空间

4、进程间通讯主要是通过信号传递的方式来实现的,实现方式有多种,信号量、管道、事件等,任何一种方式的通讯效率都需要过内核,导致通讯效率比较低

5、由于是独立的内存空间,上下文切换的时候需要保存先调用栈的信息、cpu各寄存器的信息、虚拟内存、以及打开的相关句柄等信息,所以导致上下文进程间切换开销很大,通讯麻烦。

3.2线程

1、线程之间共享变量,解决了通讯麻烦的问题对于变量的访问需要锁

2、一个进程可以拥有多个线程,但是其中每个线程会共享父进程像操作系统申请资源,这个包括虚拟内存、文件等,由于是共享资源,所以创建线程所需要的系统资源占用比进程小很多,相应的可创建的线程数量也变得相对多很多。

3、另外在调度方面也是由于内存是共享的,所以上下文切换的时候需要保存的东西就像对少一些,这样一来上下文的切换也变得高效。

发表评论

电子邮件地址不会被公开。 必填项已用*标注