鱼C论坛

 找回密码
 立即注册
查看: 11800|回复: 25

[扩展阅读] 第004讲:【扫盲】进程与线程(转)

[复制链接]
发表于 2014-5-18 22:49:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第一篇:

进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。一个进程所拥有的数据和变量只属于它自己。

线程(thread)则是某一进程中一路单独运行的程序。也就是说,线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有的。由于所有线程共享同样的代码和全局数据,它们比进程更紧密,比单独的进程间更趋向于相互作用,线程间的相互作用更容易些,因为它们本身就有某些供通信用的共享内存:进程的全局数据。


一个进程和一个线程最显著的区别是:线程有自己的全局数据。线程存在于进程中,因此一个进程的全局变量由所有的线程共享。由于线程共享同样的系统区域,操作系统分配给一个进程的资源对该进程的所有线程都是可用的,正如全局数据可供所有线程使用一样。

简而言之,一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。

但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,由多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配,这就是进程和线程的重要区别。


一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一 个进程中的不同执行路径。

线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程 序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。




第二篇:

进程概念

进程是表示资源分配的基本单位,又是调度运行的基本单位。

例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘 空间、I/O 设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配 CPU 以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。

在 Mac、Windows NT 等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。

线程概念

线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。

例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。

线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性。


引入线程的好处

(1)易于调度。
(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。创建线程比创建进程要快,所需开销很少。
(4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

进程和线程的关系

(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)处理器分给线程,即真正在处理器上运行的是线程。
(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-19 09:52:49 | 显示全部楼层
什么时候开GPU编程呀:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-19 12:41:53 | 显示全部楼层
终于懂了啥是进程啥是线程了:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-5-19 23:59:21 From FishC Mobile | 显示全部楼层
睡不着看一下学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-20 14:19:13 | 显示全部楼层
睡不着看一下学习下:ton:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-22 10:12:51 | 显示全部楼层
3)处理机分给线程,即真正在处理机上运行的是线程。
这句话怎么理解?

点评

应该是处理器,打错了。  详情 回复 发表于 2014-5-26 17:29
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-24 23:45:43 | 显示全部楼层
快点出第四讲。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-26 17:29:20 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-27 09:24:54 | 显示全部楼层
小甲鱼 发表于 2014-5-26 17:29
应该是处理器,打错了。

谢谢老师指点,学windows程序设计好找工作吗?能用在哪里?

点评

Windows程序设计,因为用的是SDK讲解,适合桌面程序开发工程师这类。学习完再来学习MFC这类你会发现只需要很短时间就可以很好的过度,SDK肯定是初学者的首选。  详情 回复 发表于 2014-5-27 22:27
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-27 22:27:38 | 显示全部楼层
maiyi 发表于 2014-5-27 09:24
谢谢老师指点,学windows程序设计好找工作吗?能用在哪里?

{:7_173:}Windows程序设计,因为用的是SDK讲解,适合桌面程序开发工程师这类。学习完再来学习MFC这类你会发现只需要很短时间就可以很好的过度,SDK肯定是初学者的首选。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-28 08:54:19 | 显示全部楼层
小甲鱼 发表于 2014-5-27 22:27
Windows程序设计,因为用的是SDK讲解,适合桌面程序开发工程师这类。学习完再来学习MFC这类你会 ...

哦,谢谢指点,先好好学再说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-3 09:21:32 | 显示全部楼层
首先非常感谢小甲鱼老师默默无闻的贡献,,有个问题想请教一下:您说在windows和mac中是用微内核的系统,他们是以进程为资源的分配单位,以线程为cpu的调度单位,,那么linux里面也是如此吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-6 20:38:20 | 显示全部楼层
讲到操作系统了,呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-1 16:50:11 | 显示全部楼层
大概懂了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-30 22:00:32 | 显示全部楼层
zwbj8 发表于 2014-6-3 09:21
首先非常感谢小甲鱼老师默默无闻的贡献,,有个问题想请教一下:您说在windows和mac中是用微内核的系统,他 ...

Linux是宏内核
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-18 20:10:53 | 显示全部楼层
我比较笨,还是太抽象了~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-29 02:12:44 | 显示全部楼层
好抽象啊。。难理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-4-12 20:17:25 | 显示全部楼层
学习了~
好像看懂了又好像没看懂……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-31 14:31:34 | 显示全部楼层
读了一遍,结果:读蒙了:mad:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-9-17 08:48:50 | 显示全部楼层
感谢小甲鱼老师
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 21:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表