搜档网
当前位置:搜档网 › 多进程同步橘子苹果问题完整报告(附源代码)

多进程同步橘子苹果问题完整报告(附源代码)

多进程同步橘子苹果问题完整报告(附源代码)
多进程同步橘子苹果问题完整报告(附源代码)

一、课程设计目的

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

二、课程设计内容与要求

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.生产苹果算法

2.消费苹果算法

3.绘图算法

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

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

四、系统测试与调试分析

1、系统测试

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

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

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

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

六、程序清单

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.geom.Ellipse2D;

import java.awt.geom.Rectangle2D;

import java.awt.*;

import https://www.sodocs.net/doc/9a6013489.html,.MalformedURLException;

import java.util.ArrayList;

import javax.print.attribute.AttributeSet;

import javax.swing.*;

import org.w3c.dom.css.Rect;

public class Apple

{

/**

* 生成一个缓冲池类对应的对象叫myStorage,以后所有的生产者线程和消费者线程都对这个myStorage对象进行操作!

*/

static MyStorage myStorage = new MyStorage();

private JFrame window ;

// 该数组用来存取生产橘子和苹果的线程,分别20个

static Increaseapple[] appleincrease = new Increaseapple[20];

static Increaseorange[] orangeincrease = new Increaseorange[20];

// 该数组用来存放消费者线程,最多20个

static Decreaseapple[] appledecrease = new Decreaseapple[20];

static Decreaseorange[] orangedecrease = new Decreaseorange[20];

// 代表两个生产者对应线程的数目,i1为苹果,i2为橘子

static int i1 = 0;

static int i2 = 0;

// 代表消费者对应线程的数目,d1为苹果,d2为橘子

static int d1 = 0;

static int d2 = 0;

static TextArea textArea1;

static TextArea textArea2;

static JProgressBar progressbar = new JProgressBar(0,20);

static Draw draw1;

static JTextField t1;

static JTextField t2;

static JTextField t3;

static JTextField t4;

public void createMainWindow()

{

window = new JFrame("橘子苹果问题");

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setSize(700,700);

window.setResizable(false);

JPanel panel = new JPanel();

panel.setLayout(null);

JLabel App1 = new JLabel("生产苹果者数:");

App1.setBounds(10, 500,100,25);

panel.add(App1);

progressbar.setStringPainted(true);

progressbar.setBounds(200,640,300,30);

panel.add(progressbar);

progress p = new progress(myStorage);

p.start();

draw1 = new Draw(myStorage);

draw1.setBounds(0,0,700,300);

panel.add(draw1);

t1 = new JTextField();

t1.setBounds(120,500,60,25);

t1.addKeyListener(new KeyAdapter()

{

public void keyTyped(KeyEvent event)

{

char ch = event.getKeyChar();

if (ch < '0' || ch > '9')

{

event.consume();

}

}

});

panel.add(t1);

JButton inapp1 = new JButton("增加");

inapp1.setBounds(190, 500, 60, 25);

panel.add(inapp1);

inapp1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (i1 < 20)

{

increaseappleProducer();

t1.setText(String.valueOf(i1));

}

}

});

JButton deapp1 = new JButton("减少");

deapp1.setBounds(260, 500, 60, 25);

panel.add(deapp1);

deapp1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (i1 > 0)

{

decreaseappleProducer();

t1.setText(String.valueOf(i1));

}

}

});

JLabel Org1 = new JLabel("生产橘子者数:"); Org1.setBounds(10, 550,100,25);

panel.add(Org1);

t2 = new JTextField();

t2.setBounds(120,550,60,25);

t2.addKeyListener(new KeyAdapter()

{

public void keyTyped(KeyEvent event)

{

char ch = event.getKeyChar();

if (ch < '0' || ch > '9')

{

event.consume();

}

}

});

panel.add(t2);

JButton inorg1 = new JButton("增加");

inorg1.setBounds(190, 550, 60, 25);

panel.add(inorg1);

inorg1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (i2 < 20)

{

increaseorangeProducer();

t2.setText(String.valueOf(i2));

}

}

});

