第三章 同步、通信和死锁

实验一:进程互斥与进程同步

进程的互斥和同步是操作系统课程的重要内容,本实验设计算法实现临界区的互斥进入以及进程的同步。

注意:因为进程的管理的权限属于操作系统,用户没有权利管理多个进程的并发执行过程,因此,在实验室机房的通用操作系统平台上无法实现针对并发进程的管理(互斥和同步)。而多线程程序中,线程控制是用户有权做的。因此,本实验使用多线程程序设计技术,利用线程互斥和同步来模拟并发进程的管理,其算法思路和实现过程与操作系统中并发进程的控制本质上是一样的

C语言也支持多线程程序设计,不过多线程不是标准C语言的组成部分,而是需要依赖于添加的库文件。

(1)在Windows下面,可以使用MFC中的标准Windows线程库,不过使用方法非常复杂,还要求懂得VC编程语言,本课程不作讨论。

(2)在Unix/Linux系统下,有所谓的POSIX线程,能够支持C语言的多线程程序设计,相关的工具在pthread.h, semaphore.h,sched.h库文件里(常用的Linux系统都包含了这些库文件,不需要再手动添加)。步骤如下:

编辑程序:假定最后得到程序xx.c

编译链接程序: gcc –o xx -lpthread xx.c

运行程序:./xx

(3)POSIX线程也可以在Windows下运行,即使用所谓的pthreads-win32插件,它可以在ftp://http://doc.xuehai.net/pub/pthreads-win32下载。下载完毕自解压之后,生成一个目录PThread,下面有几个子目录,其中Pre-built.2\include目录即所需要的库。可以在VC环境里编译运行C语言多线程程序。

编辑程序:假定最后得到程序xx.c

编译链接程序:将PThread\Pre-built.2\includ目录下的include和lib两个子目录复制到VC的安装目录下面,例如C:\Program Files\Microsoft Visual Studio\VC98,覆盖掉原来的目录。然后编译。

运行程序:在VC++ 6.0环境中,选(工程--》设置--》连接)里的库模块里增加pthreadVC2.lib,然后运行。

1 POSIX线程编程基础

POSIX线程模型中创建线程使用pthread_t变量,其步骤为:

声明:pthread_t a_thread;

创建:使用函数

int pthread_create(pthread_t *p, const pthread_attr_t *attr, void *(*start_rtn)(void),void *arg); 返回值: 如果正常创建,返回0;否则返回一个非零的值。

第一个参数:pthread_t变量(线程变量)的名字;

第二个参数:设置线程属性。

第三个参数:线程运行函数的起始地址(即函数名)。

第四个参数:线程运行函数的参数。

定义线程的运行函数:也叫线程运行方法,即线程要做的事情。例如

实验一 进程同步与互斥c语言,进程互斥与进程同步实验相关推荐

  1. C语言实验指导(三)C语言AD连续采集数据实验

    第三章:C语言AD连续采集数据实验 文章目录 第三章:C语言AD连续采集数据实验 一.实验目的: 1.熟悉示波器和信号发生器的使用. 二.实验内容: 1.利用信号发生器产生一定频率的正弦波,并用示波器 ...

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

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

  3. 操作系统(十八)进程同步与进程互斥

    2.3.1 进程同步与进程互斥 目录 2.3.1 进程同步与进程互斥 2.3.1.1 进程同步 2.3.1.2 进程互斥 在之前我们提到过,进程有异步性的特征,所谓异步性就是并发执行的进程以各自独立的 ...

  4. 2.3_ 1_ 进程同步、进程互斥

    2.3_ 1_ 进程同步.进程互斥 文章目录 2.3_ 1_ 进程同步.进程互斥 1.知识概览 2.什么是进程同步? 2.什么是进程互斥 3.知识回顾 1.知识概览 2.什么是进程同步? 2.什么是进 ...

  5. 操作系统之进程管理:7、进程同步、进程互斥

    7.进程同步.进程互斥 思维导图 1.进程同步 异步性: 什么是进程同步? 2.进程互斥 什么是进程互斥? 临界资源的互斥访问步骤? 进程的原则 思维导图 1.进程同步 异步性: 进程的执行各自独立. ...

  6. 王道 —— 进程同步、进程互斥

    目录 1.什么是进程同步 2.什么是进程互斥 1.什么是进程同步 知识点回顾:进程具有异步性的特征.异步性是指,各并发执行的进程以各自独立的.不可预知的速度向前推进: 前面举过一个例子,老渣并发执行两 ...

  7. Python 进程互斥锁 Lock - Python零基础入门教程

    目录 一.Python 线程互斥锁和进程互斥锁 1.创建线程互斥锁 2.创建进程互斥锁 二.进程互斥锁 Lock 函数介绍 三.进程互斥锁 Lock 使用 案例一:使用进程,但不使用互斥锁 案例二:进 ...

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

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

  9. 卡住无法查看到所有进程_进程同步 进程互斥 软件和硬件实现方式 信号量机制 信号量机制实现进程同步,进程互斥,前驱关系...

    参考:https://www.bilibili.com/video/av31584226/?p=9 进程具有异步性的特征,异步性是指,各并发执行的进程以各自独立的,不可预知的速度向前推进. 回忆我们之 ...

最新文章

  1. mysql查看修改记录_(转)MySql中监视增删改查和查看日志记录
  2. 在Linux上安装PostgreSQL
  3. [JOI2012春季合宿]Rotate (链表)
  4. 怎么用计算机把浓度转换成PH,ph换算(ph和氢离子浓度的换算计算器)
  5. 为什么大部分程序员看不起PHP这门语言?
  6. python查找两个数组中相同的元素_匹配两个numpy数组以找到相同的元素
  7. 基于3DGIS+BIM的房屋出售管理系统
  8. 政策频发,全国区块链应用不断涌现 | 产业区块链发展周报
  9. 开源算法六轴机械臂_我从星期六早上的漫画中学到的开源知识
  10. 如何修复iTunes中未显示的iPhone或iPad
  11. png在ai转为路径_png格式转为ai格式
  12. 锁相环环路滤波器计算公式_锁相环环路滤波器设计
  13. Java开发必须会的技能!java页面导出数据到excel
  14. win10 神州网信政府版 (V0-G.1014.000) 关闭屏幕保护
  15. RTCSD团队第三组第二周进度报告
  16. 反射阵天线(Reflectarray Antenna)设计方法简述
  17. 什么是以太网变压器?常用产品有哪些?百兆千兆万兆网络变压器产品图电路图原理图
  18. centos部署rocketMQ,172.xx.xx.xx:10911,failed错误
  19. 用[记事本]查杀EXE病毒
  20. 只管卖不管修,ofo还能撑到什么时候?

热门文章

  1. unity 对Animator动画系统的研究
  2. JS使用正则实现不区分字母大小写的高亮效果(不改变原文本的大小写)
  3. Unity记录3.3-地图-柏林噪声生成 2D 地图
  4. Spring Boot项目瘦身
  5. 独家专访 ASF 董事会主席 Craig Russell:Apache 之道—— ASF 20年成功秘诀丨二叉树视频...
  6. ts定义返回函数类型
  7. python切片操作失败原因_彻底搞懂Python切片操作
  8. uniapp写好友列表
  9. python计算3j系数_聚类算法评估——轮廓系数及python实现
  10. 光刀选用尽可能大的刀