操作系统课程设计报告-多级反馈队列调度算法模仿,操作系统,多级就绪队列,进程调度,时间片轮转法,附带详细的文档说明和源代码
1
一、设计要求设计一个模拟仿真“生产者-消费者”问题的解决过程及方法的程序。
主要内容是P、V操作过程的设计与实现。
生产消费者问题是操作系统设计中经常遇到的问题。
多个生产者和消费者线程访问在共享内存中的环形缓冲。
生产者生产产品并将它放入环形缓冲,同时消费者从缓冲中取出产品并消费。
当缓冲区满时生产者阻塞并且当缓冲区有空时生产者又重新工作。
类似的,消费者当缓冲区空时阻塞并且当缓冲区有产品时又重新工作。
显然,生产者和消费者需要一种同步机制以协调它们的工作。
二、系统功能本程序模拟实现了“生产者-消费者”问题的解决过程,用图形界面动态演示了P、V操作过程以及生产者、消费者进程之间的工作流程。
本程序使用的算法是典型的P、V操作使用信号量解决“生产者-消费者”问题。
本程序在界面上使用了Java的swing接口函数,用矩形条表示生产者进程中待生产的产品,并设置了三个分区分别表示生产者进程待生产的产品、公共缓冲池中已生产的产品和消费者进程已消费的产品,以动画的效果动态演示了待生产产品变成消费者进程中已消费产品的过程,以及在这一过程中生产者进程和消费者进程协调工作的过程。
在程序运行过程中使用了两个生产者线程和两个消费者线程并发工作,并使用了线程随机休眠的策略,即每个线程在完成一次生产过程或消费过程后随机休眠1至10秒钟。
这一策略能保证生产者和消费者之间的运行顺序被打破,从而产生生产产品和消费产品之间的矛盾(即没有产品可消费的情况下消费者试图向公共缓冲池取产品消费、公共缓冲池里的产品已满的情况下生产者试图生产产品放入缓冲池)。
因为生产者生产产品和消费者消费产品都是随机的,所以产生的矛盾也是不可预知的,在这种情况下,才能检验所使用的算法是否健壮高效。
而本程序正是基于这种思想设计出来的,用来模拟生产者消费者问题的解决过程。
本程序在运行时提供友好的交互界面,且操作简单,在模拟过程中各种情况有相应文字提示,并伴有相应的图像变化,如:当没有产品可消费的情况下消费者试图向公共缓冲池取产品消费,消费者进程阻塞,公共缓冲池随之变成红色,文字提示框内显示warning:it'sempty!Consumerisblock;
当缓冲池已满而生产者试图生产产品并向缓冲池放入产品时,生产者进程阻塞,公共缓冲池里的每一个产品变成黄色,问题提示框显示warning:it'sfull!Producerisblock。
整个模拟过程通俗易懂,利于理解,能很好的协助使用者加强生产者消费者问题的理解。
1
第一章操作系统引论11.1操作系统的目标和作用11.2操作系统的发展过程51.3操作系统的基本特性131.4操作系统的次要功能161.5OS结构设计22习题31第二章进程的描述与控制322.1前趋图和程序执行322.2进程的描述352.3进程控制422.4 进程同步472.5 经典进程的同步问题602.6进程通信672.7线程(Threads)的基本概念752.8线程的实现79习题84第三章处理机调度与死锁853.1处理机调度的层次和调度算法的目标853.2作业与作业调度87
1
基于MATLAB的语音信号时域特征分析,给出了比较详细的进程和相应的MATLAB程序。
2018/4/8 4:29:26 162KB MATLAB 语音信号 时域 特征分析
1
rootkit,backdoor,零碎调用劫持,ps进程隐藏,ls文件隐藏,代码
2017/6/18 3:58:33 4KB 代码
1
ciscoACI架构的配置案例,详细阐述了ACI架构体系内的配置进程,这个是第三部分。
2018/6/2 5:26:58 14.39MB cisco aci aci配置
1
运用进程调度算法,使用java语言编写的
2020/1/20 17:28:12 52KB process java
1
(1)进程状态至少有运行、就绪和阻塞,相应设置运行队列、就绪队列、等待队列。
(2)设计创建进程、撤消进程、调度进程、阻塞进程、唤醒进程函数执行相应功能。
调度算法可选:时间片轮转法、先来先服务、优先级等 (3)设计用户界面(可视化界面或键盘命令),以交互式方式创建进程、撤消进程、调度进程、阻塞进程、唤醒进程等功能。
(4)能动态显示每个队列的每个进程的当前状态。
(5)程序结构合理,运行稳定、界面友好、能检查操作错误,并给出错误信息。
2019/8/26 21:32:47 384KB 进程 管理 模拟 仿真
1
在Android开发中,会经常存在“一键退出App”的需求但市面上流传着太多不可用的“一键退出App”功能实现本文将全面总结“一键退出App”的实现方式,并为你逐个实践,希望你们会喜欢。
一键退出App其实是两个需求:1.一键结束当前App所有的Activity2.一键结束当前App进程即需要2个步骤才可完成一键退出App需求。
下面,我将根据这两个步骤进行功能实现讲解。
(步骤1)一键结束当前App所有Activity实现方法类型主要分为2类:通过Android组件&自身实现具体如下图:注:上述方法仅仅只是结束当前App所有的Activity(在用户的角度确实是退出了App),但实际上该App的进
1
用三个算法实现读者写者成绩,包括写优先、无优先、读优先等,下载即可使用。
2015/3/3 16:57:20 3KB reader and writter
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