Introduccion y concepto de proceso

De Departamento de Informatica
Saltar a: navegación, buscar

Descripción de los Procesos.

Según la RAE (Real Academia de la Lengua Española), un Proceso es "Conjunto de las fases sucesivas de un fenómeno natural o de una operación artificial" [1]; de acuerdo a esto, en el presente capítulo, explicaremos cuales son "el conjunto de fases sucesivas" que componen esta "operación artificial". Introduciremos el concepto de proceso como un programa en ejecución, y describiremos varias características de procesos como itineración, creación, término y comunicación.

Contenido

El Proceso

Proceso en Memoria.

Se define un proceso como un programa en ejecución. La ejecución de este proceso se realiza en forma secuencial.

El proceso es más que el código que ejecuta un programa; incluye la actividad actual y los contenidos de los registros del procesador. Incluye también la pila de proceso (datos temporales), una sección de datos (variables globales) y una sección de memoria que se asigna dinámicamente durante el tiempo de proceso de ejecución.

Todo proceso necesita los siguientes recursos:

  • PC: Program Counter
  • Stack
  • Región de Datos


Es importante mencionar la diferencia entre un "Programa" y un "Proceso". Un programa es una entidad pasiva, mientras que un proceso es una entidad activa. Un programa se convierte en un proceso cuando un archivo ejecutable se carga en la memoria (por ejemplo hacer doble click sobre un ícono de programa ejecutable).


En Linux, por ejemplo, los procesos pueden clasificarse de tres formas:

  • Procesos interactivos: éstos interactúan constantemente con el usuario, por lo que gastan mucho tiempo esperando inputs de teclado y mouse. Ejemplos de estos procesos son las shells interactivas, aplicaciones gráficas y editores de texto.
  • Procesos batch: No necesitan interacción con el usuario, por lo que a menudo se ejecutan en segundo plano. Por su propia naturaleza, estos procesos son «penalizados», vale decir el itinerador deja la ejecución de estos para el final. Ejemplos de estos procesos son compiladores y motores de búsqueda de bases de datos.
  • Procesos de tiempo real: Poseen estrictos requerimientos de itineración, nunca deberían ser retrasados en su prioridad, deben tener tiempos de respuesta cortos y constantes. Ejemplos de estos procesos son aplicaciones de video, sonido, entre otros.

Estado del Proceso

En la medida que un proceso se ejecuta, va cambiando de estado. Los estados en los cuales se puede encontrar un proceso son:

  • New (nuevo): el proceso es creado.
  • Running (en ejecución): las instrucciones están siendo ejecutadas.
  • Waiting (en espera): el proceso espera que ocurra algún evento.
  • Ready (preparado): el proceso espera que se le asigne un procesador.
  • Terminated (terminado): el proceso terminó su ejecución.

El estado esta definido según la actividad en que se encuentra un proceso.


Diagrama de Estado de un Proceso

Bloque de Control de Proceso (PCB - Process Control Block)

Es la estructura de datos central más importante de un sistema operativo. Por cada proceso que se crea, existe un bloque de control que almacena toda la información asociada al proceso, y así el sistema operativo pueda realizar cualquier manipulación que necesite para su control. Además, los bloques de control de procesos, son almacenados en una estructura del sistema operativo llamada tabla de procesos, la cual es implementada como un vector o una lista enlazada para su acceso.

Clasificación de información de un PCB

Para reconocer la manera de cómo se administra un sistema operativo, utilizando lotes de información para controlar los procesos asociados a su funcionamiento, se puede realizar la siguiente agrupación de información que maneja un PCB.

Identificación de los procesos

Las tablas donde se alojan los procesos, es decir, cada estructura de PCB, posee un identificador numérico único llamado 'PID' que sirve de localizador. Por otro lado, cuando los procesos que se encuentran en estado running crean otros procesos, estos pasan a ser procesos padres mientras que los nuevos serán procesos descendientes, los cuales utilizan los PID para identificar al padre y a los descendientes de cada proceso. Si nos referimos a identificadores, también existen los identificadores de usuario (UID), que indican la pertenencia del proceso.

Información de los estados de un proceso

En este conjunto, se almacena la información de estado de un proceso. En otras palabras, está compuesto por el contenido de los registros del procesador. Cada vez que los procesos cambian de estado (mencionado en el punto 2), mientras el proceso viva y se ejecute, la información está en los registros. Cuando un proceso es interrumpido para ejecutar otra sección de código solicitado al procesador, toda la información de los registros debe ser guardada de forma que pueda restaurarse cuando el proceso reanude su ejecución. Normalmente, en el conjunto de registros se incluyen los registros visibles para el usuario, los registros de control y de estado (contador de programa y palabra de estado) y los punteros a pila.

Información del control del proceso

