SO: Procesos

Un sistema consiste de una colección de procesos (del sistemas y del usuario), que pueden ejecutarse concurrentemente.
Se debe almacenar información del proceso, la cual puede consistir de un espacio de direcciones (llamado imagen del núcleo) y registros.


- Proceso
* Actividad actual (el valor del contador de programa y contadores del registro del procesador)
* Pila de proceso (contiene los datos temporales - parámetros de las subrutinas, direcciones de retorno y variables temporales - y una sección de datos - variables globales)


- Estado del proceso
Cuando un proceso está en ejecución, éste cambia de estado (que está definido por la actividad actual que está haciendo)

* Nuevo: Está siendo creado
* Corriendo: Las instrucciones están siendo ejecutadas
* Esperando: A que ocurra un evento
* Listo: Esperando que se le asigne el procesador
* Terminado: Finaliza su ejecución

NUEVO ----Admitido----> LISTO <----Interrumpido---- CORRIENDO ----Salir----> TERMINADO
                          |              elegido por                    |
                          |        ---el schedudeller-->           |
                          |                                                 |
                        E/S o                                 Esperando 
                        evento                                 por E/S
                       esperado                             o evento
                       |                                                   |
                          |                                                   |
                          |<------- ESPERANDO ---------| 


- Bloque de control de proceso (PCB)

Representa a un proceso. 

Contiene:
* Estado del proceso.
* Contador del programa (PC): Indica la dirección de la siguiente instrucción a ser ejecutada.
* Registros del CPU: Varían de número y tipo. Incluyen acumuladores, registros, índices, punteros de pilas y registros de propósito general.
* Información del scheculling del CPU: Incluye la prioridad del proceso, punteros de colas de schedulling y otros parámetros.
* Información de la administración de memoria: Contiene los registros límite y bases, tabla de páginas, tabla de segmentos.
* Información de cantidades: #CPU y tiempo que fue usado, tiempos límites #trabajos, #procesos, etc.
* Información del estado de E/S: Lista de dispositivos de E/S asignados al proceso, lista de archivos abiertos, etc.

- Schedulling de procesos
* Colas
Cuando un proceso entra al sistema, es ubicado en una cola de trabajos (que consiste en todos los procesos del sistema). 
Los procesos que están en memoria principal (y están listos), esperan para ser ejecutados -> son colocados en la cola de listos. Ésta es almacenada como una lista vinculada.
Entonces:
  • Cola de trabajo: Procesos que entran al sistema
  • Cola de listos: Proceso que están en memoria principal, listos y esperando para ser ejecutados.
  • Cola de dispositivos: Cola que posee cada dispositivo con los procesos que esperan por él. 
Cada cola posee un PCB del proceso en particular y cada cabeza de la cola tiene un puntero al primero y último PCB (cada uno de éstos tiene un puntero al siguiente).

  1. Un nuevo proceso es, inicialmente, puesto en la cola de listos. 
  2. Éste espera hasta que sea seleccionado para ser ejecutado. 
  3. Se le otorga el CPU. Puede pasar:

  • El proceso pide E/S => Cola de E/S (Esperando/Listo) - Volver a 2.
  • El proceso puede crear nuevos subprocesos y esperar por su terminación (Esperando/Listo) - Volver a 2.
  • El proceso puede ser removido forzosamente del CPU por una interrupción - Volver a 2.
Cuando termina se produce la eliminación de su PCB (de todas las colas) y se liberan los recursos que usó.

* Scheduller
De corto plazo (CPU SCHEDULLER)
Selecciona uno de los diferentes procesos que están en la cola de listos para ser ejecutados y le asigna el CPU. 
Se ejecuta con mucha frecuencia. 
Si el grado de multiprogramación (#procesos en memoria) es estable ->
Tasa promedio de procesos que ingresan al sistema = Tasa promedio de procesos que dejan al sistema.

De plazo extendido (JOB SCHEDULLER)
Selecciona procesos de la pileta de procesos. Los carga en memoria principal para que sean ejecutados. 
Se ejecuta con menos frecuencia, pueden pasar minutos hasta que se cree un nuevo proceso en el sistema => se le otorga más tiempo para decidir entre los procesos que llegan.                          
Controla el grado de multiprogramación. 
En general, la mayoría de los procesos pueden ser descritos como E/S BOUND (genera E/S la mayor parte del tiempo - limitado a E/S) o CPU BOUND (genera E/S infrecuentemente, usando la mayor parte de su tiempo realizando cálculos - limitado a "ejecutar"); por lo que su selección debe ser cuidadosa. 
Si todos los procesos son de E/S BOUND, la cola de listos estará casi siempre vacía y el scheduller de corto plazo tendrá poco qué hacer.
Si todos los proceso son CPU BOUND, la cola de espera de E/S estará vacía, los dispositivos estarán sin uso y el sistema estará desbalanceado.
Tiene que haber una combinación.

Los sistemas de tiempo compartido no tienen scheduller de largo plazo, ponen cada nuevo proceso en memoria por medio del schedduller de corto plazo. La estabilidad del sistema depende de: la limitación física y del propio ajuste de los usuarios.
Introducen un adicional e intermedio, nivel de scheduller.

De medio plazo (SWAPING)
Ventajoso para eliminar procesos de la memoria y reducir el grado de multiprogramación. Un tiempo más tarde, el proceso puede ser re-introducido en la memoria y continuar su ejecución donde se había dejado.

* Context Switch
Cambiar el CPU a otro proceso. Requiere guardar el estado del proceso viejo y cargar el estado salvando el nuevo proceso.
El tiempo es puro overhead ya que el sistema no hace trabajo útil mientras cambia de proceso. 
Su velocidad varía según la máquina (velocidad de memoria, #registros a copiar, instrucciones especiales).

- Operaciones sobre procesos
Los procesos: ejecutan concurrentemente; creados y eliminados dinámicamente.

* Creación de procesos
Un proceso puede crear nuevos procesos, vía una llamada al sistema CREATE PROCESS, durante el curso de su ejecución. 
Cuando un proceso crea un subproceso, éste puede ser capaz de obtener sus recursos directamente desde el SO, o puede ser restringido a un subconjunto de los recursos del padre.
El padre puede compartir recursos o particionarlos.
Restringir a los hijos a usar recursos de su padre => no sobrecargar el sistema.

Cuando un proceso crea un nuevo proceso:
  • Padre continúa la ejecución concurrentemente con su hijo
  • Padre espera hasta que alguno o todos sus hijos haya  terminado
En término del espacio de direcciones:
  • El hijo es un duplicado del proceso padre
  • El hijo tiene un programa cargado en él.
* Terminación de procesos
Un proceso termina cuando finaliza, y envía una llamada al sistema para eliminarse (EXIT).
El proceso puede retornar datos a su proceso padre (WAIT). Todos los recursos del sistema son liberados por el SO.
Un proceso puede causar la terminación de otro proceso por medio de una llamada al sistema (ABORT). Esta (o CALL SYSTEMS) pueden ser invocadas sólo por el padre, y podría darse debido a que el hijo excedió el uso de alguno de sus recursos; la tarea para la cual se creó el hijo no se necesita; el padre terminó y el SO no permite que hijos continúen (terminación en cascada).






Comentarios

Entradas populares de este blog

Herramientas ofimáticas: Microsoft Powet Point

Resumen: Comunicacion. Signo

Resumen: Comunicacion. Semiología