Você está na página 1de 6

CAPÍTULO 2

1. La transición de bloqueado al correr es concebible. Suponga que un proc-ess es


bloqueado en la entrada - salida y los fines de entrada - salida. Si la CPU es por
otra parte ociosa, el proceso podría ir directamente de bloqueado al correr. La
otra ausencia transi-tion, de listo a bloqueado, es imposible. Un proceso listo no
puede hacer la entrada - salida o algo más que podría bloquearlo. Sólo un
proceso de correr puede obstruirse.
2. Usted podría tener un registro que contiene una aguja de la entrada de mesa de
proceso corriente. Cuando la entrada - salida completó, la CPU almacenaría el
estado de máquina corriente
en la entrada de mesa de proceso corriente. Entonces esto iría al vector
interrumpir para el dispositivo que interrumpe y traería una aguja de otra
entrada de mesa de proceso (el procedimiento de servicio). Este proceso sería
arrancado entonces.
3. Generalmente, las lenguas de alto nivel no permiten a un la clase de acceso a la CPU
el hardware que es requerido. Por ejemplo, pueden requerir a un tratante interrumpir
permitir e incapacitar la revisión interrumpiré de un dispositivo particular, o a
manipu-datos tardíos dentro del área de pila de un proceso. También,
interrumpa las rutinas de servicio deben ejecutar tan rápidamente como posible.
4. Hay varios motivos de usar una pila separada para el grano. Dos de ellos son
como sigue. Primero, usted no quiere que el sistema operativo se estrelle porque un
programa de usuario mal escrito no tiene bastante espacio de pila en cuenta.
Segundo, si los datos de pila de hojas de grano en el espacio de memoria del
programa de usuario sobre la vuelta de una llamada de sistema, un usuario
malévolo podría ser capaz de usar estos datos
averiguar información sobre otros procesos.
5. Sería difícil, si no imposible, guardar el sistema de archivo consecuente.
Suponga que un proceso de cliente envía una petición al proceso de servidor 1
para actualizar un archivo. Este proceso actualiza la entrada de escondite en su
memoria. Dentro de poco a partir de entonces, otro proceso de cliente envía una
petición al servidor 2 para leer aquel archivo. El Unfor-tunately, si el archivo está
también cached allí, servidor 2, en su inocencia, devolverá datos obsoletos. Si
el primer proceso escribe el archivo por al disco después cach-ing ello, y servidor
2 controles el disco en cada leído para ver si su copia de cached es
actualizado, el sistema puede ser hecho para trabajar, pero es exactamente todo
éstos el disco tiene acceso a esto el sistema caching trata de evitar.
6. Cuando un hilo es parado, esto tiene valores en los registros. Ellos deben ser
salvados, como cuando el proceso es parado los registros deben ser salvados.
Los hilos de tiempo compartido son no diferentes que procesos de tiempo
compartido, entonces cada hilo necesita su propio registro salvar el área.
7. No Si un proceso del modo solo enhebrado es bloqueado en el teclado, esto no puede
bifurcarse.

