Está en la página 1de 17

1. ¿Qué es la multiprogramación?

Se denomina multiprogramación a una técnica por la que dos o más procesos pueden alojarse en la memoria principal
y ser ejecutados concurrentemente por el procesador o CPU.

2. ¿Qué es spooling? ¿Cree usted que las computadoras personales avanzadas tendrán spooling
como característica estándar en el futuro?
Se refiere al proceso mediante el cual la computadora introduce trabajos en un buffer (un área especial en memoria
o en un disco), de manera que un dispositivo pueda acceder a ellos cuando esté listo.

3. En las primeras computadoras, cada byte de datos leídos o escritos se manejaba mediante la CPU (es
decir, no había DMA). ¿Qué implicaciones tiene esto para la multiprogramación?
La CPU se sometía a una carga masiva de interrupciones, se sobrecarga al procesador y éste no era capaz de realizar
tareas adicionales o de tener un óptimo rendimiento.

4. La idea de una familia de computadoras fue introducida en la década de 1960 con las mainframes
IBM System/360. ¿Está muerta ahora esta idea o sigue en pie?
Se mantiene porque a partir de los años 60 se produjo la invención del circuito integrado o microchip,
por parte de Jack St.ClaireKilby y Robert Noyce. Después llevó a Ted Hoff
a la invención del microprocesador, en Intel. A finales de 1960 investigadores como George Gamow
notó que las secuencias de nucleótidos en el ADN formaban un código, otra forma de codificar o programar. A partir
de esta fecha, empezaron a empaquetarse varios transistores diminutos y otros componentes electrónicos en un solo
chip o encapsulado, que contenía en su interior un circuito completo: un amplificador, un oscilador, o una puerta
lógica. Naturalmente, con
estos chips (circuitos integrados) era mucho más fácil montar aparatos complicados: receptores de radio o televisión
y computadoras. En 1965y, IBM anunció el primer grupo de máquinas construidas con circuitos integrados,
que recibió el nombre de serie Edgar. Estas computadoras de tercera generación sustituyeron totalmente a los de
segunda, introduciendo una forma de programar que aún se mantiene en las grandes computadoras actuales.

5. Una razón por la cual las GUI no se adoptaron con rapidez en un principio fue el costo del hardware
necesario para darles soporte. ¿Cuánta RAM de video se necesita para dar soporte a una pantalla de texto
monocromático de 25 líneas x 80 caracteres?
4kb de RAM
¿Cuánta se necesita para un mapa de bits de 1024 _ 768 píxeles y colores 24 bits?
25165824bits
¿Cuál fue el costo de esta RAM con precios de 1980 (5 dólares/KB)?
122880 dolares
¿Cuánto vale ahora?
467001 dolares

6. Hay varias metas de diseño a la hora de crear un sistema operativo, por ejemplo: la utilización de
recursos, puntualidad, que sea robusto, etcétera. De un ejemplo de dos metas de diseño que puedan
contradecirse entre sí.

Para poder diseñar un sistema operativo es necesario que el diseñador debe tener en cuenta que funciones quieres que
haga el sistema operativo.

7. ¿Cuál de las siguientes instrucciones debe permitirse sólo en modo kernel?


a) Deshabilitar todas las interrupciones.
b) Leer el reloj de la hora del día.
c) Establecer el reloj de la hora del día.
d) Cambiar el mapa de memoria.

8. Considere un sistema con dos CPUs y que cada CPU tiene dos hilos (hiperhilamiento). Suponga que
se inician tres programas P0, P1 y P2 con tiempos de ejecución de 5, 10 y 20 mseg, respectivamente. ¿Cuánto
se tardará en completar la ejecución de estos programas? Suponga que los tres programas están 100% ligados
a la CPU, que no se bloquean durante la ejecución y no cambian de CPU una vez que se les asigna.

el tiempo que tarda en completar la ejecución de un programa en un nanosegundo.


9. Una computadora tiene una canalización con cuatro etapas. Cada etapa requiere el mismo tiempo
para hacer su trabajo, a saber, 1 nseg. ¿Cuántas instrucciones por segundo puede ejecutar esta máquina?

se pueden ejecutar dos o más instrucciones se obtienen a la vez, se decodifican y se vacían en un búfer de contención
hasta que puedan ejecutarse.

10. Considere un sistema de cómputo con memoria caché, memoria principal (RAM) y disco, y que el
sistema operativo utiliza memoria virtual. Se requieren 2 nseg para acceder a una palabra desde la caché, 10
nseg para acceder a una palabra desde la RAM y 10 ms para acceder a una palabra desde el disco. Si la
proporción de aciertos de caché es de 95% y la proporción de aciertos de memoria (después de un fallo de
caché) es de 99%, ¿cuál es el tiempo promedio para acceder a una palabra?

el tiempo promedio de retraso para acceder a una palabra despues de un fallo de la cache es de uno o dos
ciclos de reloj.

11. Un revisor alerta observa un error de ortografía consistente en el manuscrito del libro de texto de
sistemas operativos que está a punto de ser impreso. El libro tiene cerca de 700 páginas, cada una con 50 líneas
de 80 caracteres. ¿Cuánto tiempo se requerirá para digitalizar en forma electrónica el texto, para el caso en
que la copia maestra se encuentre en cada uno de los niveles de memoria de la figura 1-9? Para los métodos de
almacenamiento interno, considere que el tiempo de acceso dado es por carácter, para los discos suponga que
el tiempo es por bloque de 1024 caracteres y para la cinta suponga que el tiempo dado es para el inicio de los
datos, con un acceso posterior a la misma velocidad que el acceso al disco.

el tiempo para acceder en forma aleatoria a los datos en ella es de cerca de tres órdenes de magnitud más lento.

12. Cuando un programa de usuario realiza una llamada al sistema para leer o escribir en un archivo en
disco, proporciona una indicación de qué archivo desea, un apuntador al búfer de datos y la cuenta. Después,
el control se transfiere al sistema operativo, el cual llama al driver apropiado. Suponga que el driver inicia el
disco y termina hasta que ocurre una interrupción. En el caso de leer del disco, es obvio que el procedimiento
que hizo la llamada tiene que ser bloqueado (debido a que no hay datos para leer). ¿Qué hay sobre el caso de
escribir en el disco? ¿Necesita ser bloqueado el procedimiento llamador, para esperar a que se complete la
transferencia del disco?

En cierto sentido, realizar una llamada al sistema es como realizar un tipo especial de llamada a un procedimiento,
sólo que las llamadas al sistema entran al kernel y las llamadas a procedimientos no.

13. ¿Qué es una instrucción de trap? Explique su uso en los sistemas operativos.
el trap se usa para transferir el control al sistema operativo

14. ¿Cuál es la diferencia clave entre un trap y una interrupción?


Cuando ocurre una interrupción, el sistema operativo sólo puede tener unos cuantos microsegundos para realizar
cierta acción o de lo contrario, puede perder información crítica.

15. ¿Por qué se necesita la tabla de procesos en un sistema de tiempo compartido? ¿Se necesita también
en los sistemas de computadora personal en los que sólo existe un proceso, y ese proceso ocupa toda la máquina
hasta que termina?

El sistema de tiempo compartido oficial de IBM, conocido como TSS/360, se liberó después de tiempo y cuando por
fin llegó era tan grande y lento que pocos sitios cambiaron a este sistema.

16. ¿Existe alguna razón por la que sería conveniente montar un sistema de archivos en un directorio no
vacío? De ser así, ¿cuál es?
Después de la llamada a mount, se puede tener acceso a un archivo en la unidad 0 con sólo utilizar su ruta del
directorio raíz o del directorio de trabajo, sin importar en cuál unidad se encuentre.

17. ¿Cuál es el propósito de una llamada al sistema en un sistema operativo?


el propósito principal de un sistema operativo es proveer ciertas abstracciones clave, siendo las más importantes los
procesos y hilos, los espacios de direcciones y los archivos.

18. Para cada una de las siguientes llamadas al sistema, proporcione una condición que haga que falle:
fork, exec y unlink.
En realidad, la llamada al sistema en sí es exec, pero varios procedimientos de biblioteca lo llaman con distintos
parámetros y nombres ligeramente diferentes.

