CAPITULO 2. PROCESOS

登録は簡単!. 無料です
または 登録 あなたのEメールアドレスで登録
CAPITULO 2. PROCESOS により Mind Map: CAPITULO 2. PROCESOS

1. 2.3. Comunicación

1.1. Es posible clasificar los modos en que interactúan los procesos en función del nivel de conocimiento que cada proceso tiene de la existencia de los demás.

1.1.1. 2.3.1. Procesos Independientes

1.1.1.1. No afecta o es afectado por la ejecución de otros procesos en el sistema.

1.1.2. 2.3.2. Procesos Cooperantes

1.1.2.1. Es uno que puede afectar o ser afectado por los demás procesos que se ejecutan en el sistema.

1.1.3. 2.3.3. Procesos Concurrentes

1.1.3.1. Dos procesos son concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera instrucción del otro y antes de la última.

1.1.4. 2.3.4. Paradigmas de Comunicación entre Procesos

1.1.4.1. Es una función básica de los sistemas operativos y hay dos maneras básicas de abordar este tema son:

1.1.4.1.1. 2.3.4.1. Memoria Compartida

1.1.4.1.2. 2.3.4.2. Pase de Mensajes

1.1.4.2. 2.3.4.3. Puerto

1.1.4.2.1. Es un buzón con una relación de muchos a uno, utilizada típicamente en comunicaciones cliente/servidor.

1.1.4.3. 2.3.4.4. Señales

1.1.4.3.1. La señal es una forma limitada de IPC utilizada en UNIX. Es una notificación asíncronica enviada a un proceso o a un hilo específico dentro del mismo proceso con el objeto de notificarlo de un evento ocurrido.

1.1.4.4. 2.3.4.5. Temporizadores

1.1.4.4.1. Es un tipo de interrupción de reloj que se puede utilizar para controlar la secuencia de un evento y que interrumpe al procesador al llegar a cero.

1.1.4.5. 2.3.4.6. Socket

1.1.4.5.1. Es una forma de comunicación, generalmente entre procesos remotos ejecutando en computadoras conectadas mediante una red, pero no necesariamente, los procesos pueden residir en la misma computadora.

1.1.4.6. 2.3.4.7. Tubería

1.1.4.6.1. Es un mecanismo de comunicación y sincronización. Es como un pseudoarchivo mantenido por el sistema operativo.

1.1.4.7. 2.3.4.8. Cola de Mensajes

1.1.4.7.1. Son otra forma de comunicación asincrónica entre procesos o entre hilos del mismo proceso.

1.1.4.8. 2.3.4.9. Archivos

1.1.4.8.1. Dos o más procesos pueden comunicarse entre sí, simplemente accediendo a un archivo por su nombre.

1.1.4.9. 2.3.4.10. Archivos Proyectados en Memoria

1.1.4.9.1. Es una porción de memoria virtual en la que se establece una correlación directa byte a byte con una parte de un archivo.

1.1.5. 2.3.5. Excepciones

1.1.5.1. Cuando un proceso o hilo provoca una división por cero, acceder a una dirección de memoria protegida o inexistente, o intenta ejecutar una instrucción privilegiada desde el modo usuario, se provoca una excepción.

2. VÍCTOR EMMANUEL PAZ CALDERÓN

3. 2.4. Trabajos Prácticos

3.1. 2.4.1. Práctica con Linux

3.1.1. 2.4.1.1. Estados de los Procesos

3.1.1.1. Unix provee el comando >>ps<< para ver el estado de los procesos.

3.1.1.2. Si coloca este comando en Linux verá básicamente dos procesos:

3.1.1.2.1. El de intérprete de comandos bash

3.1.1.2.2. El propio proceso ps

3.1.1.3. La cola de procesos listos para ejecutar, el planificador los va eligiendo por su prioridad, pero esta no es constante en Linux, sino que se ve alterada de acuerdo con un sistema de créditos.

3.1.2. 2.4.1.2. Obtener el PID

3.1.2.1. POSIX y Win32 ofrece servicios para la gestión de procesos, procesos ligeros y planificación.

3.1.2.2. Para eso se debe obtener el identificador del proceso mediante la llamada al sistema, cuyo prototipo en lenguaje en C es: pid_t getpid(void);

3.1.2.3. Desde la misma CLI vamos a ejecutar un comando que nos abrirá una ventana de edición de textos muy intuitiva.

3.1.2.4. Una vez echo esto, guardamos y cerramos la ventana de edición y volveos al prompt.

3.1.3. 2.4.1.3. Crear Procesos con Fork()

3.1.3.1. El proceso hijo es una copia del proceso padre en el instante en que este solicita el servicio fork(). Esto significa que los datos y la pila del proceso hijo son los que tiene el padre en ese instante de ejecución.

