进程 线程 程序

用自己话写的:

程序:一个程序就好比一篇文章,文章是为了传递信息或者表达某种思想观念,而程序是为了解决某种问题(计算阶层)或者事项特定目的(玩游戏);文章可以用各种语言,程序也是,可以用汇编,cJava等;文章的内容可以是文字、图片等,程序的内容只有两种:对数据的描述(数据结构)和对操作的描述(算法);文章是供人们阅读的,程序是供编译器运行的。所以出现了很著名的公式:程序=算法+数据结构。

进程:运行中的程序。由此可知:程序是静态的,进程是动态的,而且据说它是操作系统动态执行的基本单元。也可以说进程是具有一定独立功能的程序关于某个数据集合的一次运行活动。

进程有自己的地址空间。一般情况下包括:文本区,数据区和堆栈。文本区存储处理器执行的代码,数据区存储变量和进程执行期间使用的动态分配的内存,对战区存储活动过程调用的指令和本地变量。

进程的一些特征:动态性、并发性、独立性、异步性等 

线程

进程是资源分配的最小单位,线程是系统独立调度和分配的基本单位。线程被包含在进程之中,是进程的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

一个标准线程组成成分:线程ID,当前指令指针PC,寄存器集和堆栈。

线程不拥有自己的资源,只拥有一点在运行中不可少的资源,但它可与同属一个进程的其他进程共享进程所拥有的全部资源如:虚拟地址空间,文件描述符,信号处理等等。但同一进程中的多个线程各自有各自的调用栈,自己的寄存器空间,自己的线程本地存储。

线程运行中需要用到计算机内存资源和cpu


初稿:大多数都是摘抄的。

进程

    狭义定义:进程就是程序的执行过程。

 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元。

进程的要点

      进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

进程的主要特征

   动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

  并发性:任何进程都可以同其他进程一起并发执行

  独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

  结构特征:进程由程序、数据和进程控制块三部分组成。

  多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

 

线程

         线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

  线程,有时被称为轻量级进程(Lightweight ProcessLWP),是程序执行流的最小单元,但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度(线程可以操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度)和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器空间(register context),自己的线程本地存储(thread-local storage)。线程的运行中需要使用计算机的内存资源和CPU

  一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。

  线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。

       在多核或多CPU,或支持Hyper-threadingCPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率,节约CPU时间。在单CPU单核的计算机上,使用多线程技术,也可以把进程中负责IO处理、人机交互而常备阻塞的部分与密集计算的部分分开来执行,编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。

线程有四种基本状态,分别为:产生(spawn)、中断(block)、非中断(unblock)、退出(finish

线程有两个基本类型:

  用户级线程:管理过程全部由用户程序完成,操作系统内核心只对进程进行管理。

系统级线程(核心级线程):由操作系统内核进行管理。操作系统内核给应用程序提供相应的系统调用和应用程序接口API,以使用户程序可以创建、执行、撤消线程。

 

线程与进程的区别可以归纳为以下几点:

1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。  子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

3)调度和切换:线程上下文切换比进程上下文切换要快得多。  由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。

4)在多线程OS中,进程不是一个可执行的实体。


程序

程序(program(me)procedure

程序是由程序计数器(Program Counter)控制,是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合,是用汇编语言、高级语言等开发编制出来的可以运行的文件,在计算机中称可执行文件(后缀名一般为.exe)。我们玩的游戏一般都是(但现应用程序在后缀名为.swfFlash影片类的游戏也比较流行)

一个程序应该包括以下两方面的内容。

  对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。

  对操作的描述。即操作步骤,也就是算法(algorithm)。

  著名计算机科学家沃思提出一个公式:数据结构+算法=程序。实际上,一个程序除了以上两个主要的要素外,还应当采用程序设计方法进行设计,并且用一种计算机语言来表示。因此,算法、数据结构、程序设计方法和语言工具4个方面是一个程序员所应具备的知识


关于此类总结的好文章:http://blog.csdn.net/hguisu/article/details/1910803

 










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值