进程、程序和线程的差别

??

1、差别

①程序是指令和数据的有序集合,其本身没有不论什么执行的含义。是一个静态的概念。

而进程是程序在处理机上的一次执行过程,它是一个动态的概念。

②程序能够作为一种软件资料长期存在。而进程是有一定生命期的。程序是永久的。进程是临时的。

③进程更能真实地描写叙述并发。而程序不能;

④进程是由进程控制块、程序段、数据段三部分组成;

⑤进程具有创建其它进程的功能,而程序没有。

⑥同一程序同一时候执行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序能够相应多个进程。

⑦在传统的操作系统中,程序并不能独立执行,作为资源分配和独立执行的基本单元都是进程。

⑧通常在一个进程中能够包括若干个线程,它们能够利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位。而把线程作为独立执行和独立调度的基本单位,因为线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。

2、进程是一个具有独立功能的程序关于数据集合的一次能够并发执行的执行活动,其基本特征:动态特征、并发特征、独立性、相互制约性。

3、进程有三种主要的调度状态

①就绪状态

进程已获得除处理器外的所需资源,等待分配处理器资源。仅仅要分配了处理器进程就可运行。

就绪进程能够按多个优先级来划分队列。

比如。当一个进程因为时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完毕而进入就绪状态时,排入高优先级队列。

②运行状态

进程占用处理器资源。处于此状态的进程的数目小于等于处理器的数目。

在没有其它进程能够运行时(如全部进程都在堵塞状态),一般会自己主动运行系统的空暇进程。

③等待状态

因为进程等待某种条件(如I/O操作或进程同步)。在条件满足之前无法继续执行。

该事件发生前即使把处理机分配给该进程,也无法执行。

4、进程的引入大大地提高了资源的利用率和系统的吞吐量,而引入线程的目的是为了降低程序并发所付出的系统开销。进程是资源分配的单位,而线程是系统调度的单位。

时间: 2024-10-18 09:43:18

进程、程序和线程的差别的相关文章

程序,进程,与线程

程序(Program或Procedure,港台称之为程式)是一组用计算机语言编写的命令序列的集合.程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的「程序」就称之为进程.线程是系统分配处理器时间资源的基本单元.每启动一个程序,就至少启动了一个进程.    进程(Process,台湾译作行程)是计算机中已运行程序的实体.程序本身只是指令的集合,进程才是程序(那些指令)的真正运行.进程本身不会运行,是线程的容器.线程不能单独执行,必须组成进程.一个程序至少有一个进程,

进程、程序和线程的区别

 1.区别 ①程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念.而进程是程序在处理机上的一次执行过程,它是一个动态的概念. ②程序可以作为一种软件资料长期存在,而进程是有一定生命期的.程序是永久的,进程是暂时的. ③进程更能真实地描述并发,而程序不能: ④进程是由进程控制块.程序段.数据段三部分组成; ⑤进程具有创建其他进程的功能,而程序没有. ⑥同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进程. ⑦在传统的操作系统中,程序

计算机必知必会:进程process与线程thread 进程定义为一个正在运行的程序的实例

http://www.nowamagic.net/librarys/veda/detail/1741进程和线程这对概念的理解也是很难的,至今网络上可查的资料对其的理解出入都挺大,在不同的操作系统中,如linux和windows中,其概念和实现都是有出入的.因此,我在这里结合我自己的理解谈下这两个概念,讲的都是一般性的概念,并且主要是基以WINDOWS的. 一般将进程定义为一个正在运行的程序的实例.我们在任务管理器重所看到的每一项,就可以理解为一个进程,每个进程都有一个地址空间,这个地址空间里有可

进击的Python【第九章】:paramiko模块、线程与进程、各种线程锁、queue队列、生产者消费者模型

一.paramiko模块 他是什么东西? paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 先来个实例: 1 import paramiko 2 # 创建SSH对象 3 ssh = paramiko.SSHClient() 4 5 # 允许连接不在know_hosts文件中的主机 6 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 7 # 连接服务器 8 ss

内存池、进程池、线程池

首先介绍一个概念"池化技术 ".池化技术 一言以蔽之就是:提前保存大量的资源,以备不时之需以及重复使用. 池化技术应用广泛,如内存池,线程池,连接池等等.内存池相关的内容,建议看看Apache.Nginx等开源web服务器的内存池实现. 起因:由于在实际应用当中,分配内存.创建进程.线程都会设计到一些系统调用,系统调用需要导致程序从用户态切换到内核态,是非常耗时的操作.           因此,当程序中需要频繁的进行内存申请释放,进程.线程创建销毁等操作时,通常会使用内存池.进程池.

(转)同一进程中的线程究竟共享哪些资源

线程共享的环境包括:进程代码段.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯).进程打开的文件描述符.信号的处理器.进程的当前目录和进程用户ID与进程组ID. 进程拥有这许多共性的同时,还拥有自己的个性.有了这些个性,线程才能实现并发性.这些个性包括: 1.线程ID      每个线程都有自己的线程ID,这个ID在本进程中是唯一的.进程用此来标识线程. 2.寄存器组的值       由于线程间是并发运行的,每个线程有自己不同的运行线索,当从一个线程切换到另一个线程上时,必须

同一进程中的线程共享的资源有哪些 转载

转自:http://blog.csdn.net/shuilan0066/article/details/7683315 线程共享的环境包括:进程代码段.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯).进程打开的文件描述符.信号的处理器.进程的当前目录和进程用户ID与进程组ID. 进程拥有这许多共性的同时,还拥有自己的个性.有了这些个性,线程才能实现并发性.这些个性包括: 1.线程ID       每个线程都有自己的线程ID,这个ID在本进程中是唯一的.进程用此来标 识线程.

WEBserver、应用程序server、HTTPserver差别

WEBserver.应用程序server.HTTPserver差别 WEBserver.应用程序server.HTTPserver有何差别?IIS.Apache.Tomcat.Weblogic.WebSphere都各属于哪种server,这些问题困惑了非常久,今天最终梳理清楚了: -Webserver的基本功能就是提供Web信息浏览服务.它仅仅需支持HTTP协议.HTML文档格式及URL. 与client的网络浏览器配合.由于Webserver主要支持的协议就是HTTP,所以通常情况下HTTPs

erlang进程与操作系统线程

erlang多进程与多线程: 在erlang开发中,我们面对的最小执行单位是进程,当然这个进程并不是系统层面上的进程,也不是线程.而是基于erlang运行时系统的一个进程.那么erlang的多进程是如何变成系统级别上的多线程,进而被多核处理器处理呢? 其实,我们每启动一个erlang VM,实际上就启动了模拟器+erlang运行时系统.而每个erlang运行时系统会启动N个进程调度器,每个进程调度器都是一个独立的操作系统线程.这个调度器会处理一个进程池,进程池里面是M个erlang进程.也就是说