操作系统中进程与线程、任务的区别

1、进程与线程的定义

进程是程序处于一个执行环境中在一个数据集上的一次运行过程,它是系统进行资源分配和调度的一个独立单位,每个进程都有自己独立的系统资源,一个进程中可以有多个线程。进程是系统资源分配的最小单位。

  • 线程,有时候也可被称为轻量级进程,是程序执行的最小单元,即为CPU调度的最小单位。线程是进程的一个实体,是CPU调度和分派的基本单位。线程自己不拥有系统资源,只拥有程序在运行中必不可少的(程序计数器,一组寄存器和栈),每个线程也都有各自的用户栈,核心栈和控制块等资源,但同一个进程中的各个线程共享着该进程所拥有的全部系统资源。

2、进程、线程二者的区别和联系

  • 同一个进程可以包含多个线程,一个进程中至少包含一个线程,线程必须存在于某个进程实体中;

  • 进程在进行上下文切换时由于要切换页表,往往伴随着页调度,因此开销比较大,而线程在进行上下文切换时,由于仅涉及与自身相关的寄存器状态和栈的信息(线程的上下文环境主要包含程序计数器,寄存器的值和栈指针),因此开销比较小;

  • 所有的操作系统的执行功能都是通过创建线程去完成的,系统在运行时会为每个进程分配不同的内存区域,但不会为线程分配内存,同一个进程中的各个线程共享该进程的内存区域;

  • 进程结束后,该线程下的所有线程将被销毁,而一个线程的结束不会影响同一个进程下的其他线程;

  • 在操作系统中,进程是拥有系统资源的独立单元,它可以拥有自己的资源,一般而言,线程不能拥有字节的资源,但能够访问其隶属进程的资源

    进一步理解例子:如果把计算机的操作系统比作一个大的工厂,那么进程就是这个工厂中的各个相互独立的车间,线程则是车间中的流水线工人。每个车间中至少有一个工人,也可以有多个工人。这些“工人”共享着这个车间中的所有资源(访问其隶属进程的资源)。

3、FreeRTOS中进程,线程与任务的关系

  • 在多数通用(分时)操作系统(如Linux,Windows)中,进程是系统资源分配的最小单位,线程为CPU调度的最小单元。而在实时操作系统中,多数情况下不区分线程与进程进行独立管理,为了减小系统资源占用以及提高实时性,往往将线程与进程合二为一,采用任务(一个个独立且无法返回的函数)作为应用程序的最小调度运行单元,使用TCB(任务控制块)对任务进行管理,FreeRTOS即是如此。

  • 结论:像FreeRTOS这样的轻量级OS,其中的任务与线程的含义一致,即在FreeRTOS上跑的整个程序即为一个进程,该进程中又包含着多个线程(任务),这些线程有些是系统自动创建的,有些为用户手动创建。

你可能感兴趣的:(windows,linux)