19. ¿Podría la llamada cuenta = write(fd, bufer, nbytes); devolver algún valor en cuenta distinto de
nbytes? Si es así, ¿por qué? porque Crea un duplicado exacto del proceso original, incluyendo todos los
descriptores de archivos.

20. Un archivo cuyo descriptor es fdcontiene la siguiente secuencia de bytes: 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5. Se


realizan las siguientes llamadas al sistema: lseek(fd, 3, SEEK_SET); read(fd, &bufer, 4); en donde la llamada
lseek realiza una búsqueda en el byte 3 del archivo. ¿Qué contiene buferdespués de completar la operación de
lectura?
La llamada a fork devuelve un valor, que es cero en el hijo e igual al identificador del proceso (PID) hijo en el padre.

21. Suponga que un archivo de 10 MB se almacena en un disco, en la misma pista (pista #: 50) en sectores
consecutivos. El brazo del disco se encuentra actualmente situado en la pista número 100. ¿Cuánto tardará en
recuperar este archivo del disco? Suponga que para desplazar el brazo de un cilindro al siguiente se requiere
aproximadamente 1 ms y se requieren aproximadamente 5 ms para que el sector en el que está almacenado el
inicio del archivo gire bajo la cabeza. Suponga además que la lectura ocurre a una velocidad de 100 MB/s.
Para desplazar el brazo a un cilindro aleatoriamente se requieren por lo general de 5 a 10 milisegundos, dependiendo
de la unidad.

22. ¿Cuál es la diferencia esencial entre un archivo especial de bloque y un archivo especial de carácter?

Los archivos especiales de bloque se utilizan para modelar dispositivos que consisten en una colección de bloques
direccionables al azar, tales como los discos.
Al abrir un archivo especial de bloque y leer, por decir, el bloque 4, un programa puede acceder de manera directa al
cuarto bloque en el dispositivo sin importar la estructura del sistema de archivos que contenga. De manera similar,
los archivos especiales de carácter se utilizan para modelar impresoras, módems y otros dispositivos que aceptan o
producen como salida un flujo de caracteres.

23. En el ejemplo que se da en la figura 1-17, el procedimiento de biblioteca se llama ready la misma
llamada al sistema se llama read. ¿Es esencial que ambos tengan el mismo nombre? Si no es así, ¿cuál es más
importante?

En su preparación para llamar al procedimiento de biblioteca read, que es quien realmente hace la llamada al sistema
read, el programa llamador primero mete los parámetros en la pila, como se muestra en los pasos 1 a 3 de la figura 1-
17.

24. El modelo cliente-servidor es popular en los sistemas distribuidos. ¿Puede utilizarse también en un
sistema de una sola computadora?

Se puede utilizar para un solo equipo o para una red de equipos.


25. Para un programador, una llamada al sistema se ve igual que cualquier otra llamada a un
procedimiento de biblioteca. ¿Es importante que un programador sepa cuáles procedimientos de biblioteca
resultan en llamadas al sistema? ¿Bajo qué circunstancias y por qué?

Cuando un programa de CMS ejecutaba una llamada al sistema, ésta quedaba atrapada para el sistema operativo en
su propia máquina virtual, no para VM/370, de igual forma que si se ejecutara en una máquina real, en vez de una
virtual. Después, CMS emitía las instrucciones normales de E/S de hardware para leer su disco virtual o lo que fuera
necesario para llevar a cabo la llamada.

26. La figura 1-23 muestra que varias llamadas al sistema de UNIX no tienen equivalentes en la API
Win32. Para cada una de las llamadas que se listan y no tienen un equivalente en Win32, ¿cuáles son las
consecuencias de que un programador convierta un programa de UNIX para que se ejecute en Windows?

Tiene muchos parámetros que especifican las propiedades del proceso recién creado. Windows no tiene una jerarquía
de procesos como UNIX, por lo que no hay un concepto de un proceso padre y un proceso hijo. Una vez que se crea
un proceso, el creador y el creado son iguales.

27. Un sistema operativo portátil se puede portar de la arquitectura de un sistema a otro, sin ninguna
modificación. Explique por qué no es factible construir un sistema operativo que sea completamente portátil.
Describa dos capas de alto nivel que tendrá al diseñar un sistema operativo que sea altamente portátil.
En el primer grupo de ordenadores portátiles tenemos los menos potentes, los denominados netbooks. En este tipo de
equipos no deberíamos plantearnos otra opción que no fuera Windows 7 Starter o bien Windows XP que, aun siendo
un sistema operativo antiguo, resulta ideal para este tipo de equipos de bajo coste. Si nos decantamos por Linux,
podemos optar por alguna distribución específica para este tipo de equipos como puede ser Kuki Linux, compilada
especialmente para los Aspire One de Acer, hasta otras más generalistas como Linpus Lite o Joli OS.

Explique cómo la separación de la directiva y el mecanismo ayuda a construir sistemas operativos basados en
microkernel.
Con el diseño de capas, los diseñadores podían elegir en dónde dibujar el límite entre kernel y usuario.
Tradicionalmente todos las capas iban al kernel, pero eso no es necesario. De hecho, puede tener mucho sentido poner
lo menos que sea posible en modo kernel, debido a que los errores en el kernel pueden paralizar el sistema de
inmediato. En contraste, los procesos de usuario se pueden configurar para que tengan menos poder, por lo que un
error en ellos tal vez no sería fatal.

29. He aquí algunas preguntas para practicar las conversiones de unidades:


(a) ¿A cuántos segundos equivale un microaño?

1 micro año = (1 x 10^-6) x (31,536,000) = 31.536 segundos

(b) A los micrómetros se les conoce comúnmente como micrones. ¿Qué tan largo es un gigamicron?

(c) ¿Cuántos bytes hay en una memoria de 1 TB?


1 TB ocupa 1012 bytes de almacenamiento
(d) La masa de la Tierra es de 6000 yottagramos. ¿Cuánto es eso en kilogramos?

30. Escriba un shell que sea similar a la figura 1-19, pero que contenga suficiente código como para que
pueda funcionar y lo pueda probar. También podría agregar algunas características como la redirección de la
entrada y la salida, los canales y los trabajos en segundo plano.
#define TRUE 1
while (TRUE) { /* se repite en forma indefinida */
type_prompt(); /* muestra el indicador de comando en la pantalla */
read_command(command, parameters); /* lee la entrada de la terminal */
if (fork() !=0) { /* usa fork para el proceso hijo */
} else {
}
}
31. Si tiene un sistema personal parecido a UNIX (Linux, MINIX, FreeBSD, etcétera) disponible que
pueda hacer fallar con seguridad y reiniciar, escriba una secuencia de comandos de shell que intente crear un
número ilimitado de procesos hijos y observe lo que ocurre. Antes de ejecutar el experimento, escriba sync en
el shell para vaciar los búferes del sistema de archivos al disco y evitar arruinar el sistema de archivos.

Nota: No intente esto en un sistema compartido sin obtener primero permiso del administrador del sistema. Las
consecuencias serán obvias de inmediato, por lo que es probable que lo atrapen y sancionen.

Cuestionario 2

1. En la figura 2-2 se muestran los estados de tres procesos. En teoría, con tres estados podría haber
seis transiciones, dos fuera de cada estado. Sin embargo sólo se muestran cuatro transiciones. ¿Existe
alguna circunstancia en la que una o ambas de las transiciones faltantes pudiera ocurrir?
*No ya que si llegará a bloquearse el sistema se detendrian los demás procesos.

2. Suponga que debe diseñar una arquitectura de computadora avanzada que hiciera conmutación de
procesos en el hardware, en vez de tener interrupciones. ¿Qué información necesitaría la CPU? Describa
cómo podría trabajar la conmutación de procesos por hardware.
*Para obtener una precisión completa, debemos recalcar que el modelo probabilístico que acabamos de describir es
sólo una aproximación. Supone en forma implícita que los n procesos son independientes, lo cual significa que es
bastante aceptable para un sistema con cinco procesos en memoria.

3. En todas las computadoras actuales, al menos una parte de los manejadores de interrupciones se escriben
en lenguaje ensamblador. ¿Por qué?

4. Cuando una interrupción o una llamada al sistema transfiere el control al sistema operativo, por lo
general se utiliza un área de la pila del kernel separada de la pila del proceso interrumpido. ¿Por
qué?
*Por que la pila del proceso se desactiva y la del kernel va arreglando el problema.

5. Varios trabajos se pueden ejecutar en paralelo y terminar con más rapidez que si se hubieran ejecutado
en secuencia. Suponga que dos trabajos, cada uno de los cuales necesita 10 minutos de tiempo
de la CPU, inician al mismo tiempo. ¿Cuánto tiempo tardará el último en completarse, si se ejecutan
en forma secuencial? ¿Cuánto tiempo si se ejecutan en paralelo? Suponga que hay 50% de espera
de E/S.
*El último tardará aproximadamente 12 minutos ya que el cpu inició al mismo tiempo.

6. En el texto se estableció que el modelo de la figura 2-11(a) no era adecuado para un servidor de archivos
que utiliza una memoria caché. ¿Por qué no? ¿Podría cada proceso tener su propia caché?
*Por que Cuando se ejecuta un proceso con multihilamiento en un sistema con una CPU, los hilos toman turnos para
ejecutarse.

7. Si un proceso con multihilamiento utiliza la operación fork, ocurre un problema si el hijo obtiene copias
de todos los hilos del padre. Suponga que uno de los hilos originales estaba esperando la entrada
del teclado. Ahora hay dos hilos esperando la entrada del teclado, uno en cada proceso. ¿Acaso
ocurre este problema en procesos con un solo hilo?
*No, ya que si el proceso es con un sólo hilo no habría interferencia ni conflicto.
8. En la figura 2-8 se muestra un servidor Web con multihilamiento. Si la única forma de leer un archivo
es la llamada al sistema read normal con bloqueo, ¿cree usted que se están usando hilos a nivel
usuario o hilos a nivel kernel para el servidor Web? ¿Por qué?
*Utiliza hilos nivel cliente ya que va y busca en los datos del disco en procesos.

9. En el texto describimos un servidor Web con multihilamiento, mostrando por qué es mejor que un
servidor con un solo hilo y que un servidor de máquina de estados finitos. ¿Hay alguna circunstancia
en la cual un servidor con un solo hilo podría ser mejor? Dé un ejemplo.
*Sería mejor por que no habría choque en proceso. Ejemplo si esta buscando un archivo y tiene un servidor de 1 sólo
hilo la búsqueda sería más rapida.

10. En la figura 2-12, el conjunto de registros se lista por hilos, en vez de por procesos. ¿Por qué? Después
de todo, la máquina sólo tiene un conjunto de registros.
*Porque un hilo puede estar en uno de varios estados: en ejecución, bloqueado, listo o terminado. Por eso presenta el
listado por hilos.

11. ¿Por qué un hilo otorgaría de manera voluntaria la CPU al llamar a thread_yield? Después de todo,
como no hay una interrupción periódica de reloj, tal vez nunca obtenga la CPU de vuelta.
* es importante que los hilos sean amables y entreguen de manera voluntaria la CPU de vez en cuando, para dar a
otros hilos la oportunidad de ejecutarse.

12. ¿Puede darse alguna vez el apropiamiento de un hilo mediante una interrupción de reloj? De ser así,
¿bajo qué circunstancias? Si no es así, ¿por qué no?
*Si, por que en una de las interrupciones se puede apropiarse un proceso ya que esta libre.

13. En este problema debe comparar la lectura de un archivo, utilizando un servidor de archivos con un solo
hilo y un servidor multihilado. Se requieren 15 mseg para obtener una petición, despacharla y realizar el resto
del procesamiento necesario, suponiendo que los datos necesarios están en la caché del bloque. Si se necesita
una operación de disco, como es el caso una tercera parte del tiempo, se requieren 75 mseg adicionales, durante
los cuales el hilo duerme. ¿Cuántas peticiones por segundo puede manejar el servidor, si es de un solo hilo?
¿Si es multihilado?

14. ¿Cuál es la mayor ventaja de implementar hilos en espacio de usuario? ¿Cuál es la mayor desventaja?
*Que permite que cada hilo tenga su propio algoritmo, también se escalan mejor, ya que los hilos del kernel requieren
sin duda algo de espacio en la tabla y en la pila del kernel, lo cual puede ser un problema si hay una gran cantidad de
hilos.

15. En la figura 2-15, las creaciones de hilos y los mensajes impresos por los mismos se intercalan al
azar. ¿Hay alguna forma de forzar el orden para que sea estrictamente: hilo 1 creado, hilo 1 imprime
mensaje, hilo 1 termina, hilo 2 creado, hilo 2 imprime mensaje, hilo 2 termina, y así en lo sucesivo?
De ser así, ¿cómo se puede hacer? Si no es así, ¿por qué no?

16. En el análisis de las variables globales en hilos, utilizamos un procedimiento llamado crear_global para
asignar espacio para un apuntador a la variable, en vez de la misma variable. ¿Es esto esencial
o podrían trabajar los procedimientos con los valores en sí mismos de igual forma?

17. Considere un sistema en el cual los hilos se implementan por completo en espacio de usuario, en donde el
sistema en tiempo de ejecución obtiene una interrupción de reloj una vez por segundo. Suponga
que ocurre una interrupción de reloj mientras un hilo se ejecuta en el sistema en tiempo de ejecución. ¿Qué
problema podría ocurrir? ¿Puede usted sugerir una forma de resolverlo?
*Se perdería el proceso o presentaría un error en el proceso al volver el reloj.

18. Suponga que un sistema operativo no tiene algo parecido a la llamada al sistema select para ver por
adelantado si es seguro leer de un archivo, canal o dispositivo, pero que sí permite establecer relojes de alarma
que interrumpen las llamadas bloqueadas al sistema. ¿Es posible implementar un paquete de hilos en espacio
de usuario bajo estas condiciones? Explique.
*Pienso que si se puede ya que se puede configurar un hilo para que inicie las busquedas.
19. ¿Puede el problema de inversión de prioridades que vimos en la sección 2.3.4 ocurrir con hilos a nivel
usuario? ¿Por qué si o por qué no?
*No por que se perderían algunos de los procesos iniciados.

20. En la sección 2.3.4 se describió una situación con un proceso de alta prioridad H y un proceso de baja
prioridadL, que ocasionaba que H iterara en forma indefinida. ¿Ocurre el mismo problema si se utiliza la
planificación por turno circular en vez de la planificación por prioridad? Explique.

21. En un sistema con hilos, ¿hay una pila por cada hilo o una pila por cada proceso cuando se utilizan hilos a
nivel usuario? ¿y cuando se utilizan hilos a nivel de kernel? Explique.
*Hay una pila por cada hilo. En el kernel se utilizan los hilos para iniciar provesos.

22. Cuando se está desarrollando una computadora, por lo general primero se simula mediante un programa
que ejecuta una instrucción a la vez. Incluso hasta los multiprocesadores se simulan estrictamente en forma
secuencial como ésta. ¿Es posible que ocurra una condición de carrera cuando no hay eventos simultáneos
como éste?

23. ¿Funciona la solución de espera ocupada en la que se utiliza la variable turno (figura 2-23) cuando los dos
procesos se ejecutan en un multiprocesador con memoria compartida, es decir, dos CPU que
comparten una memoria común?

24. La solución de Peterson al problema de exclusión mutua que se muestra en la figura 2-24, ¿funciona cuando
la planificación es apropiativa? ¿Y qué pasa cuando es no apropiativa?

25. Dé un bosquejo acerca de cómo un sistema operativo que puede deshabilitar interrupciones podría
implementar semáforos.

26. Muestre cómo pueden implementarse los semáforos contadores (es decir, semáforos que pueden contener
un valor arbitrario) utilizando sólo semáforos binarios e instrucciones de máquina ordinarias.
Si el programa opera en fases y ningún proceso puede entrar en la siguiente
fase hasta que haya terminado con la fase actual, tiene todo el sentido de
utilizar una barrera.

27. Si un sistema sólo tiene dos procesos, ¿tiene sentido utilizar una barrera para sincronizarlos? ¿Por qué sí
o por qué no?
Con el formato round robin funciona. Tarde o temprano se ejecutará, y, finalmente, dejará su región crítica. El punto
es, con planificación por prioridades, nunca llega a funcionar en absoluto; con round robin, se pone una cantidad de
tiempo normal periódicamente, por lo que tiene la oportunidad de salir de su región crítica.

28. ¿Pueden dos hilos en el mismo proceso sincronizarse mediante un semáforo de kernel, si los hilos son
implementados por el kernel? ¿Qué pasa si se implementan en espacio de usuario? Suponga que ningún hilo
de ningún otro proceso tiene acceso al semáforo. Analice sus respuestas.
Con los hilos del kernel, un hilo se puede bloquear en un semáforo y el kernel puede ejecutar algún otro hilo en el
mismo proceso. En consecuencia, no hay ningún problema utilizando semáforos. Con hilos a nivel de usuario, cuando
un hilo se bloquea en un semáforo, el kernel piensa que todo el proceso se bloquea y no lo ejecuta Nunca más. En
consecuencia, el proceso falla.

29. La sincronización con monitores utiliza variables de condición y dos operaciones especiales: waity signal.
Una forma más general de sincronización tendría que tener una sola primitiva, waituntil, que
tuviera un predicado booleano arbitrario como parámetro. Así, podríamos decir por ejemplo:
waituntilx< 0 o y _ z < n
La primitiva signalno sería ya necesaria. Es evidente que este esquema es más general que el de Hoare o Brinch
Hansen, pero no se utiliza. ¿Por qué no? Sugerencia: Considere la implementación.
Es muy dificil de implementar. Cada vez que cualquier variable aparece, sobre la que algún proceso está esperando
cambios, el sistema en ejecución debe re-evaluar, para ver si el proceso puede ser desbloqueado. Con el Hoare y
monitores Brinch Hansen, los procesos sólo pueden ser despertados en una señal primitiva.

30. Un restaurante de comida rápida tiene cuatro tipos de empleados: (1) los que toman pedidos de los
clientes; (2) los cocineros, que preparan la comida; (3) los especialistas de empaquetado, que meten
la comida en bolsas; y (4) los cajeros, que entregan las bolsas a los clientes y reciben su dinero. Cada
empleado puede considerarse como un proceso secuencial comunicativo. ¿Qué forma de comunicación
entre procesos utilizan? Relacione este modelo con los procesos en UNIX.
Los empleados se comunican mediante el paso de mensajes. En términos UNIX, los cuatro procesos están conectadas.

31. Suponga que tenemos un sistema de paso de mensajes que utiliza buzones. Al enviar a un buzón lleno o al
tratar de recibir de uno vacío, un proceso no se bloquea. En vez de ello, recibe de vuelta un código de error.
Para responder al código de error, el proceso sólo vuelve a intentar, una y otra vez, hasta tener éxito. ¿Produce
este esquema condiciones de carrera?
No conduce a condiciones de carrera (no se pierda nada), pero es tiempo de espera.

32. Las computadoras CDC 6000 podían manejar hasta 10 procesos de E/S en forma simultánea, utilizando
una forma interesante de planificación por turno circular conocida como compartición del procesador. Se
llevaba a cabo una conmutación de procesos después de cada instrucción, por lo que
la instrucción 1 provenía del proceso 1, la instrucción 2 del proceso 2, etcétera. La conmutación de procesos se
realizaba mediante hardware especial y la sobrecarga era de cero. Si un proceso necesitaba T segundos para
completarse en ausencia de competencia, ¿cuánto tiempo necesitaría si se utilizara la compartición del
procesador con n procesos?
Se necesitará nTseg.

33. ¿Puede una medida determinar, analizando el código fuente, si un proceso es más probable que esté
limitado a CPU o limitado a E/S? ¿Cómo puede determinarse esto en tiempo de ejecución?
Si se produce un proceso varias veces en la lista, se obtendrán múltiples ciclos. Este enfoque podría ser utilizado para
dar a los procesos más importantes mas espacio en la CPU. Pero cuando los procesos se bloquean, todas las entradas
se eliminarían de la lista de procesos ejecutables.

34. En la sección “Cuándo se deben planificar” se mencionó que algunas veces la planificación se podría
mejorar si un proceso importante pudiera desempeñar un papel al seleccionar el siguiente proceso a ejecutar
al bloquearse. Mencione una situación en la que se podría utilizar esto y explique cómo.
Para varios procesos en una seccion, el padre común podría pasar a la información del sistema operativo sobre el
flujo de datos. Con esta información
el OS podría, por ejemplo, determinar qué proceso podría suministrar la salida a un proceso de bloqueo en una llamada
de entrada.

35. Las mediciones de cierto sistema han demostrado que el proceso promedio se ejecuta durante un
tiempoTantes de bloquearse debido a una operación de E/S. Una conmutación de procesos requiere de un
tiempo S, es efectivamente desperdiciado (sobrecarga). Para la planificación por turno circular con un
quántum Q, proporcione una fórmula para la eficiencia de la CPU en cada uno de los siguientes casos:
(a) Q _ ∞
(b) Q >T
(c) S <Q <T
(d) Q _ S
(e) Q cercano a 0
La eficiencia de la CPU es el tiempo de CPU útil dividida por el tiempo total de CPU. Cuando Q ≥ T, el ciclo básico
es que el proceso se ejecute para T y someterse a un interruptor de proceso para S. Por lo tanto (a) y (b) tienen una
eficiencia de T (S + T) /. Cuando la cuantía es inferior a T, cada serie T, se requiere proceso de T / Q
interruptores, desperdiciando un tiempo de ST / Q. La eficacia aquí es entonces
T + ST / Q 33333T3333 lo que reduce a Q / (Q + S), que es la respuesta a (c). Para (d), sólo sustituimos Q para S y
se encontró que la eficiencia es del 50 por ciento. Por último, para (e), como Q → 0 la eficiencia va a 0.

36. Hay cinco trabajos en espera de ser ejecutados. Sus tiempos de ejecución esperados son 9, 6, 3, 5 y X. ¿En
qué orden se deben ejecutar para minimizar el tiempo de respuesta promedio? (Su respuesta dependerá de X).
Los procesos más cortos primeros, es la forma de minimizar el tiempo de respuesta promedio.
0 <X ≤ 3: X, 3, 5, 6, 9.
3 <X ≤ 5: 3, X, 5, 6, 9.
5 <X ≤ 6: 3, 5, X, 6, 9.
6 <X ≤ 9: 3, 5, 6, X, 9.
X> 9: 3, 5, 6, 9, X.

37. Cinco trabajos de procesamiento por lotes, A aE, llegan a un centro de cómputo casi al mismo tiempo.
Tienen tiempos de ejecución estimados de 10, 6, 2, 4 y 8 minutos. Sus prioridades (determinadas en forma
externa) son 3, 5, 2, 1 y 4, respectivamente, en donde 5 es la prioridad más alta. Para cada uno de los siguientes
algoritmos de planificación, determine el tiempo de respuesta de proceso promedio. Ignore la sobrecarga por
conmutación de procesos.
a) Por turno circular.
b) Por prioridad.
c) Primero en entrar, primero en ser atendido (ejecutados en el orden 10, 6, 2, 4, 8).
d) El trabajo más corto primero.
Para (a), suponga que el sistema es multiprogramado y que cada trabajo recibe su parte equitativa de la CPU.
Para los incisos del (b) al (d), suponga que sólo se ejecuta un trabajo a la vez hasta que termina. Todos los
trabajos están completamente ligados a la CPU.
Por turno circular, durante los primeros 10 minutos de cada trabajo se pone 1/5 de la CPU. A el final de los 10
minutos, C termina. Durante los siguientes 8 minutos, cada trabajo se 1/4 de la CPU, tiempo después del cual D
termina. Entonces cada uno de los tres restantes empleos consigue 1/3 de la CPU durante 6 minutos, hasta que termina
B, y así sucesivamente. Los tiempos de acabado para los cinco puestos de trabajo son de 10, 18, 24, 28 y 30, para un
promedio de 22 minutos. Por prioridad, B está dirigido en primer lugar. Después de 6 minutos es terminado. El resto
de trabajos a los 14, 24, 26 y 30, para un promedio de 18,8 minutos. Si los trabajos se ejecutan en el orden de llegada,
sería un promedio de 19,2 minutos. Por último, el trabajo mas corto, con un promedio de 14 minutos.

