Archive for Abril, 2008

SIMULACIÓN DEL ALGORITMO SJF

Miércoles, Abril 30th, 2008

A continuación pongo en consideración una pequeña simulación del algoritmo “primero el trabajo más corto” (shortest – job - first).
La aplicación esta desarrollada en Java bajo el IDE NetBeans 6.0 y permite crear procesos(en realidad son solo objetos no hilos) que ocuparán cada uno un tiempo de ejecución o uso de CPU determinado por el usuario.

Esto funciona de la siguiente manera al establecer cuantos procesos se realizarán el usuario deberá especificar que tiempo tardará cada uno en terminar, para luego la aplicación planifique su ejecución empezando por el más pequeño.

Corrida 1

Una vez encontrado el orden exacto cada proceso ocupará el thread(hilo) central de la aplicación haciéndola detener para que nadie pueda ocuparlo mientras él se ejecuta, además cabe recalcar que por ser una demostración se estima el tiempo en segundos(el hacerlo unidades menores no daría mucha idea de lo que sucede). Luego abandonará el control del hilo y pasará al siguiente. Al terminar todos los procesos la aplicación también terminará.

Ejecución de los procesos…

Puedo decir que este algoritmo presenta varias ventajas pues al realizar los procesos con menor tiempo primero el tiempo de espera disminuye considerablemente aunque en una situación real la única dificultad es el cálculo de la ráfaga de CPU que como mencioné en un post anterior es aproximada.

El programa se puede descargar desde aqui

Saludos,

Asignacion de Memoria

Martes, Abril 29th, 2008

El algoritmo que utiliza Windows Server 2003 de asignación de memoria dinámica es:

Algoritmo Buddy

Asignador buddy de bloques binarios. En este sistema, la memoria se asigna desde un gran bloque de memoria que es tamaño potencia de dos. Si el bloque es más del doble de grande de lo necesario, se parte en dos. Se selecciona una de las dos mitades, y el proceso se repite (comprobando el tamaño otra vez y partiendo si se necesita) hasta que el bloque sea justamente el necesitado.
Todos los segmentos de memoria de un tamaño particular son guardados en una lista enlazada ordenada o una estructura de datos en árbol. Cuando se libera un bloque, se compara con su buddy(vecino). Si los dos están libres, son combinados y colocados en la lista de bloques buddy de siguiente mayor tamaño.

Integrantes: Margarita Nero
Fabricio Sánchez
Patricia Flores

algoritmomemoria.doc

Gestión de Memoria: S.O. Leopard

Martes, Abril 29th, 2008

La memoria virtual se ha convertido en una de las características o requisitos más comunes de los sistemas operativos modernos. La buena o mala gestión de la misma diferencia también unos sistemas operativos de otros.
El peculiar sistema de manejo de memoria virtual de Mac OS se creó con el objetivo de mantener la compatibilidad absoluta con todos los programas existentes, sin necesidad ni siquiera de que estas aplicaciones supieran que estaban trabajando en un entorno de este tipo La estructura del sistema de memoria de Mac OS desde sus orígenes exige que al arrancar un programa se conozca previamente la cantidad de memoria que requiere. Por tanto el gestor de memoria le asigna un espacio fijo y si el usuario quiere modificar este espacio, por ejemplo para poder abrir documentos de mayor tamaño, es necesario salir del programa, modificar este valor y volver a arrancarlo. Un problema adicional, que tampoco existe en otros sistemas, es que la distribución de la memoria virtual es inamovible. Es decir, si se arranca un programa A que consume 4 Megabytes, a continuación otro programa B que consume 1 Megabyte y por último un programa C que consume 2 Megabytes, al salir del programa B se crea un espacio libre de un Megabyte entre A y C. Este espacio libre no puede unirse a otros del sistema operativo para asignárselo al programa, por lo que en él sólo pueden cargarse aplicaciones que consuman un Megabyte o menos de memoria.
Todos los demás sistemas operativos también soportan el uso de memoria virtual y las aplicaciones no están limitadas a un tamaño inicial de memoria asignado. Según un programa va necesitando memoria, se la solicita al sistema operativo que se la va otorgando hasta que se agota toda la memoria disponible en el sistema. En todos los casos, la cantidad de memoria virtual disponible en el sistema se determina al arrancar el sistema operativo. Si el usuario recibe el mensaje de que el sistema se mueve en unos límites bajos de memoria disponible el usuario tendrá que plantearse ampliar el espacio reservado para memoria virtual reduciendo un poco más el precioso espacio del disco duro.
Otro aspecto importante, cuando se habla de la gestión de la memoria, es cómo se implementa la protección de memoria, la cual impide a unos procesos acceder al espacio vital de otros. Tanto en Windows 95 como en Windows NT aún sigue ocurriendo que ciertas aplicaciones en determinadas circunstancias dejan completamente colgada a la máquina, por ello es muy aconsejable en entornos NT dejar el servidor dedicado a sus menesteres (Servir) y no utilizarlo como un puesto más de la red. En teoría estos sistema operativos disponen, al igual que Rhapsody, BeOS y Unix, de un entorno de memoria protegido que evita que un programa puede acceder al espacio de memoria utilizado por otra aplicación; sin embargo, muchos programadores han documentado formas para que, voluntaria o involuntariamente, una aplicación evite esta protección, aunque es más difícil en el caso de Windows NT, por lo que este último puede considerarse más seguro.