JButton deorg1 = new JButton("减少");

deorg1.setBounds(260, 550, 60, 25);

panel.add(deorg1);

deorg1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (i2 > 0)

{

decreaseorangeProducer();

t2.setText(String.valueOf(i2));

}

}

});

//**消费者的数目设置苹果核橘子*/

JLabel App2 = new JLabel("消费苹果者数:");

App2.setBounds(330,500,100,25);

panel.add(App2);

t3 = new JTextField();

t3.setBounds(440,500, 60, 25);

panel.add(t3);

JButton inapp2 = new JButton("增加");

inapp2.setBounds(510,500, 60, 25);

panel.add(inapp2);

inapp2.addActionListener(new ActionListener()

{

@Override

public void actionPerformed(ActionEvent e)

{

if (d1 < 20)

{

increaseappleConsumer();

t3.setText(String.valueOf(d1));

}

}

});

JButton deapp2 = new JButton("减少");

deapp2.setBounds(580,500, 60, 25);

panel.add(deapp2);

deapp2.addActionListener(new ActionListener()

{

@Override

public void actionPerformed(ActionEvent e)

{

if (d1 > 0)

{

decreaseappleConsumer();

t3.setText(String.valueOf(d1));

}

}

});

JLabel Org2 = new JLabel("消费橘子者数:"); Org2.setBounds(330,550,100,25);

panel.add(Org2);

t4 = new JTextField();

t4.setBounds(440,550, 60, 25);

panel.add(t4);

JButton inorg2 = new JButton("增加");

inorg2.setBounds(510,550, 60, 25);

panel.add(inorg2);

inorg2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (d2 < 20)

{

increaseorangeConsumer();

t4.setText(String.valueOf(d2));

}

}

});

JButton deorg2 = new JButton("减少");

deorg2.setBounds(580,550, 60, 25);

panel.add(deorg2);

deorg2.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (d2 > 0)

{

decreaseorangeConsumer();

t4.setText(String.valueOf(d2));

}

}

});

/**

* 这里的代码是实现了设计要求中的第三条:生产者速度可调。*/

JLabel appsp1 = new JLabel("苹果生产速度:");

appsp1.setBounds(10,400,100,25);

panel.add(appsp1);

final JTextField tsp1 = new JTextField();

tsp1.setBounds(120, 400, 60, 25);

tsp1.setText(String.valueOf(Increaseapple.speed));

tsp1.addKeyListener(new KeyAdapter()

{

public void keyTyped(KeyEvent event)

{

char ch = event.getKeyChar();

if (ch < '0' || ch > '9')

{

event.consume();

}

}

});

panel.add(tsp1);

JButton appalter1 = new JButton("修改");

appalter1.setBounds(190, 400, 60, 25);

panel.add(appalter1);

// 在这里实现了控制生产速度的功能

appalter1.addActionListener(new ActionListener()

{

@Override

public void actionPerformed(ActionEvent e)

{

String str1 = tsp1.getText();

long i = Long.parseLong(str1);

if (i <= 10000 && i >= 0)

{

Increaseapple.speed = i;

}

else if (i < 0)

{

Increaseapple.speed = 0;

tsp1.setText(String.valueOf(Increaseapple.speed));

}

else

{

Increaseapple.speed = 10000;

tsp1.setText(String.valueOf(Increaseapple.speed));

}

}

});

/**

* 这里的代码是实现了设计要求中的第三条:生产者速度可调。*/

JLabel orgsp1 = new JLabel("橘子生产速度:");

orgsp1.setBounds(10,450,100,25);

panel.add(orgsp1);

final JTextField tsp2 = new JTextField();

tsp2.setBounds(120, 450, 60, 25);

tsp2.setText(String.valueOf(Increaseapple.speed));

tsp2.addKeyListener(new KeyAdapter()

{

public void keyTyped(KeyEvent event)

{

char ch = event.getKeyChar();

if (ch < '0' || ch > '9')

{

event.consume();

}

}

});

panel.add(tsp2);