38. Un proceso que se ejecuta en un CTSS necesita 30 quántums para completarse. ¿Cuántas veces se debe
intercambiar, incluyendo la primera vez (antes de que se haya ejecutado siquiera)?
La primera vez que se pone 1 quántum. En carreras sucesivas se pone 2, 4, 8, y 15, por lo que debe ser intercambiada
en 5 veces.
39. ¿Puede idear una forma de evitar que el sistema de prioridades CTSS sea engañado por los retornos
de carro?
Se podría hacer una verificación para ver si el programa del que se esperaba entrada se ejecutó o no se ejecutó. Un
programa que no espera entrada no obtendría ninguna prioridad especial.

40. El algoritmo de envejecimiento con a _ 1/2 se utiliza para predecir los tiempos de ejecución. Las cuatro
ejecuciones anteriores, de la más antigua a la más reciente, son de 40, 20, 40 y 15 mseg. ¿Cuál es la predicción
del siguiente tiempo?
La secuencia de las predicciones es 40, 30, 35, y ahora 25.

41. Un sistema de tiempo real suave tiene cuatro eventos periódicos con periodos de 50, 100, 200 y 250 mseg
cada uno. Suponga que los cuatro eventos requieren 35, 20, 10 y x mseg de tiempo de la CPU, respectivamente.
¿Cuál es el mayor valor de x para que el sistema sea planificable?
La fracción de la CPU utilizado es 35/50 + 20/100 + 10/200 + x / 250. Para ser
planificable, este debe ser menor que 1. Por lo tanto x debe ser inferior a 12,5 m seg.

