线/进程所持有资源以及子线/进程所继承资源

来源:互联网 发布:淘宝新店推广 编辑:程序博客网 时间:2024/04/30 21:19

1.线程和进程的关系

线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。

2、线程和进程间的比较 

子进程继承父进程的属性:

子线程继承主线程的属性:

实际用户ID,实际组ID,有效用户ID,有效组ID;

附加组ID;

进程组ID;

会话ID;

控制终端;

设置用户ID标志和设置组ID标志;

当前工作目录;

根目录;

文件模式创建屏蔽字(umask);

信号屏蔽和安排;

针对任一打开文件描述符的在执行时关闭(close-on-exec)标志

环境;

连接的共享存储段;

存储映射;

资源限制;

会继承互斥锁、条件变量的状态

共享打开文件表项目

进程中的所有信息对该进程的所有线程都是共享的;

可执行的程序文本;

程序的全局内存;

堆内存;

栈;

文件描述符创建子线程前打开的文件将共享读写位置 即共享打开文件表项,创建之后各自打开不共享共享读写位置 即不共享打开文件表项,父子进程一样。参考

信号的处理是进程中所有线程共享的(注意:如果信号的默认处理是终止该进程那么即是把信号传给某个线程也一样会将进程杀掉)

 

父子进程之间的区别:

子线程特有的:

fork的返回值(=0子进程);

进程ID不同;

两个进程具有不同的父进程ID;

子进程的tms_utime,tms_stime,tms_cutime以及tms_ustime均被设置为0;

不继承父进程设置的文件锁

子进程的未处理闹钟被清除

子进程的未处理信号集设置为空集

线程ID;

一组寄存器值;

栈;---应该是线程栈

调度优先级和策略;

信号屏蔽字

errno变量;

线程私有数据;

转自:http://www.bubuko.com/infodetail-373141.html

相关:线程与进程的资源关系、线程与信号

           文件句柄、文件描述符与进程和多线程的那些事

           同进程下的线程共享哪些资源

0 0
原创粉丝点击