当前位置:首页>Linux>linux内核源码中并发与竞争原理分析

linux内核源码中并发与竞争原理分析

  • 2026-10-11 08:02:35
linux内核源码中并发与竞争原理分析
一、概念
  • 执行单元
    在操作系统中可以执行的代码有内核态线程、中断处理函数,这些代码我们称为操作系统中的可执行单元。
  • 共享资源
    可以被多个执行单元访问的资源称为共享资源
  • 临界资源
    临界资源是一次仅允许一个执行单元使用的共享资源。
  • 临界区
    每个执行单元访问临界资源的那段代码称为临界区(criticalsection)。
  • SMP
    SMP是一种紧耦合、共享存储的系统模型,它的特点是多个CPU使用共同的系统总线,因此可访问共同的外设和储存器。
二、什么是并发与竞态
并发(Concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对共享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(RaceConditions)
  • 并发:多个执行单元同时进行或多个执行单元微观串行执行,宏观并行执行
  • 竞态:并发的执行单元对共享资源(硬件资源和软件上的全局变量)的访问而导致的竞争状态竞态形成的三个条件:
    • 必须有多个执行单元:中断(软中断、硬中断)、内核线程
    • 必须有共享资源: 全局变量
    • 必须同时访问:资源的同时访问
三、并发产生的场景
3.1、多CPU之间的并发
CPU_A 运行的程序访问临界资源和CPU_B运行的程序访问是同一个临界资源,产生竞态。
3.2、单CPU之间进程间的并发
由于现在的操作系统都是多任务的,即多进程,一个进程在运行的时候,不是一直占用CPU资源直到它结束,而是每个进程都有一个时间片,如果时间片用完了操作系统就调度另外一个进程执行。进程A和进程B访问是同一个临界资源,此时产生竞态
3.3、单CPU上进程和中断之间的并发
在一个进程执行的过程中,如果硬件上产生了中断请求,此时操作系统必须放弃进程的执行,去执行中断处理函数,进行中断处理。
此时进程访问的临界资源和中断访问的临界资源是同一个资源产生竞态。
3.4、单CPU上中断之间的并发
在Linux系统中中断上半部函数执行的时候是屏蔽中断的,下半部函数执行的时候中断是使能的,如果在下半部函数执行的过程中,有一个硬件中断到来,打断了下半部的函数,恰好这个中断访问的临界资源和下半部访问的是同个临界资源,这样就产生了竞态。
3.5、多CPU中断与中断之间
CPU A产生了中断执行的中断处理函数与CPU_B产生了中断执行的中断处理函数,访问的临界资源是同一个临界资源,这样就产生了竞态。
四、并发与竞争
主要归结为三类:
  1. 进程与进程之间:单核上的抢占,多核上的SMP1.
  2. 进程与中断之间:中断又包含了上半部与下半部,中断总是能打断进程的执行流
  3. 中断与中断之间:外设的中断可以路由到不同的CPU上,它们之间也可能带来竞态

最新文章

随机文章