计算机基础-操作系统提升篇

一,线程,进程同步

为什么需要同步


计算机基础-操作系统提升篇_第1张图片
微信截图_20190818173000.png

1.线程同步

以下都是对资源加锁

  • 互斥量(互斥锁)
    逻辑开始加个锁,结束再解锁,其他进程,线程不可以中途执行
    操作系统互斥量API:pthread_mutex_t
    缺点:性能损耗大,耗时增加
  • 自旋锁
    同互斥量原理相似,不同点是不会让出CPU,不适合单核CPU,会造成等待
    优势,避免了进程,线程切换,上下文切换的开销,提高速度

这里没有听懂,再去查查资料

  • 读写锁
    因为存在多读少写类型的资源,为提升效率,读取操作不上锁。
    读写锁是一种自旋锁,只对写操作之间,读写之间,是互斥的。
  • 条件变量
    允许线程睡眠,知道满足条件,唤醒线程;来处理0和满载两个极端值的情况。

2.进程同步

  • 共享内存
    正常情况下,每个进程有自己的进程空间,通过自己的页表管理,指向物理内存的地址。
    多个进程共用物理内存,又相互独立。
    共享内存就是两个进程可以使用同一块物理内存


    计算机基础-操作系统提升篇_第2张图片
    捕获.PNG

    计算机基础-操作系统提升篇_第3张图片
    捕获.PNG
  • Unix域套接字(进程通信方法)
    类似网络变成的套接字(socket)

3.使用fork系统调用 创建进程

fork函数无参数,创建的子进程会拥有和父进程一样的所有状态
调用一次,返回两次,为子进程的id和0(0是继承自父进程的fork函数返回的空,id是父进程的返回)

你可能感兴趣的:(计算机基础-操作系统提升篇)