Está en la página 1de 9

3.1. La tabla 3.20 muestra los estados de los procesos en el sistema operativo VAX/VMS.

¿Puede darse una justificación para la existencia de tantos estados de espera diferentes?

Decir por qué los estados siguientes no tienen una versión residente (un espacio asignado en la
memoria) y otra, descargado (descargado al disco y puesto en estado suspendido): espera

por fallo de página, espera por colisión de página, espera por un suceso común, espera por

página libre y espera por recurso.

Dibujar el diagrama de transición de estados e indicar la acción o el acontecimiento que provoca


cada transición.

Rta: No tienen versión residente ni descargado, porque simplemente dependen de otro suceso,
y están automáticamente suspendidos

Explícitamente, el MVS hace uso de solo tres estados para una tarea: Listo, Activo (en

ejecución) y Esperando. Sin embargo, se puede descargar a memoria secundaria un espacio de

direcciones entero. Por tanto, según se ha venido usando el término, todas las tareas de dicho

espacio de direcciones van a quedar suspendidas.


3.2. Pinker y Wear definieron los estados siguientes para un proceso: ejecutando (Ejecución),
activo (Listo), bloqueado y suspendido [PINK89]. Un proceso está bloqueado si está esperando el
permiso para usar un recurso y está suspendido si está esperando 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 se define igual que en este
capítulo. Compárense los méritos relativos de estas dos definiciones.

Rta:

BLOQUEADO SUSPENDIDO
- Si está esperando el permiso para usar un - Si está esperando que termine una operación
recurso. sobre un recurso que ya ha conseguido.
- No puede ejecutar hasta que se produzca - El sistema operativo expulsa a disco a uno de
cierto suceso, como la terminación de una los procesos que esté Bloqueado y lo pasa a
operación de E/S. una cola de Suspendidos.
- Si solicita algo por lo que debe esperar. - Procesos existentes que han sido sacados
- Cuando espera a que otro proceso le temporalmente de la memoria principal o
proporcione una cierta entrada o cuando suspendidos.
espera un mensaje del otro proceso. - Cuando todos los procesos de la memoria
- Cuando se produce un suceso, todos los principal están en el estado Bloqueado, el
procesos de la cola de Bloqueados que están sistema operativo puede suspender un
esperando a dicho suceso se pasan a la cola de proceso poniéndolo en estado Suspendido y
Listos. transferirlo a disco.
- El espacio que se libera de la memoria
principal puede utilizarse entonces para traer
otro proceso.
- Debe reconocerse, que cada proceso en
estado Suspendido fue bloqueado
originalmente por un suceso concreto.

3.3. Para el modelo de procesos de siete estados de la figura 3.7b, dibujar un diagrama de colas
similar al de la figura 3.6b.
3.4. Considérese el diagrama de transición de estados de la figura 3.7b. Supóngase que es hora de
que el sistema operativo expida un proceso y que existen procesos tanto en el estado Listo como
en estado de Listo y Suspendido y que al menos un proceso en el estado de Listo y suspendido
tiene una prioridad de planificación más alta que cualquiera de los procesos en el estado Listo. Dos
políticas extremas son (1) expedir siempre un proceso que esté en estado Listo para así minimizar
el intercambio con el disco y (2) dar siempre preferencia al proceso con prioridad más alta, aun
cuando esto pueda significar un intercambio innecesario con el disco.

Rta: Se podría poner un estado de validación antes de pasar a Ejecutado, donde se validen dos
procesos uno de la lista Listo Suspendido y otro de Listos y se valida cual tiene prioridad más alta y
éste puede pasar a ser Ejecutado