8. Un hilo de trabajador se obstruirá cuando esto tiene que leer una Página Web
del disco. Si los hilos de nivel del usuario están siendo usados, esta acción
bloqueará el proceso entero, destruyendo el valor de multiensartamiento. Así es
esencial que los hilos de grano sean usados para permitir a algunos hilos
obstruirse sin afectar los demás.
9. Los hilos en un proceso cooperan. Ellos no son hostiles el uno al otro. Si la
producción - ing es necesaria para la bien de la aplicación, entonces un hilo
cederá. Después de todo, esto es por lo general el mismo programador que
escribe el código para todos ellos.
10. Los hilos de nivel del usuario no pueden ser adelantados por el reloj uless el
quántum del proceso entero ha sido consumido. Los hilos de nivel del grano
pueden ser adelantados aliado individu-. En el caso último, si un hilo corre
demasiado mucho tiempo , el reloj interrumpirá el proceso corriente y así
el hilo corriente. El grano es libre de escoger un dif-ferent hilo del mismo
proceso para correr después si esto así desea.
11. En el caso del modo solo enhebrado, los golpes de escondite toman 15 msec y escondite
que señoritas toman
90 msec. El promedio ponderado es 2 / 3 ´ 15 + 1 / 3 ´ 90. Así la petición
media toma 40 msec y el servidor puede hacer 25 por segundo. Para un mul-
tithreaded servidor, toda la espera del disco es traslapada, entonces cada
petición toma 15 msec, y el servidor puede manejar 66 peticiones de 2/3 por
segundo.
12. Sí. Si el servidor es completamente la CPU ligada, no hay ninguna necesidad de
tener hilos múltiples. Esto sólo añade la complejidad innecesaria. Como un
ejemplo, considere un número de ayuda de directorio de teléfono de tele-(como
555-1212) para un área con las 1 millón de personas. Si cada uno (nombre,
número de teléfono) el registro es, supongamos, 64 caracteres, la base de datos entera
toma 64 megabytes, y puede ser fácilmente guardada en la memoria del servidor
para proporcionar la consulta rápida.
13. Las agujas son realmente necesarias porque el tamaño de la variable global es
desconocido. Podría ser algo de un carácter a una serie de números de punto
flotante. Si el valor fuera almacenado, uno tendría que dar el tamaño para crear
3 global, que está bi en , pero que tipo debería el segundo parámetro
¿del juego 3 global ser, y qué el tipo debería el valor de 3 leídos globales ser?
14. Podría resultar que el sistema de tiempo de ejecución está exactamente en el
punto de bloqueo o desbloqueo de un hilo, y es la manipulación ocupada de las
colas de programación. Este sería un momento muy inoportuno para el reloj
interrumpen al tratante para comenzar a inspeccionar aquellas colas para ver si
esto era el tiempo para hacer la conmutación de hilo, ya que ellos podrían estar
en un estado inconsecuente. Una solución es poner una bandera cuando el tiempo
de ejecución - el sistema es entrado. El tratante de reloj vería este y pondría su
propia bandera,
entonces vuelta. Cuando el sistema de tiempo de ejecución terminó, esto
comprobaría la bandera de reloj, ver que un reloj interrumpa ocurrió, y ahora
dirigió al tratante de reloj.
15. Sí es posible, pero ineficaz. Un hilo que quiere hacer un sistema llama primeros
juegos un temporizador despertador, luego hace la llamada. Si la llamada se
obstruye, el control de vueltas de temporizador al paquete de hilos. Por
supuesto, la mayor parte del tiempo que la llamada no bloqueará, y el
temporizador tiene que ser limpiado. Así cada llamada de sistema que podría
obstruirse tiene que ser ejecutada como tres llamadas de sistema. Si los
temporizadores se marchan prematuramente,
todas las clases de problemas pueden desarrollarse. Este no es un modo atractivo
de construir un paquete de hilos.

16. El problema de inversión de prioridad ocurre cuando un proceso de prioridad


baja está en su región crítica y de repente un proceso prioritario se hace listo y
es programado. Si esto usa la espera ocupada, esto correrá para siempre. Con
hilos de nivel del usuario, no puede resultar que un hilo de prioridad baja sea de
repente adelantado para permitir un hilo prioritario dirigido. No hay ninguna
prioridad de compra. Con los hilos de nivel del grano este problema puede
levantarse.

17. Cada hilo llama procedimientos solo, entonces esto debe tener su propia pila
para las variables locales, direcciones de vuelta, etcétera. Este es igualmente
verdadero para hilos de nivel del usuario en cuanto a hilos de nivel del grano.

18. Una condición de raza es una situación en la cual dos (o más) los procesos están
a punto de realizar un poco de acción. Según el cronometraje exacto, un o el otro
va primero. Si uno de los procesos va primero, todo trabaja, pero si e l o t r o va
primero, un error fatal ocurre.

