El concepto de proceso en sistemas operativos

February 15, 2024 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download El concepto de proceso en sistemas operativos...

Description

CONCEPTO DE PROCESO "Una actividad abarca una serie de acciones dedicadas a lograr que cierto objetivo muy definido, mediante la ejecución de uno o más programas asociados con algunos datos." David Barron Sistemas Operativos Modernos; este autor considera que un proceso es diferente de un programa, pues lo considera una invocación dinámica de uno o más programas con un conjunto de datos. Afirma también que no necesariamente un proceso tiene que estar asociado a un programa, pues puede resultar por completo una función del hardware. Los elementos necesarios para la existencia de un proceso son: el código, los datos, memoria y un procesador para ejecutarlo. Todos los sistemas operativos de multiprogramación están construidos en torno al concepto de proceso. Por lo tanto, los requisitos principales que deben satisfacer un S.O. están expresados haciendo referencia a procesos. El término proceso fue utilizado, en principio, por los diseñadores del sistema Multics en la década de 1960. Desde entonces, al proceso, en alguna medida asimilado a tarea se le han dado muchas definiciones. Las que siguen son algunas de ellas: -

Un programa que se está ejecutando Una actividad asincrónica El “espíritu animado” del procedimiento El “emplazamiento del control” de un procedimiento que está siendo ejecutado Aquello que se manifiesta por la existencia en el sistema operativo de un “bloque de control de proceso” Aquella entidad a la cual son asignados los procesadores La unidad “despachable” Evidentemente el concepto de proceso resulta bastante abstracto y poco conciso, pero es la estructura que mejor se adapta para dar un manejo rápido y eficiente de los recursos de un computador. Trataremos ahora de definir o al menos acercarnos a la imagen de un proceso. ¿ PORQUÉ PROCESOS? 

Simplicidad: El mejor modo de resolver un gran problema es dividirlo en problemas más pequeños y darle tratamiento a ellos.



Velocidad: Si un proceso se detiene o bloquea otro puede ser ejecutado.



Seguridad: Limitamos los errores que pueden ocurrir a los de ese proceso, se tiene más control.

¿QUE HAY EN UN PROCESO? Para representar un proceso debemos tener toda la información que nos de el estado de ejecución de un programa.     

El código y datos del programa (si no se trata de un proceso de hardware) Una pila de ejecución El control de programa indicando la próxima instrucción Los valores actuales de registro del procesador Conjunto de recursos del sistema.

El objetivo principal es propender a simulación de que cada proceso tiene para si una computadora para ejecutarse, incrementando de esta forma la posibilidad de la concurrencia, de la ejecución en paralelo de varias tareas. Algunos autores opinan que la abstracción del proceso equivale a: PROCESO= CPU (virtual). "Un solo procesador puede ser compartido entre varios procesos con cierto “algoritmo de planificación” , el cual determina cuándo detener el trabajo en un proceso y dar servicio a otro distinto", Tanembaum.

En cuanto a las jerarquías de procesos es necesario señalar que los Sistemas Operativos deben disponer de una forma de crear y destruir procesos cuando se requiera durante la operación, teniendo además presente que los procesos pueden generar procesos hijos mediante llamadas al Sistema Operativo, pudiendo darse ejecución en paralelo. ¿QUIÉN ES EL ENCARGADO DE LOS PROCESOS? El “núcleo” del Sistema Operativo controla todas las operaciones que implican procesos y representa solo una pequeña porción del código de todo el Sistema Operativo.[Deitel]. ESTADOS DE UN PROCESO MODELO DE PROCESOS CON DOS ESTADOS El modelo más sencillo que puede construirse tiene en cuenta que, en un momento dado, un proceso puede estar ejecutándose o no. Entonces, un proceso puede estar en uno de dos estados: Ejecución y No Ejecución. Cuando el sistema operativo crea un nuevo proceso, éste entra en el sistema en el estado de No Ejecución. De este modo, el proceso existe, es conocido por el sistema operativo y está esperando la oportunidad de ejecutarse. Aquellos procesos que no están ejecutándose tienen que guardarse en algún tipo de cola, para que esperen su turno de ejecución. Creación de procesos Cuando se añade un proceso a los que ya está administrando el sistema operativo, hay que construir las estructuras de datos que se utilizan para administrar el proceso y asignar el espacio de direcciones que va a utilizar el proceso. MODELO DE PROCESOS CON CINCO ESTADOS

Ejecutando: si suponemos un computador con un único procesador, entonces sólo podrá haber un proceso en este estado. Activo o Listo: proceso que está preparado para ejecutar, en cuanto se le dé la oportunidad

