FSO temas 3 y 4
![]() |
![]() |
![]() |
Título del Test:![]() FSO temas 3 y 4 Descripción: test del ultimo examen de FSO |




Comentarios |
---|
NO HAY REGISTROS |
¿Con qué finalidad hemos definido las instrucciones DORMIR y DESPERTAR en la construcción de algoritmos concurrentes?. Para programar alarmas que mantengan dormido a un hilo durante un tiempo. Para evitar la inanición de procesos que no disfrutan del procesador un tiempo suficiente. Para no tener que resolver las esperas mediante bucles de espera activa. Tenemos una variable entera «i» que actuamente vale 1. En un momento dado, tres hilos ejecutan concurrentemente la instrucción i = i+1. ¿Cuál es el valor final de «i» una vez que se han ejecutado las tres instrucciones?. 4. Puede ser 1, 2, 3 o 4. Puede ser 2, 3 o 4. ¿Qué diferencia hay entre concurrencia y paralelismo?. El paralelismo exige la existencia de más de un procesador, mientras que la concurrencia se puede dar con un único procesador. El paralelismo es una característica del software, mientras que la concurrencia es una característica del hardware. El paralelismo está asociado sistemas con procesos pesados, mientras que la concurrencia está asociada a sistemas con procesos ligeros (hilos). ¿Cómo se llama la propiedad de un algoritmo concurrente que indica que el resultado de su ejecución puede ser en parte imprevisible?. Exclusión mutua. Atomicidad. No determinismo. El problema de la sección crítica no se puede dar: En un sistema con un solo procesador. En un sistema de procesamiento por lotes. En un sistema sin multiprogramación. Cuando se realiza una operación «signal» o «broadcast» sobre una variable condición en la biblioteca pthreads y similares: Se libera el mutex vinculado con la variable, inmediatamente antes de iniciar la operación. Se libera el mutex vinculado con la variable, justo después de completar la operación. Esas operaciones no liberan ningún mutex. Estamos diseñando un algoritmo de sincronización entre procesos con mutex y variables condición. Si en algún punto tenemos dudas entre utilizar la operación «signal» o la «broadcast», ¿cuál es la decisión más segura?. Utilizar siempre «signal», emparejado con un «wait» sobre la misma variable. Utilizar siempre «broadcast». Utilizar siempre «signal» si es la última instrucción de la sección crítica, y «broadcast» si es otro punto del código. ¿En qué estados puede encontrarse un objeto de tipo mutex?. Abierto, cerrado y entornado. Adquirido y libre. Cero, uno y negativo. ¿Cuántos procesos pueden estar encolados en una variable condición en pthreads?. Cero o más. Al menos uno. Como mucho uno. En un sistema de memoria paginada se ejecutan varios procesos pesados e hilos. ¿Cuántas tablas de páginas diferentes debe mantener el sistema operativo en un instante dado?. Tantas como procesos pesados existan. Tantas como hilos existan. Tantas como la suma de procesos pesados e hilos existentes. En un sistema que usa gestión de memoria paginada simple, cierto proceso necesita ocupar exactamente 2000 bytes de memoria principal. Si el tamaño de página utilizado es 512 bytes, ¿cuánta fragmentación provoca el proceso?. 464 bytes de fragmentación interna. 48 bytes de fragmentación externa. 48 bytes de fragmentación interna. ¿En cuál de estas acciones es siempre necesario vaciar el estado actual de la TLB?. Cuando se cambia de contexto entre hilos de distintos procesos pesados. Cuando se cambia de contexto entre hilos de un mismo proceso pesado. Cuando se cambia de contexto entre hilos del núcleo. ¿Cuál de estos tamaños de página es menos apropiado para un sistema actual?. 512 bytes. 4096 bytes. 1000 bytes. ¿Cuál de estos bits de la tabla de páginas no es modificado directamente por la MMU?. bit de referencia. bit de validez. bit de modificación. ¿Cuál es el bit de la tabla de páginas cuyo valor puede provocar un fallo de página?. bit de referencia. bit de validez. bit de modificación. ¿Por qué se inventó el bit de referencia?. Para poder implementar la política de reemplazo óptima. Para poder implementar políticas de reemplazo similares a la LRU o la LFU. Para poder implementar la política de reemplazo FIFO. ¿Qué problema viene a solucionar la técnica de memoria paginada?. La fragmentación de la memoria. La escasez de la memoria. La baja velocidad de la memoria en comparación con el procesador. En comparación con el tiempo habitual de acceso a la memoria principal (llamémoslo T), ¿cuánto tiempo puede consumir la resolución de un fallo de página?. Un tiempo similar a T. Miles o cientos de miles de veces T. Decenas o centenares de veces T. ¿Cuál de estos algoritmos de reemplazo de páginas se apoya en el bit de referencia?. LRU. FIFO. Algoritmo del reloj o «segunda oportunidad». Un computador con memoria paginada maneja direcciones físicas de 48 bits y direcciones lógicas de 32 bits. El tamaño de las páginas lógicas es de 1KiB. ¿Cuál será el tamaño de los marcos de página físicos?. 2^16 = 65536 páginas. 2^10 = 1024 bytes. 2^16 = 65536 bytes. ¿Cuál de estas afirmaciones se deriva de la teoría del conjunto de trabajo (working set) de Peter Denning?. Para un proceso cualquiera, si le asignamos un número de marcos superior a cierto umbral, no generará fallos de página. En cada momento de su ejecución, un proceso solamente necesita acceder a un conjunto limitado de su espacio de memoria lógico. Cierta clase de algoritmos de reemplazo pueden empeorar sus resultados para un proceso si se le asignan más marcos al proceso. ¿Cuál de estos algoritmos de reemplazo de páginas es menos costoso de implementar?. FIFO. LRU. LFU. ¿Para qué nos sirve realizar la traducción dinámica de direcciones mediante una MMU?. Para tener la libertad de ubicar el código y los datos de un proceso en cualquier zona de la memoria principal. Para centralizar la traducción de direcciones en un único elemento de hardware compartido por todos los hilos. Para traducir los símbolos de alto nivel que utilizamos en los lenguajes de programación a una representación numérica similar a la que emplea el hardware. Los sistemas de archivos se inventaron sobre todo para satisfacer este objetivo: Proteger de forma eficaz las operaciones de lectura y escritura sobre los dispositivos de almacenamiento secundario. Ofrecer a los usuarios una abstracción del almacenamiento más cercana a la manera en la que las personas trabajan con la información. Organizar el espacio de almacenamiento secundario de manera eficiente y evitando los efectos de la fragmentación. ¿Cuál es la finalidad principal de las instrucciones atómicas, tales como «test-and-set»?. Facilitar la construcción de soluciones eficaces para el acceso a datos compartidos. Aumentar la velocidad en el acceso a la memoria principal. Aumentar la velocidad de ejecución de los hilos en sistemas multiprocesadores. El problema de la sección crítica no se puede dar: En un sistema con un solo procesador. En un sistema de procesamiento por lotes. En un sistema sin multiprogramación. Tenemos varios hilos que pertenecen al mismo proceso pesado. Entonces: Todos estos hilos están alojados en el mismo procesador. Todos estos hilos comparten el mismo espacio de memoria lógica. Todos estos hilos comparten el mismo contador de programa. ¿Para qué se inventó la instrucción test-and-set?. Para ejecutar una secuencia de acciones de forma atómica o indivisible. Para implementar la interfaz con las llamadas al sistema. Para comprobar y activar una entrada del vector de interrupciones. Alguien elabora un algoritmo para controlar el acceso a una sección crítica. El algoritmo consigue que mientras un proceso está ejecutando código de sección crítica, ningún otro puede hacerlo. Sin embargo, hay situaciones en las que varios procesos quieren entrar en sección crítica pero el sistema se queda atascado sin tomar ninguna decisión. ¿Qué se puede afirmar sobre este algoritmo?. No cumple la propiedad de exclusión mutua (mutual exclusion). No cumple la propiedad de espera activa (busy waiting). No cumple la propiedad de progreso (liveness). ¿Cuál de estas afirmaciones es correcta?. El problema de la sección crítica solo puede darse en sistemas monolíticos. El problema de la sección crítica solo puede darse en sistemas multiprocesadores. El problema de la sección crítica solo puede darse en sistemas concurrentes. ¿Qué es una sección crítica?. Una zona de datos compartidos que necesita ser controlada por un semáforo. Una zona de código que debe ser ejecutada en exclusión mutua respecto a otras zonas similares. Un proceso ligero o hilo que debe ejecutarse de forma atómica. La llamada al sistema fork(): Crea un nuevo proceso ligero. Crea una pareja de procesos (padre e hijo). Crea un nuevo proceso pesado. ¿Qué diferencia hay entre concurrencia y paralelismo?. Son conceptos sinónimos. La concurrencia es un concepto propio de los lenguajes de programación y el paralelismo es un concepto de la arquitectura de computadores. El paralelismo es un caso especial de concurrencia, cuando el sistema es capaz de ejecutar varias instrucciones simultáneamente. La operación pthread_create(): Inicializa un objeto de tipo hilo (thread). Crea un nuevo conjunto de procesos ligeros. Lanza un nuevo proceso ligero. Los tamaños de páginas son siempre potencias de 2. ¿Cuál es el motivo principal?. Se aprovechar mejor el espacio disponible. Se permite una implementación eficiente del circuito de traducción de direcciones. Adaptarse mejor al hardware: las memorias RAM se fabrican con capacidades que son potencias de 2. ¿Cuál es el componente responsable de ejecutar el algoritmo de reemplazo de páginas?. La MMU. La TLB. El sistema operativo. Tenemos un sistema con memoria paginada simple y tamaño de página de 1 KiB, con una TLB de 32 entradas. El tiempo de acceso a la RAM es de 20 nseg., el tiempo de acceso a la TLB es de 2 nseg. y la tasa de aciertos de la TLB es del 90%. En este sistema, el tiempo medio efectivo de acceso a un dato en memoria es de: 4 nseg. 2,2 nseg. 24 nseg. Si en un sistema aumentamos el tamaño de página, ¿qué ocurrirá con el tamaño de las tablas de páginas de los procesos?. Las tablas de páginas tenderán a ser más grandes. Las tablas de páginas tenderán a ser más pequeñas. El tamaño de las tablas de páginas no variará significativamente. . Un procesador maneja direcciones lógicas de 18 bits, direcciones físicas de 16 bits y páginas de 1KiB. ¿Cuántas páginas lógicas puede llegar a tener un proceso en este sistema?. 2^18. 2^8. 2^2. La rutina de código que atiende un fallo de página, típicamente: Se ejecuta en modo usuario, ya que gestiona una excepción producida por un proceso. Se ejecuta en modo usuario, ya que debe modificar estructuras que pertenecen al proceso que ha provocado el fallo. Se ejecuta en modo núcleo, ya que debe modificar estructuras internas del sistema operativo. Tenemos estas dos cadenas de referencias a páginas: 1,2,3,2,3,4,1,3,4 y 2,3,4,3,4,1,2,4,1. Si partimos de una memoria física con tres marcos vacíos y usamos el algoritmo óptimo de reemplazo, ¿cuál de las dos secuencias dará más fallos de página?. La segunda. La primera. Las dos dan los mismos fallos. Un procesador maneja direcciones lógicas de 24 bits, direcciones físicas de 32 bits y emplea paginación de un solo nivel. ¿Cuál es el tamaño de página que maneja?. No hay datos suficientes para conocer el tamaño de página. 2^8 bytes. 2^24 bytes. El algoritmo de la segunda oportunidad pretende ser una aproximación eficiente a: El algoritmo LRU. El algoritmo FIFO. El algoritmo LFU. Si en una TLB el porcentaje de aciertos baja del 99% al 90%: aumentará la fragmentación de la memoria. aumentará la tasa de fallos de páginas. aumentará el tiempo efectivo de acceso a memoria. ¿Dónde se almacenan los bits de validez?. En las tablas de páginas. En las TLB. En los mapas de bits. ¿Para qué sirve el bit de referencia de una página?. Para informar de que en esta página se ha producido un fallo de página. Para registrar que la página ha sido accedida recientemente. Para indicar si la referencia a memoria física de la página es correcta. Para implementar el algoritmo de reemplazo de páginas llamado de la segunda oportunidad (o del reloj), el hardware debe disponer de: Los bits de referencia y de validez. Los bits de referencia y de modificación. Los bits de validez y de modificación. Si un algoritmo que intenta gestionar una sección crítica cumple la condición de exclusión mutua, pero no cumple la condición de progreso: Se corre el riesgo de que ningún proceso pueda entrar en sección crítica. Se corre el riesgo de que un proceso de mucha prioridad entre en la sección crítica incluso si esta se encuentra ocupada por otro proceso. Se corre el riesgo de que haya varios procesos ejecutando código de sección crítica al mismo tiempo. ¿Cuál de estos bits es modificado por el sistema operativo y nunca por la MMU?. Bit de validez. Bit de referencia. Bit de modificación. ¿Qué es el conjunto de trabajo? (working set): El conjunto de páginas que están en la TLB en un momento dado. El conjunto de páginas con las que está trabajando el proceso en un momento dado. El conjunto de páginas que están presentes en la memoria física en un momento dado. ¿Qué es la MMU?. Es el módulo del sistema operativo encargado de detectar accesos a posiciones de memoria indebidas. Es el módulo del hardware encargado de la traducción de direcciones lógicas a direcciones físicas. ) Es el módulo del sistema operativo encargado de resolver los fallos de página y recuperar las páginas de la memoria secundaria. ¿Qué consiguen las instrucciones test-and-set y SWAP?. Ejecutar un conjunto de acciones de forma indivisible. Efectuar el bloqueo de un hilo sin espera activa. Dejar bloqueado a un hilo en una cola de espera. Tenemos esta cadena de referencias: 1 2 3 4 1 2 3 4 1 2 3 4. ¿Cuántos fallos de página se producirán si disponemos de tres marcos físicos e inicialmente la memoria está vacía?. Como mínimo se producirán tres fallos. Como máximo se producirán cuatro fallos. Como mínimo se producirán seis fallos. Tenemos un sistema con memoria paginada simple y tamaño de página de 4 KiB, con una TLB de 32 entradas. El tiempo de acceso a la RAM es de 20 nseg., el tiempo de acceso a la TLB es de 2 nseg. y la tasa de aciertos de la TLB es del 90%. En este sistema, el tiempo medio de acceso a un dato en memoria virtual es de: 22 nseg. 24 nseg. 20,2 nseg. La llamada al sistema wait() de Unix: Decrementa el valor de un semáforo y bloquea al proceso si el semáforo adquiere el valor cero. Bloquea al proceso hasta que sucede algún evento de interés para el proceso. Deja bloqueado al proceso hasta que alguno de sus procesos hijos finaliza. En Linux, ¿pueden existir simultáneamente dos procesos con el mismo PID?. No, en ningún caso. Solamente si son un proceso padre y un hijo. Solamente si el sistema ha estado activo un largo tiempo y se ha agotado el rango de PID que el núcleo es capaz de manejar. En Linux, la llamada al sistema exec(): Crea un nuevo proceso con la misma imagen del proceso actual y con un PID diferente. Cambia la imagen (código) del proceso actual y le asigna un nuevo PID. Carga una nueva imagen de código en la memoria del proceso actual. ¿Qué ocurre si le asignamos a un proceso menos páginas de las que forman su conjunto de trabajo (working set)?. Aumentará el número de cambios de contexto en el sistema. Disminuirá el tamaño de su tabla de páginas. El proceso generará fallos de página continuamente. En un sistema de memoria virtual paginada, tenemos esta cadena de referencias a memoria: 4 2 1 2 3 1 2 4 1 2 3 2 4 2 3. Suponiendo que disponemos de tres marcos que inicialmente están libres, ¿la política óptima OPT genera menos fallos de página que la LRU?. Sí. No. Ambas generan la misma cantidad de fallos. Tenemos un sistema de gestión de memoria con segmentación, con direcciones lógicas de 32 bits. Si cada proceso es capaz de manejar hasta 64 segmentos, ¿cuál es el tamaño máximo que puede llegar a tener un segmento?. 16 MiB. 64 MiB. 1 MiB. |