JButton orgalter1 = new JButton("修改");

orgalter1.setBounds(190, 450, 60, 25);

panel.add(orgalter1);

// 在这里实现了控制生产速度的功能

orgalter1.addActionListener(new ActionListener()

{

@Override

public void actionPerformed(ActionEvent e)

{

String str1 = tsp2.getText();

long i = Long.parseLong(str1);

if (i <= 10000 && i >= 0)

{

Increaseapple.speed = i;

}

else if (i < 0)

{

Increaseapple.speed = 0;

tsp2.setText(String.valueOf(Increaseorange.speed));

}

else

{

Increaseapple.speed = 10000;

tsp2.setText(String.valueOf(Increaseorange.speed));

}

}

});

/**

* 这里的代码是实现了设计要求中的第三条:消费者速度可调。*/

JLabel appsp2 = new JLabel("苹果消费速度");

appsp2.setBounds(260,400, 100, 25);

panel.add(appsp2);

final JTextField tsp3 = new JTextField();

tsp3.setBounds(370,400, 60, 25);

tsp3.setText(String.valueOf(Decreaseapple.speed));

tsp3.addKeyListener(new KeyAdapter()

{

public void keyTyped(KeyEvent event)

{

char ch = event.getKeyChar();

主题活动——苹果和橘子

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

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

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

linux进程控制 实验报告

长安大学 操作系统实验报告 实验课程:操作系统 实验名称:linux进程控制 学院:信息学院 专业:软件工程 学号:2406090106 姓名:刘建 日期:2012-5-09

一、实验目的 熟悉进程的创建过程,了解系统调用函数fork() 和execl()。 二、实验内容 1、阅读实例代码fork1,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握系统调用fork( )的用法,返回值的意义。 2、阅读实例代码fork2,并编辑、编译、运行,记录程序的运行结果,尝试给出合理的解释,查阅有关资料,掌握在程序中运行一个操作系统命令和运行一个程序的方法。 3、修改fork2,使之能把运行的命令和程序作为参数传给fork2。 三、设计思想 1、程序框架

pid = -1 pid = 0pid> 0 2、用到的文件系统调用函数 fork() 和execl() 四、调试过程 1、测试数据设计 (1)fork1 命名程序1: 编写程序1:

编译程序1: 运行程序1: (2)fork2

编写程序2: 运行程序2:

(3)修改fork2 编写修改程序2: 修改后的运行结果: 2、测试结果分析 (1)对于程序1:因为系统调用fork()函数是一次调用两次返回值,而且先生成子进程还是父进程是不确定的,所以第一次执行生成子进程的时候返回的pid = 0,判断pid!=-1,所以输出了I’m the child. I’m the parent. 第二次,执行父进程的时候,返回的是子进程的进程号pid> 0,即pid的值仍然不为-1,所以又输出了一次I’m the child. I’m the parent。 (2)对于程序2:第一次调用fork()函数时,由于执行的是子进程还是父进程是随机的,所以第一次对父进程返回的是子进程的进程号(大于0),即pid> 0,所以输出I’m the parent. Program end.当第二次执行子进程时返回值是0,即pid = 0,所以输出I’m the child. 并调用了execl()函数,查看了指定路径中的文件。

实验一进程调度实验报告书

淮海工学院计算机工程学院实验报告书 课程名:《操作系统原理A》 题目:进程调度 班级:软件132 学号:2013122907 姓名:孙莹莹

操作系统原理实验——进程调度实验报告 一、目的与要求 1)进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用C 语言编写一个进程调度模拟程序,使用优先级或时间片轮转法实现进程调度。本实验可加深对进程调度算法的理解。 2)按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果) 3)于2015年4月18日以前提交本次实验报告(含电子和纸质报告,由学习委员以班为单位统一打包提交)。 二、实验内容或题目 1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。 2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。 3)程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。 4)本次实验内容(项目)的详细说明以及要求请参见实验指导书。 三、实验步骤与源程序 (1)流程图

