Lab 01

5/28/2022 OS

# Lab 01

  • unsafe concurrency可以用automic operation来解决,但是代码过长又不能保证,所以用lock

  • 自旋锁可以用在:使用关中断来保证不会发声死锁,因为时间很短

  • 读写自旋锁:分为读锁和写锁

    • 读可以多个一起读,但是只有在没有写的时候

    • 写的时候其他进程都被阻塞

  • 信号量机制:表示一个资源的剩余个数,等待获取信号量的进程会进入等待队列,但是不会像自旋锁一样占用cpu,因为当有信号量的时候,它会被被动唤醒

  • mutex是semaphores=1的情况(互斥)

  • 程序top half:把不耗时部分放到top half,不可中断

  • 程序bottom half:可被中断

  • sequential locks:引入版本号,write的时候会+1,read会一直重试直到开始读的sequential number=结束读的sequential number。适用于有很多reader,没有很多writer的情况

  • Pre-emption Disabling: pre-emptive抢占式的,可以通过设置关键区不可抢占来实现同步img

  • read barrier,write barrier,阻止指令重排序的

    • 加之前:img

    • 加之后:imgimg

  • RCU:读进程不会被阻塞

    • 多用于传递的不是值而是指针的情况:Only works on dynamically allocated data that is referenced via pointers
  • summaryimg

Last Updated: 11/19/2024, 1:54:38 PM