19. Sí. El ordenador simulado podría ser multiprogramado. Por ejemplo, mientras
el proceso A corre, esto lee en voz alta alguna variable compartida. Entonces un
simu-lated reloj hace tictac pasa y proceso B carreras. Esto también lee en voz
alta el mismo vari-capaz. Entonces esto añade 1 a la variable. Cuando tratan
unas carreras, si esto también añade el que
a la variable, tenemos una condición de raza.

20. Sí, esto todavía trabaja, pero esto todavía es la espera ocupada, por supuesto.

21. Esto seguramente trabaja con la programación de prioridad. De hecho, fue


diseñado para aquel caso. Cuando la programación es no prioridad, esto podría
fallar. Considere el caso en el cual la vuelta es al principio 0, pero proceso 1
carreras primero. Esto va a sólo el lazo para siempre - y nunca liberar la CPU.
22. Sí esto puede. La palabra de memoria es usada como una bandera, con 0 sentido que
nadie usa las variables críticas y 1 sentido que alguien los usa. A puesto
1 en el registro, y cambia la palabra de memoria y el registro. Si el registro
contiene 0 después de que el cambio, el acceso ha sido concedido. Si esto
contiene 1, el acceso ha sido negado. Cuando un proceso es hecho, esto
almacena a 0 en la bandera en memoria.

23. Para hacer una operación de semáforo, el sistema operativo primero incapacita interrumpe.
Entonces esto lee el valor del semáforo. Si esto hace un abajo y el sema-el phore
es igual al cero, esto pone el proceso de vocación a una lista de procesos
bloqueados asociados con el semáforo. Si esto hace un, esto debe comprobar
para ver si proceso es bloqueado en el semáforo. Si uno o varios procesos son
bloqueados, uno de entonces es quitado de la lista de procesos bloqueados y
hecho runnable. Cuando todas estas operaciones han sido completadas,
interrumpe puede ser permitido otra vez.
24. Asociado con cada semáforo que cuenta son dos semáforos binarios, M, usado
para la exclusión mutua, y B, usado para el bloqueo. También asociado con cada
semáforo que cuenta es un contador que sostiene el número de ups menos el
número de colinas, y una lista de procesos bloqueados en aquel semáforo. Poner
en práctica abajo , un proceso primeras ganancias acceso exclusivo a los
semáforos, contador, y lista por hacer un abajo en M. Ello entonces decrementos
el contador. Si ello
es el cero o más, esto sólo hace un en M y salidas. Si el M es negativo, el proc-
ess es puesto a la lista de procesos bloqueados. Entonces es hecho en el M y
abajo es hecho en B para bloquear el proceso. Para poner en práctica, el primer
M es derribado
para conseguir la exclusión mutua, y luego el contador es incrementado. Si es
más que el cero, n a d i e fue bloqueado, entonces todo que tiene que ser hecho
es a en lo alto del M. Si, sin embargo, el contador es negativo ahora o cero, un
poco de proceso debe ser quitado de la lista. Finalmente, es hecho en B y M en
aquella orden.
25. Si el programa funciona en fases y ningún proceso puede entrar en la siguiente
fase hasta que ambos sean terminados con la fase corriente, hace el sentido
perfecto de usar una barrera.

26. Con retorno al punto de origen que lo programa trabajos. Tarde o temprano el
L correrá, y aliado eventu-esto dejará su región crítica. El punto es, con la
programación de prioridad, L nunca consigue correr en absoluto; con el
retorno al punto de origen, esto consigue una rebanada de tiempo normal
periodi-cally, entonces esto tiene la posibilidad para dejar su región crítica.