Referencia:
-http://www.idg.es/macworld/content.asp?idart=45388

Integrantes:
- Elba Encalada
- Ruth Hidalgo
- Leonardo Sarango

gOS; un Sistema Operativo basado en Google??

Martes, Abril 29th, 2008

gOS
gOS, es una nueva distribución basada en el reconocido sabor Linux: Ubuntu Gutsy 7.10, además de eso otra de sus características principales es su utilidad Web 2.0
Esta idea surgió con la finalidad de ofrecer un escritorio simple y más amigable para cualquier usuario común.
Cabe tomar muy en cuenta que este Sistema Operativo no lleva la “g” por hacer referencia a “Google”, sino se trata de un proyecto y la letra “g” se refiere a “green”.

dibujo1.jpg

Esta distribución usa un entorno muy liviano como es el Enlightenment 17 (interfaz gráfica), en lugar de los conocidos entornos de escritorio Gnome o KDE. Consta de una variada lista de programas de escritorio, que se pueden ubicar en la barra inferior de la pantalla, aplicaciones tal como, el OpenOffice para oficina, Skipe para VOIP, Pidgin para chat, Thunderbind para correo, Gnome Baker para grabar CD’s y DVD’s, GIMP para la edición de imagenes, Rhythmbox para reproducción de música, Xine para la edición de videos, Firefox, además de esto incluye el Webrunner, que es un navegador usado para hacer búsquedas directas en google, entre otras aplicaciones.
Además aplicaciones online, y a esto se refiere la utilidad Web 2.0, ya que incluye programas y enlaces a sitios Web 2.0 reconocidos tal como: Google Mail, Google News, Google Calendar, Google Maps, Google Docs, Google Products, Meebo, Youtube, Blogger, facebook, Wikipedia, Faqly, box.net, etc.
Se puede decir que esta distribución no es precisamente pensada en usuarios peso pesado, pero su amigabilidad y sus aplicaciones la hacen una buena alternativa para los usuarios Web 2.0.

Simulación de la Planificación RR

Lunes, Abril 28th, 2008

En post anteriores se detalló el funcionamiento de esta planificación. La misma que consistía en una estructura FIFO de forma circular en donde cada proceso ocuparía la cpu dependiendo de un determinado tiempo conocido como “quantum”.

La aplicación realizada bajo el entorno java simula este algoritmo de la siguiente manera.
Lo primero que se realiza es solicitar la cantidad de procesos que se utilizarán la cpu y de la misma manera el tiempo quantum que podrá estar cada uno dentro, este tiempo se lo deberá dar en segundos(sin fracciones).

A continuación el programa generará con un proceso aleatorio los intervalos de tiempo que cada procesa necesita, para demostración esta controlado que no sea ni cero ni un valor mayor a 11(solo para no dejar la máquina trabajando mucho tiempo).
Ejecución 1
Una vez determinados los procesos serán almacenados en una estructura dinámica en este caso un ArrayList de donde serán extraídos en orden para que pasen a ocupar la CPU.
Algo que vale notar es que cuando un proceso ingresa a la cpu, el programa detiene el Thread principal de la aplicación el número de segundos que indique el quantum, por es mejor no colocar intervalos grandes(mayores 10). Esto da la apariencia d que si fuera un proceso real se estaría ejecutando.
Ejecución 2
Y finalmente cumplidos los tiempos de cada proceso son eliminados de la estructura hasta que esta quede vacía y se da por terminada la aplicación.

Es importante enfatizar que el problema de este Algoritmo es que el tiempo de entrega de un proceso dependerá mucho del tiempo quantum y en menor cantidad de su tiempo necesario.
Saludos,

