1.目的:调试、修改、运行模拟程序,通过形象化的状态显示,使学生理解进程的概念,了解同步和通信的过程,掌握进程通信和同步的机制,特别是利用缓冲区进行同步和通信的过程。
通过补充新功能,使学生能灵活运用相关知识,培养创新能力。
2.内容及要求:1)调试、运行模拟程序。
2)发现并修改程序中不完善的地方。
3)修改程序,使用随机数控制创建生产者和消费者的过程。
4)在原来程序的基础上,加入缓冲区的写互斥控制功能,模拟多个进程存取一个公共缓冲区,当有进程正在写缓冲区时,其他要访问该缓冲区的进程必须等待,当有进程正在读取缓冲区时,其他要求读取的进程可以访问,而要求写的进程应该等待。
5)完成1)、2)、3)功能的,得基本分,完成4)功能的加2分,有其它功能改进的再加2分3.程序说明:  本程序是模拟两个进程,生产者(producer)和消费者(Consumer)工作。
生产者每次产生一个数据,送入缓冲区中。
消费者每次从缓冲区中取走一个数据。
缓冲区可以容纳8个数据。
因为缓冲区是有限的,因而当其满了时生产者进程应该等待,而空时,消费者进程应该等待;
当生产者向缓冲区放入了一个数据,应唤醒正在等待的消费者进程,同样,当消费者取走一个数据后,应唤醒正在等待的生产者进程。
就是生产者和消费者之间的同步。
  每次写入和读出数据时,都将读和写指针加一。
当读写指针同样时,又一起退回起点。
当写指针指向最后时,生产者就等待。
当读指针为零时,再次要读取的消费者也应该等待。
为简单起见,每次产生的数据为0-99的整数,从0开始,顺序递增。
两个进程的调度是通过运行者使用键盘来实现的。
4.程序使用的数据结构进程控制块:包括进程名,进程状态和执行次数。
缓冲区:一个整数数组。
缓冲区说明块:包括类型,读指针,写指针,读等待指针和写等待指针。
5.程序使用说明  启动程序后,如果使用'p'键则运行一次生产者进程,使用'c'键则运行一次消费者进程。
通过屏幕可以观察到两个进程的状态和缓冲区变化的情况。
2019/3/25 13:35:58 306KB 操作系统 上机 实验报告 进程同步
1
设计SAMPLE语言的词法分析器检查要求:启动程序后,先输出作者姓名、班级、学号(可用汉语、英语或拼音);
请求输入测试程序名,键入程序名后自动开始词法分析并输出结果;
输出结果为单词的二元式序列(样式见样板输出1和2);
要求能发现下列词法错误和指出错误性质和位置:非法字符,即不是SAMPLE字符集的符号;
字符常数缺右边的单引号(字符常数要求左、右边用单引号界定,不能跨行);
正文部分缺右边的界符*/(正文要求左右边分别用/*和*/界定,不能
2015/5/4 5:42:13 3KB 编译 词法分析 Sample 二元式
1
最小的ReactStarter一个带有,和入门项目。
该启动程序在包括Babel和Webpack的情况下尽可能减少。
建立专案gitclonegit@github.com:ahfarmer/minimal-react-starter.git建立npminstall用法nodeserver.js打开。
从头开始构建入门项目可能会给所有初学者带来困难,因为所有的动作都是如此。
为了协助您理解此入门项目,有了如何从头开始创建它。
为什么最小?该项目的主要目的是学习。
对于学习而言,最小的入门项目是最好的。
过多的依赖关系可能会使初学者感到困惑。
选择所需项目并将其添加到最小项目的过程可能是学习的好方法。
为什么不更多最小化?Babel和Webpack是我认为在React项目中完全必要的两个工具。
无论构建多大,我在构建的每个React项目中都没有使用过其他一致的工具。
Babel:即使您只是编写一个快速测试,您也可能希望在组件中使用JSX,而不是React.createElement遍地写出React.createElement。
We
2021/1/17 20:49:09 5KB react babel webpack minimal
1
pxa270的启动程序blob的配置编译材料
2019/6/7 21:55:20 226KB pxa270 blob
1
处理无法启动程序,因计算机中丢失api-ms-win-crt-runtime-|1-1-0.dll的问题
2020/2/3 9:27:30 13.52MB vc_redist
1
盖茨比的个人博客入门者该启动程序是GatsbyStarterBlog(迄今为止最受欢迎的启动程序)的一个分支-第二名是GatsbyStarterNetlifyCMS。
所以我决定将2结合起来!:rocket:快速开始创建一个Gatsby网站。
使用GatsbyCLI创建一个新站点,并指定博客启动器。
#createanewGatsbysiteusingtheblogstartergatsbynewmy-blog-starterhttps://github.com/thomaswangio/gatsby-personal-starter-blog开始开发。
导航到新站点的目录并启动。
cdmy-blog-starter/gatsbydevelop打开源代码并开始编辑!您的站点如今在http://localhost:8000!
2016/11/16 18:45:44 1.51MB JavaScript
1
[代码及相关实验]---代码为C语言编写1、CPU看门狗实验2、LED跑马灯实验3、CPUTimer定时器实验4、实时时钟实验5、AD转换实验6、扩展SDRAM读写实验7、扩展FLASH读写实验8、快速傅立叶变换(FFT)实验9、FIR滤波器实验10、IIR滤波器实验11、自顺应滤波器(FIRLMS)实验12、键盘扫描实验13、外部中断输入实验14、AIC23播音实验15、LCD显示实验16、串口通信实验17、USB2.0通信实验18、网络通信实验19、SD卡读写实验20、MMC卡读写实验21、数字图像直方图实验22、数字图像边缘检测实验23、数字图像锐化实验24、数字图像取反实验25、数字图像直方图均衡化增强实验26、Flash上电启动程序固化实验
2015/3/25 21:39:24 11.94MB TMS320 VC5509A 各种代码例程
1
优傲机器人urrobot点动控制程序,c#源代码有中文正文,带箭头的可视化界面,有tcp/ip和modbus两种连接模式,配置正确,即可以控制ur机械手的动作,刚启动程序时,初始化比较慢,需要等2分钟左右。
2021/10/9 18:13:19 7.23MB 优傲机器人 ur robot 控制程序
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