当前位置: 首页 > news >正文

哈工大李治军《操作系统》进程同步与信号量笔记

1.什么是信号量?

定义:记录一些信息(即量),并根据这个信息决定睡眠还是唤醒(即信号)。睡眠和唤醒只是一个信号(相当于0和1)。

2.问题:一种资源的数量是8,这个资源对应的信号量的当前值是2,说明:(B)

A. 有2个进程等待这个资源。                //值为-2选A

B. 有2个资源可以使用。                

3.信号量:1965年,由荷兰学者Dijkstra提出的一种特殊整型变量,量用来记录,信号用来sleep和wake。

(重要)P在荷兰语里是test(检测是否有可用资源),V是increase(增加内容)。

struct semaphore
{int value;    //记录资源个数PCB *queue;    //记录等待在该信号量上的进程,使用队列存储
}P(semaphore s)    //消费资源(对应生产者生产数据占用内存)
{s.value--;if(s.value < 0) sleep(s.queue);
}V(semaphore s)    //产生资源(对应消费者从内存中取数据)
{s.value++;if(s.value <= 0) wake(s.queue);    //说明上一步value<0,存在进程等待资源,所以唤醒一个
}

4.(重点)用信号量解生产者——消费者问题

int fd = open("buffer.txt");
write(fd, 0, sizeof(int));    //写in    用文件定义共享缓冲区
write(fd, 0, sizeof(int));    //写outsemaphore full = 0;    //文件里的内容
semaphore empty = BUFFER_SIZE;    //资源的数量
semaphore mutex = 1;    //互斥(原子操作)Producer(item)
{P(empty);    //检测是否有可用资源并减1P(mutex);读入in;将item写入到in的位置上;V(mutex);V(full);    //让full的值增加
}Consumer()
{P(full);    //检测是否有内容P(mutex);读入out;从文件中的out位置读出到item;打印item;V(mutex);V(empty);    //可用资源+1
}

http://www.xdnf.cn/news/134983.html

相关文章:

  • iOS/Flutter混合开发之PlatformView配置与使用
  • 第12章 微调生成模型
  • 实时交互式AIGC系统开发:打造多模态数字人全栈解决方案
  • 41.缺失的第一个正数(java)
  • jQuery AJAX、Axios与Fetch
  • YOLO12架构优化——引入多维协作注意力机制(MCAM)抑制背景干扰,强化多尺度与小目标检测性能
  • 深入理解指针(4)
  • Centos7.2安装Xmap
  • 【git#4】分支管理 -- 知识补充
  • 【AI落地应用实战】借助 Amazon Q 实现内容分发网络(CDN)CDK 构建的全流程实践
  • 图像预处理-图像亮度变换
  • U8G2在PC端模拟(C语言版本)
  • 【神经网络与深度学习】训练集与验证集的功能解析与差异探究
  • 【器件专题1——IGBT第1讲】IGBT:电力电子领域的 “万能开关”,如何撑起新能源时代?
  • deepseek-r1-671B满血版,全栈式智能创作平台 - 多模态大模型赋能未来创作
  • 云服务器centos 安装hadoop集群
  • pcd2pgm的launch文件实现
  • 使用yolo用python检测人脸
  • 第三方库与工具:响应式编程RxJava与Flow原理剖析
  • Video-LLaVA
  • Milvus(7):Schema、主字段和自动识别
  • 新!在 podman-machine-default 中安装 CUDA、cuDNN、Anaconda、PyTorch 等并验证安装
  • html中margin的用法
  • express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别
  • 汽车零配件供应商如何通过EDI与主机厂生产采购流程结合
  • 单机无穷大系统暂态稳定性仿真Matlab模型
  • 全球玻璃纸市场深度洞察:环保浪潮下的材料革命与产业重构(2025-2031)
  • C++ 类及函数原型详解
  • HTML word属性
  • 巴西kwai短视频推广旅游广告获客营销策略