程序,进程,线程
程序:存放在硬盘中的文件,指令集+数据。被组织成:正文段(指令集) + 用户数据段(数据)
进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。由程序代码,相关数据和进程控制块组成的。程序加载到内存中,分配内存空间,存放正文段(指令集) + 用户数据段(栈 + 堆) + 系统数据段(PCB等系统用到的数据结构)。对于任何单处理器计算机,任何时候最多只有一个进程在执行,处于运行态。
子进程获得父进程的数据空间堆和栈的复制品
线程:是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。
线程的优点:
- 线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多
- 提高了不同的执行程序间的通信效率,独立进程间的通信需要内核的介入,以提供保护和通信所需要的机制。但是一个进程中所有线程共享内存和文件,他们无须调用内核就可以通信。
进程与线程的关系:进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,进程中的线程驻留在同一地址空间,一起共享分配给该进程的所有资源。
多进程可以在不同的核上运行,但是线程不可以跨机器转移,因为线程是存在于单一的进程中,只能在一个核上运行。
进程与程序的主要区别:
(1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;
(2)程序是静态的观念,进程是动态的观念;
(3)进程具有并发性,而程序没有;
(4)进程是竞争计算机资源的基本单位,程序不是。
(5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行