(2)实验步骤 1)PCB的结构:优先级算法中,设PCB的结构如下图所示,其中各数据项的含义如下: Id:进程标识符号,取值1—5。 Priority:优先级,随机产生,范围1—5。 Used:目前已占用的CPU时间数,初值为0;当该进程被调用执行时,每执行一个时间片,Used加1。 Need:进程尚需的CPU时间数,初值表示该进程需要运行的总时间,取值范围为5—10。并随机产生,每运行一个时间片need减1;need为0则进程结束。 Status:进程状态R(运行),W(就绪),F(完成);初始时都处于就绪状态。 Next:指向就绪队列中下一个进程的PCB的指针。 2)初始状态及就绪队列组织: 5个进程初始都处于就绪状态,进程标识1—5,used初值都为0。各进程的优先级随机产生,范围1—5。处于就绪状态的进程,用队列加以组织,队列按优先级由高到低依次排列,队首指针设为head,队尾指针为tail。 3)调度原则以及运行时间的处理: 正在执行的进程每执行一个时间片,其优先级减1(允许优先级为负)。进程调度将在以下情况发生:当正在运行的程序其优先级小于就绪队列队首进程的优先级时。程序中进程的运行时间以逻辑时间片为单位。

苹果和橘子

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

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

进程管理实验报告

实验2过程管理实验报告学生号姓名班级电气工程系过程、过程控制块等基本原理过程的含义:过程是程序运行过程中对数据集的处理,以及由独立单元对系统资源的分配和调度。在不同的数据集上运行程序,甚至在同一数据集上运行多个程序,是一个不同的过程。(2)程序状态:一般来说,一个程序必须有三种基本状态:就绪、执行和阻塞。然而,在许多系统中,过程的状态变化可以更好地描述,并且增加了两种状态:新状态和终端状态。1)就绪状态,当一个进程被分配了除处理器(CPU)以外的所有必要资源时,只要获得了处理器,进程就可以立即执行。此时,进程状态称为就绪状态。在系统中,多个进程可以同时处于就绪状态。通常,这些就绪进程被安排在一个或多个队列中,这些队列称为就绪队列。2)一旦处于就绪状态的进程得到处理器,它就可以运行了。进程的状态称为执行状态。在单处理器系统中,只有一个进程在执行。在多处理器系统中,可能有多个进程在执行中。3)阻塞状态由于某些事件(如请求输入和输出、额外空间等),执行进程被挂起。这称为阻塞状态,也称为等待状态。通常,处于阻塞状态的进程被调度为-?这个队列称为阻塞队列。4)新状态当一个新进程刚刚建立并且还没有放入就绪队列中时,它被称为新状态。5)终止状态是

什么时候-?进程已正常或异常终止,操作系统已将其从系统队列中删除,但尚未取消。这就是所谓的终结状态。(3)过程控制块是过程实体的重要组成部分,是操作系统中最重要的记录数据。控制块PCB记录操作系统描述过程和控制过程操作所需的所有信息。通过PCB,一个不能独立运行的程序可以成为一个可以独立运行的基本单元,并且可以同时执行一个进程。换句话说,在进程的整个生命周期中,操作系统通过进程PCB管理和控制并发进程。过程控制块是系统用于过程控制的数据结构。系统根据进程的PCB来检测进程是否存在。因此,进程控制块是进程存在的唯一标志。当系统创建一个进程时,它需要为它创建一个PCB;当进程结束时,系统回收其PCB,进程结束。过程控制块的内容过程控制块主要包括以下四个方面的信息。过程标识信息过程标识用于对过程进行标识,通常有外部标识和内部标识。外部标识符由流程的创建者命名。通常是一串字母和数字。当用户访问进程时使用。外部标识符很容易记住。内部标识符是为了方便系统而设置的。操作系统为每个进程分配一个唯一的整数作为内部标识符。通常是进程的序列号。描述性信息(process scheduling message)描述性信息是与流程调度相关的一些有关流程状态的信息,包括以下几个方面。流程状态:表

操作系统的进程调度 实验报告

