Sistemas Operativos Ejercicios

Anuncio
Sistemas Operativos
Ejercicios
Mario Medina C.
[email protected]
Versión 0.4
1er. Semestre 2009
Introducción
Este documento reúne ejercicios de sistemas operativos asignados en el curso de Sistemas Operativos de la carrera de Ingeniería Civil Electrónica, entre los años 2004 y 2009, muchos de ellos
incluyendo un esbozo de solución. Se hacen públicos en la esperanza que sean una ayuda para el
estudio de la asignatura.
Se agradece la colaboración de todos aquellos alumnos que hicieron notar errores y realizaron
comentarios a los ejercicios y soluciones dadas. Asimismo, en caso de detectarse algún error en los
ejercicios ó sus soluciones, se ruega contactar al autor via su e-mail, [email protected].
Buen provecho.
Mario Medina C.
Concepción, 8 de abril de 2009.
i
Índice general
Introducción
i
1. Concurrencia de procesos
1
2. Bloqueos mortales
9
3. Planificación de procesos
12
4. Administración de memoria
18
5. Administración de entrada/salida
30
6. Miscelánea
37
ii
1 Concurrencia de procesos
1. Una cadena de montaje utiliza una correa transportadora por donde circulan tres productos: A, B y C. En un extremo de la cadena, existen tres robots, R1 , R2 y R3 . El robot R1
retira de la cinta los productos A y B y los empaqueta juntos. Los robots R2 y R3 realizan
la misma acción para los productos B y C, y A y C, respectivamente. Estas son las únicas
combinaciones de productos válidas. El proceso generador de productos llama a la función
InsertaProductos(P1, P2), mientras que los robots llaman a las funciones RetiraProductos(P1, P2)
y EmpaquetaProductos(P1, P2). Escriba código que sincronice el proceso generador y los procesos robot de manera que el proceso generador no pueda agregar elementos a la cinta
si éstos no han sido retirados por un robot, y además que sólo un robot retire productos de la cinta a la vez. Use las primitivas de paso de mensajes send(destino, mensaje} y
receive(destino, mensaje}.
Solución
Se presenta el código del proceso generador y del robot R1 . El código de los robots R2 y R3
es similar. receive(ANY) indica que cualquier proceso puede escribir en esta casilla. Alternativamente, se realiza una llamada a receive () por cada send().
Generador ( )
{
Message mensaje ;
while ( t r u e ) {
I n s e r t a P r o d u c t o s ( prod1 ,
i f ( prod1 == A && prod2
send ( R1 , &mensaje ) ;
}
i f ( prod1 == B && prod2
send ( R2 , &mensaje ) ;
}
i f ( prod1 == A && prod2
send ( R3 , &mensaje ) ;
}
r e c e i v e (ANY, mensaje ) ;
}
prod2 ) ;
== B ) {
== C) {
== C) {
}
R1 ( )
{
Message mensaje ;
while ( t r u e ) {
1
r e c e i v e ( Generador , &mensaje ) ;
R e t i r a P r o d u c t o s (A, B ) ;
EmpaquetaProductos (A, B ) ;
send ( Generador , &mensaje ) ;
}
}
2. Un sistema multiprocesador tiene 8 procesadores y 20 unidades lectoras de cinta. Hay un
gran número de trabajos en el sistema, y ellos necesitan como máximo 4 lectoras de cinta
para completar su ejecución. Cada trabajo comienza su ejecución usando sólo 3 unidades
lectoras de cinta, las que retiene durante un largo período antes de requerir la cuarta unidad
por un período corto, para después terminar su ejecución.
a) Supóngase que el sistema operativo no activa un trabajo hasta que estén disponibles las
4 unidades de cinta requeridas. Al comenzar la ejecución del trabajo, se le asignan las
4 unidades y éstas no se liberan hasta que el trabajo ha terminado.
1) Cuál es el número máximo de trabajos que pueden avanzar al mismo tiempo?
2) Cuál es el número máximo y mínimo de unidades lectoras de cinta que pueden
estar desocupadas con esta estrategia?
b) Sugiera una táctica alternativa para incrementar la utilización de los recursos y al mismo tiempo, evitar los bloqueos mortales.
1) Cuál es el número máximo de trabajos que pueden avanzar al mismo tiempo?
2) Cuál es el número máximo y mínimo de unidades lectoras de cinta que pueden
estar desocupadas con esta nueva estrategia?
Solución
a) Si se usa una política conservadora, a lo más 20
4 = 5 procesos pueden estar activos en un
instante dado. Ya que una de la unidades de cinta asignadas a cada proceso estará ociosa
la mayor parte del tiempo, a lo más 5 unidades lectoras de cinta estarán desocupadas
con esta estrategia. En el mejor caso, cada proceso estará usando las 4 unidades de cinta
asignadas y 0 unidades de cinta están desocupadas.
b) Para mejorar la utilización de los recursos, cada proceso tendrá asignado inicialmente 3
unidades lectoras de cinta. La cuarta unidad será asignada cuando el proceso lo demande. Con esta política, a lo más ⌊ 20
3 ⌋ = 6 procesos pueden estar activos simultáneamente.
Entonces, el número mínimo de unidades lectoras desocupadas es 0, y el máximo es 2.
Como 6 procesos activos utilizan en total 18 unidades, siempre habrá 2 unidades libres
para ser asignadas al proceso que las requiera, y no habrá entonces bloqueos mortales.
3. Considere el algoritmo de Dekker, extendido para asegurar exclusión mutua a un número
arbitrario de procesos. Para ello, se modifica la línea de código a ejecutar cuando se abandona
la sección crítica a turno = (turno + 1) %n. Evaluar este algoritmo extendido cuando el número
de procesos que se ejecutan concurrentemente n es mayor que 2.
2
Solución
La solución propuesta asegura exclusión mutua y evita los bloqueos mortales. Sin embargo,
puede ocurrir que el turno sea asignado a un proceso que no está interesado en entrar a su
sección crítica, con lo que se produce inanición.
4. Un estudiante aventajado de Sistemas Operativos propone la siguiente solución al problema
de exclusión mutua. Búsque un contraejemplo que demuestre que esta solución es incorrecta.
Nota: la función cobegin(P(0), P(1)) indica la ejecución paralela de dos instancias del proceso
P, con argumentos 0 y 1.
boolean blocked [ 2 ] ;
i n t turno ;
void P ( i n t i d )
{
while ( t r u e )
{
blocked [ i d ] = t r u e ;
while ( turno != i d )
{
while ( blocked [ 1 − i d ] )
{
/ * No h a c e r nada * / ;
}
turno = i d ;
}
/* Seccion Critica */
blocked [ i d ] = f a l s e ;
/ * R e s t o d e l programa * /
}
}
void main ( )
{
blocked [ 0 ] = f a l s e ;
blocked [ 1 ] = f a l s e ;
turno = 0 ;
cobegin ( P ( 0 ) , P ( 1 ) ) ;
}
Solución
Considere el caso en que inicialmente turno = 0. El proceso P(1) hace blocked[1] = true y luego
halla blocked[0] = false . En ese momento, es intercambiado por el proceso P(0), que hace
blocked[0] = true, verifica que turno = 0 e ingresa a su sección crítica. En ese momento, el
sistema operativo vuelve a ejecutar P(1), que hace turno = 1 y también entra en su sección
crítica. Por ende, como ambos procesos están en su sección crítica al mismo tiempo, esta
solución no asegura exclusión mutua.
3
5. Considere el siguiente programa:
const i n t n = 5 0 ;
i n t cuenta ;
void t o t a l ( )
{
i n t cont ;
f o r ( cont = 1 ; cont <= n ; cont ++)
{
cuenta ++;
}
}
void main ( )
{
cuenta = 0 ;
cobegin ( ( t o t a l ( ) , t o t a l ( ) ) ;
w r i t e ( cuenta ) ;
}
a) Determine los límites inferior y superior para el valor final de la variable compartida cuenta. No realice ninguna suposición sobre la velocidad relativa de los procesos.
Suponga además que el programa se ejecuta sobre una arquitectura RISC.
b) Suponga que se ejecutan n copias de la función total () . Cuáles serán ahora los límites
para cuenta?
Nota: la función cobegin(P(0), P(1)) indica la ejecución paralela de dos instancias de P, con
argumentos 0 y 1.
Solución
a) El límite superior es trivial: si no hay problemas de concurrencia, cuenta debiera ser
igual a 100. Para obtener el límite inferior, analicemos el peor caso:
1) Proceso A lee cuenta a un registro, lo incrementa a 1, y pierde el procesador.
2) Proceso B lee cuenta (que aún es 0), lo incrementa 49 veces, y pierde el procesador
después de escribir el valor 49 en cuenta.
3) Proceso A recupera el procesador, escribe el valor 1 en cuenta, y pierde el procesador nuevamente.
4) Proceso B lee cuenta (que tiene el valor 1) a un registro, incrementa el registro a 2 y
pierde el procesador.
5) Proceso A recupera el procesador, incrementa cuenta 49 veces, por lo que cuenta
toma el valor 50.
6) Proceso B se reactiva por última vez, y almacena el valor 2 en cuenta.
Por lo tanto, el límite inferior de cuenta es 2.
b) En el caso de n procesos, los límites de cuenta serán 2 y 50n.
4
6. Sea la siguiente implementación de las operaciones wait() y signal () sobre un semáforo s:
wait ( s ) {
while ( TestAndSet ( l o c k ) ) {
; / * No h a c e r nada * /
}
while ( s <= 0 ) {
; / * No h a c e r nada * /
}
s = s − 1;
lock = 0;
}
signal ( s ) {
while ( TestAndSet ( l o c k ) ) {
; / * No h a c e r nada * /
}
s = s + 1;
lock = 0;
}
Suponiendo que lock tiene un valor inicial de 0 y s un valor inicial de 1, indique si la implementación mostrada es correcta. En caso contrario, presente un caso donde se ilustra el
problema con esta implementación.
Solución
Primero, recordemos la implementación de la instrucción TestAndSet(&i) vista en clases.
i f ( i == 0 ) {
i = 1;
return 1 ;
}
else {
return 0 ;
}
/* 0 es f a l s o */
/* 1 es verdadero */
Considere tres procesos, A, B y C. Suponga que A ejecuta la función wait() y por ende la
función TestAndSet(). Entonces, la variable lock tomará el valor 1, TestAndSet() retorna 1, y
el ciclo while se repite. Esta vez TestAndSet() retorna 0 y el proceso A decrementa en 1 el
semáforo s, haciéndolo igual a 0. Por último, el proceso A hace lock igual a false .
Luego, el proceso B ejecuta la función wait() , nuevamente ejecuta TestAndSet() dos veces,
dejando al final la variable lock igual a 1. Esta vez, el proceso B se queda esperando en
el segundo lazo ya que el semáforo s tiene valor 0. Ahora, el proceso C ejecuta la función
wait() . C ejecuta TestAndSet() una vez, y queda esperando en el segundo lazo ya que s tiene
valor 0.
El proceso A ejecuta signal () , hace s igual a 1 y lock igual a 0. El proceso B verifica el valor
de s, y sale del lazo. En ese momento, el proceso B es suspendido y se ejecuta el proceso C.
C verifica el valor de s, y sale del lazo. En ese momento es suspendido, y se vuelve a ejecutar
5
el proceso B. Tenemos entonces dos procesos, B y C, que están ejecutando código crítico (el
decremento del semáforo s).
En resumen, el problema con esta solución es que los dos procesos pueden quedar en un
lazo de espera dentro de la sección crítica de la función, antes de incrementar el semáforo.
7. Indique cuáles de las siguientes transiciones no se puede producir en un sistema operativo
con un algoritmo de planificación no expropiativo.
a) Bloqueado a listo
b) Ejecutando a listo
c) Ejecutando a bloqueado
d) Listo a ejecutando
Solución
Un algoritmo de planificación no expropiativo es aquel donde, una vez asignada la CPU a
un proceso, éste no pierde la CPU por acciones externas a él. Es decir, el proceso puede pasar
de listo a ejecutando a bloqueado a listo otra vez, pero el sistema operativo no puede obligar a
un proceso en ejecución a liberar la CPU y retornar a la cola de procesos en espera. Por ello,
la alternativa correcta es b).
8. Considere las siguientes funciones, incrementa() y decrementa(), las cuales son compartidas
por varios procesos:
s t a t i c i n t contador = 0 ;
i n t incrementa ( void )
{
contador ++;
i f ( contador > 5 )
{
p r i n t f ( ‘ ‘ contador v a l e %N\n’’ , contador ) ;
return 0 ;
}
return 1 ;
}
i n t decrement ( void )
{
while ( contador > 5 )
{
p r i n t f ( ‘ ‘ contador v a l e % d\n’’ , contador ) ;
contador − −;
}
i f ( contador == 0 )
return 0 ;
else
return 1 ;
}
Utilice primitivas mutex de la biblioteca Pthreads para hacer que ambas funciones sean atómicas.
6
Solución
El siguiente código muestra una posible solución.
# include <pthread . h>
pthread_mutex_t cuentaLock = PTHREAD_MUTEX_INITIALIZER ;
s t a t i c i n t count = 0 ;
i n t incrementa ( void )
{
pthread_mutex_lock (& cuentaLock ) ;
contador ++;
i f ( contador > 5 )
{
p r i n t f ( ‘ ‘ contador % d t i e n e v a l o r > 5\n’’ , contador ) ;
pthread_mutex_unlock (& cuentaLock ) ;
return 0 ;
}
pthread_mutex_unlock (& cuentaLock ) ;
return 1 ;
}
i n t decrement ( void )
{
pthread_mutex_lock (& cuentaLock ) ;
while ( contador > 5 )
{
p r i n t f ( ‘ ‘ contador % d e s mayor que 5\n’’ , contador ) ;
count − −;
}
i f ( count == 0 )
{
pthread_mutex_unlock (& cuentaLock ) ;
return 0 ;
}
else
{
pthread_mutex_unlock (& cuentaLock ) ;
return 1 ;
}
}
9. Otra solución software al problema de exclusión mutua es el algoritmo de la panadería de
Lamport, el cual, como su nombre lo dice, está modelado en el sistema de turnos de las
panaderías y otros establecimientos comerciales. En este algoritmo, cada cliente recibe un
ticket numerado cuando llega, que le permite ser servido por turno. El algoritmo es como
sigue:
boolean e l i g i e n d o [ n ] ;
i n t numero [ n ] ;
int j ;
while (TRUE)
{
7
e l i g i e n d o [ i ] = TRUE ;
numero [ i ] = 1 + maximo ( numero [ ] ) ;
e l i g i e n d o [ i ] = FALSE ;
f o r ( j = 0 ; j < n ; j ++)
{
while ( e l i g i e n d o [ j ] )
continue ;
while ( ( numero [ j ] != 0 ) && ( numero [ j ] , j ) < ( numero [ i ] , i ) )
continue ;
}
/* Seccion c r i t i c a */
numero [ i ] = 0 ;
}
donde la notación (a, b) < (c, d) se define como (a < c) OR (a = c AND b < d). Los vectores
eligiendo[] y numero[] son inicializados a los valores FALSE y 0, respectivamente. la función
maximo(numero[]) retorna el máximo valor almacenado en el vector numero. El elemento iésimo de cada vector puede ser leído y escrito por el proceso i solamente pero puede ser
leído por otros procesos.
a) Describa el algoritmo en palabras
b) Demuestre que el algoritmo evita los bloqueos mortales
c) Demuestre que el algoritmo asegura exclusión mutua
8
2 Bloqueos mortales
1. Suponga un sistema computacional que consta de múltiples unidades del recurso R. En este
sistema se ejecutan p procesos, tal que cada uno de ellos puede necesitar hasta k unidades
del recurso R. Cuántas unidades del recurso R deben existir como mínimo para asegurar la
ausencia de bloqueos mortales?
Solución
Es claro que si hay pk unidades del recurso R, no habrá bloqueos mortales en el sistema. Asimismo, si sólo hay p(k − 1) unidades, es posible que cada proceso adquiera k − 1 unidades del
recurso R y que todos los procesos queden bloqueados esperando adquirir el último recurso.
Si se agrega una unidad más, entonces uno de los procesos tendrá k recursos asignados y
podrá terminar. Es decir, habrá p − 1 procesos con k − 1 recursos asignados, y un proceso
dueño de k recursos. Por lo tanto, el número mínimo de unidades necesarias para asegurar
la ausencia de bloqueos mortales es p(k − 1) + 1.
2. Sea el siguiente estado de asignación de recursos




