Fork me on GitHub

Linux concurrency - 1.简介

kernel本身就是个multithread concurrent的系统。在没有适当条件保证下,存取共享资源很容易发生race condition.共享资源包括周边IO及共享内存中的数据结构等。可通过适当的synchronization机制提供critical section来保证资源的存取。个人认为kernel里面与concurrency相关的机制大致分为以下几类:

1.architecture support

  • barrier
  • atomic opreation

2.busy-waiting lock:CPU loop等待直到取得lock.critical section中不允许睡眠。通常用来SMP下保证资料数据结构。有以下几种:

  • atomic operation
  • spinlock
  • reader/writer spinlock
  • seqlock

3.lock-free synchronization:通过区分reader与writer的角色以及deffered destruciton来减少lock使用

  • rcu
  • kfifo
  • percpu data

4.blocking synchronization:如果没有拿到lock会进入睡眠。通常用来保证较大的critical section与存取IO相关的机制。可分为以下几种:

  • semaphore
  • reader/writer semaphore
  • mutex
  • completion
posted @ 2022-01-23 16:49  BabyMelvin  阅读(89)  评论(0编辑  收藏  举报