Trabajo Practico N°2 Procesos y Threads
Trabajo Practico N°2 Procesos y Threads
Trabajo Practico N°2 Procesos y Threads
Sistemas Operativos
Trabajo Práctico N° 2: Procesos y Threads
Alumno: Lagoria Joel
1. En el diagrama de estados de un proceso, ¿dónde interviene el S.O.? ¿Cómo debería ser el diagrama
para ver todos los procesos y el SO?
Interviene en todos los estados. Desde la elección de que proceso colocar en la cola de nuevos, creando
el BCP. Administrando que proceso será enviado a el estado de listo, a través del planificador de corto
plazo. administra que procesos se bloquean y pasan al estado bloqueado. A en la finalización de un
proceso realizando llamadas al sistema.
3. ¿Cuáles son los pasos que lleva a cabo un sistema operativo para crear un nuevo proceso?
4. Se definen los siguientes estados para un proceso: ejecutando (Ejecución), activo (Listo), bloqueado
y suspendido. Un proceso está bloqueado si está esperando el permiso para usar un recurso y está
Sistemas Operativos
suspendido si está esperando a que termine una operación sobre un recurso que ya ha conseguido. En
muchos sistemas operativos, estos dos estados se unen en el estado de Bloqueado, mientras que el
estado de Suspendido representa que el proceso está en memoria secundaria. Compárense las ventajas
de ambos conjuntos de definiciones.
Los diferentes estados de los procesos es una solución para la optimización de la CPU ya que las algunas
de las operaciones que necesitas los procesos, como las operaciones de E/S son lentas comparadas con
la CPU. Si todos los estados de los procesos son almacenados en la memoria principal esto puede traer
inconvenientes referidos a la capacidad de la memoria. Este problema puede resolverse si el estado de
un procesos se mueve a la memoria secundaria es mecanismo de denomina Swapping. que implica
mover parte o todo el proceso de memoria principal al disco. Cuando ninguno de los procesos en
memoria principal se encuentra en estado Listo, el sistema operativo intercambia uno de los procesos
bloqueados a disco, en la cola de Suspendidos. Esta es una lista de procesos existentes que han sido
temporalmente expulsados de la memoria principal, o suspendidos. El sistema operativo trae otro
proceso de la cola de Suspendidos o responde a una solicitud de un nuevo proceso. La ejecución
continúa con los nuevos procesos que han llegado.
5. Describa las diferencias entre planificadores de corto, mediano y largo término.
6. La mayor parte de la problemática de la administración del procesador puede describirse con ayuda
de un diagrama de transición de estados de los procesos, como el que se expone en la figura 1.
El objetivo de este ejercicio es analizar en detalle las relaciones existentes entre los procesos, las rutinas
de atención de interrupciones y el planificador de procesos. Debe describir cómo interactúan las rutinas
de atención de interrupciones, el planificador de procesos y la base de datos necesaria para cumplir con
el diagrama de transiciones. O sea, debe indicar:
¿Cuáles son los eventos que provocan las transiciones 1, 2, 3 y 4?. Figura 1: Diagrama de Estado de
Procesos
Las transiciones 2 y 1 son producidas por el planificador de procesos, una parte del sistema operativo,
sin que el proceso sepa siquiera acerca de ellas. La transición 2 ocurre cuando el planificador decide
que el proceso en ejecución se ha ejecutado el tiempo suficiente y es momento de dejar que otro proceso
tenga una parte del tiempo de la CPU. La transición 1 ocurre cuando todos los demás procesos han
tenido su parte del tiempo de la CPU y es momento de que el primer proceso obtenga la CPU para
ejecutarse de nuevo. El tema de la planificación de procesos (decidir qué proceso debe ejecutarse en
qué momento y por cuánto tiempo) es importante; más adelante en este capítulo lo analizaremos. Se
han ideado muchos algoritmos para tratar de balancear las contrastantes demandas de eficiencia para
el sistema como un todo y de equidad para los procesos individuales; más adelante en este capítulo
estudiaremos algunas. La transición 4 ocurre cuando se produce el evento externo por el que un proceso
estaba esperando (como la llegada de ciertos datos de entrada). Si no hay otro proceso en ejecución en
ese instante, se activa la transición 3 y el proceso empieza a ejecutarse. En caso contrario, tal vez tenga
que esperar en el estado listo por unos instantes, hasta que la CPU esté disponible y sea su turno de
utilizarla.
7. Describa las acciones que realiza el kernel cuando cambia el contexto entre procesos.
Sistemas Operativos
Cuando se produce una interrupción el sistema operativo debe guardar el contexto actual del proceso
que se está ejecutando en la CPU, de modo que pueda restaurar dicho contexto cuando su
procesamiento concluya, suspendiendo el proceso y reanudándolo después. El contexto se almacena en
el PCB del proceso e incluya el valor de los registros de la CPU, el estado del proceso y la información
de la gestión de la memoria.
La conmutación de la CPU a otro proceso requiere una salvaguarda del estado del proceso actual y una
restauración del estado de otro proceso diferente. Esta tarea se conoce como cambio de contexto.
Cuando se produce un cambio de contexto el kernel guarda el contexto del proceso antiguo en su PCB y
carga el contexto almacenado del nuevo proceso que desea ejecutar. El tiempo
8. Un proceso puede esperar simultáneamente a más de un suceso o evento? Justifique su respuesta.
No, un proceso solo puede esperar un evento, porque cuándo el proceso está en la CPU y requiere de un
evento el SO lo desaloja y lo manda a la cola de bloqueado hasta que se produzca ese evento que necesita.
9. Considere el diagrama de estados, que está formado por siete estados (revise el Cap. 3 del libro de
Stallings). Suponga que el dispatcher del sistema operativo tiene que elegir un proceso. Hay procesos
en el estado Listo y Listo/Suspendido, y que al menos un proceso en el estado Listo/Suspendido tiene
mayor prioridad que cualquiera de los procesos en el estado Listo. Dos políticas diferentes se pueden
considerar: (1) Siempre se elige un proceso del estado Listo, para reducir al mínimo el intercambio, y
(2) siempre se dará preferencia a los procesos de mayor prioridad. Sugiera una política intermedia que
trate de equilibrar la prioridad y el rendimiento.
Una política que mejore la eficiencia seria que todo proceso que tiene una alta prioridad y que se
encuentra en el estado listo/suspendido, siempre pase al estado listo.
10. ¿Cómo se pueden comunicar los procesos? Brinde un ejemplo en el cual considere necesario que
2 procesos se comuniquen.
Hay dos esquemas complementarios de comunicación: sistemas de memoria compartida y de mensajes.
En los sistemas de memoria compartida se requiere que los procesos comunicantes compartan alguna
variable. En los sistemas de memoria compartida la responsabilidad de proporcionar la comunicación
recae sobre los programadores de aplicaciones.
El método del sistema de mensajes permite que los procesos intercambien mensajes, en este método la
responsabilidad de proporcionar la comunicación recae sobre el sistema operativo (Sistemas
operativos, 3° Edicion, A. Silberrschatz, Pag 179)
11. Considere la comunicación sincrónica y asincrónica entre procesos. Presente ventajas y desventajas
de cada una.
Sistemas Operativos
Llamadas con bloqueo (que algunas veces se les conoce como llamadas síncronas). Cuando un
proceso llama a send, especifica un destino y un búfer para enviarlo a ese destino. Mientras se está
enviando el mensaje, el proceso emisor se bloquea (es decir, se suspende). La instrucción que sigue a la
llamada a send no se ejecuta sino hasta que el mensaje se haya enviado por completo.
De manera similar, una llamada a receive no devuelve el control sino hasta que se haya recibido en
realidad un mensaje y se haya colocado en el búfer al que apunta el parámetro. El proceso permanece
suspendido en receive hasta que llega un mensaje, aunque tarde horas en llegar. En algunos sistemas,
el receptor puede especificar de qué proceso desea recibir, en cuyo caso permanece bloqueado hasta
que llega un mensaje de ese emisor.
Una alternativa para las llamadas con bloqueo es el uso de llamadas sin bloqueo (a las que algunas veces
se les conoce como llamadas asíncronas). Si send es sin bloqueo, devuelve de inmediato el control al
proceso que hizo la llamada, antes de enviar el mensaje. La ventaja de este esquema es que el proceso
emisor puede seguir operando en paralelo con la transmisión del mensaje, en vez de que la CPU quede
inactiva.
Sin embargo, la ventaja de rendimiento que ofrecen las primitivas sin bloqueo es contrarrestada por
una seria desventaja: el emisor no puede modificar el búfer del mensaje sino hasta que éste se haya
enviado. Las consecuencias de que el proceso sobrescriba el mensaje durante la transmisión son
demasiado horribles como para contemplarlas. Peor aún, el proceso emisor no tiene idea de cuándo
terminará la transmisión, por lo que nunca sabrá cuándo es seguro volver a utilizar el búfer. Es muy
difícil que pueda evitar usarlo de manera indefinida.
12. ¿Cuáles son las características más importantes de los threads? ¿En qué casos los uilizaría?
En un sistema con multihilamiento La característica más importante de los hilos es su capacidad de
conmutar entre ellos en tiempos muy cortos del orden de nanosegundos a diferencia de los procesos
que para conmutar entre ellos necesitan muchos ciclos de reloj.
Si un SO adimite hilos solo a nivel usuario, un proceso puede tener varios hilos de ejecución dentro de
un proceso pero cuando kernel nunca se percata de que existen varios hilos solo puede procesar un hilo
por vez como si fueran procesos. La primera ventaja, la más obvia, es que un paquete de hilos de nivel
usuario puede implementarse en un sistema operativo que no acepte hilos.
13. ¿Cuáles la diferencia de los threads a nivel kernel y los que son implementados a nivel usuario?
Implementación de hilos en el Kernel: en este caso el kernel sabe de la existencia de los hilos. El
kernel tiene una tabla de los hilos existentes que lleva la cuenta de todos los hilos en el sistema. Cuando
un hilo desea crear un nuevo hilo o destruir uno existente, realiza una llamada al kernel, la cual se
Sistemas Operativos
encarga de la creación o destrucción mediante una actualización en la tabla de hilos del kernel. La tabla
de hilos del kernel contiene los registros, el estado y demás información de cada hilo. Esta información
es la misma que con los hilos de nivel usuario, pero ahora se mantiene en el kernel, en vez de hacerlo
en espacio de usuario.
14. ¿Cuáles recursos son utilizados cuando un thread es creado? ¿y en el caso de un proceso?
Dentro de un proceso puede haber uno o más hilos, cada uno con:
• Un estado de ejecución por hilo (Ejecutando, Listo, etc.).
• Un contexto de hilo que se almacena cuando no está en ejecución; una forma de ver a un hilo
es como un contador de programa independiente dentro de un proceso.
• Una pila de ejecución.
• Por cada hilo, espacio de almacenamiento para variables locales.
Un proceso incluye un espacio de direcciones virtuales para el manejo de la imagen del proceso,
la imagen de un proceso es la colección de programa, datos, pila y atributos definidos en el bloque
de control del proceso. De vez en cuando a un proceso se le puede asignar control o propiedad
de recursos tales como la memoria principal, canales E/S, dispositivos E/S y archivos. El sistema
operativo realiza la función de protección para evitar interferencias no deseadas entre procesos
en relación con los recursos.
15. Proporcione dos ejemplos de programación en los que los mecanismos de multithread no
proporcionen un mejor rendimiento que una solución monothread.
Trabajo en primer plano y en segundo plano. Por ejemplo, en un programa de hoja de cálculo, un
hilo podría mostrar menús y leer la entrada de usuario, mientras otro hilo ejecuta los mandatos de
usuario y actualiza la hoja de cálculo. Esta forma de trabajo a menudo incrementa la velocidad que se
percibe de la aplicación, permitiendo al programa solicitar el siguiente mandato antes de que el
mandato anterior esté completado.
Velocidad de ejecución. Un proceso multihilo puede computar una serie de datos mientras que lee los
siguientes de un dispositivo. En un sistema multiprocesador pueden estar ejecutando simultáneamente
múltiples hilos de un mismo proceso. De esta forma, aunque un hilo pueda estar bloqueado por una
operación de E/S mientras lee datos, otro hilo puede estar ejecutando.
16. Una solución multithread utilizando threads a nivel de usuario, ¿presenta mejor rendimiento
(performance) en un sistema multiprocesador que en un sistema monoprocesador?
Sistemas Operativos
En una estrategia pura ULT(hilos a nivel de usuarios), una aplicación multihilo no puede sacar ventaja
del multiproceso. El núcleo asigna el proceso a un solo procesador al mismo tiempo. Por consiguiente,
en un determinado momento sólo puede ejecutar un hilo del proceso. En efecto, tenemos
multiprogramación a nivel de aplicación con un solo proceso. Aunque esta multiprogramación puede
dar lugar a una mejora significativa de la velocidad de la aplicación, hay aplicaciones que se podrían
beneficiar de la habilidad de ejecutar porciones de código de forma concurrente.
17. Considere un sistema multiprocesador y un programa multithreaded utilizando el modelo de
threads muchos-a-muchos. Sea la cantidad de threads a nivel usuario mayor que la cantidad de
procesadores en el sistema. Discuta sobre el rendimiento en las siguientes situaciones:
a) La cantidad de kernel threads asignados al programa es menor que la cantidad de procesadores.
b) La cantidad de kernel threads asignados al programa es igual a la cantidad de procesadores.
c) La cantidad de kernel threads asignados al programa es superior a la cantidad de procesadores pero
menor que la cantidad de threads a nivel de usuario.