linux进程通信-信号量使用
一、相关知识
信号量:一个整数;
大于或等于0时代表可供并发进程使用的资源实体数;
小于0时代表正在等待使用临界区的进程数;
用于互斥的信号量初始值应大于0;
只能通过P、V原语操作而改变;
信号量元素组成:
1、表示信号量元素的值;
2、最后操作信号量元素的进程ID
3、等待信号量元素值+1的进程数;
4、等待信号量元素值为0的进程数;
二、主要
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
1.1 创建信号量
int semget(
key_t key, //标识信号量的关键字,有三种方法:1、使用IPC——PRIVATE让系统产生,
// 2、挑选一个随机数,3、使用ftok从文件路径名中产生
int nSemes, //信号量集中元素个数
int flag //IPC_CREAT;IPC_EXCL 只有在信号量集不存在时创建
)
成功:返回信号量句柄
失败:返回-1
ftok函数根据文件路径名产生一个关键字 1.2 使用
key_t ftok(const char *pathname,int proj_id);
路径名称必须有相应权限
1.3 控制信号量
int semctl(
int semid, //信号量集的句柄
int semnum, //信号量集的元素数
int cmd, //命令
/*union senum arg */... //
)
成功:返回相应的值
失败:返回-1
命令详细说明:
cmd: IPC_RMID 删除一个信号量
IPC_EXCL 只有在信号量集不存在时创建
IPC_SET 设置信号量的许可权
SETVAL 设置指定信号量的元素的值为 agc.val
GETVAL 获得一个指定信号量的值
GETPID 获得最后操纵此元素的最后进程ID
GETNCNT 获得等待元素变为1的进程数
GETZCNT 获得等待元素变为0的进程数
union senum 定义如下:
union senum{
int val;
struct semid_ds *buf;
unsigned short * array;
}agc;
其中 semid_ds 定义如下:
struct semid_ds{
struct ipc_pem sem_pem; //operation pemission struct
time_t sem_otime; //last semop()time
time_t sem_ctime; //last time changed by semctl()
struct sem *sembase; //ptr to first semaphore in array
struct sem_queue *sem_pending; //pending operations
struct sem_queue *sem_pending_last; //last pending operations
struct sem_undo *undo; //undo requests on this arrary
unsigned short int sem_nsems; //number of semaphores in set
};
1.4 对信号量 +1 或 -1 或测试是否为0
int semop(
int semid,
struct sembuf *sops, //指向元素操作数组
unsigned short nsops //数组中元素操作的个数
)
结构 sembuf 定义
sembuf{
short int sem_num; //semaphore number
short int sem_op; //semaphore operaion
short int sem_flg //operation flag
};
三、例子:
2.1 服务器
#include
#include
#define SEGSIZE 1024
#define READTIME 1
union semun {
int val;
struct semid_ds *buf;
unsigned short *array; } arg;
//生成信号量
int sem_creat(key_t key) {
union semun sem;
int semid;
sem.val = 0;
semid = semget(key,1,IPC_CREAT|0666);
if (-1 == semid){
printf("create semaphore error\n");
exit(-1);
}
semctl(semid,0,SETVAL,sem);
return semid;
}
//删除信号量
void del_sem(int semid) {
union semun sem;
sem.val = 0;
semctl(semid,0,IPC_RMID,sem); }
//p
int p(int semid)
{
struct sembuf sops={0,+1,IPC_NOWAIT};
return (semop(semid,&sops,1)); }
//v
int v(int semid)
{
struct sembuf sops={0,-1,IPC_NOWAIT};
return (semop(semid,&sops,1)); }
int main()
{
key_t key;
int shmid,semid;
char *shm;
char msg[7] = "-data-";
char i;
struct semid_ds buf;
key = ftok("/",0);
shmid = shmget(key,SEGSIZE,IPC_CREAT|0604);
if (-1 == shmid){
printf(" create shared memory error\n");
return -1;
}
shm = (char *)shmat(shmid,0,0);
if (-1 == (int)shm){
printf(" attach shared memory error\n");
return -1;
}
semid = sem_creat(key);
for (i = 0;i <= 3;i++){
sleep(1);
p(semid);
sleep(READTIME);
msg[5] = '0' + i;
memcpy(shm,msg,sizeof(msg));
sleep(58);
v(semid);
}
shmdt(shm);
shmctl(shmid,IPC_RMID,&buf);
del_sem(semid);
return 0;
//gcc -o shm shm.c -g }
2.2 客户端
#include #include
#include #define SEGSIZE 1024 #define READTIME 1
union semun {
int val;
struct semid_ds *buf;
unsigned short *array; } arg;
// 打印程序执行时间
void out_time(void) {
static long start = 0;
time_t tm;
if (0 == start){
tm = time(NULL);
start = (long)tm;
printf(" now start ...\n");
}
printf(" second: %ld \n",(long)(time(NULL)) - start);
}
//创建信号量
int new_sem(key_t key) {
union semun sem;
int semid;
sem.val = 0;
semid = semget(key,0,0);
if (-1 == semid){
printf("create semaphore error\n");
exit(-1);
}
return semid;
}
//等待信号量变成0
void wait_v(int semid) {
struct sembuf sops={0,0,0};
semop(semid,&sops,1); }
int main(void)
{
key_t key;
int shmid,semid;
char *shm;
char msg[100];
char i;
key = ftok("/",0);
shmid = shmget(key,SEGSIZE,0);
if(-1 == shmid){
printf(" create shared memory error\n");
return -1;
}
shm = (char *)shmat(shmid,0,0);
if (-1 == (int)shm){
printf(" attach shared memory error\n");
return -1;
}
semid = new_sem(key);
for (i = 0;i < 3;i ++){
sleep(2);
wait_v(semid);
printf("Message geted is: %s \n",shm + 1);
out_time();
}
shmdt(shm);
return 0;
// gcc -o shmc shmC.c -g }
亲爱的朋友,上文已完,为感谢你的阅读,特加送另一篇范文, 如果下文你不需要,可以下载后编辑删除,谢谢,
矿井水灾事故专项应急演练方案
1 应急演练目的、意义和目标
1.1应急演练目的
? 评估我矿水灾事故的应急准备状态,发现并修改我矿水灾事故专项应急预案和执行程序中存在的缺陷和不足;
? 评估我矿在发生水灾事故时的应急能力,识别处理水灾事故的资源需求,澄清相关单位和人员的应急职责,改善水灾事故应急救援中的组织协调问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
;
? 检验应急响应人员对水灾事故应急预案及执行程序的了解程度和实际操作技能;同时,通过调整演练难度,进一步培训和提高应急响应人员的业务素质和能力;
? 提高全员安全意识。
1.2应急演练意义:
为了进一步增强煤矿应对水灾事故的快速反应能力、应急处理能力和协调作战能力,提高米田煤矿的应急救援水平,切实保障人民生命和公司财产的安全,米田煤矿特组织本次应急救援演练。
1.3应急演练目标
1.3.1 报警
当发生水灾事故时,由现场施工单位当班第一责任者采用电话报警的方式进行报警。
1.3.2接警 处警
调度室接到事故报警后,调度室调度员立即向当天矿值班长和应急救援领导小组组长(矿长)汇报,同时
通知
关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知
水灾应急演练指挥部有关人员到调度室待命,根据指挥部
意见
文理分科指导河道管理范围浙江建筑工程概算定额教材专家评审意见党员教师互相批评意见
,启动水灾应急救援预案。
1.3.3 应急指挥
? 基层单位:
一旦发生矿井水灾事故,现场施工单位立即成立水灾事故现场处置小组,掘进队当班第一责任者为小组长。
? 矿级应急指挥:
矿调度室接到事故报警后,矿成立矿井水灾事故应急演练小组,指挥部设在矿调度室。
1.3.4 应急行动
? 基层单位应急行动
现场组织人员按照避灾路线撤离至安全地点。
模拟底板涌水的疏、排;
? 矿级应急行动
矿调度室通知相关泵房,由开泵人员立即开动工作、备用水泵开始排水;同时检查检修水泵的完好状况,保证检修水泵能够随时投入运转。
2 应急演练原则
? 安全第一、以人为本的原则。
? 统一领导、分级负责的原则。
1
? 反应迅速、措施果断的原则。
? 部门配合、分工协作的原则。
3应急演练类型和时间地点
3.1应急演练类型
本次演练演练为实战检验性演练
3.2 应急演练时间
本次演练时间2012年3月10日八点班9:00,10:35。 如果演练当日出现特殊情况,应急预案演练可顺延或提前。 3.3 应急演练地点
? 110401运输巷工作面
? 矿调度室
4 应急演练组织机构
4.1应急演练领导小组
组 长: 陈 仕
副组长: 董永海
成 员:孔家稳 何兴八 张蛮 敖成卫 胡荣兴
黄志党 李登学 牛建毕 封志平 职责:负责水灾事故应急演练活动全过程的组织领导,审批决定
演练的重大事项。
4.2策划部
?总策划:彭家福
职责:负责演练准备、演练实施、演练总结的组织实施。
2
?文案组
组长:孔家稳
?协调组
组长:陈 仕
?控制组
组长:董永海
4.3 评估组
共设四个评估组,每组2人。
(评估组建议由安监队人员组成,每组2人,1人评估,1人记录)
第一组:
位置:110401运输巷工作面
记录和评估水灾演练现场报警、现场处置小组成立及现场应急处置情况
第二组:
位置:调度室记录和评估主井采区工作。记录和评估调度室接警、处警、矿井水灾应急演练小组成立、应急指挥部人员到位、应急指挥、协调情况。
5 演练情景设计
5.1应急演练概述:
110401运输巷工作面,目前已施工28m,煤层平均厚度2.62米, 110401运输巷工作面安设有一部能直通调度室的电话。
2013年3月10日下午3:00时,安全矿长组织召开矿井水灾应
3
急演练预备会议,进一步确认各演练情景准备情况,确认准备完毕后,安全副矿长要求各参演单位及装备务必于2012年3月10日上午8:30分准时到位,2013年3月10日上午9:00时准时开始演练。
2013年3月10日上午9:00时,该巷工作面后138m,发生掘进工作面滞后突水,突水水量60m?/h。
2013年3月10日9:00,演练总指挥宣布应急演练开始。
5.2 演练情景1 报警、现场处置小组成立及现场处置
地点:110401运输巷工作面
总指挥宣布演练开始后,调度室用电话通知110401运输巷工作面评估组人员,评估人员通知当班第一责任者演练开始。
5.2.1 水灾事故发生 撤人
9:05分,当班第一责任者在掌子头后130m处发现巷道顶板地鼓,随后发生巷道顶板突水,当班第一责任者喊“顶板出水了,人员赶快撤离”,并且立即通知班长,班长带领全部人员撤离到运输石门盘口,当班第一责任者最后撤离,由当班第一责任者在运输石门盘口清点人数。
5.2.2报警
当班第一责任者清点人数后,当班第一责任者立即向调度室汇报模拟水灾的具体情况。
汇报内容为:顶板突水位置、顶板突水大致水量、顶板突水人员撤出情况、支援需要以及现场处置方法。
5.2.3现场处置小组成立
当班第一责任者报警后,立即着手成立水灾事故现场处置小组
4
组 长:当班第一责任者
副组长:当班班长
成 员:当班全体人员
5.2.4水灾事故现场处置
110401运输巷顶板突发性涌水,突水点不易堵,应采取疏导措施,现场人员应尽量使涌水沿水沟流入水仓,同时清理水沟及两侧的浮煤、杂物,减少进入水仓的杂物。
5.3 演练情景2 调度室接警、处警、矿井水灾应急演练小组成立、应急指挥、协调情况。
地点:调度室
5.3.1 接警、处警
9时10分,调度室接到现场报警后,迅速向值班矿长和应急救援领导小组组长(矿长)汇报,同时通知水灾应急演练指挥部有关人员到调度室待命,根据指挥部意见,启动水灾应急演练方案。
5.3.2 矿井水灾应急演练小组成立
9时20分,矿井应急演练领导小组成员接到通知后到达调度室,矿井应急演练小组随即成立。
5.3.3 应急指挥
调度室电话通知各井下人员撤离。
5.6 应急结束:
? 10时00分,中央水仓向救援小组汇报:中央水仓工作、备用水泵工作正常。
5
? 10时20分,1191机巷汇报:排水路线(自流)沿途浮渣、浮煤、杂物已清理干净,机巷底板突水沿水沟流入井底水仓。
? 调度室接到各处水灾应急演练情况汇报,立即报告应急演练小组,应急救援小组经过认真研究分析,认为本次水灾应急演练目标已全部实现,宣布水灾应急演练全部结束,恢复正常状态。
6 演练工作准备
6.1分析演练需求
? 人力资源需求
掘进队20人(其中一名跟班干部,三名班长,井下11名职工,井上5名职工),机电队2人,安检队10人,调度室3人、机电队中央水仓水泵司机2人。
? 场地资源需求
110401运输巷
调度室
? 物资器材需求
A、110401运输巷掌子头后5m,供水管路安装三通一个,演练开始后,打开阀门作为模仿水灾水源;
B、 铁锨、镐各5把(1191机巷演练挖水沟、请浮渣用)
? 文件资料准备
采掘工程平面图1套
6.2确定演练范围
本次应急演练为矿一级应急演练,包括:
6
? 1191机巷水灾事故现场,掘进队处理水灾事故的应急演练;
? 调度、指挥系统处理水灾事故应急演练;
7 演练实施
7.1演练过程控制
? 演练启动方式
2013年3月10日9:00,演练总指挥宣布应急演练开始,调度室电话通知通知110401运输巷演练开始,掘进队接到通知后,开动预先准备的演练水源,演练正式启动。
7.2 演练实施的步骤
? 演练启动;
? 掘进队通知调度室:110401运输巷发生老窑突水位置、突水大致水量、老窑突水人员撤出情况、支援需要以及现场处置方法;
? 掘进队突水现场疏、堵、排措施的落实;
? 调度室的应急响应 调度、指挥系统成立;
? 应急演练小组根据各演练场地汇报决定演练是否结束
7.3、应急演练记录的要求
演练记录由演练评估组人员填写,演练评估组人员可根据演练具体情况增加内容,演练记录要求做到客观真实,演练记录由调度室负责保存。
应急演练记录表格如下:
7
应 急 演 练 记 录 (场景1)
演练时间 2013年3月10日
地 点 110401机巷
参演单位 掘进队
水灾事故发生 撤人:
1、当班第一责任者发现老窑突水,立即通知班长撤人,通知的时间;
2、班长带领全部人员撤离到回风石门,撤人的速度及时间;
3、当班第一责任在人员全部撤出后,最后撤离,当班第一责任者撤至运输石门盘
口的时间;
4、由当班第一责任者在运输石门盘口清点人数,清点人数后,记录撤人所用的时
间及人员撤出情况;
报 警:
当班第一责任制在人员全部撤出后,立即电话报警,记录报警的时间及内容:
1、老窑突水位置;
2、老窑突水大致水量;
3、老窑突水人员撤出情况;
4、支援需要以及现场处置方法。
8
现场处置小组成立:
当班第一责任者报警后,负责成立水灾事故现场处置小组:
组 长:当班第一责任者
副组长:当班班长
成 员:当班全体人员
水灾事故现场处置
现场处置小组分两队,第一队由当班第一责任者带领,第二队由当班班长带领。
1、 第一队负责从老窑突水位置至回风上山段清理。
2 、第二队负责从回风石门交叉口至水仓入水口段清理。
记录现场处置小组的分队情况,水沟的清理情况及水灾演练涌水流入水仓是
否夹有杂物;
记录人签名
9
应 急 演 练 记 录 (场景2)
演练时间 2013年3月10日
地 点 调度室
参演单位 调度室
接警、处警
1、调度室调度员接到现场报警后,向值班矿长汇报事故情况;
2、调度员向矿长汇报事故情况;
3、调度员通知应急演练指挥部人员到调度室待命;
4、水灾应急演练指挥部人员到位情况;
记录调度员接到事故报警后,通知水灾应急演练指挥部人员的时间,所通知
人员到达调度室的时间
矿井水灾应急演练小组成立
记录水灾应急演练小组成立的时间,演练小组成立后,分析判断灾情,此次演练灾情不足以水淹矿井,矿井排水系统有能力排水,决定立即中央水仓工作及备用水泵全力排水。
10
应急指挥:
水灾应急演练小组分析判断灾情后,立即通知调度员,调度员立即电话通知中央水仓开动工作及备用水泵全力排水;记录调度员通知两个水仓的时间,两个水仓工作人员接到调度室电话的时间。
应急结束:
? 记录中央水仓向救援小组汇报:中央水仓工作、备用水泵工作正常,检修水泵是否能够随时更换。
?记录1191机巷汇报:排水路线(自流)沿途浮渣、浮煤、杂物已清理干净,机巷老窑突水沿水沟流入井底水仓。
?? 记录调度室接到各处汇报,调度员将情况汇报应急演练小组,应急演练小组经过综合分析,确定应急演练目的已到达,具备应急演练结束的条件应急演练小组长宣布应急演练结束,现场矿领导安排参演队伍回到本职岗位,各工作地点恢复到正常状态。
记录人签名
11
7.4 应急演练结束与终止
7.4.1应急演练结束的条件
110401运输巷,演练涌水。
8 应急演练评估
8.1应急演练评估方法
应急演练采用表格评估法,评估人员利用提前设计评估表,进行跟踪评定。
演练评估报告有策划部文案组编写;
演练评估报告的主要内容一般包括演练执行情况、预案的合理性与可操作性、应急指挥人员的指挥协调能力、参演人员的处置能力、演练目标的实现情况、对完善预案的建议等。
8.2应急演练评估
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
水灾应急演练评估表
演练评价分数 序演 练 评价标准 得分 号 目 标 好 中 差
当班第一责任者发现老窑突水,立即通知班长场水灾2 1.5 1 景事故撤人。
12
1 发生 班长带领全部人员撤离到轨道石门盘口,撤人
撤 人 3 2 1
的速度及时间。
当班第一责任在人员全部撤出后,最后撤离,
3 2 1
当班第一责任者撤至轨道石门盘口的时间。
由当班第一责任者在轨道石门盘口清点人数,
清点人数后,记录撤人所用的时间及人员撤出2 1.5 1
情况。
报警的及时性 2.0 1.0 0.5
底板突水位置 1.0 0.8 0.5 报
报 警 底板突水大致水量; 1.0 0.8 0.5 警
内底板突水人员撤出情况 1.0 0.8 0.5
容 支援需要以及现场处置方法 1.0 0.8 0.5
现场现场处置小组成立的及时性 2.0 1.5 1 处置
小组在灾害面前,现场处置小组应急状态(好、坏、
3.0 2 1.5 成 立 差)
现场处置小组处理灾情的分工 3 2.5 1.5 水灾
现场处置小组处理灾情的积极性 2 1.5 1 事故
现场 水沟清理情况 3 2.5 1.5 处 置
演练涌水进入水仓前是否有杂物 2 1.5 1
调度室调度员接到现场报警后,向值班矿长汇
3 2.5 2
报事故情况; 接警、
处警 调度员向矿长汇报事故情况; 2 1.5 1.0
场 调度员通知应急演练指挥部人员到调度室待命 3 2.5 1.5 景
2 水灾应急演练指挥部人员到位情况; 2 1.5 1.0
矿井
水灾应急演练小组成立的及时性 3 2.0 1.5 水灾
13
应急
演练
水灾应急演练小组分析判断灾情的正确性 3 2.0 1.5 小组
成 立
110401机巷汇报:排水路线(自流)沿途浮渣、
浮煤、杂物已清理干净,机巷底板突水沿水沟2 1.5 1.0
流入主井水仓。
调度室接到各处汇报,调度员将情况汇报应急
演练小组,应急演练小组经过综合分析,确定
3 1.5 1.0
应急演练目的已到达,具备应急演练结束的条
件,应急演练小组长宣布应急演练结束。
合计
9 演练安全注意事项
为确保演练参与人员的安全,应急演练必须遵守以下规定:
1、演习过程中所有消息或沟通必须以“这是一次水灾事故应急演练”作为开头或结束语,以便保证演习人员和可能受其影响的人员都知道这是一次模拟紧急事件;
2、参与演练的所有人员必须遵守有关规章制度和安全技术措施,严禁违章作业。
3、各参演队伍和人员在演练过程中必须听从现场领导的统一指挥,在指定的安全处待命,并不得阻断人行道。
4、现场参演人员不得随意开动各种机电设备。
5、当出现真实的紧急情况时,现场人员要在现场领导的统一安排下迅速回到本职岗位。
14