文档库 最新最全的文档下载
当前位置:文档库 › 操作系统课程设计报告—多进程同步橘子苹果问题

操作系统课程设计报告—多进程同步橘子苹果问题

操作系统课程设计报告—多进程同步橘子苹果问题
操作系统课程设计报告—多进程同步橘子苹果问题

操作系统课程设计报告

院(系):计算机工程学院

专业:计算机科学与技术专业

学生姓名:__

班级:__学号:

题目:用多进程同步方法演示“桔子-苹果”问题____

起迄日期:_2012.07.02_--2012.07.13_ ____

设计地点:现代教育中心

指导教师:熊晓芸

2011—2012年度第 2 学期

完成日期: 2012 年 7 月 13 日

一、课程设计目的

本次实验进行操作系统课程设计的主要任务是模拟生产者和消费者的一个衍生,即

实现“橘子-苹果问题”。这个问题中有两个生产者,分别生产苹果核橘子,有两个消费者,分别消费橘子和苹果。同时,因为两个生产者和两个消费者对同一个缓冲区进行操作,所以应互斥的访问缓冲区以保证程序的正确性。本次实验的目的就是加深各个进程正确有效的对资源的访问,即同步和互斥。同时掌握信号量在互斥访问中的使用。掌握生产者和消费者问题的流程和实现方法。同时提高编程的能力、对问题的解决能力及查阅文档的能力。

二、课程设计内容与要求

1、通过研究Linux的进程同步机制和信号量,实现特殊的生产者与消费者问题的并发控制。

2、说明:有两类生产者,一类负责生产桔子,一类负责生产苹果;有两类消费者,一类负责消费桔子,一类负责消费苹果;他们共享一个有20个存储单元的有界缓冲区,每个存储单元只能放入一种产品(桔子/苹果)。

3、设计要求:

1)二类生产者与二类消费者数目均为20,即20个生产者负责生产桔子,20个生产者

负责生产苹果;20个消费者负责消费桔子,20个消费者负责消费苹果

2)二类生产者的生产速度与二类消费者的消费速度均可独立在程序界面调节,在运行

中,该值调整后立即生效

3)多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码,同时需要

考虑算法的效率性

4)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、

当前生产者与消费者的指针位置,以及生产者和消费者线程标识符

5)采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓

冲区的状态

三、系统分析与设计

1、系统分析

1.此次任务是实现特殊生产者和消费者的演示程序,所需要处理的信息是生产者和消费者的个数,生产苹果、橘子和消费苹果、橘子的速度控制,缓冲区中橘子和苹果的个数和当前生产、消费指针的位置。

2.程序中需要处理缓冲区的动态显示、生产者和消费者的速度可以调节,生产者和消费者个数可以改变。为了实现界面的友好性,应该对用户标明清楚各个模块的作用。同时实时的对程序进行暂停和停止。演示程序中用图形显示的方法描述缓冲区的使用情况,即当前缓冲区有多少个苹果和橘子,还有生产和消费者的指针。

3.系统对外的界面如下:

可以调节橘子和苹果的生产速度和消费苹果和橘子的速度,在文本框中输入相应的速度,再按下修改按键即可实现速度的实时调节。

在苹果生产者、橘子生产者、苹果消费者、橘子消费者中实现对个数按钮的按下即可动态实时的调节生产者和消费者的个数的调节。

在界面的最下面点击开始按钮,程序开始运行,暂停按钮使程序暂停挂起,再点击则可以继续运行。停止按钮实现此次程序的演示结束。

4.此次使用java平台实现,保证了程序在各种机器的运行,只需要事前建立java的运行环境即可,便于程序的移植

5.系统界面如下:

2、系统设计:

2.1、模块设计:

系统主模块

主界面模块生产

者控

制模

消费

者控

制模

块块

有界

缓冲

区控

制模

人工

智能

模块

动态显示区

程序速度控制区

生产者和消费者数字调节

开始、暂停、终止按键区

2.2、数据结构说明:

1.缓冲区的数据结构:双端队列

说明:左端放置生产苹果的指针,右端放置生产橘子的指针。

2.缓冲区操作的类图,实现对缓冲区的实际操作

2.3、算法流程图:

1.生产苹果算法

主界面模块

绘图 模块

动态进度条

生产者数目调节 消费者数目调节 生产者速度调节 消费者速度调节

缓冲区

苹果指针

橘子指针

缓冲区MyStorage

生产苹 果 increas eapple () 生产橘子 increas eorang e() 消费苹果 decrea seappl e() 消费橘子 decrea seoran ge()

缓冲区状态isFull

互斥信号量 mutex 同步信号量 empty full

苹果指针pointapple 橘子指针pointorange

2.消费苹果算法

申请空缓冲区full=full+1

信号量full大于0

pointapple = pointapple-1 isFull[applepoint] = false Pool[pointapple] = 0

打印缓冲区状态

apple=apple-1empty=empty+1

释放缓冲区线程阻塞

Y

N

申请空缓冲区

信号量empty大于0

pointapple = pointapple+1

isFull[applepoint] = true

Pool[pointapple] = 1

打印缓冲区状态

apple=apple+1 full=full+1

释放缓冲区

线程阻塞

N Y

3.绘图算法

4.生产苹果者人工智能算法(生产橘子人工智能相似)

5.苹果消费者人工智能算法(生产橘子算法类似)

i = i+1

i < 20?

pool[i]=0

pool[i]=1

填充红色 填充黄色

画矩形

画指针

i =-1 进入缓冲区

缓冲区产品数<16 苹果>=16 增加苹果消费者,减少苹果

生产者,增加橘子生产者

生产苹果

苹果>=12

拒绝生产请求

增加苹果消费者

退出缓冲区

N

Y

N Y

N

四、系统测试与调试分析

1、系统测试

