Diferencia entre revisiones de «Solución de los ejercicios de procesos»
(Página nueva: == Ejercicio 1 ==) |
(→Ejercicio 1) |
||
(No se muestran 10 ediciones intermedias de 4 usuarios) | |||
Línea 1: | Línea 1: | ||
== Ejercicio 1 == | == Ejercicio 1 == | ||
+ | '''Propuesta de solución:''' | ||
+ | Los procesos A y C presentan un comportamiento con cierta tendencia permanecer en estado bloqeuado, por lo que se les puede clasificar como interactivos. | ||
+ | |||
+ | El proceso B en cambio, no presenta bloqueos, por lo que se le puede considerar un proceso con comportamiento por lotes. | ||
+ | |||
+ | --[[Usuario:Ferguatol|fernandoenzo]] 17:33 27 oct 2011 (UTC) | ||
+ | |||
+ | |||
+ | [[Archivo:Ejemplo.svg]] | ||
+ | |||
+ | --[[Usuario:Marbarcan|marinabarragancandel]] 11:05 14 mar 2018 | ||
+ | |||
+ | == Ejercicio 2 == | ||
+ | |||
+ | '''Posible solución:''' | ||
+ | |||
+ | Un hilo es una línea de ejecución o "proceso ligero". El sistema operativo ofrece llamadas al sistema para crear/destruir hilos. Desde el código del programa, puedo hacer uso de estas llamadas al sistema. Además, dos o más hilos, de un mismo proceso, comparten espacio de memoria. Mencionar también que la conmutación de hilos es menos costosa que la conmutación de procesos. | ||
+ | |||
+ | Las ventajas principales son: | ||
+ | |||
+ | - Menor penalización en cuanto a conmutación. | ||
+ | |||
+ | - Dos hilos de un mismo proceso pueden compartir memoria aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos. | ||
+ | |||
+ | - Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos. | ||
+ | |||
+ | --[[Usuario:Raflopseg|Rafael López Segura]] 10:21 16 nov 2011 (UTC). | ||
+ | |||
+ | == Ejercicio 3 == | ||
+ | '''Propuesta de solución:''' | ||
+ | * '''Activo''': el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez. | ||
+ | * '''Preparado''': el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo. | ||
+ | * '''Bloqueado''': el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo "avisa" al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado. | ||
+ | |||
+ | La transición de activo a preparado y viceversa depende de decisiones tomadas por el '''planificador del sistema operativo''' en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema. | ||
+ | |||
+ | |||
+ | [[Archivo:SSOO2.jpg]] | ||
+ | |||
+ | |||
+ | Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo: | ||
+ | * El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador. | ||
+ | * Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere. | ||
+ | * Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código. | ||
+ | |||
+ | --[[Usuario:Jescrerui|JCR]] 22:16 9 nov 2012 (UTC) |
Revisión actual del 17:16 10 mar 2020
Ejercicio 1
Propuesta de solución: Los procesos A y C presentan un comportamiento con cierta tendencia permanecer en estado bloqeuado, por lo que se les puede clasificar como interactivos.
El proceso B en cambio, no presenta bloqueos, por lo que se le puede considerar un proceso con comportamiento por lotes.
--fernandoenzo 17:33 27 oct 2011 (UTC)
--marinabarragancandel 11:05 14 mar 2018
Ejercicio 2
Posible solución:
Un hilo es una línea de ejecución o "proceso ligero". El sistema operativo ofrece llamadas al sistema para crear/destruir hilos. Desde el código del programa, puedo hacer uso de estas llamadas al sistema. Además, dos o más hilos, de un mismo proceso, comparten espacio de memoria. Mencionar también que la conmutación de hilos es menos costosa que la conmutación de procesos.
Las ventajas principales son:
- Menor penalización en cuanto a conmutación.
- Dos hilos de un mismo proceso pueden compartir memoria aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos.
- Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos.
--Rafael López Segura 10:21 16 nov 2011 (UTC).
Ejercicio 3
Propuesta de solución:
- Activo: el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.
- Preparado: el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.
- Bloqueado: el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo "avisa" al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.
La transición de activo a preparado y viceversa depende de decisiones tomadas por el planificador del sistema operativo en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema.
Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:
- El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.
- Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.
- Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.
--JCR 22:16 9 nov 2012 (UTC)