Programa de Memoria Fija
description
Transcript of Programa de Memoria Fija
PROGRMA DE MEMORIA FIJA
INTRODUCCIÓN
La memoria estática es memoria que se reserva en el momento de la compilación, antes de comenzar a ejecutarse el programa. El inconveniente de la reserva estática es que la cantidad de memoria se reserva siempre antes de conocer los datos concretos del problema a resolver. Eso lleva a reservar siempre un máximo de memoria que en la mayor parte de las ocasiones no se va a necesitar. La reserva estática tampoco se adapta bien a la memoria real disponible en el ordenador en que se está ejecutando el programa.
OBJETIVO
Crear un programa de simulación de procesos, utilizando memoria fija.
import java.awt.*;import javax.swing.*;import java.util.*;import java.awt.event.*;import java.awt.*;import java.applet.*;import java.util.Random;
public class ParticleApplet extends Applet {
protected Thread[] threads=null;protected final ParticleCanvas canvas = new ParticleCanvas(300);public int cont=0;public int segmentos[]=new int [5];
public void init() {
add(canvas);}
public void paint(Graphics g) { g.setColor(Color.black); g.fillRect(0,0,800,800);
}protected Thread makeThread(final Particle p){
Runnable runloop=new Runnable(){
public void run(){System.out.println("runloop valor= "+p.valor+"de: "+p.nombre);
try{
System.out.println("runloop volumen= "+p.volumen);for(;;){
if(p.valor==0){
System.out.println("runloop volumen= "+p.volumen);
p.move();
canvas.repaint();
Thread.sleep(1300);}
}}catch(InterruptedException e){return;}
}};return new Thread(runloop);
}
public synchronized void start(){
segmentos[0]=300;segmentos[1]=500;segmentos[2]=800;segmentos[3]=1100;segmentos[4]=1400;int n=15;int v=15;int x1=15;int y2=101;
int e;if(threads==null){
Particle[] particles= new Particle[n];
JOptionPane.showMessageDialog(null, "PROGRAMA DE ADMINISTRACÌÓN DE MEMORIA","MEMORIA",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, "EL MAXIMO DE PROCESOS ES 4\n EL TAMAÑO MAX DE UN PROCESO ES DE 300","MEMORIA",JOptionPane.INFORMATION_MESSAGE);
do{System.out.println("Programa MEMORIA");String respc;
respc = JOptionPane.showInputDialog("1)Nuevo PROCESO \n2) VER PROCESOS");
e = Integer.parseInt(respc);if(e==1){
respc = JOptionPane.showInputDialog(" ¿ Cantidad de TAMAÑO ? ");
int c = Integer.parseInt(respc);if(c<301){
cont+=1;if((cont%5)==0){
y2+=200;x1=5;
}if(cont==1)
particles[cont-1]=new Particle("PROCESO "+cont,x1,y2,16,16,false,0,c);
elseparticles[cont-1]=new
Particle("PROCESO "+cont,x1,y2,16,16,false,v,c);v-=1;
y2+=73;}else
JOptionPane.showMessageDialog(null, "EL MAXIMO DE TIEMPO ES 300","MEMORIA",JOptionPane.INFORMATION_MESSAGE);
}}while(e!=2&&cont!=5);
canvas.setParticles(particles);threads=new Thread[cont];
for(int i=0;i<cont;++i){
System.out.println("numero de hilos "+threads.length);threads[i]=makeThread(particles[i]);
threads[i].setPriority(i+1);threads[i].start();
}
}
}
public synchronized void stop(){if(threads != null){
for(int i=0;i<threads.length;++i)threads[i].interrupt();
threads=null;}
}
}
EJECUCIÓN DEL PROGRAMA
CREAMOS UN PROCESO CON LA PRIMERA OPCION, Y DESPUÉS LE DAMOS SU TAMAÑO.
EN ESTE EJEMPLO CREAMOS TRES PROCESOS Y DESPUÉS EL PROGRAMA NOS MUESTRA LA SIMULACIÓN