(1)因为当苹果生产者在缓冲区满了以后自动阻塞,需要苹果消费者唤醒,所以需要测试唤醒的实现是否正常。

测试说明测试名称用多进程同步方法演示“桔子-苹果”问题测试目的验证苹果生产者能被苹果消费者唤醒

测试技术单元测试

测试方法黑盒测试法

测试用例测试内容当生产者生产满缓冲区后,开始增加消费者,唤醒生产者

测试步骤增加苹果生产者等待缓冲区被用完增加苹果消费者

测试数据增加苹果生产者到3

缓冲区苹果数量20

缓冲区空闲位为0 苹果消费者增加到4

预期结果缓冲区开始增加苹果缓冲区满苹果生产者阻塞苹果生产者被唤醒,缓

冲区中苹果数量减少测试结果与预期相符与预期相符与预期相符

(2)因为当苹果生产者在缓冲区满了以后自动阻塞,需要苹果消费者唤醒,所以需要测试唤醒的实现是否正常。

测试说测试名称用多进程同步方法演示“桔子-苹果”问题

测试目的验证多个苹果橘子生产者和苹果、橘子消费者互斥操作缓冲区

测试技术单元测试

进入缓冲区

缓冲区产品数>=4

苹果个数<2

消费苹果

增加苹果生产者

减少苹果消费者

增加橘子生产者

增加橘子生产者

减少橘子消费者

增加苹果生产者

退出缓冲区

Y

N

Y

N

橘子数<2

增加橘子生产者

减少橘子消费者

增加苹果生产者

苹果数<2

增加苹果生产者

减少苹果消费者

增加橘子生产者

Y

Y

N

N

明测试方法黑盒测试法

测试用例测试内容缓冲区为空,消费者阻塞时,生产者唤醒消费者

测试步骤开始生产产品,缓冲区

为空空闲位20

开始消费产品,终止生产线

开始增加生产者

减少消费者

测试数据橘子生产者数量5

苹果生产者数量5

苹果生产者减少到0

橘子生产者减少到0

增加橘子消费者到5

增加苹果消费者到5

增加苹果生产者到5

增加橘子生产者到5

减少橘子消费者到2

减少苹果消费者到2 预期结果缓冲区内产品数量每次

减少10个

消费完成产品,消费者阻塞唤醒消费者,缓冲区中

产品增加

测试结果与预期相符与预期相符与预期相符

(3)测试生产者和消费者的速度是否可以调节

测试说明测试名称用多进程同步方法演示“桔子-苹果”问题

测试目的苹果、橘子生产者和苹果、橘子消费者速度可以调节测试技术单元测试

测试方法黑盒测试法

测试用例测试内容调节生产者和消费者速度

测试步骤开始程序运行输入生产者、消费者速度值点击修改按钮

测试数据苹果、橘子生产者速度

2000

苹果、橘子消费者速度

2000

生产者的速度值1000

消费者速度值1000

点击修改

预期结果缓冲区开始被操作界面文本框中显示速度值生产者、消费者速度变化

到1000

测试结果与预期相符与预期相符与预期相符

(4)实现了人工智能操作:即系统自动保持生产者和消费者的相对平衡,测试功能的正确实现

测试说明测试名称用多进程同步方法演示“桔子-苹果”问题测试目的测试编写的人工智能是否实现

测试技术单元测试

测试方法黑盒测试法

测试用例测试内容自动维持缓冲区的稳定

测试步骤开始程序的运行运行人工智能操作

测试数据苹果生产者5

苹果消费者5

橘子生产者3

橘子消费者0

减少苹果生产者到0

增加苹果消费者数量到6

预期结果缓冲区开始被操作生产者、消费者数量都靠拢至4 测试结果与预期相符与预期相符

与预期相符

2、调试分析:

(1)程序编写过程中,因为有两个生产者和消费者,极易把操作写错。在编写增加苹果数量额函数中,程序中午无法增加苹果数量。

解决办法:在函数中查找错误,对苹果的操作写成了对橘子的操作,导致程序出现问题。

(2)在对缓冲区进行绘图的时候,java的JComponent组件内绘图位置出现错误。

解决办法:JComponent内绘图时因为JComponent内使用的是相对坐标,所以不能使用面板的绝对坐标,换成相对坐标正确绘图。

(3)实现人工智能操作的时候,点击相应按钮无法执行

解决办法:在排查完毕后,发现按键响应没有对程序已经设计的标志值进行修改,致使程序没有按预期执行,修改完标志值即可以。

五、用户手册

1.使用的语言和平台

本次实验使用的是java 语言的eclipse平台

2.对于程序运行环境的注意事项

需要安装java运行环境,eclipss平台不需要安装,只需要下载完成就可以使用。

3.程序使用步骤

图1:系统登录界面。

图2:生产者速度调节图3:消费者速度调节

图4:生产者数量调节图5:消费者数量调节

图6::控制界面

图7:动态可视化缓冲区

4.程序使用步骤:

1)单击开始按钮,程序开始初始化执行

2)点击增加按钮分别增加生产者和消费者,可以看到可视化缓冲区开始运动

3)在速度调节部分调节生产者和消费者的速度,可以看到缓冲区出现预期的产品种类和数量的变化。

4)在程序运行状态,可以点击“人工智能”按钮,可以实现人工智能自动操作缓冲区,保持缓冲区的产品数量和种类的稳定,不至于产品数量过多或过少,也不会出现某种产品数量过多或者过少。

六、程序清单

public void increaseapple()