42. Explique por qué se utiliza comúnmente la planificación de dos niveles.


Se necesita programación de dos niveles cuando la memoria es demasiada pequeña para contener todos los procesos
listos. Un conjunto de ellos se pone en la memoria, y una elección se hace de ese conjunto. De vez en cuando, se
ajusta el conjunto de procesos en el núcleo. Este algoritmo es fácil de implementar y razonablemente eficiente, sin
duda mucho mejor que digamos, todos contra todos, sin tener en cuenta si un proceso se encontraba en memoria o
no.

44. Considere un sistema en el que se desean separar la política y el mecanismo para la planificación de hilos
de kernel. Proponga una manera de lograr este objetivo.
El kernel podría programar procesos por cualquier medio que desee, pero dentro de cada proceso se ejecutan hilos
estrictamente en orden de prioridad. Al permitir al conjunto de procesos de usuario la prioridad de sus propios hilos,
el usuario controla la política pero el kernel el mecanismo.

Cuestionario #3
1. En la figura 3-3 los registros base y límite contienen el mismo valor, 16,384. ¿Es esto un accidente,
o siempre son iguales? Si esto es sólo un accidente, ¿por qué son iguales en este ejemplo?
Si cada trabajo tiene un 50% de E / S espera, entonces tomará 20 minutos para completar en el ausencia de
competencia. Si se ejecuta de forma secuencial, la segunda terminará 40 minutos después de la primera aperturas.
Con dos puestos de trabajo, la utilización de la CPU aproximada es 1-0,52. Así, cada uno recibe 0.375 CPU minuto
por minuto de bienes hora. Para acumular 10 minutos de tiempo de CPU, un trabajo debe funcionar durante 10 / 0.375
minutos o aproximadamente 26,67 minutos. De este modo se ejecuta secuencialmente los trabajos terminen después
de 40 minutos, pero el funcionamiento en paralelo que terminen después de 26,67 minutos

