Mensaje: #1
[Sistemas Operativos] VoF de Finales (Introducción y Estructuras de SO)
Finales
Sistemas Operativos
Aporto VoF de finales resueltos, algunos resueltos por mi y otros los encontré resueltos, la idea es debatir cuales estan mal.
Las llamadas al sistema son servicios del sistema operativo dentro de los cuales se pueden ejecutar instrucciones privilegiadas.
Verdadero, Las llamadas al sistema proveen una interfaz entre los procesos y los servicios del sistema operativo. Mediante las llamadas al sistema, el usuario solicita los servicios que desea del sistema operativo. Cuando se hace una llamada al sistema se cambia de modo usuario a modo kernel para poder ejecutar instrucciones privilegiadas. [Silberschatz pág. 17 y pág. 39]
Un procesador que ejecuta código de usuario, sólo podrá realizar un mode switch si se produce un system call.
Falso, también puede realizar un mode switch en otros casos como por ejemplo ante la aparición de una interrupción o un trap.
La llamada al sistema (system call) es una forma que tienen los procesos de acceder a funciones privilegiadas.
Verdadero, un proceso usuario puede pedir un servicio al kernel mediante un system call o una instrucción privilegiada.
El SO es capaz de prevenir que un proceso ejecute una instrucción privilegiada sin que el procesador esté marcado como para ejecutar en ese modo.
Falso. El HW detecta los errores de violación de los modos. El SO se encarga de tratar estos errores. [Silberchatz-Galvin, 7ª ed. Esp., Pg. 18].
En relación con las llamadas al sistema, es cierto que en un sistema multiprocesador puede invocarse en el mismo instante la misma llamada al sistema por más de un proceso.
Verdadero. Por ejemplo: puede haber dos procesos que soliciten la apertura (open) de archivos en un mismo instante.
Algunas llamadas al sistema, como las de sockets, podrían implementarse como funciones que corran en espacio de usuario.
Falso, en algún momento tiene que cambiar a modo kernel para ejecutar instrucciones privilegiadas porque se tiene que comunicar con una parte del hardware en este caso la placa de red.
En un sistema operativo Microkernel la forma básica de comunicación entre procesos (ó entre hilos) son las interrupciones a nivel software.
Falso. No son las interrupciones, es el paso de mensajes. Pág. 178, 1er. párrafo de IPC. [Stallings, 5ª ed. Esp., Pg. 178].
El Kernel del sistema operativo debe ser los más pequeño posible, esto se debe a que de esta forma es menos propenso a los fallos.
Falso, es verdad que los microkernels proporcionan más fiabilidad dado que la mayoría de los servicios se ejecutan como procesos de usuario y si un servicio falla, el resto del SO no se ve afectado pero los microkernels pueden tener un rendimiento peor que otras soluciones debido a la carga de procesamiento adicional impuesta por las funciones del sistema.[Silberschatz pág. 56]
El diseño del Microkernel impone interfases no uniformes en los requerimientos hechos por los procesos.
Falso. La función principal del microkernel es proporcionar un mecanismo de comunicaciones entre el proceso cliente y los distintos servicios que se ejecutan también en el espacio de usuario. La comunicación se realiza mediante el paso de mensajes. El programa cliente y el servicio interactúan intercambiando mensajes con el microkernel. Para ello la interfaz que proporciona a los procesos usuario debe ser uniforme.
Una de las ventajas que presentan los sistemas basados en micronúcleos, con respecto a otras arquitecturas, es el mayor rendimiento al basar su funcionamiento en el paso de mensajes.
Falso. Las ventajas de los sistemas basados en micronúcleos no están relacionadas justamente con el rendimiento sino con la flexibilidad y seguridad. El rendimiento podría estar en desventaja en comparación con otras arquitecturas ya que lleva mayor tiempo construir y enviar un mensaje a través del microkernel, aceptarlo y decodificar la respuesta que realizar un service call como en otras arquitecturas.
En una arquitectura microkernel, el algoritmo de elección de víctima y el de reemplazo de pagina se encuentran fuera del microkernel.
Verdadero, las partes esenciales se encuentran dentro del micronucleo, otras como la gestión de archivos, memoria virtual etc., están fuera del micronucleo.
En una arquitectura de microkernel, el algoritmo de elección de la víctima y el de reemplazo de páginas se encuentran fuera del microkernel.
Verdadero, el manejo de la memoria virtual no se encuentra en el microkernel porque este solo contiene las funciones absolutamente esenciales del sistema operativo.[Stallings 177]
El código correspondiente al tratamiento de interrupciones en un sistema operativo como UNIX se ejecuta en modo usuario.
Falso, la rutina de tratamiento de interrupción es en modo privilegiado.
Una de las tareas del procesador al tratar una interrupción es asignar al contador de programa (Program Counter) la dirección de inicio del programa de manejo de interrupción (interrupt handler).
Verdadero, cuando se produce una interrupción se guarda el contexto del proceso en ejecución para invocar la rutina de interrupción por lo que se carga la dirección de inicio de dicha rutina y comienza la ejecución del servicio de la interrupción.
La cantidad de interrupciones de HW internas que se pueden producir en forma concurrente está fuertemente relacionada con la cantidad de procesadores.
Verdadero. Las interrupciones internas son producidas por los procesadores (interno a la CPU). Por lo tanto está relacionada con la cantidad de procesadores. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas. Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.
Cuando ocurre una excepción (trap) el SO determina el error y si la condición de excepción es fatal.
Verdadero. Con un trap, el SO conoce si una condición de error o de excepción es irreversible. Si es así, el proceso en ejecución se pone en el estado Saliente y se hace un cambio de proceso. De no ser así, el SO actuará dependiendo de la naturaleza del error y su propio diseño. [Stallings, 5ª ed. Esp., Pg. 139].
Un claro ejemplo de una interrupción es una división por cero.
Verdadero. Una división por cero es una excepción, es decir una interrupción generada por software. [Silberschatz pág. 16].
Cuando un proceso en modo usuario intenta ejecutar una operación privilegiada ocurre una excepción (trap).
Verdadero. "Si se hace un intento de ejecutar una instrucción privilegiada en modo usuario, el hardware no ejecuta la instrucción sino que la trata como ilegal y envía una excepción al sistema operativo.[Silberschatz pág. 17].
Sabemos que es totalmente posible que se produzcan dos interrupciones de hardware externas al mismo tiempo ¿Puede pasar lo mismo con dos interrupciones de hardware internas?
No, porque las interrupciones internas son internas al procesador, con lo cual sólo puede producirse una al mismo tiempo. [Stallings, 5ª ed. Esp., Pgs. 17-27, “Interrupciones”].
Cuando se produce una interrupción, el SO a veces puede no tratarlas.
Falso, puede retrasarse en atenderlas debido a que tiene las interrupciones deshabilitadas, pero no puede dejar de atenderlas. El sistema operativo siempre trata las interrupciones (a lo sumo demora el tiempo en atenderlas). Salvo que se corte la luz!
Las interrupciones se producen debido a un error o excepción generados dentro del actual proceso en ejecución.
Falso, depende el tipo de interrupción, porque las interrupciones externas provienen de dispositivos de E/S.
Una operación atómica es aquella que se ejecuta con las interrupciones deshabilitadas.
Verdadero, una operación atómica es la que no puede ser interrumpida, por lo tanto la función atómica tiene las interrupciones deshabilitadas.
El vector de interrupciones es una estructura de datos que se encuentra dentro de la tabla de procesos.
Falso, el vector de interrupciones se encuentra en una memoria protegida por el SO.
Siempre que una interrupción sea lanzada mientras la CPU se encuentra ejecutando una instrucción, la CPU completará la instrucción actual y luego, de manera inmediata, dará lugar al tratamiento de la interrupción.
Verdadero. "El procesador termina la ejecución de la instrucción actual antes de responder a la interrupción." Stallings pág.20
La característica de los Sistemas de Tiempo Real que refleja cuánto tiempo le toma al sistema operativo dar servicio a una interrupción luego de haberla aceptado es conocida por determinismo.
Falso, Dicha característica es conocida como "reactividad". El determinismo se preocupa de cuánto tiempo tarda el sistema operativo antes de reconocer una interrupción. [Stallings pág.464]
Una de las características de los Sistemas Operativos de Tiempo Real es el “determinismo”, la cual indica cuánto tarda el Sistema Operativo desde que reconoce una interrupción hasta brindarle servicio.
Falso, Dicha característica es conocida como "reactividad". El determinismo se preocupa de cuánto tiempo tarda el sistema operativo antes de reconocer una interrupción. [Stallings pág.464]
Una de las diferencias entre los sistemas operativos de tiempo real y los de uso general es que la implementación de estos últimos tienden a ser determinísticos mientras que los de tiempo real no.
Falso, los STR son los que tienden a ser determinísticos. [Stallings pág.464]
Una de las características de la planificación en tiempo real es que las tareas siempre deben cumplir con los plazos establecidos.
Falso, ningún sistema puede ser totalmente determinista porque depende de la velocidad a la que es capaz de responder a las interrupciones y si el sistema tiene capacidad suficiente para manejar todas solicitudes dentro del tiempo requerido. [Stallings pág.464]
Los sistemas operativos monolíticos están necesariamente implementados en código máquina.
Falso, puede estar implementado en un lenguaje de alto nivel. Ej: unix monolítico.
El diseño de un sistema operativo por capas necesariamente debe ser monolítico.
Falso, los SO por capas son una evolución de los monolíticos. Los monolíticos carecen de estructura.
El diseño del Sistema Operativo UNIX se caracteriza por su estructura en capas.
Falso. Se caracteriza por contar con un núcleo monolítico.
En los Sistemas de procesamiento en serie solamente se producían desperdicios de procesamiento de CPU si el JOB finalizaba antes de lo estimado.
Verdadero porque no existía ningún sistema operativo, los usuarios solicitaban bloques de tiempo fijos para el procesamiento y si se terminaba antes se malgastaba el tiempo.
Para solucionar los inconvenientes que traían aparejados los SO de procesamiento en serie, surgen los sistemas de procesamiento en batch.
Verdadero, con procesamiento en serie cada usuario ponía su proceso reservando una cantidad de tiempo estimada que podía ser desperdiciada, con sistemas batch se entregan un lote de trabajos y un monitor es el encargado de asignar el procesador a cada trabajo de modo que cuando se terminaba de ejecutar un proceso se continuaba con el siguiente.
Con el surgimiento de los Sistemas de procesamiento batch multiprogramados se incorpora el concepto de multiprogramación.
Verdadero porque cuando un proceso estaba bloqueado a la espera de que se complete una operación de E/S se podía continuar con la ejecución de otro proceso.
A Diferencia de los Time Sharing Systems, el objetivo de los Sistemas de procesamiento batch es minimizar el Response Time (Tiempo de Respuesta).
Falso, los sistemas de tiempo compartido tienen el objetivo de minimizar el tiempo de respuesta (tiempo que se tarda desde que un proceso está listo para ejecutarse hasta que el recurso de la CPU es adquirido por el mismo).
Los Sistemas Operativos de tiempo compartido realizan tareas en colaboración con las máquinas cliente.
Falso, el tiempo compartido da ráfagas de CPU a distintos usuarios, todo el proceso lo hace el computador central.
En una estructura SMP (Symmetric MultiProcessor) no se comparte la memoria principal para evitar problemas de coherencia de cache en los procesadores.
Falso ya que la memoria principal es compartida por todos los procesadores. El SO debe implementar los mecanismos necesarios de protección para que la ejecución se haga sin problemas
La administración de múltiples procesos en un sistema de un solo procesador es conocida como Multiprogramación (Multiprogramming), mientras que en sistemas de varios procesadores se lo conoce como Multiprocesamiento.
Verdadero porque la definición de multiprogramación es: la administración de múltiples procesos dentro de un sistema de único procesador mientras que Multiprocesamiento es: la administración de múltiples procesos dentro de múltiples procesadores.
En un Sistema con multiprocesamiento no se puede dar el caso que un procesador quede ocioso mientras existen procesos esperando para ejecutar.
Falso, si la asignación de procesadores es estática se puede dar el caso que un procesador se encuentre ocioso.[Stallings pág. 454]
Un Sistema Operativo multiprogramado es un Sistema Operativo de tiempo compartido. Sin embargo, no es válido el reciproco.
Falso, un sistema de tiempo compartido puede ser un sistema multiprogramado ya que se reparte el procesador entre distintos usuarios. Aparte un sistema multiprogramado puede ser monousuario.
Multithreading se refiere a la habilidad de un SO para soportar múltiples Threads en ejecución dentro de múltiples procesos.
Falso. Multithreading se a la capacidad de un sistema operativo de dar soporte a múltiples hilos de ejecución en un solo proceso, no necesariamente en múltiples procesos. [Stallings pág. 158]
Muchos sistemas informáticos actuales soportan múltiples procesadores y permiten que cada procesador se autoplanifique de forma independiente.
Falso, el SO es el encargado de la planificación de los procesos.
El concepto de máquina virtual se basa en una arquitectura en niveles, donde el hardware y el sistema operativo subyacentes son emulados lo más fielmente posible.
Verdadero, se abstrae el hardware de la computadora formando varios entornos de ejecución diferentes, creando así la ilusión de que cada entorno de ejecución está operando en su propia computadora privada.
El método de comunicación entre procesos (IPC) mediante memoria compartida requiere que los procesos que se van a comunicar compartan algunas variables.
Falso, lo que requiere es que dos o más procesos acuerden en eliminar la restricción del sistema operativo a que un proceso acceda a la memoria de otro proceso.[Silberschatz pág.49]
Si se ejecutan dos señales en el mismo instante, tales como SIGINT y SIGKILL, se atenderá la segunda señal ya que tiene más prioridad que la primera.
Falso, las señales a diferencia de las interrupciones, no utilizan prioridades. Si dos señales ocurren al mismo tiempo, éstas son presentadas al proceso una a la vez, sin un orden específico.
Los signals (señales) son mecanismos del HW que informan a los procesos de la ocurrencia de eventos asincrónico.
Falso. Las señales son proporcionadas por el SO.
(Este mensaje fue modificado por última vez en: 16-02-2013 15:15 por Alejandro.)
|