进程与线程
【摘要】 进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。进程拥有独立的内存空间,线程则共享所在进程中的内存空间。进程之间切换开销较大,而线程间切换开销较小。程序是一个静态指令的集合,而进程是一个正在系统中活动的指令集合。
一、进程的定义
维基百科 In computing, a process is the instance of a computer program that is being executed. It contains the program code and its activity. Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently.
在计算中,进程是正在执行的计算机程序的实例。它包含程序代码及其活动。根据操作系统(OS)的不同,进程可以由多个执行线程组成,这些执行线程同时执行指令。
百度文库 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
二、 线程的定义
维基百科 In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system.
在计算机科学中,执行线程是可由调度程序独立管理的最小程序指令序列,调度程序通常是操作系统的一部分。
百度文库 线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
三、 线程与进程
进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
线程和进程的实现在操作系统之间有所不同,但在大多数情况下,线程是进程的一个组件。进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。在操作系统中能同时运行多个进程;而在同一个进程中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)。
进程拥有独立的内存空间,线程则共享所在进程中的内存空间
进程是系统中独立存在的实体,它可以拥有自己独立的资源,系统在运行的时候会为每个进程分配不同的内存空间,所以每一个进程都拥有自己私有的内存空间。在没有经过进程本身允许的情况下,一个用户的进程不可以直接访问其它进程的内存空间。而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),一个进程中的多个线程之间只能共享进程的资源。而不同的进程不共享这些资源。
进程之间切换开销较大,而线程间切换开销较小
每个进程都有独立的数据空间(程序上下文),进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
程序是一个静态指令的集合,而进程是一个正在系统中活动的指令集合
进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念。进程具有自己的生命周期和各种不同的状态,这写概念在程序中是不具备的。