进程:是进程实体的运行过程,是操作系统进行资源分配和调度的基本单位
。指在系统中正在运行的一个应用程序;程序一旦运行就是进程。
进程的特点:
- 动态性:进程的实质是进程实体的执行过程,由创建而产生,由调度而执行,由撤销而消亡。
- 并发性:多个进程实体同存于内存中,且能在一段时间内同时运行。
- 独立性:进程实体是一个能独立运行、独立获取资源和独立接受调度的基本单位。
- 异步性:进程按异步方式运行
进程的三种基本状态(另加两种常见状态):
- 就绪状态:进程已经分配到除CPU之外的所有资源,只要获取到CPU,就立即执行。
- 执行状态:已经获取到CPU,正在执行
- 阻塞状态:正在执行的进程由于发生某事件暂时无法继续执行。处于阻塞状态的进程会被放入阻塞队列。
- 创建状态:先申请一个空白PCB,分配进程运行时必须的资源,将该进程转入就绪状态并插入就绪队列中
- 终止状态:等待操作系统进行善后处理,将PCB清零,并返还给系统
引入线程,是为了减少程序在并发执行时所付出的时空开销。
线程:是操作系统能够调度和分派的基本单位
,被包含在进程中,是进程中的实际允许单位。一条线程是指进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程执行不同的任务。
线程和进程的比较
- 调度的基本单位:线程在进行切换时,只需要保存和设置少量寄存器内容,切换代价远低于进程。在同一个进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程必然会引起进程的切换。
- 并发性
- 拥有资源:进程可以拥有资源,并作为系统中拥有资源的一个基本单位。但是,线程本身并不拥有系统资源,而是拥有必不可少、能独立保证运行的资源。线程除了拥有自己少了的资源,还允许多个线程共享进程所拥有的资源
- 独立性:同一进程中不同线程之间的独立性要比不同进程之间的独立性低得多。因为同一进程中的不同线程往往是为了提高并发性以及进行相互之间的合作而创建的,它们共享进程的内存地址空间和资源
- 系统开销:线程的创建和销毁,切换的代价都要低于进程。