3.5. El sistema operativo VAX/MVS tiene cuatro modos de acceso al procesador para facilitar la
protección de los recursos del sistema y su compartición entre los procesos. El modo de acceso
determina lo siguiente: Los privilegios de ejecución de las instrucciones: Las instrucciones que el
procesador puede ejecutar. Los privilegios de acceso a memoria: Las posiciones de la memoria
virtual a las que puede acceder la instrucción en curso. Los cuatro modos son los siguientes:
Núcleo: Ejecuta el núcleo del sistema operativo VMS, lo que incluye a la gestión de memoria, el
tratamiento de interrupciones y las operaciones de E/S (figura 2.14). Ejecutivo: Ejecuta muchas de
las llamadas a servicios del sistema operativo, incluyendo las rutinas de gestión de archivos y
registros (en disco o cinta). Supervisor: Ejecuta otros servicios del sistema operativo, tales como
las respuestas a las órdenes del usuario. Usuario: Ejecuta programas de usuario y utilidades tales
como compiladores, editores, montadores y depuradores. Un proceso que esté ejecutando en un
modo menos privilegiado tiene que llamar a menudo a procedimientos que ejecutan en un modo
más privilegiado. Por ejemplo, un programa de usuario solicita un servicio del sistema operativo.
Esta llamada se lleva a cabo mediante una instrucción CHM, que provoca una interrupción y
transfiere el control a una rutina con un nuevo modo de acceso. Se ejecuta un retomo con la
instrucción REÍ (retomo de excepción o de interrupción). Algunos sistemas operativos tienen dos
modos, de núcleo y de usuario. ¿Cuáles son las ventajas y las desventajas de tener cuatro modos
en lugar de dos? ¿Se puede encontrar un motivo para tener aún más de cuatro modos?
VENTAJAS DESVENTAJAS
Si el usuario necesita disponer de recursos Si se tiene más de dos niveles y las tareas no
controlados por el Sistema Operativo, es más requieren de otros recursos, se puede tomar
fácil si se cuenta con niveles intermedios, ya más tiempo mientras pasa por cada nivel, en
que las tareas tendrán un encargado que lugar de ser una actividad corta y rápida.
ayude a realizarlas más rápido. - No permite que se aplique el principio del
"tener que conocer".

3.6. El esquema del VMS discutido en el problema anterior suele conocerse como estructura de
protección en anillo, como se ilustra en la figura 3.22. En realidad, el sencillo esquema de
núcleo/usuario, como el descrito en la sección 3.3, es una estructura de dos anillos. Lisberschatz y
Galvin señalaron un problema de este enfoque [SILB94]: La desventaja principal de la estructura
(jerárquica) de anillos es que no permite que se aplique el principio del "tener que conocer". En
particular si un objeto tiene que estar accesible en un dominio D¡ pero no en un dominio D¡,
entonces se debe cumplir que y < i'. Pero esto significa que todos los segmentos accesibles en D¡
también estén accesibles en D¡. Explicar con claridad el problema mencionado en la cita anterior.
Sugerir una forma para que un sistema operativo con estructura de anillos pueda solucionar este
problema.

Rta: Un sistema operativo utiliza estructura de anillos, para organizar los procesos de acuerdo a su
prioridad y para aplicar la seguridad a cada proceso y su función. Para que su uso sea eficaz se
requiere una estrecha cooperación entre el hardware y el S.O.
3.7. La figura 3.6b sugiere que un proceso puede estar en una sola cola de sucesos a la vez. ¿Existe
la posibilidad de que se desee permitir que un proceso espere a más de un suceso a la vez? Dar un
ejemplo. En tal caso, ¿cómo se modificaría la estructura de las colas de la figura para dar cabida a
esta nueva situación?

Rta: El ejemplo más cercano es el planteado en la situación 3.1. Se modificaría, haciendo una fila
de colas, es decir que automáticamente salga de la cola n deba ingresar a la cola n-1 y así
sucesivamente.
3.8 En algunas de los primeros computadores, una interrupción hacía que los valores de los
registros se almacenaran en posiciones fijas asociadas con la señal de interrupción. ¿Bajo qué
circunstancias es práctica esta técnica? Explicar por qué no es conveniente en general.

Rta: En el ciclo de interrupción, el procesador comprueba si se ha producido alguna interrupción,


lo que se indicaría por la presencia de una señal de interrupción. Si no hay pendiente ninguna
interrupción, el procesador continúa con el ciclo de lectura de la instrucción siguiente del
programa en curso del proceso actual. Si hay alguna interrupción pendiente, el procesador hace lo
siguiente: 1. Salva el contexto del programa que está ejecutándose. 2. Asigna al contador de
programa el valor de la dirección de comienzo de un programa de tratamiento de la interrupción.
El procesador continúa entonces con el ciclo de lectura de instrucción y trae la primera instrucción
del programa de tratamiento de interrupciones, que atenderá a la interrupción.

La rutina de tratamiento de la interrupción es normalmente un programa corto que lleva a cabo


