viernes, 15 de noviembre de 2013

PROCESOS DE UN SISTEMA OPERATIVO

PROCESOS DE UN SISTEMA OPERATIVO


DEFINICIONES DE PROCESO

 

El término proceso fue utilizado, en principio, por los diseñadores del sistema multic en la década de 1960. Desde entonces, al proceso, en alguna medida intercambiado con tarea. Estas 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
  • Aquel 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 "despechable"
Existen muchas otras definiciones. A pesar de que no existe un acuerdo universal sobre la definición, parece hacerse referencia más frecuentemente al concepto programa que se está ejecutando.

Transiciones de estado de proceso

Cuando un trabajo es admitido en el sistema, se crea un proceso equivalente, y es insertado en la última parte de la lista de listos. El proceso se desplaza gradualmente hacia la cabeza de la lista a medida que se completan los procesos que se encontraban antes que él. Cuando el proceso llega a la cabeza de la lista, y cuando el CPU se encuentre disponible, el CPU recibe el proceso, cuando esto ocurre se dice que hay una transición de estado, del estado listo al estado en ejecución. La asignación del primer proceso de la lista de listos al CPU es llamada despacho (Figura 1a), esta acción es llevada a cabo por una entidad del sistema operativo llamada despachador. Se indica una transición de la siguiente manera:
Despacho (nombre del proceso): listos èen ejecución



 Transiciones de estado de proceso
Mientras el CPU tenga un proceso se dice que está en ejecución. Para evitar que el cualquier momento se acapare el uso de todos los recursos del sistema, el sistema operativo ajusta un reloj de interrupción del hardware para permitir al usuario ejecutar su proceso durante un periodo de tiempo específico o cuánto. Si un proceso no abandona el CPU antes de que termine el intervalo, el reloj genera una interrupción, haciendo que el sistema operativo recupere le control. Al ocurrir esto, el sistema operativo hace que el proceso que se encontraba anteriormente en estado de ejecución pase al estado de listo, y hace que el primer proceso de la lista de listos pase al estado de ejecución. Estas transiciones de estado se indican como:
Tiempo excedido (nombre del proceso): en ejecución è listo y despacho (nombre del proceso): listo  en ejecución
Si un proceso se encuentra en estado de ejecución inicia una operación de entrada/salida antes de que termine su cuanto, el proceso abandona por sí mismo el CPU (es decir, el proceso se bloquea a sí mismo hasta la terminación de la operación de entrada/salida). Esto se expresa:
Bloque (nombre del proceso): en ejecución è listo
La otra transición posible tomando en cuenta el modelo de tres estados ocurre cuando termina una transición de entrada/salida (o algún otro evento que esté esperando el proceso). El estado cambia del estado bloqueado al estado listo. La transición es:
Despertar (nombre del proceso): bloqueado è listo
Con esto tenemos cuatro posibles transiciones de estado:
Despacho (nombre del proceso): listos è en ejecución
Tiempo excedido (nombre del proceso): en ejecución è listo
Bloque (nombre del proceso): en ejecución è listo
Despertar (nombre del proceso): bloqueado è listo
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). El 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
·         Apuntadores para asignar recursos
·         Á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 del CPU 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 el CPU.

Así, pues, el PCB es la entidad que define un proceso al sistema operativo. Debido a que los PCB deben ser manipulados 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

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. Sólo se necesita un padre para crear un hijo. Tal creación produce una estructura jerárquica de proceso, como la mostrada en la figura 2a, en la cual cada hijo tiene un solo padre, pero cada padre puede tener varios hijos.




 
 Jerarquía creada por el proceso


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 periodo 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 proceso. 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 periodo de tiempo largo o indefinido.
Reanudar (o activar) un proceso implica el 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 tienen 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.

 

SUSPENSION Y REANUDACION


En la 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 sí 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 3a muestra el diagrama de transición del estado de proceso modificado para incluir suspensión y reanudación. Se han añadido 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 de trazos 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 puede ser suspendido por otro proceso; realiza la siguiente transición:
Suspende (nombre del proceso): listo è suspendido listo
Un proceso en estado de suspendido listo puede convertirse en listo por otro proceso realiza la siguiente transición:
Reanudar (nombre del proceso): suspendido è listo
Un proceso en estado bloqueado puede ser suspendido por otro proceso; para ello realiza la transición:
Suspende (nombre del 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 del proceso): suspendido bloqueado è bloqueado
Podría argumentarse que, en vez de suspender un proceso bloqueado, es mejor esperar hasta que la entrada/salida o el evento tenga 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 sí 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 del proceso): suspendido bloqueado è suspendido listo




  Transiciones de estado de proceso con suspensión y reanudación



