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); else particles[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