3.2. 2.4.2. Práctica con Windows

3.2.1. 2.4.2.1. Tlist

3.2.1.1. El identificador del proceso y de sus padres o creadores es un atributo particular de los procesos y que, no obstante, la mayoría de las herramientas no lo muestran.

3.2.2. 2.4.2.2. Información de los Procesos con el Administrador de Tareas

3.2.2.1. El administrador de tareas de Windows nos provee una lista rápida de los procesos que están ejecutando en el sistema.

3.2.2.2. Se puede arrancar el Administrador de Tareas de tres maneras:

3.2.2.2.1. Presionando simultáneamente Ctrl+Mayúscula+Esc.

3.2.2.2.2. Haciendo clic con el botón derecho del mouse sobre la barra de tareas y seleccionando Administrador de Tareas.

3.2.2.2.3. Presionando simultáneamente Ctrl+Alt+Supr y haciendo clic en el botón del Administrador de Tareas.

4. Toda actividad en un sistema de computación está basada en la ejecución de las instrucciones en los programas de computadoras

4.1. El término "proceso" se refiere al conjunto de ejecución de instrucciones de una máquina, es decir, un proceso es un programa en ejecución.

4.1.1. Los tipos de llamadas al sistema referidos a los procesos, que un sistema operativo normalmente ofrece son:

4.1.1.1. Finalizar abortar.

4.1.1.2. Cargar, ejecutar.

4.1.1.3. Crear proceso, terminar proceso.

4.1.1.4. Obtener atributos de proceso, establecer atributos de proceso.

4.1.1.5. Esperar un lapso.

4.1.1.6. Esperar suceso, indicar la ocurrencia del suceso.

4.1.1.7. Asignar y liberar memoria.

4.1.2. Asociados a un proceso encontramos su código, sus datos, los recursos operativos asignados a él y uno o más hilos de ejecución.

4.1.2.1. Los sistemas operativos pueden clasificarse en tres tipos de sistemas:

4.1.2.1.1. De un único proceso con un único hilo.

4.1.2.1.2. De varios procesos con un único hilo.

4.1.2.1.3. De múltiples procesos con varios hilos.

4.1.2.2. Un hilo es un flujo de ejecución a lo largo del código del proceso, con su propio contador de programa, registros y pila.

5. 2.2. Procesos Ligeros, Hilos o Threads

5.1. Un proceso ligero es un programa en ejecución que comparte la imagen de memoria, y otras informaciones, con otros procesos ligeros.

5.2. Los hilos son una forma popular de mejorar el desempeño de las aplicaciones a través del paralelismo.

5.3. 2.2.1. Motivaciones para el Uso de Hilos

5.3.1. Las sobrecargas involucradas en la creación de un proceso nuevo, en general, mayores que las involucradas en la creación de un hilo nuevo dentro de un proceso

5.3.2. La conmutación entre hilos que comparten el mismo espacio de direcciones es más barata que la conmutación entre procesos que tienen sus propios espacios de direcciones.

5.3.3. Los hilos permiten que el paralelismo sea combinado con la ejecución secuencial y llamadas a sistema bloqueantes.

5.3.4. El compartir recursos puede lograrse de manera más eficiente y naturalmente entre hilos de un proceso que entre procesos.

5.3.5. Construir un proceso servidor puede darse de tres maneras:

5.3.5.1. Como un Proceso de un Solo Hilo

5.3.5.1.1. Este modelo usa llamadas al sistema bloqueantes pero sin ningún paralelismo.

5.3.5.2. Como una Máquina de Estados Finitos

5.3.5.2.1. Este modelo soporta paralelismo pero con llamadas a sistema no bloqueantes.

5.3.5.3. Como un Grupo de Hilos

5.3.5.3.1. Este modelo soporta paralelismo con llamadas a sistemas bloqueantes.

5.4. 2.2.2. Modelos de Organización

5.4.1. Modelo Despachador-Trabajadores

5.4.1.1. En este modelo, el proceso está compuesto de un hilo despachador único y múltiples hilos de trabajadores.

5.4.2. Modelo Pipeline

5.4.2.1. Este modelo es útil para aplicaciones basadas en el modelo productor-consumidor.

5.4.2.2. Los hilos de un proceso se organizan como una tubería de manera tal que los datos de salida generados por el primer hilo se usan para el procesamiento por parte del segundo hilo, etc.

5.4.3. Modelo Equipo

5.4.3.1. En este modelo todos los hilos se comportan como iguales.

5.5. 2.2.3. Aspecto del Diseño de Hilos

5.5.1. Un sistema que soporta facilidades para hilos debe proveer a los usuarios un conjunto de primitivas a los usuarios para operaciones relacionadas con ellos.

