程序的定义:程序是指令的有序集合。是一个在时间上按照严格次序前后相继的操作序列。
进程的定义:可并发执行的程序在数据集上的一次执行过程。指在系统中正在运行的一个应用程序,是系统资源分配的基本单位。
区别与联系:
(1)程序是永存的;进程是暂时存在的。即进程是有生命周期的,创建,执行,撤销等
(2)程序是静态的观念,进程是动态的观念
(3)一个程序可对应多个进程; 一个进程可以执行一个程序或多个程序
(4)进程具有并发性,而程序没有
(5)进程是竞争计算机资源的基本单位,程序不是
1)进程是程序及其数据在计算机的一次运行活动,是一个运行过程,是一个动态的概念。进程的运行实体是程序,离开程序的进程没有存在的意义。而程序是一组有序的指令集合,是一种静态概念。
2)进程是程序的一次执行过程,它是动态地创建和消亡的,具有一定的生命周期,是暂时存在的;而程序则是一组代码的集合,它是永久存在的,可长期保存。
3)一个进程可以执行一个或几个程序,一个程序也可以构成多个进程。进程可以创建进程,而程序不能形成新的程序。
4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。
作业可被看作用户向计算机提交任务的实体,而 进程则是计算机为了完成用户任务实体而设置的 执行实体,是系统分配资源的基本单位。 一个作业由一个或多个进程组成: (1)系统为一个作业创建一个根进程; (2)在执行作业控制语句时,根据任务要求,系统或 根进程为其建立相应的子进程; (3)系统为子进程分配资源和调度各子进程完成作业 要求的任务
作业指用户在一次解决或是一个事务处理过程中要求计算机系统所做的工作的集合。作业由三部分组成,即程序、数据和作业说明书。一个作业可以包含多个程序和多个数据集。在执行一个作业可能会运行多个不同的进程。
线程(thread)是进程内相对独立的可执行单元,所以也被称为轻量进程(lightweight processes);是操作系统进行任务调度的基本单元。它与父进程的其它线程共享该进程所拥有的全部代码空间和全局变量,但拥有独立的堆栈(即局部变量对于线程来说是私有的)。
进程与线程的联系:
一个进程至少拥有一个线程——主线程,也可以拥有多个线程;一个线程必须有一个父进程。多个进程可以并发执行;一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。
进程与线程的区别:
系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销
资源管理:进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
通信方式:进程间通信主要包括管道、系统IPC(包括消息队列,信号量,共享存储)、SOCKE,进程间通信其实是指分属于不同进程的线程之间的通讯,所以进程间的通信方法同样适用于线程间的通信。但对应归于同一进程的不同线程来说,使用全局变量进行通信效率会更高。