1 1 0
3 0 2
h
i




Asignación = 0 1 2 , Demanda = 2 2 0 , Disponible = 2 1 2




1 0 0
1 1 2
a) Utilice el algoritmo del banquero para determinar si éste es un estado seguro.
b) Supóngase que en ese instante llega una solicitud de P3 por una unidad de R3 . Se concedería esta solicitud en un sistema que utilice un algoritmo de predicción?
c) Supóngase que al instante siguiente llega una solicitud de P2 por una unidad de R1 . Se
concedería esta solicitud en un sistema que utilice un algoritmo de predicción?
Solución
a) El algoritmo del banquero dice que éste es un estado seguro, ya que los tres procesos
pueden ejecutarse con los recursos disponibles, en la secuencia P3 → P1 → P2 .
b) Sí, porque la secuencia aún puede completarse. Las nuevas matrices serían:




1 1 0
3 0 2
h
i




Asignación = 0 1 2 , Demanda = 2 2 0 , Disponible = 2 1 1




1 0 1
1 1 1
c) No, porque se llega a un estado inseguro. Las matrices después de asignado el recurso
serían:
9




3 0 2
1 1 0
h
i




Asignación = 1 1 2 , Demanda = 1 2 0 , Disponible = 1 1 1




1 1 1
1 0 1
P3 es el único proceso que puede ejecutarse hasta terminar, lo que dejaría el sistema en
la siguiente situación:




3 0 2
1 1 0
h
i




Asignación = 1 1 2 , Demanda = 1 2 0 , Disponible = 2 1 2