Bloqueados: proceso que no puede ejecutar hasta que se produzca cierto suceso, como la terminación de una operación de E/S. Nuevo o creado: proceso que se acaba de crear, pero que aún no ha sido admitido por el sistema operativo en el grupo de procesos ejecutables. Terminado: un proceso que ha sido excluido del grupo de procesos ejecutables, porque se detuvo o porque fue abandonado por alguna razón. Estados de proceso Durante su existencia un proceso pasa por una serie de estados discretos. Varias circunstancias pueden hacer que un proceso cambie de estado. Se dice que un proceso se está ejecutando (es decir, está en estado de ejecución), si tiene en ese momento la UCP. Un proceso se dice que está listo (es decir, en estado de listo) cuando podría usar una UCP, si hubiera una disponible. Se dice que un proceso está bloqueado (es decir, en estado bloqueado) si espera que ocurra algo (como la terminación de una entrada/salida) para poder ponerse en marcha. Hay más estados de proceso, pero por el momento nos quedaremos con estos tres. Consideremos un sistema con una sola UCP por simplicidad aun cuando hacer la extensión hacia el multiprocesamiento no es difícil. Solo puede estar corriendo un proceso al mismo tiempo, pero puede haber varios procesos listos y varios más bloqueados. Por tanto establecemos una lista de listos para los procesos listos y una lista de bloqueados para los que están bloqueados. La lista de listos se mantiene en orden de prioridades de manera que el siguiente proceso que reciba la UCP sea el primer proceso de la lista. La lista de bloqueados está desordenada -los procesos no se desbloquean ( o sea, no quedan listos) en orden de prioridades; en lugar de esto, los procesos se desbloquean en el orden en que tienen lugar los eventos que están esperando. Transiciones de estado de proceso

Cuando un trabajo es admitido en el sistema, se crea un proceso equivalente, y es insertado en la lista de listos. El proceso se va moviendo gradualmente hacia la cabeza de esta relación a medida que se completan los procesos anteriores. Cuando el proceso llega a la cabeza de la lista, y cuando la UCP se encuentra disponible, el proceso recibe la UCP y se dice que hace una transición de estado, del estado de listo al estado de ejecución. La asignación de la UCP al primer proceso de la lista de listos es llamado despacho, y es ejecutado por la entidad del sistema llamada despachador. Indicamos esta transición en forma funcional: despacho (nombre_proceso): listo en ejecución mientras el proceso tenga la UCP se dice que está en ejecución. Para prevenir que cualquier proceso monopolice el sistema, ya sea accidental o maliciosamente, el sistema operativo ajusta un reloj de interrupción del hardware para permitir al usuario ejecutar su proceso durante un intervalo de tiempo específico (cuanto). Si el proceso no abandona voluntariamente la UCP antes de que expire el intervalo, el reloj genera una interrupción, haciendo que el sistema operativo recupere el control. El sistema operativo, entonces, hace que el proceso que anteriormente se hallaba en estado de ejecución pase al de listo, y hace que el primer proceso de la lista de listos pase al estado en ejecución. Estas transiciones de estado se indican como: tiempo excedido(nombre_proceso): en ejecución a listo y despacho(nombre_proceso): listo o en ejecución Si un proceso que se encuentra en estado de ejecución inicia una operación de entrada/salida antes de que termine su cuanto, el proceso voluntariamente abandona la UCP (es decir, el proceso se bloquea a sí mismo hasta la terminación de la operación de entrada/salida). Esta transición de estado es: bloque(nombre_proceso): en ejecución a bloqueado. La única otra transición posible en nuestro modelo de tres estados ocurre cuando acaba

una operación de entrada/salida (o alguna otra causa por la que esté esperando el proceso). El proceso cambia del estado bloqueado al estado listo. La transición es despertar(nombre_proceso): bloqueado a listo Con esto tenemos definidos cuatro posibles transiciones de estado: despacho(nombre_proceso): listo à en ejecución tiempo excedido(nombre_proceso): en ejecución a listo bloque(nombre_proceso): en ejecución à bloqueado despertar(nombre_proceso): bloqueado a listo. Obsérvese que la única transición de estado iniciada por el propio proceso del usuario es el bloque; las otras tres transiciones son iniciadas por entidades ajenas al proceso.

El bloqueo de control de proceso La manifestación de un proceso en un sistema operativo es un bloque de control de proceso (PCB, Process Control Block). El PCB es una estructura de datos que contiene cierta información importante acerca del proceso, incluyendo:

- estado actual del proceso - identificación única del proceso - prioridad del proceso - apuntadores para localizar la memoria del proceso - área para preservar registros El PCB es un almacenamiento central de información que permite al sistema operativo localizar toda la información clave sobre el proceso. Cuando el sistema operativo cambia la atención de la UCP entre los procesos, utiliza las áreas de preservación del PCB para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo la UCP. Así pues, el PCB es la entidad que define un proceso al sistema operativo. Debido a que los PCB deben ser manipuleados con rapidez por el sistema operativo, muchos sistemas de computación contienen un registro de hardware que apunta siempre al PCB del proceso que está en ejecución. Las instrucciones de hardware que cargan la información de estado al PCB están casi siempre disponibles y restablecen la información rápidamente. Operaciones sobre procesos