2. Un sistema de intercambio elimina huecos mediante la compactación. Suponiendo una distribución aleatoria
de muchos huecos y muchos segmentos de datos y un tiempo de lectura o escritura en una palabra de memoria
de 32 bits de 10 nseg, ¿aproximadamente cuánto tiempo se requiere para compactar 128 MB? Para simplificar,
suponga que la palabra 0 es parte de un hueco y que la palabra más alta en la memoria contiene datos válidos.
Casi toda la memoria tiene que ser copiado, lo que requiere que cada palabra que ser leer y luego reescrito en una
ubicación diferente. La lectura de 4 bytes tarda 10 nseg.

3. En este problema tiene que comparar el almacenamiento necesario para llevar la cuenta de la memoria
libre, utilizando un mapa de bits contra el uso de una lista ligada. La memoria de 128 MB se asigna en unidades
de n bytes. Para la lista enlazada, suponga que la memoria consiste en una secuencia
alternante de segmentos y huecos, cada uno de 64 KB. Suponga también que cada nodo en la lista enlazada
necesita una dirección de memoria de 32 bits, una longitud de 16 bits y un campo para el siguiente nodo de 16
bits. ¿Cuánto bytes de almacenamiento se requieren para cada método? ¿Cuál
es mejor?
Casi toda la memoria tiene que ser copiado, lo que requiere que cada palabra que ser leer y luego reescrito en una
ubicación diferente. La lectura de 4 bytes tarda 10 nseg,15 por lo que la lectura de 1 byte tarda 2,5 ns y la escritura
se toma otro 2,5 nseg, para una total de 5 ns por byte compactado. Esta es una tasa de 200.000.000 bytes / seg. Para
copiar 128 MB (227 bytes, que es alrededor de 1,34 × 108 bytes), el ordenador necesita 227 / 200.000.000 segundos,
que es de unos 671 ms. Este número es ligeramente pesimista porque si el orificio inicial en la parte inferior de la
memoria es K bytes, esos bytes k no necesitan ser copiados. Sin embargo, si hay muchos agujeros y muchos
segmentos de datos, los agujeros serán pequeños por lo k será pequeño y el error en el cálculo también será pequeña.

4. Considere un sistema de intercambio en el que la memoria consiste en los siguientes tamaños de hueco, por
orden de memoria: 10 KB, 4 KB, 20 KB, 18 KB, 7 KB, 9 KB, 12 KB y 15 KB. ¿Cuál hueco se toma para las
siguientes solicitudes de segmento sucesivas:
a) 12 KB
b) 10 KB
c) 9 KB

5.para el algoritmo del primer ajuste? Ahora repita la pregunta para el mejor ajuste, peor ajuste y siguiente
ajuste.
En primer ajuste tarda de 20 KB, 10 KB, 18 KB. Mejor ajuste tarda de 12 KB, 10 KB y 9 KB. Peor ajuste tarda de
20 KB, 18 KB y 15 KB. A continuación ajuste tarda de 20 KB, 18 KB, y 9 KB.

5. Para cada una de las siguientes direcciones virtuales decimales, calcule el número de página virtual y
desplazamiento para una página de 4 KB y para una página de 8 KB: 20000, 32768, 60000.
Para un tamaño de página de 4 KB la (página, offset) son pares (4, 3616), (8, 0) y (14, 2656). Para un tamaño de 8
KB página son (2, 3616), (4, 0), (7, 2656).

6. El procesador Intel 8086 no admite memoria virtual. Sin embargo, algunas compañías vendían
anteriormente sistemas que contenían una CPU 8086 sin modificaciones y realizaba la paginación. Trate de
llegar a una conclusión lógica acerca de cómo lo hicieron. Sugerencia: piense acerca de la ubicación lógica de
la MMU.
Ellos construyeron una MMU y lo insertaron entre el 8086 y el autobús. Por lo tanto todo 8086 direcciones físicas
entraron en la MMU como direcciones virtuales. la MMU luego los mapeadas a direcciones físicas, que entraron al
bus.

7. Considere el siguiente programa en C:


int X[N];
int paso = M; // M es una constante predefinida
for (int i = 0; i < N; i += paso) X[i] = X[i] + 1;
a) Si este programa se ejecuta en una máquina con un tamaño de página de 4 KB y un TLB con 64
entradas, ¿qué valores de M y N harán que un TLB falle para cada ejecución del ciclo interno?
b) ¿Sería distinta su respuesta al inciso a) si el ciclo se repitiera muchas veces? Explique.
(a) 8212 (b) 4100 (c) 24 684