PROCESAMIENTO DE INTERRUPCIONES


La figura 4a muestra un ejemplo de un procesamiento de interrupción con el cual seguramente estamos familiarizados. En un sistema computacional, una interrupción es un evento que altera la secuencia en que el procesador ejecuta las instrucciones; este hecho, es generado por el hardware de la computadora. Cuando ocurre una interrupción:
·         El sistema operativo obtiene el control.
·         El sistema operativo salva el estado de proceso interrumpido. En muchos sistemas, esta información es almacenada en el bloque de control de procesos del proceso interrumpido.
·         El sistema operativo analiza la interrupción y pasa el control a la rutina apropiada para la manipulación de la interrupción.


Una interrupción debe ser específicamente iniciada por un proceso en estado de ejecución, o puede ser iniciada por un evento que puede estar relacionado o no con dicho proceso.

TIPOS DE INTERRUPCIONES


En esta sección se trata el esquema de interrupciones de los procesadores IBM a gran escala. Esta información será especialmente útil cuando se presenten los casos de estudio sobre los sistemas operativos MVS y VM de IBM.

Existen seis tipos de interrupciones, a saber:

Ø  Interrupciones SVC (llamada al supervisor). Son iniciadas por un proceso en estado de ejecución que ejecuta la instrucción SVC. Una SVC es una petición generada por el usuario para un servicio particular del sistema, como la realización de entrada/salida, la obtención de más almacenamiento o la comunicación con el operador del sistema. El mecanismo SVC ayuda a mantener el sistema operativo a seguro de los usuarios. Un usuario no puede entrar arbitrariamente al sistema operativo; en lugar de esto, el usuario debe hacer una petición de servicio por medio de una SVC. Así, el sistema operativo se da cuenta de todos los intentos realizados por los usuarios para cruzar sus fronteras, y puede negar ciertas peticiones Si el usuario no tiene los privilegios apropiados.

Ø  Interrupciones de entrada/salida. Son iniciadas por el hardware de entrada/salida. Envía señales al CPU indicando que el estado de un canal o dispositivo ha cambiado. Estas interrupciones son acusadas cuando acaba una operación de entrada/salida, cuando se produce un error o, por ejemplo, cuando un dispositivo queda listo.


Ø  Interrupciones externas. Son causadas por varios eventos, incluidos la expiración de un cuanto en el reloj de interrupción; la presión de la tecla de interrupción en la consola por parte del operador o la recepción de una señal de otro procesador en un sistema multiprocesador.

Ø  Interrupciones de reinicio. Ocurren cuando el operador presiona el botón de reinicio en la consola o cuando llega una instrucción SIGP (procesador de señales) de reinicio de otro procesador en un sistema multiprocesador.


Ø  Interrupciones de verificación de programa. Son causadas por varios tipos de errores experimentados al ejecutar un proceso como un intento de dividir entre cero; el intento de un proceso de usuario de ejecutar una instrucción privilegiada; un intento de ejecutar un código de operación invalido, etcétera.

Ø  Interrupciones de verificación de máquina. Son causadas por un mal funcionamiento del hardware.

CAMBIO DE CONTEXTO


El sistema operativo incluye rutinas llamadas manipuladores de interrupciones (IH) para procesar cada tipo diferente de interrupción. Hay manipuladores de interrupciones (IH): el IH SVC, el lH de entrada/salida, el IH externo, el IH de reinicio, el IH de verificación de programa y el IH de verificación de la máquina. Cuando se produce una interrupción, el sistema operativo salva el estado del proceso interrumpido y dirige el control al manipulador de interrupciones adecuado. Esto se realiza mediante una técnica llamada cambio de contexto.
Las palabras de estado de programa (PSW) controlan el orden de ejecución de las instrucciones y contiene información sobre el estado del proceso. Hay tres tipos de PSW: PSW actual, PSW nueva y PSW vieja.
La dirección de la siguiente instrucción que va a ser ejecutada se guarda en la PSW actual, que también indica los tipos de interrupciones actualmente habilitadas, y las actualmente inhabilitadas. El CPU permite que tengan lugar interrupciones habilitadas:
las interrupciones inhabilitadas permanecen pendientes, o son ignoradas en algunos casos. El procesador nunca puede ser inhabilitado para interrupciones SVC de reinicio, o algunos tipos de interrupciones de programas. Pronto quedarán claras las razones para la habilitación e inhabilitación de interrupciones.
En un sistema uniprocesador existe solamente una PSW actual, pero hay seis PSW nuevas y seis PSW viejas (una para cada tipo de interrupción). La PSW nueva para un tipo de interrupción dado contiene la dirección permanente en el hardware, donde reside el manipulador de interrupciones para este tipo específico. Cuando ocurre una interrupción (Fig. 3.5), Si el procesador no está inhabilitado para este tipo de interrupción, entonces el hardware cambia las PSW en los casos siguientes:
·         Al almacenar la PSW actual en la PSW vieja, para ese tipo de interrupción,
·         Al almacenar la PSW nueva para ese tipo de interrupción, dentro de la PSW actual.


 

