您的位置:首页 > 其它

线程、进程和程序

2014-02-18 21:00 176 查看
现如今几乎所有的操作系统(OS)都支持同时运行多个任务,所有运行中的任务都对应着一个进程(Process)。

OS对于多进程并发执行的支持因为硬件和操作系统的不同而采取的策略不一,主要有共享式的多任务操作策略和抢占式的多任务策略。

 

当一个程序进入内存运行时,即变成一个进程。

进程使处于运行状态的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。

 

一般而言,进程有如下三个特性:

1.独立性。进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都有自己私有的地址空间。在没有进程允许的情况下,一个用户进程无法直接访问其他进程的地址空间。

2.动态性。进程和程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中运行的指令集合。在进程中加入了时间的概念,进程具有自己的生命周期和各种不同的状态,这在程序中是不具备的。

3.并发性。多个进程可以在单个处理器上并发运行,而进程之间不会相互影响。

 

并发与并行的区别?

并发指在同一时刻只能有一个进程指令执行,但多个进程指令被快速的轮换执行,宏观上产生多个进程同时执行的效果。

并行指在同一时刻有多个进程指令在多个处理器上同时执行。

 

线程是对进程概念的扩展。线程也称为轻量级的进程,是进程的执行单元。线程是在程序中是独立的、并发的执行流,就像进程在OS中的地位一样。

当进程被初始化后,主线程就被创建了。

线程是进程的组成部分,每一个进程可以有多个线程,一个线程必须有一个父进程。线程可以拥有自己的堆栈、程序计数器和自己的局部变量,但不再拥有系统资源,它和父进程的其他线程共享该进程所拥有的全部资源。因为线程共享进程中的所有资源,所以编程更加方便。但必须更加小心,要确保线程不会妨碍进程中的其他线程。

 

线程是独立运行的,他并不知道进程中是否还有其他的线程存在。线程的运行是抢占式的,也就是说当前的线程随时有可能被挂起,以便其他的线程能够执行。

线程的调度和管理由父进程本身来负责完成。

 

简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程,但至少有一个线程(即主线程)。

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息