8. La cantidad de espacio en disco que debe estar disponible para el almacenamiento de páginas está
relacionada con el número máximo de procesos n,, el número de bytes en el espacio de direcciones virtualv, así
como con el número de bytes de RAM r. Proporcione una expresión para los requerimientos de espacio en
disco en el peor de los casos. ¿Qué tan realista es esa cantidad?
El espacio de direcciones virtuales total para todos los procesos combinados es por lo que este nv Se necesita tanto
espacio para las páginas. Sin embargo una cantidad r puede estar en memoria RAM, por lo la cantidad de
almacenamiento en disco necesario es solamente nv - r. Esta cantidad es mucho más que alguna vez se necesita en la
práctica porque rara vez se habrá n procesos realidad correr y todos ellos aún más raramente necesitará el máximo
permitido memoria virtual.

9. Una máquina tiene un espacio de direcciones de 32 bits y una página de 8 KB. La tabla de páginas está
completamente en el hardware, con una palabra de 32 bits por cada entrada. Cuando se inicia un proceso, la
tabla de páginas se copia al hardware desde la memoria, una palabra por cada 100 nseg. Si cada proceso se
ejecuta durante 100 mseg (incluyendo el tiempo para cargar la tabla de páginas), ¿qué fracción del tiempo de
la CPU se dedica a cargar las tablas de páginas?
Un error de página cada k instrucciones añade una sobrecarga adicional de n / k microsegundos a la promedio, por lo
que la instrucción tiene en promedio 10 + n / k ns.

10. Suponga que una máquina tiene direcciones virtuales de 48 bits y direcciones físicas de 32 bits.
a) Si las páginas son de 4 KB, ¿Cuántas entradas hay en la tabla de páginas si sólo hay un nivel?
Explique.
b) Suponga que el mismo sistema tiene un TLB (Búfer de traducción adelantada) con 32 entradas.
Además, suponga que un programa contiene instrucciones que caben en una página y lee secuencialmente
elementos enteros largos de un arreglo que abarca miles de páginas. ¿Qué tan efectivo será el TLB para este
caso?
La tabla de la página contiene 232/213 entradas, lo cual es 524.288. Cargando la página mesa de toma 52 ms. Si un
proceso obtiene 100 mseg, este consta de 52 mseg para la carga de la tabla de páginas y 48 ms para correr. Por lo
tanto 52 por ciento del tiempo se gasta tablas de páginas de carga.

11. Suponga que una máquina tiene direcciones virtuales de 38 bits y direcciones físicas de 32 bits.
a) ¿Cuál es la principal ventaja de una tabla de páginas de multinivel sobre una tabla de páginas de
un solo nivel?
b) Con una tabla de páginas de dos niveles, páginas de 16 KB y entradas de 4 bytes, ¿cuántos bits
se deben asignar para el campo de la tabla de páginas de nivel superior y cuántos para el campo de
la tabla de páginas del siguiente nivel? Explique.
Veinte bits se utilizan para los números de página virtual, dejando 12 encima para la compensar. Esto produce una
página de 4 KB. Veinte bits para la página virtual implica 220 páginas

12. Una computadora con una dirección de 32 bits utiliza una tabla de páginas de dos niveles. Las direcciones
virtuales se dividen en un campo de la tabla de páginas de nivel superior de 9 bits, un campo de la tabla de
páginas de segundo nivel de 11 bits y un desplazamiento. ¿Qué tan grandes son las páginas y cuántas hay en
el espacio de direcciones?

13. Suponga que una dirección virtual de 32 bits se divide en cuatro campos: a, b, c y d. Los primeros tres se
utilizan para un sistema de tablas de páginas de tres niveles. El cuarto campo (d) es el desplazamiento.
¿Depende el número de páginas de los tamaños de los cuatro campos? Si no es así, ¿cuáles importan y cuáles
no?
El número de páginas depende del número total de bits en a, b, y C combinadas. La forma en que se dividen entre los
campos, no importa.

14. Una computadora tiene direcciones virtuales de 32 bits y páginas de 4 KB. El programa y los datos caben
juntos en la página más baja (0 a 4095). La pila cabe en la página más alta. ¿Cuántas entradas se necesitan en
la tabla de páginas si se utiliza la paginación tradicional (un nivel)? ¿Cuántas entradas en la tabla de páginas
se necesitan para la paginación de dos niveles, con 10 bits en cada parte?
Para una tabla de páginas de un solo nivel, hay 232/212 o páginas 1M necesario. Por lo tanto, la tabla de páginas debe
tener entradas 1M. Para paginación de dos niveles, la tabla principal de la página tiene 1K entradas, cada una de las
cuales apunta a una segunda tabla de páginas. Sólo dos de estos se utilizan. Por lo tanto en total sólo se necesitan tres
entradas de la tabla de páginas, una en la tabla de nivel superior y uno en cada una de las tablas de nivel inferior.

15. Una computadora cuyos procesos tienen 1024 páginas en sus espacios de direcciones mantiene sus tablas
de páginas en memoria. La sobrecarga requerida para leer una palabra de la tabla de páginas es 5 nseg. Para
reducir esta sobrecarga, la computadora tiene un TLB que contiene 32 pares (página
virtual, marco de página física) y puede realizar una búsqueda en 1 nseg. ¿Qué proporción de aciertos necesita
para reducir la sobrecarga promedio a 2 nseg?
El tiempo de instrucción efectiva es 1h + 5 (1 - h), donde h es la tasa de éxito. Si nosotros equiparar esta fórmula con
2 y resolver para h, nos encontramos con que h debe ser al menos 0.75.

16. El TLB en la VAX no contiene un bit R. ¿Por qué?


El R bits no es necesario en la TLB. La mera presencia de una página que hay significa que la página se ha hecho
referencia; de lo contrario, no estaría allí. Así el bit es completamente redundante. Cuando la entrada se vuelve a
escribir en la memoria, Sin embargo, el bit R en la tabla de páginas de memoria está colocada.

17. ¿Cómo puede implementarse en hardware el dispositivo de memoria asociativa necesario para
implementar una TLB y cuáles son las implicaciones de dicho diseño para que sea expandible?
Una memoria asociativa compara esencialmente una clave para el contenido de varios registra simultáneamente. Para
cada registro tiene que haber un conjunto de comparadores se compara cada bit en el contenido del registro a la clave
que se busca. El número de puertas (o transistores) necesarios para poner en práctica un dispositivo de este tipo es
una función lineal del número de registros, por lo que la expansión de la diseño consigue caro linealmente.

18. Una máquina tiene direcciones virtuales de 48 bits y direcciones físicas de 32 bits. Las páginas son de 8 KB.
¿Cuántas entradas se necesitan para la tabla de páginas?
Con páginas de 8 KB y un espacio virtual de direcciones de 48 bits, el número de virtuales páginas es 248/213, que
es de 235 (aproximadamente 34 millones de dólares).

19. Una computadora con una página de 8 KB, una memoria principal de 256 KB y un espacio de direcciones
virtuales de 64 GB utiliza una tabla de páginas invertida para implementar su memoria virtual. ¿Qué tan
grande debe ser la tabla de hash para asegurar una cadena de hash de una longitud
promedio menor a 1? Suponga que el tamaño de la tabla de hash es una potencia de dos.
La memoria principal tiene 228/213 = 32.768 páginas. Una tabla hash 32K tendrá una la longitud media de la cadena
de 1. Para empezar 1, tenemos que ir al siguiente tamaño, 65.536 entradas. La difusión de 32.768 entradas más de
65.536 ranuras de mesa dará una longitud de cadena de 0,5, lo que garantiza las operaciones de búsqueda rápida
significar

20. Un estudiante en un curso de diseño de compiladores propone al profesor un proyecto de escribir un