《计算机操作系统2》实验报告 实验一题目:操作系统的进程调度 姓名:学号:12125807 实验日期:2014.12 实验要求: 1.设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。 进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。 2.调度程序应包含2~3种不同的调度算法,运行时可任意选一种,以利于各种算法的分 析比较。 3.系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程 实验目的: 1.进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要 求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。例如,简单轮转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。 实验内容: 1.编制和调试示例给出的进程调度程序,并使其投入运行。 2.自行设计或改写一个进程调度程序,在相应机器上调试和运行该程序,其功能应该不亚 于示例。 3.直观地评测各种调度算法的性能。 示例: 1.题目 本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理,程序进程的运行时间以时间片为单位计算。各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。 进程控制块结构如下:

PCB 进程标识数 链指针 优先数/轮转时间片数 占用CPU时间片数 进程所需时间片数 进程状态 进程控制块链结构如下: 其中:RUN—当前运行进程指针; HEAD—进程就绪链链首指针; TAID—进程就绪链链尾指针。 2.算法与框图 (1) 优先数法。 进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 (2) 简单轮转法。 进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。(3) 程序框图如下图所示。

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

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

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

操作系统实验报告(进程调度算法)

操作系统实验报告 实验1 进程调度算法 报告日期:2016-6-10 姓名: 学号: 班级: 任课教师: 实验1 进程调度算法

一、实验内容 按优先数调度算法实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。 三、实验原理 设计一个按优先数调度算法实现处理器调度的程序。 (1) 假定系统有五个进程,每一个进程用一个进程控制块PCB来代表,进程控制块的格式为: P1,P2,P3,P4,P5。 指针——按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程中的指针为“0”。 要求运行时间——假设进程需要运行的单位时间数。 优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态——可假设有两种状态,“就绪”状态和“结束”状态。五个进程的初始状态都为“就绪”,用“R”表示,当一个进程运行结束后,它的状态为“结束”,用“E”表示。 (2) 在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数”和“要求运行时间”。 (3) 为了调度方便,把五个进程按给定的优先数从大到小连成队列。用一单元指出队首进程,用指针指出队列的连接情况。例: K2K3K4K5 PCB1 PCB2 PCB3 PCB4 PCB5 (4) 处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优先数就减“1”。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行: 优先数-1 要求运行时间-1 来模拟进程的一次运行。

进程管理实验报告

进程的控制 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new

program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。 3 .实验步骤 (1)gedit创建进程1.c (2)使用gcc 1.c -o 1编译并./1运行程序1.c #include #include #include #include void mian(){ int id; if(fork()==0) {printf(“child id is %d\n”,getpid()); } else if(fork()==0) {printf(“child2 id %d\n”,getpid()); } else {id=wait(); printf(“parent id is %d\n”,getpid()); }

进程调度算法模拟实验

华北科技学院计算机系综合性实验 实验报告 课程名称操作系统C 实验学期2012至2013学年第2学期学生所在系部计算机系 年级专业班级 学生姓名学号 任课教师杜杏菁 实验成绩 计算机系制