unas pocas tareas básicas relacionadas con una interrupción. Por ejemplo, se marca el indicador
que señala la presencia de una interrupción, puede enviar un acuse de recibo a la entidad que
produjo la interrupción (como un módulo de E/S) y puede hacer algunas labores básicas
relacionadas con los efectos del suceso que causó la interrupción. Por ejemplo, si la interrupción
está relacionada con un suceso de E/S, el gestor de interrupciones comprobará condiciones de
error. Si se ha producido un error, la rutina de tratamiento puede enviar una señal al proceso que
solicitó originalmente la operación de E/S. Si La interrupción es de reloj, el gestor deberá darle el
control al distribuidor, quien querrá pasarle el control a otro proceso, puesto que la fracción de
tiempo asignada al proceso que estaba ejecutándose habrá expirado.
3.9. Se ha señalado que dos de las ventajas de usar hilos múltiples dentro de un proceso son: (1)
acarrea menos trabajo crear un nuevo hilo en un proceso existente que crear un nuevo proceso y
(2) se simplifica la comunicación entre los hilos de un mismo proceso. ¿También se da el caso de
que el cambio de contexto entre dos hilos del mismo proceso acarrea menos trabajo que el
cambio de contexto entre dos hilos de procesos diferentes?

Rta: Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: Se tarda
mucho menos tiempo en crear un nuevo hilo en un proceso existente que en crear una nueva
tarea, menos tiempo para terminar un hilo y menos tiempo para cambiar entre dos hilos de un
mismo proceso. Por tanto, si hay una aplicación o una función que pueda implementarse como un
conjunto de unidades de ejecución relacionadas, es más eficiente hacerlo con una colección de
hilos que con una colección de tareas separadas.

Un ejemplo de aplicación que podría hacer uso de hilos es un servidor, como puede ser un
servidor de archivos de una red de área local. Cada vez que llegue una solicitud de un nuevo
archivo, se puede generar un nuevo hilo para el programa de gestión de archivos. Puesto que el
servidor debe manejar muchas solicitudes, se crearán y destruirán muchos hilos en un corto
periodo de tiempo. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de una
misma tarea simultáneamente y en diferentes procesadores. Los hilos son también útiles en los
monoprocesadores para simplificar la estructura de los programas que lleven a cabo diversas
funciones.

Otra forma en la que los hilos aportan eficiencia es en la comunicación entre diferentes programas
en ejecución. En la mayoría de los sistemas operativos, la comunicación entre procesos
independientes requiere la intervención del núcleo para ofrecer protección y para proporcionar
los mecanismos necesarios para la comunicación. Sin embargo, puesto que los hilos de una misma
tarea comparten memoria y archivos, pueden comunicarse entre si sin invocar al núcleo.
3.10. En la sección 3.5 se comentó que UNIX no se ajusta a las aplicaciones de tiempo real, ya que
un proceso que esté ejecutando en el modo del núcleo no puede ser expulsado. Explíquese con
más detalle.

Rta. Se hace una distinción entre los estados: Listo para Ejecutar y en Memoria, frente al estado de
Expulsado. Estos dos estados son, básicamente, el mismo, como se indica por la línea de puntos
que los une. Se hace la distinción para enfatizar la forma en que se pasa al estado Expulsado.
Cuando un proceso esté ejecutándose en modo núcleo (como resultado de una llamada del
supervisor, una interrupción de reloj, o una interrupción de E/S), llegara un momento en el que el
núcleo termine su trabajo y esté listo para devolver el control al programa de usuario. En este
punto, el núcleo puede decidir expulsar el proceso en curso en favor de alguno que esté listo y
tenga mayor prioridad. En tal caso, el proceso en curso se pasa al estado Expulsado. Sin embargo,
a efectos de la expedición, aquellos procesos que están en estado Expulsado y aquellos que están
en Listos para Ejecutar y en Memoria forman una sola cola.

La expulsión puede producirse solo cuando va a moverse un proceso del modo núcleo al modo
usuario. Mientras un proceso esté ejecutándose en modo núcleo no puede ser expulsado. Esto
hace que UNIX sea inadecuado para el procesamiento en tiempo real.

3.11. El número de conceptos que tienen que ver con los procesos de OS/2 puede reducirse de
tres a dos, eliminado las sesiones y asociando la interfaz del usuario (teclado, ratón y pantalla) con
los procesos. De este modo, habrá un proceso de fondo en cada instante. Para una estructuración
mayor, los procesos se pueden dividir en hilos. ¿Qué beneficios se pierden con este enfoque? Si se
decide seguir adelante con esta modificación, ¿dónde hay que asignar los recursos (memoria,
archivos, etc.), a nivel de proceso o a nivel de hilo?