compilador que produzca una lista de referencias a páginas que se puedan utilizar para implementar el
algoritmo de reemplazo de páginas óptimo. ¿Es esto posible? ¿Por qué sí o por qué no? ¿Hay algo que pudiera
hacerse para mejorar la eficiencia de la paginación en tiempo de ejecución?
Esta es, probablemente, no sea posible, excepto para el caso poco común y no muy útil de un programa cuyo curso
de ejecución es completamente predecible durante la compilación hora. Si un compilador recoge información acerca
de las ubicaciones en el código de Las llamadas a procedimientos, esta información podría ser utilizada en tiempo de
enlace para reordenar el código objeto para los procedimientos se encuentran cerca del código que los llama. Esto
haría más probable que un procedimiento sería en la misma página como el código de llamada. Por supuesto, esto no
ayudaría mucho para los procedimientos de llamadas desde muchos lugares en el programa.
21. Suponga que el flujo de referencia de páginas virtuales contiene repeticiones de largas secuencias de
referencias a páginas, seguidas ocasionalmente por una referencia a una página aleatoria. Por ejemplo,
la secuencia 0, 1, …, 511, 431, 0, 1, …, 511, 332, 0, 1, … consiste en repeticiones de la secuencia 0, 1, …, 511
seguida de una referencia aleatoria a las páginas 431 y 332.
a) ¿Por qué no serían efectivos los algoritmos de sustitución estándar (LRU, FIFO, Reloj) al manejar esta
carga de trabajo para una asignación de página que sea menor que la longitud de la secuencia?
b) Si a este programa se le asignaran 500 marcos de página, describa un método de sustitución de página que
tenga un rendimiento mucho mejor que los algoritmos LRU, FIFO o Reloj.
. La memoria verdadera utiliza direcciones físicas. Estos son los números que las chips de memoria reaccionan a en
el autobús. direcciones virtuales son las direcciones lógicas que se refieren a un espacio de direcciones del proceso '.
Así, una máquina con una palabra de 16 bits puede generar direcciones virtuales hasta 64 KB, independientemente
de si la máquina tiene más o menos memoria de 64 KB.

22. Si se utiliza el algoritmo FIFO de reemplazo de páginas con cuatro marcos de página y ocho páginas,
¿cuántos fallos de página ocurrirán con la cadena de referencia 0172327103 si los cuatro marcos están vacíos
al principio? Ahora repita este problema para el algoritmo LRU.
Los marcos de página para FIFO son los siguientes: x0172333300 xx017222233 xxx01777722 xxxx0111177 Los
marcos de página de LRU son los siguientes: x0172327103 xx017232710 xxx01773271 xxxx0111327 FIFO produce
fallos de página 6; LRU produce 7.

23. Considere la secuencia de páginas de la figura 3-15(b). Suponga que los bits R para las páginas de laB a la
A son 11011011, respectivamente, ¿Cuál página eliminará el algoritmo de segunda oportunidad?
La primera página con un 0 bit será elegido, en este caso D.

24. Una pequeña computadora tiene cuatro marcos de página. En el primer pulso de reloj, los bits R son
0111 (la página 0 es 0, el resto son 1). En los siguientes pulsos de reloj, los valores son 1011, 1010, 1101, 0010,
1010, 1100 y 0001. Si se utiliza el algoritmo de envejecimiento con un contador de 8 bits, proporcione los valores
de los cuatro contadores después del último pulso.
Los contadores se
Página 0: 0110110
Página 1: 01001001
Página 2: 00110111
Página 3: 10001011

25. Dé un ejemplo simple de una secuencia de referencias a páginas en donde la primera página seleccionada
para la sustitución sea diferente para los algoritmos de reemplazo de páginas de reloj y LRU. Suponga que a
un proceso se le asignan 3 marcos y que la cadena de referencia contiene números de página del conjunto 0, 1,
2, 3.
La primera página con R = 0 y la edad> τ será elegido. Dado que la exploración se inicia en la parte inferior, la
primera página (1620) es desalojado.

26. En el algoritmo WSClock de la figura 3-21(c), la manecilla apunta a una página con R _ 0. Si ⎮_ 400, ¿se
eliminará esta página? ¿Qué pasa si ⎮ _ 1000?
La edad de la página es 2204-1213 = 991. Si τ = 400, que es definitivamente fuera del conjunto de trabajo y no se
hace referencia recientemente por lo que será desalojado. Los τ = 1000 la situación es diferente. Ahora, la página se
inscribe en el conjunto de trabajo (Apenas), por lo que no se quita.

27. ¿Cuánto tiempo se requiere para cargar un programa de 64 KB de un disco cuyo tiempo de búsqueda
promedio es de 10 mseg, cuyo tiempo de rotación es de 10 mseg y cuyas pistas contienen 32 KB
a) para un tamaño de página de 2 KB?
b) para un tamaño de página de 4 KB?
Las páginas están esparcidas de manera aleatoria alrededor del disco y el número de cilindros es tan grande
que la probabilidad de que dos páginas se encuentren en el mismo cilindro es insignificante.
El buscan más la latencia de rotación es de 20 ms. Para las páginas de 2 KB, la transferencia tiempo es de 1,25 ms,
para un total de 21,25 mseg. Cargando 32 de estas páginas tomar 680 ms. Para las páginas de 4 KB, el tiempo de
transferencia se duplica a 2,5 ms, por lo el tiempo total por página es de 22,50 ms. Cargando 16 de estas páginas lleva
360 mseg.
28. Una computadora tiene cuatro marcos de página. El tiempo de carga, tiempo del último acceso y los
bitsR y M para cada página se muestran a continuación (los tiempos están en pulsos de reloj):
Página Cargada Última referencia R M
0 126 280 1 0
1 230 265 0 1
2 140 270 0 0
3 110 285 1 1
a) ¿Cuál página reemplazará el algoritmo NRU?
b) ¿Cuál página reemplazará el algoritmo FIFO?
c) ¿Cuál página reemplazará el algoritmo LRU?
d) ¿Cuál página reemplazará el algoritmo de segunda oportunidad?
NRU elimina la página 2. FIFO elimina la página 3. LRU quita página 1. Segundo oportunidad elimina la página 2.

29. Considere el siguiente arreglo bidimensional:


int X[64][64]; Suponga que un sistema tiene cuatro marcos de página y que cada marco es de 128 palabras (un
entero ocupa una palabra). Los programas que manipulan el arreglo X caben exactamente en una página y
siempre ocupan la página 0. Los datos se intercambian hacia dentro y hacia fuera de los otros tres marcos. El
arreglo X se almacena en orden de importancia por filas (es decir, X[0][1] va después deX[0][0] en la memoria).
¿Cuál de los dos fragmentos de código que se muestran a continuación
generarán el menor número de fallos de página? Explique y calcule el número total de fallos
de página.
Fragmento A
for (int j _ 0; j < 64; j__)
for (int i _ 0; i < 64; i__) X[i][j] _ 0;
Fragmento B
for (int i _ 0; i < 64; i__)
for (int j _ 0; j < 64; j__) X[i][j] _ 0;
El programa está recibiendo 15.000 fallos de página, cada una de las cuales utiliza 2 ms de supletoria Tiempo de
procesamiento. En conjunto, la sobrecarga error de página es de 30 seg. Esto significa la del 60 seg utilizado, la mitad
se destinó a la sobrecarga de error de página, y la mitad de ejecutar el programa. Si ejecutamos el programa con el
doble de memoria, nos obtener la mitad de los errores de página de memoria, y sólo 15 segundos de la cabeza fallo
de página, por lo que la tiempo total de ejecución será de 45 seg. 35. Funciona para el programa si el programa no
puede ser modificado. Funciona para el datos si los datos no se pueden modificar. Sin embargo, es común que el
programa no se puede modificar y extremadamente raro que los datos no se pueden modificar. Si el área de datos en
el archivo binario se sobrescribe con páginas actualizadas, el siguiente vez que se inició el programa, que no tendría
los datos originales.

30. Una de las primeras máquinas de tiempo compartido (la PDP-1) tenía una memoria de 4K palabras de 18
bits. Contenía un proceso a la vez en la memoria. Cuando el planificador de proceso decidía ejecutar otro
proceso, el proceso en memoria se escribía en un tambor de paginación, con 4K palabras de 18 bits alrededor
de la circunferencia del tambor, el cual podía empezar a escribir (o leer) en cualquier palabra, en vez de hacerlo
sólo en la palabra 0. ¿Supone usted que este tambor fue seleccionado?
. El PDP-1 tambor paginación tenía la ventaja de no latencia rotacional. Esta guardado medio de una rotación cada
vez que la memoria se escribe en el tambor.

31. Una computadora proporciona a cada proceso 65,536 bytes de espacio de direcciones, dividido en páginas
de 4096 bytes. Un programa específico tiene un tamaño de texto de 32,768 bytes, un tamaño de datos de 16,386
bytes y un tamaño de pila de 15,870 bytes. ¿Cabrá este programa en el espacio de direcciones? Si el tamaño de
página fuera de 512 bytes, ¿cabría? Recuerde que una página no puede contener partes de dos segmentos
distintos.
El texto es de ocho páginas, los datos son cinco páginas, y la pila es de cuatro páginas. El programa no encaja porque
necesita 17 páginas de 4096 bytes. Con un 512- página byte, la situación es diferente. Aquí el texto es de 64 páginas,
los datos son 33 páginas, y la pila es de 31 páginas, para un total de 128 páginas de 512 bytes, que se ajusta. Con el
tamaño de la página pequeña, está bien, pero no con la grande.