{

empty.acquire(); //相当于信号量的P操作,申请空缓冲区

mutex.acquire(); //互斥信号量

if(pointapple+1 != pointorange){

pointapple++;

if(pointapple == 20)

pointapple=19;

isFull[pointapple] = true; //将生产了产品的标志位设置为满

applenum++;

storage[pointapple] = 'A';//存储生产的产品

pool[pointapple] = 1;//标志此位置生产的是苹果,1表示苹果

}

String str2 = Thread.currentThread().getName();

Apple.textArea2.append("生产者生产了一个苹果" + str2 + " 运行\n");

number++;

Apple.textArea1.append("仓库中的产品个数为" + number + "\n");

Apple.textArea1.append("它们是:\n");

for (int j = 0; j < 20; j++)

{

if(storage[j] != '0')

Apple.textArea1.append("("+j+")"+storage[j] + " ");

else

Apple.textArea1.append(" ");

}

Apple.textArea1.append("\n");

mutex.release();//释放互斥锁

full.release();//增加满信号量的值

apple.release();//增加苹果信号量的值

}

public void increaseorange()

{

empty.acquire();//相当于信号量的P操作,申请空缓冲区

mutex.acquire();//互斥进入临界区

if(pointapple+1!= pointorange){

pointorange--;

if(pointorange < 0)

pointorange = 0;

isFull[pointorange] = true;//将此位置设置成满状态

orangenum++;

storage[pointorange] = 'O';//存储生产产品,O表示橘子

pool[pointorange] = 2;//标志此位置是橘子,2表示橘子

}

String str2 = Thread.currentThread().getName();

Apple.textArea2.append("生产者生产了一个橘子" + str2 + " 运行\n");

number++;

Apple.textArea1.append("仓库中的数字个数为" + number + "\n");

Apple.textArea1.append("它们是:\n");

for (int j = 0; j < 20; j++)

{

if(storage[j] != '0')

Apple.textArea1.append("("+j+")"+storage[j] + " ");

else

Apple.textArea1.append(" ");

}

Apple.textArea1.append("\n");

mutex.release();//退出临界区

full.release();//增加满信号量的值

orange.release();//增加橘子信号量的值

}

public void decreaseapple()

{

apple.acquire();//申请获得苹果

full.acquire();//申请满缓冲区

mutex.acquire();//互斥进入临界区

String str2 = Thread.currentThread().getName();

Apple.textArea2.append("消费者" + str2 + " 运行\n");

number--;

applenum--;

isFull[pointapple] = false;//此位置设置为空

pool[pointapple] = 0;//标志此位置是空位置,0表示空

Apple.textArea2.append("苹果消费一个" +storage[applepool[applenum]]+ " 运行\n");

storage[pointapple] = '0';

pointapple--; //苹果指针减1

Apple.textArea1.append("仓库中的数字个数为" + number + "\n");

Apple.textArea1.append("它们是:\n");

for (int j = 0; j < 20; j++)

{

if(storage[j] != '0')

Apple.textArea1.append("("+j+")"+storage[j] + " ");

else

Apple.textArea1.append(" ");

}

Apple.textArea1.append("\n");

mutex.release();//退出临界区

empty.release();//空缓冲区信号量+1

}

public void decreaseorange()

{

orange.acquire();//申请获得橘子

full.acquire();//申请满缓冲区

mutex.acquire();//互斥进入临界区

String str2 = Thread.currentThread().getName();

Apple.textArea2.append("消费者" + str2 + " 运行\n");

number--;

orangenum--;

isFull[pointorange] = false;

pool[pointorange] = 0;

Apple.textArea2.append("橘子消费一个" + storage[orangepool[orangenum]] + " 运行\n");

storage[pointorange] = '0';

pointorange++; //橘子指针右移一位

Apple.textArea1.append("仓库中的数字个数为" + number + "\n");

Apple.textArea1.append("它们是:\n");

for (int j = 0; j < 20; j++)

{

if(storage[j] != '0')

Apple.textArea1.append("("+j+")"+storage[j] + " ");

else

Apple.textArea1.append(" ");

}

Apple.textArea1.append("\n");

mutex.release();//退出临界区

empty.release();//空信号量+1

}

class Semaphore{

int value;

public Semaphore(int v){

this.value = v;

}

//定义P原语操作,原语操作就是执行时不能中断,所以synchronized修饰

public synchronized void acquire(){

value--;

if(value<0){

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public synchronized void release(){

value++;

if(value<=0){

this.notify();

}

}

}

}

public static int increaseappleProducer()//增加苹果生产者线程{

if(i1 < 20)

{

appleincrease[i1] = new Increaseapple(myStorage);

appleincrease[i1].start();

i1++;

}

return i1;

}

public static int increaseorangeProducer()//增加橘子生产者线程

{

if(i2 < 20)

{

orangeincrease[i2] = new Increaseorange(myStorage);

orangeincrease[i2].start();

i2++;

}

return i2;

public static int decreaseappleProducer()//减少苹果生产者线程{

if(i1 > 0)

{

appleincrease[i1 - 1].out = true;

appleincrease[i1 - 1] = null;

i1--;

}

return i1;

}

public static int decreaseorangeProducer()//减少橘子生产者线程{

if(i2 > 0)

{

orangeincrease[i2 - 1].out = true;

orangeincrease[i2 - 1] = null;

i2--;

}

return i2;

}

public static int increaseappleConsumer()//增加苹果消费者线程{

if(d1 < 20)

{

appledecrease[d1] = new Decreaseapple(myStorage);

appledecrease[d1].start();

d1++;

}

return d1;

}

public static int increaseorangeConsumer()//增加橘子消费者线程{

if(d2 < 20)

{

orangedecrease[d2] = new Decreaseorange(myStorage);

orangedecrease[d2].start();

d2++;

}

return d2;

}

public static int decreaseappleConsumer()//减少苹果消费者线程

if(d1 > 0)

{

appledecrease[d1 - 1].out = true;

appledecrease[d1 - 1] = null;

d1--;

}

return d1;

}

public static int decreaseorangeConsumer()//减少橘子消费者线程

{

if(d2 > 0)

{

orangedecrease[d2 - 1].out = true;

orangedecrease[d2 - 1] = null;

d2--;

}

return d2;

}

七、体会与自我评价

