




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通达学院专业课程设计I题 目:Java语言课程设计和操作系统课程设计 专 业 计算机科学与技术 学 生 姓 名 班 级 学 号 指 导 教 师 指 导 单 位 日 期 2013/06/27 教师评语同学出勤率(满勤、较高、一般,较低),学习态度(端正、较端正、一般、较差),程序设计基础(好、较好、一般、较差),演示程序(已经、没有)达到了基本要求,算法设计(好、较好、一般),界面友好程度(好、较好、一般),答辩过程中回答问题(准确、较准确、错误率较高),撰写报告格式(规范、一般)、内容(丰满、简单)、表述(清晰、一般、不清楚),(圆满、较好、基本)完成了课题任务。 教师签名: 年 月 日成绩评定备 注题目1数字式定时器一、 课题内容和要求 计时器操作是周期性像实际生活中的秒表。创建一个计时器,确定计时器每隔几毫秒“震铃”一次,创建一个监视器,计时器发生的震铃事件是actionEvent类型的事件。当震铃事件发生时,监视器就会监视到这个事件,就会执行ActionListner中的方法actionPerformed。计时器创建后,但触发事件时调用到触发事件的函数,然后调用thread线程中的start()方法后,一旦轮到它共享cpu资源,目标对象就会自动调用run()方法就是接口回调。需要用SWING设计简单界面用于设定定时时间、开始、结束和暂停功能。单击“开始”按钮启动计时器,时间开始计时。单击“暂停”按钮计时器停止计时,单击“继续”按钮继续计时。单击“重设”按钮时间清零。首先要完成程序外观界面的设计,其中包括创建窗体,在窗体中添加菜单、工具栏及多种GUI组件,设置各类组件的大小、位置、颜色等属性。这个层次的工作可以认为是对程序静态特征的设置。其次要为各种组件对象提供响应与处理不同事件的功能支持,从而使程序具备与用户或外界事物交互的能力,使得程序“活”了起来。这个层次的工作可以认为是对程序动态特征的处理。二、 概要设计 1.程序设计的基本思想单击“开始”按钮启动计时器,时间开始计时。单击“暂停”按钮计时器停止计时,单击“继续”按钮继续计时。单击“重设”按钮时间清零。图表 12. 应为用SWING设计简单界面用于设定定时时间、开始、结束和暂停功能。Swing 的三个基本构造块:标签、按钮和文本字段;但是现在需要个地方安放它们,并希望用户知道如何处理它们。所以JFrame 类就是解决这个问题的它是一个容器,允许 把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。在此实验中用到Jframe用到的主件有Button是按钮,Label是标签,用setLayout来设置标题,用setBounds()来设定按钮的位置。图表 2代码段实现:start=new Button(开始);stop=new Button(停止);reset=new Button(重置);jixu=new Button(继续);desplay=new Label();this.setLayout(null);/默认布局this.setTitle(计时器);/设置标题desplay.setBounds(0,30,200,50);start.setBounds(0,80,50,50);stop.setBounds(60,80,50,50);jixu.setBounds(120,80,50,50);reset.setBounds(180,80,50,50);refresh();/刷新add(desplay);/条件主件按钮add(start);add(stop); add(reset); add(jixu); setSize(300,200);/设置窗口的大小 setVisible(true); /窗口可见 3.实验中运用到线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。下面是状态的关系:图表 34.事件的监听事件表达了系统、应用程序及用户之间的动作和响应。利用事件机制实现用户与程序之间的交互。java.awt.event包中定义了11个监听者接口,每个接口内部包含了若干处理相关事件的抽象方法。一般说来,每个事件类都有一个监听者接口与之相对应,而事件类中的每个具体事件类型都有一个具体的抽象方法与之相对应,当具体事件发生时,这个事件将被封装成一个事件类的对象作为实际参数传递给与之对应的具体方法,由这个具体方法负责响应并处理发生的事件。ActionEvent类事件对应的接口是ActionListener。处理ActionEvent事件的类都必须实现ActionListener接口,实现ActionListener接口就必须重载上述的actionPerformed()方法,在重载的方法体中,通常需要调用参数e的有关方法。代码段:public class d extends JFrame implements Runnable,ActionListenerstart.addActionListener(this); stop.addActionListener(this); reset.addActionListener(this); jixu.addActionListener(this);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););事件产生和处理的流程如下:图表 4三、 详细设计 public class d extends JFrame implements Runnable,ActionListener/实现Runnable,acitonListenr接口private int minutes;private static double seconds;private Thread mb;private boolean isRun;private Button start,stop,reset,jixu;private Label desplay; /成员变量的定义d()start=new Button(开始);stop=new Button(停止);reset=new Button(重置); jixu=new Button(继续); desplay=new Label(); /创建主件按钮和标签this.setLayout(null);desplay.setBounds(0,30,200,50);start.setBounds(0,80,50,50);stop.setBounds(60,80,50,50);jixu.setBounds(120,80,50,50);reset.setBounds(180,80,50,50);refresh();add(desplay);add(start);start.addActionListener(this); stop.addActionListener(this); reset.addActionListener(this); jixu.addActionListener(this); / 实现触发事件的 add(stop); add(reset); add(jixu); setSize(300,200); setVisible(true); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0);); public static void main(String args) new d(); public void run() while(isRun) try seconds+=0.001; Thread.sleep(50); /睡眠50msif(seconds59) seconds=0; minutes=minutes+1; /改变秒针System.out.print(minutes); refresh(); catch(Exception e) public void actionPerformed(ActionEvent e) /事件的执行if(e.getActionCommand().equals(开始) startCount(); /调用此函数 else if(e.getActionCommand().equals(停止) stopCount(); /调用此函数else if(e.getActionCommand().equals(继续) startCount(); / /调用此函数 else reset(); /调用此函数 public void refresh() desplay.setText(toString(); public void startCount() if(!isRun) isRun=true; mb=new Thread(this); mb.start(); /开始进程 public void stopCount() if(isRun) isRun=false; public void reset() isRun=false; minutes=0; seconds=0; refresh(); public int getMinute() return minutes; public double getSecond() return seconds; public int getTotalTime() return minutes+(int)(seconds*100); public String toString() return +minutes+:+(int)seconds+:+(int)(seconds-(int)seconds)*100); /显示四、 测试数据及其结果分析1.点击开始按钮开始计时图表 5点击开始按钮2.点击停止,暂停计时图表 6点击停止按钮3.点击继续,继续计时图表 7点击继续按钮4.点击重置,清零图表 8点击重置按钮五、课程设计总结总结内容包括: 1)设计过程中的问题关于计时器像秒表一样增加,一开始是获得的本机的时间来计时的,但是不符合条件。所以运用本机时间来计算,所以时分秒之间的转换倍数要十分的清昕。不懂监听事件时怎么点击按钮也不会运行,每隔按钮都要实现监听事件中的addActionListener事件。老师问线程和进程的概念和区别没回答出来,现在回答一下:进程是表示资源分配的基本单位,又是调度运行的基本单位。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性 引入线程的好处 (1)易于调度。 (2)提高并发性。 (3)开销少。 (4)利于充分发挥多处理器的功能。 它们的主要区别是:(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 (3)处理机分给线程,即真正在处理机上运行的是线程。 (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。(2)课程设计过程的收获和感受。课程设计经过了两个星期的不懈努力,终于交出了一份程序和文档,在这里要深深的感谢老师。虽然最后交上的程序不是很完美的,但是在这个过程中我通过用心的去学和去做,能够把事件、事件源和事件监听器三者的关系形象的理解为某条娱乐新闻、明星与记者之间的关系,还明白了线程该如何创建、Java中一些常用类的使用方法等基础内容和一些难点。但是我最后答辩被老师批的很惨,我想说的是java是我自己一个一个字母敲上去的。我觉得这次java课程设计学的东西还是蛮多的。再次谢谢老师的教训,在此后我会铭记的。题目2虚拟存储中页面调度算法LRU的模拟实现五、 课题内容和要求学习虚拟存储机制中页面调度算法,通过编程模拟实现页面调度的LRU算法(最近最久未使用置换算法)。页面置换算法是指在需要调入页面且内存已满时,确定将要换出页面的算法。置换算法的好坏直接影响系统的性能,不适当得算法可能导致进程发生“抖动”,又称“颠簸”。LRU算法就是过去一段时间内不曾访问过的页面,在最近的将来也不会再访问。该算法中必须记录页面使用时间的情况,所以算法赋予每个页面一个访问的字段,用来记录页面自上次被访问以来经历的时间,实际使用中常采用移位寄存器或栈来帮助实现。如果采用移位寄存器,进程访问页面时,该页面上的移位寄存器左边最高位置1,定期右移并在最高位补0,寄存器最小的页面先淘汰。若采用栈来保存当前使用的各个页面的页号,则被访问的页面从栈顶往下移动,栈底的页面就是下一个将要淘汰的页面。LRU置换算法虽然是一种比较好的算法,但要求系统有较多的支持硬件。为了了解一个进程在内存中的各个页面各有多少时间未被进程访问,以及如何快速地知道哪一页是最近最久未使用的页面,须有以下两类硬件之一的支持:寄存器和栈。 二、概要设计 1、调页策略 1)何时调入页面 如果进程的许多页是存放在外存的一个连续区域中,则一次调入若干个相邻的页,会比一次调入一页的效率更高效一些。但如果调入的一批页面中的大多数都未被访问,则又是低效的。可采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存。如果预测较准确,那么,这种策略显然是很有吸引力的。2)请求调页策略 当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便即提出请求,由OS将其所需页面调入内存。由请示调页策略所确定调入的页,是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。2、从何处调入页面 在请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。通常,由于对换区是采用连续分配方式,而事件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。 3页面调入过程每当程序所要访问的页面未在内存时, 便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后,转入缺页中断处理程序。该程序通过查找页表,得到该页在外在原物理 块后,如果此时内存能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表。如果内存已满,则须先按照某种置换算法从内存中选出一页准备换出;如果该页未被修改过,可不必将该页写回磁盘;但如果此页已被修改,则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项,置其存在位“1”,并将此页表项写入快表中。在缺页调入内存后,利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据。整个页面的调入过程对用户是透明的。 2流程图1)LRU置换算法处理的流程图图表 92)LRU置换内部流程图图表 103. 最近久未使用(LRU)置换算法的思路最近久未使用置换算法的替换规则,是根据页面调入内存后的使用情况来进行决策的。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间,当需淘汰一个页面的时候选择现有页面中其时间值最大的进行淘汰。1)算法的事例:页面走向232152453252缺页置换*3124M =322222222333333355555555111444222图表 112)代码的实现是:if(memoryn=4) for(i=3;ipagen;i+) if(pagememory0!=pagenumberi)&(pagememory1!=pagenumberi)&(pagememory2!=pagenumberi) pagememory3=pagenumberi; now=i+1; want=4; break; 通过memoryn数来对物理块来赋值,用if语句来看数据是否重复。通过want来计算缺页数,now 来计算中断。 for(j=now;jpagen;j+) if(pagenumberj!=pagememory0)&(pagenumberj!=pagememory1)&(pagenumberj!=pagememory2) &(pagenumberj!=pagememory3)&(pagenumberj!=pagememory4) if(times0=times1) max=times1; else max=times0; if(max=times2) max=times2; if(max=times3) max=times3; if(max=times4) max=times4; If语句中来判断数是否是最近最近未置换time来计算数有多长时间没有使用,把最大的值置换掉。三、详细设计 实现课题主要功能的源程序:#include /头文件#include /#include /产生随机数所需要的头文件main() int pagen; int memoryn; /可用内存块数为memoryn,页面长度为pagen, short times5=0,0,0,0,0; /时间轴数组 short pagenumber20=0; /控制页面走向数组 short pagememory5=0,0,0,0,0; /物理块数组 int i; /控制变量为i int want=0; /want为缺页数 int now; /中断数 printf(nn请输入您要求的内存块数量(范围为3至5):); scanf(%d,&memoryn); if(memoryn5) printf(nn对不起,您的输入有误,请重新输入:); scanf(%d,&memoryn); printf(nn请输入您要求的页面长度(范围为10至20):); scanf(%d,&pagen); if(pagen20) printf(nn对不起,您的输入有误,请重新输入:); scanf(%d,&pagen); srand(time(NULL); for(i=0;ipagen;i+) pagenumberi=rand()%9+1; printf(%2d ,pagenumberi); printf(n); pagememory0=pagenumber0;/对第一个物理块进行赋值 printf(第 %2d 步: ,i=1); for(i=0;imemoryn;i+) printf( %2d,pagememoryi); printf(n); for(i=1;ipagen;i+) if(pagememory0!=pagenumberi) pagememory1=pagenumberi; now=i+1; break; /对第二个物理块进行赋值 printf(第 %2d 步: ,now); for(i=0;imemoryn;i+) printf( %2d,pagememoryi); printf(n); for(i=2;ipagen;i+) if(pagememory0!=pagenumberi)&(pagememory1!=pagenumberi) pagememory2=pagenumberi; now=i+1; break; /对第三个物理块进行赋值 want=3; /此时可以将缺页值暂定为3 printf(第 %2d 步: ,now); for(i=0;imemoryn;i+) printf( %2d,pagememoryi); printf(n); if(memoryn=4) for(i=3;ipagen;i+) if(pagememory0!=pagenumberi)&(pagememory1!=pagenumberi)&(pagememory2!=pagenumberi) pagememory3=pagenumberi; now=i+1; want=4; break; printf(第 %2d 步: ,now); for(i=0;imemoryn;i+) printf( %2d,pagememoryi); printf(n); /如果为四个物理块,则为第四个物理块赋值 if(memoryn=5) for(i=3;ipagen;i+) if(pagememory0!=pagenumberi)&(pagememory1!=pagenumberi)&(pagememory2!=pagenumberi) pagememory3=pagenumberi; now=i+1; want=4; break; printf(第 %2d 步: ,now); for(i=0;imemoryn;i+) printf( %2d,pagememoryi); printf(n); for(i=4;ipagen;i+) if(pagememory0!=pagenumberi)&(pagememory1!=pagenumberi)&(pagememory2!=pagenumberi)&(pagememory3!=pagenumberi) pagememory4=pagenumberi; now=i+1; want=5; break; /如果为五个物理块,则为第四个物理块赋值 printf(第 %2d 步: ,now);for(i=0;imemoryn;i+) printf( %2d,pagememoryi); printf(n); int needchange; /页面置换发生时要进行置换的物理块块号 int mn=memoryn; /为时间轴赋初值所用到的物理块数int max; /最大的时间值int j; /控制变量i.j for(i=0;imemoryn;i+) mn-; timesi=mn; /给时间轴数组设定初值 for(j=now;jpagen;j+) if(pagenumberj!=pagememory0)&(pagenumberj!=pagememory1)&(pagenumberj!=pagememory2) &(pagenumberj!=pagememory3)&(pagenumberj!=pagememory4) if(times0=times1) max=times1; else max=times0; if(max=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全管理模拟测试题
- 2025年大数据数据预处理面试题与答案
- 2025年安全生产培训考试题及答案版
- 2025年教育单位会计考试模拟题及答案详解
- 2025年急救技能认证考试题集
- 2025年宁夏安全员安全生产知识题集及答案
- 2025年供电所台区经理招聘笔试模拟试题
- 2025年仓储管理师初级笔试模拟题及答案
- 2025年新能源储能资金申请项目评估
- 数字科技考试题及答案高一
- 咖啡服务培训课件
- 2025年广东省中考地理试题卷(标准含答案)
- 吉林省国资委监管企业招聘笔试题库2025
- 聚合工艺作业培训课件
- 千人相亲活动方案
- 消防避火服课件教学
- 土地法学教学课件电子教案课件
- 儿童银行开业活动方案
- 小学二年级上册心理健康教案(适合北京教育出版社)
- CJ/T 43-2005水处理用滤料
- 无人机技能培训课件
评论
0/150
提交评论