程序进程和线程及并行和并发的区别
Posted Cssss_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序进程和线程及并行和并发的区别相关的知识,希望对你有一定的参考价值。
程序、进程和线程及并行和并发的区别
程序、进程和线程
1、程序
程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。计算机程序(Computer Program)是指一组指示计算机或其他具有消息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。所以,程序可以看作是由一种语言编写而成的,用于指示懂得该语言且拥有对于能力的体系结构,使其能够执行操作者命令的一种指令。 在计算机编程当中,程序即可理解为由编程语言(C、Java等)编写而成的一串代码。
2、进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
从狭义上理解,进程即是正在运行的程序实例。
而从广义上理解,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
3、线程
线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。一个进程可以有很多线程,每条线程并行执行不同的任务。
总的来说,程序、进程和线程的关系可以看作为:线程包含于进程,进程包含于程序。
并行和并发的区别
并行的意思是“同时实行或实施”。在操作系统中并行则指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
而并发是指:在同一时间段,多个任务都在执行。宏观上是同时执行,微观上是顺序地交替执行。
并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
因此并行和并发的区别主要是:
并发是逻辑上的同时发生,而并行是物理上的同时发生。举个例子:一个人有三个任务需要在一定时间内完成,如果他选择将这三个任务一一完成(即每次只做一个任务,可以中途切换,但是手头只干一件事)那么这就是并发,而如果他选择将这三个任务一起完成(即同时进行三个任务,手头上有三件事)那么这就是并行。
总的来说,并发是指在同一时间段,多个任务都在执行。宏观上是同时执行,微观上是顺序地交替执行。并发不一定等于并行。而并行则指在单位时间内多个任务同时执行。
线程,进程。多进程,多线程。并发,并行的区别
一:线程与进程
1.概念
线程:是程序执行流的最小单元,是系统独立调度和分配CPU(独立运行)的基本单位。
进程:是资源分配的基本单位。一个进程包括多个线程。
2.区别:
1.线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。
2.每个进程都有自己一套独立的资源(数据),供其内的所有线程共享。
3.不论是大小,开销线程要更“轻量级”
4.一个进程内的线程通信比进程之间的通信更快速,有效。(因为共享变量)
二.多线程与多进程
多线程:同一时刻执行多个线程。用浏览器一边下载,一边听歌,一边看视频,一边看网页。。。
多进程:同时执行多个程序。如,同事运行YY,QQ,以及各种浏览器。
三.并发与并行
并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
以上是关于程序进程和线程及并行和并发的区别的主要内容,如果未能解决你的问题,请参考以下文章