对于此次课程设计,我使用的是做图形用户界面比较容易的java语言,但是自己对java 的掌握也不是很深入,尤其是这门不断发展壮大的语言,里面包含了各方面的操作,所以掌握起来难度不小,此次课设基本上都是在开学后的这两周内完成的。

这次实验中需要用到的操作种类很多很杂乱,我都是先在纸上设计完完毕,之后再一点点的将它在计算机中实现预期的效果,在一点点的设计中,每当攻克了一个自己认为难的地方的时候,就会有一种喜悦感产生,促使我去解决更多的问题,这就是学习的乐趣吧,只是单纯的将自己的任务完善,追求更高的要求。后来自己做程序做上瘾了,不断有新奇的想法蹦出来,我就开始痴迷的设计实现,结果到现在程序的质量已经远远超过了我的预期。我自此明白了学习追求上的快乐。此次课程设计在实现缓冲区动态图形显示的时候自己遇到了困境,在查阅了多方资料后仍然没有什么进展,自己开始着急,担心会做不完,不过依旧每天呆在电脑前,不断的积累经验,最后才找到绘图的方法,成果的在界面中描绘出了自己想要的图形。

自己一直都想去追求更高的分数,做的尽善尽美,力图超额完成老师的任务,不断的添加自己想到的新功能。但最后完成课程设计的时候,我终于明白,分数不过是个数字,知识才是自己的。通过这次课程设计,我确实学到了很多东西,多年后我可能已经忘记这次课设最后打了多少分,但这些学到的东西却可以使我受益终生。除了知识技术上的东西,我更锻炼了自己的快速学习能力;我学会了如何快速有效地从图书馆、网络获取自己需要的信息;我尝到了在周围很多同学拷来拷去时孤军奋战的痛苦;我体会了夜以继日完成一个项目时中途过程的艰辛及最终完成后巨大的成就感……我更加深了人生的信心,以后面对任何一个困难的项目,我想我都不会惧怕,并最终能够成功地将其完成。

感谢老师,感谢此次课程设计。虽然在其中吃了不少苦头,但我毫不后悔,因为我满载而归。

八、参考文献

[1] 汤子瀛编著,《计算机操作系统(修订版)》,西安电子科技大学出版社,2001

[2] 操作系统教程与实验胡明庆,高巍,钟梅清华大学出版社 2007.1

[3] Cay S.Horstmann ,Gay cornell著 ,《java核心技术》(第八版),机械工业出版社 2008

[4] BrucEckel著, 《java编程思想》(第四版)机械工业出版社 2007

[5] Rogers Cadenhead著,梅兴文译,Java编程入门经典,人民邮电出版社,2007

九、课程设计评价(由任课教师填写)

成绩:教师:

年月日

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

操作系统课程设计题目

课程设计任务书 一、课程设计目的 《计算机操作系统》课程设计是计算机类专业的集中实践性环节之一,是学习完《计算机操作系统》课程后进行的一次全面的综合练习。其目的在于加深对操作系统课程的理解,使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,理解操作系统在计算机系统中的作用、地位和特点,具有分析实际操作系统,设计、构造和开发现代操作系统的基本能力,为今后从事的各种实际工作,如设计、分析和改进各种系统软件和应用软件提供必要的软件理论基础。 二、课程设计内容及要求 课程设计要求: 每位同学从下述设计任务中任选一个任务完成,上机验收运行结果,现场提问,并提交所完成该任务的课程设计报告。 实验要求: 1)上机前认真使用C语言编写好程序,采用Visual C++6.0作为编译环境; 2)上机时独立调试程序 3)上机验收运行结果,现场提问 4)根据具体任务要求,提交课程设计实验报告,报告内容包括:课程设计目的、内容、基本原理、模块划分、数据结构、算法设计、程序流程图(包括主程序流程图、模块详细设计流程图等)、以及算法源码(必须有相关注释,以有助于说明问题为宜,不得全盘打印而不加任何注释)、心得体会等。

