Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1170469
  • 博文数量: 173
  • 博客积分: 4048
  • 博客等级:
  • 技术积分: 2679
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-12 18:53
文章分类

全部博文(173)

文章存档

2018年(1)

2016年(1)

2013年(1)

2012年(118)

2011年(52)

分类: LINUX

2012-04-24 20:11:30

线程和进程在很多方面是相似的。相同点主要表现在如下几方面:
1)        比如都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。
2)        每个进程都有一个进程控制块,线程也拥有一个线程控制块(在Linux内核,线程控制块与进程控制块用同一个结构体描述,即struct task_struct),这个控制块包含线程的一些属性信息,操作系统使用这些属性信息来描述线程。
3)        线程和子进程共享父进程中的资源。
4)        线程和子进程独立于它们的父进程,竞争使用处理器资源。
5)        线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和修改线程和子进程的优先级。
6)        线程和子进程可以改变其属性并创建新的资源
除了这些相同点,在很多方面也存在着差异:
1)        主要区别:每个进程都拥有自己的地址空间,但线程没有自己独立的地址空间,而是运行在一个进程里的所有线程共享该进程的整个虚拟地址空间
2)        线程的上下文切换时间开销比进程上下文切换时间开销要小的多
3)        线程的创建开销远远小于进程的创建
4)        子进程拥有自己的地址空间和数据段的拷贝,因此当子进程修改它的变量和数据时,它不会影响父进程中的数据,但线程可以直接访问它进程中的数据段
5)        进程之间通讯必须使用进程间通讯机制,但线程可以与进程中的其他线程直接通讯
6)        线程可以对同一进程中的其他线程实施大量控制,但进程只能对子进程实施控制
7)        改变主线程的属性可能影响进程中其他的线程,但对父进程的修改不影响子进程。

LINUX下面 线程 是 lightweight process就是轻量级的进程。 一句话线程是共享了部分资源(地址空间、文件句柄、信号量等等)的进程。所以线程也按照进程的调度方式来进行调度。
阅读(1172) | 评论(0) | 转发(1) |
0

上一篇:赛马问题

下一篇:snprintf 用法

给主人留下些什么吧!~~