0 0 0
0 0 0
Claramente, ninguno de los otros procesos puede satisfacer su demanda de recursos
con los recursos disponibles.
3. Sea la siguiente solución al problema de los filósofos comensales:
int estado [ 5 ] ;
/ * E s t a d o de l o s f i l ó s o f o s * /
semaforo sem [ 5 ] = { 0 , 0 , 0 , 0 , 0 } ;
semaforo mutex = 1 ;
/ * Asegura e x c l u s i ó n mutua * /
tomaTenedores ( i ) {
wait ( mutex ) ;
e s t a d o [ i ] = HAMBRIENTO;
test ( i );
s i g n a l ( mutex ) ;
wait ( sem [ i ] ) ;
}
liberaTenedores ( i ) {
wait ( mutex ) ;
e s t a d o [ i ] = PENSANDO;
t e s t ( ( i + 1) %N ) ;
t e s t ( ( i − 1) %N ) ;
s i g n a l ( mutex ) ;
}
test ( i ) {
i f ( e s t a d o [ i ] == HAMBRIENTO &&
e s t a d o [ ( i − 1) %N] != COMIENDO &&
e s t a d o [ ( i + 1) %N] != COMIENDO) {
e s t a d o [ i ] = COMIENDO;
s i g n a l ( sem [ i ] ) ;
}
}
a) Demuestre que esta solución previene los bloqueos mortales.
b) Demuestre que esta solución puede dejar a un filósofo morirse de hambre.
10
Solución
a) El filósofo Fi puede pasar al estado COMIENDO sólo si ninguno de sus vecinos filósofos
está comiendo. Si, mientras Fi cena, su vecino F(i−1) %N ó su vecino F(i+1) %N intentan
coger los tenedores, estos filósofos quedarán bloqueados al ejecutar sem[i] en la función
tomaTenedores(). Una vez que Fi termine con su spaghetti, cederá sus tenedores primero a su vecino a mano izquierda F(i−1) %N , y luego a su vecino a mano derecha F(i+1) %N ,
mediante la ejecución de signal(sem[i]) . El semáforo mutex controla el acceso a las variables compartidas estado[] y sem[]. Al bloquear a un filósofo que intenta coger un tenedor
que está siendo usado, este método asegura la exclusión mutua entre filósofos.
b) Suponga que, inicialmente, los filósofos F2 y F4 están deleitandose con un rico spaghetti, mientras que los filósofos F0 , F1 y F3 están mirándolos hambrientos. Suponga,
además, que en cuanto un filósofo comienza a pensar, le da hambre (pensar es un trabajo que consume mucha energía!). Imagine, entonces, que se da la siguiente secuencia
de eventos:
F4 termina de cenar.
F0 comienza a comer, pues F1 y F3 están bloqueados por F2 .
F2 termina de cenar.
F3 comienza a comer, pues F1 y F4 están bloqueados por F0 .
F3 termina de cenar.
F2 comienza a comer, pues F1 y F4 están bloqueados por F0 .
F0 termina de cenar.
F4 comienza a comer, pues F1 y F3 están bloqueados por F2 .
Esta secuencia se puede repetir indefinidamente, y condena al pobre filósofo F1 a morirse de inanición.
11
3 Planificación de procesos
1. En un centro de cómputo se reciben cinco trabajos, detallados en la siguiente tabla:
Nombre Duración Prioridad tllegada
7
8
3
6
5
A
B
C
D
E
6
3
7
9
4
0
2
3
5
6
Se considera que, a menor valor, mayor es la prioridad. Determine el tiempo medio de retorno Tr para cada uno de los siguientes algoritmos de planificación.
a) Turno rotatorio con quantum = 3
b) Planificación por prioridades
c) Shortest Remaining Time (SRT)
d) Highest Response Ratio Next (HRRN)
Solución
Las figuras 3.1, 3.2, 3.3 y 3.4 muestran los diagramas de tiempo para los algoritmos de planificación especificados. Se aplicaron los siguientes criterios:
Para el algoritmo de planificación via turno rotatorio, se supone que la cola de procesos
en espera es una cola FIFO que da preferencia a los procesos nuevos.
El algoritmo de planificación HRRN es no expropiativo, mientras que los algoritmos de
planificación mediante turno rotatorio, prioridades y SRT son expropiativos.
A
B
C
D
E
0
3
6
9
12
15
18
21
24
27
Figura 3.1: Diagrama de tiempo, planificación via turno rotatorio, quantum = 3
12
A
B
C
D
E
0
3
6
9
12
15
18
21
24
27
Figura 3.2: Diagrama de tiempo, planificación via prioridades
A
B
C
D
E
0
3
6
9
12
15
18
21
24
27
Figura 3.3: Diagrama de tiempo, planificación via algoritmo Shortest Remaining Time
A
B
C
D
E
0
3
6
9
12
15
18
21
24
27
Figura 3.4: Diagrama de tiempo, planificación via algoritmo Highest Response Ratio Next
13
El cuadro 3.1 muestra los tiempos de retorno para cada proceso y el tiempo medio de retorno
para cada algoritmo de planificación.
Cuadro 3.1: Tiempos medios de retorno para los algoritmos enumerados
Proceso Turno rotatorio Prioridades SRT HRRN
Tr (A)
Tr (B)
Tr (C)
Tr (D)
Tr (E)
Tr
22
27
6
20
21
20
8
20
24
9
10
27
3
16
9
7
16
7
24
17
19,2
16,2
13
14,2
2. Suponga que dispone de un sistema operativo de propósito general que realiza planificación
de procesos via prioridades. Se tiene, entonces, que en cada activación del sistema operativo
puede ocurrir una de las siguientes alternativas:
a) No cambia el estado de ningún proceso
b) Cambia el estado de un proceso pero no hay cambio de contexto
c) Hay un cambio de contexto voluntario (causado por el proceso)
d) Hay un cambio de contexto involuntario (causado por el sistema operativo)
Analice cuáles de estas alternativas pueden ocurrir para cada uno de los siguientes casos,
planteando en cada caso una situación que sirva como ejemplo.
a) Se produce una interrupción de reloj
b) Se produce una interrupción del disco
c) Se produce una llamada al sistema
Solución
Se puede indicar a priori que una interrupción nunca puede causar un cambio de contexto
voluntario. Este tipo de cambio de contexto sólo puede ocurrir por una llamada al sistema
operativo que cause el bloqueo del proceso que la invocó.
a) Al ocurrir una interrupción de reloj, pueden ocurrir los casos a, b y d.
Puede ocurrir que el sistema operativo procese la interrupción y determine que no
es necesario cambiar el estado de ningún proceso. Este es el caso de la mayoría de
las interrupciones de reloj, que simplemente realizan las labores típicas asociadas
como actualizar la hora del sistema, labores de contabilidad, etc.
Una interrupción de reloj puede despertar a algún proceso bloqueado que haya
ejecutado la función del sistema sleep () para dormir un período determinado. Si
14
la prioridad de este proceso es menor que la del proceso en ejecución, sólo hay un
cambio de estado y el proceso desbloqueado entra en la cola de procesos listos.
En cambio, si la prioridad del proceso despertado es mayor que la del proceso en
ejecución, el sistema operativo expropiará la CPU del proceso en ejecución y habra
un cambio de contexto involuntario.
b) En caso de una interrupción de disco, ésta siempre está ligada al proceso que solicitó
el acceso a disco. Por ello, no puede ocurrir el caso que no se produzca al menos un
cambio de estado. Entonces, pueden ocurrir las alternativas b y d.
Puede ocurrir que la interrupción de disco desbloquee algún proceso que esté esperando por los datos. Si la prioridad de este proceso es menor que la del proceso
en ejecución, sólo hay un cambio de estado y el proceso desbloqueado entra en la
cola de procesos listos.
En cambio, si la prioridad del proceso desbloqueado es mayor que la del proceso en
ejecución, el sistema operativo expropiará la CPU del proceso en ejecución y habra
un cambio de contexto involuntario.
c) En cuanto a las llamadas al sistema, se pueden presentar todas las alternativas.
Una llamada al sistema puede no producir ningún cambio de estado. Por ejemplo,
una llamada que lea la posición actual del mouse.
Una llamada al sistema puede producir un cambio de estado pero no un cambio de
proceso. Por ejemplo, una llamada al sistema para incrementar un semáforo puede
desbloquear algún proceso que esté bloqueado en ese semáforo. Si este proceso es
de prioridad menor que el proceso en ejecución, sólo hay un cambio de estado y el
proceso desbloqueado entra en la cola de procesos listos.
En cambio, si la prioridad del proceso desbloqueado es mayor que la del proceso en
ejecución, el sistema operativo expropiará la CPU del proceso en ejecución y habra
un cambio de contexto involuntario.
También puede producirse un cambio de contexto voluntario si la llamada bloquea
al proceso que la realiza. Por ejemplo, una llamada al sistema para leer datos de un
archivo puede bloquear al proceso que la invoca.
3. En un sistema operativo hay tres procesos en ejecución, P0 , P1 y P2 . Todos estos procesos
tienen el mismo comportamiento: usan la CPU por un tiempo T , luego solicitan E/S y se
bloquean por un tiempo B, luego usan la CPU por un tiempo T , luego solicitan E/S y se
bloquean por un tiempo B y finalmente usan la CPU por un tiempo T . Todos estos procesos
arriban al mismo tiempo t = 0 en el orden P0 , P1 , P2 y sus solicitudes de CPU y E/S son
planificadas usando el algoritmo FCFS. Los valores de T y B se muestran en la siguiente
tabla.
a) Suponga primero que los tres procesos requieren acceder al mismo dispositivo de entrada/salida, y que las solicitudes por el dispositivo son atendidas en orden FCFS. Realice
un diagrama de tiempo que muestre la ejecución de estos procesos. Calcule el tiempo
de espera y de respuesta promedio para estos procesos y el porcentaje de utilización de
la CPU. Ignore la sobrecarga debida al proceso despachador.
15
Proceso
T
7
1
1
P0
P1
P2
B
4
2
2
b) Suponga ahora que los tres procesos acceden a dispositivos de entrada/salida diferentes y que las solicitudes por el dispositivo son atendidas en orden FCFS. Realice un
diagrama de tiempo que muestre la ejecución de estos procesos. Calcule el tiempo de
respuesta promedio para estos procesos y el porcentaje de utilización de la CPU. Ignore
la sobrecarga debida al proceso despachador.
c) Suponga ahora que se agrega una nueva CPU al sistema, idéntica a la anterior, y que
un proceso puede ser ejecutado indistintamente en cualquiera de las 2 CPUs. Repita el
análisis anterior, calculando el porcentaje de utilización de ambas CPUs.
Solución
La realización de los diagramas de tiempo se deja de ejercicio al lector. De ellas, se pueden
extraer los resultados que se muestran a continuación.
a) El tiempo de espera promedio es 0+23+24
= 15,6 y el tiempo de respuesta promedio es
3
29+30+31
=
30.
El
porcentaje
de
utilización
del procesador es 27
3
31 = 87 %.
b) El tiempo de espera promedio es 0+13+15
= 9,3 y el tiempo de respuesta promedio es
3
29+20+22
= 23,6. El porcentaje de utilización del procesador es 93,5 %.
3
= 0,3 y el tiempo de respuesta promedio es
c) El tiempo de espera promedio es 0+0+1
3
29+7+8
=
14,6.
El
porcentaje
de
utilización
del primer procesador es 72,4 % y el porcen3
taje de utilización del segundo procesador es 20,6 %.
4. Considere el conjunto de procesos mostrados en la siguiente tabla.
Nombre Llegada Duración
A
B
C
D
E
0
1
3
9
12
3
5
2
5
5
Calcule el tiempo de finalización, el tiempo de retorno y el tiempo de retorno normalizado
para cada proceso para las siguientes políticas de planificación:
First-Come, First-Served (FCFS)
Round-Robin, q = 1 (RR)
16
Shortest Process First (SPF)
Highest Response Ratio Next (HRRN)
5. Qué tipo de proceso se ve favorecido por un sistema de planificación de procesos que utiliza
colas multinivel con realimentación: un proceso que hace uso intensivo de la CPU, o un
proceso que se ve dominado por el costo de realizar E/S? Explique brevemente por qué.
6. En un sistema operativo arriban simultáneamente 4 trabajos de la duración y prioridades
indicadas en el siguiente cuadro, pero en el orden A, B, C, D.
Proceso Duración Prioridad
8
5
3
7
A
B
C
D
2
4
2
3
Para los siguientes algoritmos de planificación, realice un diagrama que muestre el orden
de ejecución de estos trabajos, e identifique el algoritmo con menor tiempo de respuesta.
Suponga que, a mayor valor, menor prioridad.
a) Planificación por prioridades no expropiativa
b) Planificación cíclica con un quantum de 2 unidades de tiempo
c) FIFO
7. Supóngase un conjunto de tres tareas periódicas con los perfiles que se indican en el siguiente cuadro.
Nombre 1ra Ejecución Período Duración
A
B
C
0
0
0
20
50
50
10
10
15
Es decir, la tarea A se ejecuta cada 20 ciclos, demora 10 ciclos en ejecutarse, y su primera
ejecución ocurre al tiempo t = 0.
Realice un diagrama de tiempo que muestre cómo se planifican estas tareas para una política
de planificación por plazos de término.
17
4 Administración de memoria
1. Sea un computador que dispone de 36 MiB de memoria principal, y cuyo sistema operativo
ocupa 4 MiB sin incluir las estructuras necesarias para la administración de la memoria.
En este computador, se prevé la ejecución de aplicaciones con un espacio de direcciones
compuesto por 3 segmentos, código, datos y pila, con tamaños promedio de 264 KiB, 124
KiB y 124 KiB, respectivamente.
Se desea implementar un sistema de administración de memoria, siendo los posibles esquemas a seguir los siguientes:
Asignación contigua con particiones dinámicas, tal que cada proceso ocupa una única
partición.
Paginación simple.
Segmentación simple.
Memoria virtual paginada.
Memoria virtual segmentada.
Para los sistemas basados en páginas, considere que el tamaño de la página es de 4 KiB y que
cada entrada en la tabla de páginas es de 4 bytes. Para los sistemas basados en segmentos, el
tamaño máximo de un segmento es 16 MiB. Suponga que los esquemas con memoria virtual
usan una política de asignación fija que otorga a cada proceso 16 marcos de página.
Para cada uno de los esquemas anteriores, se pide analizar lo siguiente:
a) La memoria utilizada por el sistema de gestión de memoria para las estructuras de
datos que Ud. determine son necesarias.
b) La memoria perdida debido al esquema usado, indicando la razón de dicha pérdida.
En los casos que no disponga de otros datos, y sea aplicable, considere que la memoria
perdida debido al esquema de administración de memoria utilizada es de un 25 %.
c) El grado de multiprogramación posible de alcanzar en este sistema, para el tamaño
promedio de procesos dado.
d) El tamaño máximo del proceso que se puede ejecutar.
Solución
Dado el espacio ocupado por el sistema operativo, quedan 32 MiB disponibles para la ejecución de programas y para las estructuras de datos necesarias para la administración de
memoria.
18
Asignación Contigua
En este esquema de administración de memoria, la memoria es dividida dinámicamente
tanto en número como en tamaño de acuerdo a las características de los procesos a ejecutar.
Un proceso es asignado exactamente la memoria que necesita y nada más.
a) En este caso, basta con un par de palabras por proceso que indiquen la dirección de
memoria donde comienza el proceso (registro base) y la longitud del mismo (registro
límite). Estas palabras, que pueden almacenarse en memoria o en registros dedicados
del procesaor, solucionan los problemas de reubicación y protección.
Aparte de estas dos palabras por proceso, el sistema de administración de memoria
requiere saber en todo momento qué secciones de la memoria están disponibles. Esto
puede implementarse como una lista encadenada de punteros a las áreas de memoria
libre, junto con información sobre su tamaño. Para calcular las dimensiones de esta
lista, es necesario saber el grado de multiprogramación.
b) En este esquema de administración de memoria se produce fragmentación externa.
Según el enunciado, supondremos que la memoria que se pierde como consecuencia
de la fragmentación externa es un 25 % de la memoria disponible, es decir, 8 MiB.
c) El tamaño promedio de un proceso es de 512 KiB. Dado que se pierden 8 MiB de memoria, sólo 24 MiB de memoria están disponibles para almacenar procesos. Por ende,
sólo 48 procesos pueden estar residentes en memoria a la vez.
d) El tamaño máximo del proceso que se puede ejecutar bajo este esquema de administración de memoria está dado por la memoria disponible. Si suponemos que hay sólo
un proceso en memoria, no habrá fragmentación externa y la memoria disponible será
32 MiB, menos la memoria necesaria para almacenar las estructuras detalladas en la
primera parte de esta pregunta.
Paginación Simple
En este esquema, tanto el proceso como la memoria están divididos en páginas y marcos de
páginas de 4 KiB de tamaño. En un esquema de paginación simple (no hay memoria virtual),
todas las páginas del proceso deben estar residentes en memoria durante su ejecución.
a) En este caso, se necesita una tabla de páginas por cada proceso, cuyo tamaño varía en el
tiempo de acuerdo con el comportamiento de cada proceso. Asimismo, se necesita una
lista encadenada de los marcos de página libres. La memoria disponible para procesos
de usuario (32 MiB) está dividida entonces en 8192 marcos de página. Dado que cada
entrada en una tabla de páginas es de 4 bytes, una tabla de páginas direcciona a lo más
1024 páginas, y son necesarias como máximo 8 tablas de página y una tabla de páginas
maestra por cada proceso.
b) Este esquema de administración de memoria presenta fragmentación interna. Ésta se
presenta en la última página de un proceso y su tamaño es, en promedio, la mitad de
un página, es decir, 2 KiB por proceso. Para calcular cuánta memoria se pierde en total,
es necesario conocer el grado de multiprogramación. Si hay sólo un proceso gigante
en ejecución, la memoria perdida por fragmentación será de 2 KiB. Por el contrario, si
19
hay 8192 procesos en ejecución, ocupando un marco de página cada uno, la memoria
promedio perdida por fragmentación será de 16 MiB. Este último caso no considera la
memoria necesaria para almacenar las estructuras detalladas en el punto anterior.
c) Dado que el tamaño promedio de un proceso es 512 KiB, éste ocupa 128 marcos de página y su tabla de páginas cabe en una página. Por ende, un proceso ocupa 129 marcos.
Dado que la memoria total es de 8192 marcos de página, es posible tener como máximo
63 procesos en ejecución en forma simultánea. En este caso, la memoria perdida por
fragmentación interna es de 63 × 2 KiB = 126 KiB. Esto representa menos del 1 % de la
memoria disponible para los programas de usuario.
d) Como se mencionó, el tamaño máximo del proceso está dado por la memoria disponible
(32 MiB) menos las 9 páginas necesarias para almacenar su tabla de páginas. Entonces,
el tamaño máximo está dado por (8192 − 9) × 4 KiB = 32732 KiB.
Segmentación Simple
Cada programa está dividido en un conjunto de segmentos, no siendo necesario que éstos
estén contiguos en memoria ni que tengan el mismo tamaño. En nuestro caso, cada programa consta de un segmento de código, uno de datos y uno de pila. En un esquema de
segmentación simple (no hay memoria virtual), todos los segmentos del proceso deben estar
residentes en memoria durante su ejecución.
a) La administración de memoria en este caso es similar al esquema de asignación contigua. Además de la lista encadenada de áreas libres de memoria, es necesario disponer
de registros base y límite para cada segmento del proceso, es decir, 6 registros en total
por cada proceso.
b) En este caso, supondremos que la fragmentación externa es de 8 MiB (el 25 % de la
memoria disponible para programas).
c) El grado de multiprogramación que se puede alcanzar es equivalente al primer caso,
es decir, 48 procesos, con la diferencia que los procesos no se encuentran contiguos en
memoria.
d) El tamaño máximo de un proceso está determinado por la memoria física disponible,
es decir, será de 32 MiB, menos el espacio ocupado por la lista encadenada de punteros
a áreas libres. Cada segmento no puede ser mayor a 16 MiB.
Memoria Virtual Paginada
A diferencia del caso de paginación simple, no es necesario que todas las páginas del proceso
estén en memoria principal para su ejecución.
a) Se necesita una tabla de páginas por proceso. Dado que cada proceso tiene asignadas
sólo 16 páginas, son necesarios sólo 64 bytes para almacenarla. Sin embargo, podemos
suponer que la tabla de páginas ocupa 1 página.
b) En este caso, la memoria que se pierde por fragmentación interna se produce en la
última página del espacio de direcciones virtuales del proceso. Dado que el administrador de memoria otorga un número fijo de 16 marcos de página a cada proceso, la
probabilidad que la última página del proceso se encuentre en memoria principal en
20
16
un momento determinado está dada por 128
, es decir, el número de páginas asignadas
al proceso dividido por el número de páginas total del proceso. Si sabemos el grado de
multiprogramación, podremos determinar la memoria perdida.
c) El tamaño que ocupa cada proceso en memoria principal está dado por los 16 marcos
de páginas del proceso, y la página que ocupa su tabla, es decir, ocupa 17 × 4 = 68 KiB.
Luego, es posible tener hasta 481 procesos en memoria. La memoria usada por todas
las tablas de página es de 481 páginas ó 1924 KiB, y la memoria total perdida debido a
16
× 481 × 2 = 120,25 KiB, prácticamente igual a lo que
la fragmentación interna será 128
se pierde si se usa paginación simple.
Memoria Virtual Segmentada
Este caso es similar a la segmentación simple, excepto que no es necesario que todos los
segmentos del proceso estén en memoria simultáneamente.
a) En forma similar al caso de segmentación simple, se requieren 3 registros por proceso,
uno para cada segmento. Además, se requiere de una estructura de datos que lleve el
control de los espacios de memoria disponibles.
b) Nuevamente, tendremos fragmentación externa de 8 MiB.
c) En este caso, no sabemos cuánta memoria física es reservada para cada proceso por
el sistema operativo. Si suponemos, por ejemplo, que es necesario que el segmento de
código de un proceso permanezca en memoria todo el tiempo, entonces el grado de
multiprogramación estará dado por ⌈ 32768
264 ⌉ = 124 procesos.
d) El tamaño máximo de un proceso está determinado por la memoria física disponible,
es decir, será de 32 MiB, menos el espacio ocupado por la lista encadenada de punteros
a áreas libres. Cada segmento no puede ser mayor a 16 MiB.
2. Considérese un tamaño de página de 4 KiB y una entrada en la tabla de páginas de 4 bytes.
Cuántos niveles de tablas de página serían necesarios para la traducción de un espacio de
direcciones de 64 bits, si el tamaño de la tabla de páginas maestra es una página?
Solución
Dado que cada página tiene 4 KiB, y cada entrada en una tabla de páginas ocupa 4 bytes, entonces una tabla de páginas tiene a lo más 210 = 1024 entradas. Como cada página
contiene 212 bytes, un sistema de un nivel de tablas de página puede direccionar a lo más
210 × 212 = 222 = 4 MiB. Un sistema de dos niveles de tablas de páginas puede direccionar a
lo más 232 = 4 GiB. Un sistema de 5 niveles puede direccionar 262 = 4 EiB, mientras que un
sistema de 6 niveles puede direccionar 272 = 4 ZiB. Dado que el espacio de direcciones es de
64 bits, se requieren 6 niveles de tablas de página. La tabla de páginas maestra tendrá sólo
4 entradas en uso. (Recuerde que los prefijos son: Kilo, Mega, Giga, Tera, Peta, Eta, Zetta,
Yotta)
21
3. Un proceso tiene 8 páginas virtuales en el disco, y se asignan con una ubicación fija de 4
marcos de página en la memoria principal. Se produce la siguiente secuencia de accesos a
páginas:
1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3
Considere que los marcos están inicialmente vacíos. Muestre la secuencia de páginas residentes en los 4 marcos y calcule la tasa de aciertos en la memoria principal, si se utilizan
políticas de reemplazo:
a) LRU
b) FIFO
c) MRU
d) OPT
Solución
A continuación, se muestran el contenido de los 4 marcos de página para cada política de
reemplazo, indicando las faltas de páginas asociadas.
16
33
a) La tasa de aciertos para la política LRU es
= 48 %
1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3
1
−
−
−
F
1
0
−
−
F
1
0
2
−
F
1
0
2
−
1
0
2
−
1
0
2
7
F
1
6
2
7
F
1
6
2
7
1
6
0
7
F
1
6
0
7
1
2
0
7
F
1
2
0
7
1
2
0
3
F
1
2
0
3
4
2
0
3
F
4
5
0
3
F
4
5
0
1
F
4
5
0
1
b) La tasa de aciertos para la política FIFO es
4
5
2
1
F
16
33
4
5
2
1
4
5
2
1
4
5
2
6
F
4
5
7
6
F
4
5
7
6
4
5
7
6
2
5
7
6
F
2
4
7
6
F
2
4
7
6
2
4
7
6
2
4
7
3
F
2
4
7
3
2
4
7
3
2
4
7
3
= 48 %
1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3
1
−
−
−
F
1
0
−
−
F
1
0
2
−
F
1
0
2
−
1
0
2
−
1
0
2
7
F
6
0
2
7
F
6
0
2
7
6
0
2
7
6
1
2
7
F
6
1
2
7
6
1
0
7
F
6
1
0
3
F
6
1
0
3
4
1
0
3
F
4
5
0
3
F
4
5
1
3
F
4
5
1
3
c) La tasa de aciertos para la política MRU es
4
5
1
2
F
16
33
4
5
1
2
4
5
1
2
6
5
1
2
F
6
7
1
2
F
6
7
1
2
6
7
1
2
6
7
1
2
6
7
4
2
F
6
7
4
2
6
7
4
2
6
7
4
3
F
6
7
4
3
2
7
4
3
F
2
7
4
3
= 48 %
1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3
1
−
−
−
F
1
0
−
−
F
1
0
2
−
F
1
0
2
−
1
0
2
−
1
0
2
7
F
1
0
2
6
F
1
0
2
7
F
1
0
2
7
1
0
2
7
1
0
2
7
1
0
2
7
1
3
2
7
F
1
0
2
7
F
1
4
2
7
F
1
5
2
7
F
22
1
5
2
7
1
5
2
7
1
5
2
7
1
5
4
7
F
1
5
4
7
1
6
4
7
F
1
6
4
7
1
6
4
7
1
6
4
7
1
6
4
2
F
1
6
4
2
1
6
4
2
1
6
4
7
F
1
6
4
3
F
1
6
4
3
1
6
4
2
F
1
6
4
3
F
d) La tasa de aciertos para la política OPT es
21
33
= 64 %
1 0 2 2 1 7 6 7 0 1 2 0 3 0 4 5 1 5 2 4 5 6 7 6 7 2 4 2 7 3 3 2 3
1
−
−
−
F
1
0
−
−
F
1
0
2
−
F
1
0
2
−
1
0
2
−
1
0
2
7
F
1
0
6
7
F
1
0
6
7
1
0
6
7
1
0
6
7
1
0
6
2
F
1
0
6
2
1
0
3
2
F
1
0
3
2
1
4
3
2
F
1
4
5
2
F
1
4
5
2
1
4
5
2
1
4
5
2
1
4
5
2
1
4
5
2
6
4
5
2
F
6
4
7
2
F
6
4
7
2
6
4
7
2
6
4
7
2
6
4
7
2
6
4
7
2
6
4
7
2
3
4
7
2
F
3
4
7
2
3
4
7
2
3
4
7
2
4. Considere un sistema de memoria virtual en el que existen 4 marcos de página inicialmente
vacíos. Un proceso genera la siguiente secuencia de referencias a páginas: 8, 1, 3, 1, 4, 5, 2,
3, 4, 5, 1, 2, 3, 6, 1, 8, 4, 1, 3.
a) Indique el número de faltas de página que ocurren si se utiliza un algoritmo de reemplazo LRU.
b) Indique el número de faltas de página que ocurren si se utiliza un algoritmo FIFO.
c) Un compañero suyo dice que ha inventado un algoritmo de reemplazo muy sencillo que
incurre en sólo 8 faltas de página en las condiciones descritas. Qué opinión le merece
este algoritmo?
Solución
a) Usando la política LRU, se producen 14 faltas de página.
Referencia
Falta
8
1
3
1
4
5
2
3
4
5
1
2
3
6
1
8
4
1
3
8
8
1
8
1
3
8
1
3
8
1
3
4
5
1
3
4
5
1
2
4
5
3
2
4
5
3
2
4
5
3
2
4
5
3
1
4
5
2
1
4
5
2
1
3
6
2
1
3
6
2
1
3
6
8
1
3
6
8
1
4
6
8
1
4
3
8
1
4
F
F
F
F
F
F
F
F
F
F
F
F
F
F
b) En el caso FIFO, se producen 13 faltas de página.
Referencia
Falta
8
1
3
1
4
5
2
3
4
5
1
2
3
6
1
8
4
1
3
8
8
1
8
1
3
8
1
3
8
1
3
4
5
1
3
4
5
2
3
4
5
2
3
4
5
2
3
4
5
2
3
4
5
2
1
4
5
2
1
4
5
2
1
3
6
2
1
3
6
2
1
3
6
8
1
3
6
8
4
3
6
8
4
1
3
8
4
1
F
F
F
F
F
F
F
F
F
F
F
F
F
c) Si se usa la política OPT, se producen 9 faltas de página. Por lo tanto, no es posible
diseñar una política que produzca sólo 8 faltas de página con la secuencia dada.
23
Referencia
Falta
8
1
3
1
4
5
2
3
4
5
1
2
3
6
1
8
4
1
3
8
8
1
8
1
3
8
1
3
8
1
3
4
5
1
3
4
5
2
3
4
5
2
3
4
5
2
3
4
5
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
1
6
3
4
1
6
3
4
1
8
3
4
1
8
3
4
1
8
3
4
1
8
3
4
F
F
F
F
F
F
F
F
F
5. Un computador tiene una cache, una memoria principal y un disco usado para memoria
virtual. Si una palabra referenciada está en la cache, se necesitan 20ns para acceder a ella. Si
está en memoria principal pero no en la cache, se necesitan 60ns para cargarla en la cache,
y entonces la referencia comienza de nuevo. Si la palabra no está en la memoria principal,
se necesitan 12ms para cargar la palabra desde el disco, seguidos de 60ns para copiarla en la
cache, y entonces se realiza de nuevo la referencia. La tasa de aciertos en la cache es 90 %, y
la tasa de aciertos en memoria principal es de 60 %. Cuál es el tiempo promedio de acceso a
una palabra, en ns?
Solución
Hay tres casos a considerar, los que se muestran en el cuadro 4.1.
Cuadro 4.1: Tiempo de acceso en función de la ubicación del dato
Ubicación del dato
Probabilidad
Tiempo de acceso (ns)
Presente en cache
Presente en memoria principal
Ni en cache ni en memoria
0,90
0,1 × 0,6 = 0,06
0,1 × 0,4 = 0,04
20
60 + 20 = 80
80 + 12 × 106 = 12000080
Por lo tanto, el tiempo de acceso promedio en ns es:
Tavg = 0,90 × 20 + 0,06 × 80 + 0,04 × 12000080 = 480026
6. Considere un sistema de almacenamiento de memoria que almacena segmentos en forma
contigua en el orden de su creación, como se muestra en la siguiente figura:
S1
S2
...
Sn−1
Sn
espacio libre
Al crearse el segmento Sn+1 , éste se almacena inmediatamente después del segmento Sn , aun
cuando puedan haberse eliminado ya de memoria alguno de los segmentos S1 , . . . , Sn−1 . Si el
segmento a almacenar es mayor que el espacio libre, se compactan los segmentos en uso,
copiándolos de manera de que nuevamente estén contiguos en memoria.
Suponga:
Cada ciclo hay una referencia a memoria
24
Cada t referencias se elimina un segmento
El largo promedio de un segmento en bytes es s
El sistema está en equilibrio
El tamaño de la memoria es de m bytes
Copiar un byte de una parte de memoria a otra requiere de dos referencias a memoria
Calcule la fracción de tiempo F consumida en la compactación de memoria.
Pista: calcule la velocidad de movimiento de la frontera entre el último segmento y el espacio
libre.
Solución
Si el sistema está en equilibrio y cada t referencias se elimina un segmento, entonces cada t
referencias se añade un nuevo segmento. Si el tamaño promedio de un segmento es s bytes,
tenemos que la frontera entre el último segmento y el espacio libre se mueve a una velocidad
de st bytes por ciclo.
Sea f la fracción de la memoria que está libre después del último segmento en un instante
cualquiera. Entonces, el tiempo que demorará llenar esa fracción de memoria con segmentos
f mt
será t0 = s . Una vez llena la memoria, es necesario compactar ésta. En el peor caso, es
necesario mover todos los bytes de la fracción de memoria ocupada, es decir, (1 − f )m bytes.
En ese caso, el tiempo de compactación es tc = 2(1 − f )m y la fracción F es:
F
≥
≥
≥
tc
t0 + tc
2(1 − f )m
f mt
s
+ 2(1 − f )m
2s(1 − f )
f t + 2s(1 − f )
7. En un sistema computacional con memoria virtual paginada, la asignación de marcos es realizada en forma global, bajo un esquema de paginación por demanda. Suponga que existen
5 marcos de página y sólo 2 procesos en ejecución, A y B.
El proceso A hace referencias a sus páginas 7, 15, 17, 13, 15, 11, 15, 11, 9 y 9, mientras que
el proceso B hace referencias a sus páginas 3, 7, 8, 6, 7, 5, 7, 5, 5 y 5, donde el sistema de
memoria recibe estas referencias en forma alternada, comenzando por el proceso A.
Indique qué referencias a páginas generan una falta de página si el algoritmo de reemplazo
es LRU.
Solución
La siguiente tabla muestra el estado de la memoria paso a paso. La primera columna indica
la página accesada, las siguientes 5 columnas muestran el contenido de los marcos de página,
y la última columna indica la ocurrencia de una falta de página.
25
7A
3B
15A
7B
17A
8B
13A
6B
15A
7B
11A
5B
15A
7B
11A
5B
9A
5B
9A
5B
7A
7A
7A
7A
7A
8B
8B
8B
8B
8B
11A
11A
11A
11A
11A
11A
11A
11A
11A
11A
3B
3B
3B
3B
3B
13A
13A
13A
13A
13A
5B
5B
5B
5B
5B
5B
5B
5B
5B
15A
15A
15A
15A
15A
6B
6B
6B
6B
6B
6B
6B
6B
6B
9A
9A
9A
9A
7B
7B
7B
7B
7B
15A
15A
15A
15A
15A
15A
15A
15A
15A
15A
15A
15A
F
F
F
F
F
F
F
F
F
F
F
F
17A
17A
17A
17A
17A
7B
7B
7B
7B
7B
7B
7B
7B F
7B
7B
7B
8. Considere un sistema basado en páginas que usa un solo nivel de tabla de páginas, la que
está siempre en memoria
a) Si una referencia a memoria demora 200ns, cuánto tiempo lleva una referencia a memoria paginada, en promedio?
b) Ahora, se agrega hardware en forma de una TLB, que demora 20ns en realizar su traducción. Si este TLB tiene una tasa de aciertos de 85 %, cuál es el tiempo de acceso
efectivo?
Solución
a) Una referencia a memoria paginada requiere, en promedio, dos accesos a memoria,
uno para la tabla de páginas y otro para acceder al datos propiamente tal. Por ello, se
requieren 400ns.
b) Tenemos dos casos: si el TLB contiene la dirección buscada, el tiempo de acceso será de
200 + 20 = 220ns. Si dicha dirección no se encuentra en el TLB, hay un costo adicional
de 200ns para acceder a la tabla de páginas. Entonces, el tiempo de acceso efectivo será
220 × 0,85 + 420 × 0,15 = 250ns.
9. Considere una tarea dividida en 4 segmentos de igual tamaño, y un sistema con segmentación y paginación que implementa una tabla de páginas con 8 entradas por cada segmento.
Suponga que el tamaño de cada página es de 2 KiB.
a) Cuál es el tamaño máximo que puede tener un segmento?
b) Cuál es el máximo espacio de direcciones lógicas para una tarea?
26
c) Suponga que la tarea accede a la dirección fisica 00021ABC. Cuál es el formato de la
dirección lógica generada por la tarea?
Solución
a) Dado que un segmento puede tener sólo 8 páginas de 2 KiB cada una, el tamaño máximo de un segmento es 16 KiB.
b) Dado que una tarea puede tener a lo más 4 segmentos, el máximo espacio de direcciones
lógicas es 64 KiB.
c) El formato de la dirección lógica estará definido por el número de segmentos por proceso, el número de páginas por segmentos y el espacio máximo de direcciones lógicas.
Como éste es de 64 KiB, las direcciones lógicas tendrán 16 bits.
2 bits
Segmento
3 bits
Página
11 bits
Desplazamiento
De la información dada, no se puede obtener los números de segmento ó página, pero
el desplazamiento puede obtenerse de la dirección física de 32 bits 00021ABC, dividiéndola de la forma indicada abajo. De la figura, el desplazamiento es 2BC.
21 bits
0000 0000 0000 0010 0001 1
Marco de página
11 bits
010 1011 1100
Desplazamiento
10. Suponga que Ud. tiene un sistema operativo que utiliza segmentación en un computador
con 1 MiB de memoria física. Sobre este sistema, se ejecuta una secuencia de aplicaciones,
las que realizan las siguientes operaciones:
Proceso A solicita 512 KiB de memoria
Proceso B solicita 256 KiB de memoria
Proceso C solicita 64 KiB de memoria
Proceso B termina
Proceso D solicita 186 KiB de memoria
Proceso E solicita 190 KiB de memoria
a) Indique el estado final de la memoria si se usa una política de asignación de memoria
first-fit
b) Indique el estado final de la memoria si se usa una política de asignación de memoria
best-fit
c) Suponga ahora que el sistema operativo combina paginación y segmentación, con páginas de 4 KiB. Indique ahora cuánta memoria se pierde por fragmentación interna y
externa en los dos casos anteriores.
27
Solución
a) En caso de usarse una política de asignación de memoria first-fit, el estado final de la
memoria es:
512 KiB
A
186 KiB
D
70 KiB
libre
64 KiB
C
190 KiB
E
2 KiB
libre
b) En caso de usarse una política de asignación de memoria best-fit, el estado final de la
memoria es:
512 KiB
A
190 KiB
E
66 KiB
libre
64 KiB
C
186 KiB
D
6 KiB
libre
c) En caso de usarse memoria segmentada y paginada con páginas de 4 KiB, es fácil ver
que sólo existe fragmentación interna en los procesos D y E, pues la memoria asignada
a estos procesos no es múltiplo de 4 KiB. Entonces, la fragmentación interna total es de
4 KiB.
Además, por ser éste un sistema de memoria paginada, no existe fragmentación externa.
11. Suponga un sistema operativo con memoria virtual paginada, donde la tabla de página está
residente en registros internos a la CPU. El tiempo de acceso a memoria es de 100ns. Suponga
además que leer una página de disco a memoria demora 8ms sin reemplazo y 20ms con
reemplazo, y que el 70 % de las veces es necesario reemplazar una página. Cuál es la máxima
tasa de faltas de páginas aceptable para tener un tiempo de acceso promedio de 200ns?
Solución
El tiempo de acceso efectivo a disco en ns es:
Tdisco = 0,3 × 8 × 106 + 0,7 × 20 × 106 = 16,4 × 106
Se pide calcular P tal que
200 = 100(1 − P) + 16,4 × 106 P
De donde la tasa de faltas de página debe ser P ≤ 0,0000061.
12. Uno de sus amigos quiere actualizar su computador y le ha solicitado su ayuda. Ud., como
buen ingeniero, decide primero medir el desempeño actual del computador, para determinar dónde está el cuello de botella. Ud. descubre los siguientes datos:
La probabilidad de un fallo en el TLB es de 10 %
La probabilidad de una falta de página cuando hay un fallo en el TLB es de 0,02 %
Tiempo de acceso al TLB: 10ns
Tiempo de acceso a memoria: 1µs
Tiempo de transferencia de una página: 10ms
28
Probabilidad de reemplazar una página modificada: 50 %
El computador en cuestión usa un sistema de memoria virtual paginada con sólo un nivel de
tablas de página. El TLB es actualizado automáticamente por el hardware en caso de fallo.
Las tablas de página residen en memoria principal, así que un acceso a una tabla de página
demora 1µs.
a) Calcule el tiempo promedio de acceso a memoria
b) Luego de hacer estas mediciones, Ud. consulta con el fabricante del computador, quien
le da la siguiente lista de precios:
Aumento de TLB: Reduce probabilidad de fallo en TLB a 5 %.
Actualización de disco: transfiere una página en 8ms.
Aumento de memoria RAM: reduce la probabilidad de falta de página en caso de
fallo de TLB a 0,01 %
Cada una de estas alternativas cuesta $100,000. Su amigo tiene $200,000 para gastar.
Qué opciones le recomienda Ud.? Justifique su respuesta.
Solución
a) Supondremos que el acceso al TLB ocurre en paralelo con el acceso a las tablas de
página en memoria. Entonces, un 90 % de las veces el acceso a un dato o instrucción
involucra un acceso al TLB y otro acceso a memoria. El 10 % restante, debe hacerse
un acceso a memoria para acceder a la tabla de páginas y otro para acceder al dato o
instruccíón. En un 0,02 % de estos casos, hay una falta de página.
Tacceso
Tacceso
Tacceso
Tacceso
=
=
=
=
0,9 ∗ (10 + 1000) + 0,1 ∗ (2000 + 0,0002 ∗ (10000000 + 0,5 ∗ 10000000))
0,9 ∗ 1010 + 0,1 ∗ (2000 + 3000)
909 + 500
1409
b) Veamos el efecto de cada modificación.
1) Aumento de TLB: 0,95 ∗ 1010 + 0,05 ∗ 500 = 1209,5
2) Actualización de disco: 909 + 0,1 ∗ 4400 = 1349
3) Aumento de memoria RAM: 909 + 0,1 ∗ 3500 = 1259
Estos resultados ya nos dicen que probablemente le conviene aumentar la memoria
RAM y aumentar el tamaño del TLB. El efecto combinado de ambos es:
T+T LB,+RAM = 0,95 ∗ 1010 + 0,05 ∗ 3500 = 1134,5
29
5 Administración de entrada/salida
1. Un disco magnético tiene una velocidad de rotación de 7200 RPM, y está organizado en 5000
cilindros, numerados del 0 al 4999. El disco está actualmente atendiendo una solicitud por el
cilindro 143, y la solicitud anterior fue para el cilindro 125. La cola de solicitudes pendientes
contiene los cilindros 86, 1470, 913, 1774, 948, 1509, 1022, 1750 y 130. El controlador de
disco implementa una política C-LOOK. Suponga que el disco puede realizar una búsqueda
a un cilindro adyacente en 1 ms, y que mover el brazo de un extremo del disco al otro demora
18 ms.
a) Calcule el número total de cilindros recorridos
b) La física elemental nos dice que un objeto sometido a una aceleración constante a recorre una distancia d en el tiempo t, donde estas variables están gobernadas por la
ecuación d = 12 at 2 . Entonces, mover el brazo a través de L pistas involucra acelerar el
brazo a una tasa constante a por la primera mitad del movimiento, y luego decelerar
el brazo a la misma tasa a por la segunda mitad del movimiento. La siguiente figura
ilustra la velocidad del brazo en función del tiempo.
Velocidad
Tiempo
Calcule el tiempo t necesario para recorrer L pistas en función de L y a.
c) En realidad, existen constantes de tiempo asociadas a vencer la inercia inicial del movimiento del brazo y a cambiar su dirección de movimiento. El modelo √
presentado en el
punto anterior puede ser mejorado. Por ejemplo, la ecuación t = x + y L es una buena
aproximación al tiempo t necesario para mover el brazo a través de L pistas. En base a
la información que Ud. conoce para el disco, calcule x e y.
d) En base a sus resultados para los puntos anteriores, calcule el tiempo total de búsqueda para la secuencia de solicitudes dada. Sugerencia: las partes c) y d) no requieren del
resultado de la parte b)
Solución
a) Del enunciado, el brazo lector se está moviendo hacia las pistas de número superior. El
algoritmo C-LOOK determina que el brazo viaja de la pista 143 a la pista 1774, luego
cambia su dirección de movimiento y visita la pista 86, para terminar en la pista 130.
Por lo tanto, recorre (1774 − 143) + (1774 − 86) + (130 − 86) = 3363 pistas.
30
b) Ya que el brazo se mueve a una aceleración y deceleración constantes,
q el tiempo neL
cesario para acelerar hasta la mitad del recorrido ( 2 pistas) será t1 = La , y el tiempo
q
necesario para desacelerar el brazo será también t2 = La . Entonces, el tiempo necesario
q
para recorrer L pistas es t1 + t2 = 2 La .
c) Del enunciado, sabemos que mover el brazo la distancia de 1 cilindro demora 1 ms, y
que recorrer 4999 pistas demora 18 ms. Eso nos da dos ecuaciones:
1 = x+y
√
18 = x + 4999y
Despejando para x e y, se obtiene x = 0,7561 e y = 0,2439
d) El tiempo total de búsqueda se calcula aplicando la ecuación obtenida en c) a las distancias entre las pistas visitadas por el brazo lector. La tabla 5.1 muestra los recorridos
del brazo, la distancia entre las pistas visitadas y el tiempo de búsqueda entre ellas,
√
calculado como tBusq = 0,7561 + 0,2439 y. De esta tabla, el tiempo total de búsqueda
es 40,42 ms.
Comienzo Final Distancia
143
913
948
1022
1470
1509
1750
1774
86
Total
913
948
1022
1470
1509
1750
1774
86
130
tBusq
770 7,52
35 2,20
74 2,85
448 5,92
39 2,28
241 4,54
24 1,95
1688 10,78
44 2,37
3363 40,42
Cuadro 5.1: Tiempo de búsqueda entre pistas
2. En un sistema computacional basado en memoria virtual se hacen mediciones de tiempo de
utilización de recursos, con los siguientes resultados:
Utilización de la CPU: 20 %
Utilización del disco: 97,7 %
Utilización de otros dispositivos de E/S: 5 %
Un compañero suyo propone una lista de posibles acciones a tomar para mejorar la utilización de la CPU. Para cada acción, indique su efecto sobre los parámetros anteriores.
31
a) Reemplazar la CPU por otra 2,5 veces más rápida
b) Instalar otra CPU idéntica en paralelo
c) Reemplazar el disco magnético por uno 2,5 veces más grande
d) Reemplazar el disco magnético por uno 2,5 veces más rápido
e) Reemplazar el disco magnético por una configuración RAID-0
f ) Reemplazar el disco magnético por una configuración RAID-1
g) Instalar más memoria RAM
h) Reducir el grado de multiprogramación
i) Configurar el sistema operativo para realizar paginación previa
j) Configurar el sistema operativo para aumentar el tamaño de la página
Solución
El sistema está hiperpaginando, es decir, pasa la mayor parte del tiempo esperando por el
disco, lo que indica que se ha sobreasignado la memoria física disponible. Reducir el número
de procesos presentes en memoria reducirá el número de faltas de página y mejorará la
utilización de la CPU. En forma alternativa, se puede mejorar el desempeño reemplazando
el disco magnético por un disco más rápido, o instalando más memoria RAM. La utilización
de los otros dispositivos de entrada/salida no se verá afectada. Entonces,
a) Reemplazar la CPU por una 2,5 veces más rápida
No afecta mayormente la utilización del disco. Puede reducir la utilización de la CPU.
b) Instalar otra CPU idéntica en paralelo
No afecta mayormente la utilización de la memoria ni del disco.
c) Reemplazar el disco magnético por uno 2,5 veces más grande
No afecta la utilización del disco.
d) Reemplazar el disco magnético por uno 2,5 veces más rápido
Instalar un disco más rápido permite servir páginas más rapidamente, aumentando
la tasa de transferencia a memoria. Esto aumenta la utilización de la CPU y puede
disminuir la utilización del disco.
e) Reemplazar el disco magnético por una configuración RAID-0
RAID 0 distribuye los datos a través de varios discos independientes. Esto es visto por
el sistema como un disco más rápido, por lo que aumenta la utilización de la CPU y
puede disminuir la utilización del disco.
f ) Reemplazar el disco magnético por una configuración RAID-1
RAID 1 mantiene dos copias de los datos, pero desde el punto de vista del sistema
aparece como un solo disco del mismo tamaño y aproximadamente el mismo tiempo
de acceso. Por ello, no afecta la utilización de la CPU.
32
g) Instalar más memoria RAM
Reduce la paginación, aumenta la utilización de la CPU y disminuye la utilización del
disco.
h) Reducir el grado de multiprogramación
Reduce la paginación, por lo que aumenta la utilización de la CPU y disminuye la
utilización del disco.
i) Configurar el sistema operativo para realizar paginación previa
Transfiere más páginas de disco a memoria en caso de una falta de página. Esto no
alivia al disco, e incrementa la utilización de la CPU sólo si las aplicaciones acceden
secuencialmente a memoria.
j) Configurar el sistema operativo para aumentar el tamaño de la página
Aumentar el tamaño de la página reduce el número de páginas residentes en memoria
y aumenta la hiperpaginación. Puede ser beneficioso sólo en caso que las aplicaciones
accedan secuencialmente a memoria, ya que reduce las faltas de página.
3. Considere un sistema de archivos que utiliza dos niveles de tablas para almacenar los bloques de disco asignados a un archivo. Suponga que el tamaño del bloque de este sistema de
archivos es de 512 bytes. Suponga además que el tamaño de una entrada en tabla es de 32
bits.
a) Cuál es el tamaño máximo de un archivo en este sistema de archivos?
b) Cuál es el espacio total ocupado en disco por un archivo de tamaño máximo?
c) Existe algún límite a la suma total del tamaño de todos los archivos en el sistema de
archivos?
Solución
a) Cada tabla tiene 512 bytes, es decir, almacena 128 entradas de 4 bytes cada una. Entonces, el tamaño máximo de un archivo es 128 × 128 × 512 = 8 MiB.
b) Además del espacio ocupado por los datos, se deben almacenar 1 + 128 tablas de 512
bytes cada una, que ocupan en total 129 × 512 = 64,5 KiB. Entonces, el espacio total
ocupado en disco por un archivo de tamaño máximo es 8 MiB + 64,5 KiB.
c) En este caso, la principal limitación al tamaño total del sistema de archivos está dado
por la representación del índice de un bloque en 4 bytes, es decir, 32 bits. Entonces, el
sistema de archivos puede almacenar a lo más 232 × 27 = 2 TiB de datos.
4. Suponga que Ud. tiene un disco magnético compuesto por 4 platos y 8 superficies de almacenamiento de datos, que rota a 12000 RPM. El disco está dividido en 3 zonas:
La zona externa posee 400 sectores por pista
La zona intermedia tiene 320 sectores por pista
La zona interna tiene 240 sectores por pista
33
Además, considere que un sector en disco almacena 512 bytes, que el tiempo para mover
la cabeza lectora de un cilindro a otro es de 3,2 ms, y que el tiempo de conmutación entre
pistas de un mismo cilindro es de 2,4 ms.
a) Calcule la tasa ideal de transferencia de datos para las 3 zonas del disco (no considere
los tiempos de conmutación entre pistas ni entre cilindros).
b) Calcule la tasa máxima de transferencia de datos para las 3 zonas del disco, considerando los tiempos de conmutación entre pistas y entre cilindros (suponga que se desea
transferir una gran cantidad de datos que abarca muchos cilindros).
c) Suponga que se desea transferir un archivo de datos de 1,5 MiB que está almacenado
en forma contigua en alguna parte del disco. Calcule la tasa mínima de transferencia
de datos para las tres zonas del disco, considerando los tiempos de conmutación entre
pistas y entre cilindros. (Pista: póngase en el peor caso posible)
Solución
El disco rota a 12000 RPM o 200 RPS. Es decir, realiza una rotación cada 5 ms. En la zona
externa, una pista almacena 200 KiB. En la zona intermedia, una pista almacena 160 KiB.
En la zona interna, una pista almacena 120 KiB.
a) En el caso ideal, las tasas de transferencia son:
Texterna
= 200 ∗ 200 KiB = 40000 KiB/s
Tintermedia = 200 ∗ 160 KiB = 32000 KiB/s
Tinterna
= 200 ∗ 120 KiB = 24000 KiB/s
b) Se consideran ahora los tiempos de conmutación entre pistas y entre cilindros. El mejor
caso a considerar es el acceso secuencial a una gran cantidad de datos que abarca muchos cilindros. Examinemos el tiempo necesario para leer completamente un cilindro.
Se requieren 8 revoluciones, mas 7 cambios de pista mas un cambio de cilindro. En ese
tiempo se transfieren 8 pistas de datos. Entonces, se tiene
Texterna
= (8 ∗ 200 KiB)/(5 ∗ 8 + 7 ∗ 2,4 + 3,2) ms = 26666 KiB/s
Tintermedia = (8 ∗ 160 KiB)/0,06s = 21333 KiB/s
Tinterna
= (8 ∗ 120 KiB)/0,06s = 16000 KiB/s
c) Un archivo secuencial de 1,5 MiB se almacena en 3000 sectores consecutivos. En caso
de almacenarse éste en la zona externa del disco, el archivo ocupará como mínimo 8
pistas, o, como máximo, 9. El peor caso, entonces, es si el primer sector del archivo
se almacena en el último sector de un cilindro y los 2999 sectores restantes ocupan 7
pistas y fracción del cilindro siguiente. Entonces, el tiempo total de lectura del archivo
secuencial es el tiempo necesario para leer 3000 sectores a 40000 KiB/s, que es 38,4
ms, mas el tiempo para cambiar de un cilindro a otro (3,2 ms) y 7 veces el tiempo de
conmutación (2,4 ms).
Para la zona intermedia, es fácil ver que 3000 sectores consecutivos ocupan 10 pistas o,
como máximo, 11. El peor caso nuevamente corresponde al primer sector del archivo
almacenado como el último sector de un cilindro, 2560 sectores se almacenan en el
cilindro siguiente y los 439 sectores finales se almacenan en las dos primeras pistas del
34
cilindro subsiguiente. Entonces, el tiempo total de lectura del archivo secuencial es el
tiempo necesario para leer 3000 sectores a 32000 KiB/s, que es 48 ms, mas dos veces el
tiempo para cambiar de un cilindro a otro (3,2 ms) y 8 veces el tiempo de conmutación
(2,4 ms).
Para la zona interna, se puede calcular que 3000 sectores consecutivos ocupan 13 pistas
o, como máximo, 14. El peor caso nuevamente corresponde al primer sector del archivo
almacenado como el último sector de un cilindro, 1920 sectores se almacenan en el
cilindro siguiente y los 1079 sectores finales se almacenan en las cinco primeras pistas
del cilindro subsiguiente. Entonces, el tiempo total de lectura del archivo secuencial
es el tiempo necesario para leer 3000 sectores a 24000 KiB/s, que es 64 ms, mas dos
veces el tiempo para cambiar de un cilindro a otro (3,2 ms) y 11 veces el tiempo de
conmutación (2,4 ms).
En resumen, las tasas de transferencias son
Texterna
= 1536 KiB/(38,4 + 7 ∗ 2,4 + 3,2) ms = 26199 KiB/s
Tintermedia = 1536 KiB/(48 + 8 ∗ 2,4 + 2 ∗ 3,2) ms = 20869 KiB/s
Tinterna
= 1536 KiB/(64 + 11 ∗ 2,4 + 2 ∗ 3,2) ms = 15867 KiB/s
5. Un sistema de almacenamiento magnético en disco recibe solicitudes de acceso a las siguientes pistas: 27, 129, 110, 186, 147, 41, 10, 64, 120. Supóngase que la cabeza del disco
está ubicada inicialmente sobre la pista 100 y se está moviendo hacia la pista 0. Analice el
tiempo medio de búsqueda para los algoritmos de planificación First-In First-Out (FIFO),
Shortest Seek Time First (SSTF), y SCAN.
6. El algoritmo de planificación de disco C-SCAN es una variante del algoritmo SCAN que recorre el disco atendiendo solicitudes en una sola dirección hasta un extremo del disco, para
luego reubicar la cabeza lectora al otro extremo del disco antes de continuar atendiendo solicitudes. Un sistema de almacenamiento magnético recibe solicitudes de acceso a las pistas
42, 23, 139, 89, 71, 2, 61 y 112. Inicialmente la cabeza lectora está en la pista 80, atendiendo
solicitudes mientras se mueve hacia las pistas de número superior. Suponga que el disco tiene 140 pistas en total, numeradas de 0 a 139, y que el movimiento de la cabeza entre pistas
contiguas demora 2 ms, mientras que mover la cabeza de un extremo a otro del disco demora 21 ms (Valores promedio para un disco Western Digital Caviar SE120). Usando estos
valores, calcule el tiempo medio de búsqueda para los algoritmos SCAN y C-SCAN.
7. El tiempo de transferencia total de datos desde un disco magnético depende de tres factores:
El tiempo de búsqueda de la pista
El tiempo de rotación del disco
El tiempo de transferencia de los datos
Supóngase que es necesario escribir k bytes a un disco duro de 7200 RPM que tiene 1000
pistas, y un tiempo de búsqueda de pista promedio de 6 ms. Para acelerar el desempeño
del sistema de disco, Ud. propone una estructura de tipo RAID-0, donde los datos serán
escritos en paralelo a dos discos magnéticos independientes de iguales características. Este
nuevo esquema puede ser visto como un solo disco magnético de mayor capacidad. En este
35
caso, cómo variarán los 3 factores del tiempo de transferencia total? Indique si los factores
aumentan o disminuyen, y porqué.
8. Considere la organización de un archivo en UNIX. Suponga que hay 12 punteros a bloques
directos almacenados en el nodo-i del archivo, además de punteros a tablas de primer, segundo, y tercer nivel, respectivamente. Suponga además que el tamaño del bloque en disco
es de 8 KiB, y que cada puntero a un bloque de disco ocupa 32 bits.
a) Cuál es el tamaño máximo de un archivo?
b) Cuál es el tamaño máximo de los metadatos del archivo?
9. Aumentar el tamaño del bloque de disco en un sistema de archivos tipo UNIX implica:
a) Disminuir la fragmentación interna
b) Aumentar la fragmentación externa
c) Disminuir el tamaño del bitmap de bloques libres
d) Disminuir el tamaño máximo posible para un archivo de texto
Explique su respuesta.
36
6 Miscelánea
1. El profesor le entrega a un estudiante dos cajas negras de idéntico aspecto. El profesor le
dice al estudiante que una de ellas es una fuente de corriente, y la otra una fuente de voltaje.
El estudiante inmediatamente identifica cuál es cuál. Cómo lo hizo?
2. A continuación encontrará una lista de medallistas olímpicos chilenos. Identifique la especialidad en la cual recibieron sus medallas.
a) Marlene Ahrens
b) Óscar Cristi
c) Ramón Tapia
d) Manuel Plaza
e) César Mendoza
3. Cuál es el siguiente número en la secuencia?
1
11
21
1211
111221
4. Este problema es un clásico:
Un estudiante universitario norteamericano que está de intercambio en la Universidad de
Concepción envía un mensaje a su padre pidiendo dinero. El mensaje dice:
SEND
+MORE
---MONEY
donde cada letra corresponde a un dígito diferente. Cuánto dinero necesita el estudiante?
5. Ud. tiene dos mechas, de 1 metro de largo cada una. Si enciende una mecha, ésta se consume en una hora exacta. Sin embargo, el cortarla por la mitad no genera dos mechas de 30
minutos cada una, pues la velocidad de consumo es no uniforme y desconocida.
Cómo usaría estas mechas para medir un período de 45 minutos?
37
6. Un grupo de peregrinos debe llevar un mensaje por el desierto desde Casablanca hasta Marrakech. El viaje demora 6 días, pero cada peregrino puede llevar agua y comida sólo para
4 días. Cuál es el número mínimo de peregrinos que deben dejar Casablanca para asegurar
que al menos uno de ellos llegará a Marrakech? Por supuesto que su solución no debe dejar
peregrinos muriéndose de hambre y sed en la mitad del desierto.
7. Los señores Fulano, Zutano y Mengano se odian a muerte. Deciden resolver sus diferencias
con un duelo a tres bandas, donde cada uno disparará una bala hacia alguno de los otros dos
por turnos, hasta que sólo quede uno vivo. El Sr. Fulano tiene mala puntería: acierta 1/3 de
las veces. El Sr. Zutano tiene mejor puntería: acierta 2/3 de las veces. El Sr. Mengano es un
as: siempre acierta sus disparos. En compensación, se acuerda que el orden de los disparos
será: Sr. Fulano, Sr. Zutano, Sr. Mengano.
Qué estrategia debe seguir el Sr. Fulano para maximizar sus chances de sobrevivir al duelo?
8. Hace unos pocos años, en Suecia decidieron cambiar el sentido de circulación de todo el
país: de manejar por la mano izquierda (como en Gran Bretaña y Japón), a manejar por
la mano derecha (como en todo el resto del mundo). Para definir cuándo hacer el cambio,
un grupo de ingenieros de transporte decidió estudiar las estadísticas de tránsito de los 5
años anteriores para determinar a qué día y hora el tránsito en todo el país era el mínimo.
Los ingenieros encontraron una cosa curiosa: si analizaban las 8760 horas del año, siempre
había una hora en el año en que no ocurrían accidentes automovilísticos. A qué se debe este
interesante fenómeno?
9. Todos los autos tienen uno. Algunos tienen 2. Unos pocos tienen 4. Ninguno tiene 3. Qué es?
38
Descargar