27. Con hilos de grano, un hilo puede obstruirse en un semáforo y el grano puede
dirigir algún otro hilo en el mismo proceso. Por consiguiente, no hay ningún
problema usando semáforos. Con hilos de nivel del usuario, cuando bloques de
hilo en un semáforo, el grano piensa el proceso entero es bloqueado y no lo
dirige alguna vez otra vez. Por consiguiente, el proceso falla.
28. Es mu y c a r o poner en práctica. Cada vez cualquier variable que aparece en un
predicado en el cual un poco de proceso espera cambios, el sistema de tiempo de
ejecución debe
revalue el predicado para ver si el proceso puede ser desbloqueado. Con el
Hoare y monitores de Brinch Hansen, los procesos sólo pueden ser
despertados en un sig-nal primitivo.
29. Los empleados se comunican pasando mensajes: órdenes, comida, y bolsos en este
caso. En términos de UNIX, los cuatro procesos están relacionados por tubos.
30. Esto no conduce a competir con condiciones (nada es perdido alguna vez), pero
esto es la espera con eficacia ocupada.
31. Si un filósofo se obstruye, los vecinos pueden ver más tarde que él tiene hambre
comprobando su estado, en la prueba, entonces él puede ser despertado cuando
los tenedores están disponibles.
32. El cambio significaría que después de que un filósofo dejó de comer, ninguno
de sus vecinos podría ser elegido después. De hecho , ellos nunca serían
elegidos. El sorbo - postura que el filósofo 2 terminó de comer. Él dirigiría la
prueba para filósofos 1 y 3, y ninguno sería comenzado, aunque tanto tuvieran
hambre como ambos tenedores estaban disponibles. El Similary, si el filósofo 4
terminara de comer, filósofo 3 no sería comenzado. Nada le comenzaría.
33. Variación 1: los lectores tienen la prioridad. Ningún escritor puede comenzar
cuando un lector es activo. Cuando un nuevo lector aparece, esto puede
comenzar inmediatamente a menos que un escritor sea activo actualmente.
Cuando un escritor termina, si los lectores esperan, ellos son todos comenzados,
sin tener en cuenta la presencia de escritores que esperan. Variación 2: los
Escritores tienen la prioridad. Ningún lector puede comenzar cuando un escritor
espera. Cuando el último proceso activo termina, un escritor es comenzado, si
hay el que; por otra parte, todos los lectores (si alguno) son comenzados.
Variación 3: versión simétrica. Cuando un lector es activo, los nuevos lectores
pueden comenzar inmediatamente. Cuando un escritor termina, un nuevo
escritor tiene la prioridad, si uno espera. En otras palabras, una vez que hemos
comenzado a leer, seguimos leyendo hasta que no haya ningunos lectores
abandonados. Del mismo modo, una vez que hemos comenzado a escribir, a
todos los escritores pendientes les permiten correr.
34. Esto necesitará el segundo nT.
35. Si un proceso ocurre tiempos múltiples en la lista, esto conseguirá quántums
múltiples por ciclo. Este acercamiento podría ser usado para dar a procesos
más importantes una parte más grande de la CPU. Pero cuando el proceso se
obstruye, todas las entradas deberían ser quitadas de la lista de procesos de
runnable.
36. En casos simples puede ser posible determinar si la entrada - salida será restrictiva
mirando código fuente. Por ejemplo un programa que lee todos sus archivos
de entrada en parachoques en el principio no será probablemente la entrada -
salida ligada, pero un problema que lee y escribe incrementalmente a varios
archivos diferentes (como un com-piler) probablemente será la entrada - salida
ligada. Si el sistema operativo proporciona una instalación como el UNIX ps orden
que puede decirle la cantidad del tiempo de CPU usado
por un programa, usted puede comparar este con el tiempo total para completar la
ejecución de
el programa. Este es, por supuesto, el más significativo en un sistema donde
usted es el único usuario.
37. Para procesos múltiples en una tubería, el padre común podría pasar a la
información de sistema operativo sobre el flujo de datos. Con esta información el OS
podría determinar, por ejemplo, qué proceso podría suministrar la salida a un
proceso que se obstruye en una llamada a la entrada.

