0% encontró este documento útil (0 votos)
1K vistas127 páginas

Preguntas Teoricas.

Este documento contiene un índice de preguntas y respuestas teóricas de exámenes de sistemas operativos desde 1995 hasta 2009. La mayor parte del contenido son preguntas comunes sobre conceptos básicos de sistemas operativos como protección de memoria, modos de operación, llamadas al sistema, concurrencia, planificación de procesos y más. El documento provee una guía útil para estudiar los temas fundamentales de sistemas operativos a través de los años.

Cargado por

Gaston Marquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1K vistas127 páginas

Preguntas Teoricas.

Este documento contiene un índice de preguntas y respuestas teóricas de exámenes de sistemas operativos desde 1995 hasta 2009. La mayor parte del contenido son preguntas comunes sobre conceptos básicos de sistemas operativos como protección de memoria, modos de operación, llamadas al sistema, concurrencia, planificación de procesos y más. El documento provee una guía útil para estudiar los temas fundamentales de sistemas operativos a través de los años.

Cargado por

Gaston Marquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 127

Preguntas teóricas de exámenes de sistemas operativos hasta

Diciembre de 2009

O eso intentaré…
Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Índice
1995 – FEBRERO ...................................................... 3 2004 – FEBRERO ....................................................51

1995 – MARZO .......................................................... 4 2004 – MARZO ........................................................56

1995 – JULIO ............................................................. 4 2004 – JULIO ...........................................................61

1995 – AGOSTO ........................................................ 5 2004 – DICIEMBRE ................................................64

1995 – DICIEMBRE.................................................. 9 2005 – FEBRERO ....................................................68

1996 – MARZO ........................................................ 10 2005 – MARZO ........................................................73

1998 – FEBRERO .................................................... 10 2005 – JULIO ...........................................................78

1998 – DICIEMBRE................................................ 12 2005 – DICIEMBRE ................................................81

1999 – DICIEMBRE................................................ 12 2006 – FEBRERO ....................................................83

2000 – FEBRERO .................................................... 13 2006 – MARZO ........................................................88

2001 – FEBRERO .................................................... 14 2006 – DICIEMBRE ................................................91

2001 – MARZO ........................................................ 15 2007 – FEBRERO ....................................................94

2001 – AGOSTO ...................................................... 15 2007 – MARZO ........................................................96

2002 – ENERO ......................................................... 20 2007 – JULIO .........................................................100

2002 – FEBRERO .................................................... 25 2008 – FEBRERO ..................................................107

2002 – JULIO ........................................................... 29 2008 – MARZO ......................................................109

2003 – FEBRERO .................................................... 33 2008 – JULIO .........................................................113

2003 – MARZO ........................................................ 36 2008 – DICIEMBRE ..............................................116

2003 – ABRIL........................................................... 41 2009 – FEBRERO ..................................................119

2003 – AGOSTO ...................................................... 46 2009 – JULIO .........................................................122

2003 – DICIEMBRE................................................ 49 2009 – DICIEMBRE ..............................................126

Que la fuerza te acompañe Página 2


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

1995 – Febrero
Se desea construir un sistema operativo multiusuario “robusto”, tal que garantice que no sean
posibles interferencias indeseadas entre los diferentes usuarios.

1) Describir que elementos de seguridad será imprescindible considerar tanto en la arquitectura del
procesador, la memoria y la E/S, como en el diseño del sistema operativo.

Arquitectura del procesador

Operación en modo dual: Se requiere protección para cualquier recurso compartido. Para ello el
hardware debe distinguir como mínimo entre dos modos de ejecución modo de usuario y modo
privilegiado. Se le agrega al hardware del computador un BIT, llamado BIT de modo para indicar en que
modo se está usando. Hay algunas intrucciones que podrían causar daño, y por ello solo se pueden
usar en modo privilegiado. Si se intenta ejecutar una en modo usuario, el hardware la detecta, efectúa
una interrupción y pasa el control al SO.

Protección de la CPU (no pedido pero considero que debe ir también)

Debemos impedir que un programa de usuario se atasque en un loop y nunca devuelva el control al
sistema operativo. Para ello, existe un timer, que interrumpe al computador después de un período
determinado, y cede el control al SO, que puede cerrar el programa o cederle más tiempo. Las
intrucciones que modifican el funcionamiento del timer, son privilegiadas.

Memoria.

Debemos impedir que el vector de interrupción sea modificado por un programa de usuario, al igual
que las rutinas de servicio de interrupciones del SO. Esta protección debe correr por cuenta del
hardware.
Podemos separar el espacio de memoria de cada programa, determinando el espacio de
direcciones, al cual el programa puede acceder, y proteger el resto de la memoria que no está en ese
espacio. Se almacena en registros el rango de memoria privilegiada, y se efectúa una interrupción si
cualquier programa en modo usuario, intenta acceder a esa zona de memoria.
Los registros de control son:
- Registro Base: Contiene la dirección de memoria física válida más pequeña
- Registro Límite: Contiene el tamaño del intervalo.

El hardware de la CPU, compara todas las direcciones generadas por el usuario, con estos
registros, pasando el control al SO, si se produce algún error. El SO tiene acceso irrestricto a la
memoria, pudiendo cargar los programas usuario en cualquier lado, y pudiendo expulsar dichos
programas en caso de error

E/S

Para evitar que un usuario realice E/S no válida, todas las intrucciones de E/S son privilegiadas, los
usuarios deben ceder el control al sistema operativo. Si puedo acceder a la memoria, al vector de
interrupciones, y alterar la dirección de la interrupción que genera el hardware, puedo asumir el control
del computador en modo privilegiado, para que esto no ocurra, también debo proteger la memoria.

Diseño de los Sos

Dado que las instrucciones de E/S son privilegiadas, y solo el SO puede ejecutarlas, los programas
de usuario, deben hacer un pedido al SO, para que realice la E/S en su nombre. Esta solicitud se llama
llamada al sistema. El hardware trata esta interrupción como una interrupción de software y pasa al
modo privilegiado, entregándole el control al SO. Si la solicitud es válida, el SO efectúa la E/S solicitada
y devuelve el control al usuario, pasando nuevamente a modo usuario.
Otra instrucción como halt (parar), es privilegiada, ya que un programa de usuario no debe parar el
computador. Las intrucciones para activar y desactivar el sistema de interrupciones también son

Que la fuerza te acompañe Página 3


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

privilegiadas, al igual que la instrucción que cambia del modo usuario a monitor (supervisor). Como son
privilegiadas, solamente las realiza el SO.

2) Como se puede asegurar que aún en la presencia de usuarios expertos no puedan burlarse los
elementos propuestos anteriormente.

Esta ni idea, pero debería ser suficiente lo que se hace en (1).

1995 – Marzo
1) Describir brevemente el proceso de linkedición de módulos así como el formato de los archivos
de módulos objeto.
- Describir algún ambiente donde sea necesario contar con un cargador reubicable y
comentar su implementación.
- Comentar si existe alguna diferencia entre el diseño de un linker para un sistema sin
memoria virtual con aquel diseñado para un sistema con memoria virtual de páginas de
largo fijo.
Justificar.

Esta ni idea, pero creo que no se da en el curso… o por lo menos no encontré nada parecido.

2) Dado un multiprocesador con una única memoria común y N procesadores de potencia X:

- Describir cual es la máxima performance teórica del sistema y porque no se llega a este
límite.
- Para que la ejecución del código del sistema operativo degrade lo menos posible la
performance del sistema comentar que se debe hacer y cual considera es la forma de
hacerlo.

Esta ni idea, pero creo que no se da en el curso… o por lo menos no encontré nada parecido.

1995 – Julio
1) ¿Como se puede implementar el núcleo de un sistema operativo cuyas operaciones primitivas
sean reentrantes?

Para que el conjunto de rutinas que conforman el kernel sean reentrantes, estas rutinas deben cumplir
las siguientes condiciones :

- No modifican sus instrucciones


- No modifican sus datos locales

Para lograr que una rutina no modifique sus datos locales, estos se deben encontrar en el espacio
de direcciones del usuario que invoco a la rutina, por lo tanto en su propio stack.
Por lo tanto asociando a cada proceso una maquina virtual, logramos que el procedimiento al hacer
una llamada a una rutina del kernel sus variables locales se copien en el stack de la maquina virtual de su
proceso.

2) Comentar porque los procesos huérfanos pueden comprometer la integridad del sistema.

Los procesos huérfanos comprometen la integridad del sistema por las siguiente razones :
- Al perder el puntero al PCB este proceso se vuelve inalcanzable de la estructura de procesos.
- El proceso puede tener asignados recursos que no existen mas.

3) Comentar el procedimiento Finalizo (Wrap_Up) del scheduler propuesto por Bic-Shaw, en


especial:
- porque el procedimiento Intercambio (Switch) no es invocado con la variable diferido
(deferred) en NIL.

Que la fuerza te acompañe Página 4


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- la sentencia exit Scheduler.

El procedimiento Wrap_up(deferred) realiza lo siguiente :

- Es llamado cuando el procesador que se encuentra idle es el procesador en el que esta


ejecutando el proceso que llamo al scheduler.

- Si el estado del proceso del que llamo al sheduler es running, este proceso seguirá corriendo.

- Si el estado es distinto de running, entonces se le asignará el procesador al proceso deferred.

- El procedimiento no es invocado con deferred igual a NULL porque deferred es NULL


solamente cuando no encuentro un proceso en estado ready, pero como siempre encuentro
procesador en estado ready wrap_up nunca es llamado con deferred igual a NULL.

- La sentencia exit scheduler ajusta el Instruction Pointer a la sentencia siguiente de la invocación


del scheduler.

1995 – Agosto
1) Para un sistema de memoria virtual, comentar aquellas técnicas de reemplazo que considere
mejor y justificar la elección.

- Algoritmo óptimo:
Un algoritmo óptimo de sustitución de páginas es aquel que tenga la tasa más baja de fallos
de página de entre todos los algoritmos y que nonca esté sujeto a la anomalía de Belady.
Consiste básicamente en sustituir la página que no vaya a ser utilizada durante el período de
tiempo más largo. La utilización de este algoritmo de sustitución de página garantiza la tasa de
fallos de página más baja posible para un número fijo de marcos.
Desafortunadamente, el algoritmo óptimo de sustitución de páginas resutla difícil de
implemetar porque requiere un conocimiento futuro de la cadena de referencia. Como resultado,
el algoritmo óptimo se utiliza principalmente con propósitos comparativos.

- Algoritmo LRU (least recently used):


Este algoritmo es una aproximación al algoritmo óptimo Si utilizamos el pasado reciente
como una aproximación del futuro próximo, podemos entonces sustituir la página que no haya
sido utilizada durante el período más largo de tiempo. El algoritmo de sustitución LRU asocia
con cada página el instante correspondiente al último uso de dicha página. Cuando hay que
sustituir una página, el algoritmo LRU selecciona la página que no haya sido utilizada durante
un período de tiempo más largo. Debemos considerear esta estrategia como el algoritmo óptimo
de sustitución de páginas si miramos hacia atrás en el tiempo, en lugar de mirar hacia adelante.
Esta política LRU se utiliza a menudo como algoritmo de sustitución de páginas y se
considera que es bastante buena. El principal problema es cómo implementar ese mecanismo
de sustitución LRU. Un algoritmo LRU puede requerir una considerable asistencia de hardware.
El problema consiste en determinar un orden para los marcos definido por el instante
correspondiente al últimio uso. Existen dos posibles implementaciones:
i) Contadores
En el caso más simple, asociamos con cada entrada en la tabla de páginas un campo
de tiempo de uso y añadimos a la CPU un reloj lógico o contador. El reloj se incrementa con
cada referencia a memoria. Cuando se realiza una referencia a una página, se copia el
contenido del registro de reloj en el campo de tiempo de uso de la entrada de la tabla de
páginas correspondiente a dicha página. De esta forma, siempre tenemos el “tiempo” de la
última referencia a cada página y podremos sustituir la página que tenga el valor temporal
menor. Este esquema requiere realizar una búsqueda en la tabla de páginas para localizar
la página menor recientemente utilizada y realizar una escritura en memoria (para continuar

Que la fuerza te acompañe Página 5


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

el campo de tiempo de uso en la tabla de páginas) para cada acceso a memoria. Los
tiempos deben también mantenerse apropiadamente cuando se modifiquen las tablas de
páginas (debido a la sactividades de planificación de la CPU). También hay que tener en
cuenta el desbordamiento del reloj.

ii) Pila
Consiste en mantener una pila de números de página. Cada vez que se hace referencia
a una página, se extrae la misma de la pila y se coloca en la parte superior; de esta forma,
la página más recientemente utilizada se encontrará siempre en la parte superior de la pila y
menos recientemente utilizada en la inferior.
Puesto que es necesario eliminar entradas de la parte intermedia de la pila, lo mejor
para implementar este mecanismo es utilizar una lista doblemente enlazada con un puntero
a la cabecera y otro a la cola. Entonces, eliminar una página y colocarla en la parte superior
de la pila requiere modificar seis punteros en el peor caso.
Cada actualización es un poco más cara que con el otro método, pero no hay
necesidad de buscar la página que hay que sustituir: el puntero de la cola siempre apuntará
a la parte inferior de la pila, que será la página menos recientemente utilizada.
Esta técnica resulta particularmente apropiada para las implementaciones de algoritmos
de sustitución LRU realizadas mediante software o microcódigo.

Al igual que el algoritmo óptimo de sustitución, el algoritmo LRU no sufre la anomalía de Belady.

También es importante mencionar que ninguna de las dos implementaciones del algoritmo LRU
sería concebible sin disponer de una asistencia de hardware más compleja que la que proporcionan los
registros TLB estándar

- Algoritmo de bits de referencia adicionales:


Podemos mantener un byte (8 bits) para cada página en una tabla de memoria y a
intervalos regulares, una interrupción de temporización transfiere el control al sistema operativo
y éste desplaza el bit de referencia de cada página, transfiriendolo al bit de mayor peso de ese
byte, desplazando asimismo los otros bits una posición a la derecha, descartando el bit de
menor peso. Estos registros de deplazamiento de 8 bits contienen el historial de uso de las
páginas en los últimos 8 períodos de tiempo.

Si interpretamos estos 8 bits como enteros sin signo, la página con el número más bajo será
la menos recientemente utilizada y podremos sustituirla. Sin embargo no se garantiza la
unicidad de esos números, por lo que tendremos que decidir de alguna forma la página a
eliminar dentro de todo el conjunto con el menor registro.

El número de bits del historial, puede ser variable y se selecciona para que hacer la
actualización sea lo más rápida posible. En el caso extremo, ese número puede reducirse a 0
dejando sólo el propio bit de referencia, convirtiéndose en el algoritmo de segunda
oportunidad.

- Algoritmo de segunda oportunidad:


Es un algoritmo de sustitución FIFO, sin embargo, cuando se selecciona una página,
inspeccionamos su bit de referencia. Si el valor es 0, sustituímos dicha página, pero si el bit de
referencia tiene valor 1, damos a esa página una segunda oportunidad, poniendo el bit de
referencia en 0 y seleccionamos la siguiente página de la FIFO.

Si una página se utiliza de forma lo suficientemente frecuente como para que su bit de
referencia permanezca activado, nunca será sustituída.

Una forma de implementar el algoritmo de segunda oportunidad es una cola circular. Con
este método se utiliza un puntero para indicar cuál es la siguietne página que hay que sustituir.
Cuando hace falta un marco, el puntero avanza hasta que encuentra una página con un bit de
referencia en 0. Al ir avanzando, va poniendo los bits de referencia a 0. Una vez encontrada una
página víctima, se sustituye la página y la nueva se inserta en la cola circular en dicha posición.
El problema con este algoritmo es que si todos los bits están prendidos, se degenera en un
FIFO común.

Que la fuerza te acompañe Página 6


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Algoritmo mejorado de segunda oportunidad:


Podemos mejorar el algoritmo de segunda oportunidad considerando el bit de referencia y
el bit de modificación como una pareja ordenada. Con estos dos bits, tenemos cuatro posibles
casos:
i. (0,0) no se ha utilizado ni modificado recientemente: es la mejor página para
sustitución.
ii. (0,1) no se ha usado recientemente pero sí se ha modificado: no es tan buena
como la anterior, porque será necesario escribir la página antes de sustituírla.
iii. (1,0) se ha utilizado recientemente pero está limpia: probablemente se vuelva a
usar pronto.
iv. (1,1) se la ha utilizado y modificado recientemente: probablemente se vuelva a usar
pronto y además será necesario escribir la página en disco antes de sustituirla.

Cada página pertenece a una de estas 4 clases, cuando hay que sustituir una de ellas se
utiliza el mismo esquema que en el algoritmo de segunda oportunidad; pero examinamos la
clase a la que dicha página perteneces. Entonces sustituímos la primera página que
encontremos en la clase no vacía más baja. Una desventaja que tiene este sistema es que
deberemos recorrer la cola circular varias veces antes de encontrar una página para sustituir.

La principal diferencia entre el algoritmo antes mencionado (2da oportunidiad) es que aquí
damos preferencia a aquellas páginas que no hayan sido modificadas, con el fin de reducir el
número de operaciones de E/S requeridas.

- Sustitución de páginas basada en contador:


Podemos mantener un contador del número de referencias que se hayan hecho a cada
página y desarrllar los siguientes dos esquemas:
i. Algoritmo de sustitución LFU (least frequently used): Requiere sustituir la página que
tenga el valor más pequeño de contador. La razón para esta selección es que las páginas
más activamente utilizadas deben tener un valor grande en el contador de referencias. Sin
embargo, puede surgir un problema cuando una página se utiliza con gran frecuencia
durante la fase inicial de un proceso y luego ya no se la vuelve a utilizar. Como fue utilizada
con gran frecuencia, tendrá un valor de contador grande y permanecerá en memoria a
pesar de ya no ser necesaria. Una solución consiste en desplazar una posición a la derecha
los contenidos del contador a intervalos regulares, obteniendo así un contador de uso medio
con decrecimiento exponencial.
ii. Algoritmo de sustitución MFU (most frequently used): Se basa en el argumento de que
la página que tenga el valor de contador más bajo acaba probablemente de ser cargada en
memoria y todavía tiene que ser utilizada.

Como es de esperarse, ninguno de los dos algoritmos antes mencionados se utilizan de


forma común ya que la implementación de estos es bastante cara y tampoco constituyen
buenas aproximaciones al algoritmo óptimo.

- Algoritmos de buffer de páginas:


Además de un algoritmo de sustitución de páginas específico, a menudo se utilizan otros
procedimientos. Por ejemplo mantener un conjunto compartido de marcos libres. Cuando se
produce un fallo de página, se seleccinoa un marco víctima como antes, pero la página deseada
se lee en un marco libre extraído de ese conjunto compartido, antes de escribir en disco la
víctima. Este procedimiento permite que el proceso se reinicio lo antes posible, sin tener que
esperar a que se descargue la página víctima. Luego, cuando la víctima se descarga por fin, su
marco se añade al conjunto compartido de marcos libres.

Una posible ampliación de este concepto consiste en mantener una lista de páginas
modificadas. Cada vez que el dispositivo de paginación está inactivo, se selecciona una página
modificada y se la escribe en el disco, desactivando a continuación su bit de modificación. Este
esquema incrementa la probabilidad de que una página esté limpia en el momento de
seleccionarla para sustitución, con lo que no será necesario descargarla.

Que la fuerza te acompañe Página 7


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Otra posible modificación consiste en mantener un conjunto compartido de marcos libres,


pero recordando que página estaba almacenada en cada marco. Puesto que el contenido de un
marco no se modifica después de escribir el marco en el disco, la página antigua puede
reutilizarse directamente a partir del conjunto compartido de marcos libres en caso de que fuera
necesaria y si dicho marco no ha sido todavía reutilizado. En este caso, no sería necesaria
nnguna operación de E/S. Cuando se produce un fallo de página, primero comprobamos si la
página deseada se encuentra en el conjunto compartido de marcos libres y si no está allí,
deberemos seleccionar un marco libre y cargar en él la página deseada.

2) Comentar el procedimiento Stop del Scheduler propuesto por Bic-Shaw, comentando eventuales
implementaciones alternativas.

El procedimiento Stop lo que hace es quitarle al proceso P el procesador en el que estaba ejecutando.

La primera instrucción obtiene el numero de procesador en que estaba ejecutando P, este valor se
obtiene del PCB de P.

Luego interrumpe al procesador que esta ejecutando a P y guarda el estado del procesador en el campo
CPU_STATE del PCB de P, así poder seguir ejecutándolo mas adelante.

Por ultimo se le asigna al a Process (que lleva que proceso está ejecutando cada procesador) el valor
Nil.

Dado que generalmente no existe instrucciones de un procesador que permitan acceder a los registros
de otro procesador se debería programar una interrupción que generada por un procesador haga a
otroprocesador que escriba sus registros en un área de memoria prefijada de modo que otros procesadores
la puedan acceder.

3) Dado un sistema de memoria virtual, cuyo espacio real es de P marcos y su espacio virtual de V
páginas, proponer la mejor implementación para la función Mapeo (p, w) en los siguientes casos:
i) V próximo a P
ii) V > P

i) Si V es Próximo a P, podemos tomar una función dada por :

Map: mem (1..V) of 1..P


Map: Memoria Virtual -> Memoria Física

La función Map traduce direcciones de memoria de las paginas virtuales a las paginas reales de
memoria.

ii) Si V >> P la función anterior no es útil debido a que la mayor cantidad de paginas de memoria
virtual no se corresponderán con una posición de memoria física, ya que existe alta probabilidad que
dicha página se encuentre en el disco. Por lo tanto para almacenar dicha función se desperdicia
gran cantidad de memoria.

Para solucionarlo podemos definir la funcion Map como :


Map : mem (1..P) of 1..V
Map : Memoria Fisica -> Memoria Virtual

En el caso de que la memoria buscada no pertenezca al vector entonces ocurre un Page Fault.
Dado que generalmente lo que se quiere es dada una dirección virtual conocer la dirección física
podemos implementarlo utilizando memoria asociativa que dado

Que la fuerza te acompañe Página 8


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

1995 – Diciembre
1) Que consideramos un recurso serialmente reusable. Poner ejemplos.

Los recursos serialmente reusables son aquellos que son compartidos por los procesos en forma serial,
o sea los utiliza un proceso a la vez. Para los recursos serialmente reusables se cumple que la cantidad de
recurso disponible mas la cantidad de recurso asignada es constante e igual a la disponibilidad inicial.

Ejemplos: Páginas de memoria, bloques de disco, impresoras, etc.

2) Comentar diferencias entre introducir concurrencia mediante procesos y threads (hebras).

La diferencia más importante entre la concurrencia mediante threads y la concurrencia mediante


procesos es que la concurrencia mediante procesos involucra gran cantidad de operaciones para el cambio
de contexto debido a que entre otras cosas involucra al sistema operativo. En cambio los threads (de un
mismo proceso) como comparten el área de datos y de código y que generalmente están programados a
nivel de usuario y no del kernel es mas económico introducir concurrencia mediante ellos porque el cambio
de contexto entre ellos es mas eficiente y que además es posible compartir estructuras de datos.

Desde el punto de vista de la comunicación entre procesos y la comunicación entre threads esta
también es mucho mas eficiente (siempre que la comunicación entre threads sea entre los threads del
mismo proceso) ya que tampoco involucra llamadas al sistema operativo.

Es importante tener en cuenta que los threads no se protegen entre si sus áreas de memoria, por lo
tanto un thread puede escribir el área de código y/o datos a otro thread.

3) Comentar las diferentes ocasiones donde puede ser reubicado un módulo (incluyendo desde
compilación hasta ejecución inclusive), describiendo el procedimiento utilizado en cada caso.

Reubicacion estatica:

Momento de escritura: En este caso, el programa ya contiene direcciones absolutas de memoria,


para que funcione debe ser ubicado siempre en la misma dirección física de memoria.

Momento de compilación: Si utilizamos direcciones relativas, todas las direcciones internas del
programa estarán referidas suponiendo que el modulo se encuentra a partir de la dirección cero de la
memoria.

En el momento de compilación se resuelven las referencias internas del modulo y las referencias
externas son almacenadas en una tabla (en general al comienzo del modulo objeto) para que el linker la
tome como entrada.

El linker toma como entrada la salida del compilador (tablas de referencias externas y los módulos
objeto) y los une resolviendo todas las referencias externas en base a una dirección de comienzo del
programa igual a cero. El linker genera un programa y una tabla de símbolos a reubicar en el momento de
carga (loading).

El loader toma el programa, la tabla de símbolos y una dirección real de memoria (provista por el
Sistema Operativo) llamémosle a esta dirección RR y copia el programa a partir de la dirección RR.
Antes de comenzar a ejecutar se deben resolver las direcciones de los símbolos, o sea sumarle al contenido
de cada uno el valor RR.

Una vez que se resolvieron estas direcciones el programa esta listo para ejecutar.

Reubicacion dinamica:

En este caso se traduce la dirección de un símbolo a una dirección física en tiempo de referencia.
Esta reubicación es hecha por hardware por razones de eficiencia y es transparente para el usuario.

Que la fuerza te acompañe Página 9


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Para este caso se utiliza una función que le llamaremos NL_map que dada una dirección de
memoria virtual devuelve una dirección física de memoria.
En este caso los programas pueden ser reubicados en tiempo de ejecución y para ello lo único que
se debe cambiar es la función NL_map.

En este caso no es necesario cargar y linkeditar los programas antes de la ejecución sino que pueden ser
cargados dinámicamente cuando se referencian.

1996 – Marzo
1) Para un sistema de memoria virtual explicar la diferencia entre fragmentación interna y externa.
Justificar y describir brevemente los ambientes donde pueden manifestarse cada una de ellas.

Se dice que ocurre fragmentación (en la memoria) cuando tenemos espacios libres, típicamente
pequeños con escasa probabilidad de ser utilizados hasta que algún proceso libere otra región de memoria.

Básicamente ocurren dos tipos de fragmentación.


- Interna: Ocurre en ocasión de asignarse porciones de largo fijo para almacenar objetos de
largo arbitrario.
- Externa: Se diferencia de la anterior pues el espacio perdido se encuentra entre los
segmentos pero no hay desperdicio dentro de ellos.

Consideremos un sistema de memoria virtual implementado mediante paginación. Debido a que el


tamaño de los programas y de los datos son raramente múltiplos del tamaño de página, la última página de
cada espacio de memoria virtual está, por lo general, parcialmente llena. Este es un caso claro donde se
produce un problema de fragmentación interna.

Sea un sistema de memoria virtual organizado mediante segmentos. Cada segmento corresponde
naturalmente a una unidad de un lenguaje de programación como puede ser procedimientos, arrays o tipos
abstractos de datos. Debido a esto y si nuestro sistema trabaja con un esquema de segmentación “on
demand”, existe la posibilidad de fragmentación externa al liberar bloques pequeños, los cuales dejan
huecos que difícilmente puedan ser llenados con pedidos subsiguientes.

2) Comentar como se puede lograr la mutua exclusión entre las primitivas de B. Shaw. ¿Por que no
se utilizan las operaciones P y V habituales para el cometido anterior?

En las primitivas propuestas por Bic-Shaw se trabaja sobre estructuras del núcleo del sistema operativo.
La ejecución concurrente de 2 o más primitivas podría corromper la integridad del sistema. En su
formalización, Bic-Shaw supone que la ejecución concurrente de varias rutinas del núcleo del S.O. no se da
nunca. Para este cometido propone un mecanismo de “busy wait lock” (pagina 112).

No se pueden utilizar las primitivas P y V de semáforos porque ellas están implementadas (según
propuesta de B.S.) a partir de las primitivas que deseamos mutuo-excluir.

1998 – Febrero
1) Describir el diseño de un sistema operativo estructurado en base a un kernel o núcleo.

Este método estructura el sistema operativo eliminando todos los componentes no escenciales del
kernel e implementándolos como programas del sistema y de nivel de usuario; el resultado es un kernel más
pequeño. No hay concenso en lo que se refiere a que servicios deberían permanecer en el kernel y cuáles
deberían implementarse en el espacio de usuario. Sin embargo, normalmente los microkerneles
proporcionan una gestión de la memoria y de los procesos mínima, además de un mecanismo de
comunicaciones.

Que la fuerza te acompañe Página 10


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

La función principal del microkernel es proporcionar un mecanismo de comunicaciones entre el


programa cliente y los distintos servicios que se ejecutan también en el espacio de usuario. La
comunicación se proporciona mediante paso de mensajes. El programa cliente y el servicio nunca
interactúan directamente, sino que se comunican de forma indirecta intercambiando mensajes con el MK.

Otra ventaja del MK es la facilidad para ampliar el sistema operativo. Todos los servicios nuevos se
añaden al espacio de usuario y, en consecuencia, no requieren que se modificque el kernel. Cuando surge
la necesidad de modificar el kernel, los cambios tieneden a ser pocos, porque el MK es un kernel muy
pequeño. El sistema operativo resultante es más fácil de portar de un diseño de hardware a otro.

El MK también proporciona más seguridad y fiabilidad, dado que la mayor parte de los servicios se
ejecutan como procesos de usuario, en lugar de como procesos del kernel. Si un servicio falla, el resto del
sistema operativo no se ve afectado.

Lamentablemente, los MK pueden tener un rendimiento peor que otras soluciones, debido a la carga de
procesamiento adicional impuesta por las funciones del sistema.

2) Para el caso anterior:


- Como se garantiza la integridad del sistema?
- Mencione virtudes y dificultades de la solución anterior.

La integridad del sistema se garantiza por la independencia del núcleo del sistema, de los servicios
que provee ya que como estos últimos, ejecutan en espacio de usuario, su caída no afecta al núcleo del
sistema.

Creo que las virtudes y dificultades ya están en (1).

3) Describa los posibles estados de un proceso, su significado y mencione todas las transiciones
validas incluyendo el detalle de los motivos que pueden desencadenarla.

Estados:
- Nuevo: Es el estado que tiene el proceso recién creado, antes de ingresar a la fila (cola o lo
que sea) de procesos listos.
- Pronto: Es un proceso al cual solamente le falta el recurso CPU para ejecutar.
- Ejecutando: Proceso que tiene asignado el recurso CPU, por lo que está ejecutando.
- Bloqueado: Estado al cual pasa un proceso que necesita completar un evento de bloqueo
(esperar otro proceso por ejemplo) o a la espera de que se complete una operación de E/S.
- Finalizado: El proceso terminó de ejecutar.

Transiciones:
- Admitido: Luego de creado el proceso, ocurre la transición Admitido que es en la cual se
ingresa al proceso a la fila de procesos para ejecutar.
- Planificado: El planificador de la CPU, elige a nuestro proceso para ejecutar (le asigna el
recurso CPU).
- Interrupción: El proceso que está ejecutando es enviado a la cola de procesos listos ya que
ocurrió una interrupción de algún tipo (page fault por ejemplo) y debe ser atendida antes de
poder continuar con la ejecución de nuestro proceso.
- E/S o evento de bloqueo: Esta transisción ocurre cuando nuestro proceso necesita obtener
alguna información, la cual no dispone y debe solicitarla al Sistema Operativo, por lo que el
proceso se bloquea y libera la CPU.
- E/S o evento completado: Luego de que han sido satisfechas las solicitudes de datos del
proceso (datos de algún archivo por ejemplo) con esta transición, el proceso pasa nuevamente
a competir por el recurso CPU en la cola de procesos Listos.

Que la fuerza te acompañe Página 11


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

1998 – Diciembre

1) Comentar en detalle la operación Destruir_Recurso de acuerdo al modelo propuesto por Bic-


Shaw.

NO CORRESPONDE Bic-Shaw ¿Quien es?

2) Comente las diferentes etapas u oportunidades en que un módulo puede ser reubicado y el
motivo para ello. Se debe considerar desde que el módulo se compila en adelante.

NO CORRESPONDE… compila en adelante adelante de quien???

1999 – Diciembre
1) Para un sistema operativo implementado en base a un Kernel o Núcleo, indique y justifique que
servicios incluiría en su interior.

Ver pregunta 1 Febrero 2008

2) Describa y comente el PCB (bloque descriptor de procesos) propuesto en el curso.


Justifique la necesidad de su contenido.

Un PCB (Process Control Block) es una estructura de datos del sistema que representa un proceso,
almacenando información del mismo. Incluye

i. El estado del proceso (listo, en ejecución, etc.)


Es necesario para saber que operaciones podemos realizar con él, por ejemplo, si el proceso está
en ejecución no debemos asignarle alguna CPU ya que está haciendo uso una, por otra parte, si
esta en espera, tampoco debería ser considerado para la CPU. Es una información bastante
importante para el planificador o scheduler.

ii. El program counter, indicando la siguiente instrucción a ejecutar


Si no contamos con el program counter, no sabríamos la referencia a la siguiente instrucción a
ejecutar, por lo que nuestro programa o proceso, quedaría trancado.

iii. Los registros, que son guardados junto con el PC por cada interrupción.

Que la fuerza te acompañe Página 12


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Registros con valores de operaciones realizadas por el proceso, los cuales son vitales para poder
continuar la ejecución del mismo y obtener resultados correctos.

iv. Información adicional para la planificación (prioridades, punteros a las colas donde se pudiera
encontrar el proceso, según su estado, etc.)
Que mas decir…

v. Información de administración de memoria (registros límites, tablas de páginas)


Sin esta información sería imposible saber si estamos accediendo a la memoria asignada del
proceso y por lo tanto no tendríamos la certeza de que la instrucción o valores que obtengamos de
memoria sea siquiera correspondiente a nuestro proceso.

vi. Información contable: número de proceso, utilización de CPU, tiempo de creación, etc.
Información administrativa, que puede servir para análisis de dicho proceso.

vii. Información de E/S: archivos abiertos, E/S pendientes.


Sin la información de que archivos abiertos tenemos, no podríamos leer o escribir de ellos, por lo
que no tendría sentido modificarlos, por ejemplo. También en el caso que el proceso haya solicitado
algún tipo de entrada salida y todavía no haya comenzado la misma, sirve para controlar los
pendientes y por cualquier eventualidad avisar al usuario o al SO de algún percance.

viii. Referencias a la genealogía o contexto de procesos, hijos, padre, etc.


Si no supieramos estas referencias, se podrían dejar procesos “zombies” al finalizar la ejecución.

3) Describa el propósito y contenido de la Ready List (lista de proceso activos) y discuta según
contenga o no procesos con estado Suspendido.

La Ready List es la lista de espera de procesos activos que están esperando únicamente por el recurso
procesador. El contenido de la misma es una referencia a todos los procesos que están, como se dijo antes
solamente esperando el recurso CPU.

En caso que también contenga procesos suspendidos, generaría una baja en la performance en caso
que uno de estos sea seleccionado para ejecutar, se deberán cargar sus páginas a memoria, por lo que no
será ejecutado de inmediato.

2000 – Febrero
1) Describa un procedimiento de atención de interrupciones adecuado para un multiprocesador.

El protocolo habitual de instanciación de la rutina de interrupción en el contexto del proceso (stack)


interrumpido es adecuado. El énfasis debe estar en la reentrancia del código de las propias rutinas y la
correcta individualización de las secciones críticas.

2) En un sistema monolítico indique el procedimiento para obtener un servicio del sistema


operativo.

En un sistema monolítico, se utiliza habitualmente instrucciones de la forma de Software Interrupt o


Supervisor Call. En ambos casos se aumenta el nivel de privilegio de ejecución (que permite ejecutar código
del núcleo) a cambio de transferir incondicionalmente el control a código autenticado dispuesto en memoria
protegida.

3) Durante la ejecución de un proceso, ante una excepción, indique Ud. que protocolo entiende
debe seguir el sistema operativo. Describa un esbozo de un procedimiento para lograr ese
propósito.

Que la fuerza te acompañe Página 13


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Una excepción es primero interceptada por código del núcleo, que implementará la administración de la
misma según el diseño del sistema operativo. En general, se determina la existencia o no de manejadores
para esa excepción examinando el contexto del stack interrumpido.

Durante la ejecución del proceso, cada vez que se elabora un bloque que declara un manejador se
inserta en el stack una traza de ello, indicando dirección del código a ejecutar, etc. En ocasión de la
excepción, analizando el stack se podrá determinar la existencia o no de un manejador apropiado. De no
haber, la propia rutina realiza el ‘unwind’ del stack hasta llegar al contexto del siguiente procedimiento
anidado, donde re-eleva la excepción original repitiéndose el procedimiento una vez más.

2001 – Febrero
-- INTRO --
Una alternativa al diseño de un sistema basado en un kernel monolítico, o en un microkernel y un
conjunto de procesos de usuario, es el diseño de un kernel con
soporte de carga dinámica de módulos.

Dichos módulos implementan ciertas funcionalidades del sistema operativo (drivers, soporte para
filesystems, extensión o modificación de system calls, etcétera), y son cargados dentro el espacio de
direccionamiento del kernel, ejecutando con los mismos privilegios que el resto del kernel.

La carga de estos módulos es sobre demanda (en tiempo de ejecución), y pueden ser removidos
manualmente, o si no son utilizados por un cierto período de tiempo, de forma de minimizar el consumo de
memoria del sistema.

Hay varios sistemas de amplia difusión (Linux y varios derivativos de BSD entre otros) que aplican
este enfoque. Para ello, se debe definir en el kernel un mecanismo de "enganche" para poder incorporar (y
remover) los módulos al kernel en tiempo de ejecución.

El hecho de contar con esta facilidad brinda una gran flexibilidad al sistema, permitiendo el
agregado de nuevas funcionalidades sin necesidad de recompilar el kernel, ni rebootear.

Considerando lo expuesto anteriormente, y lo visto en el curso con referencia a las diferencias entre
kernels monolíticos y microkernels, se pide:

Mencionar y justificar al menos 2 (dos) puntos en los que el enfoque de carga dinámica de
módulos es mejor que el de microkernels, y viceversa.

Ventajas de carga dinámica de módulos sobre microkernel:

- Es más eficiente (no hay pasaje de mensajes, sino que se accede directamente a las
estructuras de datos, se disminuye la cantidad de system calls utilizadas, y por lo tanto también
la de context switches, etcétera).

- Libera al código de la carga extra que implica el pasaje de mensajes, permitiendo un desarrollo
más fácil y más rápido, y disminuyendo los requerimientos de memoria.

Ventajas de microkernel sobre carga dinámica de módulos:

- El código del kernel es más pequeño y sencillo (se evitan mecanismos de carga / descarga,
etcétera).

- Es más estable en caso de falla de un driver, etcétera, ya que los mismos corren como
procesos de usuario.

- Probablemente sea más fácil de portar un driver basado en el API del kernel que un módulo que
trabaje directamente sobre el hardware.

Que la fuerza te acompañe Página 14


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2001 – Marzo
1) En un sistema con multiuprogramación. Es imprescindible contar con las primitivas Obtener y
Liberar Recurso (por ejemplo P y V)?

Efectivamente, la necesidad de tener primitivas para obtener y liberar un recurso se debe a que al
tener un sistema multiprogramado, tenemos varios procesos ejecutando en el sistema (alternandose la
CPU y demás elementos) y los cuales tendrán intenciones de acceder a ciertos dispositivos para
trabajar con ellos. Si cada uno de los procesos se ejecutara por separado, no tendría que compartir sus
recursos con otros, pero al estar todos ejecutando “a la vez” deben competir por ellos. Por lo tanto, si
tenemos el recurso compartido impresora, y dos procesos quieren imprimir, deberán realizarlo en orden,
ya que si alternan en el uso, obtendremos impresiones ilegibles. Para solucionar esto, cuando un
proceso quiere imprimir, solicita el recurso al SO, y cuando queda libre, realiza la impresión y no es
liberado hasta que la misma termine. De forma similar, se pueden considerar el uso de un disco o una
conexión de red.
Si bien el recurso es compartido y todos lo pueden usar, deberán tener un cierto orden y
exclusividad para su uso.

2) Tanto para un sistema de paginado o segmentación, describa como el uso de un mismo objeto
almacenado en el espacio real de memoria puede ser compartido por varios procesos.

- Sistema paginado: En un sistema paginado, para que el código sea compartible, el mismo
debe ser reentrante, o sea que no se puede modificar a sí mismo.
La tabla de páginas de cada usuario, establece una correspondencia con la misma copia física
del objeto, manteniendo las páginas de datos deben corresponder a marcos “privados”.
La compartición de memoria entre procesos dentro de un sistema es similar a la compartición
del espacio de direcciones de una tarea por parte de las hebras de ejecución. Además, algunos
sistemas operativos implementan la memoria compartida utilizando páginas compartidas.

- Sistema segmentado: El compartimiento se hace a nivel de segmentos, cualquier información


compartible se define como un segmento. En estos casos se genera un problema, cuando los
segmentos contienen referencias a sí mismos (saltos por ejemplo). En este caso, todos los
programas que utilicen ese segmento, lo deben numerar de la misma forma, por ejemplo, para
todos debe ser el segmento 4. Se hace cada vez más difícil encontrar un número de segmento
adecuado, a medida que aumenta el número de programas que lo utilizan.

2001 – Agosto
En cada una de las siguientes preguntas señale cuál opción es la correta. En caso que existan
varias opciones correctas, se considerará como correcta la más completa o precisa

1) Dado el siguiente código:

task body ME is task body Cliente is


loop -- actividades previas
accept entrar () do ME.entrar();
accept salir () do -- accedo a la región crítica
end salir; ME.salir();
end entrar; -- otras actividades
end loop end Cliente
end ME

a- Resuelve mutuoexclusión pero tiene posposición indefinida.


b- Resuelve mutuoexclusión y no tiene posposición indefinida.
c- Tiene DEADLOCK (interbloqueo).
d- Ninguna de las anteriores.

Que la fuerza te acompañe Página 15


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2) La instrucción que sigue inmediatamente al fork (asumiendo que se ejecuta exitosamente):

Fork L1;
A := A+1;

L1: B := B+1

a- No se ejecuta.
b- Se ejecuta 2 veces.
c- Se ejecuta al finalizar la ejecución del programa llamado.
d- Se ejecuta 1 vez.

3) ¿Cuál de las siguientes condiciones debe cumplirse para poder utilizar el algoritmo del
banquero?

a- No deben existir esperas circulares.


b- Los procesos no pueden solicitar de nuevo un recurso que ya había sido utilizado y liberado por el
mismo proceso.
c- La cantidad máxima de recursos por proceso debe ser conocida previamente.
d- Los procesos deben solicitar los recursos en un orden predeterminado.
e- Ninguma de las anteriores.

4) ¿Cuál de las siguientes técnicas produce obligatoriamente espera activa (bussy waiting) si se
utilizan para la exclusión mutua?

a- Instrucción ts (test and set).


b- Rendevouz de ADA.
c- Monitores
d- Semáforos.
e- Dos de los anteriores.

5) Uno de los mayores aportes del canal DMA fue:

a- Aceleró la velocidad de transferencia desde el dispositivo externo al buffer.


b- Permitió acelerar la E/S de un proceso.
c- Permitió la implementación de sistemas de multiprogramación.
d- Libera a la CPU de algunas tareas involucradas en E/S.
e- Ninguna de las anteriores

6) El algoritmo de Dekker

a- Asegura la exclusión mutua de procesos sin soporte especial del hardware.


b- Elimina la espera activa (bussy waiting) de dos procesos concurrentes.
c- Asegura la exclusión mutua de procesos con soporte especial del hardware y/o zonas protegidas de
memoria.
d- Es una implementación de semáforos.
e- Ninguna de las anteriores.

7) ¿Cuál de los siguientes algoritmos se debería utilizar para la asignación de procesador a


procesos de tiempo real?

a- SJF.
b- Round Robin.
c- FIFO.
d- Dos de las anteriores.
e- Ninguna de las anteriores.

8) Un sistema utiliza una pila (stack) en vez de una lista o cola (FIFO) para almacenar los procesos
bloqueados después de un wait (a un semáforo). Decidir cuál de las siguientes afirmaciones es
verdadera:

Que la fuerza te acompañe Página 16


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

a- No cambia nada.
b- Aumenta la probabilidad de deadlocks (interbloqueos).
c- Existen procesos desfavorecidos por lo que se puede presentar posposición indefinida.
d- El resultado es el mismo pero un poco más eficiente.
e- Ninguna de las anteriores.

9) Un sistema operativo estructurado en capas se caracteriza por:

a- Estar estructurado en una serie de funciones completamente independientes, sin ninguna


comunicación.
b- Estar constituído por una serie de módulos, con una comunicación libre entre ellos.
c- Basarse en una jerarquía de niveles, con comunicación solo entre niveles contiguos por medio
de una interfaz bien definida.
d- Dos de las anteriores.
e- Ninguna de las anteriores.

10) El concepto de conjunto de trabajo (working set) hace referencia a:

a- al conjunto de páginas que tiene cargado un proceso en un momento determinado en memoria


principal.
b- Al conjunto de procesos que en un momento determinado están en el sistema.
c- Al conjunto de páginas a las que unproceso hace referencia activa en un intervalo de tiempo.
d- Ninguna de las anteriores.

11) En un sistema que utiliza gestión de memoria real con particiones dinámicas, en un momento
determinado la lista de huecos está compuesta por huecos de tamaño 10KB, 15KB, 17KB y
12KB. ¿Que política de asignación utiliza el sistema, si ante una solicitud de un bloque de 13KB
elige el bloque de 17KB?

a- Peor ajuste.
b- Mejor ajuste.
c- Primer ajuste.
d- Ninguna de las anteriores.

12) La posposición indefinida o inanición…

a- Puede ser debida a políticas de despacho del sistema.


b- Se puede evitar mediante algoritmos como el del banquero.
c- Se produce únicamente por el uso inadecuado de herramientas de sincronización.
d- Dos de las anteriores.
e- Ninguna de las anteriores.

13) Sea un sistema con paginación, con una memoria principal de 16KB, con un tamaño de página
de 1024bytes. Un proceso que ocupa 5 páginas las tiene cargadas en un momento dado, en
orden a partir del marco de página 10. ¿Que dirección real corresponde con la virtual 1235?

a- 5331.
b- Esa dirección no pertenece al espacio de direcciones del proceso.
c- 10451.
d- 11475.
e- Ninguna de las anteriores.

14) Sea un sistema con 6 unidades de cinta, 4 impresoras y 2 unidades de DAT. Hay tres procesos
en el sistema (P1, P2, P3) cuyas necesidades máximas son, respectivamente (5,1,1), (2,4,2) y
(1,1,0). Se supone que la asignación de recursos se basa en el algoritmo del banquero.

a- Es imposible que el sistema se encuentre en ese estado.


b- El proceso P2 no puede pedir una impresora, al tener cubiertas sus necesidades de ese recurso.
c- Si P2 pide una impresora, el sistema se la daría.

Que la fuerza te acompañe Página 17


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

d- Ninguna de las anteriores.

15) Sobre la técnica de planificación Round-Robin:

a- Si el cuanto de tiempo tiende a cero, se comporta como el FCFS.


b- Si el cuanto de tiempo tiende a infinito, se comporta como el SJF.
c- Permite implementar sistemas de tiempo compartido.
d- Permite implementar sistemas de tiempo real duros.
e- Dos de las anteriores.

16) Una llamada al sistema.

a- Cambia de modo usuario a modo núcleo.


b- Es un tipo especial de programa del sistema.
c- Es una interfaz con el intérprete de órdenes.
d- Todas las anteriores son ciertas.
e- Ninguna de las anteriores.

17) ¿Que política de planificación de procesos logra un reparto más equitativo del tiempo del
procesador?

a- FCFS.
b- SJF.
c- Métodos basados en prioridades.
d- Round Robin.
e- Ninguna de las anteriores.

18) En un sistema con memoria virtual, el tamaño del espacio lógico de un proceso:

a- Debe ser menor que la memoria real disponible.


b- Debe ser mayor que la memoria real disponible.
c- Puede ser mayor que la memoria real disponible.
d- Debe ser exactamente igual que la memoria real disponible.
e- Ninguna de las anteriores.

19) ¿Cuál de estas transiciones de estados de un proceso jamás se produce en un sistema normal?

a- de “bloqueado” a “listo”.
b- de “listo” a “bloqueado”.
c- de “en ejecución” a “listo”.
d- de “en ejecución” a “bloqueado”.
e- Todas son posibles.

20) ¿Cuál de estas afirmaciones es cierta?

a- Un proceso pesado contiene uno o varios hilos.


b- Un proceso pesado pertenece a uno o varios hilos.
c- Un hilo contiene uno o varios procesos pesados.
d- Un hilo pertenece a uno o varios procesos pesados.
e- Ninguna de las anteriores.

21) En el contexto del problema de interbloqueo (deadlock) un estado inseguro es:

a- Un estado donde siempre existe al menos una situación de interbloqueo (deadlock).


b- Un estado donde los procesos esperan por recursos.
c- Un estaod a partir del cual se puede llegar a una situación de interbloqueo (deadlock).
d- Un estado donde no hay disponibilidades de recursos.
e- Ninguna de las anteriores.

22) La hiperpaginación (trashing) se puede evitar…

Que la fuerza te acompañe Página 18


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

a- Admitiendo más procesos en memoria cuando la utilización de CPU es baja.


b- Asignando a cada proceso su conjunto de trabajo (working set).
c- Impidiendo que varios procesos compartan páginas.
d- Impidiendo que un proceso tenga más páginas que otros.
e- Ninguna de las anteriores.

23) Un semáforo tiene actualmente el valor 2. Si se ejecuta una operación wait o P sobre él, ¿que
sucederá?

a- El proceso que ejecuta la operación se bloquea hasta que otro ejecute una operación signal o V.
b- Tras hacer la operación, el proceso continuará adelante sin bloquearse.
c- El proceso continuará adelante sin bloquearse, y si previamente existían procesos bloqueados a causa
del semáforo, se desbloqueará uno de ellos.
d- Un semáforo jamás podrá tener el valor 2, si su valor inicial era 0 (cero) y se ha operado correctamente
con él.
e- Dos de las anteriores.

24) ¿Cuál de estas herramientas elimina por sí misma el riesgo de interbloqueo (deadlock)?

a- Instrucciones atómicas.
b- Monitores.
c- Semáforos.
d- Ada.
e- Ninguna de las anteriores.

25) La política de sistitución de páginas corre a cargo …

a- Del hardware.
b- Del sistema operativo.
c- Del compilador.
d- Del programa de usuario.

26) En el tratamiento de interbloqueo (deadlock), el método que pide en orden los recursos actúa
sobre la condición de:

a- No apropiación.
b- Retención y espera.
c- Espera circular.
d- Exclusión mutua.
e- Ninguna de las anteriores.

27) La seguridad física de un sistema informático…

a- Corre a cargo de bibliotecas y programas del sistema.


b- Corre a cargo del núcleo del sistema operativo.
c- Puede verse comprometida aunque el sistema operativo sea seguro.
d- Tiene que ver con el lenguaje de programación.
e- Ninguna de las anteriores.

28) Sean dos hilos (threads) cualesquiera.

a- Deben utilizar semáforos si necesitan sincronizarse.


b- Su espacio de memoria virtual siempre es el mismo.
c- Podrían estar simultáneamente en ejecución.
d- Dos de las anteriores.
e- Ninguna de las anteriores.

29) Un proceso hace referencia a las siguientes páginas: c a d b e b a b c d (en ese orden). La
memoria principal aloja 4 marcos. Inicialmente en la memoria no hay cargada ninguna página.

Que la fuerza te acompañe Página 19


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

a- Si el sistema utiliza el algoritmo LRU se producen 7 fallos de página.


b- Si el sistema utiliza el algoritmo LRU se producen 8 fallos de página.
c- Si el sistema utiliza el algoritmo FIFO se producen 9 fallos de página.
d- Si el sistema utiliza el algoritmo FIFO se producen 5 fallos de página.
e- Dos de las anteriores.

30) Si se realizaron las siguientes solicitudes para un disco: 100 58 70 89 125 12 36 (en ese orden).
La cabeza del disco se encuentra en el cilindro 96 moviéndose hacia el cilindro 0.

a- Si el sistema utiliza el algoritmo SCAN las solicitudes serán atendidas en este orden: 100 58 70 89 125
12 36.
b- Si el sistema utiliza el algoritmo SCAN las solicitudes serán atendidas en este orden: 89 70 58 36
12 100 125.
c- Si el sistema utiliza el algoritmo SCAN-C las solicitudes serán atendidas en este orden: 100 125 89 70
58 36 12.
d- Si el sistema utiliza el algoritmo FIFO las solicitudes serán atendidas en este orden: 89 125 12 36 100
58 70.
e- Dos de las anteriores.

2002 – Enero
1) Indique que función de las señaladas no realiza siempre la operación Open o Abrir archivo:

a- Traducción de nombre Externo a Interno.


b- Creación de estructuras de acceso a memoria.
c- Asignación del área o extensión donde almacenar el archivo.
d- Verificación del derecho de acceso del mismo.

2) Una Cache de memoria para un sistema multiprocesador debe:

a- Almacenar lo últimio que se accedió.


b- Almacenar lo que tiene más probabilidad de volver a ser utilizado.
c- Almacenar solamente palabras de memoria con código y no datos.
d- Disponerse en las inmediaciones del control de memoria.

3) Indique cual no es una ventaja resultado de que el sistema operativo tenga la posibilidad de
realizar la asignación o alocación dinámica de sus tablas internas:

a- Mayor eficiencia por menor overhead.


b- Evita la necesidad de reconfigurar el sistema periódicamente.
c- Poder disponer de la cantidad de recursos adecuada a cada oportunidad.
d- Evitar límites máximos de la cantidad de semáforos disponibles.

4) Indique que no es imprescindible para implementar una E/S no bloqueante en un Sistema


Operativo

a- El sistema debe incluir un DMA o equivalente.


b- El procesador debe contar con un esquema de interrupciones externas.
c- Instrucciones privilegiadas para implementar la E/S.
d- Un mecanismo que permita verificar el fin de la operación E/S.

5) Para un multiprocesador diseñado en torno a memoria común, indique cuál de las siguientes no
es una ventaja derivada del uso de procesadores con chache interna:

a- Mayor velocidad de ejecución de los procesos.


b- Menor uso del bus de datos.
c- Acceso de escritura a la memoria más veloz.

Que la fuerza te acompañe Página 20


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

d- Viabiliza el aumentar la cantidad de procesadores del sistema.

6) En un sistema multiprocesador con memoria virtual por segmentación indique cuál es la


dificultad principal en oportunidad de reorganizar la memoria del mismo:

a- La necesidad de evitar el acceso concurrente a un segmento durante su desplazamiento.


b- Determinar que procesos tienen posibilidad de acceder al segmento.
c- Hallar el área libre dónde almacenarlo.
d- A y B juntas.

7) En un sistema con paginación donde la memoria tiene un ciclo de acceso de 200ns y hay una
probabilidad del 50% de hallar en el cache del procesador la entrada correspondiente en la tabla
de traducción de páginas, indique la velocidad promedio de acceso a memoria:

a- 200ns
b- 300ns
c- 400ns
d- Ninguna de las anteriores.

8) Dado el siguiente código:

Monitor RegionCritica;
Var sincRegion: condition;
Procedure entrar();
Begin
SincRegion.wait();
End;

Procedure salir();
Begin
SincRegion.signal();
End

Begin
SincRegion.signal();
End;

Si los clientes llaman a RegionCritica.entrar, acceden al recurso compartido y luego llaman a


RegionCritiaca.salir.

a- Resuelve el problema de mutuoexclusión (PME) pero tiene busy waiting.


b- Dependiendo de la implementación del monitor puede llegar a resolver el PME.
c- Tiene deadlock.
d- Resuelve el PME sin busy waiting.
e- Ninguna de las anteriores.

9) El método del entrelazado permite identificar de manera clara:

a- Deadlock.
b- Posposición indefinida.
c- La no resolución del problema de mutuoexclusión.
d- Dos de las anteriores.
e- Todas las anteriores.

10) El algoritmo del banquero se utiliza para determinar:

a- La cantidad de recursos que está utilizando un determinado proceso.


b- Si existe deadlock en el sistema.
c- Si existen procesos huérfanos en el sistema.
d- Si el sistema esá en un estado seguro.

Que la fuerza te acompañe Página 21


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

e- Determinar la utilización de CPU.

11) Cuando un proceso ejecuta un V(s)

a- Se bloquea sólo si s es –1.


b- Se bloquea siempre.
c- Se bloquea solo si s es 0.
d- Si no existe un proceso esperando, no hace nada.
e- Ninguna de las anteriores.

12) ¿Cual de las siguientespolíticas se adecúa mejor a los sistemas de tiempo compartido?

a- FIFO.
b- LIFO.
c- Preemptivo.
d- Round Robin.
e- SJF.

13) A partir del estado pronto suspendido puedo pasar a:

a- Bloqueado suspendido.
b- Pronto activo.
c- Ejecutando.
d- Todas las anteriores.

14) La fragmentación interna aparece:

a- Con las particiones variables.


b- Con las particiones fijas.
c- Con la segmentación
d- Cuando utilizamos la política de asignación “best fit”.
e- Dos de las anteriores.

15) ¿Cuál de los siguientes algoritmos de planificación asegura que en todo momento se ejecute
aquel de mayor prioridad?

a- FIFO.
b- Round Robin.
c- Prioridad.
d- Prioridad “preemptive” o apropiativo.
e- Dos de los anteriores.

16) La construcción de cobegin-coend:

a- Proporciona un mecanismo simple de sincronización.


b- Permite generar concurrencia.
c- Permite resolver cualquier grafo de precedencia.
d- Dos de las anteriores.
e- Todas las anteriores.

17) Un proceso hace referencia a las siguientes páginas c a d b e b a b c d (en ese orden). La
memoria principal aloja 4 marcos. Inicialmente en la memoria no hay cargada ninguna página.

a- Si el sistema utiliza el algoritmo LRU se producen 5 fallos de página.


b- Si el sistema utiliza el algoritmo LRU se producen 6 fallos de página.
c- Si el sistema utiliza el algoritmo FIFO se producen 8 fallos de página.
d- Si el sistema utiliza el algoritmo FIFO se producen 5 fallos de página.
e- Dos de las anteriores.
f- Ninguna de las anteriores.

Que la fuerza te acompañe Página 22


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

18) si se realizaron las siguientes solicitudes para un disco: 100 58 70 89 125 12 36 (en ese orden).
La cabeza del disco se encuentra en el cilindro 96 moviendose hacia el cilindro 0.

a- Si el sistema utilza el algoritmo SCAN las solicitudes serán atendidas en este orden: 200 69 70 89 125
12 36.
b- Si el sistema utiliza el algoritmo SCAN las solicitudes serán atendidas en este orden: 89 70 58 36 12
100 125.
c- Si el sistema utiliza el algoritmo SCAN-C las solicitudes serán atendidas en este orden: 89 70 58 36 12
125 100.
d- Si el sistema utiliza el algoritmo FIFO las solicitudes serán atendidas en este orden: 89 125 12 36 100
58 70.
e- Dos de las anteriores.

19) En un sistema que utiliza gestión de memoria real con particiones dinámicas, en un momento
determinado la lista de huecos está compuesta por huecos de tamaño 10KB, 15Kb, 17Kb y 12KB.
¿Que política de asignación utiliza el sistema, si ante una solicitud de un bloque de 13KB, elige
el bloque de 15KB?

a- Peor ajuste.
b- Mejor ajuste.
c- Primer ajuste.
d- Mejor o primer ajuste.
e- Ninguna de las anteriores.

20) En cuanto a las operaciones “borrar archivo” y “cerrar archivo” sobre un archivo no vacío, es
cierto que:

a- ambas eliminan solo la información de ese archivo de la tabla de archivos abiertos del proceso que ha
invocado la operación.
b- Ambas eliminan la información de ese archivo, tanto de la tabla de archivos abiertos del proceso, como
de la tabla general del sistema.
c- Ambas no modifican el continido del directorio que contiene a ese archivo.
d- Ambas no tienen por que modificar el contenido de los bloques de datos del archivo en disco.

21) Sea un sistema de memoria virtual paginada con páginas de 4KB. La memoria principal es de
64MB. La Tabla de Páginas, que ocupa 2MB cuenta con descriptores de 2 bytes. ¿Cuál es el
espacio de memoria virtual máximo posible?

a- 30MB.
b- 64MB.
c- 4GB.
d- Un valor distinto a los anteriores.

22) La capacidad de almacenamiento de un mailbox:

a- Determina si la comunicación será directa o indirecta.


b- Determina si la comunicación será síncrona o asíncrona.
c- No determina el tipo de comunicación a utilizar.
d- Ninguna de las anteriores.

23) Si tenemos un sistema con paginado y 16 marcos, que está ejecutando un único proceso que
ocupa 17 páginas, es cierto que:

a- El algoritmo que mejor se comporta es el FIFO.


b- El algoritmo que mejor se comporta es el LRU.
c- El algoritmo que mejor se comporta es el de la 2da. oportunidad (o del reloj).
d- Sin mas datos, no se puede saber que algoritmo de sustitución se comportará mejor.

Que la fuerza te acompañe Página 23


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

24) Una forma de reubicar estáticamente un archivo ejecutable consiste en sumar a todas las
referencias relativas a memoria que se encuentren la dirección de comienzo de memoria en
donde se va a cargar dicho ejecutable. Para saber cuáles son estas referencias:

a- El loader o cargador genera una lista de las direcciones relativas que hacen referencia a memoria para
que el linker pueda reubicarlas en el momento de linkedición.
b- El linker genera dentro del archivo ejecutable una lista de direcciones a reubicar y el cargador,
que conoce de antemano la estructura de todos los ejecutables, sabe donde encontrar dicha
lista.
c- En el momento de la carga del programa en memoria, el compilador deja en la pila del proceso la lista
de las direcciones a reubicar por el cargador.
d- Es necesario contar con un registro de reubicación que contenga la direcci´n de memoria del comienzo
de la lista de direcciones a reubicar.

25) En cuanto a procesos ligeros (threads) y pesados, es cierto que:

a- En entornos monousuario no es posible el uso de procesos ligeros.


b- Un proceso ligero es aquel que necesita poco tiempo de CPU para ejecutarse.
c- Un proceso pesado es un proceso que tiene un algo grado de uso de espacio en disco.
d- Varios procesos ligeros pueden compartir la misma tabla local de archivos abiertos.

26) Indicar cuál de las afirmaciones siguientes es cierta:

a- El entorno de ejecución de un proceso ligero (thread) es mucho más reducido que el de un proceso
tradicional ya que no incluye al proceso.
b- Un proceso ligero puede planificarse con las mismas políticas que los procesos tradicionales.
c- Dos procesos ligeros pueden comunicarse pasándose información en la pila o “Stack”.
d- Dos procesos ligeros pueden comunicarse pasándose información en los registros del procesador.

27) Indicar cuál de las siguientes afirmaciones es cierta:

a- La comunicación entre dos procesos a través de un mailbox de capacidad nula es siempre


síncrona.
b- El envío de un mensaje por un mailbox de capacidad nula implica busy waiting hasta que el proceso
receptor decida recibir.
c- La comunicación entre dos procesos mediante el modelo de comunicación directa es siempre síncrona.
d- Ninguna de las anteriores.

28) Las llamadas al sistema…

a- Son el conjunto de servicios que ofrece el S.O. a nivel de hardware.


b- Son rutinas escritas en lenguaje de alto nivel que sirven de interfaz entre el S.O. y el hardware.
c- Son servicios programados en código de máquina que suministran la interfaz entre los drivers
(manejadores) y el hardware.
d- Componen la interfaz de programación para acceder a los servicios del S.O.

29) Con Memoria Virtual, el tamaño de las páginas:

a- siempre debe ser múltiplo del tamaño de los marcos.


b- Debe ser una potencia de 2 para disminuir la fragmentación interna.
c- Debe ser una potencia de 2 para acelerar el proceso de traducción de direcciones.
d- Cuanto menor sea su tamaño, se pierde menos tiempo en operaciones E/S

30) ¿Quién se encarga de agrupar convenientemente en segmentos los objetos de un programa,


para posteriormente poderlos referenciar mediante la tupla <segmento, desplazamiento>?

a- El programador.
b- El compilador.
c- El cargador del sistema operativo.
d- La MMU (unidad de gestión de memoria).

Que la fuerza te acompañe Página 24


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2002 – Febrero
1) Los semáforos…

a- Eliminan el problema de interbloqueo.


b- Son más potentes que las regiones críticas condicionales.
c- Tienen dos operaciones públicas (wait / signal).
d- Todas las anteriores son ciertas.

2) En un sistema multihilo

a- Los hilos de un mismo proceso pesado comparten el mismo código.


b- Los hilos de distintos procesos pesados comparten la misma pila.
c- Los hilos de un mismo proceso pesado comparten el mismo contador de programa.
d- Todas las anteriores son falsas

3) El modo dual de operación consigue que el sistema informático sea:

a- Más veloz.
b- Más fácil de usar.
c- Más seguro.
d- Ninguna de las anteriores.

4) Una condición no cesesaria para la aparición del interbloqueo es:

a- La existencia de recursos con número finito de ejemplares.


b- La posibilidad de esprea con retención de recursos.
c- La existencia de recursos que exigen exclusión mutua.
d- La aparición de un estado inseguro.

5) en UNIX, ¿que ocurre con los ficheros abiertos por un proceso cuando éste crea un proceso
hijo?

a- El hijo no tiene inicialmente ningún fichero abierto proveniente del padre.


b- El usuario decide que ficheros aparecen inicialmente abiertos en el hijo.
c- Sólo aparecen abiertos en el hijo los flujos esándares del padre (stdin, stdout, stderr).
d- Todos los ficheros del padre aparecen abiertos en el hijo.

6) Suponiendo que inicialmente los marcos disponibles están vacíos, la cadena de referencias a
memoria (1,2,3,4,1,3,4,2,3,1,3,4):

a- Provoca al menos dos fallos de página. Creo que está mal, debería ser (c) ya que todos están
vacíos
b- Provoca como mucho tres fallos de página.
c- Provoca exactamente cuatro fallos de página, independientemente de la política de reemplazo.
d- Según la política de reemplazo, podría no provocar fallos de página.

7) Se analiza un sistema de paginación por demanda y se obtiene que, con cierta carga de trabajo
la CPU se emplea un 15% y el disco intercambio (swap) está ocupado un 92% del tiempo. ¿Cuál
de estas acciones aumentaría más la utilización de la CPU?

a- Ampliar la memoria principal.


b- Aumentar el grado de multiprogramación.
c- Cambiar el disco de intercambio por otro de más capacidad.
d- Cambiar la CPU por otra más rápida.

8) Se tiene una cadena de referencias a memoria, que dan 10 fallos de página si se gestionan con
una política FIFO. ¿Cuántos fallos de página se obtendrían con la política óptima?

a- Una cantidad mayor o igual.

Que la fuerza te acompañe Página 25


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

b- Una cantidad menor o igual.


c- Una cantidad estrictamente mayor.
d- Una cantidad estrictamente menor.

9) La característica distintiva del enlace dinámico es que resuelve referencias a memoria en:

a- Tiempo de carga.
b- Tiempo de compilación.
c- Tiempo de ejecución.
d- Tiempo de respuesta.

10) Considere estas cadenas de referencias a memoria: C1=(3,4,4,5,3,2,1,4,3,1,2) y


C2=(3,5,5,4,3,2,1,5,3,1,2). ¿Cuál originará más fallos de página, suponiendo que inicialmente
todos los marcos están libres?

a- C1.
b- C2.
c- Depende de la política de sustitución empleada.
d- Las dos dan los mismo fallos.

11) Para procesar simultaneamente operaciones de CPU con operaciones de E/S se requieren:

a- Dispositivos rápidos de E/S.


b- Un reloj del sistema.
c- Interrupciones.
d- Instrucciones de hardware especiales de protección.

12) En el interbloqueo, la estrategia que puede dar lugar a una muy baja utilización de recursos es:

a- Estrategia liberal.
b- Estrategia de prevención.
c- Estrategia de detección y recuperación.
d- Estrategia de mutuaexclusión.

13) El algoritmo de segunda oportunidad o NRU es una política de:

a- Detección.
b- Sustitución.
c- Traducción.
d- Ubicación.

14) Un sistema de tiempo compartido es un caso particular de:

a- Sistema multiprogramado.
b- Sistema monousuario.
c- Sistema de procesamiento por lotes.
d- Sistema monotarea.

15) En UNIX, los privilegios de acceso a un archivo se guardan en:

a- El i-node.
b- La U-area.
c- El x-file.
d- El z-buffer.
e- Ninguna de las anteriores.

16) En el tratamiento de interbloqueo, el método de ordenación lineal de recursos actúa sobre la


condición de:

a- No apropiación.

Que la fuerza te acompañe Página 26


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

b- Retención y espera.
c- Espera circular.
d- Exclusión mutua.

17) La interfase entre los procesos de usuario y el sistema operativo está definido por:

a- Memoria compartida.
b- Llamadas de sistema.
c- El shell.
d- Librerías de alto nivel.

18) ¿Cuál de las siguientes funciones la realiza el scheduler?

a- Cambio a modo usuario.


b- Cambio de contexto.
c- Selección del siguiente programa de la lista de “listos para ejecutar”.
d- Poner el contador del programa en la posición adecuada del programa a ejecutar.

19) El algoritmo de Dekker…

a- Asegura la exclusión mutua de procesos sin soporte especial de hardware.


b- Elimina la espera activa de dos procesos concurrentes.
c- Asegura la exclusión mutua de procesos con soporte especial del hardware y/o zonas protegidas de
memoria.
d- Dos de las anteriores. (creo que esta está mal – Dekker = busy waiting)
e- Ninguna de las anteriores.

20) Un proceso A escribe una serie de datos (por ejemplo, un array de enteros) en un área de
memoria y n procesos deben imprimir con una determinada frecuencia (por ejemplo, cada
segundo) la última serie de datos escrita por el proceso A. ¿Como se puede asegurar exclusión
mutua?

a- No se necesita asegurar exclusión mutua ya que solo un proceso es el que escribe.


b- Se puede solucionar con el algoritmo de Dekker.
c- Se puede solucionar con un semáforo.
d- Se necesita por lo menos n semáforos.
e- Dos de las anteriores.

21) Si un proceso utiliza todo su quantum en la mayoría de los casos, podemos decir que él que:

a- Nada.
b- Es un proceso con mucha E/S.
c- Es un proceso orientado al cálculo.
d- Es una tarea del sistema.
e- Es una tarea con alta prioridad

22) Cuando un proceso en modo usuario intenta ejecutar una instrucción privilegiada, ocurre:

a- Una interrupción.
b- Una excepción.
c- Una llamada al sistema.
d- Una llamada al scheduler.

23) De las siguietnes operaciones, la que menos tiempo ha de consumir es:

a- Traducción de una dirección lógica a dirección física.


b- Cambio de contexto.
c- Detección de interbloqueo.
d- Gestión de un fallo de página.

Que la fuerza te acompañe Página 27


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

24) Cuando un hilo se bloquea:

a- Se bloquean también el resto de los hilos de la misma tarea si la implementación de los hilos se
realizó a nivel de usuario.
b- Se bloquean todos los hilos de ese usuario si los hilos se implementaron a nivel de usuario.
c- Los demás hilos podrán seguir ejecutándose sin que importe la forma en que se llevó a cabo la
implementación de los mismos.
d- Los demás hilos seguirán o no ejecutándose sin que importe la forma en que se llevó a cabo la
implementación de los mismos.

25) De los servicios que se citan a continuación, ¿cuáles no deberían ser ofrecidos por un
microkernel?

a- Ocultamiento de interrupciones.
b- Llamadas al sistema para suministrar acceso básico al sistema de archivos.
c- Herramientas para la comunicación entre procesos.
d- Gestión básica de procesos.

26) La técnica de “swapping” permite:

a- Aumentar el tamaño de los procesos que los usuarios pueden ejecutar.


b- Aumentar la rapidez con que se ejecutan los procesos de usuario.
c- Las respuestas a y b simultáneamente.
d- Aumentar el nivel de multiprogramación del sistema.

27) De las diferentes técnicas de E/S, ¿cuál liebera de más trabajo de E/S a la CPU?

a- Polling.
b- Interrupciones.
c- DMA.
d- Las respuestas a y c.

28) Supongamos que en un sistema multiprogramado deseamos ejecutar 20 tareas intensivas en


cálculo y todas de la misma duración. Si todas son lanzadas en t=0, los tiempos medios de
retorno:

a- Son menores en sistemas con planificación FIFO.


b- Son menores en sistemas Round Robin.
c- Son iguales tanto en el caso a como en el b.
d- Tanto en el caso a como en el b, depende de las prioridades de las tareas.

29) Para favorecer a los trabajos con largas ráfagas de CPU se debe implementar un algoritmo de
planificación:

a- FCFS.
b- SJF.
c- Round Robin.
d- Basado en prioridades.

30) Sea un sistema de memoria virtual paginada con páginas de 64KB. La memoria principal es de
1GB. La tabla de páginas, que ocupa 512KB, cuenta con descriptores de 16bytes. ¿Cuál es el
espacio de memoria virtual máximo disponible?

a- 1GB.
b- 2GB.
c- 4GB.
d- Un valor distinto de los anteriores.

Que la fuerza te acompañe Página 28


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2002 – Julio
1) Anulada

2) Un sistema utiliza una pila y otro una cola para almacenar los procesos bloqueados después de
un P (semáforo ). Decidir cuál de las siguientes afirmaciones es verdadera:

a- El funcionamiento con ambas estructuras es igual.


b- El primero tiene más probabilidad de deadlocks.
c- En el primero existen procesos desfavorecidos por lo que se puede presentar postposición
indefinida.
d- El resultado al utilizar una pila es el mismo que hacerlo con una cola, pero un poco más eficiente.
e- No se puede utilizar pilas.

3) Dado el siguiente trozo de programa, ejecutado sin errores. ¿Cuál es el resultado impreso en
UNIX?


int main (void) {
if ((pid = fork())==0) printf(“hijo, ”);
else { wait (NULL);
printf(“padre, “);
printf(“fork terminado”);
fflush(stdout);
}

a- hijo, fork terminado, padre, fork terminado.


b- hijo, padre, fork terminado, fork terminado.
c- padre, hijo, fork terminado, fork terminado.
d- Puede ser a, b o c.

4) ¿Que significa que un sistema está en un estado inseguro?

a- Que se producirán bloqueos mutuos en el futuro.


b- Que no existe la posibilidad de que todos los procesos acaben.
c- Que existe un bloqueo mutuo.
d- Que no se puede asegurar que no exista bloqueo mutuo en el futuro.

5) ¿Cuál de las siguientes condiciones debe cumplirse para poder utilizar el algoritmo del
banquero?

a- Tener conocimiento de los requerimientos máximos de cada proceso.


b- Los procesos deben solicitar los recursos en un orden predeterminado.
c- No deben existir esperas circulares.
d- Los procesos no deben retener y esperar recursos.

6) Se desea solucionar el problema del productor-consumidor con un buffer infinito utilizando


semáforos, pudiendo haber más de un productor y más de un consumidor.

a- Se necesitan por lo menos dos semáforos.


b- Se necesita por lo menos un semáforo.
c- Se necesitan por lo menos 3 semáforos.
d- Existen soluciones mejores con señales bibloqueantes.

Que la fuerza te acompañe Página 29


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

7) En el contexto del problema de los filósofos, se da el siguiente algoritmo para el filósofo i


utilizando semáforos. En este se tiene n filósofos, n palillos y n semáforos inicializados en 1 e
indexados de 0 a n-1.

Izq = i;
der = (i+1)%n
if (izq <=der){
P(sem[izq]);
P(sem[der]);
} else { P(sem[der]);
P(sem[izq]);
}
comer();

¿Cuál de las siguietnes condiciones necesarias para la existencia de deadlock no se cumple?

a- exclusión mutua.
b- retención y espera.
c- no apropiación.
d- espera circular.

8) ¿Cuál de las siguientes opciones no es una razón para que un proceso esté en estado
“bloqueado”?

a- Espera de alarma de reloj.


b- Espera en semáforo.
c- Finalización del cuanto de procesador.
d- Espera E/S.

9) La espera activa (busy waiting) corresponde a:

a- La acción de bloqueo que realiza un semáforo sobre un proceso.


b- El estado bloqueado de un proceso pero no retirado a memoria secundaria.
c- Cuando un proceso se mantiene chequeando una condición y, por lo tanto consumiendo ciclos
de CPU.
d- La espera que realiza la operación wait sobre una variable de condición de un monitor.

10) Para lograr la exclusión mutua de una sección crítica donde se accede a un recurso compartido
por N tareas, donde el recurso está inicialmente disponible.

a- El semáforo binario debe inicializarse a cero.


b- El semáforo binario debe inicializarse a uno.
c- El semáforo binario debe inicializarse a N.
d- El semáforo binario debe inicializarse a 2.
e- Los semáforos no sirven para lograr la exclusión mutua de las secciones críticas.

11) La comunicación entre procesos es asíncrona cuando el proceso que envía el mensaje:

a- Sólo prosigue su tarea cuando el mensaje ha sido recibido.


b- Sólo prosigue su ejecución cuando ha recibido una respuesta del receptor.
c- Sigue su ejecución sin preocuparse de si el mensaje se recibe o no.
d- Lo realiza de manera indirecta, es decir, a través de un buzón.

12) En el sistema operativo Linux, respecto al sistema de archivos “./proc”?

a- Permite obtener información de los procesos que se están ejecutando en el sistema.


b- La información contenida en el sistema de archivos proc, se carga al instalar el sistema operativo.
c- Cada archivo o subdirectorio de proc, corresponde a un bloque de memoria virtual.
d- Ese sistema de archivos no existe.

Que la fuerza te acompañe Página 30


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

13) En un sistema de archivos jerárquico utilizado en almacenamiento tipo FAT…

a- Pueden existir problemas de integridad de los datos si dos procesos leen el mismo bloque de la FAT a
la vez.
b- La FAT se implementa con un vector indexado por 1..MAX_BLOQUES_DISCO, en el que cada lugar del
mismo se almacena el contenido de algún archivo.
c- Cada posición en el vector de la FAT, hace referencia a un bloque de disco.
d- La cantidad máxima de archivos del sistema de archivos es siempre de 2^MAX_BLOQUES_DISCO.

14) ANULADA.

15) ¿Por qué es conveniente implementar un sistema operativo utilizando una jerarquía de capas?

a- Porque aumenta la modularización del sistema, permitiendo la reutilización de servicios a lo


largo del mismo.
b- Porque las herramientas de desarrollo y los lenguajes utilizados obligan a contruirlo de esa manera.
c- Porque se evita que servicios de alto nivel (como un compilador) queden dentro del kernel del sistema
operativo.
d- Porque facilita la detección de intrusos en el sistema, al cruzar las fronteras de una capa.
e- Porque disminuye los tiempos de ejecución de los componentes del sistema operativo, como ser el
planificador o scheduler.

16) ¿Cuál de los siguientes es un caso de fragmentación interna?

a- Un archivo en disco que ocupa N bloques de TAM_BYTES, y posee un tamaño real en disco de (N-
0.5)*TAM_BYTES.
b- Un proceso que contiene una región de memoria de 4 páginas de 16KB, en la cual se tiene un vector
almacenado en ellas de 15 elementos, donde cada uno ocupa 4KB.
c- Un esquema de 4 particiones fijas de 100KB, en donde se utilizan 3 bloques de 75KB, 89KB y 32KB.
d- Un esquema de segmentación donde existen 3 huecos de 75KB, 89KB y 32KB.
e- a, b y c.

17) ¿Qué ventaja tiene un loader con capacidad de reubicación dinámica?

a- Permite que un mismo binario pueda ser cargado sin alteraciones en distintas posiciones de
memoria.
b- Aumenta los tiempos de desarrollo, debido a la necesidad de considerar los posibles valores del registro
de reubicación.
c- Que no necesita ayudas del hardware para lograr la reubicación dinámica.
d- Disminuye los tiempos de acceso a la memoria por parte del programa.
e- No necesita utilizar las bibilotecas del sistema para realizar la carga.

18) Respecto a los mailboxes…

a- Siempre tienen capacidad infinita.


b- La operación “receive” es siempre bloqueante.
c- La operación “send” es siempre síncrona.
d- Siempre tienen capacidad finita.
e- Son equivalentes a los semáforos de Dijkstra.

19) Respecto a las guardas de ADA…

a- Se evalúan cuando se alcanza el “select”.


b- Se evalúan cuando otro proceso intenta un rendez-vous.
c- Se evalúan en un hilo que ejecuta en el background, con baja prioridad.
d- Se evalúan a intervalos regulares según la interrupción del reloj.
e- Son equivalentes a las variables condition de monitores.

Que la fuerza te acompañe Página 31


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

20) Respecto a la administración del espacio libre en disco…

a- los vectores de bits son la forma más eficiente de administración de espacio libre, aún si están
almacenados en el almacenamiento secundario.
b- Utilizando una lista enlazada ordenada de bloques libres, obtenemos máxima performance
cuando es necesario agrupar bloques libres de disco.
c- La estrategia de agrupamiento de espacio libre, no permite encontrar rápidamente las direcciones de un
gran grupo de bloques libres.
d- Utilizando la estrategia de conteo, la lista de bloques libres será más larga a medida que la cuenta sea
mayor que 1.
e- c y d.

21) Un cache de procesador no sirve para

a- Aumentar la velocidad de ejecución.


b- Disminuir el tráfico en el bus de datos.
c- Mejorar la performance de un multiprocesador.
d- Disminuir la competencia por el código del núcleo.

22) Para implementar un sistema multiusuario seguro; en el diseño del procesador no se verifica que

a- Se incorporan niveles de privilegio de ejecución.


b- Las operaciones de entrada/salida serán definidas como privilegiadas.
c- Para cambiar de nivel de privilegio de ejecución se define una contraseña que solo conoceraán
los diseñadores del sistema operativo.
d- Resulta imprescindible que se incluya un mecanismo de protección de memoria.
e- a y b.

23) Para un sistema operativo de un multiprocesador con soporte de hebras (threads) de ejecución
se verifica que:

a- Dos hebras de un mismo proceso comparten la mayoría del espacio de memoria del proceso.
b- Dos hebras de un mismo proceso utilizan el mismo stack o pila de ejecución.
c- Un proceso tiene al menos una hebra.
d- De un proceso, solo debe ejecutar una hebra a la vez.
e- a y c.

24) En el diseño de sistemas operativos se incorporó el concepto de “Device Driver” o manejador,


para:

a- Disminuir el tamaño del sistema operativo.


b- Permitir incorporar nuevos dispositivos sin tener que modificar necesariamente el sistema
operativo.
c- Aumentar la portabilidad del sistema operativo.
d- Permitir que el código del manejador ejecute en modo “usuario”.
e- b y d.

25) Para el intérprete de comando de un sistema operativo multiusuario no se verifica que:

a- Es deseable que su imagen en memoria sea compartida por todos los usuarios que sea posible.
b- Debe existir un único intérprete de comandos.
c- Permitirá procesar series de comandos expresados en un lenguaje determinado.
d- Ejeuta en el contexto de seguridad de un usuario.
e- Habitualmente permite ejecutar comandos o programas en modo concurrente.

26) En relación con el “swap file” de la memoria virtual habitualmente se verifica que:

a- Es un archivo de características especiales que se debe administrar con procedimientos especiales.


b- Debe tener como mínimo el doble de tamaño que la memoria RAM.

Que la fuerza te acompañe Página 32


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

c- Sus características especiales se derivan del hecho que en la capa del sistema que implementa la
memoria virtual no necesariamente se dispone del file system.
d- a y c.
e- b y c.

27) En un sistema estructurado en base a microkernel no se verifica que:

a- Facilita la portabilidad del sistema operativo.


b- La interacción entre los procesos solamente puede ser a través del “núcleo”.
c- Para obtener servicios del sistema operativo se debe interactuar con procesos del sistema operativo.
d- Algunos servicios del sistema operativo se implementan en procesos que corren en modo no
privilegiado.
e- Mejora la performance respecto a las soluciones monolíticas.

2003 – Febrero
1) Si en un S.O. la implementación de los threads (hebras) se realizó a nivel de usuario, ¿qué
sucede con las restantes hebras de un proceso cuando una se bloquea como consecuencia de la
invocación de un servicio (system call) del S.O.?

Este es un modelo muchos-a-uno, el cual asigna múltiples hebras del nivel de usuario a una hebra del
kernel. La gestión de hebras se hace mediante la biblioteca de hebras en el espacio de usuario, por lo que
resulta eficiente, pero el proceso completo se bloquea si una hebra realiza una llamada bloqueante al
sistema. También, dado que sólo una hebra puede acceder al kernel cada vez, no podrán ejecutarse varias
hebras en paralelo sobre múltiples procesadores.

2) Se analiza un sistema de paginación por demanda y se observa que, con cierta carga de trabajo,
de la CPU se emplea un 15% y el disco de intercambio (swap) está ocupado un 92% del tiempo.
¿Qué acción tomaría para aumentar el rendimiento del sistema para esta misma carga de
trabajo?

La situación descripta se ajusta a la de sobrecarga del sistema de memoria virtual o “Thrashing”,


resultado de que la suma de los “Working Set” de los procesos activos es sensiblemente mayor que la
memoria real. La única acción posible sin variar la carga de trabajo es agregar más memoria real.

3) Describa brevemente en que consiste la técnica de swapping así como su oportunidad de uso.

Consiste en retirar a almacenamiento secundario casi la totalidad de las páginas de un proceso de


forma de generar una gran disponibilidad de memoria real -reducir la multiprogramación-. Esto es necesario,
en situaciones de ‘Thrashing’ o sobrecarga del sistema de memoria virtual.

4) El semáforo es un buen mecanismo para obtener la exclusión mutua entre dos procesos.
Explique brevemente porque si las operaciones P y V no se ejecutan en forma atómica puede no
proporcionarse la exclusión mutua.

wait(s)= si (s > 0) entonces


s := s - 1;
sino
detener_tarea;
fin si;

signal(s)= si (hay_tarea_detenida) entonces


reanudar_tarea;
sino
s := s + 1;
fin si;

Semáforos no binarios:

Que la fuerza te acompañe Página 33


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Tenemos una variable común s, en signal un incremento de s y en wait un decremento de s.


Hay problemas cuando una tarea incrementa concurrentemente con otra tarea una variable
común. Entonces si el incremento o decremento son divisibles hay problemas a que esa
instrucción puede consistir de varias instrucciones de máquina.

- Si suponemos que el incremento y el decremento de s son indivisibles, pero wait y signal


divisibles también hay problemas pues puede darse a la vez la pregunta del valor de s y el
decremento/incremento de la variable. Entonces puede darle que s es mayor que cero y a la
vez estarse decrementando y quedar menor que cero cuando va a ejecutar la opción del if.

Otra forma de verlo es haciendo el entrelazado de wait con wait, wait con signal o signal con signal.

5) Un proceso A recibe datos por la red y lo escribe en una zona de memoria. Un proceso B debe
imprimir por pantalla cada uno de los datos recibidos por A. Explique si el siguiente código
resuelve el problema.

Semaphore ready = 0; While(TRUE) {


Semaphore go = 0; P(go);
While(TRUE) { Copiar_datos();
Leer_red(); V(ready);
v(go); Imprimir();
poner_datos(); }
P(ready);
}

No lo resuelve
Podría ocurrir que Copiar_datos se ejecutara a la vez e incluso antes que poner_datos
Por ejemplo la primera vez podría darse esta secuencia de ejecución:
V(go)
P(go)
Copiar_datos()
poner_datos

6) En la gestión de memoria, ¿qué problemas plantea el algoritmo de búsqueda de bloques libres


Best Fit?

Incrementa el consumo de CPU en ocasión de la búsqueda y tiende a generar bloques libres


extremadamente pequeños y escasamente reusables.

7) Dado un sistema con paginación, donde la memoria tiene un ciclo de acceso de 200ns y hay una
probabilidad del 50% de hallar en el cache del procesador la entrada correspondiente en la tabla
de traducción de páginas. Indique la velocidad promedio de acceso a memoria.

La velocidad promedio de acceso a memoria será de 300 n/s.


Si hallamos el descriptor en el TLB => un acceso a memoria aplicable al 50% de los casos.
Si no hallamos el descriptor en el TLB => 2 accesos a memoria aplicable al 50% de los casos.
Como la probabilidad de hallar en el TLB el descriptor es del 50 %, entonces T = 0.5 * 200 + 0.5 * 400 =
300

8) Demuestre la verdad o falsedad de cada uno de los siguientes enunciados:

i) Las cuatro condiciones necesarias para el bloqueo mutuo son también suficientes si existe
solo un recurso de cada uno de los tipos implicados en la espera circular.

Verdadera
Dada la definición de grafo de asignación de recursos, puede mostrarse fácilmente que si el grafo
contiene un ciclo y cada tipo de recursos tiene exactamente una instancia, entonces un ciclo implica que se
ha producido un bloqueo mutuo.
En otras palabras, si todos tienen recursos asignados y están esperando por otros en una cola circular,
(no pudiendo ni compartir los recursos ni quitársele la asignación a ningún proceso), entonces no van a

Que la fuerza te acompañe Página 34


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

poder liberar sus recursos hasta tanto no obtengan el recurso que esperan, que no será liberado hasta que
alguien de la cadena desista o libere su recurso. Como esto no sucederá (porque no puede quitársele el
recurso) entonces quedarán esperando eternamente.

ii) las cuatro condiciones necesarias para un bloqueo mutuo son también suficientes si existen
varios recursos de cada uno de los tipos implicados en la espera circular.

Falsa
Esto puede verse fácilmente con el siguiente contraejemplo:

Aunque aquí hay un ciclo y se cumplen las 4 condiciones necesarias, cuando P3 libere una de las
instancias de R1, dejará de existir el ciclo y allí se verá claramente que no hay bloqueo mutuo, pues ahora
se le puede asignar a P2 una instancia de R1.

9) Compare el uso directo de instrucciones tipo Test&Set con el uso de semáforos

Test&Set Semáforo
Requiere sólo soporte de hardware Requiere soporte del Sistema Operativo y Hardware
Se produce espera ocupada Procesos esperan en estado bloqueado
Mecanismo de bajo nivel Mecanismo de mayor nivel (llamada al(instrucción
No permite priorizar las esperas de máquina) sistema)
Dependiente de la arquitectura Procesos bloqueados pueden priorizarse
Dependiente del sistema operativo (más del
procesador portable)

10) Especifique los requerimientos de hardware para soportar eficientemente y en modo protegido
un esquema de segmentación de memoria.

El procesador deberá contar con:


- Diferentes niveles de ejecución de instrucciones según el esquema habitual.

- Instrucciones privilegiadas y protegidas que entre otros cometidos permitan asegurar la


integridad de los descriptores.

- El direccionamiento del espacio de memoria deberá ser a través del uso de descriptores
protegidos. Los mismos deberán contar también con la indicación del largo del segmento,
debiéndose producir una excepción en ocasión de indexar un descriptor con un valor superior a
éste.

Que la fuerza te acompañe Página 35


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2003 – Marzo
1) Comente y explique diferencias entre las formas de planificación de disco siguientes: FCFS,
SSTF, SCAN y C-SCAN.

FCFS ( First Come First Served )


- Servicio por orden de llegada .
- Hay un mayor movimiento total de la cabeza que da menor desempeño.

La primer solicitud que llega es la primera en ser atendida, por lo que al acumularse solicitudes, esta
implementación funciona como una cola común. Es el algoritmo más justo, pero no proporciona el
servicio más rápido. Es también la forma más sencilla de implementación.

SSTF ( Shortest Seek Time First )


- Se busca aquel que implique un tiempo más corto dada la posición actual de la cabeza.
- Hay que tomar alguna política adicional para evitar posposición indefinida.
- Mejor tiempo que FCFS, pero no es óptimo.

Atiende las solicitudes cercanas a la posición actual de la cabeza antes de mover a la cabeza a la
posición más lejana para atender otras solicitudes. En un gran conjunto de solicitudes, la cabeza del
disco realiza menos movimientos, pero tiene el inconveniente que puede causar inanición de
algunas solicitudes, si bien mejora FCFS no es óptimo.

SCAN
- El brazo del disco parte de un extremo del disco, y se mueve hacia el otro, atendiendo las
solicitudes correspondientes a cada cilindro. Cuando llega al otro extremo del disco, invierte la
búsqueda.
- Desventaja: cuando la cabeza “da la vuelta” tiene pocas solicitudes para atender, pues sigue su
recorrida en los cilindros que visitó más recientemente. La mayoría de las solicitudes pendientes
estarán en los útimos cilindros a recorrer.
- Redunda en un tiempo de espera no uniforme.

También llamado el algoritmo del elevador. En este algoritmo, el brazo del disco va desde un
extremo al otro del disco atendiendo las solicitudes a medida que llega a cada cilindro, hasta llegar
al otro extremo, donde invierte la dirección de movimiento de la cabeza, continuando la atención.

C-SCAN
- Variante del anterior. Soluciona el problema de posicionamiento de éste, moviéndose siempre al
cilindro inicial luego de visitarlos a todos.

También llamado SCAN circular. Esta planificación está diseñada para dar un tiempo de espera
más uniforme. Al igual que SCAN se mueve la cabeza del disco de un extremo al otro, atendiendo
las solicitudes en el camino, solo que cuando llega al otro extremo, regresa de inmediato al
primcipio del disco sin atender solicitudes. Esto se hace ya que luego del cambio de dirección hay
pocas solicitudes inmediatamente después de la cabeza (ya que hace poco se atendieron esos
cilindros) y la mayor densidad de solicitudes se encuentra en el otro extremo del disco.

2) ¿Utilizaría el método de asignación enlazada en un sistema donde la mayoría de los accesos no


son secuenciales? Justifique su respuesta.

No, el acceso al i-ésimo bloque de un archivo puede requerir i lecturas de disco, siguiendo los punteros
hasta llegar al bloque destino.

3) En el contexto de la administración del espacio libre de disco, comente que ventajas y


desventajas tienen los mapas de bits.

Ventaja:
- Resulta sencillo y eficiente encontrar n bloques libres consecutivos en el disco, sobretodo en
computadoras que tienen instrucciones de manipulación de bits, que pueden usarse

Que la fuerza te acompañe Página 36


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

eficazmente para este fin: por ejemplo una instrucción que dado un registro devuelva la posición
del primer bit que tenga 1.
Desventaja:
- no son eficientes si para la mayoría de los accesos no se conserva todo el mapa en memoria
principal. Esto es razonable sólo si el disco no es de gran tamaño.

4) ¿Que es y para que sirve la TLB y que optimización podría utilizarse a nivel de hardware para
optimizar su utilización?

Def 1. Wikipedia

Translation Lookaside Buffer (TLB) es una memoria caché administrada por la MMU, que contiene
partes de la tabla de paginación, es decir, relaciones entre direcciones virtuales y reales. Posee un número
fijo de entradas y se utiliza para obtener la traducción rápida de direcciones. Si no existe una entrada
buscada, se deberá revisar la tabla de paginación y tardará varios ciclos más, sobre todo si la página que
contiene la dirección buscada no está en memoria primaria (véase memoria virtual). Si en la tabla de
paginación no se encuentra la dirección buscada, saltará una interrupción conocida como fallo de página.

- Funcionamiento:
El TLB hace referencia a direcciones físicas en su tabla. Puede residir entre la CPU y la caché
de la misma o entre esta caché y la unidad de memoria primaria. Esto depende de si la caché utiliza
direccionamiento físico o virtual. Si la caché se direcciona de manera virtual, las peticiones se
envían directamente de la CPU a la caché, la cual accede al TLB cuando es necesario. Si la caché
se direcciona de manera física, la CPU realiza una búsqueda en el TLB con cada operación de
memoria, y la dirección física resultante es enviada a la caché. Existen pros y contras en ambas
implementaciones.

Una optimización común para las cachés direccionadas de manera física es realizar una
búsqueda en el TLB en paralelo con el acceso a caché. Los bits de orden más bajo de cualquier
dirección virtual (por ejemplo en un sistema de memoria virtual que tiene páginas de 4KB, los 12 bits
más bajos de la dirección virtual) no cambian en la traducción de dirección virtual a física. Durante
un acceso a caché se realizan dos acciones: Se utiliza un índice para encontrar una entrada en el
sistema de datos de la caché, y a continuación las etiquetas de la línea encontrada se comparan. Si
la caché está estructurada de tal manera que pueda ser indexada utilizando solo los bits que no
cambian en la traducción, la caché puede realizar su operación de "indexación" mientras el TLB
traduce la parte alta de la dirección. Entonces, la dirección traducida del TLB es enviada a la caché.
La caché realiza una comparación de etiquetas para determinar si este acceso ha sido un acierto o
un fallo.

- Fallo:
En las arquitecturas modernas se pueden observar dos métodos de tratar un fallo de TLB.

Con el manejo hardware del TLB, la propia CPU comprueba las tablas de paginación para ver si
hay alguna entrada válida para la dirección virtual especificada. Si la entrada existe, se lleva a la
TLB y se reintenta el acceso; esta vez el acceso será un acierto, y el programa podrá proceder con
normalidad. Si la CPU no encuentra una entrada válida para la dirección virtual en las tablas de
página, se genera una excepción de fallo de página, la cual deberá manejar el sistema operativo. El
manejo de los fallos de página normalmente implica llevar los datos pedidos a la memoria física,
generando una entrada en la tabla de paginación para mapear la dirección virtual que faltaba para
corregir la dirección física, y reiniciar el programa.

Con el manejo software de las TLB, un fallo genera una excepción "fallo de TLB", y el sistema
operativo debe acceder a las tablas de paginación y realizar la traducción por software. Entonces, el
sistema operativo carga la traducción en el TLB y reinicia el programa desde la instrucción que
causó el fallo. Como en el sistema de manejo hardware, si el SO no encuentra una traducción válida
en las tablas, ocurre un fallo de página y el SO deberá manejarlo de la manera correspondiente.

Que la fuerza te acompañe Página 37


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Def 2.
La TLB ( Translation Look-aside Buffer ) es un conjunto de registros construidos con memoria de alta
velocidad que, dado un número de página se compara simultáneamente con todas las entradas que
contiene y si se encuentra el número de marco correspondiente, entonces se devuelve.

Es usado a modo de caché para mantener algunas de las entradas de la tabla de páginas.

A diferencia de la tabla de páginas tradicional, en gral. se evita tener dos accesos a memoria ( el acceso
a la tabla y el acceso efectivo ) para acceder a una localidad.

A nivel de hardware se puede optimizar haciendo que la MMU cargue en la TLB una entrada, luego de
resolverla ( ej: SPARC, 80x86 ), en vez de delegarlo al sistema para que lo haga a nivel de software ( ej:
MIPS ).

5) Explique los requerimientos de hardware y software necesarios para soportar un mecanismo de


segmentación. ¿Por qué seria bueno utilizar este mecanismo?

La segmentación es un esquema de gestión de memoria que soporta la visión del usuario de


lamemoria. Un espacio lógico de direcciones es una colección de segmentos y cada segmento tiene un
nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como el desplazamiento
dentro del mismo. El usuario especifica, por tanto, cada dirección proporcionando dos valores: un nombre
de segmento y un desplazamiento.

Aunque el usuario puede ahora hacer referencia a los objetos de programa utilizando una dirección
bidimensional, la memoria física real continúa siendo, por supuesto, una secuencia unidimensional de bytes.
Por tanto, debemos definir una implementación para mapear las direcciones bidimensionales definidas por
el usuario sobre las direcciones físicas unidimensionales. Este mapeo se lleva a cabo mediante una Tabla
de segmentos. Cada entrada de la tabla de segmentos tiene una dirección base del segmento y un límite
del segmento. La dirección base del segmento contiene la dirección física inicial del lugar donde el
segmento reside dentro de la memoria, mientras que el límite del segmento especifica la longitud de éste.

Se requiere una tabla de segmentos o descriptores usada para mapear las direcciones virtuales (
segmento, offset ) en direcciones físicas. La tabla debe mapear en sí números de segmento en el límite y
base de cada uno. Si se mantiene en memoria, debe mantenerse registros base y límite de la tabla.

Debe verificarse que el offset esté entre ambos, o generar una trap.

Este mecanismo es bueno porque permite la protección de segmentos, si se utilizan bits de protección
asociados a cada entrada de la tabla. El hardware los consultará para evitar accesos ilegales a memoria (
ej: escribir en un segmento de sólo lectura ). Habitualmente en el segmento se agrega un puntero inverso
hacia la tabla. Además, esta forma de manejo de memoria, tiene similaridad con la forma que el usuario
imagina la distribución de la memoria (es más intuitiva).

6) ¿Cómo resolvería ud., utilizando el entorno de (5), la necesidad de compartir segmentos entre
procesos?

La segmentación permite el compartimiento de código o datos entre distintos procesos de manera más
natural que paginación. Para los segmentos de código se comparte el diccionario, para los segmentos de
datos las alternativas son:
i. Sólo un descriptor apunta la segmento y otros procesos cuentan con copias que apuntan al principal
(dando un nivel de indirección ).
ii. Que hayan descriptores adicionales que apunten al original.

7) ¿Cómo implementaría la reorganización de la memoria contemplando (6) y en un ambiente de


multiprocesadores?

Ante la necesidad de reorganizar memoria, con la alternativa (6.i), se debe bloquear el descriptor
original, se desplaza el segmento y luego se actualiza el descriptor, pues en el momento de hacerlo puede
haber otro proceso ejecutándose.

Que la fuerza te acompañe Página 38


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Con la alternativa (7.ii) se debe hacer lo mismo, pero para todo descriptor, debiendo realizar un scan de
los diccionarios que potencialmente lo referencien, buscando las copias.

8) ¿Por que es necesario contar con dos modos de ejecución distintos como ser modo supervisor
y modo usuario?. Explique en detalle los procedimientos que permiten garantizar la integridad
de un sistema operativo multiusuario.

Para asegurar la ausencia de inteferencias entre procesos, en particular la memoria en un ambiente de


multiprogramación, donde es compartida entre distintos programas y el mismo sistema. Es posible
definiendo un conjunto de instrucciones privilegiadas que el hardware permite ejecutar sólo en modo
supervisor, y un protocolo que para aumentar el nivel de ejecución transfiere el control a código autenticado
del kernel.

9) ¿Qué ventaja o desventaja tiene soportar threads a nivel de usuario en un multiprocesador?

La desventaja es que el sistema sólo gestiona a nivel de tareas o procesos, no de hilos dentro de
tareas, y por tanto no les asigna distintos procesadores a hilos distintos de una misma tarea.

Este modelo, asigna a todas los threads de un proceso de usuario, un único thread a nivel del núcleo;
el problema mayor que presenta este modelo es que como solamente tiene asignado un thread en el
núcleo, si un thread de usuario realiza una llamada bloqueante al sistema, el proceso completo se
bloqueará. Por otra parte, dado que solamente una hebra puede acceder al kernel cada vez, no podrán
ejecutarse varios threads en paralelo sobre múltiples procesadores.

Por otra parte, el cambio de contexto y la seguridad, se encargan librerías a nivel de usuario, lo que lo
hace más seguro, así como también ahorra en la información para un cambio de contexto.

10) Dé una desventaja de soportar threads a nivel de núcleo, en comparación a hacerlo a nivel de
usuario.

Para el cambio de contexto es necesario llamar al sistema, lo que la hace más lento que la conmutación
entre hilos a nivel de usuario.

11) Suponga que usted debe procesar una matriz de información, de N x N, donde N es muy grande.
Discuta la conveniencia de utilizar tareas multihiladas o procesos para realizar esta acción.

Es más conveniente el uso de threads colocando la matriz en el espacio común de direcciones, como
una variable global. Es razonable esperar que la aplicación que procesa la matriz no requiera proteger sus
hilos entre sí, y que en cambio cada thread deba acceder a toda la matriz.

Si se resuelve mediante procesos, debería emplearse un mecanismo de comunicación del sistema, con
la pérdida de desempeño que cada llamada implica.

12) ¿Qué es un planificador preemptivo?

Es un planificador que asegura que el proceso en ejecución es el de mayor prioridad en el sistema. Esto
implica que cuando un proceso A con prioridad p1 está listo para ejecutar, y un proceso B con prioridad p2 (
con p1 > p2 ) está siendo ejecutado, el planificador debe quitarle el procesador a B y despachar A.

13) Discuta sobre la adecuación de un planificador no-preemptivo cuando se consideran


aplicaciones con restricciones de tiempo real.

Un planificador no-preemptivo no es adecuado cuando se consideran aplicaciones de tiempo real,


porque estas requieren garantías de tiempo de servicio, lo cual sólo es posible si se usa un planificador
preemptivo.

Que la fuerza te acompañe Página 39


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

14) Describa el funcionamiento de los planificadores a corto, mediano y largo plazo.

Planificador a largo plazo:


- Común en un sistema por lotes, donde no es posible ejecutar inmediatamente todos los trabajos
pendientes.
- Elige entre los procesos almacenados en un dispositivo de almacenamiento para pasarlo a la
ready queue.
- Controla el nivel de multiprogramación.

Planificador a corto plazo:


- Escoge entre los procesos listos uno para asignarle CPU.
- Ejecuta con frecuencia mucho mayor a la del planificador a largo plazo.

Planificador a mediano plazo:


- Común en los sistemas de tiempo compartido.
- Toma las decisiones de swapping.

15) En el contexto de deadlock, explique la diferencia entre:

- prevención
- detección con recuperación del mismo

La prevención consiste en asegurarse de que al menos una de las condiciones necesarias de


deadlock no se cumpla. Un ejemplo es prevenir una espera circular imponiendo una ordenación total de
todos los tipos de recursos, siguiendo un orden de numeración ascendente, y forzando que para obtener
unidades de un mismo recurso sea emitida una única solicitud.

La detección y recuperación no evita el deadlock, sino que examina el sistema para determinar si ha
ocurrido, para recuperarse del mismo, ya sea terminando uno o más procesos involucrados, o expropiando
recursos.

16) ¿Que medidas de prevención de deadlock conoce?

i) Evitar retención y espera,


- Forzando a que los procesos soliciten todos sus recursos y le sean asignados antes de que
comience su ejecución.
- Evitando que los procesos soliciten recursos sólo cuando no tienen ninguno asignado.
- Evitar no expropiación,
- Forzando a que si un proceso que retiene algún recurso solicita otro que no se le puede asignar
de inmediato, entonces se le expropian todos los que ya tiene.
- Si un proceso (A) solicita un recurso y no está disponible, sino que está asignado a otro proceso
(B) que está esperando recursos adicionales, entonces se le quita y se le asigna a (A).

ii) Evitar la condición de mutua exclusión,


- Por ejemplo utilizando un spooler para el acceso a una impresora.
- Evitar espera circular, la mencionada en (i).
- Exigir que cuando un proceso solicite un ejemplar de recurso libere todo otro recurso que sea
mayor en el ordenamiento definido en (i).

17) Explique las dificultades asociadas a la expropiación de recursos.

- Debe haber un critero apropiado para seleccionar el proceso al que se le expropiará.


- Debe determinarse el orden de expropiación para minimizar el costo.
- Es difícil hacer retroceder el proceso al que se le expropia hasta un estado seguro y reiniciarlo.
Casi siempre debe abortarse, o el el sistema debe conservar más información de estado de los
procesos.
- Debe asegurarse que los recursos que se expropien no sean siempre los de un mismo proceso,
posponiendo su terminación en forma indefinida.

Que la fuerza te acompañe Página 40


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

18) Que problemas presenta el algoritmo de Dekker para mutuo exclusión de procesos.

Satisface los requisitos para el problema de la sección crítica, pero presenta busy-waiting, pues espera
el cambio de una flag que indica qué proceso puede acceder a su sección crítica.

Sólo es aplicable para 2 procesos y no es facilmente generalizable para N procesos.

2003 – Abril
1) Describa brevemente las siguientes técnicas de asignación de memoria: First Fit, Best Fit, Worst
Fit. Indique las ventajas y desventajas de cada una de ellas

First Fit
Asigna el primer espacio que tenga tamaño suficiente. La búsqueda puede comenzar en el inicio de
la lista de espacios, o donde terminó la búsqueda anterior. La búsqueda termina al encontrar el primero de
tamaño suficiente. Es el más rápido de los 3, si bien en la utilización de almacenamiento es comparable a
Best Fit.

Best Fit
Asigna el menor espacio de tamaño suficiente. Hay un mayor costo en la búsqueda o en la inserción
según se mantenga o no una lista ordenada de espacios libres. Produce el fragmento sobrante más
pequeño, que tendrá una escasa probabilidad de volver a ser reusado.

Worst Fit
Asigna el hueco más grande, a fin de evitar el problema anterior. Sin embargo sigue siendo
ineficiente como Best Fit.

2) Describa brevemente los siguientes algoritmos de reemplazo de paginas en el contexto de


memoria virtual paginada: FIFO, LRU, Segunda-Oportunidad y el “algoritmo optimo”. Indique
justificando adecuadamente en cada caso, si su uso es o no frecuente.

FIFO
Asocia (en forma explícita o no) a cada página el instante en que se trajo a memoria, eligiendo la
más antigua cuando hay que hacer un reemplazo. Es fácil de implementar, pero su rendimiento no siempre
es bueno. Un ejemplo es cuando se reemplaza una página traída hace mucho tiempo, pero de uso
intensivo. También presenta la anomalía de Belady: con ciertos patrones de referencias, la tasa de fallos de
página puede aumentar al incrementarse el número de marcos asignados, en contra de lo esperado.

OPTIMO
Busca reemplazar la página que no se usará durante el mayor período de tiempo, garantizando la
menor tasa de fallas de páginas posible, para un número fijo de marcos. Es difícil de implementar, pues se
requiere un conocimiento futuro de las referencias a páginas. Se utiliza (más precisamente sus resultados
esperados) para estudios comparativos con otros algoritmos no óptimos.

LRU
Reemplaza la página que no se ha usado durante el mayor periodo de tiempo, basándose en el
pasado reciente para suponer cuál será la página que no se usuará en el futuro cercano. Es utilizado con
frecuencia, y existen 2 implementaciones:

i. Con un contador, que es incrementado con cada referencia a alguna página de memoria. cada vez
que se referencia una página en particular, el contador se copia a un registro asociado a la misma.
- Debe tratarse el desbordamiento del contador.
- Este esquema requiere una búsqueda en toda la tabla de páginas, a fin de encontrar la que
tiene el menor valor.
- Observar que requiere apoyo de hardware.
ii. Mantener una lista doblemente encadenada, extrayendo la página más recientemente utilizada.

Que la fuerza te acompañe Página 41


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

LRU no presenta la anomalía de Belady. (Pertenece a una clase llamada algoritmos de pila: las páginas
residentes en memoria para un sistema con N marcos son siempre un subconjunto de las que habría con N
+ 1)

SEGUNDA OPORTUNIDAD
Es una variante del algoritmo FIFO, que evita que una página muy utilizada sea eliminada por llevar
mucho tiempo en memoria. Se mantiene un bit por página, que es seteado en 1 con cada referencia, y
actualizado por el sistema a intervalos regulares. Se recorre la lista de páginas examinando estos bits de
referencia. Si el bit de una página está en 1 se le da una segunda oportunidad, poniéndolo en 0 y
enviándolo al final de la lista (como si recién hubiera llegado a memoria). La búsqueda termina cuando se
encuentra el primer bit en 0, en cuyo caso se reemplaza la página.

3) ¿Cuando ocurre un fallo de pagina?. Explique las acciones del sistema operativo frente a un
fallo.

En el contexto de un sistema de paginación por demanda, sucede cuando un proceso intenta


referenciar una página que no se incorporó a memoria. El hardware de paginación, al traducir la dirección,
observa que la entrada correspondiente de la tabla tiene indicada esa página como inválida, y genera una
trap para el sistema operativo (la instrucción que hizo la referencia no se completa).
Entonces el sistema

i. determina si la referencia memoria fue válida o inválida (por ejemplo por indizar mal un vector)
ii. si fue una referencia válida, en vez de abortar el proceso, se debe localizar en disco la página
buscada
iii. buscar un marco libre
- si lo hay, lo selecciona
- sino, aplica algoritmo de reemplazo para seleccionar un página a quitar, la guarda en disco y
refleja el cambio en tabla de páginas.
iv. mover la página deseada al nuevo marco libre, reflejar cambio en tabla de páginas
v. reejecutar la instrucción que provocó el fallo (el proceso no necesariamente cambio de estado).

Obs: Se planifica (CPU) en las transferencias entre disco y memoria de la página seleccionada para
reemplazo y de la página entrante de acuerdo a las reglas habituales para E/S.

4) Describa las acciones del kernel de un sistema operativo cuando ocurre un cambio de contexto:
i. entre hilos
ii. entre procesos

Para el caso de un cambio de contexto entre hilos de un mismo proceso, el sistema operativo debe
salvar los registros, el contador de programa y el registro de pila del hilo en el PCB. Sin embargo no se
requiere ninguna otra gestión relativa al espacio de memoria u otros recursos, ya que el contexto es idéntico
para todos los hilos del proceso o tarea que contiene a los hilos. De acuerdo a lo expuesto, para un proceso
activo, el planificador podría priorizar el despacho de hebras del mismo en el procesador o CPU corriente.
Si los hilos pertenecen a tareas o procesos diferentes, obviamente se hace necesario conmutar el contexto
de acuerdo a la técnica habitual.

Para el caso de cambio de contexto entre procesos diferentes, el sistema operativo debe realizar las
mismas tareas que con lo hilos, pero además debe movilizar información relativa a los recursos asignados al
procesos, como ser bloques de memoria o disco asignado y procesos descendientes del proceso actual.

5) En el contexto de planificación de procesos, describa los posibles estados en los cuales un


proceso pueda encontrarse.

Ver exámen Febrero 1998 (completo).

En ejecución
El proceso tiene asignado el procesador, y el flujo de instrucciones del proceso se está ejecutando.
Bloqueado
El proceso está en espera de que se le asigne algún recurso físico (como el fin de una E/S) o lógico.
Listo

Que la fuerza te acompañe Página 42


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

El proceso no está bloqueado, sino compitiendo para que se le asigne un procesador y pasar a
estado de ejecución.
Suspendido
El proceso fue suspendido explícitamente, saliendo del estado listo o ejecutándose. Pasará al
estado listo (y será elegible para asignársele la CPU) cuando sea reanudado, también en forma explícita.
Bloqueado suspendido
Análogo al anterior, se da cuando se suspende un proceso que estaba bloqueado. Volverá al estado
bloqueado al ser reaunudado.

6) Describa detalladamente que es el PCB

Un PCB (Process Control Block) es una estructura de datos del sistema que representa un proceso,
almacenando información del mismo. Incluye

i. El estado del proceso (listo, en ejecución, etc.)


ii. El program counter, indicando la siguiente instrucción a ejecutar
iii. Los registros, que son guardados junto con el PC por cada interrupción.
iv. Información adicional para la planificación (prioridades, punteros a las colas donde se pudiera
encontrar el proceso, según su estado, etc.)
v. Información de administración de memoria (registros límites, tablas de páginas)
vi. Información contable: número de proceso, utilización de CPU, tiempo de creación, etc.
vii. Información de E/S: archivos abiertos, E/S pendientes.
viii. Referencias a la genealogía o contexto de procesos, hijos, padre, etc.

Ver también pregunta 2 exámen Diciembre 1999

7) Describa las principales características de los siguientes tipos de sistemas operativos:


i. Por lotes
ii. Interactivos
iii. De tiempo compartido
iv. De tiempo real
v. Distribuidos

i. Por lotes
Recibe un flujo de trabajos separados, los ejecuta y vuelca los resultados de los mismos, devolviéndolos
por una impresora, medio de almacenamiento o similar. Se caracterizan por la ausencia de interacción entre
el usuario y el trabajo en tanto que este se ejecuta. El término <<por lotes>> se refiere a un modelo en que
los trabajos similares se agrupaban en lotes, a fin de reducir el tiempo total dedicado a preparar el
computador entre distintos trabajos. Los sistemas modernos no presentan esta limitación.

ii. Interactivos
Provee una comunicación en línea entre el usuario y el sistema, donde el usuario da instrucciones al
sistema o a las aplicaciones, y recibe una respuesta a la misma.

iii. De tiempo compartido


Es un caso particular de la multiprogramación, donde la CPU es compartida entre los procesos con una
frecuencia alta, presentándose al usuario como si este tuviera su propio computador.

iv. De tiempo real


En general se usan para el control de aplicaciones dedicadas. Tiene restricciones temporales bien
definidas, por lo que si el procesamiento no se lleva a cabo dentro de límites esperados, el sistema falla.

v. Distribuidos
Son un conjunto de computadoras independientes (desacopladas en cuanto a hardware, no comparten
memoria ni reloj) comunicadas por una red, que se presentan al usuario en la mayor medida que sea
posible, como un único sistema. Su motivación son compartir recursos (mejorar la utilización) y aumentar
tanto la escalabilidad como la confiabilidad.

8) En el contexto de un sistema operativo diseñado en capas, ¿ Por que el soporte para la memoria
virtual no utiliza las primitivas de sistemas de archivos?

Que la fuerza te acompañe Página 43


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

En un sistema operativo correctamente estructurado, habitualmente el filesystem está en una capa


superior a la de gestión de memoria, hecho que inhibe la posibilidad de uso del mismo para la
implementación de la memoria virtual.

En algún escenario, el uso de las primitivas del filesystem podría implicar un mayor overhead. Si bien
esta razón como tal resulta invalida, ya que la corrección debería ser el hacer eficiente el filesystem.

9) Cual es la diferencia entre un sistema monolítico y uno basado en microkernel. Indique ventajas
y desventajas.

Un sistema monolítico no tiene una estructura bien integrada. Todas las funcionalidades del sistema se
ejecutan en modo monitor. Son difíciles de extender, mantener y depurar.

Los sistemas con microkernel son sistemas estructurados, donde la mayoría de los servicios y funciones
se implementan en módulos, dejándose sólo una pequeña parte del sistema (el microkernel) que ejecute en
modo monitor.

En general el microkernel se limita a gestión de interrupciones, gestión básica de procesos, gestión de


memoria a bajo nivel y comunicación entre procesos.Sistemas de este tipo, son mas portables y escalables
que los convencionales. No obstante, debido a que los distintos componentes ejecutan en espacios de
direccionamiento distintos, se presenta un overhead mayor al de los sistemas monolíticos.

En el contexto del algoritmo del banquero:


10) ¿ Que ventajas y desventajas presenta ?

El algoritmo del banquero es aplicable a los sistemas de asignación de recursos con múltiples
instancias de cada tipo de recurso, pero es menos eficiente que el método basado en el grafo de
asignación de recursos.

Descripción del algoritmo

Cuando entra en el sistema un proceso nuevo, debe declarar el número máximo de instancias de cada
tipo de recurso que puede necesitar. Este número no puede exceder el número total de recursos del
sistema. Cuando un usuario solicita un conjunto de recursos, el sistema debe determinar si la asignación de
dichos recursos dejará al sistema en un estado seguro. En caso afirmativo, los recursos se asignarán; en
caso contrario, el proceso tendrá que esperar hasta que los otros procesos actualmente trabajando en el
sistema liberen los suficientes recursos.

Deben utilizarse varias estructuras de datos para implementar el algoritmo del banquero. Estas
estructuras de datos codifican el estado del sistema de asignación de recursos. Sea n el número de
procesos en el sistema y m el número de tipos de recursos. Necesitamos las siguientes estructuras:
- Available (disponibles): un vector de longitud m que indica el número de recursos disponibles
de cada tipo. Si Available[j] es igual a k, existen k instancias del tipo de recurso Ri.
- Max: Una matriz nxm que indica la demanda máxima de cada proceso. Si Max[I][j] es igual a k,
entonces el proceso Pi puede solicitar como máximo k instancias del tipo de recurso Ri.
- Allocation (asignación): Una matriz nxm que define el número de recursos de cada tipo
actualmente asignados a cada proceso. Si Allocation[I][j] es igual a k, entonces el proceso i
tiene asignadas actualmente k instancias del tipo de recurso Rj.
- Need (necesidad): Una matriz nxm que indica la necesidad restante de recursos de cada
proceso. Si Need[I][j] es igual a k, entonces el proceso Pi puede necesitar k instancias más de
algún tipo de recurso Rj para completar sus tareas. Observar que Need[I][j] = Max[I][j] –
Allocation[I][j].

Estas estructuras de datos varían con el tiempo, tanto en tamaño como en valor.

Considere la siguiente situación:

Que la fuerza te acompañe Página 44


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Asignado Máximo Disponible


A B C D A B C D A B C D
P0 0 0 1 2 0 0 1 2 1 5 2 0
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 6 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6

i. ¿ Esta el sistema en estado seguro ? Justifique su respuesta.


ii. Si para P1 llega el requerimiento (0,4,2,0), ¿ puede ser satisfecho inmediatamente ? Justifique su
respuesta

10.i) Verificamos si el sistema esta en un estado seguro aplicando el algoritmo


Trabajo = (1,5,2,0)
Fin = (false, false, false, false, false)
Necesidad = Máximo – Asignado =
ABCD
P0 0 0 0 0
P1 0 7 5 0
P2 1 0 0 2
P3 0 0 2 0
P4 0 6 4 2
Iniciamos el algoritmo, buscando una secuencia que muestre si el sistema esta en estado seguro o no:

a- Elegimos P0, Necesidad 0 <= Trabajo


Trabajo = (1,5,2,0) + (0,0,1,2) = (1,5,3,2)
Fin = (true, false, false, false, false)
b- Elegimos P2, Necesidad2 <= Trabajo
Trabajo = (1,5,3,2) + (1,3,5,4) = (2,8,8,6)
Fin = (true, false, true, false, false)
c- Elegimos P3, Necesidad3 <= Trabajo
Trabajo = (2,8,8,6) + (0,6,3,2) = (2,14,11,8)
Fin = (true, false, true, true, false)
d- Elegimos P4, Necesidad4 <= Trabajo
Trabajo = (2,14,11,8) + (0,0,1,4) = (2,14,12,12)
Fin = (true, false, true, true, true)
e- Elegimos P1, Necesidad1 <= Trabajo
Trabajo = (2,14,12,12) + (1,0,0,0) = (3,14,12,12)
Fin = (true, true, true, true, true)

Como Fin[i] = true para toda i, entonces el sistema esta en estado seguro. La secuencia obtenida es <P0,
P2, P3, P4, P1>

10.ii) Verificamos si el sistema esta en un estado seguro luego de hacer la asignación pedida para
P1, (0,4,2,0). En este caso la situación es:

Trabajo = (1,5,2,0)
Fin = (false, false, false, false, false)
Necesidad = Máximo – Asignado =
ABC D
P0 0 0 0 0
P1 0 7 5 0
P2 1 0 0 2
P3 0 0 2 0
P4 0 6 4 2

Basta repetir el algoritmo anterior, dejando P1 para el final nuevamente. En este caso también se
cumple que Necesidad1 <= Trabajo por lo que llegamos nuevamente a la misma secuencia valida. El
sistema por tanto también esta en estado seguro.

Que la fuerza te acompañe Página 45


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2003 – Agosto
1) Describa los principios y beneficios en que se sustenta la multiprogramación, mencionando que
soporte de hardware requiere.

El objetivo de la multiprogramación es tener algún proceso en ejecución en todo momento, a fin de


aprovechar al máximo la CPU. El objetivo es conmutar la CPU entre procesos con tal frecuencia que los
usuarios puedan interactuar con cada programa durante su ejecución pensando que tienen la CPU para uso
exclusivo. En caso de un único CPU, solamente se ejecuta un proceso por vez. Un proceso entra a
ejecutarse y llega el momento en que tiene que hacer espera por un dispositivo de E/S por ejemplo, el CPU
está ocioso mientras espera que el proceso pueda usar el dispositivo para así finalmente resumir la
ejecución. Lo sistemas multiprogramados, evitan dicha espera de CPU ya que durante ese tiempo de
espera pasan a ejecutar otro proceso que se encuentre cargado en memoria principal, ocupando así al
computador.

Los beneficios más notorios de este sistema son los siguientes:


- Se cuenta con varios procesos ejecutando al mismo tiempo lo que maximiza la productividad
del sistema y la utilización de recursos.
- Aumenta el uso de la CPU.
- Permite el servicio interactivo simultáneo a varios usuarios de manera eficiente.
- Las direcciones de los procesos son relativas, el programador no se preocupa por saber dónde
estará elproceso dado que el sistema operativo es el que se encarga de convertir la dirección
lógica en física.
- Multiplexa recursos entre varios programas.

Los soportes de hardware requeridos son:

- Interrupción: No es más que una señal eléctrica que provoca que el contador del programa y el
estado del proceso en ejecución se salven en un lugar seguro de memoria, para, que a
continuación se cargue el contador de programa con una dirección fija de memoria donde reside
un programa del sistema operativo que gestiona la interrupción. Este programa ejecutará cierto
código para indicar al programa que esperaba la finalización de la operación bloqueante. Una
vez que este programa acaba su trabajo, ejecuta una operación de retorno de interrupción, la
cual restaura el contador de programa y el estado del procesador del programa interrumpido,
prosiguiendo así su ejecución sin que éste último sea consciente de que ha sido interrumpido.

- DMA: Cuando un dispositivo realiza una operación de E/S, por ejemplo, la información leída
pasa al buffer del controlador. Después, el programa que inició la lectura ejecuta ciertas
instrucciones para copiar esta información desde el buffer hacia la memoria principa. La copia
se realiza mediante un ciclo, copiando en cada iteración del ciclo un byte o palabra desde el
buffer del controlador a la memoria principal. En un controlador que disponga de DMA (Direct
Memory Access) la copia del buffer a memoria la realiza el propio controlador; para ello, el
programa ha de indicarle al controlador la dirección de memoria de inicio de la copia y el
número de bytes a copiar, esto lo hace en el momento de darle la orden de E/S, poniendo esta
información en algunos registros del controlador. Luego de generada la solicitud y grabados los
datos en los registros de la controladora, el procesador no interviene hasta que dicha operación
es finallizada.

2) Describa un sistema de planificación de procesos basado en colas multinivel. Indique que


ventajas y desventajas presenta.

Este metodo sirve especialmente para aquellas situaciones en las que los procesos pueden
clasificarse fácilmente en gurpos diferentes (procesos de primer plano – interactivos o procesos de
segundo plano – por lotes). Estos dos tipos de procesos tienen requisitos diferentes de tiempo de
respuesta y, por tanto, pueden tener distintas necesidades de planificación. Además, los procesos de
primer plano pueden tener prioridad (definida externamente) sobre los procesos de segundo plano.

Un algoritmo de planificación mediante colas multinivel divide la cola de procesos preparados en


varias colas distintas. Los procesos se asignan permanentemente a una cola, generalmente en función
de alguna propiedad del proceso, como por el tamaño de memoria, la prioridad del proceso o el tipo de

Que la fuerza te acompañe Página 46


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

proceso. Cada cola tiene su propio algoritmo de planificación. Por ejemplo pueden emplearse colas
distintas para los procesos de primer plano y de segundo plano. La cola de primer plano puede
planificarse mediante un algoritmo por turnos, mientras que para la cola de segundo plano puede
emplearse un algoritmo FCFS.

Además, debe definirse una planificación entre las colas, la cual suele implementarse como una
planificaición apropiativa y prioridad fija. Por ejemplo, la cola de procesos de primer plano puede tener
prioridad absoluta sobre la cola de procesos de segundo plano. Otra posibilidad consiste en repartir el
tiempo entre las colas; en este caso, cada cola obtiene una cierta porción de tiempo de CPU, con la que
puede entonces planificar sus distintos procesos.

Las principales ventajas de este método de asignación son las siguientes:


- Se puede diferenciar entre diferentees grupos de procesos, lo que permite darle prioridad a
cierto grupo sobre otros.
- Tiene una baja carga de trabajo de planificación.

Las principales desventajas son:


- Un proceso puede ser relegado indefinidamente si no se pueden terminar de procesar (o siguen
llegando procesos a colas con mayor prioridad.
- Es poco flexible, después que un proceso fue asignado a una cola, no podrá cambiarse a otra.

3) Describa las diferentes modalidades de implementación hilos en un sistema operativo indicando


que ventajas y desventajas presenta cada uno.

Hay básicamente tres implementaciones distintas para hilos o threads en un sistema operativo, las
cuales se detallan a continuación:

- Muchos-a-uno: El modelo muchos a uno asigna a múltiples


hilos del nivel de usuario únicamente un hilo del kernel. La
gestión de threads se hace mediante la biblioteca de threads en
el espacio de usuario, por lo que resulta eficiente, pero el
proceso completo se bloquea si una hebra realiza una llamada
bloqueante al sistema. También, dado que sólo un thread puede
acceder al kernel cada vez, no podrán ejecutarse varios threads
en paralelo sobre múltiples procesadores.

- Uno-a-uno: El modelo uno-a-uno asigna a cada hebra de


usuario una hebra del kernel. Proporciona una mayor
concurrencia que el modelo muchos-a-uno, permitiendo que
se ejecute otra hebra mientras una hebra hace una llamada
bloqueante al sistema; también permite que se ejecuten
múltiples hebras en paralelo sobre varios procesadores. El
único inconveniente de este modelo es que crear una hebra
de usuario requiere crear la correspondiente hebra del
kernel. Dado que la carga de trabajo administrativo para la
creación de hebras del kernel puede repercutir en el rendimiento de una aplicación, la mayoría
de las implementaciones de este modelo restringen el número de hebras soportadas por el
sistema. Este modelo es el implementado tanto por Linux (en todos sus sabores) y Windows
desde el 95.

- Muchos-a-muchos: Este modelo multiplexa muchas


hebras de usuario sobre un número menor o igual de
hebras del kernel. El número de hebras del kernel puede
ser específico de una determinada aplicación o de una
determinada máquina (pueden asignarse más hebras del
kernel a una aplicación en un sistema multiporcesador
que en uno de un solo procesador). Mientras que el
modelo muchos-a-uno permite al desarrollador crear
tantas hebras de usuario como desee, no se consigue una
concurrencia real, ya que el kernel solo puede planificar la

Que la fuerza te acompañe Página 47


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

ejecución de una hebra cada vez. El modelo uno-a-uno permite crear mayor concurrencia, pero
el desarrollador debe tener cuidado de no crear demasiadas hebras dentro de una misma
aplicación. El modelo muchos-a-muchos no sufre ninguno de los inconvenientes de los modelos
anteriores. Los desarrolladores pueden crear tantas hebras de usuario como sean necesarias y
las correspondientes hebras del kernel pueden ejecutarse en paralelo en un multiprocesador.
Asismismo, cuando una hebra realiza una llamada bloqueante al sistema, el kernel puede
planificar otra hebra para su ejecución.

4) En sistemas con hilos implementadas en el núcleo, un proceso multihilado, ¿cuántas pilas debe
tener?

Un hilo o thread es una unidad básica de utilización de


la CPU; comprende un ID de thread, un contador de
programa, un conjunto de registros y una pila. Comparte con
otras hebras que pertenecen al mismo proceso la sección
de código, la sección de datos y otros recursos del sistema
opertativo como los archivos abiertos y las señales.

Por lo tanto, un proceso multihilado con implementación


de hilo a nivel del núcleo debe tener una pila por cada
thread.

5) Describa los diferentes estados de un proceso, así como las principales colas asociadas al
planificador de los mismos.

Para la descripción de los diferentes estados de un


proceso, ver exámen Febrero 1998.

Los procesos, en los distintos estados que tienen,


son agrupados en listas o colas:

- Lista de procesos del sistema (job


queue): En esta lista están todos los
procesos del sistema. Al crearse un nuevo
proceso, se agrega el PCB a esta lista.
Cuando el proceso termina su ejecución es
borrado.
- Cola de procesos listos (ready queue):
Esta cola se compondrá de los procesos
que estén en estado listo -esperando por el
recurso procesador -. La estructura de esta
cola dependerá de la estrategia de
planificación utilizada.
- Cola de espera de dispositivos (device queue): Los procesos que esperan por un dispositivo
de E/S particular son agrupados en una lista específica al dispositivo. Cada dispositivo de E/S
tendrá su cola de espera.

6) Detalle y explique el cometido de los principales componentes del bloque descriptor de proceso
(PCB).

Ver pregunta 2 exámen Diciembre 1999.

Que la fuerza te acompañe Página 48


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2003 – Diciembre
1) Explique muy brevemente las condiciones necesarias para la existencia del bloqueo mutuo
(Deadlock) en sistemas donde exista solo una instancia de cada tipo de recurso ¿Cuales
condiciones debería agregar para que además de necesarias sean suficientes?

Las condiciones son:

- Exclusión mutua: al menos un recurso debe estar en modo no compartido; es decir, sólo un
proceso puede usarlo a la vez. Si otro proceso solicita el recurso, el proceso solicitante tendrá
que esperar hasta que el recurso sea liberado.

- Retención y espera: Un proceso debe estar reteniendo al menos un recurso y esperando para
adquirir otros recursos adicionales que actualmente estén retenidos por otros procesos.

- No apropiación: Los recursos no pueden ser desalojados (expropiados); es decir, un recurso


sólo puede ser liberado voluntariamente por el proceso que le retiene, después que dicho
proceso haya completado su tarea.

- Espera circular: Debe existir un conjunto {P0, P1, … , Pn} de procesos en espera, tal que Pi
esté esperando por un recurso que tiene asignado Pi+1 y Pn espera por un recurso de P0.

Es importante mencionar que deben darse estas cuatro condiciones para que se produzca un
deadlock. La condición de espera circular implica la condición de retención y espera, por lo que las
cuatro condiciones no son completamente independientes.

Si hay una sola instancia de cada tipo de recurso estas condiciones son necesarias y suficientes.

2) Que puede decir de las siguientes situaciones viendo los estados de las variables durante la
ejecución del algoritmo del banquero. Justifique la respuesta muy brevemente.

Caso1:
Matriz Asignación
210
120
020

Solicitud proceso 2
011

Matriz Disponibilidad:
121

Matriz Máximos:
211
141
040

La solicitud puede ser satisfecha manteniendo el sistema en un estado seguro.

Caso 2: Idem caso 1, pero la solicitud para el proceso 2 es :


101

El proceso 2 no puede realizar esa solicitud pues excedería su máximo predefinido.

3) ¿Que es un archivo?, ¿Y un sistema de archivos?

Un archivo es una colección de información relacionada, con un nombre, que se graba en


almacenamiento secundario. Desde el punto de vista del usuario, es la unidad más pequeña de
almacenamiento secundario lógico; en otras palabras, no pueden escribirse datos en el almacenamiento

Que la fuerza te acompañe Página 49


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

secundario a menos que éstos se encuentren dentro de un archivo. En general, un archivo es una
secuencia de bits, bytes, líneas o registros cuyo significado está definido por el creador y el usuario del
archivo. Por lo tanto, el concepto de archivo es extremadamente general.

Un sistema de archivos (filesystem), estructura la información guardada en una unidad de


almacenamiento (generalmente un disco duro), que luego será representada ya sea textual o
gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos poseen su propio
sistema de archivos.
Lo habitual es utilizar dispositivos de almacenamiento de datos que permiten el acceso a los datos
como una cadena de bloques de un mismo tamaño, a veces llamados sectores. El software del sistema
de archivos es responsible de la organización de estos sectores en archivos y directorios y mantiene un
registro de qué sectores pertenecen a que archivos y cuáles no han sido utilizados. En la práctica, un
sistema de archivos también puede ser utilizado para acceder a datos generados dinámicamente, como
los recibidos a través de una conexión de red.
Los sistemas de archivos tradicionales proveen métodos para crear, mover, renombrar y eliminar
tanto archivos como directorios.

4) Enumere al menos cinco atributos que deban conservarse para describir un archivo.

- Nombre: Por comodidad de sus usuarios humanos, y para referirnos a él utilizamos ese
nombre. Un nombre de archivo, usualmente una cadena de caracteres. Algunos sistemas
diferencian entre letras mayúsculas y minúsculas dentro de los nombres, mientras que otros
sistemas no hacen esa distinción. Cuando se asigna un nombre a un archivo, éste pasa a ser
independiente del proceso, del usuario e incluso del sistema que lo creó. El nombre de archivo
simbólico es la única información que se mantiene en un formato legible por parte de las
personas.
- Identificador: Esta etiqueta unívoca, que usualmente es un número, identifica el archivo dentro
del sistema de archivos; se trata de la versión no legible por las personas del nombre de
archivo.
- Ubicación: Esta información es un puntero a un dispositivo y la ubicación del archivo dentro de
dicho dispositivo.
- Tipo: Esta información es necesaria para los sistemas que sopporten diferentes tipos de
archivo.
- Tamaño: Este atributo expresa el tamaño actual del archivo (en bytes, palabras o bloques) y,
posiblemente, el tamaño máximo permitido.

5) ¿Que es un i-nodo?

Es una estructura de datos propia de los sistemas de archivos tradicionalmente empleados en los
sistemas operativos tipo UNIX como es el caso de Linux. Un inodo continene las características
(permisos, fechas, ubicación, pero NO el nombre) de un archivo regular, directorio, o cualquier otro
objeto que pueda contener el sistema de ficheros.

El término “I-nodo” refiere generalmente a inodos en discos que almacenan archivos regulares,
directorios y enlaces simbólicos. El concepto es particularmente importante para la recuperación de los
sistemas de archivos dañados.

Cada inodo queda identificado por un número entero, único dentro del sistema de archivo, y los
directorios recogen una lista de parejas formadas por un número de inodo y nombre identificativo que
permite acceder al archivo en cuestión: cada archivo tiene un único inodo, pero puede tener más de un
nombre en distintos o incluso el mismo directorio para facilitar su localización.

6) En el diseño de un planificador, explique la diferencia entre apropiativo y no apropiativo

Un planificador apropiativo (preemptive) es aquel que en caso que llegue a la cola de procesos
listos un proceso con mayor prioridad del que estamos ejecutando en la CPU, el proceso en ejecución
será desplazado y vuelto a la cola de procesos listos, tomando el lugar el proceso recién llegado con
mayor prioridad. También se utiliza en los casos que la CPU se asigna a lo sumo x unidades de tiempo
a cada proceso en ejecución, como puede ser un planificador Round Robin.

Que la fuerza te acompañe Página 50


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Por el contrario, un planificador no expropiativo es aquel que luego de hecha la asignación de la


CPU, el proceso en ejecución no cederá la misma a menos que se bloquee (E/S o interrupción) o
termine su ejecución.

7) Para el diseño de un sistema operativo, señale virtudes y defectos comparando una solución
monolítica con una basada en un micro núcleo.

Una solución monolítica de un sistema operativo tiene la ventaja de que reduce el overhead de cada
llamada al sistema a su mínima expresion, ya que todas las funciones del mismo se encuentran a un
único nivel. Por otra parte, tiene la gran desventaja del alto grado de complejidad al momento de realizar
cualquier expansión al mismo o mantenimiento correctivo/perfectivo.
Por otra parte, las ventajas de un sistema basado en micronúcleo, son que al ser un núcleo
pequeño, solamente provee las funcionalidades básicas para el manejo de procesos, memoria,
comunicación entre procesos, el resto de las funcionalidades se ejecutan por fuera de este núcleo en
espacio de usuario.
Otra ventaja importante es la facilidad para amplliar el sistema operativo ya que todos los servicios
nuevos se añaden al espacio de usuario y, en consecuencia, no requieren que se modifique el kernel.
Este sistema operativo resultante, es más fácil de portar de un sistema (diseño) de hardware a otro.
El microkernel también proporciona más seguridad y fiabilidad, dado que la mayor parte de los
sservicios se ejecutan como procesos de usuario, en lugar de como procesos del kernel. Si un servicio
falla, el resto del sistema operativo no se ve afectado.
Lamentablemente, los microkernels pueden tener un rendimiento peor que otras soluciones, debido
a la carga de procesamiento adicional impuesta por las funciones del sistema.

2004 – Febrero
1) ¿Qué permite la memoria virtual?

Respuesta 1
Es una técnica que permite que la ejecución de un proceso aunque este no este completamente
cargado en memoria. Esto hace que los procesos puedan ser más grandes que la memoria física (o real) del
equipo.

Respuesta 2
La memoria virtual incluye la separación de la memoria lógica, tal como la percibe el usuario, con
respecto a la memoria física. Esta separación permite proporcionar a los programadores una memoria
virtual extremadamente grande, cuando solo está disponible una memoria física de menor tamaño.
Facilita enormemente la tarea de programación, porque el programador ya no tiene que preocuparse de
la cantidad de memoria física disponible; en lugar de ello, puede concentrarse en el problema que deba
resolver mediante su programa.
También permite compartir las bibliotecas del sistema entre numerosos procesos, mapeando el objeto
compartido sobre un espacio de direcciones virtual. Aunque cada proceso considera que las bibliotecas
compartidas forman parte de su propio espacio de direcciones virtuales, las páginas reales de memoria
física en las que residen las bibliotecas compartidas, estarán compartidas por todos los procesos.
Normalmente las bibliotecas se mapean en modo solo lectura dentro del espacio de cada proceso con el
cual se monten.
De forma similar, la memoria virtual permite a los procesos compartir memoria. La memoria virtual
permite que un proceso cree una región de memoria y que la pueda compartir con otro proceso. Los
procesos que compartan esta región la considerarán parte de su espacio de direcciones virtual, aunque en
realidad las páginas físicas reales de la memoria estarán compartidas entre los distintos procesos.
También permite que se compartan páginas durante la creación de procesos mediante la llamada al
sistema fork(), acelerando así la tarea de creación de procesos.

2) Enumere los pasos que sigue la rutina de fallo de página (page-fault)

i. Encontrar en que lugar del disco esta la página que falló.


ii. Encontrar un marco (página) libre en memoria principal:
a- Si existe un marco libre, entonces pasar al punto 3.

Que la fuerza te acompañe Página 51


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

b- Si no existe un marco libre, entonces usar el algoritmo de remplazo de página del sistema para
seleccionar a la víctima.
c- Escribir en disco la página victima y actualizar la tabla de paginación.
iii. Leer la página de fallo desde el disco y ponerla en el marco obtenido en el punto (b). Actualizar la
tabla de paginación.
iv. Volver al proceso del usuario.

3) Describa los algoritmos de reemplazo:

i. FIFO
ii. Óptimo
iii. LRU

FIFO
Se reemplaza la página que hace más tiempo esta cargada en memoria principal.
Óptimo
Reemplazar la página que no será usada por el mayor período de tiempo. Para este algoritmo es
necesario tener información de los pedidos de página futuros.
LRU
Reemplazar la página que hace más tiempo que no es accedida. (Least recently used)

Ver exámen Abril 2003

4) Para cada uno de ellos muestre la secuencia de reemplazo para los siguientes pedidos de
página:

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1
Asumiendo que el tamaño de la memoria principal es de 3 páginas.

En todos los casos las primeras tres páginas entran a la memoria sin reemplazos. Los reemplazos
se muestran en notación (página original, reemplazo).

FIFO: (7,2) (0,3) (1,0) (2,4) (3,2) (0,3) (4,0) (2,1) (3,2) (0,7) (1,0) (2,1)

Óptimo: (7,2) (1,3) (0,4) (4,0) (3,1) (2,7)

LRU: (7,2) (1,3) (2,4) (3,2) (0,3) (4,0) (0,1) (3,0) (2,7)

5) Describa lo que es una dirección virtual (logical address) y una dirección real (physical address)

Dirección virtual (lógica):


Dirección generada por los programas a nivel de CPU.

Dirección real (física):


Es una dirección sobre la memoria real (física).

La vinculación de direcciones en la compilación o carga da pie a que las direcciones lógicas concidan
con las físicas. En cambio durante la ejecución, las direcciones difieren. En este caso, la dirección lógica es
conocida como “dirección virtual”.

6) ¿En qué consiste el modelo de paginación simple (de un nivel)? Muestre cómo las direcciones
virtuales se mapean a direcciones reales. Mencione todos los elementos involucrados.

Paginación simple:
La memoria real es dividida en bloques (frames) de tamaño fijo. La memoria virtual es también
divida en bloques del mismo tamaño que son llamados páginas.

El tamaño de página esta dado por el hardware.

Que la fuerza te acompañe Página 52


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

La traducción de una dirección virtual a real se hace así:


Las direcciones virtuales se dividen en 2 partes: un número de página y un offset:
+-----------+------------+
| p | d | Dirección virtual
+-----------+------------+

p es un índice de la tabla de paginación (que en general la proveé el hardware o si es muy grande


se encuentra en memoria).
Con p se va a la tabla y se obtiene f (frame de la memoria real), que junto con d forman la dirección real:
+-----------+------------+
| f | d | Dirección real
+-----------+------------+

7) Describa el modelo de segmentación. Muestre como las direcciones virtuales se mapean a


direcciones reales. Mencione todas las estructuras y elementos involucrados.

Segmentación es un esquema que soporta la perspectiva de la vista del usuario de lo que es la


memoria.
La memoria se divide en segmentos de diferentes tamaños. Los segmentos están dados por la memoria
usada por los programas.
El espacio de las direcciones lógicas de un proceso es un conjunto de los segmentos.

Un ejemplo de un proceso:
Se tiene un segmento para las variables globales, otro para el stack, otro para el código del
programa, otro para cada variable local de los procedimientos y funciones.

La traducción de una dirección virtual a real se hace así:


Las direcciones virtuales se dividen en 2 partes: un número de segmento y un offset:
+-----------+------------+
| s | d | Dirección virtual
+-----------+------------+

s es un índice sobre la tabla de segmentación (que en general la provee el hardware o se


encuentran cargada en memoria en caso de ser muy grande).

Cada entrada de la tabla de segmentación tiene 2 campos: límite y base.


El límite es el tamaño del segmento y la base es la dirección real de donde comienza el segmento
en memoria real.

Por un lado se verifica que: d < límite, sino es así entonces se produce un trap de error. Por otro
lado se hace la suma: base + d para obtener la dirección real
+------------------------+
| base + d | Dirección real
+------------------------+

8) Describa tres de los algoritmos vistos en el curso de planificación de corto plazo.

Se presentan 4 algoritmos :

i. First-Come, First-Served
Primero en llegar a la ready-queue, primero en asignarle la CPU.
Es el algoritmo más simple de planificación de la CPU. Con este esquema se asigna primero la CPU
al proceso que primero lo solicite. La implementación de la política FCFS se gestiona fácilmente con
una cola FIFO. Cuando un proceso entra en la cola de procesos listos, su PCB se coloca al final de la
cola. Cuando la CPU queda libre, se asigna al proceso que esté al principio de la cola y ese proceso
que pasa a ejecutarse se elimina de la cola.
Sin embargo, el tiempo medio de espera con este algoritmo es a menudo bastante largo.

Que la fuerza te acompañe Página 53


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Este algoritmo de planificación es cooperativo. Una vez que la CPU ha sido asignada a un proceso,
dicho proceso la conserva hasta que la libera, bien porque termina su ejecución o porque realiza una
solicitud de E/S. El algoritmo FCFS resulta, por tanto, especialmente problemático en los sistemas de
tiempo compartido, donde es importante que cada usuario obtenga una cuota de la CPU a intervalos
regulares. Sería desastroso permitir que un proceso mantuviera la CPU durante un largo período de
tiempo.

ii. Shortest Job First


Dada una lista de procesos se le asigna la CPU al trabajo que le reste menor tiempo de ejecución.
Para la ejecución de este algoritmo es necesario que reporten el tiempo que le resta en alguna
unidad común a todos.
Cuando la CPU está disponible, se asigna al proceso que tiene la siguiente ráfaga de CPU más
corta. Si las siguientes ráfagas de CPU de dos procesos son iguales, se usa la planificación FCFS para
romper el empate.
El algoritmo de planificación SJF es probablemente óptimo, en el sentido de que proporciona el
tiempo medio de espera mínimo para un conjunto de procesos dado. Anteponer un proceso corto a uno
largo disminuye el tiempo de espera del proceso corto en mayor medida de lo que incrementa el tiempo
de espera del proceso largo. Consecuentemente, el tiempo medio de espera diminuye.
La dificultad real del algoritmo SJF es conocer la duración de la siguiente solicitud de CPU. En una
planificación a largo plazo de trabajos en un sistema de procesamiento por lotes, podemos usar como
duración el límite de tiempo del proceso que el usuario especifique en el momento de enviar el trabajo.
Con este mecanismo, los usuarios están motivados para estimar el límite de tiempo del proceso de
forma precisa, dado que un valor menor puede significar una respuesta más rápida. La planificación
SJF se usa frecuentemente como mecanismo de planificación a largo plazo.
Aunque el algoritmo SJF es óptimo, no se puede implementar en el nivel de planificación de la CPU
a corto plazo, ya que no hay forma de conocer la duración de la siguiente ráfaga de CPU. Un método
consiste en intentar aproximar la planificación SJF: podemos no conocer la duración de la siguiente
ráfaga de CPU, pero podemos predecir su valro, por el procedimiento de confiar en que la siguiente
ráfaga será similar en duración a las anteriores. De este modo, calculando una aproximación de la
duración de la siguiente ráfaga, podemos tomar el proceso que tenga la ráfaga predicha más corta.
Este algoritmo puede ser cooperativo o apropiativo. La necesidad de elegir surge cuando un
proceso llega a la cola de procesos listos mientras que un proceso anterior todavía está en ejecución.
La siguiente ráfaga de CPU del proceso que acaba de llegar puede ser más corta que lo que quede del
proceso actualmente en ejecución. Un algoritmo SJF apropiativo detendrá el proceso actualmente en
ejecución, mientras que un algoritmo sin desalojo permitirá que dicho proceso termine su ráfaga de
CPU.

iii. Priority
A los procesos se les asigna una prioridad (p.ej: un numero natural). Se define una relación de
orden de estas prioridades y según ella los procesos que tengan mayor prioridad tendrán acceso al
CPU antes.
El algoritmo SJF es un caso especial del algoritmo de planificación por prioridades general. A cada
proceso se le asocia una prioridad y la CPU se asigna al proceso que tenga la prioridad más alta. Los
procesos con la misma prioridad se planifican en orden FCFS. Generalmente las prioridades se indican
mediante un rango de números fijo, como por ejemplo de 0 a 7 o de 0 a 4095. Sin embargo, no existe
un acuerdo general sobre si 0 es la prioridad más alta o más baja.
Las prioridades pueden definirse interna o externamente. Las prioridades internamente utilizan
algún vlaor mesurable para calcular la prioridad de un proceso, por ejemplo la relación entre la ráfaga
de E/S promedio y la ráfaga de CPU promedio. Las prioridades definidas externamente se establecen
en función a criterios externos al sistema operativo, como por ejemplo la importancia del proceso, el
coste monetario de uso de la computadora, etc.
Este tipo de planificación puede ser apropiativa o cooperativa. Cuando un proceso llega a la cola de
procesos listos, su prioridad se compara con la prioridad del proceso actualemnte en ejecución; un
algoritmo de planificación por prioridades apropiativo, expulsará de la CPU al proceso actual si la
prioridad del proceso que acaba de llegar el mayor. Un algoritmo de planificación por prioridades
cooperativo simplemente pondrá el nuevo proceso al principio de la cola de procesos listos.
Un problema importante de los algoritmos de planificación por prioridades es el bloqueo indefinido o
muerte por inanición. Un proceso que está preparado para ejecutarse pero está esperando a acceder a
la CPU puede considerarse bloqueado; un algoritmo de planificación por prioridades puede dejar a
alagunos procesos de baja prioridad esperando indefinidamente. En un sistema informático con una

Que la fuerza te acompañe Página 54


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

carga de trabajo grande, un flujo estable de procesos de alta prioridad puede impedir que un proceso
de baja prioridad llegue a la CPU. Generalmente ocurrirá una de dos cosas: o bien el proceso se
ejecutará finalmente (algún día…) o bien el sistema informático terminará fallando y se perderán todos
los procesos con baja prioridad no terminados.
Una solución para el problema de bloqueo indefinido de procesos con baja prioridad consiste en
aplicar mecanismos de envejecimiento. Esta técnica consiste en aumentar gradualmente la prioridad de
los procesos que estén esperando en el sistema durante mucho tiempo.

iv. Round Robin (por turnos)


Se define un quantum de tiempo global a todos los procesos. Se asignan los procesos a la CPU y
se les quita cuando termine el tiempo (quantum).
Este algoritmo está diseñado especialmente para los sistemas de tiempo compartido. Es similar a la
planificación FCFS, pero se añade la técnica de desalojo para conmutar entre procesos. En este tipo
de sistema se define una pequeña unidad de tiempo, denominada quantum de tiempo, o franja
temporal. La cola de procesos listos se trata de una cola circular. El planificador de la CPU recorre la
cola de procesos listos asignando la CPU a cada porceso durante un intervalo de tiempo de hasta 1
queantum de tiempo.
Para implementar la planificación por turnos, mantenemos la cola de procesos listos como una cola
FIFO de procesos. Los procesos nuevos se añaden al final de la cola. El planificador de la CPU toma el
primer proceso de la cola de listos, configura un temporizador para que interrumpa pasado 1 quanto de
tiempo y despacha el proceso.
Pueden ocurrir una de dos cosas. El proceso puede tener una ráfaga de CPU cuya duración sea
menor que 1 quanto de tiempo; en este caso, el propio proceso liberará voluntariamente la CPU. El
planificador continuará entonces con el siguiente proceso de la cola de procesos listos. En caso
contrario, si la ráfaga de CPU del proceso actualmente en ejecución tiene una duración mayor que 1
quanto de tiempo, se producirá un fin de cuenta del temporizador y este enviará una interrupción al
sistema operativo; entonces se ejecutará un cambio de contexto y el proceso se colocará al final de la
cola de procesos listos. El planificador seleccionará a continuación el siguiente proceso de la cola de
listos y repetirá el procedimiento.
El tiempo medio de espera en los sistemas por turnos es, con frecuencia largo.
El rendimiento de este tipo de algoritmos de planificación depende enormemente del tamaño del
quanto de tiempo. Por un lado, si el tiempo es extremadamente largo, la planificación por turnos es
igual que la FCFS. Si el quanto de tiempo es muy pequeño, el método por turnos se denomina
compartición del procesador y (en teoría) crea la apariencia de que cada uno de los n procesos tiene su
propio procesador ejecutándose a 1/n de la velocidad del procesador real.
En software también necesitamos considerar el efecto del cambio de contexto en el rendimiento de
la planificación por turnos. Aunque el quanto de tiempo debe ser grande comparado con el tiempo de
cambio de contexto, no debe ser demasiado grande ya que esto degeneraría en el método FCFS.

9) Muestre a través de un diagrama de Gantt como sería la ejecución para el siguiente ejemplo:

Proceso Tiempo de ejecución


P1 10
P2 5
P3 2
P4 4
Defina (especificando) a gusto datos adicionales que su algoritmo requiera (time slice, prioridad, etc. )

i. First-Come, First-Served

Suponiendo un orden de llegada: P1, P2, P3 y P4


P1 P2 P3 P4
|----------|-----|--|----|

ii. Shortest Job First

P3 P4 P2 P1
|--|----|-----|----------|

iii. Priority

Que la fuerza te acompañe Página 55


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Asumiendo las siguientes prioridades:


P1 -> 4
P2 -> 3
P3 -> 2
P2 -> 1
Donde a mayor número mayor prioridad.
P1 P2 P3 P4
|----------|-----|--|----|

iv. Round-Robin

Asumiendo un quantum de tiempo igual a 4 y tomando los procesos en el orden P1, P2, P3 y P4
P1 P2 P3 P4 P1 P2 P1
|----|----|--|----|----|-|--|

2004 – Marzo
1) Clasificación de Sistemas Operativos

a- Defina sistema multiprocesador simétrico y asimétrico.

El multiprocesador asimétrico es más simple ya que hay una gerarquía de procesadores, todas las
decisiones sobre la planificación, el procesamiento de E/S y otras actividades del sistema sean
gestionadas por un mismo procesador, el servidor maestro. Los demás procesadores sólo ejecutan
código de usuario. Este multiprocesamiento asimétrico resulta simple, porque sólo hay un porcesador
que accede a las estructuras de datos del sistema, reduciendo la necesidad de compartir datos.
Por otra parte, el sistema de procesamiento simétrico, cada uno de los procesadores se auto-
planifica. Todos los procesos pueden estar en una cola común de procesos listos, o cada procesador
puede tener su propia cola privada de procesos listos. Independientemente de esto, la planificación se
lleva a cabo haciendo que el planificador de cada procesador examine la cola de procesos listos y
seleccione un proceso para ejecutarlo. Si tenemos varios procesadores intentando acceder a una
estructura de datos común para actualizarla, el planificador tiene que programarse cuidadosamente:
tenemos que asegurar que dos procesadores no elegirán el mismo proceso y que no se perderán
procesos de la cola.

b- Describa brevemente: sistemas batch, sistemas de tiempo compartido, sistemas de tiempo real y
sistemas distribuidos.

- Sistemas Batch: También conocido como procesamiento por lotes, es la ejecución de un


programa sin el control o supervisión directa del usuario. Este tipo de programas se caracterizan
porque su ejecución no precisa ningún tipo de interacción con el usuario. Generalmente, este
tipo de ejecución se utiliza en tareas repetitivas sobre grandes conjuntos de información, ya que
sería tedioso y propenso a errores realizarlo manualmente.
Los sistemas por lotes son el mecanismo más tradicional y antiguo de ejecutar tareas.
En un sistema por lotes, existe un gestor de trabajos, encargado de reservar y asignar los
recursos d las máquinas a las tareas que hay que ejecutar. De esta forma, mientras existan
trabajos pendientes de procesamiento, los recursos disponibles estarán siempre ejecutando
tareas.
Ventajas:
- Permite compartir mejor los recursos de un ordenador entre muchos usuarios, al no
competir por éstos de forma inmediata.
- Realiza el trabajo en el momento en que los recursos del ordenador están menos ocupados,
dando prioridad a tareas interactivas.
- Evita desaprovechar los recursos del ordenador sin necesidad de interacción y supervisión
humanas continuas.

Que la fuerza te acompañe Página 56


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- En ordenadores caros o supercomputadores, ayuda a amortizar el coste manteniendo altos


índices de utilización.
Desventajas:
- Hay que conocer y planificar cuidadosamente la tarea a realizar. Al carecer de supervisión
por parte del usuario, cualquier tipo de error puede producir resultados inútiles o
simplemente inexistentes.

- Sistemas de tiempo compartido: Los sistemas por lotes tienen problemas desde el punto de
vista del usuario, puesto que éste no puede interactuar con el trabajo durante su ejecución, y
debe preparar las tarjetas para todos los resultados posibles, ya que en un trabajo de varios
pasos, algunos pasos pueden depender del éxito de los anteriores.
En un sistema multitarea o interactivo, se ejecutan múltiples trabajos mientras la CPU conmuta
entre ellos, pero la conmutación es tan frecuente que los usuarios pueden interactuar con cada
programa durante su ejecución. El usuario da instrucciones al SO o programa y recibe una
respuesta inmediata.
En estos sistemas de tiempo compartido, cada usuario tiene por lo menos un programa
individual en la memoria (conocido como proceso). La E/S interactiva se efectúa a un ritmo
humano, limitadas por la velocidad de respuesta del usuario, la cual es lenta para la CPU.
Mientras la CPU está ociosa por esta causa, el SO conmuta la CPU a otro usuario.
Los usuarios comparten la CPU simultáneamente, y como el computador cambia con rapidez de
un usuario al siguiente, cada uno recibe la impresión de que tiene su propio computador.
Al igual que en la multiprogramación, se necesita mantener varios trabajos simultáneamente en
la memoria, por lo que requiere gestión y protección de memoria. El disco funciona como
memoria virtual, permitiendo ejecutar trabajos que no caben en la memoria principal.

- Sistemas de tiempo real: Se utiliza cuando los requisitos de tiempo para una operación son
estrictor, tiene restricciones de tiempo bien definidas.
Hay dos tipos:
- Tiempo real duro: Las tareas críticas deben terminar a tiempo. Todos los retardos del
sistema están limitados, por lo tanto los datos se deben guardar en memoria rápida como
ROM, además carecen de la mayor parte de las funciones avanzadas de los sistemas
operativos, como por ejemplo: memoria virtual.
- Tiempo real blando: Una tarea crítica tiene prioridad respecto a otras, y se deben evitar los
retardos, pero no apoyan el cumplimiento estricto de plazos.

- Sistemas distribuídos: Son aquellos sistemas que distribuyen el cómputo entre varios
procesadores, que no comparten ni la memoria, ni el reloj. Cada procesador tiene su memoria
local y se comunican entre si por buses. Son sistemas que están débilmente acoplados. Los
procesadores pueden tener diferentes tamaños y funciones.
Las principales ventajas de estos sistemas son:
- Recursos compartidos: Un usuario de un sitio, puede aprovechar los recursos disponibles
de otro. Hay mecanismos para compartir archivos en sitios remotos.
- Computación más rápida: Divide los cálculos en subcálculos y los distribuye netre los
sitios para procesar concurrentemente (llamado carga compartida).
- Confiabilidad: si un sitio falla, los demás pueden seguir funcionando.
- Comunicación: Los usuarios pueden transferir archivos o comunicarse entre sí por correo
electrónico, y los programas pueden intercambiar datos con otros programas del mismo
sistema.

2) Concurrencia

a- Mencione los tres requisitos que debe cumplir una solución al problema de la sección crítica.

La idea de la sección crítica es que mientras un proceso se está ejecutando en sección crítica,
nungún otro puede estar en otra sección crítica; solo ejecutando otras secciones. Así, la ejecución de
secciones críticas es mutuamente exclusiva. Cada proceso debe solicitar permiso para ingresar en su
sección crítica y debe indicar cuando salió de ella.
Hay 4 requisitos:
- Mutua exclusión: Si el proceso Pi se ejecuta en su sección crítica, ningún otro proceso puede
estarse ejecutando en su sección crítica.

Que la fuerza te acompañe Página 57


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Espera limitada: Hay un límite, para el número de veces que se permite a otros procesos
entrar en sus secciones críticas, luego de que un proceso pidió autorización para ingreso. No se
permite la posposición indefinida.
- Progreso: Se deben cumplir las siguientes condiciones:
i. No alternación: No puedo obligar a que se ejecuten, primero uno, luego el otro, vuelvo
al primero, etc.
ii. Sin puntos muertos (deadlocks): A espera a B y B espera a A, y todos los demás
están bloqueados simultáneamente.

b- En el contexto de monitores, cuando un proceso ejecuta un signal sobre una condición, y hay un
proceso esperándola, ¿qué debe resolverse y qué políticas pueden tomarse para ello?

Si P y Q están asociados a x y P ejecuta x.signal, Q reanuda su ejecución, por lo tanto P debe


esperar. Cuando P ejecuta x.signal, inmediatemente sale del monitor, por lo tanto Q también reanuda de
inmediato.
Luego que se reanudó el proceso Q, ambos procesos comienzan a competir por la CPU y recursos
del sistema nuevamente. Lo que debe resolverse es a quien se le va a asignar la CPU, las políticas
pueden ser FCFS, SJF, Cola de prioridades, etc.

c- ¿Cuándo puede decirse que las condiciones necesarias de deadlock también son suficientes?

Ver exámen Diciembre 2003.


Las condiciones necesarias también son suficientes cuando hay una sola instancia de cada tipo de
recurso.

3) Memoria

a- Presente las estrategias de asignación dinámica de almacenamiento.

Las estrategias de asignación dinámica de almacenamiento son la Paginación y la Segmentación.


- Paginación: La paginación es un esquema de gestión de memoria que permite que el espacio de
direcciones físicas de un proceso no sea contiguo. La paginación evita el considerable problema de
encajar fragmentos de memoria de un tamaño variable en el almacén de respaldo; la mayoría de los
esquemas de gestión dememoria utilizados antes de la introducción de paginación sufrían este
problema, que se presentaba debido a que, cuando era necesario proceder a la descarga de
algunos datos o fragmentos de código que residieran en memoria principal, tenía que encontrarse el
espacio necesario en el almacén de respaldo. El almacén de respaldo también sufre los problemas
de fragmentación que hemos mencionado en relación con la memoria principal, pero con la
salvedad de que el acceso es mucho más lento, lo que hace que la compactación sea posible.
Debido a sus ventajas con respecto a métodos previos, la mayoría de los sistemas operativos
utilizan comunmente mecanismos de paginación de diversos tipos.
Tradicionalmente, el soporte para la paginación se gestionaba mediante hardware, sin embargo,
algunos diseños recientes implementan los mecanismos de paginación integrando estrechamente el
hardware y el sistema operativo, especialmente los microprocesadores de 64bits.

- Segmentación: Un aspecto importante de la gestión de memoria que se volvió inevitable con los
mecanismos de paginación es la separación existente entre la vista que el usuario tiene de la
memoria y la memoria física real.
La segmentación es un esquema de gestión de memoria que soporta la visión del usuario de la
misma. Un espacio lógico de direcciones es una colección de segmentos y cada segmento tiene un
nombre y una longitud. Las direcciones especifican tanto el nombre del segmento como el
desplanzamiento dentro del mismo. El usuario especifica, por tanto, cada dirección proporcionando
dos valores: un nombre de segmento y un desplazamiento dentro del mismo.

b- De tres ventajas de la segmentación que no tenga la paginación.

- La segmentación apoya la visión del usuario sobre la memoria física


- Es más fácil compartir secciones de código entre diferenes procesos ya que su división facilita
tal hecho (se comparte, por ejemplo la sección de código no incluye valores de variable, lo que
hace más fácil compartirla)

Que la fuerza te acompañe Página 58


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Reduce la fragmentación interna ya que los segmentos tienen el tamaño que necesitan.

c- Dado el algoritmo de reemplazo de páginas FIFO, diga qué sucede al incrementarse el número de
marcos asignados.

Al aumentar la cantidad de marcos asignados, hacemos que las páginas permanezcan más tiempo
cargadas en memoria.
En algunos casos, al aumentar el número de marcos asignados a un proceso, puede darse la
anomalía de Belady: para algunos algoritmos de sustitución de páginas, la tasa de fallos de página
puede incrementarse a medida que se incrementa el número de marcos asignados.

d- Defina algoritmos de pila para reemplazo de páginas. Mencione un algoritmo de pila dado en el
curso.

Un algoritmo de pila es aquel para el cual se puede demossstrar que el conjunto de páginas en
memoria para n marcos es siempre un subconjunto de las páginas que estarían en memoria con n+1
marcos. No sufren la anomalía de Belady.
- Óptimo
- LRU
e- ¿Cuál es la ventaja de los algoritmos de pila?

No sufren la anomalía de Belady (3.c para ver que es esta anomalía).

f- En un sistema de paginación por demanda, si el hardware lo permite ¿qué utilidad tiene el bit
sucio (dirty bit)?

Sirve para ayudar a la política de reemplazo de páginas, este bit sucio, se encientde si se ha escrito
alguna palabra o byte en la página que queremos reemplazar (lo cual indica que la misma fue
modificada). Esto sirve para evitar la escritura a disco de la página víctima si la misma no ha sido
modificada.

g- Explique qué desventaja particular tienen los hilos implementados a nivel de usuario (sin
soporte del núcleo) en un sistema de memoria virtual con paginación por demanda.

Ver exámen Agosto 2003 (pregunta 3)


El problema mayor que presenta esta implementación de threads con un sistema de memoria virtual
con paginación por demanda es que si alguno de los hilos del proceso necesita una página que
actualmente está en disco (genera un page fault), todos los hilos del proceso que generó este page fault
se bloquean hasta que termine la política de reemplazo de página y la página buscada esté en
memoria. Esto se debe a que para el sistema operativo, todos los threads a nivel de usuario son vistos
como un único thread a nivel de núcleo, por lo que solamente se permite que haya un thread que realice
llamadas al sistema.

h- ¿Qué estrategia evita la hiperpaginación manteniendo a la vez el nivel de multiprogramación lo


más alto posible?

La estrategia que evita la hiperpaginación manteniendo a la vez el nivel de multiprogramación lo


más alto posible es el “Modelo de conjunto de trabajo” o “Working set”.
Esta estrategia se basa en el supuesto de localidad. Este modelo emplea un parámetro D para
definir la ventana del conjunto de trabajo. De lo que se trata es de examinar las D referencias a páginas
más recientes, y esas D páginas es el conjunto de trabajo. Si una página está en uso activo estará en el
conjunto de trabajo; si ya no se está usando saldrá del mismo, D unidades de tiempo después de su
última referencia. Así el conjunto de trabajo es una aproximación de localidad del programa.
El sistema operativo vigila el conjunto de trabajo de cada proceso y le asigna un número de marcos
igual a su tamaño. Si hay marcos libres, puede iniciar otro proceso. Si la suma de los tamaños de los
conjuntos de trabajo aumenta hasta exceder el número total, el sistema operativo suspenderá un
proceso (que iniciará más tarde).
Esto evita la hiperpaginación y mantiene la multiprogramación lo más alta posible. El problema es
que es difícil seguir la pista a los conjuntos de trabajo.

Que la fuerza te acompañe Página 59


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

4) Disco y sistemas de archivos

a- Describa el algoritmo SCAN.

Ver exámen Marzo 2003 (pregunta 1).

b- ¿Qué desventaja presenta el algoritmo SCAN? Dé una alternativa.

El algoritmo SCAN presenta la desventaja de que cuando invierte el recorrido de la aguja, en las
primeras zonas que recorre la densidad de solicitudes es muy baja, ya que hace poco que pasó por ahí.
Esto genera un tiempo de espera no muy uniforme.
Alternativas:
- C-SCAN: (ver detalles en Marzo 2003). Este método da un tiempo de espera más uniforme.
- LOOK: La implementación de LOOK es similar a la implementación de SCAN, la aguja del disco
recorre de arriba a abajo el mismo cumpliendo solicitudes a medida que avanza, pero en vez de
invertir el camino cuanod llega al final, lo hace cuando llega a la última solicitud que le queda
por cumplir en ese sentido.
- C-LOOK: Es una mezcla entre el C-SCAN y el LOOK, realiza la recorrida del disco en un
sentido cumpliendo los pedidos a su paso y cuando llega al final de dicha lista, no hay mas
pedidos que cumplir para ese lado, vuelve al comienzo sin responder solicitudes y comienza
nuevamente.

c- Presente brevemente tres alternativas para gestión de espacio libre en almacenamiento


secundario.

- Vector de Bits: Cada bloque se representa con un bit. Si el bloque está libre, el bit es 1; si por
el contrario está asignado, el bit es 0. Resulta relativamente sencillo y eficiente encontrar el
primer bloque libre, o n bloques libres consecutivos en el disco, pero son ineficientes si el vector
entero no se mantiene en memoria principal, y esto solo esposible si el disco no es demasiado
grande.

- Lista Enlazada: Se enlazan entre sí los bloques de disco libres, manteniendo un puntero al
primer bloque libre en un posición especial del disco y colocándolo en el cache de la memoria.
Este esquema no es suficiente ya que para recorrer la lista necesitaríamos leer cada bloque,
ocupando una cantidad sustancial de tiempo de E/S, aunque no necesita hacerlo
frecuentemente.

- Agrupamiento: Almacena las direcciones de n bloques libres en el primer bloque libre,


permitiendo encontrar un gran número de bloques libres de manera rápida.

- Conteo: Aprovechando el hecho de que al liberar un bloque, también libero los contiguos. En
lugar de mantener una lista de direcciones de bloques libres, mantenemos la dirección del
primer bloque libre y el número de n bloques libres contiguos que siguen al primero.

d- ¿Qué inconveniente tienen los sistemas que apoyan distintos tipos de archivos en forma nativa?

Los principales inconvenientes de los sistemas operativos que apoyan distintos tipos de archivo de
forma nativa son los siguientes:
- El tamaño resultante del sistema operativo es excesivo ya que necesita contener el código para
soportar cada una de las estructuras de archivo.
- Cuando una aplicación nueva requiera información estructurada en alguna forma que no esté
soportada por el sistema operativo, pueden aparecer grandes problemas.

Que la fuerza te acompañe Página 60


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2004 – Julio
1) A continuación se propone una solución al problema de la sección crítica para dos procesos i y j
que ejecutan en un único procesador. Las instrucciones son atómicas.

Proceso I Proceso j
while (true) do begin while (true) do begin
flagi := true; flagj := true;
while ( flagj ) do begin while ( flagi ) do begin
flagi := false; flagj := false;
while ( flagj ) do no-op; while ( flagi ) do no-op;
flagi := true; flagj := true;
end; end;
Sección Crítica Sección Crítica
Flagi := false; Flagj := false;
Sección no crítica Sección no crítica
End; end;
Determine si es correcta. Justifique brevemente.

No parece, es parecido a la implementación del algoritmo de Dekker pero le falta la variable turno.
Por lo que al parecer que no anda. Puede sufrir de posposición indefinida

2) Un sistema que implementa memoria virtual con paginación utiliza el algoritmo FIFO para la
sustitución de páginas.
Un proceso genera la siguiente secuencia de referencias a páginas de memoria: 1 2 3 4 5 3 4 1 6 7 8 9
78965

a- Determinar cuantos fallos de página se producen según se disponga de 4 ó 5 marcos de página


para el proceso. Justifique brevemente.

El algoritmo FIFO básicamente reemplaza la página más vieja que se tenga en memoria.
Para 4 marcos tendremos la siguiente secuencia:
Los números de marcos se encuentran en la primer fila y la página más antigua se encuentra en negrita
y la página que será desplazada en el siguiente page fault está en rojo en la fila anterior

Con 4 marcos tenemos el siguiente esquema

Página a
ingresar / Marco Marco Marco Marco
marco 1 2 3 4
destino
1 1
2 1 2
3 1 2 3
4 1 2 3 4
5 5 2 3 4
3 5 2 3 4
4 5 2 3 4
1 5 1 3 4
6 5 1 6 4
7 5 1 6 7
8 8 1 6 7
9 8 9 6 7
7 8 9 6 7
8 8 9 6 7
9 8 9 6 7
6 8 9 6 7
5 8 9 5 7

Que la fuerza te acompañe Página 61


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Para 5 marcos tenemos este otro esquema


Página a
ingresar / Marco Marco Marco Marco Marco
marco 1 2 3 4 5
destino
1 1
2 1 2
3 1 2 3
4 1 2 3 4
5 1 2 3 4 5
3 1 2 3 4 5
4 1 2 3 4 5
1 1 2 3 4 5
6 6 2 3 4 5
7 6 7 3 4 5
8 6 7 8 4 5
9 6 7 8 9 5
7 6 7 8 9 5
8 6 7 8 9 5
9 6 7 8 9 5
6 6 7 8 9 5
5 6 7 8 9 5

b- Aumentando a 6 o más el número de marcos. ¿Se mejoraría la tasa de fallos de página?


Justifique brevemente.

No, la tasa de fallos de página no mejorará ya que las páginas 1-4 luego que son reemplazadas, por
las otras no vuelven a ser utilzadas, pero en caso de agregar mas marcos, lo que estaremos evitando
será la escritura a disco de las páginas que estamos reemplazando (en caso que hayan sido
modificadas)

3) Se tiene un sistema de gestión de memoria paginada. El espacio de direccionamiento virtual es


de 10 páginas de 1024 palabras, la palabra es 2 bytes de tamaño. La memoria física esta dividida
en 32 marcos.

a- ¿Cuántos bits componen una dirección virtual? Justifique brevemente.

Memoria paginada.
10 páginas
1024 palabras por página
2 bytes por palabra

De las 1024 palabras obtengo 10 bits para el desplazamiento = 2^10. (Asumiendo que la palabra es la
medida mínima, de lo contrario serían 11 bits)
Hay 10 páginas => preciso 4 bits para direccionarlo de marco.

Por lo tanto, la cantidad de bits que componen una dirección virtual es de 14 bits.

b- ¿Cuántos bits componen una dirección física? Justifique brevemente.

Dado que hay 32 marcos, que van de 0 a 31, precisamos 5 bits para direccionarlos.
De (a) sabemos que las páginas son de 10 bits.

Por lo tanto, una dirección física está compuesta por 15bits, 5 para indicar el marco y 10 para el
desplazamiento dentro de éste, asumiendo lo mismo que en (a), que la palabra es la medida mínima.

Que la fuerza te acompañe Página 62


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

4) En la implementación de que tipo de programas resulta especialmente útil el contar con un


servicio de hilos o procesos multihilados.

En todos aquellos en que nuestro programa tenga que realizar un conjunto de tareas
“independientes” entre sí, ya que si se van haciendo de manera secuencial, únicamente estaríamos
usando uno de los procesadores del sistema (en caso que tenga más de uno). Además, los hilos o
threads son básicamente entidades cooperativas y comparten mucha información entre sí. Por ejemplo
son utilizadas en programas de procesamiento de imágenes. Una utilización más intuitiva, es por
ejemplo el calcular el determinante de una matriz nxn, si lo hacemos iterativo, elemento por elemento,
en caso de contar con más de un procesador disponible, no lo aprovecharemos; pero en cambio,
podemos, al calcular el determinante por una columna, hacer un thread por cada fila y que calcule ese
valor, luego de que todos hayan terminado, realizamos los últimos cálculos y damos el resultado. Esto
es posible ya que los threads trabajarán cooperativamente, sin pisarse los valores entre ellos, ni
modificarán los valores que toman como entradas.

5) Describa los diferentes componentes involucrados en una operación de entrada-salida


incluyendo el propósito específico de cada uno de ellos.

- Bus: El bus es un sistema digital que transfiere datos entre los componentes de una
computadora o entre computadoras. Está formado por cables o pistas en un circuito impreso.
Su función es permitir la conexión lógica entre distintos subsistemas de un sistema digital,
enviando datos entre dispositivos de distintos ordenes. La mayoría de los buses están basados
en conductores metálicos por los cuales se transmiten señales eléctricas que son enviadas y
recibidas con la ayuda de integrados que poseen una interfaz del bus dado y se encargan de
manejar las señales y entregarlas como datos útiles.

- Controladora: Un controlador de dispositivo, llamado normalmente controlador, es un programa


informático que permite al sistema operativo interactuar con un periférico, haciendo una
abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada - para
usarlo. Se puede esquematizar como un manual de instrucciones que le indica cómo debe
controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza escencial sin la
cual no se podría utilizar el hardware.

- Procedimiento de negociación: Secuencia de comandos que debe realizar el sistema


operativo para que se establezca una comunicación con la controladora del dispositivo, para
luego transmitirle la solicitud de información. Luego que dicha solicitud fue resuelta, también
incluye el aviso de tal hecho al sistema.

- Dispositivo objetivo de E/S: Es el dispositivo del cual necesitamos obtener cierta información
o guardar datos en él.

6) Describa brevemente tres métodos de autenticación de usuarios.

- Posesión de algo: El usuario debe tener algo particular que lo identifique como quien es, una
clave o tarjeta por ejemplo.

- Conocimiento de algo: Saber alguna información particular que solamente el sepa, la dupla
(usuario,contraseña) por ejemplo.

- Atributo del usuario: Algo particular del usuario como puede ser la huella digital, patrón de
retina o firma.

7) Explique brevemente para que sirve el bit de “setuid” en Unix.

El “setuid” es un mecanismo estándar de UNIX que permite a un programa ejecutarse con


privilegios diferentes de los del usuario que está ejecutando el programa.

Que la fuerza te acompañe Página 63


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2004 – Diciembre
1) ¿Qué se logra en los sistemas multiprogramados? Justifique.

Ver exámen Agosto 2003. Pregunta 1.

2) ¿Que tipo de procesamientos existen en un sistema multiprocesador? Describa brevemente


cada uno de los que nombre.

Ver exámen Marzo 2004. Pregunta 1.a.

3) ¿Qué permite el bit de modo provisto a nivel de hardware?

El bit de modo permite tener dos modos de ejecución, modo usuario y modo supervisor o monitor
(de acceso a instrucciones privilegiadas).
Ver exámen Marzo 2003. Pregunta 8.

4) ¿Cómo se protege el excesivo uso de CPU por parte de un proceso?

Existe un timer que interrumpe al computador después de un período determinado, y cede el control
al sistema operativo, que puede cerrar el programa o cederle más tiempo. Las intrucciones que
modifican el funcionamiento del times, son privilegiadas.

5) ¿Describa 3 servicios que debe proveer el sistema operativo?

- Interfaz de usuario: Casi todos los sistemas operativos disponen de una interfaz de usuarios,
que puede tomar diferentes formas. Uno de los tipos existentes es la interfaz de línea de
comandos, que usa comandos de texto y algún tipo de método para introducirlos, es decir, un
programa que permite introducir y editar los comandos. Otro tipo destacable es la interfaz de
proceso por lotes, en la que los comandos y las directivas para controlar se introducen en
archivos, y luego dichos archivos se ejecutan. Habitualmente, se utiliza una interfaz gráfica de
usuario; en este caso, la interfaz es un sistema de ventanas, con un dispositivo señalador para
dirigir la E/S, para elegir opciones en los menús y para realizar otras selecciones, y con un
teclado para introducir texto. Algunos sistemas proporcionan dos o tres de estas variantes.

- Ejecución de programas: El sistema tiene que poder cargar un programa en memoria y


ejecutar dicho programa. Todo programa debe poder terminar su ejecución, de forma normal, o
anormal (indicando que hubo error).

- Operaciones de E/S: Un programa en ejecución puede necesitar llevar a cabo operaciones de


E/S, dirigidas a un archivo o a un dispositivo de E/S. Para ciertos dispositivos específicos,
puede ser deseable disponer de funciones especiales, tales como grabar en una unidad de CD
o DVD o borrar una pantalla. Por cuestiones de eficiencia y protección, los usuarios no pueden,
normalmente, controlar de modo directo los dispositivos de E/S; por tanto, el sistema operativo
debe proporcionar medios para realizar la E/S.

- Manipulación del sistema de archivos: el sistema de archivos tiene una importancia especial.
Obviamente, los programas necesitan leer y escribir en archivos y directorios. También
necesitan crearlos y borrarlos usando su nombre, realizar búsquedas en un determinado
archivo o presentar la información contenida en un archivo. Por último, algunos programas
incluyen mecanismos de gestión de permisos para conceder o denegar el acceso a los archivos
o directorios basándose en quién sea el propietario de dicho archivo.

- Comunicaciones: Hay muchas circunstancias en las que un proceso necesita intercambiar


información con otro. Dicha comunicación puede tener lugar entre procesos que estén
ejecutándose en la misma computadora o entre procesos que se ejecuten en computadoras
diferentes conectadas a través de una red. Las comunicaciones se pueden implementar
utilizando memoria compartida o mediante paso de mensajes, procedimiento éste en el sistema
operativo transfiere paquetes de información entre unos procesos y otros.

Que la fuerza te acompañe Página 64


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Detección de errores: El sistema operativo necesita detectar constantemente los posibles


errores. Estos errores pueden producirse en el hardware del procesador y de memoria (como
por ejemplo, un error de memoria o un fallo de la alimentación) en un dispositivo de E/S (como
un error de paridad de una cinta, un fallo de conexión en una red o un problema de falta de
papel en la impresora) o en los programas de usuario (como, por ejemplo, un desbordamiento
aritmético, un intento de acceso a una posición de memoria ilegal o un uso excesivo del tiempo
de CPU). Para cada tipo de error, el sistema operativo debe llevar a cabo la acción apropiada
para asegurar un funcionamiento correcto y coherente. Las facilidades de depuración pueden
mejorar en gran medida la capacidad de los usuarios y programadores para utilizar el sistema
de manera eficiente.

- System services: El sistema operativo deberá proveer a las aplicaciones un conjunto de


servicios a través de una interfaz conocida como “system services”.

Hay disponible otro conjunto de funciones del sistema operativo que no están pensadas para ayudar
al usuario, sino para garantizar la eficiencia del propio sistema. Los sistemas con múltiples usuarios
pueden ser más eficientes cuando se comparten los recursos del equipo entre los distintos usuarios:
- Asignación de recursos: Cuando hay varios usuarios, o hay varios trabajos ejecutándose al
mismo tiempo, deben asignarse a cada uno de ellos los recursos necesarios. El sistema
operativo gestiona muchos tipos diferentes de recursos; algunos (como los ciclos de CPU, la
memoria principal y el espacio de almacenamiento de archivos) pueden disponer de código
software especial que gestione su asignación, mientras que otros (como los dispositivos de E/S)
pueden tener código que gestione de forma mucho más general su solicitud y liberación. Por
ejemplo, para poder determinar cuál es el mejor modo de usar la CPU, el sistema operativo
dispone de rutinas de planificación de la CPU que tienen en cuenta la velocidad del procesador,
los trabajos que tienen que ejecutarse, el número de registros disponibles y otros factores.
También puede haber rutinas para asignar impresoras, modems, unidades de almacenamiento
USB y otros dispositivos periféricos.

- Responsabilidad: Normalmente conviene hacer un seguimiento de qué usuarios emplean qué


clase de recursos de la computadora y en que cantidad. Este registro se puede usar para
propósitos contables (con el fin de poder facturar el gasto correspondiente a los usuarios) o
simplemente para acumular estadísticas de uso. Estas estadísticas pueden ser una herramienta
valiosa para aquellos investigadores que deseen reconfigurar el sistema con el fin de mejorar
los servicios informáticos.

- Protección y seguridad: Los propietarios de la información almacenada en un sistema de


computadoras en red o multiusuario necesitan a menudo poder controlar el uso de dicha
información. Cuando se ejecutan de forma concurrente varios procesos distintos, no debe ser
posible que un proceso interfiera con los demás o con el propio sistema operativo. La protección
implica asegurar que todos los accesos a los recursos del sistema estén controlados. También
es importante garantizar la seguridad del sistema frente a posibles intrusos; dicha seguridad
comienza por requerir que cada usuario se autentique ante el sistema, usualmente mediante
una contraseña, para obtener acceso a los recursos del mismo. Esto se extiende a la defensa
de los dispositivos de E/S, entre los que se incluyen modems y adaptadores de red, frente a los
intentos de acceso ilegales y el registro de dichas conexiones con el fin de detectar intrusiones.
Si hay que proteger y asegurar un sistema, las protecciones deben implementarse en todas
partes del mismo.

6) ¿Qué son los llamados al sistema (system calls)?

Las llamadas al sistema proporcionan una interfaz con la que poder invocar los servicios que el
sistema operativo ofrece. Estas llamadas, generalmente están disponibles como rutinas escritas en C y
C++, aunque determinadas tareas de bajo nivel, como por ejemplo aquellas en las que se tiene que
acceder directamente al hardware, pueden necesitar escribirse con instrucciones de lenguaje
ensamblador.

7) Describa las 4 (cuatro) condiciones necesarias que un sistema operativo debe garantizar para
prevenirse de que ocurra deadlock.

Que la fuerza te acompañe Página 65


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Ver exámen Diciembre 2003. Pregunta 1.

8) En un sistema con manejo de memoria a través de segmentación, se tiene el siguiente acceso a


memoria en el ambiente.

La dirección esta formada por <numero de segmento>,<desplazamiento>


+-------------+
| 10 | 1324 | Acceso a memoria del proceso P.
+-------------+
...
+-------------------+
10 | 1112 | 32122 |
+-------------------+ Tabla de Segmento para el proceso P.
11 | 10121 | 32235 |
+--------------------+
...
¿El acceso a memoria es válido? Justifique.

Se accede al segmento 10, con un desplazamiento de 1324 posiciones dentro de dicho segmento.
El acceso por número de segmento es correcto ya que tenemos un segmento con número 10.
Chequeamos que el desplazamiento dentro del mismo esté dentro del rango: 32122 – 1112 = 31010.
Este valor, 31010 corresponde a la cantidad de posiciones (bytes) del segmento, por lo que 1324 <
31010, por lo que el acceso a memoria es válido.

9) Describa 3 (tres) métodos utilizados para tener cuenta que bloques de discos están libres.

Ver exámen Marzo 2004. Pregunta 4)c.

10) ¿Que ventaja se tiene en un sistema que utiliza DMA (Direct Memory Access)?
Explique los pasos que son llevados a cabo para la transferencia.

Par aun dispositivo que realice transferencias de gran tamaño, como por ejemplo una unidad de disco,
parece bastante poco apropiado utilizar un procesador (caro) de propósito general para comprobar dicho
estado y para escribir datos en un registro de una controladora de byte en byte, lo cual es un proceso que
se denomina E/S programada. La mayoría de las computadoras evitan sobrecargar a la CPU principal con
las tareas de PIO, descargando parte de este trabajo en un procesador de propósito especia denominado
controladora de acceso directo a memoria (DMA).

Para iniciar una transferencia de DMA, el host escribe un bloque de comando DMA en la memoria. Este
bloque contiene un puntero al origen de una transferencia, un puntero al destino de la transferencia y un
contador de númer de bytes que hay que transferir. La CPU escribe la dirección de este bloque de
comandos en la controladora DMA y luego continúa realizando otras tareas. La controladora DMA se
encarga entonces de operar el bus de memoria directamente, colocando direcciones en el bus para realizar
las transferencias sin ayuda de la CPU principal. En las computadoras de tipo PC, uno de los componentes
estándar es una controladora DMA simple, y las tareas de E/S con control maestro del bus para PC
suelen contener su propio hardware DMA de alta velocidad.

Que la fuerza te acompañe Página 66


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

El procedimiento de negociación entre la controladora de DMA y la controladora de dispositivo se realiza


mediante un par de hilos
denominados DMA-
request y DMA-
acknowledge. La
controladora de
dispositivo coloca una
señal en el hilo DMA-
request cada vez que hay
disponible para
transferencia una palabra
de datos. Esta señal hace
que la controladora de
DMA tome el control del
bus de memoria, coloque
la dirección deseada en
los hilos de dirección de
memoria y coloque una
señal en el hijo DMA-
acknowledge. Cuando la
controladora de
dispositivo recibe la señal
DMA-acknowledge,
transfiere la palabra de
datos a memoria y borra
la señal DMA-request.

Una vez finalizada la transferencia completa, la controladora de DMA interrumpe a la CPU.

11) Defina brevemente que es "Mandatory Access Control" en oposición al concepto de


"Discretionary Access Control"

El Mandatory Access Control, se refiere a un tipo de control de acceso en el cual, el sistema


operativo restringe la habilidad de un sujeto o iniciador de acceso o generalmente ejecutar algún tipo de
operación sobre un objeto o blanco. En la práctica, el sujeto es usualmente un proceso o hilo y los
objetos son archivos o directorios, puertos y/o memoria compartida. Cada uno de los sujetos y objetos
tienen un set de atributos de seguridad. Cuando un sujeto intenta acceder un objeto, una regla de
seguridad ejecutada por el kernel del sistema operativo examina esos atributos de seguridad y decide si
el acceso puede permitirse.

El Discretionary Access Control es un tipo de sistema de control basado en la identidad del sujeto
y/o grupo al que pertenece. Los controles son discretos en el mismo sentido que el usuario. Sin
embargo, el significado del término en la práctica no es tan claro como en la definición del standard
TCSEC.

El Discretionary Access Control es comunmente definido en oposición al Mandatory Access Control.


Ocasionalmente, en un sistema como un todo, se dice que tiene “Discretionary” o “Purely Discretionary”
Access Control como forma de decir que el sistema carece de Mandatory Access Control. Por otra
parte, los sistemas se dice que pueden implementar ambos simultáneamente, cuando DAC se refiere a
una categoría de controles de acceso que los sujetos pueden transferir entre ellos y MAC se refiere a
una segunda categoría de controles de acceso que impone restricciones a la primera.

12) Defina brevemente que es la ACL (Access Control List)

Una lista de control de acceso (ACL) es un concepto de seguridad informática usado para fomentar
la separación de privilegios. Es una forma de determinar los permisos de acceso apropiados a un
determinado objeto, dependiendo de ciertos aspectos del proceso que hace el pedido.

Las ACLs permiten controlar el flujo de tráfico en equipo de redes, tales como routers y switches. Su
principal objetivo es filtrar tráfico, permitiendo o denegando el tráfico de red de acuerdo a alguna

Que la fuerza te acompañe Página 67


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

condición. Si embargo, también tiene usos adicionales, como por ejemplo, distinguir “tráfico interesante”
(tráfico suficientemente importante como para activar o mantener una conexión) en ISDN (red digital de
servicios integrados).

2005 – Febrero
1) Enumere y explique cuales son los tres requisitos que debe cumplir una solución al problema de
la sección crítica.

Ver exámen Marzo 2004. Pregunta 2)a.

2) Ilustre y explique brevemente como se implementa la correspondencia entre direcciones


virtuales y físicas en un esquema de segmentación.

Aunque el usuario puede hacer referencia a los objetos del programa utilizando una dirección
bidimensional, la memoria física real continúa siendo, por supuesto, una secuencia unidimensional de
bytes. Por tanto, debemos definir una implementación para mapear las direcciones bidimensionales
definidas por el usuario sobre las direcciones físicas unidimensionales. Este mapeo se lleva a cabo
mediante la tabla de segmentos. Cada entrada de la tabla de segmentos tiene una dirección base del
segmento y un límite del segmento. La
dirección base del segmento contiene la
dirección física inicial del lugar donde el
segmento reside dentro de la memoria,
mientras que el límite del segmento
especifica la longitud del mismo.

Una dirección lógica estará


compuesta de dos partes: un número de
segmento, s, y un desplazamiento dentro
de ese segmento, d. El número de
segmento se utiliza como índice para la
tabla de segmentos. El desplazamiento d,
de la dirección lógica debe estar
comprendido entre 0 y el límite del
segmento; si no lo está, se producirá una
interrupción hacia el sistema operativo
(intento de direccionamiento lógico más
allá del final del segmento). Cuando el
desplazamiento es legal, se lo suma a la dirección base del segmento y así poder generar la dirección
de memoria física del byte deseado. La tabla de segmentos es, por tanto, esencialmente una matriz de
parejas de registros base-límite.

3) De tres ventajas de la segmentación frente a la paginación.

Ver exámen Marzo 2004. Pregunta 3)b.

4) Indique la diferencia entre planificación a corto, mediano y largo plazo.

- Planificación a corto plazo: La planificación a corto plazo es la realizada por el planificador de


la CPU, el cual selecciona de entre la cola de procesos listos (ya están preparados para
ejecutarse) y le asigna el recurso CPU a uno de ellos. Este tipo de planificador es el que es
invocado más frecuentemente, ya que es el que debe seleccionar un nuevo proceso para que
ejecute en la CPU cada vez que ésta queda libre. Debido al poco tiempo que hay entre
ejecuciones, el planificador a corto plazo debe ser rápido ya que no se debe desperdiciar
muchos ciclos de CPU eligiendo el proceso. Existe en todos los tipos de sistemas operativos.

Que la fuerza te acompañe Página 68


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Planificación a mediano plazo: La idea clave subyacente para introducir este tipo de
planificador es que en ocasiones, puede ser ventajoso eliminar procesos de la memoria (con lo
que dejan de luchar por el CPU) y reducir así el grado de multiprogramación. Después, el
proceso puede volver a cargarse en memoria, continuando su ejecución en el punto en que fue
interrumpido. Este esquema se denomina intercambio ya que el planificador descarga y luego
vuelve a cargar el proceso. Generalmente presente en los sistemas de tiempo compartido y su
invocación no es tan frecuente como el planificador de corto plazo.

- Planificación a largo plazo: El objetivo primordial de este tipo de planificación es proveer al


planificador de la CPU una mezcla equilibrada de trabajos, tales como limitados por CPU o la
E/S. Por ejemplo, cuando la utilización de la CPU es baja, el planificador puede admitir más
trabajos para aumentar el número de procesos listos y, con ello la probabilidad de tener algún
trabajo útil en espera de que se le asigne la CPU. A la inversa, cuando la utilización de la CPU
llega a ser alta, y el tiempo de respuesta comienza a reflejarlo, el planificador a largo plazo
puede optar por reducir la frecuencia de admisión de trabajos. La frecuencia de invocación
depende de la carga del sistema, pero generalmente es mucho menor que la de los otros dos
planificadores. Esta baja frecuencia de uso hace que este planificador pueda permitirse utilizar
algoritmos complejos, basados en las estimaciones de los nuevos trabajos. En algunos
sistemas, el planificador a largo plazo puede no existir o ser mínimo, por ejemplo los sistemas
de tiempo compartido (UNIX) y los sistemas MS Windows, a menudo no disponen de un
planificador a largo plazo, sino que simplemente ponen todos los procesos nuevos en memoria
para que los gestione el planificador a corto plazo. La estabilidad de estos sistemas depende
bien de una limitación física (terminales disponibles p. ej.) así como también de la propia
naturaleza autoajustable de las personas que utilizan el sistema.

5) Describa brevemente los pasos para el manejo de un fallo de páginas (una vez que se determinó
que este ocurrió) en un modelo de paginación por demanda.

Ver exámen Febrero 2004. Pregunta 2.

6) Describa brevemente los algoritmos de reemplazo de página siguientes: FIFO, Óptimo y LRU.

Ver exámen Abril 2003. Pregunta 3.

7) Explique brevemente porqué se produce hiperpaginación (no la defina, ejemplarice).

La sobrepaginación provoca graves problemas de rendimiento. Considere el siguiente escenario,


que está basado en el comportamiento real de los primeros sistemas de paginación que se utilizaron.

El sistema operativo monitoriza la utilización de la CPU. Si esa tasa de utilización es demasiado


baja, se incrementa el grado de multiprogramación introduciendo un nuevo proceso en el sistema. Se
utiliza un algoritmo de sustitución global de páginas, que sustituye las páginas sin tomar en cosideración
a qué proceso pertenecen. Ahora suponga que un proceso entra en una nueva fase de ejecución y
necesita más marcos de memoria. El proceso comenzará a generar fallos de página y a quitar marcos a
otros procesos. Dichos procesos necesitan, sin embargo, esas páginas por lo que también generarán
fallos de página, quitando marcos a otros procesos. Los procesos que gneran fallos de páginas deben
utilizar los procesos de paginación para cargar y descargar las páginas en memoria, y a medida que se
ponen en cola para ser servidos por el dispositivo de paginación, la cola de procesos listos se vacía.
Como los procesos están a la espera en el dispositivo de paginacón, la tasa de utilización de la CPU
disminuye.

El planificador de la CPU ve que la tasa de utilización de la CPU ha descendido e incrementa el


grado de multiprogramación como consecuencia. El nuevo proceso tratará de iniciarse quitando marcos
a los procesos que se estuvieran ejecutando, haciendo que se provoquen más fallos de página y que la
cola del dispositivo de paginación crezca. Como resultado, la utilización de la CPU cae todavía más y el
planificador de la CPU trata de incrementar el grado de multiprogramación todavía en mayor medida. Se
ha producido una sobrepaginación y la tasa de procesamiento del sistema desciende vertiginosamente,
a la vez que se incrementa enormemente la tasa de fallos de página. Como resultado, también se
incrementa el tiempo efectivo de acceso a memoria y no se llegará a realizar ningún trabajo útil porque
los procesos invertirán todo su tiempo en los mecanismos de paginación.

Que la fuerza te acompañe Página 69


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

8) Enumere y describa brevemente tres métodos de planificación de disco.

Métodos de planificación de disco:

- FCFS: Ver exámen Marzo 2003. Pregunta 1.

- SSTF: Ver exámen Marzo 2003. Pregunta 1.

- SCAN: Ver exámen Marzo 2003. Pregunta 1.

- C-SCAN: Ver exámen Marzo 2003. Pregunta 1.

- LOOK: Ver exámen Marzo 2004. Pregunta 4)b.

- C-LOOK: Ver exámen Marzo 2004. Pregunta 4)b.

9) ¿Cuándo se dice que un despachador es apropiativo?

Ver exámen Marzo 2003. Pregunta 12.

10) Utilizando el algoritmo del banquero, y dada la siguiente situación de procesos y recursos

Asignación Máximo Disponible


A B C D A B C D A B C D
P0 0 0 1 2 0 0 1 2 1 5 2 0
P1 1 0 0 0 1 7 5 0
P2 1 3 4 5 2 3 5 6
P3 0 6 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6
Determine si el sistema está en estado seguro, y en caso afirmativo, si al llegar un solicitud
del proceso P1 de (0,4,2,0), ésta puede ser satisfecha de inmediato. Justifique su/s respuesta/s.

Aplilcando el algoritmo del banquero tenemos que realizar los siguientes cálculos:
Obtener las necesidades de cada proceso, haciendo Máximo – Asignación para cada recurso, lo que
llamaremos necesidad:
A B C D
P0 0-0 = 0 0-0 = 0 1-1 = 0 2-2 = 0
P1 1-1 = 0 7-0 = 7 5-0 = 5 0-0 = 0
P2 2-1 = 1 3-3 = 0 5-4 = 1 6-2 = 4
P3 0-0 = 0 6-6 = 0 5-3 = 2 2-2 = 0
P4 0-0 = 0 6-0 = 6 5-1 = 4 6-4 = 2
A B C D
P0 0 0 0 0
P1 0 7 5 0
P2 1 0 1 4
P3 0 0 2 0
P4 0 6 4 2

Creo el vector Trabajo con las unidades disponibles de cada recurso T: (1, 5, 2, 0)

Y el vector Fin con (False, False, False, False, False), que corresponde a si terminamos un proceso.

Iniciamos el algoritmo buscando una secuencia que muestre si el sistema está en estado seguro o no.
Eligiendo de a uno los procesos, y si hay recursos suficientes, lo ponemos como finalizado y liberamos
todos los recursos.

Paso 1.
Tomo P0, Necesidad (0, 0, 0, 0)

Que la fuerza te acompañe Página 70


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Trabajo (1, 5, 2, 0)
Necesidad < Trabajo, para todos los recursos, entonces ejecuto y actualizo los vectores.

T : (1+0, 5+0, 2+1, 0+2) = (1, 5, 3, 2)


Fin : (True, False, False, False, False)

Paso 2.
Tomo P2, Necesidad (1, 0, 1, 1)
Trabajo (1, 5, 3, 2)
Necesidad < Trabajo, para todos los recursos, entonces ejecuto y actualizo los vectores.

T : (1+1, 5+3, 3+4, 2+5) = (2, 8, 7, 7)


Fin : (True, False, True, False, False)

Paso 3.
Tomo P1, Necesidad (0, 7, 5, 0)
Trabajo (2, 8, 7, 7)
Necesidad < Trabajo, para todos los recursos, entonces ejecuto y actualizo los vectores.

T : (2+1, 8+0, 7+0, 7+0) = (3, 8, 7, 7)


Fin : (True, True, True, False, False)

Paso 4.
Tomo P3, Necesidad (0, 0, 2, 0)
Trabajo (3, 8, 7, 7)
Necesidad < Trabajo, para todos los recursos, entonces ejecuto y actualizo los vectores.

T : (3+0, 8+6, 7+3, 7+2) = (3, 14, 10, 9)


Fin : (True, True, True, True, False)

Paso 5.
Tomo P4, Necesidad (0, 6, 4, 2)
Trabajo (3, 14, 10, 9)
Necesidad < Trabajo, para todos los recursos, entonces ejecuto y actualizo los vectores.

T : (3+0, 14+0, 10+1, 9+4) = (3, 14, 11, 13)


Fin : (True, True, True, True, True)

Hay una secuencia en la cual podemos completar todos los procesos con los recursos disponibles, por
lo que podemos concluir que el sistema se encuentra en un estado seguro.

Al llegar la solicitud de P2 (0, 4, 2, 0) procedemos a ver si se puede completar:


- Chequeamos si hay disponibilidad (con respecto a los datos originales), T: (1, 5, 2, 0), por lo
que por esta parte podemos decir que puede ser completada.
- Chequeamos si no sobrepasamos el máximo permitido para el proceso Máxs (2, 3, 5, 6),
por lo que encontramos que para el recurso B estamos solicitando 4 unidades, cuando como
máximo solamente podemos pedir 3.

Por lo tanto, la solicitud de P2 no puede ser satisfecha ya que sobrepasa el máximo permitido para P2,
aunque si el máximo fuese superior, la misma podría ser satisfecha inmediatamente.

11) Defina brevemente: sistema distribuido y sistema de tiempo real.

Ver exámen Marzo 2004. Pregunta 1)b.

12) Explique porqué debe protegerse el vector de interrupciones y las rutinas de procesamiento de
las interrupciones. ¿Cómo se logra esta protección mediante hardware?

Que la fuerza te acompañe Página 71


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

El vector de interrupciones debe protegerse para evitar que intencional o accidentalmente un


programa de usuario pueda modificar dicho vector e insertar alguna interrupción y que cuando esta
ejecute, provoque efectos no deseados en el sistema. Es decir que se podría insertar una nueva
interrupción (o modificar una existente) en dicho vector de manera no autorizada para que cuando la
misma sea invocada, haga algo que el sistema operativo no debería hacer.

Las rutinas de procesamiento de interrupciones deben ser protegidas ya que al igual que el vector
de interrupciones, proveen un servicio el cual debe ser provisto de la misma forma para todos los
usuarios (y el sistema) y si sucediera, al igual que con el vector, que un programa mal intencionado las
modificara, podría a llevar al sistema operativo a realizar acciones no deseadas (virus por ejemplo).

La protección mediante hardware se logra con el bit de modo, este bit distingue entre modo usuario
(programas de usuario) y modo monitor o supervisor (reservado para la ejecución de rutinas del sistema
operativo). Cuando un programa de usuario se está ejecutando, se realiza en modo usuario, pero si
necesita tener acceso a una operación restringida (lectura de un archivo p. ej.). En modo monitor, todas
las operaciones de hardware están disponibles y el sistema operativo es el único que las ejecuta. La
ejecución de instrucciones privilegiadas en el modo monitor garantiza que los procesos a nivel de
usuario no accedan directamente a dispositivos de E/S.

13) Mencione el principal problema que debe enfrentar un sistema operativo si ejecuta sobre un
equipo multiprocesador, con una única memoria común.

En un sistema operativo multiprocesador y con memoria compartida (entre estos), el principal


problema que debe enfrentar es el de mantener los registros del cada uno de los procesadores con los
datos actualizados que se encuentran en la memoria principal. Por ejemplo si tenemos dos
procesadores que están trabajando en dos hilos diferentes del mismo proceso, si uno modifica cierto
valor de una variable y no refleja de manera correcta el cambio en memoria principal para que el otro
procesador al momento de utilizarla, trabaje con el valor actualizado; por lo que nos encontramos con el
problema para comunicar dos procesadores que actualicen de manera correcta sus registros con los
valores en memoria correspondiente y comunicar al resto de los procesadores de dicha actualización.

14) Describa brevemente dos limitaciones de los hilos a nivel de usuario sin soporte del núcleo.

Ver exámen Agosto 2003. Pregunta 3.

15) ¿Cuál es la principal diferencia que hay entre implementar un servicio de comunicación de
mensajes entre procesos de un mismo computador, respecto a hacerlo entre hilos de un mismo
proceso?

La principal diferencia reside en la forma de comunicación entre los hilos o procesos, ya que para
los procesos, es necesario definir una zona de memoria la cual será compartida por los procesos para
comunicarse entre sí, pero con los hilos, esta necesidad de declarar cierta zona de memoria compartida
no es necesaria ya que ellos (los hilos pertenecientes a un proceso) comparten la memoria desde el
momento que nacen.

16) Mencione una ventaja y una desventaja de un sistema monolítico.

El sistema monolítico tiene la ventaja que no posee casi overhead, ya que cuando invocamos una
función del sistema, la misma no deve viajar varios niveles para que realmente cause el efecto.

Por otra parte cuenta con la gran desventaja que es dificil de expandir y agregar nuevas
funcionalidades ya que todo está a un mismo nivel, así como también dificultades para hacer una
correcta depuración del mismo.

Que la fuerza te acompañe Página 72


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2005 – Marzo
1) Describa lo que entiende por sistema altamente acoplado/integrado.

Un sistema fuertemente acoplado es aquel que comparte la memoria y un reloj global, cuyos tiempos de
acceso son similares para todos los procesadores.

2) ¿ Qué es lo que implementan los manejadores de los dispositivos (device drivers) ?


¿ Forman parte del sistema operativo ?. Justifique.

Un device driver o controlador de dispositivo es un programa que permite al sistema operativo


interactuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz,
generalmente estandarizada para usarlo. Se puede esquematizar como un manual de instrucciones que le
indica cómo debe controlar y comunicarse con un dispositivo en particular. Por lo tanto es una pieza
esencial, sin la cual no se podría usar el hardware.

Existen distintos tipos de controladores como tipos de periféricos y también es común encontrar más de
un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades.

Debido a que el software de controladores de dispositivo se ejecuta como parte del sistema operativo,
con acceso sin restricciones a todo el equipo, resulta esencial que sólo se permitan los controladores de
dispositivos autorizados.

Los device drivers son programas añadidos al núcleo del sistema operativo, concebidos inicialmente
para gestionar periféricos y dispositivos especiales. Los controladores de dispositivo pueden ser de dos
tipos: orientados a caracteres u orientados a bloques. La diferencia fundamental entre ambos tipos de
controladores es que los primeros reciben o envían la información caracter a caracter; en cambio los
controladores de dispositivos de bloques procesan, como su nombre lo indica, bloques de cierta longitud en
bytes.

Los controladores de dispositivo han sido tradicionalmente programas binarios puros, sin embargo no
hay razón para que ello sea así ya que un controlador de dispositivo puede estar incluído dentro de un
programa (.exe p.ej), con la condición de que el código del controlador sea el primer segmento de dicho
programa.

3) Enuncie y describa brevemente 3 tipos de llamados al sistema (system calls).

Las llamadas al sistema proporcionan una interfaz con la que poder invocar los servicios que el sistema
operativo ofrece. Estas llamadas, generalmente, están disponibles como rutinas escritas en C y C++,
aunque determinadas tareas de bajo nivel, como por ejemplo aquellas en las que se tiene que acceder
directamente al hardware, pueden necesitar escribirse con instrucciones de lenguaje ensamblador.

El sistema de soporte en tiempo de ejecución de la mayoría de los lenguajes de programación


proporciona una interfaz de llamadas al sistema. Dicha interfaz intercepta las llamadas a función dentro de
las API e invoca la llamada al sistema necesaria. Habitualmente, cada llamada al sistema tiene asociado un
número y la interfaz de llamadas al sistema mantiene una tabla indexada según dichos números. Usando
esta tabla, la interfaz de llamadas al sistema invoca la llamada necesaria del kernel del sistema operativo y
devuelve el estado de la ejecución de la llamada al sistema y los posibles valores de retorno.

Las llamadas al sistema se llevan a cabo de direfentes formas, dependiendo de la computadora que se
utilice. A menudo, se requiere más información que simplemente la identidad de la llamada as sistema
deseada. El tipo exacto y la cantidad de información necesaria varían según el sistema operativo y la
llamada concreta que se efectúe.

Las llamadas al sistema pueden agruparse de forma muy general en 5 categorías principales:
- Control de procesos: Un programa en ejecución necesita poder interrumpir dicha ejecución
bien de forma normal (end) o de forma anormal (abort). Si se hace una llamada al sistema para
terminar de forma anormals el programa actualmente en ejecución, o si el programa tiene un
problema y da lugar a una excepción de erro, en ocasiones se produce un volcado de memoria
y se genera un mensaje de error.

Que la fuerza te acompañe Página 73


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Las operaciones normales que se realizan para el control de procesos son las siguientes:
○ Terminar / Abortar.
○ Cargar / Ejecutar.
○ Crear procesos / Terminar procesos.
○ Obtener atributos del proceso / Definir atributos del proceso.
○ Esperar para obtener tiempo.
○ Esperar suceso / Señalizar suceso.
○ Asignar memoria / Liberar memoria.

- Manipulación de archivos: En primer lugar necesitamos poder crear y borrar archivos. Ambas
llamadas al sistema requieren que se proporcione el nombre del archivo y quizás algunos de los
atributos del mismo. Una vez que dicho archivo se ha creado, necesitamos abrirlo y
utilizarlo.También tenemos que leerlo y escribir en él, o reposicionarnos dentro del mismo, es
decir volver a un punto anterior o saltar al final del archivo. Por último, tambén tenemos que
poder cerrar el archivo, indicando que ya no deseamos utilizarlo más. También es necesario
poder realizar estas operaciones con directorios, si disponemos de una estructura de directorios
para organizar los archivos en el sistema de archivos. Además, para cualquier archivo o
directorio, necesitamos poder determinar los valores de diversos atributos y, quizá cambiarlos,
si fuera necesario. Los atributos de archivo incluyen el nombre del mismo, el tipo, los códigos de
protección, la información de las cuentas de usuario, etc.
Las operaciones normales que se realizan para la manipulación de archivos son las siguientes:
○ Crear archivos / Borrar archivos.
○ Abrir archivos / Cerrar archivos.
○ Leer archivos / Escribir archivos / Reposicionar.
○ Obtener atributos de archivo / Definir atributos de archivo.

- Manipulación de dispositivos: Un proceso puede necesitar varios recursos para ejecutarse:


memoria principal, unidades de disco, acceso a archivos, etc. Si los recursos están disponibles,
pueden ser concedidos y el control puede devolverse al proceso de usuario. En caso contrario,
el proceso tendrá que esperar hasta que haya suficientes recursos disponibles.
Puede pensarse en los distintos recursos controlados por el sistema operativo como si
fueran dispositivos. Algunos de esos dispositivos son dispositivos físicos (discos), mientras que
otros puede pensarse como en dispositivos virtuales o abstractos (archivos). Si hay varios
usuarios en el sistema, éste puede requerirnos primero que solicitemos el dispositivo con el fin
de asegurarnos el uso exclusivo del mismo. Una vez que hayamos terminado con el dispositivo,
lo debemos liberar. Una vez solicitado el dispositivo (y que se nos haya asignado), podremos
leer, escribir y reposicionar el mismo, al igual que con los archivos.
Las operaciones normales que se realizan para la manipulación de dispositivos son las
siguientes:
○ Solicitar dispositivo / Liberar dispositivo.
○ Leer dispositivo / Escribir dispositivo / Reposicionar.
○ Obtener atributos de dispositivo / Definir atributos de dispositivo.
○ Conectar dispositivos lógicamente / Desconectar dispositivos lógicamente.

- Mantenimiento de información: Muchas llamadas al sistema existen simplemente con el


propósito de transferir información entre el programa de usuario y el sistema operativo. Las
llamadas al sistema pueden ser para solicitar o setear la fecha y/o hora actuales del sistema;
otras pueden devolver información sobre el sistema, como por ejemplo el número actual de
usuarios, el número de versión del sistema operativo, la cantidad de memoria libre o de espacio
en disco, etc.
Además, el sistema operativo mantiene información sobre todos sus procesos, y se usan
llamadas al sistema para acceder a esa información. Generalmente, también se usan llamadas
para configurar la información de los procesos.
Las operaciones normales que se realizan para el mantenimiento de informaciónson las
siguientes:
○ Obtener la hora o fecha / Definir la hora o fecha.
○ Obtener los datos del sistema / Establecer los datos del sistema.
○ Obtener los atributos de procesos, archivos o dispositivos.
○ Establecer los atributos de procesos, archivos o dispositivos.

Que la fuerza te acompañe Página 74


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Comunicaciones: Existen dos modelos comunes de comunicación interprocesos: el modelo de


paso de mensajes y el modelo de memoria compartida.
En el modelo de paso de mensajes, los procesos que se comunican
intercambianmensajes entre sí para transferirse información. Los mensajes pueden
intercambiarse entre los procesos directa o indirectamente a través de un buzón de correo
común. Antes de que la comunicación tenga lugar, debe abrirse una conexión. Debe conocerse
de antemano el nombre del otro comunicador, ya sea otro proceso del mismo sistema o un
proceso de otra computadora que esté conectada a través de la red de comunicaciones.
Usualmente, el proceso receptor debe conceder permiso para que la comunicación tenga lugar,
con una llamada de aceptación de la conexión.
En el modelo de memoria compartida, los procesos usan las llamadas al sistema para
crear y obtener acceso a regiones de la memoria que son propiedad de otros procesos.
Recuerde que, normalmente, el sistema operativo intenta evitar que un proceso acceda a la
memoria de otro proceso. La memoria compartida requiere que dos o mas procesos acuerden
eliminar esta restricción; entonces pueden intercambiar información leyendo y escribiendo datos
en áreas de la memoria compartida. La forma de los datos y su ubicación son determinadas por
parte de los procesos y no están bajo el control del sistema operativo. Los procesos también
son responsables de asegurar que no escriban simultaneamente en las mismas posiciones.
El modelo de paso de mensajes resulta útil para intercambiar cantidades pequeñas de
datos, dado que no hay posibilidad de que se produzcan conflictos; también es más fácil de
implementar que el modelo de memoria compartida par ala comunicación interprocesos. Por
otra parte, la memoria compartida permite efectuar la comunicación a la máxima velocidad
posible y con la mayor comodidad, dado que puede realizarse a velocidad de memoria cuando
tiene lugar dentro de una misma computadora. Sin embargo, plantea problemas en lo relativo a
la protección y sincronización entre los procesos que comparten la memoria.
Las operaciones normales que se realizan para comunicaciones son las siguientes:
○ Crear conexiones de comunicación / Eliminar conexiones de comunicación.
○ Enviar mensajes / Recibir mensajes.
○ Transferir información de estado.
○ Conectar dispositivos remotos / Desconectar dispositivos remotos.

4) ¿ Cuales son las etapas previas por las que debió pasar un proceso que se encuentra en la lista
de procesos listos, a partir de un archivo que contiene un código fuente escrito en lenguaje C ?

El proceso tuvo que pasar por las siguientes etapas, previo a ser colocado en la lista de procesos
“listos”:
- Compilado
- Linkeditado
- Invocado / Creado
- Admitido

5) Enuncie y describa una herramienta que brindan los sistema operativos de tipo UNIX para
permitir la sincronización entre los procesos.

Semáforos.
Un semáforo S, es una variable entera a la que, dejando aparte la inicialización, sólo se accede
mediante dos operaciones atómicas standard wait() y signal() - esto parece a monitores, por lo que no
se verán más y serán sustituídas por las queridas p (del término holandésproberen, probar) y v
(verhogen, incrementar).

Que la fuerza te acompañe Página 75


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Todas las modificaciones del valor entero del semáforo en las operaciones p y v deben ejecutarse
de forma indivisible. Es decir que, cuando un proceso modifica el valor del semáforo, ningún otro
proceso puede modificar simultáneamente el valor de dicho semáforo. Además, en el caso del p, la
prueba del valor entero de S (s ≤0), y su posible modificación (s--) también se deben ejecutar sin
interrupción.

6) Escriba un algoritmo en lenguaje de alto nivel (C o PASCAL) que solucione el problema de la


sección crítica para dos procesos en un sistema monoprocesador. Asuma que las sentencias
son ejecutadas de forma atómica. Solo se permitirá el uso de variables globales a los dos
procesos, y es posible utilizar ‘busy waiting’. ¿ Que requerimientos debe satisfacer su solución
para que esta sea correcta ? Solo enuncielos, no los describa.

Lo que pide este ejercicio es escribir el algoritmo de Becker.


Procedimiento 1 Procedimiento 2
While TRUE do { While TRUE do {
flag_a = TRUE; //aviso que voy a entrar a la sección crítica flag_b = TRUE;
while flag_b do{//si el otro quiere entrar a la sección crítica while flag_a do {
if (turno == 2) then {// hay alguien esperando if (turno == 1) then {
flag_a = FALSE//bajo mi pedido flag_b = FALSE;
while (turno == 2) do; //espero que termine while (turno == 1) do;
flag_a = TRUE; //vuelvo a levantar mi aviso flag_b = TRUE;
} }
} }
SECCIÓN_CRÍTICA SECCIÓN_CRÍTICA
turno = 2; //cedo el turno por si el otro quiere entrar turno = 1;
flag_a = FALSE; flag_b = FALSE;
OTRAS_COSAS OTRAS_COSAS
} }

7) En un sistema monoprocesador: ¿ Són necesarias la operaciones ‘Test and Set’ y ‘Swap’ ?


Justifique. Si considera que es necesario: ¿ Quién provee la operación ‘Test and set’ ?

- Test and Set: Puede utilizarse para leer y modificar una variable atómicamente. La
característica importante es que esta instrucción se ejecuta atómicamente. Por lo tanto, si dos
instrucciones TestAndSet se ejecutan simultáneamente (cada una en un CPU diferente), se
ejecutarán secuencialmente en un orden arbitrario.
- Swap: Se utiliza para intercambiar el valor de dos variables, a diferencia de la instrucción
TestAndSet, opera sobre los contenidos de dos palabras. También se ejecuta de forma atómica,
al igual que la instrucción TestAndSet.

Si, la necesidad de la instrucción Test And Set, radica en hacer la comprobación de un valor y su
cambio de forma que no pueda ser interrumpido por otro proceso. Actúa de la misma forma que un
semáforo.
La operación T&S es provista por el hardware, cuando el procesador ejecuta esta instrucción.

8) ¿El espacio de direcciones virtuales de un proceso depende de la arquitectura (hardware) o del


sistema operativo ?

El espacio de direcciones virtuales de un proceso hace referencia a la forma lógica (virtual) de


almacenar un proceso en la memoria. Típicamente, esta forma consiste en que el proceso comienza en
cierta dirección lógica y está almacenado de forma contigua en la memoria. Sin embargo, la memoria física
puede estar organizada en marcos de página y los marcos de páginas físicas asignados a un proceso
pueden no ser contiguos. Es responsabilidad de la unidad de gestión de memoria (MMU) establecer la
correspondencia entre las páginas lógicas y los marcos de página física de la memoria.

El espacio de direcciones virtuales depende de ambos (hardware y sistema operativo).

Depende de la arquitectura, ya que esta define cuantos bits están disponibles para propósitos de
direccionamiento.

Que la fuerza te acompañe Página 76


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Depende del sistema operativo ya que la forma en que el sistema operativo fue implementado puede
introducir límites adicionales sobre aquellos impuestos por la arquitectura

9) Según su respuesta anterior: Si tenemos una arquitectura de 64 bits con un sistema operativo en
32 bits. ¿Cual es el tamaño máximo de direccionamiento posible para un proceso ?

2^32 bytes

10) Enumere dos ventajas de utilizar librerías dinámicas en vez de librerías estáticas.

Las librerías dinámicas, es el término con el que se refiere a los archivos con código ejecutable que se
cargan bajo demanda de un programa por parte del sistema operativo. Las principales ventajas que
presentan este tipo de librerías son las siguientes:

- Reducen el tamaño de los archivos ejecutables: Gran parte del código puede estar
almacenado en bibliotecas y no en el propio ejecutable, lo que redunda en una mejor
modularización.
- Pueden estar compartidas entre varias aplicaciones: Si el código es suficientemente
genérico, puede resultar de utilidad para múltiples aplicaciones.
- Facilitan la gestión y aprovechamiento de la memoria del sistema: La carga dinámica
permite al sistema operativo aplicar algoritmos que mejoren el rendimiento del sistema cuando
se carguen estas bibiliotecas. Además, al estar compartidas, basta con mantener una copia en
memoria para todos los programas que la utilicen.
- Brindan mayor flexibilidad frente a cambios: Es posible mejorar el rendimiento o solucionar
pequeños errores distribuyendo únicamente una nueva versión de la biblioteca dinámica.
Nuevamente, esta corrección o mejora será aprovechada por todas las aplicaciones que
compartan dicha biblioteca.

Sin embargo, no todo son ventajas, dado que las dlls son muy comunes y muchos programas usan las
mismas; pero debido a la evolución, cada una de las dlls evoluciona incorporándose mejoras pero
modificándolas de tal forma que dejan de ser compatibles. Esto puede producir dos efectos no deseados:
- La instalación de un programa reemplace una DLL con una nueva versión no compatible.
- La desinstalación de un programa borre una DLL compartida.
En ambos casos, el resultado es que dejan de funcionar los programas que utilizaban la vieja versión.

11) Con la estructura Inodo utilizada en sistemas de archivos tipo UNIX ¿ Qué tipos de archivos se
pueden representar ?
a- Archivo (de texto, ejecutables, datos, etc).
b- Directorios.
c- Archivos y directorios.
d- Archivos, directorios y enlaces débiles (soft link).
e- Archivos, directorios, enlaces débiles y fuertes (hard link).

Especifique la mejor opción y justifique brevemente.

Opción e

El I-nodo es una estructura de datos propia de los sistemas de archivos tradicionalmente empleados
en los sistemas operativos tipo UNIX como es el caso de Linux. Un inodo continene las características
(permisos, fechas, ubicación, pero NO el nombre) de un archivo regular, directorio, o cualquier otro
objeto que pueda contener el sistema de ficheros.

El término “I-nodo” refiere generalmente a inodos en discos que almacenan archivos regulares,
directorios y enlaces simbólicos. El concepto es particularmente importante para la recuperación de los
sistemas de archivos dañados.

12) Mencione los atributos más importantes de un inodo.

Los atributos más importantes del i-nodo son los siguientes:

Que la fuerza te acompañe Página 77


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- El identificador de dispositivo del dispositivo que alberga al sistema de archivos.


- El número de i-nodo que identifica al archivo dentro del sistema de archivos.
- Longitud del archivo en bytes.
- El identificador de usuario del creador o un propietario del archivo con derechos diferenciados.
- El identificador de grupo de un grupo de usuarios con derechos diferenciados.
- El modo de acceso: capacidad de leer, escribir, y ejecutar el archivo por parte del propietario,
del grupo y de otros usuarios.
- Las marcas de tiempo con las fechas de última modificación, acceso y de alteración del propio i-
nodo.
- El número de enlaces, esto es, el número de nombres (entradas de directorio) asociados con
este i-nodo.
El número de enlaces se emplea por el sistema operativo para eliminar el archivo del sistema de
ficheros, tanto el i-nodo como el contenido, cuando se han borrado todos los enlaces y el contador
queda a cero.

13) Sea un disco con 32 cilindros numerados del 0 al 31, y la siguiente cola de pedidos:
12, 18, 1, 15, 2, 13, 17, 6, 22 y 16.
Haga una tabla que muestre la secuencia de planificación de atención de los pedidos para los
algoritmos First Come First Served, Shortest Seek Time First, SCAN, C-SCAN, LOOK y C-LOOK.
Suponga que la cabeza del disco está ubicada sobre el cilindro 30.
Nota: En los algoritmos que pueda haber más de una opción, elija una y aclare el criterio.

1 2 3 4 5 6 7 8 9 10
FCFS 12 18 1 15 2 3 17 6 22 16
SSTF 22 18 17 16 15 13 12 6 2 1
SCAN 22 18 17 16 15 13 12 6 2 1
C-SCAN 1 2 6 12 13 15 16 17 18 22
LOOK 22 18 17 16 15 13 12 6 2 1
C-LOOK 1 2 6 12 13 15 16 17 18 22

2005 – Julio
1) ¿Cuál es la principal ventaja de la multiprogramación?

Logra el incremento de utilización de CPU. Esto se consigue al cargar varios procesos en memoria y
alternar la ejecución cuando se producen requerimientos de E/S por ejemplo.

Ver exámen Agosto 2003. Pregunta 1.

2) ¿De qué forma se puede garantizar que todos los accesos a los dispositivos, por parte de un
proceso, se deban hacer a través del sistema operativo?

Obligando a que las instrucciones de hardware que acceden al dispositivo sean privilegiadas. De esta
forma, solo el sistema operativo puede ejecutarlas.

3) Describa tres servicios que debe brindar el sistema operativo.

Ejecución de programas:
Realiza todas las tareas relativas a la ejecución de un programa (carga, linkeo dinámico, fin de
ejecución, etc) en nombre del usuario.

Operaciones de I/O:
Brinda una interfaz abstracta sobre los dispositivos de I/O, permitiendo al usuario ignorar los
detalles de bajo nivel de acceso a los mismos. Esto permite además lograr una mayor eficiencia y un
manejo más seguro de los mismos.

Que la fuerza te acompañe Página 78


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Manipulación del filesystem:


Permite al usuario realizar operaciones de alto nivel (lectura, escritura, etc) sobre archivos
almacenados en diferentes medios. Esto permite al usuario lograr un almacenamiento persistente de sus
datos y programas.

Comunicaciones:
Brinda mecanismos de intercambio de información entre procesos, que se pueden encontrar en la
misma máquina o no. Dichos mecanismos se pueden implementar mediante
memoria compartida o pasaje de mensajes.

Detección de errores:
Brinda mecanismos para aislar a los usuarios de posibles errores de hardware, o errores producidos
por procesos de otros usuarios.

Además, brindan asignación de recursos, contabilización y protección en sistemas multiusuario.

Ver exámen Diciembre 2004. Pregunta 5.

4) ¿Qué son los llamados al sistema (system calls)?

Los llamados al sistema proveen una interfaz entre los procesos y el sistema operativo a través de la
cual los procesos pueden acceder a los servicios que este brinda.

Ver exámen Diciembre 2004. Pregunta 6.

5) Para hacer un llamado al sistema, ¿es necesario estar en modo monitor o de usuario? Justifique.

Los llamados al sistema son ejecutados por procesos de usuario y por lo tanto ejecutan en modo
usuario. Para procesar el llamado el sistema operativo trabaja en modo monitor y una vez finalizado, antes
de retornar el control al proceso, vuelve a modo usuario.

6) En el diseño de un sistema operativo, ¿cuál debiera haber ido la justificación de elegir un


sistema monolítico frente a un diseño por capas?

La necesidad de implementar un sistema con mayor rendimiento. El sistema monolítico es más


eficiente ya que disminuye la carga de la comunicación entre capas.

7) En una arquitectura multiprocesador, ¿sería conveniente utilizar un sistema operativo cuyas


primitivas o servicios no sean en su mayoría reentrantes?. Justifique.

No, dado que el código no reentrante si es ejecutado simultáneamente por más de un proceso puede
generar inconsistencias.

8) En una arquitectura multiprocesador, describa las ventajas y desventajas de contar con cache a
nivel de los procesadores.

La cache a nivel de procesador incrementa el desempeño ya que los procesadores pueden obtener los
datos de la cache (copias de los datos en memoria principal) y evitar la búsqueda en la memoria principal,
que insume mucho más tiempo.

Por otro lado, se debe mantener la coherencia entre los datos de las caches de cada uno de los
procesadores y los datos que se encuentran en memoria principal, lo cual vuelve más complejo el hardware
necesario.

9) En una arquitectura multiprocesador con segmentación, describa los pasos y dificultades en


ocasión de cambiar un segmento de lugar como resultado de reorganizar la memoria.

- Localizar espacio libre contiguo de tamaño suficiente para ubicar el segmento a mover.
- Bloquear los procesos que referencial al segmento físico a reubicar. Mover el segmento.

Que la fuerza te acompañe Página 79


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Modificar las tablas de segmento de los procesos antes mencionados (colocando en la entrada
correspondiente el nuevo valor base y límite).
- Desbloquear los procesos.

10) Mencione las características principales de la protección y el compartimiento de segmentos en


una arquitectura con manejo de memoria a través de segmentación.

Dado que existen segmentos de instrucciones de código y de datos, a cada uno de ellos se les puede
asociar un modo de acceso (lectura/escritura). De esta forma, se pueden generar controles a través de
hardware que permitan garantizar el acceso a los mismos por parte de los programas. Compartir segmentos
de códigos (que son segmentos de lectura), permite maximizar el uso de la memoria principal.

Los procesos que comparten un segmento de código, solo manejan la referencia al segmento
compartido por ambos, y no hay necesidad de tener varias copias de un mismo
segmento.

11) Explique como es un sistema RAID 0+1 y describa sus ventajas.

El nivel de RAID 0+1 fracciona los datos (“stripping”) para mejorar el rendimiento, pero también utiliza un
conjunto de discos duplicados para conseguir redundancia de datos de manera de aumentar la tolerancia
ante fallas. Al ser una variedad de RAID híbrida, RAID 0+1 combina las ventajas de rendimiento de RAID 0
con la redundancia que aporta RAID 1.

12) En el diseño de un sistema de archivos tipo Unix, ¿ud. Pondría el nombre de archivo dentro del i-
nodo? Justifique.

No, en unix los inodos contienen un número único que identifica el archivo. El nombre se maneja en la
estructura del sistema de archivos de manera de poder referenciar al mismo archivo con distinto nombre.

13) Si se dispone de un sistema operativo que no implementa el concepto de memoria virtual, ¿qué
problemas identifica en la ejecución de los procesos? ¿Podría existir la multiprogramación en
ese sistema?

No podrían existir procesos de tamaño mayor que la memoria física disponible ya que los procesos
deben cargarse completamente en memoria para ejecutar. Si puede existir multiprogramación, limitada por
la cantidad de procesos que puedan cargarse completos simultáneamente.

Que la fuerza te acompañe Página 80


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2005 – Diciembre
1) En un equipo multiprocesador que dispone de 4 procesadores, se instaló un sistema operativo
basado en multiprocesamiento simétrico. ¿Los procesos del sistema operativo pueden ejecutar
en cualquiera de ellos, o son restringidos a ser ejecutados en algún procesador específico?De
estar restringido, describa como se organiza la estructura de los procesadores.

Al ser un sistema operativo simétrico (SMP) los procesos del sistema operativo pueden ejecutar en
cualquier procesador sin restricciones.

2) Explicar los sistemas con estructura basada en microkernel.

En una arquitectura basada en microkernel, el sistema operativo se ocupa solo de unas pocas
funciones, reduciendo el núcleo a su mínima expresión. El resto de funciones pasan a estar en el espacio
de usuario.

Se debe de proveer una interfase de comunicación entre los procesos de usuarios y los procesos que
proveen los servicios del sistema.

Ver exámen Abril 2003. Pregunta 9.

3) ¿Cuáles son las principales actividades del sistema operativo relacionadas con manejo de
memoria principal? ¿y cuáles son las relacionadas con el manejo de volúmenes y archivos?

Manejo de Memoria principal


Mantener registros de qué partes de la memoria están siendo utilizados y por quién.

Decidir qué procesos serán cargados en memoria cuando quede espacio libre.
Asignar y quitar espacio de memoria de acuerdo a la necesidad.

Manejo de volúmenes y archivos:


Definir, eliminar, incorporar volúmenes. Administración de volúmenes.
Creación y eliminación de archivos.
Creación y eliminación de directorios.
Soportar primitivas para la manipulación tanto de archivos como de directorios.
Mapeo de archivos en el almacenamiento secundario.
Respaldos de archivos en medios de almacenamiento estables (no volátiles).

4) Cuando los procesos realizan pedidos a dispositivos de entrada/salida. Además de la cola de


procesos bloqueados, ¿en qué otra cola del sistema son alojados mientras esperan que el
dispositivo realice el pedido?

Cada dispositivo de entrada/salida posee de una cola de espera. Un proceso al ejecutar una operación
de entrada/salida sobre un dispositivo, también es puesto en la cola respectiva al dispositivo.

5) ¿Cuál es el motivo de que en el PCB (Process Control Block) se reserve lugar para los registros
de la CPU?

El lugar es reservado debido a que cuando un proceso se le quita el recurso procesador, es necesario
guardar su estado de ejecución. De esta forma, cuando es elegido nuevamente para hacer uso del
procesador los registros son copiados del PCB a los registros del procesador.

6) En un sistema monoprocesador, que gran ventaja tiene, a nivel de procesos de usuario, un


sistema que soporte hilos (threads) a nivel de sistema, frente a uno que no lo haga.

Aprovechar que ejecuten otros hilos del mismo procesos mientras alguno de ellos se haya bloqueado en
una operación de entrada/salida. Esto es posible ya que el sistema operativo reconoce los hilos como
unidades de ejecución independientes.

Ver exámen Agosto 2003. Pregunta 3.

Que la fuerza te acompañe Página 81


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

7) En un sistema con planificador de colas multinivel, en donde a cada nivel se le asigna un


algoritmo de planificación round-robin con diferente quantum y teniendo mayor prioridad las
colas con quantum más chico, ¿qué tipos de procesos (alto consumo CPU o alto consumo de
operaciones de E/S) clasificarían para colas con quantum más bajo y cuáles otros para colas con
quantum más alto.

La prioridad para el uso de un recurso es inversamente proporcional al uso que se hace del mismo. Por
lo tanto, los proceso que tengan un alto consumo de CPU deberán ir a colas de menor prioridad (según la
letra, quantum mayor), mientras que los procesos que hagan mayor uso de E/S tendrán mayor prioridad de
acceso al procesador (colas con quatum menor).

Cuando el planificador seleccione un proceso de alto consumo de CPU (una cola de baja prioridad),
este ejecutará hasta que no aparezca un proceso de alto consumo de E/S (que seguramente demore poco
en la CPU).

De esta forma, se logra que los procesos que requieran poca CPU ejecuten lo antes posible y liberen el
recurso CPU rápidamente de forma de tener un mayor desempeño general del sistema.

8) A nivel del sistema operativo, ¿qué permite la instrucción SWAP provista por el hardware?

Poder intercambiar dos valores de variables de una manera atómica, sin que pueda ser interrumpido en
el proceso.

Ver exámen Marzo 2005. Pregunta 7.

9) ¿Qué entiende por carga dinámica (dynamic loading)? Explique el concepto y sus beneficios.

El dynamic loading permite que una rutina no sea cargada en memoria principal hasta tanto no se
utilice.

Entre los beneficios se puede mencionar que no se cargan innecesariamente rutinas que no son
invocadas.

A su vez, los binarios en el sistema ocupan menos espacio ya que se pueden crear bibliotecas
dinámicas que varios programas referencien.

10) En un sistema con segmentación de 4096 bytes de memoria física, se tienen asignados los
siguientes segmentos:

Base Largo
100 150
300 1024
40 20
2600 512
1358 128

¿Cuál sería la asignación en memoria física de los tamaños de segmentos que aparecen en la
lista de abajo, según las estrategias de asignación First-fit, Best-fit y Worst-fit? Asuma que los
pedidos de segmentos llegan en orden de izquierda a derecha, la memoria empieza en la
dirección 0 y los segmentos que no pueda ubicar son descartados.
Lista de segmentos nuevos: 128, 40, 1024, 32, 40, 45.

(base, largo)
First Fit:
(1486,128), (0,40), descartado 1024, (60,32), (250,40), (1614, 45)

Best Fit:
(3112,128), (0,40), (1486,1024), (1324,32), (60,40), (250, 45)

Worst Fit:

Que la fuerza te acompañe Página 82


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

(1486, 128), (1614, 40), descartado 1024, (3112,32), (3144,40), (1654, 45)

11) En un sistema con memoria virtual, ¿cuál es la función del dispositivo de hardware MMU
(memory-management unit)?

Realizar la traducción de direcciones de memoria virtuales a físicas.

2006 – Febrero
1) Describa dos métodos a través de los cuales el sistema operativo se entera de que un
dispositivo de E/S ha finalizado un pedido generado por el sistema operativo, mencionando las
principales características de cada uno y compare los mismos.

Polling e Interrupciones.

Polling:
El sistema realiza el pedido y queda en una iteración consultando el ‘busy bit’ del controlador del
dispositivo hasta que este quede limpio (señal que finalizó).

Interrupciones:
El sistema realiza el pedido y será avisado de la finalización a través de una interrupción.

El polling tiene como desventaja el hacer ‘busy waiting’. Ciclos de CPU serán desperdiciados. En
cambio el método de interrupciones permite ejecutar otros procesos mientras el dispositivo realiza el pedido.

El polling sería útil en casos en que el dispositivo este libre y que tenga mayor velocidad que la del
procesador.

Las interrupciones permiten un manejo asincrónico y además permiten ser atendidas cuando el sistema
operativo lo crea conveniente.

2) Describa los estados en los que puede permanecer un proceso y realice un diagrama mostrando
las transiciones de un estado a otro mencionando el, o los eventos que se producen para el
cambio de estado.

Ver exámen Febrero 1998. Pregunta 3.

3) ¿Qué entiende por planificador expropiativo?

Planificador expropiativo es aquel que ante los siguientes eventos es ejecutado para asignar un proceso
a la CPU:

Que la fuerza te acompañe Página 83


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

a- Cuando un proceso se cambia del estado de ejecución al estado de pronto (cuando ocurre una
interrupción).
b- Cuando un proceso que estaba bloqueado pasa al estado Pronto (ante una E/S finalizada o un evento
completado).

Ante estos casos el planificador elige de la lista de procesos listos el proceso que tenga mayor prioridad
según su algoritmo de planificación.

Se puede interpretar como que el planificador asegura que siempre está ejecutando el proceso (dentro
de los procesos listos) con mayor prioridad.

Ver exámenes Diciembre 2003 y Marzo 2003. Preguntas 6 y 12 respectivamente.

4) Considere el siguiente conjunto de procesos, donde la duración de la ráfaga de CPU se mide en


milisegundos:

Proceso Tiempo de ráfaga Prioridad


P1 8 3
P2 1 1
P3 4 3
P4 2 4
P5 7 2

Se dispone de un equipo monoprocesador y se supone que los procesos llegaron en el


orden P1, P2, P3, P4, P5, todos en el instante 0.

a- Dibuje un diagrama que ilustre la ejecución de estos procesos utilizando planificación:


FCFS, SJF, una técnica por prioridad no expropiativa (a menor número, mayor prioridad), y RR
con cuanto = 1.

b- Calcule el tiempo de retorno y espera de los procesos para el algoritmo RR de la parte (a).

RR (Cuanto=1)
Cs = cuantos de espera
Ce = cuantos de ejecución
RR (Cuanto=1)
Cs = cuantos de espera
Ce = cuantos de ejecución

Que la fuerza te acompañe Página 84


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

tiempo de P1 = 14 Cs + 8 Ce (espera = 14ms)


tiempo de P2 = 1 Cs + 1 Ce (espera = 1ms)
tiempo de P3 = 10 Cs + 4 Ce (espera = 10ms)
tiempo de P4 = 6 Cs + 2 Ce (espera = 6ms)
tiempo de P5 = 14 Cs + 7 Ce (espera = 14ms)

Tiempo de espera: Tiempo total en la cola de listos.


Tiempo de espera total = 14 + 1 + 10 + 6 + 14 = 45ms
Tiempo de espera promedio = ( 14 + 1 + 10 + 6 + 14) / 5 = 9 ms
Tiempo de retorno: Tiempo transcurrido desde que se envió el proceso hasta que termina.

Tiempo de retorno total = 22 + 2 + 14 + 8 + 21 = 67ms


Tiempo de retorno promedio = ( 22 + 2 + 14 + 8 + 21 ) / 5 = 13,4 ms

5) Aplicando el algoritmo del banquero conteste si el siguiente sistema está o no en un estado


seguro.
Proceso Asignados Máximo Disponible
P0 1003 2013 3110
P1 1000 1750
P2 1354 2356
P3 0632 0652
P4 0014 0656
Un estado es seguro si el sistema puede asignar recursos a cada proceso (hasta su máximo) en algún
orden y aún así evitar los bloqueos mutuos.

Más formalmente, un sistema está en un estado seguro solo si existe una secuencia segura. Una
secuencia de procesos [P0, P1, ..., Pn] es una secuencia segura para el estado de asignación actual si,
para cada Pi, los recursos que Pi todavía puede solicitar se pueden satisfacer con los recursos que
actualmente están disponibles más los recursos que tienen todos los Pj, donde j < i. En esta situación, si los
recursos que Pi necesita todavía no están disponibles, Pi podrá esperar hasta que todos los Pj hayan
terminado. En ese momento, Pi podrá obtener todos los recursos que necesita, llevar a cabo su tarea
designada, liberar los recursos que adquirió y terminar.

Vamos a ver si el sistema está en estado seguro. Aplicando el Algoritmo del banquero.
trabajo0 = (3 1 1 0)
fin0 = (False False False False False)
Proceso Necesidades
(Máximo – Asignados)
P0 1010
P1 0750
P2 1002
P3 0020
P4 0642

Elijo P0 (Necesidad(0) ≤ trabajo0 : (1 0 1 0) £ (3 1 1 0)):


trabajo1 = trabajo0 + Asignados(0) = (3 1 1 0) + (1 0 0 3) = (4 1 1 3)
fin1 = (True False False False False)

Elijo P2 (Necesidad(2) ≤ trabajo1 : (1 0 0 2) ≤ (4 1 1 3)):


trabajo2 = trabajo1 + Asignados(2) = (4 1 1 3) + (1 3 5 4) = (5 4 6 7)
fin2 = (True False True False False)

Elijo P3 (Necesidad(3) ≤ trabajo2 : (0 0 2 0) ≤ (5 4 6 7)):


trabajo3 = trabajo2 + Asignados(3) = (5 4 6 7) + (0 6 3 2) = (5 10 9 9)
fin3 = (True False True True False)

Elijo P4: (Necesidad(4) ≤ trabajo3 : (0 6 4 2) (5 10 9 9)):


trabajo4 = trabajo3 + Asignados(4) = (5 10 9 9) + (0 0 1 4) = (5 10 10 13)
fin4 = (True False True True True)

Que la fuerza te acompañe Página 85


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Elijo P1 (Necesidad(1) ≤ trabajo4 : (0 7 5 0) ≤ (5 10 10 13)):


trabajo5 = trabajo4 + Asignados(1) = (5 10 10 13) + (1 0 0 0) = (6 10 10 13)
fin5 = (True True True True True)

Verificación:
Asignadosini + Disponiblesini = Trabajofin
(3 9 9 13) + (3 1 1 0) = (6 10 10 13)

Entonces existe una secuencia [P0, P3, P1, P4, P2] que es segura.
Entonces es estado seguro y por lo tanto no tiene que haber deadlock.

6) Una vez ocurrido un deadlock, describa un proceso que permita recuperarse del mismo.
Mencione sus ventajas y desventajas.

Matar todos los procesos.


Es seguro pero costoso. Se pueden matar procesos que llevan mucho tiempo de cómputo. En este caso
no es necesario ejecutar el algoritmo de detección de deadlock, ya que se matan todos los procesos
involucrados.

Matar un proceso a la vez hasta eliminar el ciclo que genera el deadlock.


Tiene un costo elevado debido a que luego de matar cada proceso debe ejecutarse nuevamente el
algoritmo de detención de deadlock para determinar si aún se está en deadlock.

7) ¿Qué se entiende por direccionamiento virtual? Explique que es una dirección lógica o virtual y
qué es una dirección física.

En un sistema que maneje memoria virtual, a cada proceso se le asigna un espacio virtual (o lógico) de
direccionamiento. Este espacio virtual permite abstraerse del direccionamiento físico (real).

Por lo general el direccionamiento esta restringido por los bits de la arquitectura. Por ejemplo, en una
arquitectura de 32 bits, un proceso puede generar direcciones de hasta 2^32 = 4GB. Por lo que podría
acceder a una memoria virtual de 4GB.

Una dirección lógica o virtual es la direcciones generadas por el proceso (se puede decir que son las
que se utilizan a nivel de CPU), mientras que una dirección física es una dirección real de la memoria
principal del sistema. En la mayoría de los sistemas actuales la unidad de administración de memoria
(MMU-dispositivo de hardware) es la encargada de hacer la conversión de direcciones lógicas a físicas.

Ver exámen Febrero 2004. Pregunta 5.

8) Describa dos implementaciones posibles para saber el espacio libre en disco. Compárelos
mencionando sus ventajas y desventajas entre ellos.

Mapa de bits:
Es un arreglo de bits en donde cada entrada se mapea a un bloque del sistema de archivo. Si el
bloque está libre, el bit está indicado con un 1; si el bloque está asignado, el bits indica 0 (puede ser al
revés).

Lista encadenada:
Los bloques libres están en una lista encadenada. Existe un puntero al primer bloque libre y cada
bloque libre tiene una referencia al siguiente bloque.

Agrupamiento:
Es igual que la lista encadenada, pero además de tener el puntero al siguiente (dado que sobra
mucho espacio) se tiene un grupo de bloques libres.

Contador:

Que la fuerza te acompañe Página 86


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Al igual que los dos últimos se tiene una lista encadenada de bloques libres. Pero como a veces se
tienen varios bloques libres que están contiguos, se hace un agrupamiento en el primer bloque libre de los
contiguos agregando un contador que informa cuantos bloques libres contiguos ahí.

9) ¿Qué son y para qué sirven los semáforos binarios? Implemente semáforos binarios con
monitores.

Los semáforos son una herramienta para la sincronización de procesos en el sistema.

type bin_semaforo: monitor;


var ocupado : boolean;
no_ocupado : condition;

procedure wait;
begin
if (ocupado) then
no_ocupado.wait;
ocupado := true;
end procedure;

procedure signal;
begin
ocupado := false;
no_ocupado.signal;
end procedure;

begin
ocupado := false;
end bin_semaforo;

Ver secuencia :
P1 P2
Bin_semaforo.wait;
Bin_semaforo.wait;
Bin_semaforo.signal;

a- P1 hace wait, como no esta ocupado pone ocupado en true y sigue.


b- P2 hace wait, como esta ocupado hace wait sobre la variable no_ocupado y queda esperando.
c- P1 hace signal, pone ocupado en false y hace un signal sobre no_ocupado. Entonces P2 que estaba
esperando en la condition no_ocupado se despierta y pone ocupado en true y entra;

10) Describa el modelo de Working-set. Mencione los conceptos en que se basa, las propiedades
que cumple y el fin que persigue.

El modelo de working-set es una estrategia que permite defenderse ante el problema de


hiperpaginación (trashing). Se basa en el principio de localidad: Un proceso al ejecutar utiliza un conjunto
limitado de páginas a la vez. A este conjunto de páginas se les denomina páginas activas. Al tamaño del
conjunto se le denomina ventana.

El modelo utiliza un parámetro (A) que define el tamaño de la ventana del working-set. Si una página
está siendo usada en el momento, entonces pertenece al working-set. Cuando una página hace un tiempo,
mayor que la ventana definida, no es accedida deja de pertenecer del working-set.

La efectividad del modelo se logra con una buena selección del parámetro A.

La propiedad más importante del working-set es el tamaño de la ventana para cada proceso. La
propiedad que se debe cumplir es que la suma del tamaño de todas las ventanas del sistema debe ser a lo
sumo igual a la cantidad de páginas disponibles en el sistema.

Que la fuerza te acompañe Página 87


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2006 – Marzo
1) ¿Cuáles son los objetivos principales de un sistema operativo?

- Brindar un ambiente para realizar y ejecutar los programas y aplicaciones de los usuarios.
- Proveer un entorno sin interferencias a cada usuario.
- Administrar de forma equitativa los recursos del hardware y software del sistema.
- Hacer que el uso del sistema sea tan amigable, intuitivo y expresivo como permita el estado de
la tecnología.

2) ¿Qué beneficios brinda el concepto de multiprogramación?

Incrementar el aprovechamiento del sistema, incluyendo los recursos de procesador, dispositivos de


E/S, memoria , etc.

Varios programas son cargados en memoria y cuando alguno se bloquea, el sistema operativo le asigna
la CPU a otro proceso.

Ver exámenes Agosto 2003 y Julio 2005. Pregunta 1.

3) ¿Qué beneficios brinda el concepto de memoria virtual?

Memoria Virtual produce los servicios básicos:


- Independiza la dirección de carga y ejecución de la dir. de memoria real.
- Que el tamaño de memoria que un proceso puede utilizar sea mayor a la memoria física del
equipo.
- Abstrae el concepto de memoria a un largo y uniforme espacio independiente de la
disponibilidad real.
- Separa la vista del usuario de la memoria virtual (o lógica) de la memoria física.

4) ¿Cuáles son las principales ventajas de un sistema con micronúcleo?


- Aumenta la portabilidad y escalabilidad ya que encapsula las características físicas del sistema
- Para incorporar un nuevo servicio no es necesario modificar el núcleo.
- Es más seguro ya que los servicios corren en modo usuario.
- El diseño simple y funcional típicamente resulta en un sistema más confiable.

5) En los sistemas multiprogramados y multiusuarios pueden existir problemas por procesos mal
programados o mal intencionados. Esto puede llevar al sistema a un estado inconsistente.
Enuncie y comente brevemente distintos mecanismos provistos por hardware que permiten
protegerse de este tipo de programas.

Modo doble de operación (Dual-Mode):


El hardware trae por lo menos dos modos de operación: modo usuario y modo monitor. En modo
monitor están activas todo el conjunto de instrucciones que provee el hardware, mientras que en modo
usuario solo unas pocas. Los procesos de los usuarios ejecutan en modo usuario y el sistema operativo
ejecuta en modo monitor.

Protección de E/S:
Todas las instrucciónes de E/S a nivel de hardware son privilegiadas. O sea, solo pueden ejecutarse en
modo monitor.

Protección de memoria:
Todas las referencias hechas a memoria principal son controladas por la MMU (dispositivo de
hardware) que verifica el acceso correcto a memoria y su control es por instrucciones privilegiadas.

Protección de CPU:
Permitir que el procesador sea utilizado por todos en forma equitativa. El hardware provee de un timer
que genera una interrupción. De esta forma, el sistema operativo puede expropiar el procesador a un
proceso y asignar a otro el recurso procesador.

Que la fuerza te acompañe Página 88


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Aumento del nivel de privilegio de ejecución solo es posible mediante la entrega del flujo de ejecución a
código protegido del Kernel

6) ¿Qué son los denominados "llamados a sistema" (system calls)?

Son la interface provista por el núcleo del sistema para que los procesos de usuarios accedan a los
diferentes servicios que brinda el sistema operativo.

Ver exámen Marzo 2005. Pregunta 3.

7) Describa brevemente el conjunto de tareas que implica realizar un cambio de contexto (context
switch), mencionando la utilidad del bloque de control del proceso (PCB: Process Control Block).

Cuando un cambio de contexto ocurre, el núcleo del sistema debe guardar (salvar) el contexto del viejo
proceso en el PCB y luego cargar el contexto del nuevo proceso (desde su PCB) en el procesador
asignado.

Ver exámen Julio 2008. Pregunta 5.

8) ¿Qué soluciona el algoritmo de Dekker?

Soluciona el problema de la sección crítica para dos procesos.

9) Escriba el algoritmo de Dekker.

int turn;
bool flag[2];

p0() { p1() {
while (true) { while (true) {
flag[0] = true; flag[1] = true;
while (flag[1]) { while (flag[0]) {
if (turn == 1) { if (turn == 0) {
flag[0] = false; flag[1] = false;
while (turn == 1) ; while (turn == 0) ;
flag[0] = true; flag[1] = true;
} }
} }
SECCION CRITICA SECCION CRITICA
turn = 1; turn = 0;
flag[0] = false; flag[1] = false;
... ...
} }

10) Defina los siguientes conceptos:


a- Utilización de procesador.
b- Tiempo de retorno.
c- Tiempo de espera.

a- Utilización de procesador.
Es el porcentaje de uso del procesador en procesos de usuario.

b- Tiempo de retorno.
Desde la perspectiva de un proceso, es el tiempo que transcurre desde que es cargado hasta que
finaliza su ejecución.

c- Tiempo de espera.
Es la suma de los períodos que un proceso espera en la cola de procesos listos (ready queue).

Que la fuerza te acompañe Página 89


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

11) Describa ventajas y desventajas de manejo de memoria a través de segmentación.

Ventajas:
- Simple compartir y proteger objetos, linking dinámico, reubicación etc.
- Podrían haber 2 diccionarios (código y datos), permitiendo por ej. reusar código
automáticamente.

Desventajas:
- Complejas políticas de ubicación y reemplazo.
- Fragmentación externa.

12) Describa dos métodos de acceso a un archivo.

Secuencial:
Se lee o escribe en el archivo en base a un puntero (file pointer).
Es el método de acceso más simple. La información del archivo se procesa en orden, un registro
después de otro. Este modo de acceso es, como mucho, el más común; por ejemplo, los editores y
compiladores suelen acceder a los archivos de esta forma.

Las lecturas y escrituras constituyen el grueso de las operaciones realizadas con un archivo. Una
operación de lectura (leer siguiente) lee la siguiente porción del archivo e incrementa automáticamente un
puntero de archivo, que controla la ubicación de E/S. De forma similar, la operación de escritura (escribir
siguiente) añade información al final del archivo y hace que el puntero avance hasta el final de los datos
recién escritos (el nuevo final de archivo). Dichos archivos podrán reinicializarse para situar el puntero al
principio de los mismos y, en algunos sistemas, puede que un programa sea capaz de saltar hacia adelante
o hacia atrás n registros, para algún cierto valor entero n, quizás solo para n=1.

Directo:
Se lee o escribe en el archivo según una dirección que debe ser especificada cada vez.
También llamado acceso relativo. Un archivo está compuesto de registros lógicos de longitud fija que
permiten a los programas leer y escribir registros rápidamente, sin ningún orden concreto. El método de
acceso directo se basa en un modelo de archivos que se corresponde con los dispositivos de disco, ya que
los discos permiten el acceso aleatorio a cualquier bloque de un archivo. Para el acceso directo, el archivo
se considera como una secuencia numerada de bloques o registros. Por lo tanto, podemos leer el bloque
14, luego el 53 y luego escribir el bloque 7. No existe ninguna restricción en cuanto al orden de lectura o
escritura en los archivos de acceso directo.

Los archivos de acceso directo tienen una gran utilidad para el acceso inmediato a grandes cantidades
de información: las bases de datos suelen implementarse con archivos de este tipo. En este método de
acceso, las operaciones de archivo deben modificarse para incluir el número de bloque como parámetro.

13) ¿Qué es un buffer?

Es un área de memoria que sirve para guardar datos mientras son transferidos entre dispositivos o entre
un dispositivo y un proceso.

14) ¿Qué ventajas brinda el uso de la técnica de buffering a nivel del sistema operativo?

- Salvar la distancia de velocidades entre diferentes dispositivos.


- Adaptar la diferencia en el tamaño de la transmisión de datos de los dispositivos mediante
técnicas de bloqueo.
- Adelantarse en la lectura obteniendo datos antes de que sean requeridos.

Que la fuerza te acompañe Página 90


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2006 – Diciembre
1) ¿Qué beneficio brinda la multiprogramación? Discuta según el sistema sea monoprocesador o
multiprocesador.

La maximización del recurso procesador tanto en sistemas de monoprocesador como en


multiprocesadores.

Ver exámenes Agosto 2003 y Julio 2005. Pregunta 1.

2) Describa 3 métodos para efectuar una operación de Entrada/Salida. (Formas de interacción con
la controladora del dispositivo).

Polling (Espera activa).


El host que se encuentra en un estado de espera activa o sondeo o polling, ejecuta un bucle,
leyendo una y otra vez el registro de estado hasta que el bit de ocupado se desactiva. Si la controladora y el
dispositivo son de alta velocidad, este método resulta razonable, pero si la espera puede ser larga, quizás
convenga que el host conmute a otra tarea.
En muchas arquitecturas informáticas, para sondear un dispositivo basta con tres ciclos de
instrucciones de CPU: leer un registro, efectuar una operación and lógica para extraer el bit de estado y
saltar si el bit es distinto de 0. Obviamente, la operación básica de sondeo resulta muy eficiente, pero se
vuelve ineficiente cuando se le ejecuta de manera repetida para encontrar únicamente que sólo en raras
ocasiones está listo el dispositivo para ser servido, mientras otras tareas útiles de procesamiento que podría
haber utilizado la CPU permanecen sin ejecutar. En tales casos suele ser más eficiente que la controladora
de hardware notifique a la CPU cuando ha pasado el dispositivo a estar listo para el servicio, en lugar de
forzar a la CPU a consultar repetidamente el dispositivo para ver si se ha terminado la operación de E/S.

Interrupts (Interrupciones)
El mecanismo de interrupciones funciona de la siguiente forma: el hardware de la CPU tiene un hilo
denominado línea de sollicitud de interrupción que la CPU comprueba después de ejecutar cada
instrucción. Cuando la CPU detecta que una controladora ha activado una señal a través de la línea de
solicitud de interrupción, la CPU guarda el estado actual y salta a la rutina de tratamiento de
interrupciones situada en una dirección fija de la memoria. La rutina de tratamiento de interrupciones
determina la causa de la interrupción, lleva a cabo el procesamiento necesario, realiza una restauración del
estado y ejecuta una instrucción return from interrupt para volver a situar la CPU en el estado de ejecución
anterior a que se producjera la interrupción.
Decimos que la controladora del dispositivo genera una interrupción enviando una determinada
señal a través de la línea de solicitud de interrupción enviando una determinada señal a través de la línea
de solicitud de interrupción, la CPU atrapa la interrupción y la despacha a la rutina de tratamiento de
interrupciones correspondiente, y la rutina borra la interrupción dando servicio al dispositivo.

DMA.
Para un dispositivo que realice transferencias de gran tamaño, como por ejemplo una unidad de
disco, parece bastante poco apropiado utilzar un procesador de propósito general (que es caro) para
comprobar dicho estado y para describir datos en un registro de una controladora de byte en byte, lo cual es
un proceso que se denomina E/S programada. La mayoría de las computadoras evitan sobrecargar a la
CPU principal con estas tareas descargando parte de este trabajo en un procesador de propósito especial
denominado controladora de acceso directo a memoria. Para iniciar una transferencia de DMA, el host
describe un bloque de comando DMA en la memoria. Este bloque contiene un puntero al origen de una
transferencia, un puntero al destino de la misma y un contador del número de bytes que hay que transferir.
La CPU escribe la dirección de este bloque de comandos en la controladora DMA y luego continúa
realizando otras tareas. La controladora DMA se encarga entonces de operar el bus de memoria
directamente, colocando direcciones en el bus para realizar las trasnferencias sin ayuda de la CPU principal.
En las computadoras de tipo PC, uno de los componentes estándar es una controladora DMA simple, y las
tarjetas de E/S con control maestro del bus para PC suelen contener su propio hardware de DMA de alta
velocidad.
Una vez finalizada la trasnferencia completa, la controladora de DMA interrumpe a la CPU. Cuando
la controladora de DMA toma el control del bus de memoria, se impide momentáneamente a la CPU
acceder a la memoria principal, aunque podrá seguir accediendo a los elementos de datos almacenados en
sus cachés principal y secundario. Aunque este robo de ciclos puede ralientizar los cálculos realizados por

Que la fuerza te acompañe Página 91


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

la CPU, descargar el trabajo de transferencia de datos en una controladora de DMA suele mejorar el
rendimiento global del sistema.

3) El modo de ejecución provisto por hardware permiten brindar protección entre los procesos.
Describa dos formas más de protección que se proveen a nivel de hardware.

Pueden ser:
Instrucciones privilegiadas

Protección de accesos a memoria a través de la MMU

Protección de CPU a través de un timer.

Ver exámen Marzo 2006. Pregunta 5.

4) Los system calls son una forma de llamar a los servicios del sistema operativo. ¿Existe alguna
otra forma de acceder a estos servicios por parte de los procesos de usuario?

No. Los system calls son la única de acceder a los servicios.

5) En el Process Control Block existe una sección para los registros. ¿Cuándo es utilizada esta
área?

Cuando el proceso no tiene asignado el recurso procesador. En esa área se guarda el estado de los
registros del procesador cuando el proceso fue despachado. Cuando el planificador le asigne el recurso
procesador, el despachador cargará los registros del procesador con esos valores.

6) ¿A nivel de sistema operativo y Process Control Block, cuáles estructuras son necesarias para
describir un hilo (thread)?

A nivel del PCB, el sistema debe tener una estructura independiente para cada thread de un proceso
que contenga por lo menos el stack, registros y el program counter.

7) Calcule el tiempo de espera promedio para los siguientes procesos:

Proceso Burst time


P1 5
P2 6
P3 2
P4 3

Utilizando:
a- Un planificador Shortest Job First (SJF).
b- Un planificador Round-Robin con tiempo de quantum 1.
Nota: asuma que el sistema comienza con los 4 procesos en la cola de procesos listos con el orden
P1, P2, P3 y P4.

a- (0 + 2 + 5 + 10) / 4 = 4.25

b- (9 + 10 + 5 + 8) / 4 = 8 (Se tomo el orden P1, P2, P3 y P4).

8) Describa el método de asignación de direcciones (address binding) en tiempo de ejecución


(execution time).

Resp 1.
El método de asignación en tiempo de ejecución permite a la memoria de un proceso ser reubicada del
lugar físico mientras el proceso está activo (ejecutando, listo, bloqueado) en el sistema.

Que la fuerza te acompañe Página 92


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Resp 2.
Usualmente, los programas residen en un disco en forma de archivos ejecutables binarios. Para poder
ejecutarse, un programa deberá ser cargado en memoria y colocado dentro de un proceso. Dependiendo
del mecanismo de gestión de memoria que utilice, el proceso puede desplazarse entre disco y memoria
durante su ejecución. Los procesos del disco que estén esperando a ser cargados en memoria para su
ejecución forman lo que se denomina cola de entrada.
El procedimiento normal consiste en seleccionar uno de los procesos de la cola de entrada y cargar
dicho proceso en memoria. A medida que se ejecuta el proceso, éste accede a las instrucciones y datos
contenidos en la memoria. Eventualmente, el proceso terminar´´a su ejecución y su espacio de memoria
será declarado como disponible.
La mayoría de los sistemas permiten que un proceso de usuario resida en cualquier parte de la memoria
física. Así, aunque el espacio de direcciones de la computadora comience en 000000, la primera dirección
del proceso de usuario no tiene por que ser 000000. Esta técnica afecta a las direcciones que el programa
de usuario puede utilizar. En la mayoría de los casos, el programa de usuario tendrá que recorrer varios
pasos antes de ser ejecutado. A lo largo de estos pasos, las direcciones pueden representarse de diferentes
formas. Las direcciones del programa fuente son generalmente simbólicas. Normalmente un compilador se
encargará de reasignar estas direcciones simbólicas a direcciones reubicables (por ejemplo 14 bytes a
partir de este módulo). El editor de montaje o cargador se encargará a su vez, de reasignar las direcciones
reubicables a direcciones absolutas. Cada operación de reasignación constituye una relación de un espacio
de direcciones a otro.

Clásicamente, la reasignación de las intrucciones y los datos a direcciones de memoria puede realizarse
en cualquiera de los pasos:
- Tiempo de compilación: no detallado acá.

- Tiempo de carga: no detallado acá.

- Tiempo de ejecución: Si el proceso puede desplazarse durante su ejecución desde un


segmento de memoria a otro, entonces es necesario retardar la reaseignación hasta el instante
de la ejecución. Para que este esquema pueda funcionar, será preciso disponer de hardware
especial. La mayoría de los sistemas operativos de propósito general utilizan este método.

9) En un sistema que soporta memoria virtual. ¿Quién realiza las traducciones de memoria virtual a
física? Describa como se hace la traducción de virtual a física en paginación.

La traducción es realizada por el dispositivo MMU (Memory Management Unit).

En el cambio de contexto, cuando un proceso es asignado a un procesador, se carga el registro PTBR


(Pointer Table Base Register) de la MMU con la dirección base de la tabla de página.

Cada acceso a memoria (virtual) generado por un proceso es traducido a memoria física por la MMU.

En paginación la dirección virtual se compone de una sección que indica la entrada de la tabla de
páginas que se accede (para obtener el número de marco) y de otra sección que indica el desplazamiento
dentro del marco.

10) Las estructuras RAID (Redundant Arrays of Inexpensive Disks) brindan servicios de mejora en la
confiabilidad y en los tiempos de transferencias. Haga una tabla que clasifique los RAID tipo 0, 1
y 5, mencionando que servicio(s) mejoran.

RAID Confiabilidad Tiempo de acceso


0 No Si
1 Si Si y No *
5 Si Si

* Depende de la implementación. Se toma como válida cualquier respuesta.

Que la fuerza te acompañe Página 93


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2007 – Febrero
1) ¿En un sistema computacional, qué permite la protección de CPU?

La protección de CPU permite que los procesos no se apoderen de forma indefinida del recurso
procesador. Si no se existiera en una ambiente de tiempo compartido, los procesos podrían hacer un uso
excesivo del procesador, limitando a otros del recurso.

2) ¿Describa 2 actividades que son principales en la administración de la memoria de un


computador?

- Mantener que partes de la memoria están siendo utilizadas y por quién.


- Decidir cuales procesos serán cargados a memoria cuando exista espacio de memoria
disponible.
- Asignar y quitar espacio de memoria según sea necesario.

3) Describa los 5 servicios básicos que debe brindar un sistema operativo.

Ver exámen Diciembre 2004. Pregunta 5.

4) Proponga una estructura de datos necesaria para poder representar hilos (threads) a nivel del
sistema operativo. Mencione solamente los campos principales del bloque descriptor del
proceso.

Para poder representar hilos (threads) es necesario tener estructuras para la pila (stack), el contador de
programa (program counter) y los registros de cada hilo. Se debe modificar el PCB de forma tal de que cada
hilo tenga estas estructuras de forma independiente.

5) a- Mencione y realice un diagrama con los estados y transiciones de los procesos.

ver imagen de examen Febrero 2006

b- Discuta, según las transiciones, si un núcleo (kernel) es expropiativo (preemptivo) o no.

Si el planificador es invocado solamente cuando un proceso finaliza su ejecución o cuando se bloquea,


el núcleo no es expropiativo. Si, además, el planificador es invocado cuando un proceso pasa de estado
bloqueado a listo o de ejecutando a listo, el núcleo se dice que es expropiativo.

6) ¿Qué quantum de CPU (mayor, menor o igual) le daría a los procesos que son catalogados como
consumidores intensivos de CPU (CPU-bound), con respecto a los procesos consumidores de
entrada-salida (IO-bound)?

La prioridad sobre un recurso es inversamente proporcional al uso del mismo.

Los procesos intensivos en CPU (CPU-bound) deberán tener una prioridad baja sobre el recurso
procesador, por lo que se les asignará un quantum de tiempo menor con respecto a los procesos intensivos
en entrada-salida (I/O bound).

De estar forma, los procesos que no hacen un uso desmedido del procesador podrán acceder con
mayores posibilidades.

Que la fuerza te acompañe Página 94


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

7) Se tiene un computador con 2 procesadores y con un sistema operativo de procesamiento


simétrico, cuyo planificador tiene una política Round-Robin de quantum 1. ¿Cual será el tiempo
de espera promedio total de los siguientes procesos?

Proceso Burst time


P1 5
P2 6
P3 2
P4 3
Notas:
- Asuma que el sistema comienza con los 4 procesos en la cola de procesos listos con el orden
P1, P2, P3 y P4.
- Asuma que el cambio de contexto entre dos procesos es despreciable.

Ejecutarán de la siguiente forma:


Procesador Cola de listos
(P1,P2) (P3,P4)
(P3,P4) (P1,P2)
(P1,P2) (P3,P4)
(P3,P4) (P1,P2)
(P1,P2) (P4)
(P1,P4) (P2)
(P1,P2) ()
(P2) ()
(P2) ()

(TE(P1) + TE(P2) + TE(P3) + TE(P4)) / 4 = (2 + 3 + 2 + 3) / 4 = 2.5.

8) En un sistema operativo con un esquema de paginación:


a- ¿Para qué se utiliza la tabla de páginas?
b- ¿A qué nivel se mantiene en memoria (memoria del sistema operativo o del proceso)?
c- ¿El Translation Look-aside Buffer para qué sirve?

a- ¿Para qué se utiliza la tabla de páginas?


Su función principal es para poder realizar la traducción de página virtual a frame físico.

b- ¿A qué nivel se mantiene en memoria (memoria del sistema operativo o del proceso)?
La estructura es guardada a nivel del sistema operativo. De otra forma, el proceso podría modificarla.
También se puede mencionar que el proceso la puede acceder, pero solo en formato lectura.

c- ¿El Translation Look-aside Buffer para qué sirve?


Cumple la función de memoria cache de las entradas de la tabla de páginas. Esto permite mejor
velocidad de acceso, ya que si se logra un hit en la cache no es necesario acceder a memoria física a
buscar la entrada correspondiente de la tabla de páginas.

9) En un sistema con memoria virtual, describa el algoritmo de reemplazo de segunda chance


(Second-chance algorithm).

El algoritmo de segunda chance conserva una cola circular con los frames según el orden de carga.
Cada vez que se carga un frame se lo pone al final de la cola y se marca el bit de referencia en 0.

A su vez, cada vez que el frame es accedido se marca el bit de referencia en 1. Posteriormente, al
ejecutarse el algoritmo de reemplazo, se hace una recorrida desde el comienzo de la cola buscando el
frame a reemplazar. Para cada frame se tienen dos posibilidades:

- Si el frame tiene el bit de referencia en 1, entonces se le da una segunda oportunidad


moviéndolo hacia el final de la cola y marcando su bit de referencia en 0.
- Si el frame tiene el bit de referencia en 0, es el elegido para ser reemplazado y el algoritmo
finaliza.

Que la fuerza te acompañe Página 95


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Ver exámen Abril 2003. Pregunta 2.

10) a- ¿Los manejadores de dispositivos (device drivers) son un componente de hardware o


software?
b- ¿Cuál es su función principal?

a- Software.
b- Hacer la traducción de los pedidos que el sistema realiza sobre el dispositivo “dialogando” con la
controladora del dispositivo.

El manejador de dispositivo (device driver), por lo general, implementa un conjunto de primitivas de alto
nivel (impuestas por el sistema operativo), que realizan la traducción de los pedidos y respuestas que
genera el sistema.

Para esto, es necesario que se pueda comunicar con el controlador del dispositivo en el lenguaje que
éste propone.

Ver exámen Marzo 2005. Pregunta 2.

2007 – Marzo
1) Dado el siguiente código escrito en lenguaje C:

main ()
{
char * buffer;
int fd_read, fd_write, count;

buffer = (char *) malloc(256*sizeof(char));


if ((fd_read = openread("read.txt") == -1) || (fd_write = openwrite("write.txt") == -1))
exit 1;

while (count = read(fd_read,buffer,256))


write(fd_write,buffer,count);

closeread(fd_read);
closewrite(fd_write);
exit 0;
}

¿Cuáles invocaciones a procedimientos son un llamado a sistema (system call) o desembocan en


uno?

Todos ya que requieren de servicios que brinda el sistema operativo:

malloc: Es una función de la biblioteca de usuario que puede desenbocar en la extensión del área de heap
del proceso.
openread y openwrite: apertura de un archivo.
read y write: Lectura y escritura de un archivo.
closeread, closewrite: cerrar un archivo abierto por el proceso.
exit: finalización del proceso.

2) Cual es el propósito de un llamado a sistema.

Que la fuerza te acompañe Página 96


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Brindar un servicio del sistema operativo.

Ver exámen Diciembre 2006. Pregunta 4.


Ver exámen Marzo 2006. Pregunta 6.
Ver exámen Marzo 2005. Pregunta 3.

3) Describa los sistemas operativos diseñados con un micro-núcleo (microkernel).

Los sistemas con micronúcleo brindan funcionalidades de gestión de procesos y memoria.

A su vez, proveen de una capa de comunicación entre procesos para poder implementar los demás
servicios a nivel de usuario.

Ver exámen Abril 2003. Pregunta 9.


Ver exámen Diciembre 2005. Pregunta 2.

4) Describa el planificador de colas multinivel con feedback (Multilevel-Feedback-Queue).

Es un planificador que define un conjunto de colas a las que clasifica según algún criterio (ej. Prioridad).
Los procesos serán asignados (según su característica) a alguna de las colas.
Cada cola puede tener su política individual de planificación.

La retroalimentación permite que los procesos sean cambiados de cola cada vez que adquieran el
estado de listo. Ej.: Un proceso con alto consumo de CPU (cpu-bound) tenderá a ir a colas de menor
prioridad.

Los procesos con bajo consumo de CPU tenderán a avanzar a colas con mayor prioridad.

5) ¿Qué es el tiempo de retorno (turnaround time)?

Es el intervalo de tiempo desde que un proceso es cargado hasta que finaliza su ejecución.

6) ¿Qué entiende por rendimiento (throughput) de un algoritmo de planificación?

Es el número de procesos que ejecutaron completamente por unidad de tiempo.

7) ¿El siguiente sistema está en deadlock?

Recurso R1 R2 R3 R4
Cantidad 1 2 1 3

Procesos P1 P2 P3
Recursos Pedidos R1 R3 R2
Recursos Asignados R2 R1 R3
R2

Sí, está en deadlock.

Se tienen los siguientes ciclos de espera, los que llevan a que ninguno de los pedidos de los 3 procesos
pueda ser completado:
- P3 espera por algún recurso R2 (asignados a P1 y P2)
- P2 espera por R3 que está asignado a P3, por lo que P2 y P3 se esperan mutuamente.
- P1 espera por R1 que está asignado a R2, pero como éste no lo libera, debe esperar.

Capaz que con un gráfico se ve mejor…

Que la fuerza te acompañe Página 97


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

P3

R2 R2 R3

P1 P2

R1

8) En un sistema computacional que maneja memoria virtual con direcciones de 16 bits:

a- ¿Cuál es el tamaño del espacio virtual de los procesos en este sistema?


b- Si se tienen un sistema de paginación de dos niveles, y las direcciones virtuales se forman con 3
bits para el primer nivel, 3 bits para el segundo nivel y 10 bits para el desplazamiento. ¿Cuántas
tablas de páginas se tienen en memoria, de primer y segundo nivel, si el proceso está
consumiendo 10KB de espacio virtual?

a- 2^16 bytes.

b- Suponiendo que la memoria virtual asignada comienza en la dirección virtual 0 y termina en la dirección
virtual 10k.

Para representar el espacio virtual del proceso es necesario 3 tablas (1 para primer nivel y 2 para
segundo nivel).

Aclaración:
i. Con 10 bits de desplazamiento direcciono 2^10 bytes = 1024bytes = 1KB.
ii. Con páginas de 1KB, para direccionar 10KB necesito 10 páginas.
iii. Con 3 bits para direccionar las páginas de 2do nivel, puedo direccionar hasta 2^3 = 8 páginas.
iv. De ii y iii obtengo que para direccionar 10KB necesito 2 páginas de 2do nivel (una completa con
las 8 entradas usadas y la otra con las 2 entradas faltantes)
v. Cada página de 1er nivel permite direccionar hasta 8 páginas de segundo nivel (2^3 = 8), por lo
que solamente necesito 2 entradas para direccionar las 2 páginas de segundo nivel utilizadas.

9) Compare la asignación de frames global vs local.

Resp 1.
En la estrategia global los fallos de página de un proceso afectan la eficiencia de ejecución de otro.

La estrategia local independiza los fallos de página por proceso, pero ocupa frames de memoria que
quizás sean poco utilizados y no son reemplazados.

Resp 2.
Si hay múltiples procesos compitiendo por los marcos, podemos clasificar los algoritmos de sustitución
de páginas en dos categorías amplias: sustitución global y sustitución local. La sustitución global permite a
un proceso seleccionar un marco de sustitución de entre el conjunto de todos los marcos, inclusi si dicho
marco está asignado actualmente a algún otro proceso; es decir, un proceso puede quitar un marco a otro.
El mecanismo de sustitución local requiere, por el contrario, que cada proceso sólo efectúe esa selección
entre su propio conjunto de marcos asignado.
Por ejemplo, consideremos un esquema de asignación en el que permitamos a los procesos de alta
prioridad seleccionar marcos de los procesos de baja prioridad para la sustitución. Un proceso podrá

Que la fuerza te acompañe Página 98


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

seleccionar un marco de sustitución entre sus propios marcos o de entre los marcos de todos los procesos
de menor prioridad. Esta técnica permite que un proceso de alta prioridad incremente su tasa de asignación
de marcos a expensas de algún proceso de baja prioridad.

Con una estrategia de sustitución local, el número de marcos asignados a un proceso no se modifica.
Con la estrategia de sustitución global, puede que un proceso sólo seleccione marcos asignados a otros
procesos, incrementando así su propio número de marcos asignados. Suponiendo que otros procesos no
seleccionen sus marcos para sustitución.

Un posible problema con el algoritmo de sustitución global es que un proceso no puede comprobar su
propia tasa de fallos de página. El conjunto de páginas en memoria para un proceso dependerá no sólo del
comportamiento de paginación de dicho proceso, sino también del comportamiento de paginación de los
demás procesos. Por tanto, el mismo proceso puede tener un rendimiento completamente distinto debido a
circunstancias totalmente externas al proceso. Este fenómeno no se produce en el caso de los algoritmos
de sustitución local. Con una sustitución local, el conjunto de páginas en memoria de un cierto proceso se
verá afectado sólo por el comportamiento de paginación de dicho proceso. Por otro lado, la sustitución local
puede resultar perjudicial para un proceso, al no tener a su disposición otras páginas de memoria menos
utilizadas. En consecuencia, el mecanismo de sustitución global da como resultado, generalmente, una
mayor tasa de procesamiento del sistema y es por tanto el método que más comúnmente se utiliza.

10) Describa dos métodos de acceso a un archivo.

Secuencial:
Se lee o escribe en el archivo en base a un puntero (file pointer).

Directo:
Se lee o escribe en el archivo según una dirección que debe ser especificada cada vez.

Ver exámen Marzo 2006. Pregunta 12.

11) ¿Qué entiende por el método polling?

Es cuando el sistema consulta constantemente el busy bit de la controladora del dispositivo.


El motivo es verificar que la controladora quedo disponible para aceptar otro comando.
Este sistema genera busy waiting, pero puede ser beneficioso para sistemas dedicados.

12) Describa el método de acceso directo (Direct Memory Access).

Resp 1.
El DMA es un dispositivo que permite la transferencia de bloques de memoria desde un controlador a
memoria RAM.

El sistema carga en los registros de la controladora DMA la tarea a realizar y posteriormente la activa.

La controladora DMA se encarga de controlar la transferencia desde/hacia el controlador de dispositivo


hacia/desde la memoria principal sin intervención del procesador.

Una vez finalizada la transferencia se interrumpe al procesador para avisar al sistema de la finalización.

Ver exámen Diciembre 2006. Pregunta 2.

13) ¿Qué entiende por memoria cache?

La cache es una memoria de rápido acceso que permite tener copias de datos que se encuentran en
dispositivos más lentos.

De esta forma, el dispositivo o sistema que accede a los datos tiene mejor velocidad de acceso.

Que la fuerza te acompañe Página 99


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

14) ¿Qué entiende por Spooling?

El Spooling es un buffer que permite guardar información mientras son transferidos entre dos
dispositivos o un dispositivo y una aplicación.

El dispositivo que recibe la información no permite que sea intercalado.

2007 – Julio
1) ¿Cuál es el beneficio de la multiprogramación?

Ver exámenes Agosto 2003 y Julio 2005. Pregunta 1.


Ver exámen Marzo 2006. Pregunta 1.

2) ¿Describa ventajas/desventajas del diseño de un sistema monolíticos frente al sistema en


capas?

Sistema Monolítico

Muchos sistemas comerciales no tienen una estructura bien definida. Frecuentemente, tales sistemas
operativos comienzan siendo sistemas pequeños, simples y limitados y luego crecen más allá de su ámbito
original. MS-DOS, por ejemplo, fue diseñado e implementado por unas pocas personas que no tenían ni
idea que iba a terminar siendo tan popular. Fue escrito para proporcionar la máxima funcionalidad en el
menor espacio posible, por lo que no fue dividido en módulos de forma cuidadosa. En MS-DOS, las
interfases y niveles de funcionalidad no están separados. Por ejemplo, los programas de aplicación pueden
acceder a rutinas básicas de E/S para escribir directamente en la pantalla y unidades de disco. Tal libertad
hace que MS-DOS sea vulnerable a programas erróneos (o maliciosos), lo que hace que el sistema
completo falle cuando los programas de usuario fallan. Como el 8088 de Intel para el que fue escrito no
proporcionaba un modo dual ni protección de hardware, los diseñadores no tuvieron más opción que dejar
accesible el hardware base.

Otro ejemplo de estructuración limitada es el sistema operativo UNIX original. Este es otro sistema que
inicialmente estaba limitado por la funcionalidad del hardware. Consta de dos partes separadas: el kernel y
los programas del sistema. El kernel se divide en una serie de interfaces y controladores de dispositivo, que
se han ido añadiendo y ampliando a lo largo de los años, a medida que UNIX ha ido evolucionando.
Podemos ver el tradicional sistema operativo UNIX como una estructura de niveles. Todo lo que está por
debajo de la interfaz de llamadas al sistema y por encima de hardware físico es el kernel. El kernel
proporciona el sistema de archivos, los mecanismos de planificación de la CPU, la funcionalidad de gestión
de memoria y otras funciones del sistema operativo, a través de las llamadas al sistea. En resumen, es una
enorme cantidad de funcionalidad que se combina en un sólo nivel.
Estas estructuras monolíticas eran difíciles de implementar y mantener.

Sistema en Capas

Con el soporte de hardware apropiado, los sitemas operativos pueden dividirse en partes más pequeñas
y más adecuadas que lo que permitían los sistemas originales MS-DOS o UNIX. El sistema operativo puede
entonces mantener un control mucho mayor sobre la computadora y sobre las aplicaciones que hacen uso
de dicha computadora. Los implementadores tienen más libertad para cambiar el funcionamiento interno del
sistema y crear sistema operativo modulares. Con el método de diseño arriba-abajo, se determinan las
características y las funcionalidades globales y se separan en componentes. La ocultación de los detalles a
ojos de los niveles superiores también es importante, dado que deja libres a los programadores para
implementar las rutinas de bajo nivel como prefieran, siempre que la interfaz externa de la rutina
permanezca invariable y la propia rutina realice la tarea anunciada.

Un sistema puede hacerse modular de muchas formas. Un posible método es mediante una estructura
en niveles, en el que el sistema operativo se divide en una serie de capas (niveles). El nivel inferior, nivel 0
es el hardware; el nivel superior N, es la interfaz de usuario. Un nivel de un sistema operativo es una

Que la fuerza te acompañe Página 100


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

implementación de un objeto abstracto formado por una serie de datos y por las operaciones que permiten
manipular dichos datos. Un nivel de un sistema operativo típico, consta de estructuras de datos y de un
conjunto de rutinas que los niveles superiores pueden invocar. A su vez, el nivel M puede invocar
operaciones sobre los niveles inferiores.

La principal ventaja del método de nieveles es la simplicidad de construcción y depuración. Los niveles
se seleccionan de modo que cada uno usa funciones (operaciones) y servicios de los niveles inferiores. Este
método simplifica la depuración y la verificación del sistema. El primer nivel puede depurarse sin afectar al
resto del sistema, dado que, por definición, sólo usa el hardware básico (que se supone correcto) para
implementar sus funciones. Una vez que el primer nievel se ha depurado, puede suponerse correcto su
funcionamiento mientras se depura el segundo nivel, etc.. Si se encuentra un error durante la depuración de
un determinado nivel, el error tendrá que estar localizado en dicho nivel, dado que los niveles inferiores a él
ya se han depurado. Por tanto, el diseño e implementación del sistema se simplifican.

Cada nivel se implementa utilizando sólo las operaciones proporcionadas por los niveles inferiores. Un
nivel no necesita saber cómo se implementan dichas operaciones; sólo necesita saber qué hacen esas
operaciones. Por tanto, cada nivel oculta a los niveles superiores la existencia de determinadas estructuras
de datos, operaciones y hardware.

La principal dificultad con el método de niveles es la de definir apropiadamente los diferentes niveles.
Dado que un nivel sólo puede usar los servicios de los nieveles inferiores, es necesario realizar una
planificación cuidadosa. Por ejemplo, el controlador de dispositivo para almacenamiento de reserva (espacio
en disco usado por los algoritmos de memoria virtual) debe estar en un nivel inferior que las rutinas de
gestión de memoria, dado que la gestión dememoria requiere la capacidad de usar el almacenamiento de
reserva.

Otros requisitos pueden no ser tan obvios. Normalmente, el controlador de almacenamiento de reserva
estará por encima del planificador de la CPU, dado que el controlador puede tener que esperar a que se
realicen determinadas operaciones de E/S y la CPU puede asignarse a otra tarea durante este tiempo. Sin
embargo, en un sistema de gran envergadura, el planificador de la CPU puede tener más información sobre
todos los procesos activos de la que cabe en memoria. Por tanto, esta información puede tener que
cargarse y descargarse de memoria, requiriendo que el controlador de almacenamiento de reserva esté por
debajo del planificador de la cPU.

Un último problema con las implementaciones por niveles es que tienden a ser menos eficientes que
otros tipos de implementación. Por ejemplo, cuando un programa de usuario ejecuta una operación de E/S,
realiza una llamada al sistema que será capturada por el nivel de E/S, el cual llamará al nivel de gestión de
memoria, el cual a su vez, llamará al nivel de planificación de la CPU, que pasará a continuación la llamada
al hardware. En cada nivel se pueden modificar los parámetros, puede ser necesario pasar datos, etc. Cada
nivel añade así una carga de trabajo adicional a la llamada al sistema; el resultado neto es una llamada al
sistema que tarda más en ejecutarse que en un sistema sin niveles.

Estas limitaciones han hecho surgir en los últimos años una cierta reacción contra los sistemas basados
en niveles. En los diseños más recientes, se utiliza un menor número de niveles, con más funcionalidad por
cada nivel, lo que proporciona muchas de las ventajas del código modular, a la vez que se evitan los
problemas más difíciles relacionados con la definición e interacción de los niveles.

3) ¿Cómo representa el sistema operativo el concepto de proceso?

Una pregunta que surge cuando se estudian los sistema operativo es cómo llamar a las diversas
actividades de la CPU. Los sistemas de procesamiento por lotes ejecutan trabajos, mientras que un
sistema de tiempo compartido tiene programas de usuario o tareas. Incluso en un sistema
monousuario, como MS-Windows, el usuario puede ejecutar varios programas al mismo tiempo. Incluso
aunque el usuario pueda ejecutar un sólo programa a la vez, el sistema operativo puede tener que dar
soporte a sus propias actividades internas programadas, como los mecanismos de gestión de la
memoria. En muchos aspectos, todas las actividades son similares, por lo que a todas ellas las
denominamos procesos.
Como se ha mencionado antes, un proceso es un programa en ejecución. Hay que resaltar que un
proceso es algo más que el código de un programa. Además del código, un proceso incluye también la
actividad actual, que queda representada por el valor del contador de programa y por los contenidos

Que la fuerza te acompañe Página 101


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

de los registros del procesador. Generalmente, un proceso incluye también la pila del proceso, que
contiene datos temporales (como los parámetros de las funciones y las direcciones de retorno y las
variables locales), y una sección de datos, que contiene las variables globales. El proceso puede
incluir asimismo, un cúmulo de memoria, que es la memoria que se asigna dinámicamente al proceso
en tiempo de ejecución.

Un programa por sí mismo, no es un proceso; un programa es una entidad pasiva, un archivo que
contiene una lista de instrucciones almacenadas en disco (a menudo denominado archivo ejecutable),
mientras que un proceso es una entidad activa, con un contador de programa que especifica la
siguiente instrucción que hay que ejecutar y un conjunto de recursos asociados. Un programa se
convierte en proceso cuando se carga en memoria un archivo ejecutable. Dos técnicas habituales para
cargar archivos ejecutables son el doble click o llamarlo por línea de comandos.

Aunque puede haber dos procesos asociados con el mismo programa, esos procesos se consideran
dos secuencias de ejecución separadas. Por ejemplo, varios usuarios pueden estar ejecutando copias
diferentes del programa X, o el mismo usuario puede invocar muchas copias del programa Y. cada una
de estas copias es un proceso distinto y, aunque las secciones de texto sean equivalentes, las
secciones de datos, del cúmulo (heap) de memoria y de la pila variarán de unos procesos a otros.
También es habitual que un proceso cree muchos otros procesos a medida que se ejecuta.

4) Clasifique el tipo de planificador (expropiativos o no expropiativos) a utilizar en cuanto a


sistemas por lotes, interactivos y de tiempo real.

Sistemas por lotes:


Por lo general no son expropiativos, o si son expropiativos, el tiempo que se le asigna a un proceso
la CPU es largo.

Sistemas interactivos:
Para sistemas interactivos, es más conveniente un planificador expropiativo ya que permite atender
más rápido las solicitudes de los usuarios.

Tiempo real:
Un planificador apropiativo no es adecuado cuando se consideran aplicaciones de tiempo real,
porque estas requieren garantías de tiempo de servicio, lo cual sólo es posible si se usa un planificador
no-apropiativo.
Por lo general no son expropiativos ya que son procesos pequeños diseñados para cumplir tareas
específicas en tiempos cortos.

5) a- ¿Qué entiende por direccionamiento virtual de un proceso?

El espacio de direcciones virtuales de un proceso hace referencia la forma lógica (o virtual) de


almacenar un proceso en memoria. Típicamente, esta forma consiste en que el proceso comienza en una
cierta dirección lógica (dirección 0, por ejemplo) y está almacenado de forma contigua en la memoria. Sin
embargo, la memoria física puede estar organizada en marcos de página y los marcos de página física
asignados a un proceso pueden no ser contiguos. Es responsabilidad de la MMU establecer la
correspondencia entre las páginas lógicas y los marcos de página física de la memoria.

b- ¿A través de qué técnicas se logra implementar un sistema de memoria virtual?

La memoria virtual abstrae la memoria principal, transformándola conceptualmente en una matriz


uniforme y extremadamente grande de posiciones de almacenamiento, separando así la memoria lógica (tal
como la ve el usuario) de la memoria física.

Los algoritmos de gestión de memoria resultan necesarios debido a un requerimiento básico: las
intrucciones que se estén ejecutando deben estar en la memoria física. El primer enfoque para tratar de
satisfacer este requisito consiste en colocar el espacio completo de direcciones lógicas dentro de la
memoria física. Los mecanismos de carga dinámica (paginación bajo demanda, por ejemplo) pueden
ayudar a aliviar esta restricción pero requieren, por lo general, que el programador tome precauciones
especiales y lleve a cabo un trabajo adicional.

Que la fuerza te acompañe Página 102


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

La memoria virtual incluye la separación de la memoria lógica, tal como la ve el usuario, con respecto a
la memoria física. Esta separación permite proporcionar a los programadores una memoria virtual
extremadamente grande, con una memoria física de menor tamaño.

c- ¿Qué es la memoria residente de un proceso?

La memoria residente de un proceso es la porción de memoria del mismo, que se encuentra cargada en
memoria principal.

6) a- Describa la fórmula del Tiempo Efectivo de Acceso (Effective Access Time – EAT) a memoria.

La fórmula de tiempo efectivo de acceso a memoria se define de con la siguiente fórmula:


EAT = ( 1 * p ) * ma + p * TRPF
Donde
- p ------------- es la probabilidad de que ocurra un fallo de página.
- ma ---------- es el tiempo de acceso a memoria.
- TRPF ------ es el tiempo de resolución del page fault.

c- ¿Qué nos brinda está fórmula?

Sirve para analizar el impacto de la técnica de paginación por demanda en el rendimiento del sistema.
No es la única forma.

7) Describa el algoritmo de reemplazo LRU.

Ver exámen Abril 2003. Pregunta 2.

8) Describa dos métodos de acceso a un archivo del sistema.

Ver exámen Marzo 2006. Pregunta 12.

9) a- ¿Qué gran ventaja tiene el método de entrada/salida DMA frente al de entrada/salida


programada (Programmed IO).

La mayor ventaja que tiene este método es liberar al CPU de la transferencia de datos desde el
dispositivo de almacenamiento hacia memoria principal, ya que luego de ingresados los datos necesarios a
la controladora DMA (dirección de memoria origen donde se encuentra la información para que la
controladora trabaje, -cantidad de bytes, dirección de memoria de destino de los datos, etc-), la CPU se
deslinda de dicho trabajo, pasando a realizar otras tareas; cuando la controladora ha terminado con la
solicitud requerida, interrumpe a la CPU, avisándole que el pedido está completo y procede a su siguiente
asignación.

b- Describa los 6 pasos de una entrada/salida a través de un DMA.

1- Se indica al controlador de dispositivo que transfiera datos del disco al buffer situado en la dirección X.
2- El controlador de dispositivo le dice a la controladora de disco que transfiera N bytes desde el disco al
buffer situado en la dirección X.
3- La controladora de disco inicia una transferencia de DMA.
4- La controladora de disco envía cada byte a la controladora de DMA.
5- La controladora de DMA transfiere los bytes al buffer X. incrementando la dirección de memoria y
decrementando N hasta que N == 0.
6- Cuando N == 0, la controladora DMA interrumpe al procesador (CPU) para señalizar la finalización de la
transferencia.

Que la fuerza te acompañe Página 103


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

10) a- ¿Qué tipo de mejoras brindan los sistemas RAID (redundant array of inexpensive disk)?

Dado que las unidades de disco han ido evolucionando para hacerse más pequeñas y más baratas,
ahora es económicamente factible conectar muchos discos a un mismo sistema informático. Disponer de un
gran número de discos en un sistema permite mejorar la velocidad con la que los datos pueden leerse o
escribirse, siempre y cuando los discos se operen en paralelo. Además, esta configuración también puede
permitir mejorar la fiabilidad del almacenamiento de los datos, ya que puede almacenarse información
redundante en ese conjunto de múltiples discos. De este modo, el fallo de uno de los discos no conduce a la
pérdida de datos. Existen diversas técnicas de organización de discos, colectivamente denominadas
matrices redundantes de discos de bajo coste (RAID, redundant arrays of inexpensive disks), que se
utilizan comunmente para resolver estas cuestiones de velocidad y fiabilidad.

En el pasado, las matrices RAID compuestas de discos pequeños y baratos se contemplaban como una
alternativa económica a los discos de gran tamaño, que eran bastante caros; hoy en día los sistemas RAID
se utilizan debido a su mayor fiabilidad y a su mayor velocidad de transferencia de datos, más que por
razones económicas. Por esta razón la I de RAID ahora quiere decir “independientes” en lugar de
“inexpensive” (de bajo coste)

Niveles RAID.
La duplicación en espejo proporciona
una alta fiabilidad, pero resulta muy cara.
La distribución en bandas proporciona
una alta velocidad de transferencia de
datos, pero no mejora la fiabilidad. Se han
propuesto numerosos esquemas para
proporcionar redundancia a un menor
coste utilizando la idea de destribución en
bandas combinada con bits de “paridad”.
Estos esquemas tienen diferentes tipos
de compromisos entre el coste y las
prestaciones y se clasifican de acuerdo a
una serie de niveles denominados
niveles RAID. En la figura, P indica bits
de corrección de errores y C indica una
segunda copia de los datos. En todos los
casos mostrados en la figura, estamos
almacenando una cantidad de datos
equivalente a la capacidad total de 4
discos y los discos adicionales se utilizan
para almacenar información redundante
con vistas a la recuperación de fallos.

b- Describa el sistema RAID 1.

- RAID nivel 0: El mecanismo RAID


nivel 0 hace referencia a
matrices de discos con distribución de bandas en nivel de bloques, pero sin ninguna redundancia
(no tiene mecanismo de duplicación en espejo, ni bits de paridad). Figura anterior (a).

- RAID nivel 1: Este nivel de RAID, hace referencia a la duplicación en espejo de los discos. Figura
anterior (b).

- RAID nivel 2: También conocido como organización con códigos de corrección de errores (ECC) de
tipo memoria. En los sistemas de memoria hace ya tiempo que se detectan ciertos errores
utilizando bits de paridad. Cada byte de un sistema de memoria puede tener un bit de paridad
asociado que registra si el número de bits del byte con valor igual a 1 es par (paridad = 0) o impar
(paridad = 1). De este modo, el sistema de memoria puede detectar todos los errores de un único
bit. Los esquemas de corrección de errores almacenan dos o más bits adicionales y pueden

Que la fuerza te acompañe Página 104


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

recontruir los datos si resulta dañado un único bit. La idea de los códigos ECC puede usarse
directamente en las matrices de discos, distribuyendo los bytes entre los distintos discos. Este
esquema se ve en la figura (c), en dónde los discos etiquetados con la letra P almacenan los bits
de corrección de errores. Si uno de los discos falla, los restantes bits del byte y los bits de
corrección de errores asociados pueden leerse en otros discos y utilizarse para reconstruir los
datos dañados. Este mecanismo solamente requiere 3 discos adicionales para 4 discos de datos.

- RAID nivel 3: También llamado organización de paridad con entrelazado de bits, representa una
mejora con respecto al nivel 2, porque tiene en cuenta el hecho que, a diferencia de los sistemas
de memoria, las controladoras de disco pueden detectar si un sector ha sido leído correctamente,
por lo que puede utilizarse un único bit de paridad tanto para la detección como para la corrección
de errores. La idea es la siguiente: si uno de los sectores está dañado, sabemos exactamente que
sector es, y podemos determinar si algún bit del sector es un 1 o un 0 calculando la paridad de los
bits correspondientes de los sectores almacenados en los otros discos. Si la paridad de los bits
restantes es igual a la paridad almacenada, el bit que falta será un 0; en caso contrario será un 1.
El RAID nivel 3 ofrece el mismo nivel de protección que el nivel 2, pero resulta más barato en
cuanto al número de discos adicionales requeridos (sólo requiere un disco adicional) por lo que el
nivel 2 nunca es utilizado en la práctica. Ver figura (d).

El nivel 3 tiene 2 ventajas sobre el nivel 1. En primer lugar, se reduce la cantidad de


almacenamiento necesaria ya que sólo hace falta un único disco de paridad para varios discos
normales, mientras que en el nivel 1 se necesita un disco espejo por cada disco de datos. En
segundo lugar, puesto que las lecturas y escrituras de un byte se distribuyen entre múltiples discos
mediante un mecanismo de distribución de los datos con N vías, la tasa de transferencia para leer
o escribir un único bloque es N veces más rápida que con RAID 1.
En el lado negativo, el RAID nivel 3 soporta menos operaciones por segundo, ya que todos
los discos tiene que participar en todas las solicitudes de E/S. Otro problema adicional de
prestaciones con RAID 3 (al igual que con todos los niveles de RAID que utilizan mecanismos de
paridad) es el gasto de procesamiento adicional necesario para calcular y escribir los valores de
paridad. Este procesamiento adicional hace que las escrituras sean significativamente más lentas
que con las matrices RAID que no utilizan bits de paridad. Para compensar esta desminución del
rendimiento, muchas matrices de almacenamiento RAID incluyen una controladora de hardware
con circuitería dedicada de cálculo de paridad.

La matriz también tiene un caché NVRAM para almacenar los bloques mientras se leen de
manera de actuar como un buffer de escritura para la transferencia de datos entre la controladora
y los discos físicos. Esta combinación puede hacer que las soluciones RAID con paridad sean casi
tan rápidas como las que no utilizan paridad.

- RAID nivel 4: También llamado organización de paridad con entrelazado de bloques, utiliza una
distribución en bandas de nivel de bloque, como en RAID 0, y además mantiene un bloque de
paridad en un disco separado, con información de paridad para los bloques correspondientes de
los otros N discos. Ver figura (e). Si uno de los discos falla, puede usarse el bloque de paridad ocn
los bloques correspondientes de los otros discos, para restaurar los bloques del disco fallido.

Una lectura de un bloque sólo accede a un disco, permitiendo que los otros discos procesen
otras solicitudes. Así, la tasa de transferencia de datos para cada acceso es más lenta, pero
pueden realizarse múltiples accesos de lectura en paralelo, lo que proporciona una mayor tasa de
E/S global. Las tasas de trasnferencia para las lecturas de grandes volúmenes de datos son altas,
ya que pueden leerse todos los discos en paralelo; las escrituras de grandes volúmenes de
información también tienen altas tasas de transferencia, ya que los datos y la paridad pueden
escribirse en paralelo.

Las escrituras independientes de pequeños volúmenes de daotos no pueden realizarse en


paralelo. Una escritura por parte del sistema operativo de un conjunto de datos cuyo tamaño sea
inferior a un bloque requerirá leer el bloque, modificarlo con los nuevos datos y volverlo a escribir.
También será necesario actualizar el bloque de paridad. Esto se conoce con el nombre de ciclo
de lectura-modificación-escritura. Así una única escritura requiere cuatro accesos de disco. Dos
para leer los bloques antiguos y dos para escribir los dos nuevos bloques.

Que la fuerza te acompañe Página 105


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Este nivel raid permite añadir discos a una matriz RAID de forma completamente
transparente. Si los discos añadidos se inicializan con bloques que contengan valores todos
iguales a cero, entonces, el valor de la paridad no se modifica y el conjunto RAID seguirá siendo
correcto.

- RAID nivel 5: También llamado paridad distribuída con entrelazado de bloque, difiere del nivel 4 en
que se distribuyen los datos y la información de paridad entre los N + 1 discos, en lugar de
almacenar los datos en N discos y la información de paridad en un disco. Para cada bloque, uno
de los discos almacena la información de paridad y los otros almacenan los datos. Ver figura (f),
en donde se puede ver que los valores de paridad se encuentran distribuídos entre todos los
discos. Un bloque de paridad no puede almacenar información de paridad para bloques situados
en el mismo disco, porque un fallo del disco provocaría una pérdida de los datos, además de
perderse la información de paridad, por lo que dicha pérdida no sería recuperable. Distribuyendo la
información de paridad entre todos los discos del conjunto RAID 5 evita el uso potencial excesivo
de un único disco de paridad que puede tener lugar en RAID 4. El sistema RAID 5 es el sistema
RAID con paridad que más comunmente se usa.

- RAID nivel 6: También denominado esquema de redundancia P+Q es bastante similar a RAID 5, pero
almacena información redundante adicional para proteger los datos frente a múltiples fallos de
disco. En lugar de emplearse información de paridad, se utilizan códigos de corrección de errores,
tales como los códigos Reed-Solomon. Ver esquema en la figura (g). En este esquema se
almacenan 2 bits de datos redundantes por cada 4 bits de datos y el sistema puede tolerar que
fallen dos de los discos.

- RAID nivel 0+1: Este esquema de organización hace referencia a una combinación de los niveles RAID
0 y RAID 1. Raid 0 proporciona la mejora en las prestaciones, mientras que RAID 1 proporciona
fiabilidad. Generalmente este nivel proporciona un mejor rendimiento que RAID 5. Resulta común
en aquellos entornos en los que son importantes tanto las prestaciones como la fiabilidad.
Desafortunadamente, este esquema dobla al número de discos necesarios para el
almacenamiento, al igual que RAID 1, por lo que también es más caro. En RAID 0+1, se distribuye
en bandas un conjunto de discos y luego ese conjunto se duplica en espejo en otro conjunto
equivalente.

Que la fuerza te acompañe Página 106


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2008 – Febrero
1) En un equipo multiprocesador, ¿qué beneficio se obtiene al tener un sistema operativo simétrico
frente a uno asimétrico?

Los sistemas SMP (multi-procesamiento simétrico) se caracterizan porque permiten que cualquier
procesador trabaje en cualquier tarea, sin importar su localización en memoria.

2) Realice y describa un esquema de los estados y las transiciones entre los estados de los
procesos en un sistema.

Ver exámen Febrero 1998. Pregunta 3.

3) ¿Qué entiende por planificador expropiativo (preemptive scheduling)?

Ver exámenes Diciembre 2003 y Marzo 2003. Preguntas 6 y 12 respectivamente.


Ver exámen Febrero 2006. Pregunta 3.

4) Un sistema cuenta con tres tipos de procesos: de tiempo real, procesamiento por lotes (batch) y
de usuario. Desarrolle un algoritmo de planificación adecuado para este sistema, mencionando
las características más relevantes.

El algoritmo más adecuado de planificación para estos tipos de procesos es el implementado por colas
multinivel. Se contaría con 3 niveles, uno para cada tipo de proceso en los cuales asignaremos diferentes
características de asignación de CPU.
En la cola de mayor prioridad colocaría a los procesos de tiempo real ya que estos precisan completar
su tarea en un período de tiempo determinado, de lo contrario se podrían presentar problemas en el
sistema. Este nivel de colas, no será apropiativo, es decir que luego de entregada la CPU a un proceso de
este tipo, no se la retirará hasta que este la libere voluntariamente lo que sería un tipo de planificación FIFO.
En la de prioridad intermedia, colocaría a los procesos de usuario, permitiendo que se les pueda
expropiar la CPU en caso de llegar un proceso de tiempo real y con una asignación de CPU de tipo ROUND
ROBIN entre ellos, por ejemplo.
Por último, en la cola de menor prioridad colocaría a los procesos batch, ya que estos no requieren
intervención del usuario ni tienen cotas de tiempo para procesar. A estos procesos se les retirará la CPU
(planificador expropiativo) en caso de llegar un proceso de mayor prioridad (usuario / tiempo real) pero no
permitiremos expropiación entre procesos de este tipo y con un esquema de asignación FIFO.

5) Describa las cuatro condiciones que, si ocurren simultáneamente, pueden generar un deadlock.

Ver exámen Diciembre 2003. Pregunta 1.

6) a- ¿Para qué es utilizada la TLB (Translation Look-aside Buffer)?

Ver exámen Marzo 2003. Pregunta 4.


Ver exámen Febrero 2007. Pregunta 8(c).

b- ¿La TLB es un dispositivo de hardware o software?

Ver exámen Marzo 2003. Pregunta 4.

7) En un sistema que cuenta con el esquema de memoria virtual con paginación, cómo se asegura
que no se acceda a la memoria de otro proceso?

La protección de memoria en un entorno paginado se consigue mediante una serie de bits de prtección
asociados con cada marco. Normalmente, estos bits se mantienen en la tabla de páginas.

Uno de los bits puede definir una página como de lectura-escritura o sólo lectura. Toda referencia a
memoria pasa a través de la tabla de páginas con el fin de encontrar el número de marco correcto. Al mismo
tiempo que se calcula la dirección física, pueden comprobarse los bits de protección para verificar que no se

Que la fuerza te acompañe Página 107


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

esté haciendo ninguna escritura en una página de sólo lectura. Todo intento de escribir una página de sólo
lectura provocará una interrupción hardware al sistema operativo (una violación de protección de memoria).

El dispositivo encargado de dicho control es la MMU y su tabla de traducción de páginas


correspondiente al proceso en ejecución. Dicha tabla, pertenece únicamente a un proceso y cuenta con las
traducciones de direcciones virtuales (generadas por el procesador) a direcciones de las páginas físicas en
memoria del proceso. En caso que el proceso quiera acceder a otra página, la cual no está ingresada en la
TTP, se generará un trap y el sistema operativo tomará el control finalizando el proceso.

8) ¿Cuáles son las ventajas de utilizar segmentación con respecto a paginación?

Ver exámen Marzo 2004. Pregunta 3 (b).

9) ¿Qué entiende por paginación bajo demanda (Demand Paging)?

Un sistema de paginación por demanda es similar a un sistema de paginación con intercambio. Los
procesos residen en memoria secundaria, y cuando queremos ejecutarlo lo pasamos por intercambio a la
memoria, pero en vez de intercambiar todo el proceso, usamos un intercambio perezoso (nunca intercambia
una página a memoria si no se va a necesitar).

Un intercambiador intercambia todo un proceso, por lo cual nuestro intercambiador perezoso lo


denominamos paginador. Cuando un proceso se va a cargar en memoria, el paginador adivina cuáles son
las páginas que se usarán antes de que el programa pase nuevamente al disco. Notar que así se reduce el
tiempo de carga y la memoria física requerida.

Es necesario contar con soporte de hardware, para poder distinguir entre las páginas que estánen
memoria y las páginas que están en disco. Esto se puede lograr con el bit de validez-invalidez, válido
indicará que la página está en la memoria (y es válida, o sea, está dentro de las direcciones del proceso), no
válida indicará que no es válida o no está en memoria.

Si adivinamos correctamente cuales son las páginas que el proceso va a utilizar, y solamente cargamos
esas, entonces el programa ejecutará normalmente como si hubiese sido cargado totalmente. Si el proceso
intenta acceder a una página no válida (no es error de direccionamiento) causa una trampa de fallo de
página (page fault) y le transfiere el control al sistema operativo y ejecuta el procedimiento de carga de
página a memoria.

En un caso extremo, podríamos iniciar la ejecución de un proceso sin páginas en la memoria, y al ir


accediendo a las instrucciones, se irían cargando las páginas necesarias. Este esquema se llama
paginación por demanda pura. Nunca se carga una página si no se necesia.

El hardware que sirve para apoyar la paginación por demanda es el mismo que apoya la paginación y el
intercambio:
- Tabla de páginas: Marca las entradas válidas y no válidas con el bit de validez-no validez.
- Memoria secundaria: Contiene las páginas que no están en memoria principal.

Además de esto, se requiere una buena cantidad de software y algunas restricciones arquitectónicas
como la necesidad de poder reiniciar una instrucción después de un fallo de página. Y como peor caso, si el
fallo ocurrió mientras se está obteniendo un operando, es preciso volver a obtener la intrucción y
decodificarla.

10) Describa dos técnicas utilizadas para administrar el espacio libre (bloques libres) que hay en los
discos.

Ver exámen Marzo 2004. Pregunta 4 (c).


Ver exámen Marzo 2006. Pregunta 8.

11) Sea un disco con 32 cilindros numerados del 0 al 31, y la siguiente cola de pedidos: 12, 18, 1, 15,
2, 13, 17, 6, 22 y 16. Haga una tabla que muestre la secuencia de planificación de atención de los
pedidos para los algoritmos First Come First Served, Shortest Seek Time First, SCAN, C-SCAN,

Que la fuerza te acompañe Página 108


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

LOOK y C-LOOK. Suponga que la cabeza del disco está ubicada sobre el cilindro 30. Nota: En los
algoritmos que pueda haber más de una opción, elija una y aclare el criterio.

0° 1° 2° 3° 4° 5° 6° 7° 8° 9° 10° 11° 12°


FCFS 30 12 18 1 15 2 13 17 6 22 16 xx xx
SSTF 30 22 18 17 16 15 13 12 6 2 1 xx xx
SCAN 30 31 0 1 2 6 12 13 15 16 17 18 22
C-SCAN (*1) 30 31 0 1 2 6 12 13 15 16 17 18 22
LOOK 30 22 18 17 16 15 13 12 6 2 1 xx xx
C-LOOK (*1) 30 0 1 2 6 12 13 15 16 17 18 22 xx

(*1) se tomó en consideración que al momento de llegar al cilindro más alto se retomen los trabajos desde el
cilindro 0.

2008 – Marzo
1) Describa brevemente las ventajas/desventajas de los sistemas operativos diseñados con el
enfoque monolítico frente al enfoque en capas.

Ver exámen Julio 2007. Pregunta 2.

2) Describa dos mecanismos de protección que le brinda el hardware al sistema operativo.

Ver exámen Marzo 2006. Pregunta 5.

3) Realice un diagrama mostrando los principales campos del descriptor de proceso (PCB -
Process Control Block) asumiendo que está en un sistema que reconoce hilos a nivel del
sistema operativo.

Ver exámen Febrero 2007. Pregunta 4.

Que la fuerza te acompañe Página 109


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

4) ¿Qué funciones desarrolla el despachador (dispatcher)?

Es el módulo que proporciona el control de la CPU a los procesos seleccionados por el planificador a
corto plazo. Esta función implica lo siguiente:
- Cambio de contexto.
- Cambio al modo usuario.
- Salto a la posición correcta dentro del programa de usuario para reiniciar dicho programa.

El despachador debe ser lo más rápido posible, ya que se invoca en cada conmutación de proceso. El
tiempo que tarda el despachador en detener un proceso e iniciar la ejecución de otro se conoce como
latencia de despacho.

5) Sean los procesos y tiempos de procesador a utilizar que están en la siguiente Tabla:

Proceso Tiempo
P0 5
P1 8
P2 7
P3 9
Asumiendo un sistema monoprocesador que utiliza un esquema de planificación de tipo Round-
Robin con quantum igual a 3 unidades de procesador.

a- Dibuje una gráfica de cómo varía en el tiempo el uso del procesador entre los procesos.

Tiempo / Proceso P0 P1 P2 P3 Tiempo / Proceso P0 P1 P2 P3


1 16
2 17
3 18
4 19
5 20
6 21
7 22
8 23
9 24
10 25
11 26
12 27
13 28
14 29
15

b- Brinde los tiempos de retorno (turnaround time) y espera (waiting time) de todos los procesos.

Proceso / Dato Tiempo de retorno Tiempo de espera


P0 14 14 - 5 = 9
P1 25 25 - 8 = 17
P2 26 26 - 7 = 19
P3 29 29 - 9 = 20

El tiempo de retorno es el intervalo de tiempo desde que un proceso es cargado, hasta que finaliza su
ejecución.
El tiempo de espera es la suma de los intervalos de tiempo que un proceso estuvo en la cola de procesos
listos (ready queue). Es el tiempo total - el tiempo de proceso.

6) ¿Por cuales etapas debe pasar un código fuente escrito en un lenguaje de programación de alto
nivel antes de poder ser ejecutado en un sistema operativo?

Que la fuerza te acompañe Página 110


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Ver exámen Marzo 2005. Pregunta 4.

7) ¿Qué entiende por asociación de direcciones?

La asociación de direcciones se refiere al momento en que se vinculan las direcciones lógicas


(generadas por la CPU) con las direcciones físicas (lugar físico donde se encuentra el dato buscado en
memoria principal). Hay tres momentos en los cuales se puede realizar dicha asociación:

- Tiempo de compilación: Si se sabe en el momento de realizar la compilación dónde va a


residir el proceso en memoria, podremos generar código absoluto. Por ejemplo, si sabemos
que un proceso de usuario va a residir en una zona de memoria que comienza en la ubicación
R, el código generado por el compilador comenzará en dicha ubicación y se extenderá a partir
de ahí. Si la ubicación inicial cambiase en algún instante posterior, entonces será necesario
recompilar el código. Los programas .COM de MS-DOS se acoplan en tiempo de compilación.

- Tiempo de carga: Si no conocemos en tiempo de compilación dónde va a residir el proceso en


memoria, el compilador deberá generar código reubicable. En este caso, se retarda la
reasignación final hasta el momento de la carga. Si cambia la dirección inicial, tan sólo es
necesario volver a cargar el código de usuario para incorporar el valor modificado.

- Tiempo de ejecución: Si el proceso puede desplazarse durante su ejecución desde un


segmento de memoria a otro, entonces es necesario retardar la reasignación hasta el instante
de la ejecución. Para que este esquema pueda funcionar, será preciso disponer de hardware
especial (MMU). La mayoría de los sistemas operativos de propósito general utilizan este
método.

8) ¿Para que son útiles los algoritmos de reemplazo de marcos (frames)?

Los algoritmos de reemplazo de marcos, son útiles para decidir que páginas pueden ser sacadas de
memoria cuando se necesita cargar una nueva y ya no hay espacio.

9) Describa el algoritmo de reemplazo de óptimo (Optimal Page Replacement). Muestre sus


beneficios y sus limitaciones.

Ver exámen Abril 2003. Pregunta 2.

10) a-¿Para qué es útil el modelo del Working-Set?.

El modelo de Working Set es útil en la medida que impide la hiperpaginación y al mismo tiempo matiene
el grado de multiprogramación con el mayor valor posible. De este modo se optimiza la tasa de utilización de
la CPU.

b- Describa el modelo del Working-Set.

Se basa en el supuesto de localidad. Este modelo emplea un parámetro D para definir la ventana
del conjunto de trabajo. De lo que se trata es de examinar las D referencias a páginas más recientes, y
esas D páginas son el conjunto de trabajo. Si una página está en uso activo, estará en el conjunto de
trabajo; si ya no se está usando, saldrá de dicho conjunto, D unidades de tiempo después de su última
referencia. Así, el conjunto de trabajo es una aproximación de localidad del programa.

El sistema operativo vigila el conjunto de trabajo de cada proceso y le asigna un número de marcos
igual a su tamaño. Si hay marcos libres, puede iniciar otro proceso. Si la suma de los tamaños de los
conjuntos de trabajo aumenta hasta exceder el número total, el sistema operativo suspenderá un
proceso (el cual será continuado más tarde).

Esto evita la hiperpaginación y mantiene la multiprogramación lo más alta posible. El problema


radica en la dificultad de seguir la pista a los conjuntos de trabajo.

Que la fuerza te acompañe Página 111


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

11) ¿Los sistemas RAID (Redundant Array of Inexpensive Disk), a qué mejoras apuntan?

Ver exámen Julio 2007. Pregunta 10(a).

12) Describa el método de Entrada/Salida Programada (Programmed I/O). Discuta sus ventajas y
desventajas.

Para comunicarse, el anfitrión espera hasta que el dispositivo se desocupe. Cuando lo hace, el anfitrión
pone los datos para que el dispositivo procese la entrada y la salida, y cuando el controlador percibe que se
han puesto datos, procesa la E/S pedida por el anfritrión.

En este modelo el anfitrión está en espera activa o escrutinio. Si el controlador y el dispositivo son
rápidos este método es razonable, pero si la espera es larga, lo mejor es que el anfitrión conmute a otra
tarea. Es más eficiente que el controlador del hardware notifique a la CPU cuando el dispositivo esté listo
para recibir servicio, en vez de exigirle a la CPU que consulte repetidamente para detectar una finalización
de E/S.

13) ¿Qué servicios brinda el núcleo del sistema operativo para el manejo de Entrada/Salida?

Un kernel proporciona muchos servicios relacionados con la E/S. varios de los servicios (planificación,
almacenamiento en buffer, almacenamiento en caché, gestión de colas, reserva de dispositivo y tratamiento
de errores) son proporcionados por el subsistema de E/S del kernel y se construyen sobre la infraestructura
formada por el hardware y los controladores de dispositivo. El subsistema de E/S también es responsable
de protegerse a sí mismo de los procesos erróneos y de los usuarios maliciosos.

- Planificación de E/S: Planificar un conjunto de solicitudes de E/S significa determinar un orden


adecuado en el que ejecutarlas. El orden en el que las aplicaciones realizan las llamadas al
sistema no suele ser la mejor elección. La planificación puede mejorar el rendimiento global del
sistema, permite compartir el acceso a los dispositivos equitativamente entre los distintos
procesos y puede reducir el tiempo de espera medio requerido para que la E/S se complete.

- Almacenamiento en buffer: un buffer es un área de memoria que almacena datos mientras se


están transfiriendo entre dos dispositivos o entre un dispositivo y una aplicación. El
almacenamiento en buffer se realiza por tres razones.
Una razón es realizar una adaptación de velocidades entre el produtor y el consumidor de
un flujo de datos.
Un segundo uso del almacenamiento en buffer consiste en realizar la adaptación entre
dispositivos que tengan diferentes tamaños de transferencia de datos. Dichas disparidades son
especialmente comunes en la conexión por red de computadoras, en la que se utilizan
intensivamente los buffers para la fragmentación y recomposición de mensajes.
Un tercer uso del almacenamiento en buffer es el de soportar la semántica de copia en la
E/S de las aplicaciones. Esta funcionalidad sirve para grabar lo que realmente se mandó grabar
y no tomar cambios posteriores que no debieran ser incluídos en dicha grabación.

- Almacenamiento en cache: Una cache es una región de memoria rápida que alberga copias
de ciertos datos. El acceso a la copia almacenada en cache es más eficiente que el acceso al
original. El almacenamiento en buffer y el almacenamiento en cache son funciones bien
diferenciadas.

- Gestión de colas y reserva de dispositivos: Una cola de dispositivo es un buffer que


almacena la salida dirigida a un dispositivo, como por ejemplo una impresora, que no pueda
aceptar flujos de datos entrelazados. Aunque una impresora sólo puede dar servicio un cierto
trabajo cada vez, es posible que varias aplicaciones quieran imprimir sus datos de salida de
manera concurrente, sin que la salida de unas aplicaciones se mezcle con la de las otras. El
sistema operativo resuelve este problema interceptando toda salida dirigida a la impresora. La
salida de cada aplicación se almacena temporalmente en un archivo de disco separado.
Cuando una aplicación termina, el sistema de gestión de colas pone el correspondiente archivo
temporal en la cola de salida de la impresora. En algunos sistema operativo, estas colas de
impresión se gestionan mediante un proceso demonio del sistema; en otros, se gestiona
mediante una hebra interna del kernel. En cualquiera de los dos casos, el sistema operativo

Que la fuerza te acompañe Página 112


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

proporciona una interfaz de control que permite a los usuarios y a los administradores del
sistema visualizar la cola de solicitudes de impresión, eliminar trabajos no deseados para que
no se impriman, suspender impresiones en curso mientras se resuelve algún error, etc.

- Tratamiento de errores: Un sistema operativo que utilice memoria protegida puede defenderse
frente a muchos tipos de errores de hardware y de las aplicaciones, de modo que cada pequeño
error no provoque un fallo completo del sistema. Los dispositivos y las transferencias de E/S
pueden fallar de muchas formas, debido a razones transitorias (sobrecarga de red, por ejemplo)
o a razones “permanentes” (falla una controladora de disco). Los sistemas operativos pueden a
menudo compensar de manera efectiva los fallos transitorios, realizando nuevamente la
solicitud sobre el dispositivo, siempre que el protocolo así lo indique. Desafortunadamente, si un
componente importante experimenta un fallo de carácter permanente, resulta poco probable
que el sistema operaivo pueda recuperarse.

- Protección de E/S: Los errores están estrechamente relacionados con las cuestiones de
proteccón. Un proceso de usuario puede intentar incidental o deliberadamente interrumpir la
operación normal de un sistema, tratando de ejecutar instrucciones de E/S ilegales. Podemos
utilizar varios mecanismos para garantizar que ese tipo de problemas no aparezcan en el
sistema.
Para evitar que los usuarios realicen operaciones de E/S ilegales, definimos todas las
instrucciones de E/S como instrucciones privilegiadas. Así los usuarios no pueden ejecutar
instrucciones de E/S directamente, sino que tienen que hacerlo a través del sistema operativo.
Para llevar a cabo una operación de E/S, el programa de usuario ejecuta una llamada al
sistema para solicitar que el sistema operativo realice esa operación de E/S en su nombre. El
sistema operativo, ejecutándose en modo monitor, comprueba que la solicitud es válida y, en
caso afirmativo realiza la E/S solicitada. A continuación el sistema operativo devuelve el control
al usuario.
Además, habrá que utilizar el sistema de protección de memoria para proteger todas las
ubicaciones de memoria mapeada y de los puertos de E/S frente a los accesos de los usuarios.

2008 – Julio
1) ¿Qué es un sistema operativo?

Resp 1.
Es un programa o conjunto de programas que hacen más eficiente, amigable y productivo el uso de un
computador (hardware) permitiendo ejecutar aplicaiones de usuario.

Resp 2.
- Según sus procedimientos: Un sistema operativo es un conjunto de programas, rutinas y
procedimientos manuales y automáticos que administran los recursos de un sistema de
cómputo.
- Según sus funciones: Un programa o conjunto de programas es llamado sistema operativo si
cumple las funciones de:
 Inicialización de la máquina.
 Servir de interfase hombre-máquina (máquina extendida).
 Administración de recursos del sistema.

Resp 3.
Es el programa individual (núcleo o kernel) que se está ejecutando todo el tiempo en el computador.

Resp 4.
Un sistema operativo es un programa que administra el hardware de una computadora. También
proporciona las bases para los programas de aplicación y actúa como un intermediario entre el usuario y el
hardware de la computadora. Un aspecto sorprendente de los sistemas operativos es la gran variedad de
formas en que llevan a cabo estas tareas. Algunos sistemas operativos se diseñan para ser prácticos, otros
para ser eficientes y otros para ser ambas cosas.

Que la fuerza te acompañe Página 113


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2) En un sistema de propósito general, ¿qué tipo (simétrico o asimétrico) de sistema operativo


utilizaría? Justifique.

Esta pregunta se enfocaría en el sentido de un sistema multiprocesador, ya que de lo contrario, en un


sistema monoprocesador, no tendría sentido un sisema asimétrico ya que no hay varios procesadores
trabajando - ignoremos el caso de la controladora DMA y sus socios -.

Volviendo al tema, sería conveniente un sistema operativo simétrico ya que viendo las características de
ambos (ver exámen Marzo 2004. Pregunta 1(a)) es más conveniente que cada uno de los procesadores
ejecute su propia copia del sistema operativo.

3) Describa lo que entiende por un sistema operativo de micronúcleo (microkernel). A su vez,


describa sus ventajas.

Ver exámen Diciembre 2005. Pregunta 2.


Ver exámen Marzo 2006. Pregunta 4.

4) ¿Qué estado de proceso debe tener un proceso cuando realiza una invocación a un llamado a
sistema? Justifique.

El único estado en el cual un proceso puede realizar un llamado al sistema es en ejecución, ya que si se
encuentra en algún otro estado, no estará haciendo uso del CPU, por lo que no estará ejecutando
instrucciones.

5) El despachador (dispatcher) realiza el cambio de contexto de dos procesos en un procesador.


Enumere las tareas que debe realizar.

El despachador deberá realizar los siguientes pasos al momento de realizar un cambio de contexto:

i. Salvar el contexto actual del procesador.


ii. Actualizar el PCB que estaba en estado de “Ejecución”. Esto implica cambiar el estado del
proceso a alguno de los otros estados.
iii. Mover el PCB a la cola apropiada de procesos (“listos”, “bloqueados”, etc).
iv. Seleccionar otro proceso para ejecutar.
v. Actualizar el PCB del proceso seleccionado. Esto incluye cambiar el estado del proceso a
“Ejecución”.
vi. Actualizar las estructuras de datos de gestión de memoria.
vii. Restaurar el contexto del proceso a aquel que existía en el momento en el que el proceso
seleccionado dejó por última vez el estado en “Ejecución”.
viii. Pasar a modo usuari y ceder el control de la CPU.

6) ¿Qué función cumple el cargador (loader) del sistema?

En computación, el loader o cargador del sistema es la parte del sistema operativo que es responsable
por una de las etapas escenciales en el proceso de inicialización de un programa, que es, arrancar el
programa comenzando por leer los contenidos de los archivos ejecutables y cargarlos a memoria, después
debe llevar a cabo las tareas preparatorias, después de las cuales al código del programa finalmente le es
permitido ejecutar, y es iniciado cuando el sistema operativo le cede el control al programa recién cargado.

En muchos sistemas operativos, el loader está residente permanentemente en memoria, aunque


algunos sistemas que soportan memoria virtual pueden permitir que el loader se localice en una región de
memoria paginable.

Sus tareas incluyen (en unix):


i. Validación: permisos, requerimientos de memoria, etc.
ii. Copiar la imagen del programa desde el disco a memoria principal.
iii. Copiar los argumentos de la línea de comando al stack.
iv. Inicializar los registros (p. ej. Stack pointer).
v. Saltar al punto de entrada al programa.

Que la fuerza te acompañe Página 114


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

7) Describa, a través de un esquema, como se divide en componentes la memoria virtual de un


proceso.

8) Sea un
sistema de 16
bits, que
utiliza memoria virtual con páginas de 256 bytes, y con una estructura de tabla de páginas de
dos niveles. Construya una dirección virtual para acceder al byte 5119.
Nota:
- La componente para el número de página se debe dividir a la mitad (para el primer y
segundo nivel).
- Trabaje siempre con valores que empiezan en 0. Ej. El primer valor de la entrada de una
tabla es 0.

De la letra obtengo los siguientes datos:


1) Las páginas son de 256 bytes y pide acceder al byte 5119, entonces deducimos que la
medida de la página es en bytes (no hay que ser un Sherlock, generalmente son de ese
tamaño).

2) De (1) deducimos que precisamos 8 bits para el desplazamiento )para representar las 256
posiciones 2^8 = 256).

3) Nos restan 8 bits = 16 - 8 para los dos niveles de páginas. Como dice que se debe dividir
a la mitad, las páginas de primer y de segundo nivel tienen 4 bits cada una.

4) Dividiendo 5119 entre 256 obtenemos 19 páginas completas y restan 255 bytes de la
página 20 que no está completa. Por lo que la página buscada es la número 19
(acordarse de que arranca en 0!!!!!!).

5) Como solamente puedo representar hasta 16 páginas con los bits de la tabla de 2do
nivel, necesito utilizar los bits de la tabla de 1er. nivel de la siguiente forma:
- Divido 20 entre 16 = 1 y restan 4. Esto corresponde a que se encontrará en la segunda
tabla de páginas de 1er nivel. Esto corresponde a que los primeros 4 bits de la
dirección serán 0001
- Los bits correspondientes a la página de segundo nivel son la representación del
resto de la división: 4. Por lo que los bits correspondientes al 2do nivel de páginas
serán 0011 (acordarse que arranca de 0!!!!!).

Que la fuerza te acompañe Página 115


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

6) Ahora calculo los bits correspondientes al desplazamiento, que es transformar 255 en


binario 1111 1111.

7) Por último, unifico la dirección


1er. nivel 2do. nivel Desplazamiento
0001 0011 1111 1111

9) En un sistema que implementa memoria virtual, de qué forma dos hilos (threads) de un mismo
proceso pueden compartir información (estructuras de datos).

Por omisión, los threads o hilos de un mismo proceso comparten la memoria y los recursos del proceso
al que pertentecen.

10) ¿Los sistemas RAID (Redundant Array of Inexpensive Disk), a qué mejoras apuntan?

Ver exámen Julio 2007. Pregunta 10 (a).

11) ¿Qué servicios brinda el núcleo del sistema operativo para el manejo de Entrada/Salida?

Ver exámen Marzo 2008. Pregunta 13.

2008 – Diciembre
1) Describa la taxonomía de Flynn en cuanto a los sistemas paralelos.

La taxonomía de Flynn caracterizó las arquitecturas de computadores y sobre que datos se están aplicando.

En base a las imágenes,


podemos deducir que para sistemas
paralelos tenemos 3 opciones:

- MISD (Multiple Instruction, Single


Data): Es utilizado para paralelismo
redundante.

- SIMD (Single Instruction, Multiple


Data): Son sistemas que ejecutan la
misma instrucción sobre un conjunto
distinto de datos. Son llamados Sistemas
Vectoriales.

- MIMD (Multiple Instruction, Multiple


Data): Sistemas con procesadores
autónomos que ejecutan en forma
simultánea diferentes instrucciones sobre
diferentes datos.

Que la fuerza te acompañe Página 116


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2) ¿Qué permite el modo dual de ejecución que brindan ciertos Microprocesadores?

Con la introducción de sistemas multiprogramados y multiusuarios se empezaron a generar problemas


en el uso de los recursos debido a procesos “mal programados” o “mal intencionados”. Por lo que fue
necesario la introducción de protección entre los distintos procesos que ejecutaban en un sistema. El
hardware fue suministrando a los sistemas operativos de mecanismos para la protección: modo dual,
protección de E/S, protección de memoria, protección de CPU.

Modo Dual: Se provee de al menos dos modos de ejecución: “modo usuario” y “modo supervisor”. En el
modo usuario (user mode), se pueden ejecutar un conjunto reducido de instrucciones de hardware. Los
procesos a nivel de usuario ejecutan en este modo. Por otra parte, en modo supervisor (monitor mode)
todas las instrucciones de hardware están disponibles. El sistema operativo es el único que debe ejecutar
en este modo.

Un bit, llamado mode bit, es agregado al hardware para indicar el modo actual.

3) En un sistema de tiempo compartido que características se le pedirían a un planificador de CPU.

La principal característica que debe tener un planificador en un sistema de tiempo compartido es la


igualdad en el uso del procesador por parte de los procesos de todos los usuarios. La planificación por
turnos o Round Robin es de las mejores opciones ya que es de los algoritmos mas equitativos en cuanto al
reparto de CPU entre los procesos ya que cada proceso tiene asignado un intervalo de tiempo de ejecución
(quantum). Si el proceso agotó su quantum, se elige a otro proceso de la cola de procesos listos para
ocupar el CPU; si el proceso se bloquea por E/S o termina antes de agotar su quantum, también se
selecciona a otro proceso de la cola de listos para que comience a ejecutar.
4) Dada las características de los procesadores actuales (multi-cores) que ventaja presenta un
sistema operativo tenga soporte de hilos (threads) a nivel del sistema operativo frente a otro que
no lo tenga.

La ventaja de un sistema operativo que soporta hilos a nivel del sistema operativo en un sistema multi-
core es que se pueden ejecutar diferentes hebras del mismo proceso en diferentes CPUs al mismo tiempo,
esto implica que las tareas que realicen dichos hilos (en CPUs separadas) se realizarán de manera
concurrente, lo que acortará el tiempo de espera de los resultados de cada uno de los hilos.

Por otra parte, se tiene también la ventaja de que en caso que un hilo se bloquee esperando por una
operación de E/S u otra llamada al sistema, los demás hilos no se bloquearán y podrán continuar
ejecutando, y también, en caso que haya otra hebra del mismo proceso esperando por CPU, ésta podrá
pasar a ejecutar en la CPU liberada recientemente ya que solamente se ha bloqueado el hilo que hizo la
llamada y no todo el proceso al que pertenecía el hilo bloqueado.

5) Describa el modelo de hilos (threads) MxN (Many-To-Many).

Ver exámen Agosto 2003. Pregunta 3.

6) Sea un sistema monoprocesador que utiliza un planificador de tipo round-Robin con quantum =
2. Si se tiene la siguiente secuencia de ejecución de instrucciones para los procesos P0, P1 y P2:

P0: C C C C E E C
P1: C E C C C
P2: E C C C C

Donde C representa un cómputo en una unidad de tiempo y E una operación de Entrada/Salida


que tarda 3 unidades de tiempo (1 ejecución y 2 de espera).

A su vez, P0 está listo para ejecutar en el tiempo 0, P1 en el tiempo 1 y P2 en el tiempo 2.

Dibuje como será la distribución del recurso procesador en una línea del tiempo. A su vez,
mencione en que estado está cada instante del tiempo.
Nota:

Que la fuerza te acompañe Página 117


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

- Asuma que el cambio de contexto es despreciable.


- La cola de procesos listos es FIFO.

En Procesos Proceso bloqueado E/S


Tiempo Comentarios
CPU listos (tiempo restante)
0 P0 Llega P0 y comienza su ejecución
1 P0 Llega P1 y queda en la fila de listos P1
2 P1 Llega P2 y queda junto con P0 en fila de listos P0, P2
3 P1 Ejecuta la solicitud de E/S P0, P2
4 P0 Ejecuta P0 P2 P1(2)
5 P0 Ejecuta P0 P2 P1(1)
6 P2 Empiezo a ejecutar P2 con E/S P0, P1
7 P0 Retomo P0 con E/S, la primera. P1 P2(2)
8 P1 Retomo P1 -- P2(1), P0(2)
9 P1 Continúo ejecutando P1 P2 P0(1)
10 P2 Retomo P2 con ejecución. P1, P0
11 P2 Continúo ejecutando P2 P1, P0
12 P1 Retomo P1 y con esta ejecución finaliza P0, P2
13 P0 Retomo P0 con E/S, la segunda P2
14 P2 Retomo P2 ejecutando -- P0(2)
15 P2 Continúa ejecución P2 y finaliza -- P0(1)
16 P0 Comienza a ejecutar P0 nuevamente y finaliza

7) Describa los tipos asociación de direcciones (address binding) que conoce.

Ver exámen Marzo 2008. Pregunta 7.

8) Sea un sistema con 4 marcos y la siguiente secuencia de accesos a páginas por parte de un
proceso:
1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 7, 8, 9, 7, 8, 9, 5, 4, 5, 4, 2
a- ¿Cuántos fallos de página ocurrirán si el algoritmo de reemplazo a utilizar es el óptimo?

Marco/Tiempo 1 2 3 4 5 6 7 8 9 10 11
Marco 1 1 6 8 4
Marco 2 2 5 2
Marco 3 3 7
Marco 4 4 9

Hay 11 fallos de página.

b- ¿Cuántos fallos de página ocurrirán si el algoritmo de reemplazo a utilizar es el LRU?

Marco/Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13
Marco 1 1 5 8 2
Marco 2 2 1 9
Marco 3 3 6 5
Marco 4 4 7 4

Ocurrirán 13 fallos de página.

9) ¿Por qué razón se tienden a utilizar más de un nivel de indirección en la traducción de


direcciones de paginación?

Básicamente, el fin buscado en la utilzación de más de un nivel de indirección en la traducción de


direcciones en paginación es la eficiencia de la estructura en cuanto al tamaño ocupado por la tabla de
páginas.

Que la fuerza te acompañe Página 118


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Este método llamado


también Paginación
Jerárquica consiste en la
paginación de la tabla de
páginas. De esta forma,
existirá una jerarquía de
páginas. Básicamen la idea
es dividir la compenente de
indexado en la tabla de
página, de la dirección virtual
en varios niveles. Este
esquema se puede aplicar
varias veces y lograr varios
niveles de indexación.

10) En una arquitectura de 16 bits con paginación y marcos (frames) de 4096 bytes. Proponga un
sistema de traducción de memoria virtual a física.

Dado que las páginas son de 4096 bytes, necesito 12 bits para representar el desplazamiento dentro de
éstas (2^12 = 4096).
Me restan 4 bits para indicar la página, por lo que solamente puedo direccionar 16 páginas o frames.

p d
0000 0000 0000 0000
Utilizaría paginación en un solo nivel.
11) Describa para que es útil un servicio de buffering a nivel del subsistema de entrada/salida.

El buffering es un lugar de memoria que guarda información (datos) mientras son trasnferidos entre dos
dispositivos o un dispositivo y una aplicación.

Este servicio es útil a nivel del subsistema de E/S ya que sirve para:

- Normalizar las velocidades entre diferentes dispositivos.


- Adaptarse entre los dispositivos que difieren en los tamaños de transferencia.
- Mantener la semántica de las aplicaciones que realizan E/S: una operación write en el buffer de
usuario es copiado a un buffer del sistema operativo. De esa forma, el sistema logra
independizarse de la aplicación.

2009 – Febrero
1) Describa los sistemas de multiprocesadores simétricos y asimétricos.

Ver exámen Marzo 2004. Pregunta 1.a.

2) a- Mencione los servicios básicos que debe brindar un sistema operativo.

Ver exámen Diciembre 2004. Pregunta 5.

b- ¿De qué forma se los brinda a los procesos a nivel de usuario?

Mediante la forma de llamadas al sistema o system calls.

3) Describa los estados de los procesos y sus transiciones.

Ver exámen Febrero 1998. Pregunta 3.

Que la fuerza te acompañe Página 119


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

4) ¿En qué tipos de sistemas se pueden utilizar planificadores expropiativos (preemptive


scheduling)?

- Planificación por prioridades: Si bien este tiene también la variante de no expropiativo, se


puede utilizar la versión expropiativa por prioridades, si nos llega un proceso con una prioridad
más alta que la del proceso que estamos ejecutando, procederemos a expropiarle la CPU.

- Round Robin: Es un algoritmo de planificación por turnos, diseñado especialmente para los
sistemas de tiempo compartido. En este tipo de sistemas se define una pequeña unidad de
tiempo, denominada “cuanto de tiempo”, o franja temporal. La cola de procesos preparados se
trata como una cola circular. El planificador de la CPU recorre la cola de procesos preparados,
asignando la CPU a cada proceso durante un intervalo de tiempo de hasta un cuanto de tiempo.

- Colas multinivel: Otra clase de algoritmos de planificación es la que se ha desarrollado para


aquellas situaciones en las que los procesos pueden clasificarse fácilmente en grupos
diferentes. Dependiendo de los requisitos de tiempos de respuesta, por ejemplo, pueden tener
diferentes requisitos de tiempos de respuesta, y por tanto, distintas necesidades de
planificación. Cada cola tendrá su propio algoritmo de planificación el cual puede ser
expropiativo. (Habría más detalle sobre CMN pero queda para otra que lo pida
específicamente).

5) ¿Qué entiende por memoria virtual?

La memoria virtual incluye la separación de la memoria lógica, tal como la percibe el usuario, con
respecto a la memoria física. Esta separación permite proporcionar a los programadores una memoria
virtual extremadamente grande, cuando sólo está disponible una memoria física de menor tamaño.

Facilita de manera considerable la tarea de programación, porque el programador ya no tiene por


qué preocuparse de la cantidad de memoria física disponible; en lugar de ello, puede concentrarse en el
problema que deba resolver mediante su programa.

Además de separar la memoria lógica de la memoria física, la memoria virtual también permite que
dos o más procesos compartan los archivos y la memoria mediante mecanismos de compartición de
páginas. Esto proporciona las siguientes ventajas:
- Las bibliotecas del sistema pueden ser compartidas por numerosos procesos mapeando el
objeto compartido sobre un espacio de direcciones virtual. Aunque cada proceso considera que
las bibliotecas forman parte de su propio espacio de direcciones virtuales, las páginas reales de
memoria física en las que residen, las bibliotecas se mapean en modo sólo lectura dentro del
espacio de cada proceso con el cual se monten.

- De forma similar, la memoria virtual permite a los procesos compartir memoria (comunicación
con memoria compartida). La memoria virtual permite que un proceso cree una región de
memoria que luego pueda compartir con otro proceso. Los procesos que compartirán esta
región la considerarán parte de su espacio de direcciones virtual, aunque en realidad las
páginas físicas reales de la memoria estarán compartidas entre los distintos procesos.

- La memoria virtual puede permitir que se compartan páginas durante la creación de procesos
mediante la llamada al sistema fork(), acelerando así la tarea de creación de procesos.

6) Sea un sistema de 32 bits que maneja memoria virtual con paginación. Las direcciones virtuales
se componen de 20 bits para direccionar la página y 12 para el desplazamiento.
a- ¿De que tamaño son las páginas?

El tamaño de las páginas es de 2^desplazamiento = 2^12 = 4KB.

b- ¿De que tamaño son las frames?

Que la fuerza te acompañe Página 120


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Como es un sistema de paginación, los frames son exactamente del mismo tamaño que las páginas =
4KB.

c- Si las entradas de la tabla de páginas son de 4 bytes y cada tabla es del tamaño de una
página, ¿Cómo se distribuye la componente de 20 bits para direccionar las páginas?

(Tamaño de entrada * Cantidad de entradas en la TP) / Tamaño de la pàgina

(2^2 bytes * 2^20 entradas) / 2^12 bytes = 2^10 entradas por página

Tengo 2^20 entradas a distribuir entre tablas que soportan 2^10 entradas => 2^20 / 2^10 = 2^10

Por consiguiente tengo 2 niveles de paginación con 2^10 entradas por nivel.

7) Describa la utilidad de la TLB (Translation Look-Aside Buffer).

Ver examen JULIO 2009 pregunta 7.a.

8) ¿ Qué deficiencias sufre la segmentación frente a la paginación ?

- Fragmentación: A diferencia de los sistemas de paginación, los sistemas de segmentación


sufren de segmentación externa, lo que puede llevar a que si bien tengamos suficiente memoria
disponible para cargar un nuevo proceso, este espacio está dividido en varias partes lo cual lo
inutiliza. La paginación, si bien sufre el problema de fragmentación interna, la memoria, al estar
dividida en páginas y cada una de ellas asignada a un proceso, no estamos dejando secciones
de memoria sin asignar (aunque algunas de dichas páginas no sean completamente utilizadas).

- Reubicación: Es la solución al problema de la fragmentación externa es la compactación de los


segmentos de memoria de los procesos actualmente cargados en ella, básicamente es mover
un programa (proceso) en memoria de tal forma que este no note el cambio. Esto requiere que
las direcciones lógicas se reubiquen dinámicamente en tiempo de ejecución. En caso que las
direcciones solamente se puedan reubicar en tiempo de carga, no podremos compactar el
espacio de almacenamiento.

9) ¿ Qué ventajas ofrecen los sistemas RAID (Redundant Array of Inexpensive Disk) ?

Disponer de un gran número de discos en un sistema permite mejorar la velocidad con la que los datos
pueden leerse o escribirse, siempre y cuando los discos operen en paralelo. Además, esta configuración
también puede permitir mejorar la confiabilidad del almacenamiento de los datos ya que puede
almacenarse información redundante en ese conjunto de múltiples discos. De este modo, el fallo de uno
de estos discos no conduce a la pérdida de datos. Existen diversas técnicas de organización de discos
las cuales son utilizadas para resolver cuestiones de velocidad y fiabilidad.

10) Describa dos métodos para efectuar operaciones de E/S y de un ejemplo para que tipo de
sistema es útil.

- Sondeo (polling): Es un método de espera activa ya que se ejecuta un loop leyendo una y otra
vez el registro de estado del dispositivo hasta que el bit de ocupado se desactiva. Si la
controladora y el dispositivo son de alta velocidad, este método resulta razonable, pero si la
espera puede ser larga, quizás convenga más que el host conmutara a otra tarea. (Ejemplo:
Internet Polling Protocol (PolP): este protocolo requiere que un cliente p esté revisando cada
cierto tiempo si el valor de un objeto X ha sido actualizado. Cualquier acceso a X antes de que
se supere ese margen se satisface con la caché local de p).

- Interrupciones: El mecanismo básico de interrupción funciona de la siguiente forma. El


hardware de la CPU tiene un hilo denominado línea de solicitud de interrupción, que la CPU
comprueba después de ejecutar cada instrucción. Cuando se detecta que una controladora ha
activado una señal a través de esta línea, la CPU guarda el estado actual y salta a la rutina de
tratamiento de interrupciones situada en una dirección fija de la memoria. Esta rutina determina

Que la fuerza te acompañe Página 121


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

la causa de la interrupción, lleva a cabo el procesamiento necesario, realiza una restauración


del estado y ejecuta una instrucción return from interrupt para volver a situar la CPU en el
estado de ejecución anterior a que se produjera la interrupción. Este mecanismo básico de
interrupción permite a la CPU responder a un suceso asíncrono, como es el caso en que una
controladora de dispositivo pasa a estar lista para ser servida. (Ejemplo: mouse/teclado)

- DMA: Dado que para realizar transferencias de gran tamaño, como por ejemplo una unidad de
disco, parece bastante poco apropiado usar un procesador de propósito general (que es
generalmente caro) para comprobar el estado de dicha transferencia y para escribir datos en un
registro de una controladora de byte en byte (E/S programada PIO). Se trata de evitar la
sobrecarga de la CPU principal con tareas de tipo PIO, asignando parte de este trabajo en un
procesador de propósito especial denominado controladora de DMA. Para iniciar una
transferencia de DMA, el host describe un bloque de comando DMA en la memoria. Este bloque
contiene un puntero al origen de una transferencia, un puntero al destino de la transferencia y
un contador del número de bytes que hay que transferir. La CPU escribe la dirección de este
bloque de comandos en la controladora DMA y luego continúa realizando otras tareas. La
controladora DMA se encarga entonces de operar el bus de memoria directamente, colocando
direcciones en el bus para realizar las transferencias sin ayuda de la CPU principal. Una vez
finalizada la transferencia completa, la controladora DMA interrumpe a la CPU. (Ejemplo: Disco
Duro)

2009 – Julio
1) ¿Qué entiende por sistema operativo ?

El sistema operativo es un software encargado de controlar y coordinar el uso del hardware entre
los diversos programas de aplicación. El sistema de computación tiene muchos recursos y el sistema
operativo actúa como gestor de esos recursos para distintos usuarios, decidiendo que solicitudes
atenderá inmediatamente, para operar de manera eficiente y justa.

Es el encargado de la ejecución de los programas de usuario a fin de evitar errores y el uso


incorrecto del computador.

Otra definición de sistema operativo es el programa individual (núcleo o kernel) que se está
ejecutando todo el tiempo en el computador.

Tiene dos objetivos principales:


- Comodidad: Facilitar las tareas de cómputo.
- Eficiencia: Se desea hacer que un sistema aproveche al máximo sus recursos.

Los sistemas operativos se crearon para facilitar y hacer lo más eficiente posible el uso del hardware.

2) ¿Qué ventajas presenta un sistema multiprocesador simétrico frente a uno asimétrico ?

Sistemas paralelos.
- Multiprocesamiento asimétrico: cada procesador tiene una tarea específica; un procesador
maestro controla el sistema y el resto de los procesadores esperan que el maestro les de
instrucciones o tienen asignadas tareas predefinidas. El procesador maestro planifica el trabajo
de los procesadores esclavos y se lo asigna.
- Multiprocesamiento simétrico: cada procesador realiza todas las tareas correspondientes al
sistema operativo; todos los procesadores son iguales, no existe una relación maestro esclavo
entre los procesadores..

La ventaja de estos modelos es que se pueden ejecutar simultáneamente muchos procesos (tantos
como procesadores se tenga) sin que se produzca un deterioro significativo del rendimiento. Sin
embargo hay que controlar cuidadosamente la E/S para asegurar que los datos lleguen al procesador
adecuado.

Que la fuerza te acompañe Página 122


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

También, dado que las CPUs están separadas, una puede estar en un período de inactividad y otra
sobrecargada, dando lugar a ineficiencias; estas situaciones se pueden evitar si los procesadores
comparten ciertas estructuras de datos. Un sistema multiprocesador de este tipo permitirá que los
procesos y los recursos (como la memoria) sean compartidos dinámicamente entre los distintos
procesadores, lo que permite disminuir la varianza entre la carga de trabajo de los procesadores.

3) ¿Por qué considera necesario mecanismos de inter-comunicación entre procesos (IPC) en un


sistema operativo ?

Los procesos que se ejecutan en un sistema pueden ser de dos tipos, independientes o procesos
cooperativos. Un proceso es independiente, si no puede afectar ni verse afectado por los restantes
procesos que se ejecutan en el sistema (no comparte datos con ningún otro proceso). Por otra parte, los
procesos cooperativos, si pueden verse afectados o afectar a los demás procesos que se ejecutan en el
sistema. Evidentemente, cualquier proceso que comparte datos con otros procesos es un proceso
cooperativo.

Hay varias razones para proporcionar un entorno que permita la cooperación entre procesos:

Compartir información: Dado que varios usuarios pueden estar interesados en la misma información
(por ejemplo un archivo compartido), debemos proporcionar un entorno que permita el acceso
concurrente a dicha información.

Acelerar cálculos: Si deseamos que una determinada tarea se ejecute rápidamente, debemos dividirla
en subtareas, ejecutándose cada una de ellas en paralelo con las demás. Es imiportante destacar que
tal aceleración sólo se puede conseguir si la computadora tiene múltiples elementos de procesamiento,
como por ejemplo varias CPUs o varios canales de E/S.

Conveniencia: Incluso un solo usuario puede querer trabajar en muchas tareas al mismo tiempo. Por
ejemplo, un usuario puede estar editando, imprimiendo y compilando en paralelo.

4) Sea un sistema monoprocesador con un planificador expropiativo (preemptive) que se ejecuta al


comenzar cada unidad de tiempo.
El planificador utiliza prioridades de 1 a 10 (a menor número mayor prioridad), la cual es
decrementada en 1 (uno) cada vez que un proceso está esperando por el recurso procesador y se
incrementa en 1 (uno) cada vez que un proceso está ejecutando en un procesador.
Dada la siguiente tabla de procesos, con sus prioridades, unidades de tiempo restantes por
ejecutar y en que unidad de tiempo fue creado:

Proceso Prioridad Unidades de Tiempo de


tiempo x ejecutar creación
P1 10 5 0
P2 2 4 3
P3 6 4 2
Nota: En caso de igualdad de prioridades asuma un caso.

a- Realice un esquema en el tiempo sobre como será distribuido el recurso procesador entre los
procesos en el tiempo.

p1 p1 p3 p2 p2 p2 p3 p2
+---+---+---+---+---+---+---+---+ …
0 1 2 3 4 5 6 7 8

A partir del tiempo 8 tenemos 4 posibles casos:


... p1 p3 p1 p3 p1
+--+---+---+---+---+---+
8 9 10 11 12 13

TE p1 = 8, TE p3 = 6

Que la fuerza te acompañe Página 123


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

o
... p1 p3 p3 p1 p1
+--+---+---+---+---+---+
8 9 10 11 12 13

TE p1 = 8, TE p3 = 5

o
... p3 p1 p3 p1 p1
+--+---+---+---+---+---+
8 9 10 11 12 13

TE p1 = 8, TE p3 = 5

o
... p3 p1 p1 p3 p1
+--+---+---+---+---+---+
8 9 10 11 12 13

b- ¿ Cuál es el tiempo de espera de cada proceso ?

TE p1 = 8
TE p2 = 1
TE p3 = 6

5) a- ¿ Qué ventajas presenta un sistema operativo que brinde soporte a hilos (threads) a nivel del
sistema operativo ?

Provee un mayor grado de concurrencia (modelo uno-a-uno) ya que permite que los otros thread
continúe su ejecución cuando uno de ellos hace una llamada al sistema y se bloquea. También permite
a múltiples threads, correr en paralelo en diferentes procesadores.

b- ¿ En que modelos de hilos es necesario un planificador a nivel de usuario ?

En el caso de tener hilos a nivel de usuario es necesario tener un planificador a este nivel ya que el
sistema operativo ve a los threads a nivel de usuario como un único thread, por lo que cuando asigne el
procesador a dicha tarea, no elegirá un thread particular para que comience a ejecutar.

6) a- ¿ Qué entiende por espacio virtual asignado a un proceso ?

El espacio virtual asignado a un proceso se refiere a su visión lógica o virtual de como un proceso es
almacenado en memoria. Tipicamente, esta vista es que un proceso comienza en cierta dirección lógica
y existe en memoria continua. Generalmente contiene el stack del proceso, su heap, los datos y el
código del mismo.

b- ¿ Los hilos de ejecución de un proceso tienen acceso ilimitado a este espacio virtual ?

Si, ya que la a diferencia de los procesos, los hilos no son independientes entre si y dado que todos
pueden acceder a todas las direcciones de la tarea, un hilo puede leer o escribir sobre la pila de otro,
por ejemplo.

7) a- ¿ Para que sirve la TLB (Translation Look-aside Buffer) ?

La TLB es un cache asociativo y de rápido acceso, sirve para acelerar la búsqueda de un frame de
memoria al que deseamos acceder; cada entrada en dicho buffer, consta de dos partes, una clave (tag) y un
valor (el número de frame).

Básicamente es un conjunto de registros construidos con memoria de alta velocidad que, dado un
número de página se compara simultáneamente con todas las entradas que contiene y si se encuentra el
número de marco correspondiente, entonces se devuelve.

Que la fuerza te acompañe Página 124


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

Es usado a modo de caché para mantener algunas de las entradas de la tabla de páginas.

A diferencia de la tabla de páginas tradicional, en gral. se evita tener dos accesos a memoria ( el acceso
a la tabla y el acceso efectivo ) para acceder a una localidad.

A nivel de hardware se puede optimizar haciendo que la MMU cargue en la TLB una entrada, luego de
resolverla ( ej: SPARC, 80x86 ), en vez de delegarlo al sistema para que lo haga a nivel de software ( ej:
MIPS ).

b- Defina el tiempo efectivo de acceso (EAT) a este nivel.

El procentaje de veces que un número de página es encontrado en la cache TLB es denominado hit
ratio.
El tiempo efectivo de acceso se define mediante la siguiente fórmula:

EAT = hit ratio * (tiempo de búsqueda en TLB + tiempo acceso a memoria) + (1 - hit ratio) * (2 * tiempo
de acceso a memeoria).

c- ¿ Qué información brinda esta medida ?

Nos permite saber la ganancia de la utilización de la cache TLB.

8) ¿ Qué ventajas brinda los sistema RAID (Redundant Array of Inexpensive Disk) ?

Los sistemas RAID brindan 2 grandes ventajas, las cuales son velocidad en el tiempo de respuesta y/o
soporte a falla de datos.

Básicamente implican el uso de múltiples discos que trabajan en forma cooperativa. Cada bloque de
datos se divide en sub bloques y se almacena un sub bloque en cada disco. Por lo que el tiempo para
transferir un bloque a la memoria se reduce ya que los discos transfieren sus sub bloques en paralelo.
Esta organización se llama conjunto redundante de discos independientes (RAID), y mejora la
confiabilidad del sistema de almacenamiento porque se almacenan datos redundantes.

Tipos de RAID (ejemplos):


- Espejos: Mantiene una copia duplicada de cada disco. Es costosa porque se necesita el doble
de discos para almacenar la misma cantidad de datos.

- Bloques de paridad intercalados: No es tan redundante. Una fracción de disco se usa para
contener bloques de paridad. Si ocurre un error, los bits perdidos se pueden recalcular. En este
caso, se puede bajar el desempeño ya que cada escritura implica recalcular y escribir el
subbloque de paridad correspondiente. Los subbloques de paridad deben estar distribuídos en
los discos (no solo en uno), a fin de repartir la carga de trabajo.

Que la fuerza te acompañe Página 125


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

2009 – Diciembre
1) ¿De que forma el sistema operativo se asegura que una aplicación no acceda directamente a un
dispositivo?

El sistema operativo impide el acceso directo de una aplicación sobre un dispositivo, mediante el modo
dual de ejecución, en el cual los programas de usuario ejecutan en modo usuario y los procedimientos de
funcionamiento de dispositivos en modo monitor; por lo tanto, el programa de usuario debe realizar una
solicitud al sistema operativo mediante una llamada al sistema indicando la información que precisa, luego
cederá el control a código autenticado del sistema operativo, el cual realizará dicha solicitud en modo
monitor, para luego de concluída la misma, retornar el control al programa de usuario en modo usuario.

2) Compare ventajas/desventajas entre un sistema operativo monolítico frente a uno en capas.

Ver exámen Abril 2003. Pregunta 9.

3) En un sistema que soporta hilos (threads) a nivel del núcleo, describa los pasos a seguir al
realizar un cambio de contexto.

Ver exámen Marzo 2006. Pregunta 7.

4) En un planificador Round-Robin, qué implicancias tiene agrandar o disminuir el tiempo de


quantum.

Si se agranda demasiado el tiempo del quantum, se podría llegar a obtener un planificador FCFS; por
otra parte, en caso que se achique demasiado el quantum de tiempo, podríamos llegar a un punto en el cual
los cálculos útiles de cada proceso sean despreciables en comparación con el tiempo que el sistema insume
realizando cambios de contexto y otras tareas que no son productivas para el o los usuarios.

5) ¿De qué se encarga el cargador (loader) del sistema operativo?

El loader toma el programa, la tabla de símbolos y una dirección real de memoria (provista por el
Sistema Operativo) llamémosle a esta dirección RR y copia el programa a partir de la dirección RR.
Antes de comenzar a ejecutar se deben resolver las direcciones de los símbolos, o sea sumarle al contenido
de cada uno el valor RR.

6) ¿Qué problemas presenta un sistema que no maneja memoria virtual?

El mayor problema que presenta este tipo de sistemas es que el tamaño máximo de proceso que puede
ejecutar está limitado a la memoria física instalada en el mismo; teniendo en cuenta lo anterior, la
multiprogramación que se puede realizar sobre el mismo es muy escasa ya que los programas que se
vayan a ejecutar deberán estar cargados completamente en memoria al momento de iniciar su ejecución.

7) Sea un sistema con paginación bajo demanda. Realice un diagrama de cómo se podría compartir
una página entre dos procesos que residen dentro del mismo sistema operativo.

To be continued…

8) ¿Cuáles son los principales atributos que describen un archivo?

Ver exámen Diciembre 2003. Pregunta 4.

9) ¿Qué ventaja(s) propone implementar un sistema de archivos virtual en un sistema operativo?

La principal ventaja de proponer un sistema de archivos virtual en un sistema operativo es abstraer


(mediante la técnica de orientación a objetos) las particularidades de cada uno de los sistemas de archivos
asociados al sistema bajo una interfaz común la cual todos los sitemas de archivos individuales
implementan. Esto permite ocultar las particularidades de cada uno de los dispositivos y manejarlos de
manera uniforme. Por otro lado, la implementación de cada una de las interfases de los dispositivos
particulares, puede tener todo el detalle y especificidad que se requieran. Por ejemplo, para abrir un archivo

Que la fuerza te acompañe Página 126


Preguntas y Respuestas Teóricas de Exámenes de Sistemas operativos. Hasta Diciembre 2009

siempre utilizamos la función fopen (en C), pero es totalemente independiente del dispositivo ya que lo
podemos hacer sobre un disco duro, CD o archivo de red.

10) Describa dos métodos para la asignación de los datos de un archivo en el disco.

- Asignación contigua: Requiere que cada archivo ocupe un conjunto contiguo de bloques en el disco. Las
direcciones de disco definen una ordenación lineal en del disco. Acceder a un archivo que haya sido
asignado de manera contigua resulta sencillo. Para el acceso secuencial, el sistema de archivos recuerda la
dirección de disco del último bloque al que se haya hecho referencia y leerá el siguiente bloque cuando sea
necesario. Para el acceso directo al bloque i de un archivo que comience en el bloque b, podemos acceder
inmediatamente al bloque haciendo b+i. Este modelo de asignación permite soportar tanto el acceso
secuencial como el acceso directo. Sin embargo, la asignación contigua tiene problemas como la dificultad
de encontrar espacio suficiente para un nuevo archivo; también sufre de fragmentación externa. A medida
que se asignan y borran archivos, el espacio libre del disco se descompone en pequeños fragmentos. Otro
problema de los mecanismos de asignación contigua es determinar cuánto espacio se necesita para un
archivo (generalmente no es lo mismo el archivo cuando recién fue creado que luego de varias
modificaciones).

- Asignación enlazada: El mecanismo de asignación enlazada resuelve todos los problemas de asignación
contigua. Con este método cada archivo es una lista enlazada de bloques de disco, pudiendo estar dichos
bloques dispersos por todo el disco. El directorio contiene un puntero al primer y al último bloque de cada
archivo.No sufre de fragmentación externa y se puede utilizar cualquiera de los bloques de la lista de
bloques libres. El principal problema es que sólo se lo puede utilizar de manera efectiva para archivos de
acceso secuencial. Cada acceso a un puntero requiere una lectura de disco y algunos de ellos requerirán un
reposicionamiento de cabezales. En consecuencia resulta muy poco eficiente tratar de soportar una
funcionalidad de acceso directo para los archivos de asignación enlazada. Otra desventaja es el espacio
requerido por los punteros y cada archivo requerirá un poco más de espacio que lo que requeriría con
Asignación contigua. También presenta problemas con la fiabilidad ya que los bloques están enlazados
mediante punteros que están dispersos por todo el disco y si uno de ellos se pierde o daña muy
probablemente se perderá toda la información del archivo. Para mejorar la performance de este método se
utiliza una FAT que indica mediante una tabla que puede ser cargada en memoria las direcciones de los
bloques del archivo y su orden.

- Asignación indexada: Resuelve el problema de acceso directo de la asignación enlazada al agrupar


todos los punteros en una única ubicación: bloque índice. Cada archivo tiene su propio bloque índice, que
es una matriz de direcciones de bloques de disco. Este mecanismo soporta el acceso directo sin sufrir el
problema de la fragmentación externa ya que puede utilizarse cualquier bloque de disco para satisfacer una
solicitud de más espacio. Sin embargo, el mecanismo de asignación indexada si sufre el problema de
desperdicio de espacio ya que se necesita espacio adicional para almacenar los punteros del bloque índice
es, generalmente mayor que el requerido para asignación enlazada. Ver métodos de asignación de bloque
índice en el libro (Silverschatz – 7ma esp. Pag 383/384).

11) En general los sistemas operativos brindan un servicio de Buffering para el subsistema de
entrada/salida, ¿qué motiva brindar este servicio?

Ver exámen Marzo 2006. pregunta 14.

Que la fuerza te acompañe Página 127

También podría gustarte