Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
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
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.