进程
进程概述
狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
广义定义:进程是一个具有一定独立功能的程序关于一个数据集合的一次运行活动。它是动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程的概念主要有两点:
第一:进程是一个实体,拥有自己的地址空间:文本区域、数据区域、堆栈。
文本区域存储处理器执行的代码;
数据区域存储变量和进程执行期间使用的动态分配的内存;
堆栈存储着活动过程调用的指令和本地变量。
第二:进程是一个“执行中的程序”。程序是一个没有生命的实体,只有被处理器赋予程序生命时(被执行时),才能成为一个活动的实体,称之为进程。
进程是操作系统中最基本、重要的概念。多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
进程特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行。
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。
结构特征:进程由程序、数据、进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
线程
线程概述
线程(Thread)是操作系统能够进行运算调度的最小单位。线程隶属于进程,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
线程是独立调度和分派的基本单位。
同一进程中的多条线程将共享该进程中的全部系统资源,但线程间有各自的调用栈、寄存器环境、线程本地存储。
一个进程可以有很多线程,线程间并行执行不同的任务。
线程特点
1.轻型实体
线程中的实体近乎不持有系统资源,只持有必不可少的、能保证独立运行的系统资源。
2.独立调度和分派的基本单位
在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很"轻",故线程的切换非常迅速且开销小(在同一进程中)。
3.可并发执行
同一进程的线程间可以并发执行,甚至允许同一进程中的所有线程都并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。
4.共享进程资源
在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的进程空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚拟地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。