谈进程、线程

进程、线程可能每个程序员每次面试都可能碰到的问题;自己记录下来,也是加深一下理论印象;

对于牛人来说,可能都烂熟于心了,就一笑而过吧;

对于理论不太强的,大家就共同学习学习;每天进步一点点,总归是件好事。。噢呵;

  • 定义:

进程:

进程是操作系统中最基本、重要的概念;

是一个正在执行的程序;计算机中正在运行的程序实例;(容易理解的描述

可以分配给处理器并由处理器执行的一个实体;

由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

对应用程序来说,进程就像一个大容器;在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。

进程的概念主要有两点:

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

线程:

是"进程"中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行中的程序的调度单位。

是进程中的一个实体,是被系统独立调度和分派的基本单位;

线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源;

一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

由于线程之间的相互制约,致使线程在运行中呈现出间断性。

线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,那就是程序本身。

 

  • 比较:

进程、线程都是因并发而产生;

一个应用程序也就是一个进程,一个进程至少有一个线程;

线程要依赖于进程而存在;

资源的使用:进程间相互独立,同一进程的各线程间共享;同一个进程内的线程共享内存和文件;

通信:进程间通讯,需要额外的开销;线程间可以直接读写进程数据段(如全局变量)来进行通信;

线程开销小,速度快,线程在上下文的调度切换比进程要快得多;

在多线程操作系统中,进程不是一个可执行的实体,线程才是CPU调度的基本单元。

 

我个人觉得面试的时候,能回答成这样,应该打满分了吧。。呵呵。。

 

愿喜欢我的人、不喜欢我的人都得到幸福!

阿弥陀佛!

 

 

 

 

 

 

 

posted @ 2011-12-14 23:29  folotus  阅读(896)  评论(0)    收藏  举报