《操作系统C》课程综合性实验报告 开课实验室:基础六机房2013年6月3日 实验题目进程调度算法模拟 一、实验目的 通过对进程调度算法的模拟,进一步理解进程的基本概念,加深对进程运行状态和进程调度过程、调度算法的理解。 二、设备与环境 1.硬件设备:PC机一台 2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C \C++\Java等编程语言环境。 三、实验内容 (1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。 (2)每个用来标识进程的进程控制块PCB可用结构来描述,包括以下字段: ?进程标识数ID。 ?进程优先数PRIORITY,并规定优先数越大的进程,其优先权越高。 ?进程已占用CPU时间CPUTIME。 ?进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变为0。 ?进程的阻塞时间STARTBLOCK,表示当进程再运行STARTBLOCK个时间片后,进程将进 入阻塞状态。 ?进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将 转换成就绪状态。 ?进程状态STATE。 ?队列指针NEXT,用来将PCB排成队列。 (3)优先数改变的原则: ?进程在就绪队列中呆一个时间片,优先数增加1。 ?进程每运行一个时间片,优先数减3。 (4)为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程。

《苹果和橘子》参考

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

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

进程调度算法实验报告

操作系统实验报告(二) 实验题目:进程调度算法 实验环境:C++ 实验目的:编程模拟实现几种常见的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较 各种算法的性能优劣。 实验内容:编程实现如下算法: 1.先来先服务算法; 2.短进程优先算法; 3.时间片轮转调度算法。 设计分析: 程序流程图: 1.先来先服务算法 开始 初始化PCB,输入进程信息 各进程按先来先到的顺序进入就绪队列 结束 就绪队列? 运行 运行进程所需CPU时间 取消该进程 2.短进程优先算法

3.时间片轮转调度算法 实验代码: 1.先来先服务算法 #include #define n 20 typedef struct { int id; //进程名

int atime; //进程到达时间 int runtime; //进程运行时间 }fcs; void main() { int amount,i,j,diao,huan; fcs f[n]; cout<<"请输入进程个数:"<>amount; for(i=0;i>f[i].id; cin>>f[i].atime; cin>>f[i].runtime; } for(i=0;if[j+1].atime) {diao=f[j].atime; f[j].atime=f[j+1].atime; f[j+1].atime=diao; huan=f[j].id; f[j].id=f[j+1].id; f[j+1].id=huan; } } } for(i=0;i #define n 5 #define num 5 #define max 65535 typedef struct pro { int PRO_ID; int arrive_time;

浙工大过程控制实验报告

浙工大过程控制实验报告 202103120423徐天宇过程控制系统实验报告 实验一:系统认识及对象特性测试 一实验目的 1了解实验装置结构和组成及组态软件的组成使用。 2 熟悉智能仪表的使用及实验装置和软件的操作。 3熟悉单容液位过程的数学模型及阶跃响应曲线的实验方法。 4学会有实际测的得单容液位过程的阶跃响应曲线,用相关的方法分别确定它们的参数,辨识过程的数学模型。二实验内容 1 熟悉用MCGS组态的智能仪表过程控制系统。 2 用阶跃响应曲线测定单容液位过程的数学模型。三实验设备 1 AE2000B型过程控制实验装置。 2 计算机,万用表各一台。 3 RS232-485转换器1只,串口线1根,实验连接线若干。四实验原理 如图1-1所示,设水箱的进水量为Q1,出水量为Q2,水箱的液面高度为h,出水阀V2固定于某一开度值。根据物料动态平衡的关系,求得: 在零初始条件下,对上式求拉氏变换,得:

式中,T为水箱的时间常数(注意:阀V2的开度大小会影响到水箱的时间常数),T=R2*C,K=R2为单容对象的放大倍数, R1、R2分别为V1、V2阀的液阻,C 为水箱的容量系数。 阶跃响应曲线法是指通过调节过程的调节阀,使过程的控制输入产生一个阶跃变化,将被控量随时间变化的阶跃响应曲线记录下来,再根据测试记录的响应曲线求取输入输出之间的数学模型。本实验中输入为电动调节阀的开度给定值OP,通过改变电动调节阀的开度给定单容过程以阶跃变化的信号,输出为上水箱的液位高度h。电动调节阀的开度op通过组态软件界面有计算机传给智能仪表,有智能仪表输出范围为:0~100%。水箱液位高度有由传感变送器检测转换为4~20mA的标准信号,在经过智能仪表将该信号上传到计算机的组态中,由组态直接换算成高度值,在计算机窗口中显示。因此,单容液位被控对象的传递函数,是包含了由执行结构到检测装置的所有液位单回路物理关系模型有上述机理建模可知,单容液位过程是带有时滞性的一阶惯性环节,电动调节阀的开度op,近似看成与流量Q1成正比,当电动调节阀的开度op为一常量作为阶跃信号时,该单容液位过程的阶跃响应为 需要说明的是表达式(2-3)是初始量为零的情况,如果是在一个稳定的过程下进行的阶跃响应,即输入量是在原来的基础上叠加上op的变化,则输出表达式是对应原来输出值得基础上的增

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

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

进程调度算法实验报告doc

进程调度算法实验报告 篇一:操作系统进程调度算法模拟实验报告 进程调度算法模拟 专业:XXXXX 学号:XXXXX 姓名:XXX 实验日期:20XX年XX月XX日 一、实验目的 通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。 二、实验要求 编写程序实现对5个进程的调度模拟,要求至少采用两种不同的调度算 法分别进行模拟调度。 三、实验方法内容 1. 算法设计思路 将每个进程抽象成一个控制块PCB, PCB用一个结构体描述。 构建一个进程调度类。将进程调度的各种算法分装在一个类中。类中存 在三个容器,一个保存正在或未进入就绪队列的进程,一个保存就绪的进程,另一个保存已完成的进程。还有一个PCB实例。主要保存正在运行的进程。类中其他方法都是围绕这三个容器可以这个运行中的PCB展开。

主要用到的技术是STL中的vector以维护和保存进程容器、就绪容器、 完成容器。 当程序启动时,用户可以选择不同的调度算法。然后用户从控制台输入 各个进程的信息,这些信息保存到进程容器中。进程信息输入完毕后,就开始了进程调度,每调度一次判断就绪队列是否为空,若为空则系统时间加一个时间片。判断进程容器中是否有新的进程可以加入就绪队列。 2. 算法流程图主程序的框架: ();//先来先服务 ();//最短进程优先调度//简单时间片轮转//最高优先数优先//输入进程信息 ();.m_WaitQueue.empty()||.m_ProcessQueue.empt() (); (); 进程调度过程: ; 3. 算法中用到的数据结构 struct fcfs{//先来先服务算法从这里开始char name[10];float arrivetime;float servicetime;float starttime;float finishtime;float zztime;float

过程控制实验报告

《过程控制实验》 实验报告

第一章、过程控制实验装置的认识 一、过程控制实验的基本内容及概述 本次过程控制实验主要是对实验室的水箱水位进行控制。水箱液位控制系统是一个简单控制系统,所谓简单液位控制系统通常是指由一个被控对象、一个检测变送单元(检测元件及变送器)、以个控制器和一个执行器(控制阀)所组成的单闭环负反馈控制系统,也称为单回路控制系统。 简单控制系统有着共同的特征,它们均有四个基本环节组成,即被控对象、测量变送装置、控制器和执行器。 图1-1 水箱液位控制系统的原理框图 这是单回路水箱液位控制系统,单回路调节系统一般指在一个调节对象上用一个调节器来保持一个参数的恒定,而调节器只接受一个测量信号,其输出也只控制一个执行机构。本系统所要保持的恒定参数是液位的给定高度,即控制的任务是控制水箱液位等于给定值所要求的高度。 二、主要设备 1)水路装置的认识 过程控制实验用的水路装置图如下