ALGORITMOS DE PLANIFICACIÓN

Viernes, Abril 25th, 2008

Planificación FCFS

El algoritmo FCFS(first come – first-served), conocido como primero en llegar, primero en ser atendido.
Dentro de este campo de planificación es el más sencillo, pues es similar a una cola de estructura (FIFO)
Este algoritmo trabaja de la siguiente manera, al entrar un proceso al estado de “listo”, el bloque de control de proceso se ubica en el final de la cola, entonces el cpu al estar libre retirará de esta cola el primer elemento(cabeza).
Es decir, en este algoritmo el tiempo de espera par que un proceso se ejecute es incierto y no mínimo. Pudiendo así ejecutarse dentro de la cpu un proceso que consuma demasiado tiempo, atrasando a otros procesos y dejando la cpu sin trabajo por lapsos de tiempo.
En definitiva este algoritmo hace que los procesos pequeños esperen a que un grande abandone la cpu. Una gran desventaja.

Planificación en SJF
El algoritmo “primero el trabajo más corto” (shortest – job - first). Establece para la planificación una relación entre proceso y ráfaga de la CPU. Es decir, al liberarse la cpu ingresará el proceso con la menor ráfaga de tiempo, el más pequeño primero, y si existiera más de un proceso con igual valor, pues se aplicaría dentro de este el algoritmo anterior(FCFS)
Este algoritmo presenta una gran ventaja, pues el tiempo de espera será mucho menor, pues mientras los procesos de tiempo inferior terminan y ocupan tiempo en operaciones de E/S, el cpu se ocupa de resolver el proceso con mayor tiempo, un algoritmo muy óptimo.
Pero, el mayor problema radica en como saber el tiempo de ráfaga para cada proceso???? Pues no existe manera de saber cual será la siguiente. Pero podemos aproximarnos, diciendo que será similar a las anteriores, que mediante una fórmula matemática podríamos decir que:
Tn +1 =  Tn + (1 - )Tn
De donde Tn es la ráfaga anterior y  es el peso relativo de la historia reciente. Lo que garantiza una aproximación mas considerable.

Planificación por Prioridad
Esta clase de algoritmo utiliza como relación entre proceso, tiempo de la cpu y prioridad. De donde el proceso con mayor ráfaga tendrá la menor prioridad y viceversa.
Y donde la cpu podrá ser utilizada por el proceso con mayor prioridad.
Dentro de este algoritmo la prioridad es asignada ya sea interna o externamente. Pero, uno de los problemas que puede presentar esta planificación es la de un bloqueo indefinido. Es decir, pudiera darse el caso que existan procesos de prioridad alta que harían que los procesos de prioridad baja queden bloqueados hasta que logren colocarse en la cpu o perderse cuando nuestro sistema se caiga, es decir una espera indefinida.
Es aquí donde se puede aplicar una técnica conocida como envejecimiento, que ira incrementando la prioridad de los procesos en espera cada determinado tiempo hasta que estos se ejecuten. Y a mi parecer este es una de las mejores soluciones.

Planificación con RR
La planificación por turnos o Round Robin, se basa en una estructura FIFO de forma circular, en donde se asigna a los procesos un intervalo de tiempo para la cpu, conocido como quantum. En donde se establece la regla de que un proceso no podrá estar dos veces seguidas en la cpu a menos que sea el único en el estado de listo.
Este algoritmo trabaja de la siguiente manera, al ingresar el proceso a utilizar la cpu, este estará dentro del tiempo(quantum), si al terminar este tiempo el proceso no ha terminado es colocado al final y se ingresará otro proceso. Pero si el proceso pasa ha estado terminado antes de terminar su quantum, también será extraído de la cpu.
En cambio este algoritmo presenta complicaciones pues el tiempo de entrega de un proceso dependerá mucho más del tiempo(quantum) que de la magnitud del proceso.

Saludos,

PLANIFICACIÓN DE LA CPU

Jueves, Abril 24th, 2008

La planificación de uso de la CPU, es la base de todo sistema operativo, ya que una planificación correcta permitirá un uso máximo, lo que causaría un rendimiento “optimo”.
Pero, como hace un Sistema Operativo para planificar sus procesos???

Partamos pues de que un proceso necesita una cantidad de tiempo para ser realizado(cambiar de estado a terminado), pero como un mismo proceso no puede ocupar la cpu hasta que termine se permitirá a cada proceso un tiempo de uso de cpu, también conocido como “ráfaga de la cpu”, y para esto se almacenara toda la información del proceso, (como su estado, tiempo de espera, entre otros) dentro de un “bloque de control del proceso” (PCB) que determinará todo el estado de un proceso.

Pero, como “sabe”(literalmente) el Sistema Operativo que proceso es el correcto o más necesario para que utilice la cpu???

Pues a decir verdad cada sistema operativo implementa criterios de planificación, basados en algoritmos que intentan que la cpu no este ociosa(en tiempo de espera Ej. E/S)

Entre los criterios que se emplean para la planificación puedo mencionar:

• Utilización de la CPU.- Tenerla tan ocupada como sea posible. Esto es un 40% en Sistemas ligeros y 90% en sistemas pesados.

• Rendimiento.- Calculado mediante el número de procesos que es capaz de terminar en una unidad de tiempo.

• Tiempo de Entrega.- Se considera como el tiempo desde que un proceso inicia hasta que termina.

• Tiempo de espera.- Lo considero como la suma de periodos de tiempo en la cola de listos.

• Tiempo de Respuesta.- Es el tiempo que se requiere para que un proceso empiece a responder y no el tiempo para dicha respuesta.

Siguiendo estos criterios, se deduce que lo más deseable es que aumenten los dos primeros puntos(Utilización - rendimiento) y disminuyan todos los demás.

Para conseguir este fin se utilizan algoritmos que distribuyen o planifican procesos, por ahora solo los enunciaré para en un próximo post detallarlos:

• FCFS
• SJF
• Procesos por Prioridad
• RR

Saludos,

EVOLUCION DEL WINDOWS SERVER 2003

Lunes, Abril 21st, 2008

Windows Server 2003 es un sistema operativo permite manejar gran cantidad de función de servidores, pertenece a la familia Windows de la marca Microsoft. En términos generales, Windows Server 2003 se podría considerar como un Windows XP modificado, no con menos funciones, sino que estas están deshabilitadas por defecto para obtener un mejor rendimiento y para centrar el uso de procesador en las características de servidor.
Windows Server 2003 en sus funciones de servidor, trabaja de manera centralizada o distribuida. Más seguro, fiable y con mayor disponibilidad que cualquiera de sus antecesores, mejorado y ampliado para aprovechar mejor los beneficios de la plataforma .NET.

Para conocer mas descargalo aqui:

sistemas_operativos_windows.doc

Realizado por:

Patricia Flores
Margarita Nero
Fabricio Sanchez

¿Como serán los sistemas operativos del futuro?

Domingo, Abril 20th, 2008

martes 10 de julio de 2007
CONTROLAR LA COMPUTADORA CON LA MENTE

No todo pasa por las manos…

La firma de ingeniería eléctrica y medicina, Guger Technologies, es la primera Empresa en poner en el mercado un dispositivo que hace posible a un usuario el poder controlar una computadora mediante el pensamiento.
La Interfase Cerebro – Computador (”Brain – Computer Interface” o “BCI”) de la Compañía, actúa mediante la detección de actividad mental por medio de señales electrofisiológicas, tales como, los impulsos de un electroencefalograma (EEC) o los de un electrocorticograma (”ECoG”). Estos impulsos son traducidos a señales de control; de esta forma, las ondas cerebrales pueden ser usadas para ingresar datos o mover el cursor en un monitor de un Computador.
El controlar dispositivos con la mente ha sido por mucho tiempo un tema recurrente en la ciencia ficción y mientras éste continúa alimentando a la imaginación la Compañía creadora del dispositivo indica que existen muchos usos prácticos. Uno de los principales esfuerzos por los cuales se ha implementado este producto y que debido a él se le entregó el Gran Premio 2007 a la Tecnología de la Comunicación y la Informática Europea (”ICT”), esta semana en el Show CeBIT en Alemania, es permitir que pacientes completamente paralizados puedan comunicarse e interactuar con el medio ambiente.

SERVER WINDOWS 2003

Domingo, Abril 20th, 2008

En un sistema multiprogramado, múltiples procesos son mantenidos en memoria principal. Multiprogramación surgió con la idea de tener algún proceso ejecutándose en todo momento con la finalidad de maximizar el uso del CPU. Tiempo Compartido fue concebido con la idea de conmutar o cambiar continuamente el CPU entre procesos de forma tal que los usuarios puedan interactuar con sus programas mientras están corriendo.

A continuiacion se relaciona lo que es la planificacion de procesos con el tema de proyecto en nuestro caso Server Windows 2003

proyecto.doc