Modelo de Procesos
Modelo de Procesos
Modelo de Procesos
Programa
Es una secuencia de instrucciones escrita en un lenguaje dado.
Software de aplicación:
o Diseñado para facilitar al usuario la realización de un determinado tipo de trabajo.
o Ejemplos:
Programas de comunicación de datos
Multimedia
Presentaciones
Diseño gráfico
Cálculo
Finanzas
Correo electrónico
Proceso
Son instrucciones de un programa (un programa en ejecución), que consume recursos
tales como:
o Memoria, CPU, dispositivos de E/S, stack.
Son entidades activas reconocidas por el SO, que tienen asociados un conjunto de
atributos:
o Código del programa ejecutable, datos, stack, registros e identificador único.
El SO es el encargado de crear y destruir los procesos.
Los procesos pueden llamar y ser llamados por otros procesos.
Modelo de procesos
El sistema operativo para permitir la multiprogramación y la concurrencia requiere de un modelo
de procesos que ofrezca el soporte necesario para proveerla.
PCB
Es una estructura de datos que sirve para llevar el control de los procesos y recursos
asignados que cada uno de ellos tiene.
Le sirve al sistema operativo para una descripción en tiempo real del proceso, durante el
tiempo de vida de este.
Le ayuda al sistema operativo para poder asignar y desasignar recursos a las procesos
La información que incluye el PCB puede cambiar entre sistemas operativos, pero
básicamente se cuenta con:
Identificador del proceso (PID).
Estado del proceso.
Listo
En espera
bloqueado.
Contador de Programa: Dirección de la próxima instrucción a ejecutar.
Valores de registro de CPU. Se utilizan también en el cambio de contexto.
Espacio de direcciones de memoria.
Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU.
Lista de recursos asignados (incluyendo descriptores de archivos y sockets
abiertos).
Estadísticas del proceso.
Datos del propietario (owner).
Permisos asignados.
Signals pendientes de ser servidos. (Almacenados en un mapa de bits)
Tabla de Procesos
Es la estructura donde se mantienen los PCBs de los procesos usuarios. Aquí se
encuentran registrados los procesos que ya fueron reconocidos por el sistema de operación,
independientemente del estado en que se encuentren. Se actualiza a medida que se van creando
procesos, eliminando procesos o se producen transiciones entre los estados.
New: El proceso está siendo creado pero aún no ha sido admitido al pool de procesos
ejecutables por el sistema de operación.
Running: El proceso está ejecutando instrucciones. En un sistema con un solo procesador,
sólo habrá un proceso en estado running
Waiting o Blocked: El proceso espera por algún evento
Ready: El proceso está listo para ser ejecutado y espera por que se le asigne tiempo de
CPU.
Terminated o Exit: Ha finalizado su ejecución ya sea de forma normal o anormal. En este
estado los procesos permanecen mientras el sistema de operación desasigna sus recursos
y extrae información necesaria para tareas de contabilidad.
Los 3 estados principales (corriendo, listo y esperando) proveen una forma sistemática de modelar
el comportamiento, y muchos sistemas de operación utilizan solo estos 3 estados, hay sistemas de
operación que añaden dos mas como lo es el caso de Unix:
Procesos huérfanos:
Cuando un proceso padre muere antes que el proceso hijo, este proceso queda huérfano y es
adoptado por el proceso ``init''
Procesos zombies:
Un proceso que termina no puede abandonar el sistema hasta que su padre acepte su código de
retorno. Si el proceso padre ya está muerto, es adoptado por el proceso ``init'' el cual siempre
acepta los códigos de retorno de sus hijos. Sin embargo, si el proceso padre está vivo pero nunca
ejecuta un wait(), el código de retorno del proceso nunca será aceptado y tal proceso se convierte
en zombie.
Un proceso zombie no tiene ni código, ni stack, ni datos, pero continúa habitando en la tabla de
procesos (que es de tamaño fijo)
Transiciones de estado de los procesos
New a Ready: el sistema de operación moverá un proceso del estado New al estado Ready
cuando esté preparado para tomar un proceso adicional.
Ready a Running: cuando es tiempo de seleccionar un nuevo proceso para correr, el
sistema de operación selecciona uno de los procesos en el estado Ready (despachar).
Running a Terminated: el proceso que estaba corriendo actualmente es terminado por el
sistema de operación en forma normal o anormal.
Running a Ready: Cuando se le agota el tiempo de CPU al proceso que está corriendo y
ocurre la interrupción del timer, este proceso pasa a estado Ready a esperar una próxima
oportunidad.
Running a Waiting: un proceso se pone en estado de espera si requiere algo por lo cual
debe esperar. Normalmente este requerimiento es realizado a través de llamadas al
sistema (por operaciones de E/S, por ejemplo).
Waiting a Ready: un proceso realiza esta transición cuando ocurre el evento por el cual
estaba bloqueado.
Ready a Exit: un proceso padre puede terminar un proceso hijo en cualquier momento, o
si el padre termina, todos los procesos hijos asociados con el padre pueden terminar.
Waiting a Exit: bajo las mismas condiciones de la transición anterior.
Modelo de 2 estados
Modelo de 3 estados
Modelo de 5 estados
Modelo de 7 estados
Referencias
http://es.wikipedia.org/wiki/Programa_(computaci%C3%B3n)
http://es.wikipedia.org/wiki/Software_de_sistema
http://es.wikipedia.org/wiki/Software_de_aplicaci%C3%B3n
http://so-wiki.wetpaint.com/page/Procesos
http://ci.ldc.usb.ve/~spd/Docencia/ci-3821/Tema3/node1.html
http://so-wiki.wetpaint.com/page/BCP%2C+Cambios+e+Interrupciones
http://so-wiki.wetpaint.com/page/Estados+de+procesos [Recomendado para saber más de los
diferentes modelos de estados]
http://ci.ldc.usb.ve/~spd/Docencia/ci-3821/Tema3/node2.html