图1-2 水路图 由水路装置图我们看到,装置主要有水箱,交流电动泵,热炉,管道,电动阀,电磁阀,流量计,液位传感器,温度传感器组成,可以构成一个完整的过程控制实验平台。从上图我们可以看出,装置主要分为两大部分,第一水路,管道,热炉,水箱等等物理对象,第二是传感器,执行机构等等的控制部分的装置。 实验装置具体介绍如下:

b)电气连接图 由电气装置的图我们可以看到,所有的电器连接都在这里,主要是一些传感器信号,电动驱动信号,用于电动装置的驱动。 见附件 c)操作面板图: 从操作面板上我们可以看到主要是由四个表,由P909构成,用于测量控制压力、流量、液位、温度的测量以及控制,PV代表反馈测量,外给定可以用于串级控制,OUT用于输出信号,以上接口均使用4-20mA标准 见附件 第二、三章、实验系统的认知(包括力控软件,P909,实验装置) a)力控软件的安装 首先使用光盘里的Setup.exe安装力控软件的主题部分,然后将IO Servers文件夹拷到力控软件的安装目录下,安装IO Servers驱动 然后打开力控软件,寻找到力控软件的目录,点击开发模式,然后找到COM设置的部分,如图

实验一处理器调度实验报告

处理器调度一、实验内容 选择一个调度算法,实现处理器调度。 二、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。 当就绪状态进程 个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下处理器调度,帮助学生加深了解处理器调度的工作。 三、实验题目 设计一个按优先数调度算法实现处理器调度的程序 提示: (1)假定系统有五个进程,每一个进程用一个进程控制块PCB来代表。进 程控制块的格 式为: 其中,进程名----作为进程的标识,假设五个进程的进程名分别是R, P2, P3, P4,R。 指针—按优先数的大小把五个进程连成队列,用指针指出下一个进程的进程控制块

