C语言实现进程同步与互斥

实验原理

(1)同步和互斥(生产者消费者问题)
同步是一种更为复杂的互斥,而互斥是一种特殊的同步。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。

同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源
(2)信号量
在系统中,给予每一个进程一个信号量,代表每个进程目前的状态,未得到控制权的进程会在特定地方被强迫停下来,等待可以继续进行的信号到来。信号量又存在着两种操作,分别为V操作与P操作,V操作会增加信号量 S的数值,P操作会减少它。
(3)锁
在多线程编程中,操作系统引入了锁机制。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。
加锁过程用如下伪码表示:
1、read lock;
2、判断lock状态;(0表示资源可用,1表示资源已被占用)
3、如果已经加锁,失败返回;
4、把锁状态设置为上锁;
5、返回成功。

实验内容和方法

1.实验一(进程同步):
1)实验内容
分别创建两个工程,用来scanf和printf,从键盘输入,在屏幕上显示输入了多少个数,以此来实现进程同步。
2)代码以及代码分析

Scanf.c

#include<stdio.h>
#include<windows.h>
int main(){HANDLE h;int a=0;h=CreateSemaphore(NULL,0,10,"scanfcount");while(1){scanf("%d",&a);printf("%d",a);ReleaseSemaphore(h,1,NULL);}
}

Printf.c

#include<stdio.h>
#include<windows.h>
int main(){HANDLE h;int count=0;h=CreateSemaphore(NULL,0,10,"scanfcount");while(1){WaitForSingleObject(h,INFINITE);count++;printf("%d",count);}
}

3)实验结果截图

2.实验二(进程互斥):
1)实验内容
本次实验中,模拟两个线程实现信号量的争夺(无序性)。通过加锁实现在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。
2)代码及代码分析

MultiThread.c

#include<stdio.h>
#include<windows.h>
HANDLE m_hMutex;
//线程1
DWORD WINAPI ThreadFunc1(LPVOID lpParam)
{int i;for(i=0;i<5;i++){WaitForSingleObject(m_hMutex,INFINITE);//进入临界区域printf("Thread1 step1 in the critical section\n");printf("Thread1 step2 in the critical section\n");ReleaseMutex(m_hMutex);//释放}return 0;
}
//线程2
DWORD WINAPI ThreadFunc2(LPVOID lpParam)
{int i;for(i=0;i<5;i++){WaitForSingleObject(m_hMutex,INFINITE);printf("Thread2 step1 int the critical section\n");printf("Thread2 step2 inthe critical section\n");ReleaseMutex(m_hMutex);}return 0;
}
void main()
{char c;m_hMutex=CreateMutex(NULL,FALSE,NULL);CreateThread(NULL, 0, ThreadFunc1, 0, 0, 0);CreateThread(NULL, 0, ThreadFunc2, 0, 0, 0);scanf("%c\n",&c);
}

3)实验结果截图

C语言实现进程同步与互斥相关推荐

  1. 操作系统c语言实现进程同步与互斥代码

    使用DEV C++打开: 这是进程同步与互斥代码,第一次自己写的,写得不好多多支持 #include<stdio.h> #include<windows.h> #include ...

  2. 进程同步与互斥c语言实验,操作系统进程同步与互斥实验报告.doc

    PAGE PAGE 1 学 生 实 验 报 告 姓名: 年级专业班级 学号 成绩 课程名称 操作系统 实验名称 实验1 进程的同步与互斥 实验类型 验证 设计 综合 创新 [实验目的.要求] 1.通过 ...

  3. 计算机操作系统专题一:多道环境下进程同步与互斥制约关系的学习

    1. 问题描述 设自行车生产线上有一只箱子,其中有N个位置(N≥3),每个位置可存放一个车架或一个车轮,又设有三名工人,其活动分别为: 2. 问题分析(包括涉及的知识点.制约关系分析.问题的解决思路等 ...

  4. 操作系统实验报告15:进程同步与互斥线程池

    操作系统实验报告15 实验内容 实验内容:进程同步. 内容1:编译运行课件 Lecture18 例程代码. Algorithms 18-1 ~ 18-9. 内容2:在 Lab Week 13 的基础上 ...

  5. 操作系统:第二章 进程管理3 - 进程同步与互斥

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  6. 计算机操做系统(十二):进程同步和互斥

    计算机操做系统(十二):进程同步和互斥 来源王道考研视频: https://www.bilibili.com/video/BV1YE411D7nH?p=18 基本概念 异步性:各并发执行的进程以各自独 ...

  7. 【操作系统基础】进程管理(三)进程同步与互斥

    一.进程同步.互斥的基本概念 1. 什么是进程同步 进程具有异步性的特征.异步性是指各并发执行的进程以各自独立的.不可预知的速度向前推进.举一个线程通信的例子,管道通信: 读进程和写进程并发运行,由于 ...

  8. HTTP协议漫谈 C#实现图(Graph) C#实现二叉查找树 浅谈进程同步和互斥的概念 C#实现平衡多路查找树(B树)...

    HTTP协议漫谈 简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解. ...

  9. 2.3.1 进程同步 进程互斥

    目录 思维导图 进程同步 进程互斥 思维导图 进程同步 注意: 进程同步是为了解决进程异步的. 不要以为同步是同时发生的意思. 进程互斥

最新文章

  1. jenkins环境搭建
  2. 移植uboot第六步:支持NANDFlash
  3. [BZOJ3668][Noi2014]起床困难综合症 贪心
  4. Python3 实现批量图像数据增强(扩增)并复制xml标签文件【目标检测笔记】
  5. SQLServer存储过程的返回值 查询分析器/程序
  6. 微信公众号 文章的爬虫系统
  7. 吴恩达《卷积神经网络》
  8. JS原生Ajax和jQuery的Ajax与代码示例
  9. DPDK之KNI原理
  10. 多线程常见面试题(含常见项目遇到多线程问题解决及面试对话)
  11. 华为交换机DHCP Server释放IP
  12. 利用手机距离感应器来切换是用扬声器听音乐还是听筒听音乐
  13. 如何提高学生线上学习率的有效方法——以高一数学基础模块复习教学为例
  14. 51单片机c语言学习感想,学习51单片机心得体会
  15. dede常用标签(随时更新)
  16. PostgreSQL中的io多路复用--select和epoll实现
  17. WordPress插件开发教程1:开发第一个WordPress插件
  18. html vb病毒,HTML_用vbs实现的一款Worm.Win32.VB.fw病毒专杀,在写了《Worm.Win32.VB.fw分析与清 - phpStudy...
  19. 4个参数搞定ABTEST样本量的最优选择
  20. 【ABAQUS文档笔记】ABAQUS刚体单元和可变形单元的review

热门文章

  1. 指令字长、存储字长、机器字长、时钟周期、机器周期、指令周期、取址周期、存取周期的关系
  2. 键盘坏了,用注册表来修:Win7/XP修改注册表,替换按键映射
  3. IPSEC VPN详解
  4. Mac电脑使用:正确安装nvm的方法(非常详细)
  5. 知识付费:个人微信对接个人微博
  6. OPPO Find X5 Pro天玑版评测
  7. mysql tpcc load_mysql性能测试-tpcc
  8. Linux系统中重启网卡失败
  9. text-indent 的特殊性?
  10. 职称计算机对评副高,软著对评副高级职称的作用