信号量(一)

信号量机制是一种卓有成效的进程同步工具。

1.整形信号量

仅有两个标准的院子操作wait(S)和signal(S)

wait(S){
    while (S<=0);
    S--;
}
signal(S){
    S++;
}

2.记录型信号量

typdef struct{
    int value;
    struct process_control_block *list;
}semaphore;

相应的wait(S)和Signal(S)可描述如下

wait(semaphore * S){
    S->value--;
    if(S->value<0)block(S->list);
}
signal(S){
    S->value++;
    if(S->value<=0)wakeup(S->list);
}

如果S->value的初值为1,则表示只允许一个进程访问临街资源,此时的信号量转换为互斥信号量,用于进程互斥。

AND信号量

应用场景:当进程需要多个共享资源。
原理:将进程所需要的所有资源一次性的全部分配给进程,待进程使用完成之后再一起释放。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ** 本文摘自汤小丹主编《计算机操作系统》(第三版)2.3 进程同步 ** 在 OS 中引入进程后,虽然提高了资源...
    刘帅_阅读 3,128评论 0 0
  • 一、 【例3-1-4】在操作系统中,要对并发进程进行同步的原因是 。 A. 进程必须在有限的时间内完成 B. 进程...
    ZoeyeoZ阅读 5,038评论 0 9
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,164评论 0 23
  • 马润升阅读 193评论 0 0
  • 阿里菜鸟 一面 自我介绍(处女面,跑上楼时候已经气喘吁吁,甚至都不知道如何自我介绍,介绍了一分钟我尬场了) RxJ...
    野梦M阅读 1,106评论 0 1