首地址,最后一个进程中的指针为“ 0”。 要求运行时间-- 假设进程需要运行的单位时间数。 优先数-赋予进程的优先数,调度时总是选取优先数大的进程先执行。 状态-可假设有两种状态,“就绪”状态和“结束“状态,五个进程的初 始状态都为 “就绪“状态,用“ R”表示,当一个进程运行结束后,它的状态变为“结束”, 用“ E”表示。 (2)在每次运行你所设计的处理器调度程序之前,为每个进程任意确定它的“优先数” 和“要求运行时间”。 (3)为了调度方便,把五个进程按给定的优先数从大到小连成队列,用一单元指出队首 进程,用指针指出队列的连接情况。例: 队首标志 (4)处理器调度总是选队首进程运行。采用动态改变优先数的办法,进程每运行一次优 先数就减“ 1”。由于本实验是模拟处理器调度,所以,对被选中的进程并不实际的 启动运行,而是执行: 优先数- 1 要求运行时间-1 来模拟进程的一次运行提醒注意的是:在实际的系统中,当一个进程被选中运

操作系统进程调度实验报告

实验一进程调度实验 专业:XXXXX 学号:XXXXX 姓名:XXX 实验日期:20XX年XX月XX日

一、实验目的 通过对进程调度算法的模拟加深对进程概念和进程调度算法的理解。 二、实验要求 编写程序实现对5个进程的调度模拟,要求至少采用两种不同的调度算法分别进行模拟调度。 三、实验方法内容 1.算法设计思路 将每个进程抽象成一个控制块PCB,PCB用一个结构体描述。 构建一个进程调度类。将进程调度的各种算法分装在一个类中。类中存在三个容器,一个保存正在或未进入就绪队列的进程,一个保存就绪的进程,另一个保存已完成的进程。还有一个PCB实例。主要保存正在运行的进程。类中其他方法都是围绕这三个容器可以这个运行中的PCB展开。 主要用到的技术是STL中的vector以维护和保存进程容器、就绪容器、完成容器。 当程序启动时,用户可以选择不同的调度算法。然后用户从控制台输入各个进程的信息,这些信息保存到进程容器中。进程信息输入完毕后,就开始了进程调度,每调度一次判断就绪队列是否为空,若为空则系统时间加一个时间片。判断进程容器中是否有新的进程可以加入就绪队列。 2.算法流程图 主程序的框架: 开始 选择调度算法void FCFS();//先来先服务 void SJF();//最短进程优先调度void RR();//简单时间片轮转void PD();//最高优先数优先 输入进程信息 将输入容器中以满足进入条件的进程调入就绪队列 判断就绪容器和输入容器是否为空!processScheduler.m_WaitQueue.empty()|| !processScheduler.m_ProcessQueue.empt() void ProcessQueueProcess(); //查看当前时间下,有无进程加 入。若有则把该进程调入就绪队列 void PCBInput();//输入进程信息 Y 打印各进程信息 进行统计计算周转 时间等 结束void PCBDisplay(); //打印当前状况下。就绪队列、完成队列、运行中的进程信息 void SchedulerStatistics(); //调度统计,计算周转时间等 按照选择的算法开 始选择就绪队列的 进程开始执行 void ProcessSelect(); //若当前就绪队列不为空则根 据选择的调度算法开始调度,否则,系统时间加一个时间片.以等待新的进程到

相关主题