5.5.2. 2.2.3.1. Creación de los Hilos

5.5.2.1. Los hilos se pueden crear ya sea en forma estática o dinámica.

5.5.2.1.1. En el enfoque estático, el número de hilos de un proceso permanece fijo durante todo su tiempo de vida.

5.5.2.1.2. En el enfoque dinámico, el número de hilos e un proceso cambia dinámicamente.

5.5.3. 2.2.3.2. Terminación de los Hilos

5.5.3.1. Se realiza de manera similar a la terminación de procesos convencionales.

5.5.3.2. En un proceso tal, todos sus hilos son creados en forma inmediata después de que el proceso comienza y estos hilos nunca se destruyen hasta que el proceso finalice.

5.5.4. 2.2.3.3. Sincronización de los Hilos

5.5.4.1. Dado que todos los hilos de un proceso comparten un espacio de direcciones en común, se deben usar algunos mecanismos para prevenir múltiples hilos que intenten acceder a los mismos datos simultáneamente.

5.5.4.2. Para ellos, cada hilo debe asegurar que tiene acceso exclusivo al dato compartido mientras lo está accediendo.

5.5.5. 2.2.3.4. Planificación de los Hilos

5.5.5.1. Los paquetes de hilos a menudo proveen llamadas para dar a los usuarios la flexibilidad de especificar la política de planificación a usarse en sus aplicaciones.

5.5.5.2. Algunas características especiales de la planificación de hilos que pueden estar soportadas en un paquete:

5.5.5.2.1. Facilidad de Asignación de Prioridades

5.5.5.2.2. Flexibilidad para Variar el Quantum Dinámicamente

5.5.5.2.3. Planificación Forzada

5.5.5.2.4. Planificación por Afinidad

5.5.6. 2.2.3.5. Manejo de Señales

5.5.6.1. Las señales proveen interrupciones generadas por software y excepciones.

5.5.6.2. Los dos aspectos principales asociados con e manejo de señales en un ambiente con varios hilos son:

5.5.6.2.1. Una señal debe ser manejada apropiadamente, no importa qué hilo del proceso la haya recibido.

5.5.6.2.2. Se debe prevenir que se pierdan las señales.

5.6. 2.2.4. Implementación

5.6.1. Un paquete de hilos puede ser implementado ya sea en espacio de usuario o en el núcleo.

5.6.1.1. En el enfoque de nivel de usuario, el espacio de usuario está compuesto de un sistema en tiempo de ejecución, que es una colección de rutinas de manejo de hilos.

5.6.1.2. El planificador en el núcleo asigna quantums a procesos pesados, y el planificador del sistema runtime divide un quantum asignado a un proceso entre los hilos del mismo.

5.6.2. 2.2.4.1. Ventajas y Desventajas de los Dos Enfoques

5.6.2.1. Enfoque Usuario

5.6.2.1.1. Un paquete de hilos puede implementarse en el tope de un sistema operativo existente que no soporta hilos.

5.6.2.2. Enfoque Núcleo

5.6.2.2.1. En el enfoque de núcleos no se puede, pues debe estar incorporado en el diseño del núcleo de un sistema operativo.

5.7. 2.2.5. Fibras

5.7.1. En Windows, una fibra es una unidad de ejecución que debe ser manualmente planificada por la aplicación.

5.7.2. Las fibras le permiten a una aplicación planificar sus propios hilos de ejecución, en lugar de atenerse al mecanismo de planificación basado en prioridades proporcionado por Windows.

6. 2.1. Estados de un Proceso

6.1. Un proceso es dinámico, a medida que se ejecuta, cambia de estado. Y cada proceso puede estar, mínimamente, en uno de los tres siguientes estados:

6.1.1. Ejecutándose (running)

6.1.1.1. Un proceso que está ejecutando en una CPU.

6.1.2. Bloqueado (blocked)

6.1.2.1. El proceso está esperando que ocurra algún evento.

6.1.3. Listo (ready)

6.1.3.1. Un proceso que no está asignado a la CPU pero está listo para ejecutar.

6.2. Según Stallings (2008), debemos definir además a los estados:

6.2.1. Nuevo (new)

6.2.1.1. También llamado >>creado<< justamente porque el proceso se está creando esperando la admisión al estado >>listo<<.

6.2.2. Listo (ready)

6.2.2.1. También llamado >>esperando<<, ha sido cargado en memoria principal y espera que el despachador lo ponga a ejecutar.

6.2.3. Bloqueado (blocked)

6.2.3.1. Un proceso que está esperando que ocurra un evento antes de que pueda continuar.

6.2.4. Terminar (terminated)

6.2.4.1. Un proceso que ha detenido su ejecución pero el sistema operativo aún mantiene un registro de él.