Rta: Como ejemplo del uso de los hilos, considérese la aplicación Aldus PageMaker, que se ejecuta
para OS/2. PageMaker es una herramienta de composición, diseño y producción de publicaciones.
La estructura de hilos, que se muestra en la figura 3.15 RON9O], se escogió para optimizar el grado
de respuesta de la aplicación. Siempre hay tres hilos activos: un hilo de gestión de sucesos, un hilo
para el dibujo de la pantalla y un hilo de servicio. En general, OS/2 responde peor en la gestión de
las ventanas si hay algún mensaje de entrada que necesita mucho procesamiento. Los principios
generales de OS/2 establecen que ningún mensaje puede necesitar más de 1/10 de segundo. Por
ejemplo, llamar a una subrutina para imprimir una página mientras se está procesando una orden
de impresión podría impedir que el sistema atendiera a algún mensaje posterior para alguna
aplicación, lo que ralentiza el rendimiento. Para satisfacer este criterio, las operaciones largas del
usuario con PageMaker, como la impresión, la importación de datos y el flujo de textos, se llevan a
cabo mediante un hilo de servicio. La inicialización del programa también se lleva a cabo con un
hilo de servicio, que aprovecha el tiempo libre mientras que el usuario invoca un dialogo para la
creación de un nuevo documento o para abrir un documento existente. Un hilo aparte espera
nuevos mensajes de sucesos. La sincronización entre el hilo de servicio y el hilo de gestión de
sucesos es complicada porque el usuario puede seguir tecleando o moviendo el ratón, lo que
activa el hilo de ge- stión de sucesos, mientras que el hilo de servicios se mantiene ocupado. Si
este conflicto se produce, PageMaker filtra estos mensajes y acepta solo algunos básicos, como
cambiar el tamaño de las ventanas. El hilo de servicio envía un mensaje para indicar que ha
terminado su tarea. Hasta que esto ocurra, la actividad del usuario en PageMaker está limitada. El
programa indica esta restricción inhabilitando los elementos de los menús y visualizando un cursor
de “ocupado”. El usuario es libre de cambiarse a otra aplicación y, cuando el cursor “ocupado” se
traslada a otra ventana, se cambiará por el cursor adecuado para la aplicación.

Se utiliza un hilo independiente para dibujar la pantalla por dos razones: 1. PageMaker no limita el
número de objetos que pueden aparecer en una página; por tanto, procesar una petición de
dibujo puede exceder fácilmente de la pauta de 1/10 sg. 2. Utilizar un hilo separado permite que el
usuario abandone el dibujo. En este caso, cuando el usuario cambia la escala de una página, ésta
puede dibujarse de inmediato. El programa es menos sensible si termina visualizando la página en
la escala anterior y después la vuelve a dibujar por completo con la nueva escala. El
desplazamiento dinámico (dynamic scrolling) —volver a dibujar la pantalla a medida que el usuario
mueve el indicador de desplazamiento— también es posible. El hilo de gestión de sucesos
supervisa la barra de desplazamiento y vuelve a dibujar las regias de los márgenes (que se vuelven
a dibujar rápidamente, ofreciéndole al usuario una sensación de respuesta inmediata). Mientras
tanto, el hilo de dibujo de la pantalla trata constantemente de volver a dibujar la pantalla y así
ponerse al corriente. Implementar el dibujo dinámico sin el uso de varios hilos impone una gran
sobrecarga a la aplicación, al obligarla a sondear los mensajes en varios puntos. Los múltiples hilos
permiten que se puedan separar las actividades concurrentes en el código de una manera más
natural.

3.12. Un proceso completa su trabajo y termina. ¿Qué operaciones básicas son necesarias para
limpiar y continuar con otro proceso?

Rta: Si un proceso termina o se abandona, se le descarta del sistema (sale del sistema). En
cualquier caso, el, distribuidor selecciona entonces un proceso de la cola para ejecutarlo.

La terminación pasa el proceso al estado Terminado. En este punto, el proceso ya no se elige más
para la ejecución. Sin embargo, las tablas y otra información asociada con el trabajo son
conservadas temporalmente por el sistema operativo. Esto le da tiempo a otros programas
auxiliares o de soporte para extraer la información necesaria. Por ejemplo, puede ser que un
programa de contabilidad necesite registrar el tiempo de procesador y otros recursos usados por
el proceso con fines de facturación. Un programa de utilidades puede tener que extraer
información sobre La historia del proceso con fines relativos a un análisis de uso o de rendimiento.
Una vez que estos programas han extraído la información necesaria, el sistema operativo ya no
necesita mantener más datos relativos al proceso y éstos se borran del sistema.

También podría gustarte