程序、进程和线程的区别

来源:互联网 发布:数学答题软件下载 编辑:程序博客网 时间:2024/05/27 12:22

以前一直搞不清楚这个问题,最近看了《现代操作系统》这本书,有了点深入的了解,在此记录一下。

1、首先来看程序和进程:

        曾经我认为这两者应该是没有什么区别的,实则不然。在这里可以引用书里的比方,假如有一个厨师要根据一个食谱做一个蛋糕,那么这个厨师就好比CPU,而食谱就是程序(以一定形式写好的算法),当然还有输入数据——面粉、糖、水等等材料,和输出结果——蛋糕,这一整个过程就是进程,即CPU对程序进行调度执行的整个过程。进程进程,说的应该就是进行中的程序吧。

2、再来看进程和线程:

线程就好比迷你的进程,它用较少的资源,处理进程中某个特定的任务,它容易撤销也容易创建,在许多操作系统中,创建一个线程要比创建一个进程快10~100倍。进程就是一个大的任务,其中包含了各种小任务,交给了不同的线程去完成。

但是,这一点,实际上并不能很好的说明引入线程的原因,让我们再深入研究一下。

        有过多线程编程经验的程序员都知道,比如我们写一个程序,程序设计了两个任务,一个是从UI界面中的列表显示一些文字数据(比如微博吧),然后还有一个任务是发出POST/GET请求到服务器获取数据,需要在获取了数据后才能在UI中的列表显示出文字数据,假如我们把这两个任务写到了同一条线程中,我们会发现在向服务器发请求的时候,UI是会卡死的,因为一条线程中的资源有限,只能做一定规格的任务(比如移动开发中的主线程只能用于UI操作),于是只好向系统多申请点资源——创建新的线程用来完成向服务器发出请求的任务。

由此,我们可以看出,引入线程很好地解决了资源利用问题,还有两个很好的优点:

⑴创建速度快,资源调用及时——轻便快捷

⑵解决进程中的资源耦合度,让你知道什么资源在做什么任务——解耦

接下来我要讲的东西想必看了上面的内容的人都懂了,为什么不干脆直接在创建进程的时候分配所有会用到的资源?

因为怕浪费,CPU在运行一个程序的时候经常不会用到它所有的功能,分配资源过多会造成浪费

为什么引用线程,不干脆在进程里面创建小进程就好?

一是于理不合,不符合人的行为习惯。二是创建进程速度慢——可能是因为它有一些不必要的设定吧。

以上有部分内容为个人观点,如有不正确的地方欢迎指出或者提问,我会及时更正。

0 0
原创粉丝点击