6.3. Podemos definir dos estados más en los sistemas que cuentan con memoria virtual:

6.3.1. Intercambiado y esperando

6.3.1.1. Fue sacado de la memoria principal y almacenado en memoria secundaria.

6.3.2. Intercambiado y bloqueado

6.3.2.1. Un proceso que estaba bloqueado también puede pasar a residir en el área de intercambio.

6.4. 2.1.1. Bloque de Control de Procesos

6.4.1. Cada proceso se representa en el sistema operativo mediante una estructura de datos llamada bloque de control de procesos.

6.4.2. Este bloque contiene muchos elementos de información asociados a un proceso específico:

6.4.2.1. Estado del Proceso

6.4.2.1.1. El estado puede ser nuevo, en ejecución, bloqueado, listo, etc.

6.4.2.2. Contador de programa

6.4.2.2.1. Indica la dirección de la siguiente instrucción que se ejecutará para este proceso.

6.4.2.3. Registros de CPU

6.4.2.3.1. Es el número y el tipo de registro, incluyendo acumuladores, registros de índice, etc. Esta información se debe guardar cuando ocurre una interrupción y así el proceso pueda continuar después.

6.4.2.4. Información de Planificación de CPU

6.4.2.4.1. Esta información incluye una prioridad del proceso, punteros a colas de planificación y cualquier otro parámetro de planificación que haya.

6.4.2.5. Información de Gestión de Memoria

6.4.2.5.1. Esta información puede incluir datos tales como el valor de los registros de base y de límite.

6.4.2.6. Información Contable

6.4.2.6.1. Esta información incluye la cantidad de tiempo de CPU consumido, límites de tiempo, números de trabajo, etc.

6.4.2.7. Información de Estado de Entrada o Salida

6.4.2.7.1. La información incluye la lista de dispositivos de entrada o salida asignados a este proceso.

6.5. 2.1.2. Creación y Terminación de Procesos

6.5.1. Los distintos sistemas operativos han desarrollado diferentes formas de crear procesos.

6.5.2. El creador es el proceso padre y el creado es el proceso hijo. El proceso hijo podría crear otros, generándose una estructura de árbol con vértice en el padre: es una estructura jerárquica.

6.5.3. Un proceso usa recursos tales como tiempo de CPU, archivos, memoria y dispositivos para entrada y salida.

6.5.4. En la ejecución ante la creación de un subproceso hay dos alternativas:

6.5.4.1. El padre continúa ejecutándose concurrentemente con sus hijos.

6.5.4.2. El padre espera que sus hijos hayan terminado para seguir la ejecución.

6.5.5. Un proceso termina cuando ejecuta su última instrucción y solicita al sistema operativo que lo elimine. Puede devolver información a su padre.

6.5.6. En algunos sistemas se produce la terminación en cascada:

6.5.6.1. Cuando termina un padre, deben terminar todos los hijos.

6.5.7. Un sistema acaba cuando termina de ejecutar su última instrucción y le pide al sistema operativo que lo elimine, utilizando la llamada al sistema exit().

6.5.8. 1.1.2.1. Jerarquía de Procesos

6.5.8.1. La secuencia de creación de procesos genera un árbol de procesos.

6.5.8.2. Para referirse a las relaciones entre los procesos de la jerarquía se emplean los términos de padre, hermano o abuelo.

6.6. 2.1.3. Planificador y Activador

6.6.1. El planificador es un código que forma parte del núcleo del sistema operativo.

6.6.2. Entra en ejecución cada vez que se activa el sistema operativo y su misión es seleccionar el proceso que se ha de ejecutar a continuación.

6.6.3. El activador también forma parte del sistema operativo y su función es poner en ejecución el proceso por el planificador.

6.6.4. En sistemas con multiprocesamiento, la planificación se usa para determinar a qué proceso se le da el control y se divide en tres fases.

6.6.4.1. Planificación a Largo Plazo

6.6.4.1.1. Determina qué trabajos o procesos pueden competir por los recursos del sistema.

6.6.4.2. Planificación a Mediano Plazo

6.6.4.2.1. Intercambia procesos entre la memoria RAM y un espacio en dispositivos de almacenamiento secundario, generalmente un disco magnético.

6.6.4.3. Planificación a Corto Plazo

6.6.4.3.1. Selecciona al proceso que será asignado a la CPU y el despachador o activador es el que efectivamente carga el proceso en la CPU.

6.7. 2.1.4. Cambio de Contexto

6.7.1. La activación del sistema operativo se realiza mediante el mecanismo de las interrupciones.

6.7.2. Los cambios de contexto son el conjunto de estas operaciones.

6.7.3. El cambio de contexto es el mecanismo que permite que un proceso ceda el control del procesador a otro proceso, retomando más tarde su ejecución por donde la dejó.