操作系统原理读书笔记之进程同步

进程同步(synchronization):指系统中多个进程中发生的事件存在某种时序关系,需要相互合作,共同完成一项任务。形象的说。一个进程运行到某一点时,要求另一伙伴进程为它提供消息,在未获得消息之前,该进程进入阻塞态,获得消息后被唤醒进入就绪态。


进程同步机制


一、信号量及PV操作


信号量是一个特殊变量,用于进程间传递信息,通常是一个整数值,由 Dijkstra提出,最初用于解决互斥问题,信号量只有两个(0,1),称作二元信号量;
后来推广到多值,用于解决同步问题。注意信号量是一个静态的值,多个进程可以共享这个内存单元
这里我们举例定义一个信号量的结构体(也可以定义为一个单一整型)定义如下:
struct semaphore{
    int count;
    queueType queue;
}s;
其中count用于传递信息,进程可以挂到队列queue上

对信号量可以实施的操作只有三个:1、初始化;2、P操作;3、V操作(P、V分别是荷兰语proberen(test)和verhogen(increment))

P操作:
P(s){
    s.count--;
    if(s.count < 0){
        //将调用P操作的进程状态置为阻塞态,并插入相应等待队列s.queue末尾;
        //重新调度
    }
}

V操作:
V(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值