32. ¿Puede una página estar en dos conjuntos de trabajo al mismo tiempo? Explique.
Es posible. Suponiendo que la segmentación no está presente, la información de protección debe estar en la tabla de
páginas. Si cada proceso tiene su propia tabla de páginas, cada una uno también tiene sus propios bits de protección.
Ellos podrían ser diferentes.

33. Se ha observado que el número de instrucciones ejecutadas entre fallos de página es directamente
proporcional al número de marcos de página asignados a un programa. Si la memoria disponible se duplica,
el intervalo promedio entre los fallos de página también se duplica. Suponga que una instrucción normal
requiere 1 microsegundo, pero si ocurre un fallo de página, requiere 2001 μseg (es decir, 2 mseg para hacerse
cargo del fallo). Si un programa requiere 60 segundos para ejecutarse, tiempo durante el cual obtiene 15,000
fallos de página, ¿cuánto tiempo requeriría para ejecutarse si
hubiera disponible el doble de memoria?
Si las páginas se pueden compartir, sí. Por ejemplo, si dos usuarios de un sistema de tiempo compartido ejecutan el
mismo editor, al mismo tiempo y el texto del programa es compartida en lugar de copiar, algunas de esas páginas
pueden estar en trabajo de cada usuario establecer al mismo tiempo.

34. Un grupo de diseñadores de sistemas operativos para la Compañía de Computadoras Frugal están ideando
maneras de reducir la cantidad de almacenamiento de respaldo necesario en su nuevo sistema operativo. El
jefe de ellos ha sugerido que no se deben preocupar por guardar el texto del programa en el área de
intercambio, sino sólo paginarla directamente desde el archivo binario cada vez que se necesite. ¿Bajo qué
condiciones, si las hay, funciona esta idea para el texto del programa? ¿Bajo qué condiciones, si las hay,
funciona para los datos?
Funciona para el programa si el programa no puede ser modificado. Funciona para el datos si los datos no se pueden
modificar. Sin embargo, es común que el programa no se puede modificar y extremadamente raro que los datos no
se pueden modificar. Si el área de datos en el archivo binario se sobrescribe con páginas actualizadas, el siguiente
vez que se inició el programa, que no tendría los datos originales.

35. Una instrucción en lenguaje máquina para cargar una palabra de 32 bits en un registro contiene la
dirección de 32 bits de la palabra que se va a cargar. ¿Cuál es el número máximo de fallos de página que puede
provocar esta instrucción?
La instrucción podría estar montado en un límite de página, causando dos fallos de página justo se ha podido recuperar
la instrucción. La palabra descabellada también podría abarcar un límite de página, la generación de dos faltas más,
para un total de cuatro. Si las palabras deben estar alineados en la memoria, la palabra de datos puede causar sólo una
falta, sino una instrucción para cargar una palabra de 32 bits en la dirección 4094 en una máquina con una página de
4 KB es legal en algunas máquinas (incluyendo el Pentium).

36. Cuando se utilizan la segmentación y la paginación, como en MULTICS, primero se debe buscar el
descriptor del segmento y después el descriptor de página. ¿Funciona el TLB también de esta manera, con dos
niveles de búsqueda?
fragmentación interna se produce cuando la última unidad de asignación no es completa. Externo la fragmentación
se produce cuando se desperdicia espacio entre dos unidades de asignación. En un sistema de paginación, el espacio
perdido en la última página se pierde a la fragmentación interna. En un sistema de segmentación pura, algo de espacio
se pierde invariablemente entre los segmentos. Esto es debido a la fragmentación externa.

37. Consideremos un programa que tiene los dos segmentos que se muestran a continuación, los cuales
consisten de instrucciones en el segmento 0 y datos de lectura/escritura en el segmento 1. El segmento 0 tiene
protección de lectura/ejecución y el segmento 1 tiene protección de lectura/escritura. El sistema de memoria
es un sistema de memoria virtual con paginación bajo demanda, con direcciones virtuales que tienen un
número de página de 4 bits y un desplazamiento de 10 bits. Las tablas de páginas y la protección son las
siguientes (todos los números en la tabla están en decimal): Para cada uno de los siguientes casos, proporcione
la dirección de memoria real (actual) que resulta de la traducción de direcciones dinámicas o identifique el
tipo de fallo que ocurre (ya sea fallo de página o de protección).

a) Obtener del segmento 1, página 1, desplazamiento 3


b) Almacenar en segmento 0, página 0, desplazamiento 16
c) Obtener del segmento 1, página 4, desplazamiento 28
d) Saltar a la ubicación en el segmento 1, página 3, desplazamiento 32

38. ¿Puede pensar en alguna situación en donde el soporte de la memoria virtual fuera una mala idea y qué se
ganaría al no tener que soportar la memoria virtual? Explique.
No. La clave de búsqueda utiliza tanto el número de segmento y la página virtual número, por lo que la página exacta
se puede encontrar en una única partida.

39. Trace un histograma y calcule la media y la mediana de los tamaños de los archivos binarios ejecutables
en una computadora a la que tenga acceso. En un sistema Windows, analice todos los archivos .exe y .dll; en
un sistema UNIX analice todos los archivos ejecutables en /bin, /usr/biny
Segmento 0 Segmento 1
Lectura/ejecución Lectura/escritura
# de página virtual # de marco
de página
# de marco
# del página virtual de página
0 2 0 En disco
1 En disco 1 14
2 11 2 9
3536
4 En disco 4 En disco
5 En disco 5 13
6468
7 3 7 12
/local/binque no sean secuencias de comandos (o utilice la herramienta file para buscar todos los ejecutables).
Determine el tamaño de página óptimo para esta computadora, considerando sólo el código (no los datos).
Considere la fragmentación interna y el tamaño de la tabla de páginas, haciendo alguna suposición razonable
acerca del tamaño de una entrada en la tabla de páginas. Suponga que todos los programas tienen la misma
probabilidad de ejecutarse, y por ende deben considerarse con el mismo peso.
La posibilidad de que los cuatro procesos están inactivos es de 1/16, por lo que el tiempo de inactividad de la CPU
es
1/16.
40. Los pequeños programas para MS-DOS se pueden compilar como archivos .COM. Estos archivos siempre
se cargan en la dirección 0x100 en un solo segmento de memoria que se utilice para código, datos y pila. Las
instrucciones que transfieren el control de la ejecución, como JMP y CALL,
o que acceden a datos estáticos desde direcciones fijas hacen que las instrucciones se compilen en el código
objeto. Escriba un programa que pueda reubicar dicho archivo de programa para ejecutarlo empezando en
una dirección arbitraria. Su programa debe explorar el código en busca de códigos objeto para instrucciones
que hagan referencia a direcciones de memoria fijas, después debe modificar esas direcciones que apunten a
ubicaciones de memoria dentro del rango a reubicar.

Encontrará los códigos objeto en un libro de programación en lenguaje ensamblador. Tenga en cuenta que hacer esto
perfectamente sin información adicional es, en general, una tarea imposible debido a que ciertas palabras de datos
pueden tener valores similares a los códigos objeto de las instrucciones.

41. Escriba un programa que simule un sistema de paginación utilizando el algoritmo de envejecimiento.

El número de marcos de página es un parámetro. La secuencia de referencias a páginas debe leersede un archivo.
Para un archivo de entrada dado, dibuje el número de fallos de página por cada1000 referencias a memoria como una
función del número de marcos de página disponibles.

42. Escriba un programa para demostrar el efecto de los fallos del TLB en el tiempo de acceso efectivoa la
memoria, midiendo el tiempo por cada acceso que se requiere para recorrer un arreglo extenso.

a) Explique los conceptos principales detrás del programa y describa lo que espera que muestre lasalida para alguna
arquitectura de memoria virtual práctica.

b) Ejecute el programa en una computadora y explique qué tan bien