Preguntas tipo test de exámenes anteriores

En este apartado vamos a repasar temas usando las preguntas tipo test de los exámenes anteriores, lo que también nos permite revisar sus respuestas correctas.

Respuestas a las preguntas tipo test

Sistemas Operativos y Conceptos Generales

  1. Lo que caracteriza a un sistema operativo multiusuario es que es capaz de ejecutar instrucciones en varios procesadores o núcleos. (F)
    • Un sistema multiusuario permite que varios usuarios accedan al sistema simultáneamente, pero no necesariamente en varios procesadores. Eso corresponde a sistemas multiprocesador.
  2. Los sistemas multiprocesamiento ahorran dinero en comparación con los sistemas de un solo procesador, ya que los procesadores pueden compartir periféricos y fuentes de alimentación. (V)
    • Los sistemas multiprocesador comparten recursos como memoria, discos y periféricos, reduciendo costos en comparación con múltiples sistemas independientes.
  3. Un sistema operativo distribuido está formado por máquinas conectadas en red, de forma que el hardware subyacente está alejado físicamente pero conectado a nivel lógico. (V)
    • Los sistemas distribuidos integran múltiples máquinas autónomas que colaboran para ofrecer una única imagen del sistema.
  4. La mayoría de los sistemas operativos de escritorio y de servidor modernos son multiusuario, multitarea y multiproceso. (V)
    • Sistemas como Linux, Windows y macOS permiten múltiples usuarios, tareas y procesos simultáneos.
  5. Un sistema operativo en tiempo real está orientado a resolver tareas que requieran una gran velocidad de respuesta. (V)
    • Los sistemas en tiempo real garantizan respuestas dentro de plazos críticos, esenciales en aplicaciones como control industrial o robótica.
  6. Los servicios del sistema son programas que se ejecutan en segundo plano (en Linux, se llaman demonios). (V)
    • Los servicios o demons (en Linux) se ejecutan en segundo plano, proporcionando funcionalidades como redes, impresión o logging.
  7. La gestión de hilos consume muy pocas o ninguna llamada al sistema debido a la comunicación entre ellos, que se puede lograr mediante la memoria compartida. (V)
    • Los hilos de un mismo proceso comparten memoria, por lo que su comunicación no requiere llamadas al sistema, a diferencia de los procesos.
  8. El multiprocesamiento ayuda a aumentar la potencia informática, mientras que el multiproceso ayuda a crear subprocesos informáticos (hilos) de un solo proceso. (V)
    • El multiprocesamiento usa múltiples CPUs para aumentar el rendimiento, mientras que el multiproceso permite ejecutar múltiples hilos dentro de un proceso.
  9. El Portapapeles de Windows es un medio de intercambio muy flexible, donde las aplicaciones solo necesitan aceptar el formato de los datos, pudiendo residir en el mismo equipo o en equipos diferentes de una misma red. (V)
    • El Portapapeles permite transferir datos entre aplicaciones, siempre que estas soporten el formato de los datos copiados.
  10. Una interfaz hombre-máquina háptica de un sistema operativo es aquella en la que el usuario utiliza la voz para introducir las órdenes. (F)
    • Una interfaz háptica se basa en el tacto (por ejemplo, retroalimentación de fuerza), no en la voz. La interfaz de voz se denomina «interfaz de usuario por voz».
  11. En Windows, el comando taskkill sirve para finalizar solamente aquellos procesos que le pertenecen, a menos que sea un administrador. (V)
    • taskkill permite a los administradores terminar cualquier proceso, mientras que los usuarios normales solo pueden terminar sus propios procesos.
  12. La clase Runtime dispone de un método para obtener el entorno de ejecución de la máquina sobre la que se esté ejecutando el programa. (V)
    • Runtime.getRuntime() proporciona acceso a información y recursos del entorno de ejecución, como memoria disponible o variables de entorno.
  13. Con la clase Runtime accedemos a las variables del sistema, mientras que con ProcessBuilder lo hacemos a las propiedades del sistema, que son diferentes. (V)
    • Runtime se usa para acceder al entorno de ejecución global, mientras que ProcessBuilder permite configurar el entorno específico del proceso hijo.
  14. En Java no se pueden redireccionar los flujos de E/S del proceso hijo a la E/S estándar del proceso padre. (F)
    • Tanto Runtime como ProcessBuilder permiten redirigir los flujos de entrada/salida de los procesos hijos.
  15. La diferencia fundamental entre proceso y servicio es que un servicio permanece en ejecución todo el tiempo, a menos que ocurra una corrupción por parte del sistema. (V)
    • Los servicios están diseñados para ejecutarse en segundo plano de forma continua, a diferencia de los procesos que pueden ser temporales.
  16. En Linux no hay manera de saber los procesos de un usuario en un momento determinado, ni tampoco de monitorizar los recursos que están utilizando. (F)
    • Comandos como ps, top y htop permiten listar procesos y monitorizar el uso de recursos por usuario.
  17. Para que un proceso en Unix/Linux ignore una señal, debe usar en C la función signal, pasando como argumentos la señal a ignorar y la constante SIG_IGN. (V)
    • La función signal(sig, SIG_IGN) configura el proceso para ignorar la señal sig.
  18. La subrutina kill() solo vale para matar al mismo proceso que la invoca. (F)
    • kill() puede enviar señales a cualquier proceso, siempre que el usuario tenga permisos (por ejemplo, el propietario o root).

