1. 什么是进程?
进程(Process)是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息是进程存在的唯一标志。
进程具有的特征
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进行一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序,数据和进程控制块三部分组成
进程的五种状态
其中最核心的就是三种状态:就绪态、阻塞态、执行态。
就绪态:进程已经准备好,已分配到除 CPU 外的所有所需资源,只要分配到CPU就能够立即运行
阻塞态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
执行态:进程处于就绪状态被调度后,进程进入执行状态
另外要注意这三种状态之间的转换,注意箭头的方向。阻塞态是不能直接转运行态的。
2. 什么是线程?
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务,通常也被称为轻量进程。
线程具有的特征
轻型实体:具有属于自己的线程控制块,线程中的实体基本上不拥有系统资源。
独立调度和分派的基本单位:可以进行独立的调度分配,由于线程是轻量级,所以线程切换速度也非常快。
可并发执行:在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。
共享进程资源:在同一进程中的各个线程,都可以共享该进程所拥有的资源。
3. 什么是纤程?
纤程(Fiber)包含独立的目态栈,寄存器状态的控制信息,目态控制的纤程转接要求较高的编程经验,由于纤程属于目态对象,一个纤程被封锁意味着所在线程被封锁,应用程序可以通过ConvertThreadToFiber将线程转换为纤程,与线程对比,纤程具有切换速度快的特点。
纤程具有的特征
- 线程是在Windows内核中实现的,操作系统会根据系统的调度算法对线程进行调度。
- 纤程是在用户模式下实现的,内核对纤程一无所知。
- 纤程是更轻量级的线程,一个线程可以包含一个或多个纤程
参考资料:百度百科