38. La eficacia de CPU es el tiempo de CPU útil dividido en el tiempo de CPU total.
Cuando Q ³ T, el ciclo básico es para el proceso para correr a T y someterse a
un interruptor de proceso para S. Así (a) (y b) tienen una eficacia d e T / (S + T).
Cuando el quántum es más corto que T, cada dirigido de T requerirá T / Q
interruptores de proceso, gastando un tiempo SAN / Q. La eficacia aquí es
entonces
33333T3333
T + SAN
/Q
que reduce a Q / (Q + S), que es la respuesta (a c). Para (d), nosotros sólo sub -
stitute Q para S y hallazgo que la eficacia es el 50 p or ci ent o . Finalmente, para
(e), como
Q ® 0 la eficacia va a 0.
39. El trabajo más corto primero es el modo de minimizar el tiempo de respuesta medio.
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.
40. Para el retorno al punto de origen, durante los 10 primeros minutos cada trabajo
consigue 1/5 de la CPU. Al f i n al de 10 minutos, C fines. Durante los 8 minutos
siguientes, cada trabajo se pone
1/4 de la CPU, después que tiempo D fines. Entonces cada uno de los tres
permanece - ing empleos consigue 1/3 de la CPU durante 6 minutos, hasta B
fines, etcétera. Los tiempos concluyentes para los cinco empleos son 10, 18, 24,
28, y 30, para un promedio de
22 minutos. Para la programación de prioridad, el B es dirigido primero. Después
de 6 minutos es terminado. Los otros empleos terminan en 14, 24, 26, y 30, para
un promedio de 18.8 minutos. Si los empleos corren en la orden un por E, ellos
terminan en 10, 16, 18, 22, y 30, para un promedio de 19.2 minutos. Finalmente,
el trabajo más corto primero cede tiempos concluyentes de 2, 6, 12, 20, y 30, para
un promedio de 14 minutos.
41. La primera vez esto consigue 1 quántum. Logrando carreras se pone 2, 4, 8, y 15, entonces
debe ser cambiado en 5 veces.
42. Un control podría ser hecho para ver si el programa esperaba la entrada e hizo algo
con ello. Un programa que no esperaba la entrada y no trató
esto no conseguiría ningún aumento de prioridad especial.
43. La secuencia de predicciones es 40, 30, 35, y ahora 25.
44. La fracción de la CPU usada es 35/50 + 20/100 + 10/200 + x/250. Para ser
schedulable, este debe ser menos de 1. Así el x debe ser menos de 12.5 msec.
45. La programación de dos niveles es necesaria cuando la memoria es demasiado
pequeña para sostener todos los procesos listos. Algún juego de ellos es puesto
en la memoria, y una opción es hecha de aquel juego. De vez en cuando, el juego
de procesos en corazón es ajustado. Este algoritmo es fácil para poner en
práctica y razonablemente eficiente, seguramente mu ch o mej o r que dicen, retorno al
punto de origen sin hacer caso de si un proceso estaba en la memoria o no.
46. El grano podría programar procesos por cualquier medio que esto desea, pero
dentro de cada proceso esto dirige hilos estrictamente en la orden de prioridad.
Dejando al proceso de usuario ponen la prioridad de sus propios hilos, el usuario
controla la política, pero el grano han-dles el mecanismo.
47. Una escritura de cáscara posible podría ser

¡si [! cuenta de números de-f; entonces resuene 0>


números; fi count=0
¡mientras (prueban $count! = 200)
hacer
la cuenta ='expr $count + 1 ‘
n = ‘tail los-1 números
expr $n + 1>> números
hechos

Dirija la escritura dos veces simultáneamente, comenzándolo una vez en el fondo


(utilización y) y otra vez en el primer plano. Entonces examine los números de
archivo. Esto comenzará probablemente el pareciendo a una lista ordenada de
números, pero en algún punto esto perderá su orden, debido a la condición de
raza creada dirigiendo dos copias de la escritura. La raza puede ser evitada
teniendo cada copia de la prueba de escritura para y puso una cerradura en el
archivo antes de entrar en el área crítica, y abrirlo para dejar el área crítica. Este
puede ser hecho como este:
si números ln numbers.lock
entonces
n = ‘tail los-1 números
expr $n + 1>> números rm
numbers.lock
fi

Esta versión saltará sólo una vuelta cuando el archivo es inaccesible, la variante
solu-tions podría poner el proceso para dormir, hacer la espera ocupada, o
contar sólo lazos en los cuales la operación es acertada.

Você também pode gostar