Procesos e hilos

  1. La creación de un hilo es mucho más rápida y toma menos recursos que la creación de un proceso. (V)
    • Crear un hilo es más ligero que crear un proceso, ya que los hilos comparten el mismo espacio de memoria y recursos del proceso padre, mientras que un proceso requiere su propio espacio de memoria y recursos.
  2. Los sistemas multiprocesamiento ahorran dinero en comparación con los sistemas de un solo procesador, ya que los procesadores pueden compartir periféricos y fuentes de alimentación. (V)
    • Los sistemas multiprocesador comparten recursos como memoria, discos y periféricos, reduciendo costos en comparación con múltiples sistemas independientes.
  3. Todos los procesos deben pasar por cada uno de los estados antes de su finalización. (F)
    • No todos los procesos pasan por todos los estados (por ejemplo, un proceso puede terminar sin llegar a bloquearse). Los estados típicos son: nuevo, listo, en ejecución, bloqueado y terminado.
  4. Un proceso que queda huérfano es aquel que perdura tras la finalización de su proceso padre. (V)
    • Un proceso huérfano es aquel cuyo proceso padre ha terminado, pero el proceso hijo sigue ejecutándose. En sistemas Unix/Linux, estos procesos son adoptados por el proceso init (PID 1).
  5. El planificador del sistema operativo es el responsable de seleccionar qué proceso está en ejecución, de entre los que se encuentren en el estado «Listo». (V)
    • El planificador elige el siguiente proceso a ejecutar entre aquellos que están en el estado «Listo», no entre los bloqueados.
  6. El planificador del sistema operativo es el responsable de seleccionar qué proceso está en ejecución, de entre los que se encuentren en el estado «Bloqueado». (F)
    • El planificador solo selecciona procesos en el estado «Listo». Los procesos bloqueados no están disponibles para ejecución.
  7. Un proceso que se encuentre en estado «bloqueado» se guarda en memoria secundaria para liberar recursos en la memoria principal. (F)
    • Los procesos bloqueados permanecen en memoria principal (RAM), ya que pueden desbloquearse en cualquier momento. Solo en casos de falta de memoria se recurre a la memoria secundaria (swapping).
  8. Un quantum es el tiempo mínimo que tarda un sistema operativo para el cambio de contexto de un proceso en ejecución al siguiente. (F)
    • El quantum es el tiempo máximo que un proceso puede ejecutarse antes de ser interrumpido por el planificador, no el tiempo mínimo para el cambio de contexto.
  9. El PCB (Bloque de Control de Proceso) contiene la información sobre un proceso, como su PID, nombre, prioridad, estado, etc., y es diferente para cada proceso. (V)
    • El PCB es una estructura de datos que almacena toda la información relevante de un proceso, y es única para cada proceso.
  10. Una llamada a fork() exitosa devuelve 2 valores diferentes, uno para el proceso que la invoca y otro para el nuevo proceso que se crea. (V)
    • fork() devuelve el PID del hijo al proceso padre y 0 al proceso hijo. Si falla, devuelve -1.
  11. En Linux, varios procesos pueden tener el mismo valor de PID, pero no de PPID. (F)
    • Cada proceso tiene un PID único. El PPID (PID del padre) puede repetirse si varios procesos son hijos del mismo padre.

Sincronización y mecanismos IPC

  1. Para lograr la exclusión mutua de una sección crítica donde se accede a un recurso compartido inicialmente disponible, el semáforo binario que lo controle debe inicializarse a cero.(F)
    • Un semáforo binario para exclusión mutua debe inicializarse a 1 (indicando que el recurso está disponible). Si se inicializa a 0, el primer proceso que intente acceder quedará bloqueado.
  2. Un semáforo es un mecanismo de sincronización que encapsula una variable entera que solo es accesible mediante dos operaciones atómicas estándar: wait y signal. (V)
    • Los semáforos usan las operaciones wait (decrementar) y signal (incrementar) para controlar el acceso a recursos compartidos.
  3. Mediante el mecanismo de sincronización con semáforos siempre se garantiza que no se den situaciones de interbloqueo (deadlocks). (F)
    • Los semáforos no evitan automáticamente los deadlocks. Su uso incorrecto (por ejemplo, no liberar un semáforo) puede causar interbloqueos.
  4. Los candados (mutex) son un mecanismo de sincronización que pueden usarse con condiciones y dan permiso o deniegan la ejecución de un código por parte de un proceso o de un hilo. (V)
    • Un mutex permite que solo un hilo o proceso acceda a una sección crítica a la vez, evitando condiciones de carrera.
  5. Dentro de un monitor solo puede haber un proceso en cada momento. (V)
    • Los monitores garantizan que solo un hilo o proceso pueda ejecutar su código crítico a la vez, usando bloqueos implícitos.
  6. Los procesos necesitan algún tipo de mecanismo explícito tanto para compartir información como para sincronizarse. (V)
    • Los procesos no comparten memoria por defecto, por lo que requieren mecanismos como pipes, colas de mensajes, memoria compartida o semáforos para comunicarse y sincronizarse.
  7. Cuando un método en Java se declara como synchronized, la llamada al método implica la adquisición del monitor, evitando el acceso concurrente. (V)
    • El modificador synchronized asegura que solo un hilo pueda ejecutar el método o bloque sincronizado a la vez.
  8. Los monitores en Java pueden utilizarse tanto con la disciplina signal and continue, como con otras como signal and exit o signal and wait. (F)
    • En Java, los monitores usan la disciplina «signal and wait«, donde un hilo que libera el monitor pasa a estado de espera si es necesario.
  9. En Java solo se pueden crear hilos mediante la implementación de la interfaz Runnable (F)
    • También se pueden crear hilos extendiendo la clase Thread.
  10. En Java se pueden crear hilos mediante herencia extendiendo de la clase Thread y mediante la implementación de la interfaz Runnable. (V)
    • Ambas son formas válidas de crear hilos en Java.

Teoría importante para estas preguntas

1. Procesos y Hilos

Conceptos esenciales:


2. Sincronización y Mecanismos IPC

Mecanismos de sincronización:


3. Sistemas Operativos: Conceptos Generales

Tipos de sistemas operativos:


4. Programación en Java

Hilos en Java:


5. Comandos y Herramientas del Sistema

Linux/Unix:


6. Conceptos Avanzados