Please enable JavaScript.
Coggle requires JavaScript to display documents.
Administración de procesos - Coggle Diagram
Administración de procesos
Modelo de procesos
Modo de usuario y Modo de sistemas
Modo de usuario.
Las aplicaciones mas comunes operan con el, debido a que estas tienen segmentos de memoria asignada protegidos.
Los sistemas operativos embebidos tienen núcleos que operan en ambos modos. Los sistemas operativos de tiempo real también respetan esta jerarquía.
Modo de sistema, también conocido como
Kernel
Mode o modo protegido.
Utilizado para las operaciones que deben realizarse mediante un software.
Es confiable para el sistema operativo.
Ciclo de vida de un proceso
Consta de tres etapas:
La ejecución
Cuando está siendo atendido se dice que está “en ejecución”
Cuando no espera recibir atención del procesador se dice que está “bloqueado”.
Cuando un proceso está preparado para ser atendido por el procesador se dice que está “listo” para ejecución.
La terminación de los procesos
Debe tomarse en cuenta que todos los algoritmos que se diseñen deben considerar las condiciones necesarias para que se concluya la tarea de ejecución.
Condiciones usuales por las que un proceso debe terminar:
Salida normal
Por un error critico
Por una condición de exepción
Recibir una señal de otro proceso
La creación
Para iniciar un proceso:
A partir de un proceso existente, mediante una llamada al sistema.
Con una petición del usuario mediante un intérprete de comandos o una interfaz gráfica.
Como parte del arranque del sistema operativo.
Como parte del procesamiento por lotes en un sistema que lo realice de manera automática.
Para un proceso activo:
Preparar un estado inicial en el procesador y la memoria que incluya cargar el código del programa a la memoria antes de llevar a cabo las instrucciones del programa.
Reservar los recursos que le serán asignados.
Asignar los elementos en la planificación de procesos para atenderlo.
Proceso
Elementos:
El comportamiento definido por el programa.
El estado, que consiste en la memoria asignada y en los valores de los registros del procesador.
Una identificación única para el proceso, a menudo numérica.
Conceptos relacionados a diferenciar:
Programa
Representan información estática o pasiva que es utilizada por los procesos para realizar su ejecución.
Hilo de ejecución (Thread)
Estado de una secuencia de ejecución de instrucciones dentro de un proceso.
Representación de todos los elementos que constituyen una instancia de ejecución de un programa.
Principios generales de concurrencia
El uso de concurrencia en los sistemas permite resolver algunos problemas de formas accesibles, los cuales sería muy difícil solucionar mediante operaciones secuenciales.
Ejemplo de problemas habituales:
Región crítica
En un programa, se la parte del código en la que se hace uso del recurso non-preemptive y se comparte por dos o más procesos sobre el que se desea evitar la condición de carrera.
Barreras de sincronización
Problema común, en especial cuando se trata de procesamiento de información, se refiere al hecho de que a menudo se debe esperar a que varios hilos de ejecución que trabajan en partes separadas del problema terminen la parte que les corresponde.
Condiciones de carrera
Otro problema que se presentan con frecuencia al usar concurrencia de procesos es el uso de recursos que no están preparados para atender peticiones distintas de forma concurrente. Recursos que se conocen como non-preemptive o non-threadsafe.
Para resolver este problema se requieren mecanismos que garanticen que solo uno de los procesos haga uso del recurso non-preemptive en un momento determinado.
Deadlock o interbloqueo
Interbloqueo es la condición de un conjunto de procesos en la que todos estos están bloqueados, en espera de un evento o una condición que solo otro proceso del conjunto puede generar.
Habiendo bloqueos, surge un segundo problema: cuando dos o más recursos non-preemptive están generando bloqueos pueden presentarse situaciones que bloqueen a todos los procesos participantes para siempre. Situaciones conocidas como Deadlock.
Para asegurar que un conjunto de bloqueos en espera de recursos en efecto constituye un interbloqueo, se busca que ocurran condiciones siguientes:
Asignación y espera
No apropiación
Exclusión mutua
Espera circular
Para prevenir interbloqueos hay que atacar alguna de las cuatro condiciones que lo definen para evitar que pueda concretarse.
Bloqueos
Problemas que se beneficiaron del multiprocesamiento fueron las interacciones con los usuarios a través de mecanismos interactivos.
Al usar la concurrencia, podemos usar dos procesos o dos hilos de ejecución; en este caso, uno de los hilos se bloquea en espera de que ocurra el evento que se está ejecutando, mientras que el otro continúa con las tareas que se deben realizar durante la espera.
Sincronización de procesos
Se requieren mecanismos de sincronización que permitan detener las tareas en espera de algún elemento o condición externa.
Semáforos
Es una variable o tipo de dato abstracto usado para controlar el acceso, para múltiples procesos o hilos, a un recurso compartido en ambientes de multiproceso o multiusuario.
Cuenta con un contador entero y dos operaciones análogas a sleep y wakeup que en POSIX se conocen como sem_wait y sem_post.
Un caso especial, es aquel donde este solo se emplea para controlar el acceso a la región crítica. Estos semáforos se conocen como
Mutex
y solo toman valores de 0 y de 1.
Monitores
Constan de una colección de procedimientos, variables y estructuras de datos que están agrupadas en un módulo o paquete especial.
Propuestos por Brinch Hansen.
Se suelen llamar a si a las diversas implementaciones de alto nivel.
Algunas implementaciones:
POSIX C++ - Variables de condición (Condition Variable Attributes)
Calificador synchronize en Java