Este tipo de información es fundamental para que el sistema operativo controle y coordine los diferentes procesos activos. Como, por ejemplo, información de planificación y estado (estado del proceso, su prioridad, información de planificación, suceso), apuntadores(punteros) a estructuras de datos (los procesos que esperan en un semáforo), punteros a zonas de memoria del proceso, recursos controlados por el proceso (ficheros abiertos), etc.

Bloque de Control de Proceso (PCB - Process Control Block)

Dentro de la información específica que se almacena en un PCB se encuentran los siguientes:

Estado del Proceso (Process State)

El estado puede ser: nuevo, preparado, en ejecución, en espera, detenido, etc.

Contador de Programa (Program Counter)

Es un registro que actúa como un contador que cambia continuamente, indicando la dirección de la siguiente instrucción que va a ejecutar un proceso. El program counter realiza el incremento cada vez que el procesador lee una instrucción, para luego registrar la siguiente dirección para su acceso.

Registros de la CPU (CPU registers)

Si bien los registros varían en cuanto a número y tipo, dependiendo de la arquitectura de la computadora, un registro de la CPU es una pequeña cantidad de almacenamiento disponible muy alta velocidad, siendo la más rápida en comparación a la memoria principal. Una característica importante es la localidad de referencia, la cual se refiere a que los valores que son utilizados con una mayor frecuencia y se encuentran reiteradas veces, son almacenados en los registros para aumentar el rendimiento, debido a que el tiempo de acceso es considerablemente menor.

Dentro de la CPU existen diversos tipos de registros, de los cuales algunos de los que podemos encontrar son:

  • Registros visibles al usuario: Permiten que al programar en ensamblador, se minimicen las referencias a memoria principal optimizando el uso de los registros.
  • Registros de control: Se controla el funcionamiento de la CPU y mediante programas privilegiados del sistema controlar la ejecución de programas.
  • Registro de estado: Es utilizado para tomar decisiones en función de operaciones realizadas.
  • Registro puntero a pila. Gestiona la pila de ejecución en tiempo real.

Una de las características importantes, es que la información de estado debe guardarse junto con el contador de programa (PC) cuando se produce una interrupción, para que luego el proceso pueda continuar ejecutándose correctamente.

Información de Planificación de la CPU (CPU-scheduling information)

Esta información incluye la prioridad del proceso, los punteros a las colas de planificación y cualesquiera otros parámetros de planificación que se requieran.

Información de Gestión de Memoria (Memory-management information)

Dependiendo del sistema de gestión de memoria que utiliza el sistema operativo, incluirá información de los valores de los registros base y límites, las tablas de las páginas o de segmentos. Por otro lado, en las tablas de memoria la información que se almacena es:

  • La asignación de memoria principal a los procesos.
  • La asignación de memoria secundaria a los procesos.
  • Los atributos de protección de bloques de la memoria principal o virtual, como por ejemplo qué procesos pueden acceder a ciertas regiones compartidas de memoria.
  • Todo tipo de información que sea necesaria para gestionar la memoria virtual.

Información Contable (Accounting information)

Esta infromación incluye la cantidad de CPU y de tiempo real empleados, los límites de tiempo asignados, los números de cuenta, el número de trabajo o de proceso, etc.

Información del Estado de E/S (I/O status information)

La información de las tablas de entrada y salida incluye la lista de los dispositivos asignados al proceso. Además, almacena la información siguiente:

  • El estado de dispositivo de E/S que se encuentra disponible o está asignado a un proceso dado.
  • El estado de la operación del dispositivo de E/S.
  • La posición que se esta utilizando como origen o destino de la transferencia de E/S en la memoria principal.

Así pues, el PCB es la entidad que define un proceso en el sistema operativo. Dado que los PCB necesitan ser manejados con eficiencia por el sistema operativo, muchos ordenadores tienen un registro hardware que siempre apunta hacia el PCB del proceso que se está ejecutando. A menudo existen instrucciones hardware que cargan en el PCB información sobre su entorno, y la recuperan con rapidez. En resumen, el PCB sirve simplemente como repositorio de cualquier información que pueda variar de un proceso a otro.

Hebras

Cuando hablamos de procesos, nos referimos a un programa que se ejecuta de manera secuencial y con una sola hebra de ejecución. Las hebras, son pequeñas porciones de código que permiten al proceso realizar tareas, es decir, una única hebra permite realizar una única tarea a un proceso. Sin embargo, un proceso puede incorporar diversas hebras de control para realizar diversas tareas paralelas, esto se debe a que cada hilo de ejecución realiza instrucciones en pequeños intervalos de tiempo y genera la ilusión de paralelismo. Lo que significa, realizar mas de una tarea al mismo tiempo.

Demonios

Explicación del funcionamiento de un demonio/servicio como un proceso.

Artículo Principal: Demonios

Referencias

  1. http://www.rae.es Real Academia de la Lengua Española

Bibliografía Utilizada

“Fundamentos de Sistemas Operativos”, Silberschatz, Galvin, Gagne, Séptima Edición, 2005.

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas