进程与线程:
为什么要引入进程?
在多道程序环境下,允许多个程序并发执行,引入进程是以便于程序能够更好的并发执行,实现操作系统的并发和共享。
从不同的角度进程有多个定义:
- 进程是程序的一次执行过程。
- 进程是程序在一个数据集合上的运行过程,是系统进去资源分配和调度的独立单位。
- 进程是可以和别的进程并行计算。
- 进程可以定义为一个数据结构及能在其上进行操作的一个过程。
进程控制块:
为了使参与并发的执行的程序,能够独立正确的运行,因此会为进程配置一个进程控制块。(process control block) , 系统用PCB来描述进程的基本情况,和运行状态,进而控制和管理进程。它是进程存在的唯一标志,相应的创建进程就是创建PCB,撤销进程就是撤销PCB, 程序段,代码段,PCB构成进程实体,进程实体是动态的,而进程是动态的。
进程与程序的区别:
1,进程是动态的 ,程序是静态的,进程是程序的执行,它包含数据段,代码段,和PCB 而程序只是有序的代码集合,无执行含义。
2,进程是暂时的,程序是永久的,进程是一个状态的变化过程,而程序是永久保存的。
3,进程可以创建其他进程,而程序不能创建其他程序。
4,进程具有并行性,而程序没有。
线程:
为什么引入线程?
引入进程是为了便于程序更好的并发执行,增加资源利用率,那么引入线程就是为了减少程序的并发所带来的时空开销,提高操作系统的并发性。
线程的定义:
- 线程是程序的一个执行单元,比进程更小。
- 线程是一个进程的调度实体。
- 线程本身不能单独运行,只能包含在进程中,只能在进程中执行。
因此线程是进程中一个相对独立的,可调度的执行单元,线程基本不拥有资源,但它可以和该进程的其他线程共享该进程的全部资源。
在线程引入后,线程是操作系统进行独立调度的基本单位,进程是拥有资源的基本单位。
线程和进程的比较:
- 在以前没有引入线程的操作系统中,进程是拥有资源和独立调度的基本单位,而引入操作系统后,进程是拥有资源的基本单位,而线程是独立调度的基本单位,同一个进程中的线程切换不会引起进程的切换,而不同进程的线程切回会引起进程的切换。
- 进程一直都是拥有资源的基本单位,线程基本不拥有资源,只有一些运行时必不可少的资源,(如程序计数器,栈和一些寄存器),但同一个进程的线程可以共享所属的进程的资源。
- 引入线程后,不仅进程间可以并发执行,线程也可以并发执行,大大的提高了系统的并发性。
- 操作系统在创建和撤销进程时,系统都要为之分配和回收资源,如内存 I/O设备,所付出的开销远远大于创建线程所付出的开销,线程进行切换时,只需要保存和设置少量的寄存器内容,开销很小。