Los sistemas que administran los procesos deben ser capaces de realizar ciertas operaciones sobre los procesos. Estos incluyen: - crear un proceso - destruir un proceso - suspender un proceso - reanudar un proceso - cambiar la prioridad de un proceso - bloquear un proceso - despertar un proceso - despachar un proceso Creación de Proceso La creación de un proceso implica varias operaciones, incluyendo: - dar nombre al proceso - insertar un proceso en la lista del sistema de procesos conocidos - determinar la prioridad inicial del proceso - crear el bloque de control de proceso - asignar los recursos iniciales del proceso Un proceso puede crear un nuevo proceso. Si lo hace, el proceso que lo crea se llama proceso padre y el proceso creado se llama proceso hijo. Solo se necesita un padre para crear un hijo. Tal creación produce una estructura jerárquica de procesos en la cual cada hijo tiene un solo padre, pero cada padre puede tener varios hijos. Destruir un proceso implica borrarlo del sistema. Sus recursos son devueltos al sistema, se purga de todas las listas o tablas del sistema y se borra su bloque de control de proceso. Un proceso suspendido no puede proseguir hasta que otro proceso lo reanude. La suspensión es una operación importante y ha sido implementada de diversas formas en muchos sistemas diferentes. Las suspensiones suelen durar sólo un breve período de tiempo. A menudo son realizados por el sistema para sacar temporalmente ciertos procesos durante una situación de carga punta. Para las suspensiones de larga duración, los recursos del proceso deben ser liberados. La decisión sobre la liberación de los recursos depende, en gran parte, de la naturaleza del recurso. La memoria principal debe ser liberada inmediatamente después de la suspensión de un proceso. Una unidad de cinta puede ser retenida por el proceso durante una suspensión corta, pero debe ser liberada por un proceso que ha sido suspendido por un período de tiempo largo o indefinido. Reanudar o activar un proceso implica reiniciarlo en el punto donde fue suspendido. La destrucción de un proceso es mucho más complicada si ha creado otros procesos. En algunos sistemas, un proceso creado se destruye automáticamente al destruir al padre; en otros sistemas, los procesos creados continúan independientemente de sus padres, y la destrucción de un padre no tiene ningún efecto sobre los hijos que ha creado. Cambiar la prioridad de un proceso no suele implicar más que cambiar el valor de la prioridad en el bloque de control de procesos. Suspensión y reanudación

En al sección anterior se introdujeron las nociones de procesos suspendidos y reanudados. Estas operaciones son importantes por varias razones: -

Si un sistema está funcionando deficientemente y puede fallar, entonces los procesos que están en ejecución deberán ser suspendidos para reanudarlos una vez que el problema ha sido corregido

-

Un usuario que sospeche que algo no está bien, partiendo de los resultados parciales obtenidos de un proceso, puede suspenderlo (en lugar de abortarlo) hasta que el usuario esté seguro de si el proceso funciona correctamente o no.

-

Como respuesta a las fluctuaciones a corto plazo en la carga del sistema, algunos procesos pueden ser suspendidos y reanudados más tarde, cuando la carga vuelva a sus niveles normales

La figura que se presenta líneas abajo muestra el diagrama de transición del estado de proceso modificado para incluir suspensión y reanudación. Se han agregado dos estados más: el suspendido listo y el suspendido bloqueado; no hay necesidad de un estado suspendido de ejecución. Sobre la línea punteada de la figura están los estados activos, debajo de ella están los estados suspendidos.

Una suspensión puede ser iniciada por el propio proceso o por otro proceso. En un sistema uniprocesador, un proceso en estado de ejecución puede suspenderse a sí mismo; ningún otro proceso puede estar en ejecución al mismo tiempo para emitir la suspensión. En un sistema multiprocesador, un proceso en estado de ejecución puede ser suspendido por otro proceso en el mismo estado que se esté ejecutando en un procesador diferente. Un proceso en estado de listo sólo puede ser suspendido por otro proceso; realiza la siguiente transición: suspende(nombre_proceso): suspendido/listo à listo

Un proceso en estado de suspendido/listo puede convertirse en listo por otro proceso; realiza la transición: reanuda(nombre_proceso): suspendido/listo à listo

Un proceso en estado Bloqueado puede ser suspendido por otro proceso; para ello realiza la transición: suspende(nombre_proceso): Bloqueado à Suspendido/Bloqueado

Un proceso en estado de Suspendido/Bloqueado puede ser reanudado por otro proceso; la transición realizada es la siguiente: reanuda(nombre_proceso): Suspendido/Bloqueado à Bloqueado

Podría argumentarse que, en vez de suspender un proceso bloqueado, es mejor esperar a que la entrada/salidao el evento tengan lugar y el proceso pase al estado de Listo. Desafortunadamente, la terminación puede no producirse o puede ser retrasada indefinidamente. En este caso, el diseñador se encuentra ante el problema de si debe realizar la suspensión del proceso bloqueado o ajustar un mecanismo para que una vez que se produzca la terminación, se realice la suspensión desde el estado de Listo. Debido a que la suspensión es, en general, una actividad de alta prioridad, ésta debe ser ejecutada inmediatamente. Cuando por fin ocurra la terminación (si es que ocurre), el proceso en estado de Suspendido/Bloqueado realiza la transición: terminación(nombre_proceso): Suspendido/Bloqueado à Suspendido/Listo

MODELO DE SISTEMA

LAS COLAS DE TRABAJOS

CONCURRENCIA, COMUNICACIÓN Y SINCRONIZACIÓN DE PROCESOS

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF