miércoles, 6 de noviembre de 2013

Investigación 4 - Procesos

FORK:

Fork es un término que proviene del inglés y cuya traducción, en términos de informáticos, es "derivación".
La palabra se utiliza para denominar la realización de un software tomando como base otro existente y en vistas a cumplir objetivos diferentes o a una ampliación de ellos.
Joomla, por ejemplo es un "fork" de Mambo.
Libre Office es un "fork" de OpenOffice.
CoolNovo es un fork del navegador Chrome.
Y hay muchos ejemplos más.

La definición de Wikipedia dice:
Una bifurcación (fork en inglés), en el ámbito del desarrollo de software, es la creación de un proyecto en una dirección distinta de la principal u oficial tomando el código fuente del proyecto ya existente. Comúnmente se utiliza el término inglés. Como resultado de la bifurcación se pueden llegar a generar proyectos diferentes que cubren necesidades distintas aunque similares. El término también puede ser usado para representar la ramificación de cualquier trabajo.


____________________________________________________________________

PROCESO ZOMBIE

Zombie (Z).- Todo proceso al finalizar avisa a su proceso padre, para que éste elimine su entrada de la tabla de procesos. En el caso de que el padre, por algún motivo, no reciba esta comunicación no lo elimina de la tabla de procesos. En este caso, el proceso hijo queda en estado zombie, no está consumiendo CPU, pero sí continua consumiendo recursos del sistema.

En sistemas operativos basados en UNIX, un proceso zombie (también llamado proceso difunto), es un proceso que ha completado su ejecución, pero que todavía tiene una entrada en la tabla de procesos.

Esta entrada todavía se necesita para permitir al proceso que inició el proceso (ahora zombie) pueda leer su estado de salida. El comando kill no tiene efecto sobre un proceso zombie.
Cuando un proceso finaliza, toda la memoria y recursos asociados con este son desasignados para que puedan ser usados por otros procesos. De todas maneras, la entrada del proceso permanece en la tabla de procesos. El proceso padre puede leer el estado de salida del proceso hijo ejecutando la llamada del sistema wait. Luego el estado de zombie es eliminado.

Después de que el zombie es eliminado, el ID del proceso y la entrada en la tabla de procesos pueden ser reusados. De todas maneras, si un proceso padre falla en llamar un wait, el zombie permanecerá en la tabla de procesos (en ciertas situaciones esto puede ser deseable, por ejemplo, en el caso de que el padre cree otro hijo para asegurar que no será localizado en el mismo ID de proceso).

Un proceso zombie no es lo mismo que un proceso huérfano. Este último es un proceso que permanece en ejecución, pero su padre ha muerto.
Los procesos zombies son identificados en la salida del comando "ps" con la presencia la la letra Z en la columna STAT.





____________________________________________________________________

KILL

El comando #kill se usa para detener procesos en segundo plano.

En Unix y los sistemas operativos tipo Unix, kill es un comando utilizado para enviar mensajes sencillos a los procesos ejecutándose en el sistema. Por defecto el mensaje que se envía es la señal de terminación (SIGTERM), que solicita al proceso limpiar su estado y salir
kill se ofrece siempre como programa independiente, pero la mayoría de las shells tienen intrínsecamente comandos kill que pueden diferir levemente de ella.

Unix cuenta con mecanismos de seguridad para evitar que usuarios no autorizados puedan finalizar otros procesos. Básicamente, para que un proceso pueda enviar una señal a otro, deben tener el mismo propietario, o ser enviada por el superusuario.

Microsoft Windows tiene el comando taskkill "tskill" para finalizar procesos. También se soporta kill mediante "Cygwin" o "Microsoft Windows Services for UNIX (WSU)"



____________________________________________________________________

(Transición de estados a dos niveles)




____________________________________________________________

PLANIFICACION A DOS NIVELES


Los esquemas analizados hasta ahora suponen que todos los procesos ejecutables están en la memoria principal.

Si la memoria principal es insuficiente, ocurrirá lo siguiente:

- Habrá procesos ejecutables que se mantengan en disco.
- Habrá importantes implicaciones para la planificación, tales como las siguientes:
   * El tiempo de alternancia entre procesos para traer y procesar un proceso del disco es        considerablemente mayor que el tiempo para un proceso que ya está en la memoria principal.
   * Es más eficiente el intercambio de los procesos con un planificador de dos niveles.

El esquema operativo de un planificador de dos niveles es como sigue:

1- Se carga en la memoria principal cierto subconjunto de los procesos ejecutables.
2- El planificador se restringe a ellos durante cierto tiempo.
3- Periódicamente se llama a un planificador de nivel superior para efectuar las siguientes tareas:
      a)- Eliminar de la memoria los procesos que hayan permanecido en ella el tiempo suficiente.
      b)- Cargar a memoria los procesos que hayan estado en disco demasiado tiempo.
4- El planificador de nivel inferior se restringe de nuevo a los procesos ejecutables que se encuentren en la memoria.
5- El planificador de nivel superior se encarga de desplazar los procesos de memoria a disco y viceversa.



____________________________________________________________________

No hay comentarios.:

Publicar un comentario