设计内容一页式虚拟存储管理页面置换算法 1.目的和要求 在熟练掌握计算机虚拟存储技术的原理的基础上,利用一种程序设计语言模拟实现几种置换算法,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础 2.实验内容 阅读教材《计算机操作系统》,掌握存储器管理相关概念和原理。 模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论。 前提: (1)页面分配采用固定分配局部置换。 (2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。 (3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。 3.实验环境 Windows操作系统、VC++6.0、C语言 4.实验提示 (1)基础知识 存储管理是操作系统进行资源管理的一个重要功能。现代操作系统广泛采用虚

主题活动——苹果和橘子

主题活动——苹果和橘子 主题活动——苹果和橘子 一、主题背景: 秋天是一个收获的季节,秋天的果园是一派美丽的景象,红红的苹果,黄黄的橘子,甜甜的柿子……成熟的水果挂满枝头,散发着诱人的香味,秋天的水果真是丰富多彩,而水果又是孩子们熟悉的、喜欢的、每个人对水果都有自己的喜爱。水果的色彩、外形、味道、营养等都蕴涵着丰富的教育资源。有的孩子从家里带来了水果,我们和孩子一起装饰了可爱的水果娃娃,孩子们很喜欢,一有空就会跑过去看看、摸摸,还会和同伴互相讨论呢!由于小班的孩子活泼好动,把游戏融入其中,让孩子在自主活动中不断地丰富知识经验,提升美的感受力、表现力,并养成喜欢吃水果的良好的生活习惯。 二活动内容 (一)内容安排: 活动一:苹果 活动二:香香的水果 活动三:小乌龟去看爷爷 活动四:橘子船 活动五:猜一猜 活动六:奇怪的汽车 活动七:丰收的水果 活动八:好吃的橘子

活动九:好吃的苹果 活动十:水果全家福 活动十一:一个苹果许多梨 (二)活动方案: 活动一:苹果 活动目标:1、根据歌词内容做相应的动作。 2、尝试用常见的几种水果替换原歌词并演唱。 活动准备:1、立体“苹果树”(制作成粘贴式,可随时取放“苹果”)及苹果、葡萄、香蕉等水果实物或图片。 2、幼儿已对这些水果有初步的认识。 3、音乐磁带。 活动过程: 1、学唱歌曲 ——出示苹果实物或图片,引导幼儿讨论:苹果长在什么地方? ——出示立体苹果树,教师边有节奏地朗诵歌词“树上许多红苹果,一个一个摘下来”, 2、边演示把“苹果”一一摘下 ——教师边朗诵“我们喜欢吃苹果,身体健康多快活”,边把摘下的“苹果”送给想要的幼儿,鼓励幼儿做出

操作系统课程设计报告书

题目1 连续动态内存管理模拟实现 1.1 题目的主要研究内容及预期达到的目标 (1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。 (2)实现内存分配和回收功能。 1.2 题目研究的工作基础或实验条件 (1)硬件环境:PC机 (2)软件环境:Windows XP,Visual C++ 6.0 1.3 设计思想 首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。 循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。 1.4 流程图 内存分配流程图,如图1-1所示。

图1-1 内存分配流程图内存回收流程图,如1-2所示。

图1-2 内存回收流程图 1.5 主要程序代码 (1)分配内存 void allocate(char z,float l) { int i,k; float ad; k=-1; for(i=0;i= l && free_table[i].flag == 1) if(k==-1 || free_table[i].length

《操作系统课程设计》题目要求

操作系统课程设计要求 一.设计目的 熟悉Linux编程环境,加强对Linux命令的理解及函数的运用 二.设计内容 1. 在Linux环境下模拟实现简单命令解释器。 (1)要求实现的基本命令包括: pwd //显示当前所在目录的路径名 dir <目录名> //列出指定目录名中的所有目录及文件 cd <目录名或路径>//改变当前工作目录 newdir <目录名> //新建目录 deldir <目录名> //删除目录 exit //退出命令解释程序 (2)可选做的扩展命令包括: rename <旧文件名> <新文件名> //重命名一个文件或目录 find <目录> -name <待查找的文件名> //在指定的目录及其子目录中查找指定的文件date //显示当前日期 (3)提示:整个程序的大致框架可参考如下: while ( exit未被输入) { 接收键盘的一行输入 分析输入的命令 对输入的命令进行处理,调用系统函数实现功能 } 2. 设计要求 (1) 设计必须在Linux环境下进行。 (2) 命令解释程序的提示符为:姓名拼音@ (3) 程序编写中不得使用system()系统调用。 (4) 整个程序必须严格经过测试,完成所有基本功能。源程序应有较详尽的注释。 3.可能用到的系统调用: open(),close(),read(),write(),creat() chdir(), opendir(),readdir(),rewinddir(),closedir(),rmdir(),mkdir() getcwd(), ftw() time(), localtime(), asctime()

苹果和橘子

一、主题背景 说到水果,幼儿都不会陌生。幼儿喜欢水果,对苹果和橘子又特别熟悉。我们通过观察水果外形特征,手口一致点数和区别大小,装扮各类水果,通过歌舞的形式和语言来表达。 在以水果作为主题的各种活动中,幼儿获得与水果密切相关的知识和经验。在吃水果的过程中,幼儿通过学习剥水果,品尝水果的滋味。在游戏中,幼儿通过情境性的进行操作活动,各方面的能力都得到发展。在朗诵儿歌中,幼儿体验到各种水果及其籽的具体形象。秋天正是水果丰收的季节,超市、大街小巷的水果琳琅满目。红红的苹果,留有绿叶的金灿灿的桔子,惹人喜爱。无论是在幼儿园还是家里,水果永远是孩子们的最爱, 苹果和橘子是幼儿在此时节中最喜欢、最常吃的两种水果。 我们将结合小班幼儿具体形象思维的年龄特点,运用多种感官,开展各种活动,比较水果的颜色、外形、口感等特征方面的不同。并借助主题活动的开展,为幼儿提供一些动手的机会,提高他们自我服务的能力。使主题活动的价值能够得到充分的体现和延续。 二、主题活动目标: 1、喜欢吃水果,知道多吃水果对身体有益。 2、愿意探索水果的不同,发现其中的一些奥秘,如有的水果有核,有的没有,水果吃上去的口味不同等。 3、认识几种常见的水果,如西瓜、梨、香蕉等,知道其名称,并尝试用词语、短剧等描述水果的主要特征,如圆圆的西瓜,酸酸的橘子。 4、运用各种感官区分常见水果的主要特征,感知味道等方面的明显差别。 5、乐于自己动手操作,感知水果的不同吃法。 6、愿意用撕、贴、捏等技能制作各种水果的造型。 三、主题活动方案

(附二) 四、渗透性日常活动 1、创设低结构活动材料:运水果、水果对对碰、好吃的水果、水果连连看 2、创设主题墙面《甜甜的水果》,让幼儿通过认识水果的不同形状、装扮各类水果,了解水果的名称及主要特征。 3、将玩具柜装饰成“水果摊”,贴上标签,让幼儿通过观察和摆弄认知水果的外形特征、整体和局部的关系等。 4、用橘子皮进行贴画,将这些作品布置在教室墙面上。 5、提供切开的苹果、梨、橘子、西瓜、猕猴桃等水果照片,让幼儿观察它们的横切面,比较它们的不同。 6、自然角中展示苹果、橘子、梨等水果,供幼儿观察。 五、家园共育 1、提供各种机会,引导幼儿观察、品尝苹果和橘子以及其他各种水果。 2、请家长带幼儿参观水果店,看看各种不同品种的水果。 3、和孩子在家一起做做水果色拉,知道水果中富含各种维生素营养。 4、和孩子一起收集各类水果的图片。 5、养成幼儿喜欢吃各种水果的习惯。 六、主题活动反思 在开展《苹果和橘子》的主题活动中,孩子们在生活化的情境中,去探索水果的外形、品尝水果的滋味。自己动手剥水果尝尝其味道。我们共同收集各种水果的图片,幼儿从闻一闻、摸一摸、猜一猜、尝一尝活动中区分了常见的水果。幼儿通过味觉感受水果的味道并用语言表达。活动中,我们一起布置墙面甜甜的水果,用橘子皮制作菊花展,孩子们看到了自己的作品,都非常的欣喜。在主题活动的开展中,提升对班上幼儿的表现力,让幼儿运用各种感官感知并表达水果的特征,活动中提高幼儿对美的感受力。 结合预设的美术活动,并在学习性区角中加以展现。如在美工区中布置果园

操作系统课程设计报告

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: 13软件工程1班 提交时间: 2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。

二、环境条件 系统: WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。

(4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

操作系统-课程设计

课程设计说明书(操作系统) 题目:进程调度 院系:计算机科学与工程学院 专业班级:信息安全13-2 学号:20133029xx 学生姓名:xx 指导教师:xx 2015年12月15日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

安徽理工大学课程设计(论文)成绩评定表

摘要 现代计算机系统中,进程是资源分配和独立运行的基本单位,是操作系统的核心概念。因而,进程就成为理解操作系统如何实现系统管理的最基本,也是最重要的概念。进程调度是进程管理过程的主要组成部分,是必然要发生的事件。 在现代操作系统中,进程的并发机制在绝大多数时候,会产生不断变化的进程就绪队列和阻塞队列。处于执行态的进程无论是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占CPU。 进程调度的核心是进程调度的算法.在本课程设计中,用良好清晰的界面向用户展示了进程调度中的时间片轮转调度算法。在最终实现的成果中,用户可指定需要模拟的进程数,CPU时间片和进程的最大执行时间,并且选择需要演示的算法,界面将会动态的显示进程调度过程及各个队列的变化。通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观的了解。 关键词:进程,调度,PCB,时间片轮转

目录 1.设计目的 (6) 2.设计思路 (6) 3.设计过程 (8) 3.1流程图 (8) 3.2算法 (8) 3.3数据结构 (10) 3.4源代码 (10) 4.实验结果及分析 (20) 4.1 使用说明 (20) 4.2程序演示 (20) 5.实验总结 (24) 6.参考文献 (24)

幼儿园优秀教案主题活动——苹果和橘子

主题活动——苹果和橘子 一、主题背景: 秋天是一个收获的季节,秋天的果园是一派美丽的景象,红红的苹果,黄黄的橘子,甜甜的柿子……成熟的水果挂满枝头,散发着诱人的香味,秋天的水果真是丰富多彩,而水果又是孩子们熟悉的、喜欢的、每个人对水果都有自己的喜爱。水果的色彩、外形、味道、营养等都蕴涵着丰富的教育资源。有的孩子从家里带来了水果,我们和孩子一起装饰了可爱的水果娃娃,孩子们很喜欢,一有空就会跑过去看看、摸摸,还会和同伴互相讨论呢!由于小班的孩子活泼好动,把游戏融入其中,让孩子在自主活动中不断地丰富知识经验,提升美的感受力、表现力,并养成喜欢吃水果的良好的生活习惯。 二活动内容 (一)内容安排: 活动一:苹果 活动二:香香的水果 活动三:小乌龟去看爷爷 活动四:橘子船 活动五:猜一猜 活动六:奇怪的汽车 活动七:丰收的水果 活动八:好吃的橘子 活动九:好吃的苹果

活动十:水果全家福 活动十一:一个苹果许多梨 (二)活动方案: 活动一:苹果 活动目标:1、根据歌词内容做相应的动作。 2、尝试用常见的几种水果替换原歌词并演唱。 活动准备:1、立体“苹果树”(制作成粘贴式,可随时取放“苹果”)及苹果、葡萄、香蕉等水果实物或图片。 2、幼儿已对这些水果有初步的认识。 3、音乐磁带。 活动过程: 1、学唱歌曲 ——出示苹果实物或图片,引导幼儿讨论:苹果长在什么地方? ——出示立体苹果树,教师边有节奏地朗诵歌词“树上许多红苹果,一个一个摘下来”, 2、边演示把“苹果”一一摘下 ——教师边朗诵“我们喜欢吃苹果,身体健康多快活”,边把摘下的“苹果”送给想要的幼儿,鼓励幼儿做出各种吃苹果的样子。

2017操作系统(含课程设计) - 随堂练习

随堂练习提交截止时间:2017-12-15 23:59:59 当前页有10题,你已做10题,已提交10题,其中答对10题。 1.(单选题) 操作系统是基本的特征是() A、并发 B、共享 C、虚拟 D、异步 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 2.(单选题) 下面不属于操作系统设计目标的是() A、提高资源利用率 B、提高系统吞吐量 C、用户操作计算机更方便 D、并行执行多个进程 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 3.(单选题) 历史上最早出现的操作系统是() A、单道批处理系统 B、多道批处理系统 C、分时系统 D、实时系统 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 4.(单选题) 实时操作系统必须在()内处理完来自外部的事件。 A、响应时间 B、周转时间 C、被控对象规定时间 D、调度时间 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 5.(单选题) 操作系统是对()进行管理的软件。 A、软件 B、硬件 C、计算机资源 D、应用程序 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 6.(单选题) 配置了操作系统的计算机是一台比原来的物理计算机功能更强的计算机,这样的一台计算机只是一台逻辑上的计算机,称为()计算机。 A、并行 B、真实 C、虚拟 D、共享 答题: A. B. C. D. (已提交)

问题解析: 7.(单选题) 操作系统中采用多道程序设计技术提高了CPU和外部设备的() A、利用率 B、可靠性 C、稳定性 D、兼容性 答题: A. B. C. D. (已提交) 参考答案:A 问题解析: 8.(单选题) 在操作系统中,并发性是指若干事件____发生( ) A、在同一时刻 B、在不同时刻 C、在某一时间间隔内 D、依次在不同时间间隔内 答题: A. B. C. D. (已提交) 参考答案:C 问题解析: 9.(单选题) ()操作系统允许在一台主机上同时联接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。 A、网络操作系统 B、批处理操作系统 C、实时操作系统 D、分时操作系统 答题: A. B. C. D. (已提交) 参考答案:D 问题解析: 10.(单选题) 下面关于操作系统的叙述中正确的是 ( ) A、批处理作业必须提交作业控制信息 B、分时系统不一定都具有人机交互功能 C、从响应时间的角度看,实时系统与分时系统差不多 D、由于采用了分时技术,用户可以独占计算机的资源 答题: A. B. C. D. (已提交) 参考答案:A 问题解析:

《苹果和橘子》参考

苹果和橘子主题反思一: 水果是孩子们非常熟悉和喜欢的,同时水果也蕴含着丰富的教育资源。它是观察外形特征的对象,手口一致点数和建构大小概念的材料。在《苹果和橘子》的主题活动中,我们的活动安排得丰富多彩,如有预设的语言活动《香香的水果》、《剥橘子》、《猜一猜》等,活动开展的有声有色,孩子的想象力、语言表达能力、思维能力等得到了发展。 在主题活动开展之前,我们充分利用家长资源,提前沟通请家长,有机会经过水果店的时候带孩子参观参观一下,从来丰富经验。在家长的共同参与下,我们在开课的时候有的孩子从家里带来了各种水果,孩子们对水果产生了浓厚的兴趣,逐渐走进了水果的世界。孩子们从闻一闻、摸一摸、猜一猜、尝一尝活动中区分了常见水果的明显特征,他们把自己感受的味道用语言进行了表达。有的孩子说,弯弯的橘子像小船、弯弯的橘子像眉毛……有的孩子说,黄黄的生梨甜又脆。活动中我们又与孩子们一起装饰了水果娃娃,布置了水果园,孩子们看到了自己的作品,都非常的开心。 在开展《苹果和橘子》的主题活动中,孩子们观察了水果外形特征,认识几种比较特别的水果,感知到水果的多样性,让孩子在玩玩、说说中感知,将逻辑性强、枯燥的数学活动变得有声有色、妙趣横生。在这次主题活动中我们发现,日常经验丰富的孩子往往能与老师互动,反之,还有部分孩子很少参与表现。由此,我们在这次主题活动结束后及时跟家长进行了沟通和反馈,得到了非常好的响应。在主题活动的开展中,对于小班的幼儿我们还是要加强孩子参与更多的表现与表达,充分让孩

子运用各种感官感知并表达水果特征,活动中提升孩子美的感受力、表现力,从而让幼儿更能发现美,成长的过程也更加丰富多彩,进而保证幼儿的健康成长,我想这就是我们幼儿园教育的最终目的,也是我们能带给孩子和家长们最好的成长礼物。 苹果和橘子主题反思一: 水果是孩子们非常熟悉和喜欢的,同时水果也蕴含着丰富的教育资源。它是观察外形特征的对象,手口一致点数和建构大小概念的材料。在《苹果和橘子》的主题活动中,我们的活动安排得丰富多彩,如有预设的语言活动《香香的水果》、《剥橘子》、《猜一猜》等,活动开展的有声有色,孩子的想象力、语言表达能力、思维能力等得到了发展。 在主题活动开展之前,我们充分利用家长资源,提前沟通请家长,有机会经过水果店的时候带孩子参观参观一下,从来丰富经验。在家长的共同参与下,我们在开课的时候有的孩子从家里带来了各种水果,孩子们对水果产生了浓厚的兴趣,逐渐走进了水果的世界。孩子们从闻一闻、摸一摸、猜一猜、尝一尝活动中区分了常见水果的明显特征,他们把自己感受的味道用语言进行了表达。有的孩子说,弯弯的橘子像小船、弯弯的橘子像眉毛……有的孩子说,黄黄的生梨甜又脆。活动中我们又与孩子们一起装饰了水果娃娃,布置了水果园,孩子们看到了自己的作品,都非常的开心。 在开展《苹果和橘子》的主题活动中,孩子们观察了水果外形特征,认识几种比较特别的水果,感知到水果的多样性,让孩子在玩玩、说说中感知,将逻辑性强、枯燥的数学活动变得有声有色、妙趣横生。在这次

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件 系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景

计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下: 钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计论文

学年论文(课程设计)题目:操作系统课程设计 学院数学与计算机学院 学科门类工学 专业网络工程 学号 姓名 指导教师王煜 年月日

河北大学学年论文(课程设计)任务书 (指导教师用表) 指导教师签字: 系主任签字: 主管教学院长签字: 装 订 线

河北大学学年论文(课程设计)成绩评定表学院:数学与计算机学院 装 订 线

摘要 此系统实现了存储管理、设备管理和进程管理。 存储管理部分主要实现主存空间的分配和回收。存储管理采用可移动的可变分区存储管理方式。采用数组来模拟主存,大小为512个字节。 设备管理主要包括设备的分配和回收。模拟系统中有A、B、C三种独占型设备,A设备3个,B设备2个,C设备1个。设备分配时采用采用先来先服务策略。设备回收时唤醒等待设备的进程。 进程管理主要包括进程调度,进程的创建和撤销、进程的阻塞和唤醒,中断作用的实现。其中硬件中的中央处理器用不断循环的函数CPU( )模拟,重要寄存器(如:程序状态寄存器PSW、指令寄存器IR)用全局变量模拟,中断的发现是在函数CPU中加检测PSW 的方式来模拟,时钟的模拟通过timer控件实现。进程控制块的模拟通过数组,本系统最多容纳10个。进程调度时采用时间片轮转调度算法,时间片为5。 关键词:存储管理设备管理进程管理时间片

ABSTRACT The system has storage management, equipment management and process management. The storage management has achieved the allocation and recovery of the main memory space. Variable storage management is used as storage management .We simulate the main memory by array, whose size is 512 bytes. The device management, including the distribution and recovery of devicet. We simulate three devices ,A,B,C. the numbers of them are 3,2,1. The distribution of device used to adopt first-come first-service strategy. It awakes the blocking process when the device is recycled. The process management, including scheduling ,creating revocation ,blocking and waking up the process, the realization of the interruption.We simulate the central processing unit by the cycling function named CPU(),simulate the important register by global variable, simulate the recovering of interruption by checking PSW in the function of CPU(),simulate the clock by the timer control. The simulation of the process control block by array, whose number is up to 10. When the scheduling of the process happens, we use the algorithm of time piece rotation scheduling, and the time piece is 5. Key words: storage device process time

小班美术教案《苹果和橘子》

小班美术教案《苹果和橘子》 设计思路: 苹果和橘子是日常生活中常见的、同时也是幼儿非常熟悉的两种水果,在本次活动中,通过闻一闻、摸一摸、尝一尝等不同的方法,用鼻子、手、嘴巴等不同器官来感受水果的不同特征,以涂色的形式使用炫彩棒表现水果的颜色,让幼儿以绘画的形式进一步感受本次学习的快乐,并在完成的绘画作品中获得成就感。 本次活动分为三个环节,第一个环节:情境导入。通过观察苹果和橘子两种不同的水果,能了解并区分它们各自的特征。第二个环节:在教师准备好的简笔画上为苹果和橘子涂色。鼓励幼儿把颜色涂满,并提醒幼儿尽量不把颜色涂到外面。第三个环节:作品展示。分享交流幼儿的作品,并展开话题鼓励幼儿多吃水果,争做健康宝宝。 活动目标: 1.会运用各种方法从各方面了解感知水果的形状和颜色。 2. 能够使用油画棒进行绘画并且尽量把色彩涂满且不涂到线外。 3.初步体验写生画所带来的快乐和成就感。 活动准备: 1、材料准备:油画棒、16开长方形纸。 2、幼儿知识经验准备:观察苹果、橘子。 3、教师自身准备:苹果、橘子、两幅大树的图片。 活动过程: 一、情境导入——观察不同的水果,区分它们的特征。 师:今天老师遇到了两个从家里溜出来玩的小淘气,看看他们是谁? (出示苹果和橘子并让幼儿观察) 师:他们是什么样的?哪里是相同的?哪里不相同? (幼儿自由交流各自的观察体验) 小结:虽然苹果、橘子都是水果。但长得有的相同有的不同。 二、画苹果、橘子——鼓励幼儿大胆表现水果。 师:苹果和橘子是一对好朋友,希望小朋友能为他俩画像。 1、观察苹果,画出苹果。 师:先仔细看一看苹果的外形是圆圆的、颜色是红色的,苹果还有一个小辫子。从各个角度观察苹果。

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件

系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。

2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<

操作系统(一个小型操作系统的设计与实现)课程设计

南通大学计算机科学与技术学院操作系统课程设计报告 专业: 学生姓名: 学号: 时间:

操作系统模拟算法课程设计报告 设计要求 将本学期三次的实验集成实现: A.处理机管理; B.存储器管理; C.虚拟存储器的缺页调度。 设计流程图 主流程图 开始的图形界面 处理机管理存储器管理缺页调度 先来先服务时 间 片 轮 转 首 次 适 应 法 最 佳 适 应 法 先 进 先 出 L R U 算 法

A.处理机调度 1)先来先服务FCFS N Y 先来先服务算法流程 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中的下一位移到首位 计算并打印进程的完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器的当前时间,即下一刻进程的开始时间 当前时间=前一进程的完成时间+其服务时间 数组为空 结束

2)时间片轮转法 开始 输入进程总数 指针所指的进程是 否结束 输入各进程信息 输出为就绪状态的进程的信息 更改正在运行的进程的已运行时间 跳过已结束的程序 结束 N 指向下一个进程 Y 如果存在下一个进程的话 Y N 输出此时为就绪状态的进程的信息 时间片轮转算法流程图

B.存储器管理(可变式分区管理) 1)首次适应法 分配流程图 申请xkb内存 由链头找到第一个空闲区 分区大小≥xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针 等于 小于延链查找下 一个空闲区 到链尾 了? 作业等待 返回是 否 登记已分配表 返回分配给进程的内存首地址 开始

操作系统课程设计题目

实验一进程调度 一、实验目的 观察、体会Linux 系统的进程调度方法,并通过一个简单的进程调度模拟程序的实现,加深对进程调度算法,进程切换的理解。 二、实验内容 采用动态优先数的方法,编写一进程调度程序模拟程序。模拟程序只进行相应的调度模拟操作,不需要实际程序。 [提示]: (1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为: 进程名 指针 要求运行时间 优先数 状态 其中,进程名——作为进程的标识,假设五个进程的进程名分别为P1,P2,P3,P4,P5。 指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。 要求运行时间——假设进程需要运行的单位时间数。 优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态——可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。 (4) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实习是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行: 优先数-1 要求运行时间-1 来模拟进程的一次运行。 提醒注意的是:在实际的系统中,当一个进程被选中运行时,必须恢复进程的现场,让它占有处理器运行,直到出现等待事件或运行结束。在这里省去了这些工作。 (5) 进程运行一次后,若要求运行时间?0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间=0,则把它的状态修改成“结束”(E),且退出队列。 (6) 若“就绪”状态的进程队列不为空,则重复上面(4)和(5)的步骤,

相关文档
相关文档 最新文档