Intercambio de PSW durante el proceso de ina interrupción
Después de este intercambio de PSW, la PSW actual contiene la dirección del manipulador de interrupción adecuado. El manipulador de interrupciones procesa ahora la interrupción.
Cuando se completa el proceso de la interrupción, el CPU es enviado al proceso que estaba en ejecución en el momento de la interrupción, o al proceso de listo de más alta prioridad. Esto depende de sí el proceso de interrupción es apropiado.

 

EL NUCLEO DEL SISTEMA OPERATIVO


Todas las operaciones que implican procesos son controladas por una porción del sistema operativo, el cual es llamado su núcleo o centro. El núcleo representa, solamente, una pequeña porción del código de todo el sistema operativo, pero se encuentra entre los códigos de más amplio uso. Por razón, el núcleo suele permanecer en el almacenamiento primario, mientras otras porciones del sistema operativo son transportadas de un lado a otro, entre el almacenamiento primario y el secundario, según las necesidades. Una de las funciones más importantes incluidas en el núcleo es el proceso de interrupciones. En los grandes sistemas de múltiples usuarios hay una corriente constante de interrupciones dirigidas al procesador. La rápida respuesta a estas interrupciones es esencial para mantener bien utilizados los recursos del sistema, y para proveer tiempos de respuesta aceptables a los usuarios interactivos. El núcleo inhabilita las interrupciones mientras responde a una interrupción; las interrupciones son habilitadas de nuevo después de completar el proceso de una interrupción.

RESUMEN DE FUNCIONES DEL NÚCLEO


Un núcleo de sistema operativo contiene normalmente código necesario para realizar las siguientes funciones:
·         Manipulación de interrupciones.
·         Creación y destrucción de procesos.
·         Cambio de estados de proceso.
·         Despacho
·         Suspensión y reanudación de procesos
·         Sincronización de procesos
·         Comunicación entre procesos
·         Manipulación de bloques de control de proceso.
·         Soporte de las actividades de entrada/salida
·         Soporte del sistema de archivo
·         Soporte de un mecanismo de llamada/regreso al procedimiento
·         Soporte de ciertas funciones contables del sistema

HABILITACIÓN E INHABILITACIÓN DE INTERRUPCIONES


Al núcleo suele entrarse mediante una interrupción. El núcleo inhabilita las interrupciones mientras responde a ellas. Una vez determinada la causa de la interrupción, el núcleo pasa el procesamiento de la interrupción a un proceso especifico del sistema, diseñado para manejar es tipo de interrupción.
En algunos sistemas, el procesamiento completo de cada interrupción es realizado por un gran sistema operativo de una sola pieza. En tales sistemas, las interrupciones son inhabilitadas por un amplio porcentaje del tiempo, pero los sistemas son conceptualmente más sencillos. Tal diseño el útil en sistemas pequeños que soportan un número limitado de procesos; en los grandes sistemas de usuarios múltiples, el método del núcleo proporciona un rendimiento mucho mejor.

MIGRACIÓN DEL NÚCLEO AL MICROCÓDIGO


Una tendencia definitiva que ha surgido en los sistemas recientes es la de colocar gran parte del núcleo en microcódigo. Esta es una técnica de seguridad efectiva, y con una micromodificación cuidadosa puede hacer que las funciones del núcleo se realicen más rápidamente.
Alta prioridad. Esto depende de sí el proceso de interrupción es apropiativo o no apropiativo. Si el proceso es no apropiativo, obtiene de nuevo el CPU; si el proceso es apropiativo, obtiene el CPU solo si no hay procesos de listos.

No hay comentarios:

Publicar un comentario