Manejo del Procesador en UNIX

Manejo del Procesador en UNIX

En Unix se ejecutan programas en un medio llamado "proceso de usuario". Cuando se requiere una función del Kernel, el proceso de usuario hace una llamada especial al sistema y entonces el control pasa temporalmente al núcleo. Para esto se requiere de un conjunto de elementos de uso interno, que se mencionan a continuación.
Se conoce como imagen a una especie de fotografía del ambiente de ejecución de un proceso, que incluye una descripción de la memoria, valores de registros generales, status de archivos abiertos, el directorio actual, etcétera. Una imagen es el estado actual de una computadora virtual, dedicada a un proceso en particular.
Un proceso se define como la ejecución de una imagen. Mientras el procesador ejecuta un proceso, la imagen debe residir en la memoria principal; durante la ejecución de otros procesos permanece primera en la memoria principal a menús que la aparición de un proceso activo de mayor prioridad la obligue a ser copiada al disco, como ya se dijo.
Un proceso puede encontrarse en uno de varios estados: en ejecución; listo para ejecutar, o en espera.
Cuando se invoca una función del sistema, el proceso de usuario llama al Kernel como subrutina. Hay un cambio de ambientes y, como resultado, se tiene un proceso del sistema. Estos dos procesos son dos fases del mismo original, que nunca se ejecutan en forma simultánea.
Existe una tabla de procesos que contiene una entrada por cada uno de ellos con los datos que requiere el sistema:
identificación, direcciones de los segmentos que emplea en la memoria, información que necesita el scheduler y otros. la entrada de la tabla de procesos se asigna cuando se crea el proceso y se libera cuando éste termina.
Para crear un proceso se requiere la inicialización de una entrada en la tabla, así como la creación de segmentos de texto y de datos. Además, es necesario modificar la tabla cuando cambia el estado del proceso o cuando recibe un mensaje de otro (para sincronización, por ejemplo). Cuando un proceso termina, su entrada en la tabla se libera y queda otro disponible para que otro nuevo la utilice.
En el sistema operativo Unix los procesos pueden comunicarse internamente entre sí, mediante el envío de mensajes o señales. El mecanismo conocido como interconexión (pipe) crea un canal entre dos procesos mediante una llamada a una rutina del Kernel, y se emplea tanto para pasar datos unidireccionalmente entre las imágenes de ambos, como para sincronizarlos, ya que si un proceso intenta escribir en un pipe ocupado, debe esperar a que el receptor lea los datos pendientes. Lo mismo ocurre en el caso de una lectura de datos inexistentes: el proceso que intenta leer debe esperar a que el proceso productor deposite los datos en el canal de intercomunicación.
Entre las diferentes llamadas al sistema para el manejo de procesos que existen en Unix están las siguientes, algunas de las cuales ya han sido mencionadas: fork (sacar una copia a un proceso); exec (cambiar la identidad de un proceso); kill (enviar una señal a un proceso); signal (especificar la acción por ejecutar cuando se recibe una señal de otro proceso), y exit (terminar un proceso).
Dentro de las tareas del manejo del procesador destaca la asignación dinámica (scheduling), que en Unix resuelve el scheduler mediante un mecanismo de prioridades. Cada proceso tiene asignada una prioridad; las prioridades de los procesos de usuario son menores que la más pequeña de un proceso del sistema.
El "motor" que mantiene en movimiento un esquema de multiprogramación es, por un lado, el conjunto de interrupciones que genera el desempeño de los procesos y, por otro, los constantes recordatorios que hace el reloj del procesador para indicar que se terminó la fracción de tiempo dedicada a cada proceso.
En el sistema Unix, las interrupciones son causadas por lo que se conoce como eventos, entre los cuales se consideran: la ejecución de una tarea de entrada/salida; la terminación de los procesos dependientes de otro; la terminación de la fracción de tiempo asignada a un proceso, y la recepción de una señal desde otro proceso.
En un sistema de tiempo compartido se divide el tiempo en un determinado número de intervalos o fracciones y se asigna cada una de ellas a un proceso. Además Unix toma en consideración que hay procesos en espera de una operación de E/S y que ya no pueden aprovechar su fracción. Para asegurar una distribución adecuada del procesador entre los procesos se calculan dinámicamente las prioridades de estos últimos, con el fin de determinar cuál será el proceso que se ejecutará cuando se suspenda el proceso activo actual.

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *