Programación de Servicios y Procesos
![]() |
![]() |
![]() |
Título del Test:![]() Programación de Servicios y Procesos Descripción: Examen 1er Trimestre - PSP |




Comentarios |
---|
NO HAY REGISTROS |
Un programa: Se almacena en un medio de almacenamiento secundario, e incluye instrucciones y datos. Incluye todos los datos con lo que va a trabajar en la memoria principal. Puede ejecutarse en varios procesadores a la vez, lo que hace aumentar su rendimiento. Tiene una parte del código común cargado en la memoria para cualquier proceso que se cree para él, y una parte de datos que se crea para cada proceso. Un proceso: Se inicia con la carga de un programa en la memoria y su posterior ejecución. Puede no tener ningún hilo. Es un objeto estático, debido al tipo de datos que maneja. Puede ejecutarse en varios procesadores a la vez, para aumentar el rendimiento. La multitarea: Permite un mejor aprovechamiento de los procesadores, al asignarse a otro proceso cuando el proceso en ejecución realiza una operación de E/S. Solo es posible en sistemas multiprocesadores. Consiste en la ejecución simultánea de varios hilos de un mismo proceso. Solo compensa si se está ejecutando gran número de procesos. Los distintos procesos que se ejecutan en un ordenador: Se planifican de manera independiente a los hilos. Solo pueden comunicarse entre sí a través de almacenamiento secundario, dado que no comparten memoria. Se les debe ceder el procesador de cuando en cuando. Ninguna de las respuestas anteriores es correcta. Un cambio de contexto: Lo realiza el núcleo del mismo sistema operativo. Puede afectar negativamente al rendimiento si el proceso al que se cede el procesador está a la espera de que finalice una operación de E/S. No requiere salvaguardar el estado de ejecución si el cambio es a otro hilo del proceso actualmente en ejecución. Solo se realiza en sistemas monoprocesadores, porque en los sistemas multiprocesadores cada proceso se ejecuta en un procesador diferente. La programación concurrente: Requiere utilizar técnicas de comunicación y sincronización entre procesos. No siempre permite conseguir una mejora en el tiempo de ejecución. No requiere de técnicas específicas de programación. Solo es posible en sistemas multiprocesadores. Un proceso bloqueado: Se puede desbloquear cuando termina la operación de E/S de la que estaba pendiente. No puede pasar a la memoria secundaria hasta que no termine la operación de E/S de la que está pendiente. Puede pasar directamente a estado terminado si pasa mucho tiempo sin que termine la operación de E/S. Es gestionado por el planificador a medio plazo. Un servicio: Se ejecuta en segundo plano. Puede crear hilos para mejorar su tiempo de respuesta ante nuevas peticiones. Se puede configurar para que arranque automáticamente cuando arranca el sistema operativo. Todas las respuestas anteriores son correctas. Los hilos: Comparten memoria con otros hilos del mismo proceso. Solo existen para un proceso si el mismo proceso los crea explícitamente. Tienen menos prioridad que los procesos. Se planifican por parte del planificador a corto plazo de manera independiente a los procesos. Los distintos hilos de un mismo proceso: Se lanzan todos al mismo tiempo. Tienen todos la misma prioridad, por ser hilos del mismo proceso. Comparten código y datos. Comparten los registros del procesador. Un hilo en java se crea a partir de una clase: Que no tiene métodos estáticos. Que no tiene un método start. Que no tiene un método main. Que implementa la interfaz Runnable. La ejecución de la JVM (Java Virtual Machine) termina: Cuando termina la ejecución de todos sus hilos que no son de tipo daemon. Cuando termina el método main del programa. Cuando termina la ejecución de todos sus hilos. Ninguna de las respuestas anteriores es correcta. Si el hilo principal no ejecuta el método join sobre los demás hilos: Se da pie a que se puedan interrumpir. Estos podrían no terminar normalmente. El hilo principal podría terminar antes de algún otro hilo. El proceso podría terminar con un código de error. Cuando un programa crea un objeto y lo pasa por varios hilos: Los cambios que realiza un hilo sobre el objeto son visibles para el resto de los hilos solo si se realizan en un método synchronized. Los cambios que haga cada hilo no los verán los otros hilos, porque se hacen sobre pilo de cada hilo, y son independientes entre sí. Los cambios que realiza un hilo sobre el objeto son visibles para el resto de hilos. Los cambios que realiza un hilo sobre el objeto no son visibles para los otros objetos, porque se hacen sobre una copia local. El objeto de bloqueo asociado a la aparición de la synchronized: Es distinto según se aplique a un método estático, no estático o a un bloque de código en cuyo caso se indica explícitamente. Debe liberarse con notify o notifyAll. Debe ser declarado final. Impide que se ejecute cualquier método suyo desde cualquier hilo que no sea el que lo ha bloqueado. Cuando se produce un interbloqueo: Afecta a todos los hilos del proceso en que se produce. Es siempre entre dos hilos. Suele ser transitorio. Ninguna de las respuestas anteriores es cierta. Si una clase no es thread-safe: Sigue siendo segura la ejecución de sus métodos estáticos en un entorno multihilo. Distintos hilos que comparten una instancia de esa clase deben utilizar mecanismos de sincronización para restringir la ejecución concurrente de métodos del objeto en distintos hilos. No se puede utilizar en programas multihilo. Todos sus métodos deben ejecutarse en exclusión mutua. Los métodos wait, notify, notifyAll: Solo se pueden ejecutar sobre objetos de tipo final. Deben ejecutarse dentro de un bloque synchronized para el objeto sobre el que se ejecutan. Solo se pueden utilizar en clases thread-safe. Ninguna de las respuestas anteriores es correcta. Los hilos se pueden ver interrumpidos: Ninguna de las anteriores. Para asignar recursos a otros procesos. Nuca pueden interrumpirse. La entrada de otro proceso. Indica cuál de las siguientes respuestas es falsa: Dos procesos diferentes pueden tener el mismo PID. La puesta en ejecución de un nuevo proceso se produce bajo la responsabilidad de otro proceso. Los procesos son independientes y tienen su propio espacio de memoria asignado. El sistema operativo se refiere a los procesos que gestiona mediante su PID. El kernel del sistema operativo se ejecuta: Como un proceso más dentro del sistema atendiendo las peticiones que los procesos y el hardware le hacen. En base a rutina de tratamiento de señales. Utilizando pipes para comunicarse con los diferentes procesos. En base a interrupciones. Si un proceso está en estado de "En ejecución" y se produce una interrupción: Seguirá en ejecución. Pasará al estado "Listo". Pasará al estado "Bloqueado". Terminará. Si un proceso está en el estado de "En ejecución" y solicita una operación de entrada/salida: Terminará. Pasará al estado "Listo". Seguirá en ejecución. Pasará al estado "Bloqueado". Indica cuál de las siguientes afirmaciones es FALSA: El tiempo de cambio de contexto depende de la arquitectura del procesador. El contexto de un proceso incluye el estado del proceso, el estado del procesador y la información de gestión de memoria. El cambio de contexto es tiempo perdido, durante el cual el procesador no ejecuta instrucciones de los procesos. No importa que el tiempo de cambio de contexto sea grande, ya que es una operación que no se realiza muy frecuentemente. Un planificador que solo toma decisiones cuando un proceso pasa de ejecución a espera, o cuando un proceso termina, es un planificador: Apropiativo. Perezoso. Perezoso. Cooperativo. En la planificación por tiempo compartido: El proceso preparado que pasa a ejecución corresponde al de tiempo de ejecución restante más corto. El proceso preparado que pasa a ejecución corresponde al de mayor prioridad asignada. De forma secuencial cada proceso preparado pasa a ejecución durante una cota de tiempo llamada "cuanto". De acuerdo a su prioridad, cada proceso preparado pasa a ejecución durante una cota de tiempo llamada "cuanto". Dado el siguiente fragmento de código: Process p1= new ProcessBuilder(args).start; Process p2 = new ProcessBuilder(args1).start; BufferedReader br1 = new BufferedReader (new InputStreamReader(p1.getInputStream())); BufferedReader br2 = new BufferedReader(new InputStreamReader(p2.getInputStream())); Indica el máximo número de procesos que pueden comunicarse entre sí utilizando br1 y br2. 3. 2. 0. 4. Cuando varios hilos acceden a datos compartidos, y el resultado de la ejecución depende del orden concreto en que se accede a los datos compartidos se dice que: Hay una sección crítica. Ninguna de las anteriores. Eso no puede suceder, los hilos no pueden compartir datos. Hay una condición de carrera. Cualquier solución al problema de la sección crítica debe cumplir las condiciones de: Envejecimiento e inición. Exclusión mutua, progreso y espera limitada. Exclusión mutua, aislamiento y espera limitada. Exclusión mutua, espera limitada y retención. Indica cuál de las siguientes afirmaciones sobre los monitores es FALSA: Permiten resolver el problema de la sección crítica. Son un mecanismo de sincronización. Se pueden utilizar para garantizar el orden de ejecución entre procesos. Pueden ser binarios o contadores. Dado el siguiente fragmento de código sobre un Objeto en particular para realizar una sección crítica: notify(); SECCIÓN CrÏTICA wait(); ¿Cuál de las siguientes afirmaciones es cierta?. El código mostrado permite resolver el problema de la sección. El código mostrado no asegura retención. Es una solución válida para el problema de la sección crítica cuando el código se ejecuta en un único procesador. El código mostrado no asegura exclusión mutua. Indica cuál de las siguientes afirmaciones sobre los semáforos es FALSA: Pueden ser binarios o contadores. Son un mecanismo de sincronización. Permiten resolver el problema de la sección crítica. No se pueden utilizar para garantizar el orden de ejecución entre procesos. Dado el siguiente fragmento de código, y suponiendo que el objeto Semaphonre S tiene como valor inicial 2: S.realise(S); Funcion(); S.acquire(); ¿Cuántos procesos pueden ejecutar al mismo tiempo la tarea Función?. Ninguna de los anteriores. Depende de la ejecución. 2. 0. 3. Dado el siguiente fragmento de código ejecutado por un hilo: syncronyzhed(Object){ .... if ("se cumple condicion") wait(); FUNCION} ¿Cuál de las siguientes afirmaciones es cierta?. El thread nunca conseguirá ejecutar FUNCION. El thread solo ejecutará FUNCION cuando no se cumpla la condición. El thread podría ejecutar FUNCION aunque esta se cumpla, debido que es un problema inherente al uso paralelo de threads. El thread podría ejecutar FUNCION aunque esta se cumpla, debido a la espera del hilo por conseguir el monitor. Una condición de carrera: c. No necesita de mecanismo software para ser impedida, ya que siempre que se ejecuta el código de procesos concurrentes con los mismo argumentos, estos se ejecutarán de la misma forma. b. Existe cuando varios procesos acceden a los mismos datos en memoria y el resultado de la ejecución depende del orden concreto en que se realicen los accesos. a. Sucede por permitir que varios procesos manipulen variables compartidas de forma concurrente. a y b son correctas. Dado el siguiente fragmento de código suponiendo que el objeto Semaphore sem tiene como valor inicial 2: sem.acquire(); ¿Qué sucederá?. Un semáforo jamás podrá tener el valor 2, si su valor inicial era 0 (cero) y se ha operado correctamente con él. El proceso que ejecuta la operación se bloquea hasta que otro ejecute una operación sem.release();. El proceso continuará adelante sin bloquearse, y si previamente existían procesos bloqueados a causa del semáforo, se desbloqueará uno de ellos. Tras hacer la operación, el proceso continuará adelante sin bloquearse. Si se usa un bloque sincronizado para lograr la sincronización de procesos: La variable de condición se especifica siempre con una condición if. Siempre se deben incluir variables de condición, pues el bloque únicamente proporciona exclusión mutua. Las operaciones wait y notify se utilizan dentro de un mismo objeto. Las operaciones wait y notify se utilizan en objetos separados. ¿Qué es un proceso?. Es el proyecto que creamos con NetBeans para programar el algoritmo que resolverá un problema. Es un programa en ejecución. Es la parte de memoria que se le concede a otra tarea concreta. Es el código escrito en un lenguaje de programación concreto para resolver un programa. La multiprogramación se ejecuta en: Todas las respuestas anteriores son correctas. Microprocesadores con un único núcleo. Ordenadores distribuidos en red. Microprocesadores de varios núcleos. Los procesos de tipo Kernel: Todas las respuestas anteriores son correctas. Son los procesos que lanza el sistema operativo. Ninguna de las respuestas es correcta. Son los procesos que lanza el usuario. El planificador que utiliza quantum de tiempo es: Prioridad al más largo. Prioridad al más corto. Por prioridad. Round Robin. ¿Cuál de los siguientes no es un error que puede producirse de la ejecución de un proceso?. Fallo en la ruta especificada. No tener permisos de ejecución. No es un ejecutable válido en el sistema operativo. No tener permisos de lectura. ¿Qué método tiene que llamar el proceso hijo creado para forzar su finalización?. exit. interrupt. crash. destroy. Señala la opción que no sea una ventaja de los hilos: Uso más eficiente de la memoria. Están soportados por el 100% de los lenguajes de programación. Compartición de recursos. Paralelismo real. ¿Cuál de los siguientes recursos no se comparte en los hilos?. Código. Sockets para entrada o salida de datos. Variables globales. Contador de programa. ¿Qué formas existen para crear hilos en java?. Creando una clase que herede de Thread. Ninguna de las respuestas anteriores es correcta. Todas las respuestas anteriores son correctas. Implementando la interfaz Runnable. ¿Qué ocurrirá si llamada dos veces al mismo método start() de un mismo hilo?. Sa lanzará una excepción IllegalThreadLaunchException. Se lanzará una excepción IllegalThreadStateException. El hilo se ejecutará dos veces de forma paralela. Se lanzará una excepción OutOfThreadException. Si tenemos una situación en la que el resultado de ejecutar el programa va a depender del orden en que se realicen los accesos a los recursos, tenemos un problema de: Interbloqueo. Inanición. Bloqueo activo. Ninguna de las anteriores. ¿Es posible indicar un semáforo que entre más de un hilo al mismo tiempo?. Los únicos semáforos que permite implementar Java son semáforos binarios. Es posible indicarlo cuando creamos el semáforo, pero, como máximo, podremos indicar que pueden entrar dos hilos. Es posible indicarlo cuando creamos el semáforo, sin tener un límite máximo de hilo que puedan entrar a la vez. Java no proporciona ningún método para trabajar con semáforos, eso solo ocurre en C++. ¿Qué es un hilo en Java?. Un objeto que representa una tarea que se ejecuta en primer plano. Ninguna de las respuestas anteriores es correcta. Un objeto que representa una tarea que se ejecuta en segundo plano. Un objeto que representa una tarea que se ejecuta en tercer plano. ¿Cuál es la forma recomendad de crear un hilo en Java?. Implementando la interfaz Runnable. Ambas opciones son válidas. Extendiendo de la clase Thread. Ninguna de las respuestas anteriores es correcta. ¿Qué método se utiliza para iniciar la ejecución de un hilo en Java?. start(). run(). execute(). Ninguna de las respuestas anteriores es correcta. ¿Qué método se utiliza para suspender la ejecución de un hilo en Java?. suspend(). pause(). stop(). Ninguna de las respuestas anteriores es correcta. ¿Qué es la sincronización de hilos en Java?. Un mecanismo que nos permite controlar el acceso a recursos compartidos entre hilos y mejorar el rendimiento del programa. Un mecanismo que nos permite controlar el acceso a recursos compartidos entre hilos y provocar problemas de concurrencia. Ninguna de las respuestas anteriores es correcta. Un mecanismo que nos permite controlar el acceso a recursos compartidos entre hilos y evitar problemas de concurrencia. ¿Qué es un deadlock en Java?. Una situación en la que dos o más hilos compiten por el acceso a los mismos recursos compartidos. Una situación en la que dos o más hilos quedan bloqueados indefinidamente. Una situación en la que dos o más hilos se ejecutan al mismo tiempo. Ninguna de las respuestas anteriores es correcta. |