码迷,mamicode.com
首页 > 编程语言 > 详细

进程与线程

时间:2016-08-20 22:02:42      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:linux下的进程与线程

1.进程与程序的区别?

进程与程序的区别:程序是指的存储在存储设备上(如磁盘)包含了可执行机器指 令(二进制代码)和数据的静态实体;而进程可以认为是已经被OS从磁盘加载到内存上的、动态的、可运行的指令与数据的集合,是在运行的动态实体。

2.进程的概念

程序的运行实例(但这并不代表进程就是在运行,根据OS的调度,进程会处于不同的状态),进程是OS进行资源分配的基本单位。

3.线程的概念

线程是进程的一个执行分支,是OS进行调度的基本单位。

4.进程与线程的区别

除了上述概念上的区别外,进程强调资源独占(因为进程是资源分配的基本单位),而线程强调资源共享,但这个并非绝对,对于进程来说,也有共享的资源,比如,文件描述符表、信号的处理方式、当前的工作目录等。对于线程来说也其私有的资源,如:线程ID、上下文信息、栈空间、信号屏蔽字、调度的优先级等。

5.为什么使用多线程?

对于多进程来说,创建进程的开销较大,在调度时CPU压力较大,因此效率会低一些。

使用多线程与多进程相比,这是一种相对比较“节俭”的多任务处理方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。

线程间提供方便的通信机制:对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方。


技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享

本文出自 “11408774” 博客,请务必保留此出处http://11418774.blog.51cto.com/11408774/1840618

进程与线程

标签:linux下的进程与线程

原文地址:http://11418774.blog.51cto.com/11408774/1840618

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!