MODERNO SISTEMAS OPERATIVO S SEGUNDA EDICIÓN SOLUCIONES DE PROBLEMA ANDREW S. TANENBAUM Vrije Universiteit Amsterdam, los Países Bajos PRENTICE HALL RÍO DE SILLA SUPERIOR, NJ 07458 SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 1 1. Un sistema operativo debe proveer a los usuarios de un ampliado (es decir, virtual) máquina, y esto debe manejar los dispositivos de entrada - salida y otros recursos de sistema. 2. La multiprogramación es la conmutación rápida de la CPU entre procesos múltiples en la memoria. Esto comúnmente es usado para guardar la CPU ocupada mientras un o más procesos hacen la entrada - salida. 3. La bobinación de entrada es la técnica de lectura en empleos, por ejemplo, de naipes, en el disco, de modo que cuando los procesos que ejecutan actualmente son terminados, haya trabajo que espera la CPU. La bobinación de salida consiste en primeros archivos imprimibles que copian al disco antes de imprimirlos, más bien que imprimir directamente cuando la salida es generada. La bobinación de entrada en un ordenador personal no es muy probable, pero la bobinación de salida es. 4. La razón principal de la multiprogramación es dar la CPU algo para hacer esperando entrada - salida a completar. Si no hay ningún DMA, la CPU es totalmente occu-de varios colores haciendo la entrada - salida, así no hay nada para ser ganado (al menos en términos de CPU utili-zation) multiprogramando. No importa cuanto entrada - salida un programa hace, la CPU estará el 100 por ciento ocupada. Este por supuesto asume que la tardanza principal es esperar mientras los datos son copiados. Una CPU podría hacer otro trabajo si la entrada - salida fuera lenta por otros motivos (llegando en una línea consecutiva, por ejemplo). 5. Los segundos ordenadores de generación no tenían el hardware necesario para proteger el sistema operativo de programas de usuario malévolos. 6. Está todavía vivo. Por eje mplo , Intel hace el Pentium I, II, e III, y 4 CPUs con una variedad de propiedades diferentes incluso consumo de poder y velocidad. Todas estas máquinas son arquitectónicamente compatibles. Ellos se diferencian sólo en precio e interpretación, que es la esencia de la idea de familia. 7. 25 ´80 carácter pantalla de texto monocroma requieren un parachoques de 2000 bytes. El 1024 ´768 mapa de bit de color de 24 trozos de pixel requieren 2,359,296 bytes. En 1980 estas dos opciones habrían costado 10 dólares y 11,520 dólares, respectivamente. Para precios corrientes, compruebe en cuanta RAM actualmente cuesta, probablemente menos que 1 $/MB. 8. Las opciones (a), (c), (y d) deberían ser restringidas al modo de grano. 9. Los sistemas de ordenador personal son siempre interactivos, a menudo con sólo un usuario solo. Los sistemas de ordenador central casi siempre enfatizan la hornada o el tiempo compartido con muchos usuarios. La protección es mucho más de una cuestión en sistemas de ordenador central, como es el uso eficiente de todos los recursos. 10. Cada nanosegundo una instrucción surge de la tubería. Este significa que la máquina ejecuta 1 mil millones de instrucciones por segundo. Esto no importa en todos cuántos las etapas la tubería tienen. Una tubería de 10 etapas con 1 nsec por la etapa también ejecutaría 1 mil millones de instrucciones por segundo. Todo que importa es con que frecuencia unas instrucciones terminadas hacen reventar el final de la tubería. 11. El manuscrito contiene 80 ´50 ´700 = 2.8 millones de caracteres. Este es, por supuesto, imposible de caber en los registros de cualquier CPU actualmente disponible y es demasiado grande para un escondite de 1 MB, pero si tal hardware estuviera disponible, el manuscrito podría ser explorado en 2.8 msec de los registros o 5.8 msec del escondite. Hay aproximadamente 2700 bloques de 1024 bytes de datos, entonces la exploración - ning del disco requeriría aproximadamente 27 segundos, y de la cinta 2 minutos 7 segundos. Por supuesto, estos tiempos deben leer sólo los datos. El procesamiento y volver a escribir los datos aumentaría el tiempo. 12. Lógicamente, esto no importa si el registro de límite usa una dirección virtual o una dirección física. Sin embargo, la interpretación del antiguo es mejor. Si las direcciones virtuales son usadas, la adición de la dirección virtual y el registro bajo puede comenzar simultáneamente con la comparación y luego puede correr en la paralela. Si las direcciones físicas son usadas, la comparación no puede comenzar hasta que la adición sea completa, aumentando el tiempo de acceso. 13. Tal vez. Si el visitante recupera el control e inmediatamente superpone los datos, cuando escribir finalmente ocurre, los datos incorrectos serán escritos. Sin embargo, si el conductor primeras copias los datos a un parachoques privado antes de devolver, entonces al visitante pueden permitirle seguir inmediatamente. Otra posibilidad es permitir que el visitante siga y le dé una señal cuando el parachoques puede ser reutilizado, pero este es complicado y susceptible de errores. 14. Una trampa es causada por el programa y es sincrónica con ello. Si el programa es dirigido una y otra vez, la trampa siempre ocurrirá en exactamente la misma posición en la corriente de instrucción. Interrumpir es causado por un acontecimiento externo y su cronometraje no es reproductivo. 15. Base = 40,000 y límite = 10,000. Una respuesta de límite = 50,000 es incorrecta para el modo que el sistema fue descrito en este libro. Esto podría haber sido imple-mented aquel camino, pero haciendo tan habría requerido la espera hasta la dirección + el cálculo bajo fue completado antes de comenzar el control de límite, así reducir la marcha - ing abajo el ordenador. 16. La mesa de proceso es necesaria para almacenar el estado de un proceso que es suspendido actualmente, listo o bloqueado. No es necesario en un proceso solo sys-tem porque el proceso solo nunca es suspendido. 17. El montaje de un sistema de archivo hace cualquier archivo ya en el directorio de punto de montaje inaccesible, entonces los puntos de montaje son normalmente vacíos. Sin embargo, un administrador de sistema podría querer copiar algunos archivos má s i mp or t a nt e s normalmente localizados en el directorio montado al punto de montaje entonces ellos podrían ser encontrados en su camino normal en una emergencia cuando el dispositivo montado estaba siendo comprobado o reparado. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 3 3 18. El tenedor puede fallar si no hay ningunas ranuras libres dejadas en la mesa de proceso (y posiblemente si no hay ningún espacio de cambio o memoria dejado). El Exec puede fallar si el nombre de archivo dado no existe o no es un archivo ejecutable válido. Desate puede fallar si el archivo para ser desatado no existe o el proceso de vocación no tiene las autoridades para desatarlo. 19. Si la llamada falla, p or e j e mpl o porque fd es incorrecto, esto puede devolver -1. Esto también puede fallar porque el disco es lleno y no es posible escribir el número de bytes solicitados. En una terminación correcta, esto siempre devuelve nbytes. 20. Esto contiene los bytes: 1, 5, 9, 2. 21. Obstrúyase los archivos especiales consisten en bloques numerados, cada uno de los cuales puede ser leído o escrito independientemente de todos los otros. Es posible buscar a cualquier bloque y comenzar a leer o escribir. Este no es posible con el carácter archivos especiales. 22. Las llamadas de sistema realmente no tienen nombres, ade má s de en un sentido de documentación. Cuando el procedimiento de biblioteca leyó trampas al grano, esto pone el número de la llamada de sistema en un registro o en la pila. Este número está acostumbrado al índice en una mesa. No hay realmente ningún nombre usado en ninguna parte. Por otra parte , el nombre de la biblioteca el procedimiento es muyimportante, ya que es lo que aparece en el programa. 23. Sí esto puede, sobre todo si el grano es un sistema que pasa mensaje. 24. Por lo que la lógica de programa está preocupada esto no importa si una llamada a un procedimiento de biblioteca causa una llamada de sistema. Pero si la interpretación es una cuestión, si una tarea puede ser llevada a cabo sin una llamada de sistema el programa correrá más rápido. Cada llamada de sistema implica el tiempo elevado en la conmutación del contexto de usuario al contexto de grano. Además, en un sistema multiusuario el funcionamiento sys-tem puede programar otro proceso para correr cuando una llamada de sistema completa, adelante reduciendo la marcha del progreso en tiempo real de un proceso de vocación. 25. Varias llamadas de UNIX no tienen a ningún homólogo en el Win32 API: Eslabón: un programa Win32 no puede referirse a un archivo por un nombre alterno o verlo en más de un directorio. También, el intento de crear un eslabón es un camino conveniente probar para y crear una cerradura en un archivo. Montaje y umount: un programa de Windows no puede hacer asunciones sobre nombres de camino estándares porque en sistemas c o n u n i d a d e s d e d i s c o múltiples la parte de nombre de paseo del camino puede ser diferente. Chmod: los programadores de Windows tienen que asumir que cada usuario puede tener acceso a cada archivo. Matanza: los programadores de Windows no pueden matar un programa de mal comportamiento que no coopera. 26. Las conversiones son francas: (a) Un año micro es 10-6 ´365 ´24 ´3600 31.536 segundos =. (b) 1000 metros o 1 kilómetro. (c) Hay 240 bytes, que es 1,099,511,627,776 bytes. (d) Ello es 6 1024 kg ´. SOLUCIONES CON PROBLEMAS DEL 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 multithreaded 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 es tá 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. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 7 3 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 process 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. 8 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 2 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 he c ho , 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, a unque 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 SOLUCIONES DE PROBLEMA PARA CAPÍTULO 9 3 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 e l 5 0 p or c i e nt 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 na l 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 10 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 2 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 c ho me j 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. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 3 1. En los Estados Unidos, considere una elección presidencial en la cual tres o más candidatos a s p i r a n al nombramiento de algún partido. Después de todas las elecciones primarias SOLUCIONES DE PROBLEMA PARA CAPÍTULO 3 11 son terminados, cuando los delegados l l e g a n a la convención de partido, esto podría la pluma hap-que ningún candidato tiene una mayoría y que ningún delegado quiere cambiar su voto. Este es un punto muerto. Cada candidato tiene algunos recursos (votos), pero tiene que más hacer el trabajo. En países con partidos de cal politi-múltiples en el parlamento, podría resultar que cada partido apoya un dif-ferent la versión del presupuesto anual y que es imposible reunir una mayoría para pasar el presupuesto. Este es también un punto muerto. 2. Si la impresora comienza a imprimir un archivo antes de que el archivo entero haya sido recibido (este a menudo es permitido a la respuesta de velocidad), el disco puede llenarse de otras peticiones que no pueden ser imprimidas hasta que el primer archivo sea hecho, pero que consumen el espacio de disco necesario recibir el archivo actualmente imprimido. Si el programa de impresión no comienza a imprimir un archivo hasta el archivo entero ha sido spooled esto puede rechazar una petición que es demasiado grande. El comienzo a imprimir un archivo es equivalente a reservar la impresora; si el reserva-tion es aplazado hasta que se conozca que el archivo entero puede ser recibido, un punto muerto del sistema entero puede ser evitado. El usuario con el archivo que no cabrá todavía es estancado por supuesto, y debe ir a otra instalación que por - mits imprenta de archivos más grandes. 3. La impresora es nonpreemptable; el sistema no puede comenzar a imprimir otro trabajo hasta que el anterior sea completo. El disco de carrete es preemptable; usted puede suprimir un archivo incompleto que se pone d e ma s i a d o g r a n d e y hacer que el usuario lo envíe más tarde, asumiendo que el protocolo permite esto 4. Sí. No hace ninguna diferencia en absoluto. 5. Sí, los gráficos ilegales existen. Declaramos que un recurso sólo puede ser sostenido por un proceso solo. Un arco de un cuadrado de recurso a un círculo de proceso indica que el proceso posee el recurso. Así un cuadrado con arcos que van de ello a dos o más procesos significa que todos aquellos procesos sostienen el recurso, que viola las reglas. Por consiguiente, cualquier gráfico en el cual arcos múltiples dejan un cuadrado y final en círculos diferentes viola las reglas. Los arcos de cuadrados a cuadrados o de círculos a círculos también violan las reglas. 6. Una parte de todos tales recursos podría ser reservada para el uso sólo por procesos poseídos por el administrador, entonces él o ella siempre podrían dirigir una cáscara y pro - los gramos tenían que evaluar un punto muerto y tomar decisiones sobre cual procesos matar para hacer el sistema utilizable otra vez. 7. Ningún cambio conduce a llegar a un punto muerto. No hay ninguna circular esperan en el uno o el otro caso. 8. El abandono voluntario de un recurso es el más similar a la recuperación por la prioridad de compra. La diferencia esencial es que no se espera que procesos de ordenador solucionen tales problemas solos. La prioridad de compra es análoga al operador o el sistema operativo que interpreta cuando un policía, anulando los procesos de individuo de reglas normales obedece. 9. El proceso pide más recursos que el sistema tiene. No hay ningún camino concebible que esto puede conseguir estos recursos, entonces esto nunca puede terminar, a un si ningunos otros procesos quieren algún recurso en absoluto. 10. Si el sistema tuviera dos o más CPUs, dos o más procesos podrían correr en la paralela, conduciendo a trayectorias diagonales. 11. Sí. Haga todo el asunto en tres dimensiones. El z-eje mide el número de instrucciones ejecutadas por el tercer proceso. 12. El método sólo puede s e r u s a d o para dirigir la programación si el instante exacto en el cual un recurso va a ser reclamado es conocido de antemano. En la práctica, este es raramente el caso. 13. Una petición de D es insegura, pero un de C es seguro. 14. Hay estados que no son, ni caja fuerte, ni estancado, pero que conducen a estados estancados. Como un ejemplo, suponga que tenemos cuatro recursos: cintas, trazadores, exploradores, y CD-ROM, como en el texto, y tres procesos compet-ing para ellos. Podríamos tener la situación siguiente: Tiene Necesidades Disponibl A: 2 0 0 0 1020 0e 1 2 1 B: 1 0 0 0 0131 C: 0 1 2 1 1010 Este estado no es estancado porque muchas acciones todavía pueden ocurrir, para el examenple, Una lata todavía consigue dos impresoras. Sin embargo, si cada proceso pide para su permanecer - ing exigencias, tenemos un punto muerto. 15. El sistema es el punto muerto libre. Suponga que cada proceso tiene un recurso. Hay un recurso libre. El uno o el otro proceso puede pedirlo y conseguirlo, en cuyo caso esto puede terminar y liberar ambos recursos. Por consiguiente el punto muerto es imposible. 16. Si un proceso tiene el m recursos esto puede terminar y no puede estar implicado en un punto muerto. Por lo tanto, el caso peor es donde cada proceso tiene el m -1 recursos y necesita el otro. Si hay un recurso dejado terminado, un proc-ess puede terminar y liberar todos sus recursos, dejando al fin de resto también. Allí - delantero la condición para evitar punto muerto es r ³p (m -1) +1. 17. El no D todavía puede terminar. Cuando esto termina, esto devuelve bastantes recursos de permitir E (o A) para terminar, etcétera. 18. Con tres procesos, cada uno puede tener dos paseos. Con cuatro procesos, la distribución de paseos será (2, 2, 1, 1), permitiendo a los dos primeros procesos terminar. Con cinco procesos, la distribución será (2, 1, 1, 1, 1), que todavía permite que el primer termine. Con seis, cada posesión de una cinta conduce y quiere - ing el otro, tenemos un punto muerto. Así para n <6 el sistema es sin punto muerto. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 13 11 19. La comparación de una fila en la matriz al vector de recursos disponibles toma el m operaciones. Este paso debe ser repetido en la orden de tiempos n de encontrar un proc-ess que puede terminar y ser marcar como hecho. Así la marca de un proceso como hecho toma pasos de mn o la orden. La repetición del algoritmo para todos los procesos de n significa que el número de pasos es entonces mn 2. 20. Las necesidades matix son como sigue: 01002 02100 10300 00111 Si x es 0, tenemos un punto muerto inmediatamente. Si x es 1, el proceso D puede correr a la finalización. Cuando es terminado, el vector disponible es 1 1 2 2 1. Unfor-tunately somos estancados ahora. Si x es 2, después de que D carreras, el vector disponible es 1 1 3 2 1 y C puede correr. Después de que esto termina y devuelve sus recursos el provecho - el vector capaz es 2 2 3 3 1, que permitirá que B dirija y complete, y luego un para dirigir y complete. Por lo tanto, el valor más pequeño de x que evita un punto muerto es 2. 21. Sí. Suponga que todas las cajas son vacías. Ahora A envía a B y espera una respuesta, el B envía a C y espera una respuesta, y C envía a A y espera una respuesta. Todas las condiciones para el punto muerto son realizadas ahora. 22. Suponga que tratan unas peticiones los archivos en la orden a, b, c. Si el proceso B también pide un primer, uno de ellos se pondrá esto y el otro se obstruirán. Esta situación es siempre el punto muerto libre ya que el ganador puede correr ahora a la finalización sin la interferencia. De las otras cuatro combinaciones, unos pueden conducir a llegar a un punto muerto y unos son el punto muerto libre. Los seis casos son como sigue: un b c llegue a un punto muerto liberan un cb punto muerto libre b un c punto muerto posible b c un punto muerto posible c un b punto muerto posible c b un punto muerto posible Ya que cuatro de los seis pueden conducir a llegar a un punto muerto, hay una posibilidad de 1/3 de evitar un punto muerto y una posibilidad de 2/3 de conseguir el que. 23. El cierre de dos fases elimina puntos muertos, pero introduce el hambre potencial. Un proceso tiene que seguir intentando y dejar de adquirir todos sus archivos. No hay superior ligado en cuanto esto puede tomar. 24. Evitar circular esperan, numeran los recursos (las cuentas) con sus números de cuenta. Después de leer una línea de entrada, un proceso cierra con llave el inferior y numerado 14 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 3 considere primero, luego cuando esto consigue la cerradura (que puede implicar la espera), esto cierra con llave el otro. Ya que ningún proceso alguna vez espera una cuenta más abajo que lo que esto ya tiene, hay nunca una circular no esperan, de ahí nunca un punto muerto. 25. Cambie la semántica de solicitar un nuevo recurso c o m o s i g u e . Si un proceso pide un nuevo recurso y está disponible, esto consigue el recurso y se conserva que esto ya tiene. Si el nuevo recurso no está disponible, todos los recursos existentes son liberados. Con este guión, el punto muerto es imposible y no hay ningún peligro que el nuevo recurso es adquirido pero los existentes perdidos. Por supuesto, el proc-ess sólo trabaja liberando un recurso es posible (usted puede liberar un explorador entre páginas o un registrador de CD entre CDs). 26. Yo le daría un F grado (que falla). ¿Qué hace el proceso? Ya que esto claramente necesita el recurso, esto sólo pregunta otra vez y se obstruye otra vez. Este no es mejor que la permanencia bloqueado. De hecho, puede ser peor ya que el sistema puede guardar la pista de cuanto los procesos competidores han estado esperando y adjudican un recurso recién liberado al proceso que ha estado esperando el más largo. Por periódicamente finalizando e intentando otra vez, un proceso pierde su precedencia. 27. Si ambos programas piden el Altavoz para sonidos bajos primero, los ordenadores pasarán hambre con el final - menos secuencia: solicite el Altavoz para sonidos bajos, anule la petición, solicite el Altavoz para sonidos bajos, anule la petición, etc. Si uno de ellos pide la perrera y el otro pide el perro, tenemos un punto muerto, que es descubierto por ambos partidos y luego roto, pero es repetido sólo en el siguiente ciclo. El camino, si ambos ordenadores han sido programados para ir después del perro o la perrera primero, hambre o punto muerto sigue. No hay realmente mucha diferencia entre los dos aquí. En la mayor parte de problemas de punto muerto, el hambre no parece seria porque intro-ducing tardanzas arbitrarias lo hará por lo general muy con poca probabilidad. Aquel acercamiento no trabaja aquí. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 4 1. La posibilidad que cuatro procesos sean ociosos es 1/16, entonces la CPU tiempo ocioso es 1/16. 2. Si cada trabajo hace que la entrada - salida del 50 % espere, entonces esto tomará 20 minutos para completar en ausencia del concurso. De ser dirigido secuencialmente, el segundo terminará 40 minutos después de las primeras ventajas de. Con dos empleos, la CPU aproximada utiliza-tion es 1 - 0.52. Así cada uno consigue 0.375 minuto de CPU por minuto de tiempo real. Para acumular 10 minutos del tiempo de CPU, un trabajo debe correr a 10/0.375 minutos o aproximadamente 26.67 minutos. Así dirigiendo secuencialmente el fin de empleos después de 40 minutos, pero dirigiendo en la paralela ellos terminan después de 26.67 minutos. 3. Casi la memoria entera tiene que ser copiada, que requiere que cada palabra sea leída y luego vuelto a escribir en una posición diferente. La lectura de 4 bytes toma 10 nsec, la tan lectura d e 1 b yt e toma 2.5 nsec y escritura que esto toma otros 2.5 nsec, para un total de 5 nsec por byte comprimido. Este es un precio de 200, 000, 000 de b yt e s / s e gundos . Para copiar 128 MB (227 bytes , que es aproximada me nte 1.34 108 bytes ´), el ordenador necesita 227 / 200, 000, 000 segundos, que es aproximadamente 671 msec. Este número es ligeramente pesimista porque si el agujero inicial en el fondo de la memoria es bytes k, aquellos bytes k no tienen que ser copiados. Sin embargo, si hay muchos agujeros y muchos segmentos de datos, los agujeros serán pequeños entonces el k será pequeño y el error en el cálculo también será pequeño. 4. El mapa de bit necesita 1 trozo por unidad de asignación. Con 227 unidades de asignación/n, este es 224/ n bytes. La lista unida tiene 227 / 216 o 211 nodos, cada uno de 8 bytes para un total de 214 bytes . Para pequeño n, la lista unida es mejor. Para n grande, el trozo - el mapa es mejor. El punto de transición puede ser calculado comparando estas dos fórmulas y solucionando para n. El resultado es 1 KILOBYTE. Para n más pequeño que 1 KILOBYTE, una lista unida es mejor. Para n más grande que 1 KILOBYTE, un mapa de bit es mejor. Por supuesto, la asunción de segmentos y agujeros que alternan cada 64 KILOBYTES es muy poco realista. También, necesitamos n <= 64 KILOBYTES si los segmentos y los agujeros son 64 KILOBYTES. 5. Primero adecuado toma 20 KILOBYTES, 10 KILOBYTES, 18 KILOBYTES. Mejor adecuado toma 12 KILOBYTES, 10 KILOBYTES, Y 9 KILOBYTES. Peor adecuado toma 20 KILOBYTES, 18 KILOBYTES, Y 15 KILOBYTES. Después adecuado toma 20 KILOBYTES, 18 KILOBYTES, y 9 KILOBYTE. 6. La verdadera memoria usa direcciones físicas. Éstos son los números que los chips de memoria reaccionan a en el autobús. Las direcciones virtuales son las direcciones lógicas que se refieren al espacio de dirección de un proceso. Así una máquina con una palabra 16 bites puede generar direcciones virtuales hasta 64 kilobyt e , sin tener en cuenta si la máquina tiene más o menos la memoria que 64 KILOBYTES. 7. Ya que una página de 4 KILOBYTES ponen la talla el (página, compensan) los pares son (4, 3616), (8, 0), (y 14, 2656). Ya que una página de 8 KILOBYTES ponen la talla ellos son (2, 3616), (4, 0), (7, 2656). 8. (a) 8212 (b) 4100 (c) 24684 9. Ellos construyeron un MMU y lo insertaron entre los 8086 y el autobús. Así todos 8086 direcciones físicas entraron en el MMU como direcciones virtuales. El MMU entonces trazado un mapa ellos en direcciones físicas, que fueron al autobús. 10. El espacio de dirección virtual total para todos los procesos combinados es nv entonces este mucho almacenaje es necesario para páginas. Sin embargo una cantidad r puede estar en la RAM, entonces la cantidad del almacenaje de disco requerido es sólo nv -r. Esta cantidad es mu c h o má s q u e es necesario alguna vez en la práctica porque raramente estará allí procesos de n actu-correr de aliado y aún más raramente van a todos ellos necesitar que el máximo permitiera la memoria virtual. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 5 11 11. Una falta de página cada instrucciones k añaden un suplementario arriba d e n / k msec al promedio, entonces la instrucción media toma 10 + n / k nsec. 12. La mesa de página contiene 232 / 213 entradas, que es 524,288. La carga de la mesa de página toma 52 msec. Si un proceso consigue 100 msec, este consiste en 52 msec para cargar la mesa de página y 48 msec para el correr. Así el 52 por ciento del tiempo es gastado cargando mesas de página. 13. Veinte trozos son usados para los números de página virtuales, dejando 12 para la compensación. Este cede una página de 4 KILOBYTES. Veinte trozos para la página virtual implican 220 páginas. 14. El número de páginas depende del número total de trozos en a, b, y c com-bined. Como ellos son partidos entre los campos no importa. 15. Para una mesa de página en un nivel, hay 232 / 212 o 1M páginas necesarias. Así la mesa de página debe tener 1M entradas. Para la paginación de dos niveles, la mesa de página principal tiene entradas de 1 kilobyte, cada uno de las cuales señala a una segunda mesa de página. Sólo dos de éstos son usados. Así en total las entradas de mesa sólo de tres páginas son necesarias, un en la mesa de alto nivel y un en cada una de las mesas de nivel inferior. 16. La cuerda de referencia y código es como sigue CARGUE 6144, R0 (D) EMPUJAN R0 (D) LLAMAN 5120 (D) JEQ 5152 1 (I), 12 2 (I), 15 2 (I), 15 10 (I) El código (I) indica una referencia de instrucción, mientras que (D) indica una referencia de datos. 17. El tiempo de instrucción eficaz es 1r +5 (1 -h), donde h es el precio de golpe. Si comparamos esta fórmula con 2 y solucionamos para h, encontramos que h debe ser al menos 0.75. 18. El trozo de R nunca no es necesario en el TLB. La mera presencia de una página allí significa que la página ha sido referida; por otra parte no estaría allí. Así el trozo es completamente redundante. Cuando la entrada es c ont es t a da a la memoria, sin embargo, el trozo de R en la mesa de página de memoria es puesto. 19. Una memoria asociativa esencialmente compara una llave a los contenido de registros múltiples simultáneamente. Para cada registro debe haber un juego de comparators que comparan cada trozo en los contenido de registro a la llave b u s c a d a para. El número de puertas (o transistores) tenía que poner en práctica tal dispositivo es una función lineal del número de registros, la tan ampliación del diseño se hace cara en línea recta. 20. Con páginas de 8 KILOBYTES y un espacio de dirección virtual de 48 trozos, el número de páginas virtuales es 248 / 213, que es 235 (aproximadamente 34 mil millones). 21. La memoria principal tiene 228 / 213 = 32,768 páginas. Una mesa de picadillo de 32 kilobyte tendrá una longitud de cadena media de 1. Para ponernos bajo 1, tenemos que ir al siguiente tamaño, SOLUCIONES DE PROBLEMA PARA CAPÍTULO 17 11 65,536 entradas. La extensión de 32,768 entradas sobre unas 65,536 ranuras de mesa dará una longitud de cadena media de 0.5, que asegura la consulta rápida. 22. Este no es probablemente posible e xce pto el extraño y no caso muy útil de un programa cuyo curso de la ejecución es completamente previsible en compila-tion el tiempo. Si un compilador colecciona la información sobre las posiciones en el código de llamadas a procedimientos, esta información podría ser usada en el tiempo de eslabón para reajustar el código de objeto entonces los procedimientos estuvieron localizados ce rca del código que los llama. Este lo haría más probablemente que un procedimiento sería en la misma página como el código que llama. Por supuesto este no ayudaría mucho para procedimientos llamados de muchos sitios en el programa. 23. Los marcos de página para el FIFO son como sigue: x017 2333300 xx01 7222233 x x x 0 1777722 xxxx 0111177 Los marcos de página para LRU son como sigue: x017 2327103 xx01 7232710 x x x 0 1773271 xxxx 0111327 El FIFO cede faltas de 6 páginas; el LRU cede 7. 24. La primera página con 0 trozos será elegida, en este caso D. 25. Los mostradores son La página 0: 0110110 La página 1: 01001001 La página 2: 00110111 La página 3: 10001011 26. La primera página con R = 0 y edad> tserá elegida. Desde las ventajas de exploración en el fondo, la primera página (1620) es desalojada. 27. La edad de la página es 2204 -1213 = 991. Si t = 400, es definitivamente fue ra del juego de funcionamiento y no fue referido recientemente así será desalojado. El t =1000 la situación es diferente. Ahora las caídas de página dentro del funcionamiento se ponen (apenas), entonces no es quitado. 28. Buscar más la latencia rotatoria es 20 msec. Para páginas de 2 KILOBYTES, el tiempo de transferencia es 1.25 msec, para un total de 21.25 msec. La carga de 32 de estas páginas tomará 680 msec. Para páginas de 4 KILOBYTES, el tiempo de transferencia es doblado a 2.5 msec, entonces el tiempo total por página es 22.50 msec. La carga de 16 de estas páginas toma 360 msec. 29. El NRU quita la página 2. El FIFO quita la página 3. El LRU quita la página 1. La segunda posibilidad quita la página 2. 30. El PDP-1 paginación del tambor tenía la ventaja de ninguna latencia rotatoria. Esta media rotación salvada cada vez memoria fue escrito al tambor. 18 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 4 31. El texto es o c h o p á g i n a s , los datos son c i n c o p á g i n a s , y la pila es c u a t r o páginas. El programa no cabe porque esto necesita 17 páginas de 4096 bytes. Con una página de 512-bytes, la situación es diferente. Aquí el texto es 64 páginas, los datos son 33 páginas, y la pila es 31 páginas, para un total de 128 páginas de 512 bytes, que cabe. Con el pequeño tamaño de página está bien, pero no con el grande. 32. Si las páginas pueden ser compartidas, sí. Por eje mplo , si dos usuarios de un tiempo compartido sys-tem dirigen al mismo redactor al mismo tiempo y el texto de programa es compartido más bien que copiado, algunas de aquellas páginas pueden estar en el juego trabajador de cada usuario al mismo tiempo. 33. Es posible. Asumiendo que la segmentación no está presente, la protección infor-mation debe estar en la mesa de página. Si cada proceso tiene su propia mesa de página, cada uno también tiene sus propios trozos de protección. Ellos podrían ser diferentes. 34. El programa consigue faltas de 15,000 páginas, cada uno de las cuales usa 2 msec del tiempo de procesamiento suplementario. Juntos, la falta de página arriba es 30 segundos. Este significa aquel d e 6 0 s e g u n d o s usados, la mitad fue gastada en la falta de página arriba, y mitad en el correr del programa. Si dirigimos el programa con dos veces más la memoria, conseguimos la mitad como faltas de página de memoria, y sólo 15 segundos de la página critican arriba, entonces el tiempo de ejecución total será 45 segundos. 35. Esto trabaja para el programa si el programa no puede ser modificado. Esto trabaja para los datos si los datos no pueden ser modificados. Sin embargo, es común que el programa no puede ser modificado y muy raro que los datos no pueden ser modificados. Si el área de datos en el archivo binario fuera superpuesta con páginas actualizadas, la próxima vez que el programa fue comenzado, esto no tendría los datos originales. 36. La instrucción podría estar a horcajadas sobre un límite de página, causando faltas de dos páginas sólo traer la instrucción. La palabra traída también podría atravesar un límite de página, generando más dos faltas, para un total de cuatro. Si las palabras deben ser alineadas en la memoria, la palabra de datos puede causar sólo una falta, pero una instrucción para cargar a La palabra 32 bites en la dirección 4094 en una máquina con una página de 4 KILOBYTES es legal en algunas máquinas (incluso el Pentium). 37. La fragmentación interna ocurre cuando la última unidad de asignación no es llena. El Exter-nal fragmentación ocurre cuando el espacio es gastado entre dos unidades de asignación. En un sistema de paginación, el espacio gastado en la última página es perdido a frag-interno mentation. En un sistema de segmentación puro, algún espacio es invariablemente perdido entre los segmentos. Este es debido a la fragmentación externa. 38. El no de la llave de búsqueda usa tanto número de segmento como el número de página virtual, entonces la página exacta puede ser encontrada en un partido solo. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 5 19 SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 5 1. En la figura, vemos a un regulador con dos dispositivos. La razón que se espera que un regulador solo maneje dispositivos múltiples es eliminar la necesidad de tener un regulador por dispositivo. Si los reguladores se hacen casi libres, entonces esto va a esté más simple sólo de incorporar al regulador en el dispositivo sí mismo. Este diseño también permitirá transferencias múltiples en la paralela y así dará la mejor interpretación. 2. Fácil. El explorador saca el máximo de 400 KILOBYTES/SEGUNDOS. El autobús y disco ambos dirigido en 16.7 MB/segundos, entonces ni el disco ni el autobús vienen en todas partes cerca de satura-tion. 3. Esto no es una idea buena. ¿El autobús de memoria es seguramente más rápido que el autobús de entrada - salida, otro - sabio por qué molestia con ello? Considere lo que pasa con una petición de memoria normal. El autobús de memoria termina primero, pero el autobús de entrada - salida está todavía ocupado. Si la CPU espera hasta los fines de autobús de entrada - salida, esto ha reducido la interpretación de memoria a aquel del autobús de entrada - salida. Si esto sólo intenta el autobús de memoria para la segunda referencia, esto fallará si éste es una referencia de dispositivo de entrada - salida. Si hubiera algún camino de abortar al instante la referencia de autobús de entrada - salida anterior para intentar el segundo, la mejora podría trabajar, pero hay nunca tal opción. En conjunto, esto es una idea mala. 4. Cada transacción de autobús tiene una petición y una respuesta, cada toma de 100 nsec, o 200 nsec por transacción de autobús. Este da 5 millones de transacciones/segundos de autobús. Si cada uno está bien para 4 bytes, el autobús tiene que manejar 20 MB/segundos. El hecho que estas transacciones pueden ser rociadas más de cuatro dispositivos de entrada salida en la manera de retorno al punto de origen es irrelevante. Una transacción de autobús toma 200 nsec, sin tener en cuenta si las peticiones consecutivas son al mismo dispositivo o dispositivos diferentes, entonces el número de canales que el regulador DMA tiene no importa. El autobús no sabe o se preocupa. 5. Interrumpir requiere empujando de 34 palabras en la pila. Devolver de interrumpir requiere la atracción de 34 palabras de la pila. Este arriba solo es 680 nsec. Así el número máximo de interrumpe por segundo es no más que aproximadamente 1.47 millones, asumiendo que ningún trabajo para cada uno interrumpe. 6. Podría haber sido hecho en el principio. Una razón de hacerlo al final es que el código del procedimiento de servicio interrumpir es mu y c o r t o . Por primer outputting otro carácter y luego el reconocimiento de interrumpir, si el otro interrumpe pasa inmediatamente, la impresora trabajará durante interrumpir, haciendo esto imprime ligeramente más rápido. Una desventaja de este acercamiento es el tiempo improductivo ligeramente más largo cuando otro interrumpe puede ser minusválido. 7. Sí. El ordenador personal apilado señala a la primera instrucción no traída. Todo instruc-tions antes de que esto haya sido ejecutado y la instrucción señalado a 6 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 4 y sus sucesores no han sido ejecutados. Este es la condición para preciso interrumpe. Preciso interrumpe no son difíciles de conseguir en la máquina con una tubería sola. El problema e n t r a cuando las instrucciones son ejecutadas e s t r o p e a d a s , que no está el caso aquí. 8. La impresora imprime 50 ´80 ´6 =24, 000 caracteres/minuto, que es 400 caracteres/segundo. Cada carácter usa 50 msec del tiempo de CPU para interrumpir, tan colectivamente en cada segundo interrumpir arriba es 20 msec. La utilización interrumpe - entrada - salida conducida, el restante 980 msec del tiempo está disponible para otro trabajo. En otras palabras, los costos generales interrumpirás sólo el 2 % de la CPU, que afectará apenas el programa de correr en absoluto. 9. La independencia de dispositivo significa que tienen acceso a archivos y los dispositivos el mismo camino, independiente de su naturaleza física. Los sistemas que tienen el juego del que de llamadas a la escritura en un archivo, pero un juego diferente de llamadas a la escritura en la consola (termi-nal) no exponen la independencia de dispositivo. 10. (a) Controlador de dispositivos. (b) Controlador de dispositivos. (c) Software independiente por el dispositivo. (d) software de Nivel del usuario. 11. Basado en los datos en el Higo 5-17, para el ejemplo de disco flexible, hay 9 ´512 ´8 36864trozos =por pista. En 200 msec por rotación la velocidad binaria es 1 8 4 , 3 2 0 t r oz o s / s e g u n d o s . El disco duro tiene un promedio de 281 sectores por pista, así hay 281 ´512 ´8 =1, 150, 976 trozos/pistas en el promedio. Un tiempo de rotación de 8.33 msec corresponde a 120 rotación/segundo (7200 revoluciones por minuto), entonces en un segundo el disco puede transferir 120 ´1, 150, 976 trozos. Este es aproximadamente 138 millones de trozos/segundos. La velocidad de transferencia de datos del disco flexible es aproximadamente tres veces que de un 56-módem Kbps. La velocidad de transferencia de datos del disco duro es aproximadamente el 38 % más rápida que Ethernet Rápida. Sin embargo, estos cálculos subestiman las velocidades de transferencia de datos máximas actuales, porque para cada 512 bytes de datos en un disco hay también varios bytes de formatear la información, identificar la pista y sector, así como un hueco entre sectores, necesarios de impedir a sectores superponerse si hay variaciones de velocidad leves. 12. Un paquete debe ser copiado cuatro veces durante este proceso, que toma 4.1 msec. Hay también dos interrumpe, que explican 2 msec. Finalmente, el tiempo de transmisión es 0.83 msec, para un total de 6.93 msec por 1024 bytes. La velocidad de transferencia de datos máxima es así 147,763 bytes/segundos, o aproximadamente el 12 por ciento del nom-inal capacidad de red de 10 megabites/segundos . (Si incluimos el protocolo arriba, las figuras hasta empeoran.) 13. Si la impresora fuera adjudicada t a n pr o nt o c o mo la salida apareció, un proceso podría SOLUCIONES DE PROBLEMA PARA CAPÍTULO 21 amarre la impresora imprimiendo u n o s caracteres y luego yendo a dormir durante una semana. 19 22 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 5 14. El disco gira en 120 revoluciones por minuto, entonces 1 rotación toma 1000/120 msec. Con 200 sectores por rotación, el tiempo de sector es 1/200 de este número o 5/120 = 1/24 msec. Durante el 1-msec buscan, 24 pase de sectores bajo la cabeza. Así el cilindro sesga debería ser 24. 15. Cuando vimos en el problema anterior, el tiempo de sector es 1/24 msec. Este significa que el disco puede leer 24,000 sectores/segundo. Ya que cada sector contiene 512 bytes, la velocidad de transferencia de datos es 12,288,000 bytes/segundos. Este precio es 11.7 MB/segundos. 16. El nivel de INCURSIÓN 2 sólo no puede reponerse se estrelló paseos, sino también de errores pasajeros pasados por alto. Si un paseo entrega un trozo malo solo, nivel de INCURSIÓN 2 corregirá este, pero ASALTARÁ el nivel 3 no van a. 17. La probabilidad de 0 fracasos, P 0, es (1 -p) k. La probabilidad de 1 fracaso, P 1, es kp (1 -p) k -1. La probabilidad de un fracaso de INCURSIÓN es entonces 1 - P 0 -P 1. Este es 1 -(1 -p) k -kp (1 -p) k -1. 18. Un campo magnético es generado entre dos postes. No sólo es difícil hacer la fuente d e u n c a m p o m a g n é t i c o pequeña, sino también las extensiones de campaña rápidamente, que conduce a problemas mecánicos que tratan de guardar la superficie de un medio magnético cerca de una fuente magnética o sensor. Un Gen de láser de semiconductor - el erates luz en un muy pequeño lugar, y la luz puede ser ópticamente manipulado para iluminar un muy pequeño punto a una relativamente gran distancia de la fuente. 19. Posiblemente. Si la mayor parte de archivos son almacenados en sectores lógicamente consecutivos, esto podría ser intercalar que vale la pena los sectores para dar el tiempo de programas para tratar los datos sólo recibidos, de modo que cuando la siguiente petición es publicada, el disco estuviera en el lugar derecho. Si este merece el problema depende fuertemente de la clase de programas dirigidos y como el uniforme su comportamiento es. 20. El tiempo de rotación es 200 msec. Leyendo todos los sectores a f in de requiere que la rotación 1/2 consiga rotaciones del sector 0 y 2.75 para conseguir los datos (después de que el sector 7 es leído, la transferencia es terminada). Así 3.25 rotaciones son necesarias para 650 msec. Lea - ing 4 kilobyte en 650 msec es 6302 bytes/segundos. Para un disco no intercalado, esto toma 300 msec para leer 4 kilobyte, que es 13,653 bytes/segundos. Intercalar reduce la capacidad a 6302/13653 o 0.46 de su antigua capacidad. 21. Tal vez sí y tal vez no. Doble intercalar es con eficacia un cilindro sesgan de dos sectores. Si la cabeza puede hacer una pista a pista buscar en menos de dos veces de sector, que ningún cilindro adicional sesga es necesario. Si esto no puede, entonces el cilindro adicional sesga es necesario para evitar perder un sector después de buscar. 22. La capacidad de paseo y los precios de transferencia son doblados. El tiempo buscar y hace un promedio de la tardanza rotatoria son el mismo. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 23 19 23. Una consecuencia bastante obvia es que ningún sistema operativo existente trabajará porque todos ellos mira allí para ver donde las particiones de disco son. El Chang-ing el formato de la mesa de partición hará que todos los sistemas operativos fallen. El único modo de cambiar la mesa de partición es cambiarse simultáneamente todos los sistemas operativos para usar el nuevo formato. 24. (a) 10 + 12 + 2 + 18 + 38 + 34 + 32 = 146 cilindros = 876 msec. (b) 0 + 2 + 12 + 4 + 4 + 36 +2 = 60 cilindros = 360 msec. © 0 + 2 + 16 + 2 + 30 + 4 + 4 = 58 cilindros = 348 msec. 25. No necesariamente. Un programa UNIX que lee 10,000 cuestiones de bloques el las peticiones uno por uno, obstruyéndose después de que cada uno es publicado hasta que esto sea com-pleted. Así el controlador del disco ve sólo una petición a la vez; esto no tiene ningún oppor-tunity para hacer t o d o m e n o s los tratan en la orden de llegada. Harry debería haber a r r a n c a d o muchos procesos almismotiempo para ver si el montacargas algo-rithm trabajó. 26. Hay una raza pero esto no importa. Ya que los estables se escriben ha completado ya, el hecho que la RAM permanente no ha sido actualizada sólo medios que el programa de recuperación sabrá qué bloque estaba siendo escrito. Esto leerá ambas copias. Encontrándolos idéntico, esto no cambiará a ninguno, que es la acción correcta. El efecto del accidente justo antes de la RAM permanente fue actualizado sólo medios que el programa de recuperación tendrá que hacer dos disco lee más que esto debería. 27. Dos msec 60 veces por segundo son 120 msec/sec, o el 12 por ciento de la CPU 28. El número de segundos en un año medio es 365.25 ´24 ´3600. Este número es 31,557,600. El contador se abriga alrededor después de 232 segundos a partir del 1 de enero 1970. El valor de 232/31,557,600 es 136.1 años, así abrigándose pasará en 2106.1, que es a principios de febrero 2106. Por supuesto, para entonces, todos los ordenadores serán al menos 64 trozos, entonces no pasará en absoluto. 29. Cada línea requiere 3200 ´8 =25, 600 muestras/segundo. En 1 msec por muestra, cada línea toma 25.6 msec del tiempo del procesador cada segundo. Con 39 líneas, el procesador está ocupado para 39 ´ 25.6 = 998.4 msec cada segundo, que da la capacidad de la tarjeta como 39 líneas. 30. Después de que un carácter es escrito a un terminal RS232, esto toma relativamente mucho tiempo antes de que sea imprimido. La espera sería pródiga, tan interrumpe son usados. Con terminales trazados un mapa por la memoria, el carácter es aceptado al instante, tan inter - los rupts no tienen sentido. 31. En 56 Kbps, tenemos 5600 interrumpe/segundo, que es 560 msec. Este es el 56 % de la CPU. 24 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 5 32. El desplazamiento de la ventana requiere la copia de 59 líneas de 80 caracteres o 4720 trabajo por horas - acters. La copia de 1 carácter (16 bytes) toma 800 nsec, entonces la ventana entera toma 3.776 msec. La escritura de 80 caracteres a la pantalla toma 400 nsec, así enrollando y mostrando una nueva línea toma 4.176 msec. Este da aproximadamente 239.5 líneas/segundo. 33. Suponga que el usuario por descuido pidió al redactor imprimir miles de líneas. Entonces él golpea DEL para pararlo. Si el conductor no desechara la salida, la salida podría seguir durante varios segundos después del DEL, que haría el usuario golpear DEL una y otra vez y ser frustrados cuando nada pasó. 34. Esto debería mover el cursor para rayar 5 posición 7 y luego suprimir 6 caracteres. La secuencia es ESC [5; 7 H ESC [6 P 35. El procesador empotrado dentro del terminal tiene que mover todos los caracteres una línea por sólo copiándolos. Visto del interior, el terminal es la memoria trazada un mapa. No hay ningún modo fácil de evitar esta organización a menos que spe-cial hardware esté disponible. 36. Las 25 líneas de caracteres, cada uno 8 pixeles altos, requieren que 200 exploraciones dibujen. Hay 60 pantallas por segundo, o 12,000 exploraciones/segundo. En 63.6 msec/scan, la viga mueve horizontalmente 763 msec por segundo, yéndose de 237 msec del mandato judicial - ing en la RAM de vídeo. Así la RAM de vídeo es el 23.7 % disponible del tiempo. 37. El precio máximo que el ratón puede mover es 200 mm/segundos, que es 2000 mickey/segundo. Si cada informe es 3 bytes, el precio de salida es 6000 bytes/segundos. 38. Con un sistema en color de 24 trozos, sólo 224 colores pueden ser representados. Este no es todo de ellos. Por ejemplo, suponga que un fotógrafo toma cuadros de 300 latas de pintura azul pura, cada uno con una cantidad ligeramente diferente de pigmento. El primer puede podría ser representado por el (R, G, B) valor (0, 0, 1). El próximo podría sea representado por (0, 0, 2), etc. Ya que la coordenada de B es sólo 8 trozos, hay ningún modo de representar 300 valores diferentes de los puros azul. Algunos de foto - gráficos tendrán que ser dados como el color incorrecto. Otro ejemplo es el color (120.24, 150.47, 135.89). No puede ser representado, sólo se acercó por (120, 150, 136). 39. (a) Cada pixel toma 3 bytes en RGB, entonces el espacio de mesa es 16 ´24 3 bytes ´, que es 1152 bytes. (b) En 100 nsec por byte, cada carácter toma 115.2 msec. Este da un - el precio puesto de aproximadamente 8681 trabajos por horas/segundo. 40. Volver a escribir la pantalla de texto requiere 2000 bytes que copian, que pueden ser hechos en 20 mseconds. Volver a escribir la pantalla de gráficos requiere la copia de 1024 ´768 ´3 = 2,359,296 bytes, o aproximadamente 23.6 msec. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 25 19 41. En el Windows, el OS llama los procedimientos de tratante sí mismo. En el Windows X, noth-ing como este pasa. X sólo consigue un mensaje y lo trata internamente. 42. El primer parámetro es esencial. En primer lugar, las coordenadas son con relación a alguna ventana, entonces hdc es necesario para especificar la ventana y así el origen. Segundo, el rectángulo será prendido si esto se cae fuera de la ventana, entonces las coordenadas de ventana son necesarias. El tercero, el color y otras propiedades del rectángulo son tomados del contexto especificado por hdc. Es completamente esencial. 43. El tamaño de demostración es 400 ´160 3 bytes ´, que es 192,000 bytes. En 10 fps este es 1,920,000 bytes/segundos o 15,360,000 trozos/segundos. Este consume el 15 % de Ethernet Rápida. 44. La amplitud de banda en un segmento de red es compartida, entonces 100 usuarios que solicitan dif-ferent datos simultáneamente en una red 1-Mbps verán cada uno una velocidad eficaz 10-Kbps. Con una red compartida, un programa de TV puede ser multiechado, entonces los paquetes de vídeo sólo son transmitidos una vez, n o i mp o r t a c u a n t o s usuarios allí son y esto debería trabajar bien. Con 100 usuarios que hojean la Web, cada usuario conseguirá 1/100 de la amplitud de banda, entonces la interpretación puede degradar muy rápidamente. 45. Si n =10, la CPU todavía puede hacer su trabajo a t i e m p o , pero la energía usó gotas sensiblemente. Si la energía consumida en 1 s e g u n d o en la velocidad llena es E, entonces el correr en la velocidad llena para 100 msec que entonces van ocioso para 900 msec usa E/10. El correr en la velocidad 1/10 durante un segundo entero usa E/ 100, a ahorro de 9e/100. Los ahorros de por ciento cortando el voltaje son el 90 %. 46. El sistema windowing usa mucho más memoria para su demostración y usa virtual memoria más que el modo de texto. Este lo hace menos probablemente que el disco duro será inactivo para un bastante mucho tiempo de período para hacer que ello fuera automáticamente impulsado abajo. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 6 1. Usted puede ir de arriba abajo el árbol tan a menudo como usted quiere usar "..". Algunos muchos caminos son /etc/passwd /./etc/passwd /././etc/passwd /./././etc/passwd /etc/. ./etc/passwd /etc/. ./etc/../etc/passwd /etc/. ./etc/../etc/../etc/passwd /etc/. ./etc/../etc/../etc/../etc/passwd 2. El Windows camino debe usar la extensión de archivo. Cada extensión corresponde a un tipo de archivo y a algún programa que maneja aquel tipo. Otro camino es recordar qué programa creó el archivo y dirigió aquel programa. La tontería Macin-trabaja este camino. 3. Estos sistemas cargaron el programa directamente en la memoria y comenzaron a ejecutar en la palabra 0, que era el número mágico. Evitar tratar de ejecutar el jefe como el código, el número mágico era una instrucción de RAMA con una dirección objetivo sólo encima del jefe. De esta manera era posible leer el archivo binario directamente en el espacio de dirección del nuevo proceso y dirigirlo en 0, sin saber hasta de que tamaño el jefe era. 4. E l s i s t e ma o p e r a t i v o se preocupa por la longitud de registro cuando los archivos pueden ser estructurados como registra con llaves en una posición específica dentro de cada registro y es posible pedir un registro con una llave dada. En este caso, el sistema tiene que saber de que tamaño los archivos son así esto puede buscar cada uno para la llave. 5. Para comenzar con, si allí no estaban abiertos, en cada leído sería necesario especificar el nombre del archivo para ser abierto. El sistema tendría que traer entonces el i-nodo para ello, aunque pudiera ser cached. Una cuestión que rápidamente se levanta es cuando limpiar con agua el i-nodo atrás al disco. Esto podría el intervalo de espera, sin embargo. Sería un poco torpe, pero esto podría trabajar. 6. El no Si usted quiere leer el archivo otra vez, sólo al azar tiene acceso al byte 0. 7. Sí. La llamada renombraré no cambia el tiempo de creación o el tiempo de la última modificación, pero la creación de un nuevo archivo hace que ello consiga el tiempo corriente tanto como tiempo de creación como el tiempo de la última modificación. También, si el disco es lleno, la copia podría fallar. 8. La parte trazada un mapa del archivo debe comenzar en un límite de página y ser un número integral de páginas en la longitud. Cada página trazada un mapa usa el archivo sí mismo como el al macenamiento de respaldo . La memoria no trazada un mapa usa u n a r c h i v o r e u t i l i z a b l e o partición como el almacenamiento de respaldo. 9. Nombres de archivo de uso como/usr/ast/file. Mientras esto parece a un nombre de camino jerárquico, esto es realmente sólo un nombre solo cuchilladas empotradas que contienen. 10. Un camino es añadir un parámetro suplementario a la llamada de sistema leída que cuenta que dirección leer de. E n e f e c t o , cada leído entonces tiene un potencial para hacer buscar dentro del archivo. Las desventajas de este esquema son (1) param-suplementario eter en cada llamada leída, (y 2) requerimiento del usuario guardar la pista de donde la aguja de archivo es. 11. El componente dotdot mueve la búsqueda a/usr, tan ../ast lo pone en/usr/ast. Así ../ast/x es el mismo como/usr/ast/x. 12. Ya que el almacenaje gastado está entre las unidades de asignación (archivos), no dentro de ellos, este es la fragmentación externa. Es e x a c t a me n t e a n á l o g o a la fragmentación externa de la memoria principal que ocurre con un sistema de cambio o un sys-tem la utilización de la segmentación pura. 13. Esto toma 9 msec para comenzar la transferencia. Leer 213 bytes en un precio de transferencia de 223 bytes/segundos requiere 2-10 segundo (977 msec), para un total de 9.977 msec. La escritura de ello atrás toma otros 9.977 msec. Así la copia de un archivo toma 19.954 msec. Comprimir la mitad de un disco de 16 GRAN BRETAÑA implicaría copiar 8 GRAN BRETAÑA del almacenaje, que es 220 archivos. En 19.954 msec por archivo, este toma 20,923 segundos, que es 5.8 horas. Claramente, comprimiendo el disco después de que cada retiro de archivo no es una gran idea. 14. Si derecho hecho, sí. Comprimiendo, cada archivo debería ser organizado de modo que todos de sus bloques son consecutivos, para el acceso rápido. El Windows tiene un programa que defragments y reorganiza el disco. Los usuarios son animados a dirigirlo periodi-cally para mejorar la interpretación de sistema. Pero considerando c u a n t o esto toma, corriendo una vez al mes podría ser una frecuencia buena. 15. Un digital todavía cámara registra algún número de fotografías en la secuencia en un medio de almacenaje permanente (p.ej, memoria de destello). Cuando la cámara es reinicializada, el medio es vaciado. A partir de entonces, los cuadros son registrados uno por uno en la secuencia hasta que el medio sea lleno, en cual tiempo ellos son cargados a un disco duro. Para esta aplicación, un sistema de archivo contiguo dentro de la cámara (p.ej, en el medio de almacenaje de cuadros) es ideal. 16. Esto encuentra la dirección del primer bloque en la entrada de directorio. Esto entonces sigue la cadena de agujas de bloque en la GRASA hasta que esto haya localizado el bloque que esto necesita. Esto entonces recuerda este número de bloque para la siguiente llamada de sistema leída. 17. El bloque indirecto puede sostener 256 direcciones de disco. Juntos con las 10 direcciones de disco directas, el archivo máximo tiene 266 bloques. Ya que cada bloque es 1 KILOBYTE, el archivo más grande es 266 KILOBYTES. 18. Debe haber un modo de señalar que las agujas de bloque de dirección sostienen datos, más bien que agujas. Si allí queda poco en algún sitio entre los atributos, puede ser usado. Este deja nueve agujas para datos. Si las agujas son bytes k cada uno, el archivo almacenado podría estar a la altura de bytes de 9 kilobyte mucho tiempo. Si ningún trozo queda entre los atributos, la primera dirección de disco puede sostener una dirección inválida para marcar los bytes siguientes como datos más bien que agujas. En este caso, el archivo máximo es Bytes de 8 kilobyte. 19. Elinor tiene razón. Teniendo dos copias del i-nodo en la mesa al mismo tiempo es un desastre, a menos que ambos sean leídos sólo. El caso peor es cuando ambos están siendo actualizados simultáneamente. Cuando los i-nodos son contestados al disco, cualquiera uno es escrito último borrará los cambios hechos por el otro, y los bloques de disco serán perdidos. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 27 19 20. Los eslabones difíciles no requieren que ningún espacio de disco suplementario, sólo un contador en el i-nodo guarde la pista de cuantos hay. Los eslabones simbólicos necesitan el espacio para almacenar el nombre del archivo señalado a. Los eslabones simbólicos pueden señalar a archivos sobre otras máquinas, hasta sobre el Internet. Los eslabones difíciles son restringidos a señalar a archivos dentro de su propia partición. 21. El mapa de bit requiere trozos B. La lista libre requiere trozos DF. La lista libre requiere menos trozos si DF <B. O bien, la lista libre es más corta si El F/B <1/D, donde F/B es la fracción de bloques libres. Para direcciones de disco 16 bites, la lista libre es más corta si el 6 por ciento o menos del disco son libres. 22. El principio del mapa de bit parece: (a) Después de escribir archivo B: 1111 1111 1111 0000 (b) Después de suprimir archivo A: 1000 0001 1111 0000 (c) Después de escribir archivo C: 1111 1111 1111 1100 (d) Después de suprimir archivo B: 1111 1110 0000 1100 23. Esto no es un problema serio en absoluto. La reparación es franca; esto sólo lleva tiempo. El algoritmo de recuperación debe hacer una lista de todos los bloques en todos los archivos y tomar el complemento como la nueva lista libre. En UNIX este puede ser hecho por la exploración - ning todos los i-nodos. En el sistema de archivo GORDO, el problema no puede ocurrir porque no hay ninguna lista libre. Pero aun si había, todo que tendría que ser hecho para recuperarse debe explorar la GRASA que busca entradas libres. 24. La tesis de Ollie no puede ser sostenida tan de fuentes fidedignas como él podría desear. Un programa de reserva puede pasar sobre un archivo que está abierto actualmente para la escritura, cuando el estado de los datos en tal archivo puede ser indeterminado. 25. Ellos deben guardar la pista del tiempo del último vertedero en un archivo sobre el disco. En cada vertedero, una entrada es añadida a este archivo. En el tiempo vaciado, el archivo es leído y el tiempo de la última entrada notado. Cualquier archivo cambiado desde aquel tiempo es vertido. 26. En (a) (y b), 21 no sería marcado. En (c), no habría ningún cambio. En (d), 21 no sería marcado. 27. Muchos archivos UNIX son cortos. Si el archivo entero cabe en el mismo bloque que el nodo "yo", sólo un acceso de disco sería necesario para leer el archivo, en vez de dos, como es actualmente el caso. Incluso para archivos más largos habría una ganancia, desde un menos disco tiene acceso sería necesario. 28. No debería pasar, pero debido a un bicho en algún sitio podría pasar. Esto significa que algún bloque ocurre en dos archivos y también dos veces en la lista libre. Los primeros intervienen la reparación del error debe quitar ambas copias de la lista libre. Después un bloque libre tiene que ser adquirido y los contenido del bloque enfermo copiados allí. Finalmente, el acontecimiento del bloque en uno de los archivos debería ser cambiado para referirse a la copia recién adquirida del bloque. En este punto el sistema es otra vez consecuente. 28 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 6 29. El tiempo necesario es h +40 ´(1 -h). El complot es sólo una línea recta. 30. El tiempo por bloque es aumentado de tres componentes: busque el tiempo, la latencia rotatoria, y el tiempo de transferencia. En todos los casos la latencia rotatoria más el tiempo de transferencia es el mismo, 125 msec. Sólo el tiempo buscar se diferencia. Para 13 cilindros es 78 msec; para 2 cilindros esto es 12 msec. Así para archivos al azar colocados el total es 203 msec, y para archivos arracimados esto es 137 msec. 31. En 15,000 revoluciones por minuto, el disco toma 4 msec para andar una vez. El tie mpo de a cce so prome di o (en msec) para leer bytes k es entonces 8 +2 +(k / 262144) ´4. Para bloques de 1 KILOBYTE, 2 KILOBYTES, Y 4 KILOBYTES , los tiempos de acceso son 10.015625 msec, 10.03125 msec, y 10.0625 msec, respectivamente (apenas algo diferente). Éstos dan precios de APROXIMADAMENTE 102,240 KILOBYTES/SEGUNDOS, 204,162 KILOBYTES/SEGUNDOS, Y 407,056 KILOBYTES/SEGUNDOS, respectivamente. 32. Si todos los archivos fueran 1 KILOBYTE, entonces cada bloque de 2 KILOBYTES contendría un archivo y 1 KILOBYTE de espacio gastado. La tentativa de poner dos archivos en un bloque no es permitida porque la unidad solía conservarse la pista de datos es el bloque, no el semibloque. Este conduce a El 50 por ciento espacio gastado. En la práctica, cada sistema de archivo tiene archivos grandes también tan muchos pequeños, y estos archivos usan el disco m u c h o m á s e f i c a z m e n t e . Por ejemplo, un archivo de 32,769 bytes usaría 17 bloques de disco para el almacenaje, considerando una eficacia espacial de 32768/34816, que es aproximadamente el 94 por ciento. 33. El formato de directorio tiene hasta 255 bloques en cuenta en el disco (debido al número de 8 trozos en la entrada de directorio). Este no es claramente bastante entonces el primer cambio tiene que deber ir a más bloques de disco. En vez de 16 direcciones de 8 trozos, deberíamos usar 8 direcciones 16 bites. Este permite 65,536 bloques de disco por disco. Si hacemos bloques 32,768 bytes, los mismos usos de MS-DOS de tamaño en discos grandes, el tamaño de disco máximo (realmente, el tamaño de partición máximo) son ahora 2 GRAN BRETAÑA. Sin embargo, indi-vidual archivos son limitados con ocho bloques de disco por grado y 255 grados para un máximo de 2040 bloques o 63.75 MB. Un diseño con un disco máximo de 2 GRAN BRETAÑA y un archivo máximo de 63.75 MB son plausibles. Si este no es bastante, uno podría usar uno de los bytes no usados en la entrada de directorio para levantar el campo de grado a 16 trozos. Este levanta el número de bloques por archivo a 524,280 y el tamaño de archivo a casi 16 GRAN BRETAÑA. Los tamaños de bloques más grandes van hasta adelante. 34. El bloque más grande es 32,768. Con 32,768 de estos bloques, el archivo más grande sería 1 GRAN BRETAÑA. 35. Esto obliga la suma de todas las longitudes de archivo a ser no más grande que el disco. Este no es una coacción muy seria. Si los archivos fueran colectivamente más grandes que el disco, no habría ningún lugar para almacenar todos ellos en el disco. 36. El i-nodo sostiene 10 agujas. El bloque indirecto solo sostiene 256 agujas. El doble bloque indirecto está bien para 2562 agujas. El bloque indirecto triple está bien para 2563 agujas. Sumando éstos, conseguimos un tamaño de archivo máximo SOLUCIONES DE PROBLEMA PARA CAPÍTULO 29 de 16,843,018 bloques, que es aproximadamente 16.06 GRAN BRETAÑA. 19 30 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 6 37. El disco siguiente lee son necesarios: directorio para/ i-nodo para/usr directorio para/usr i-nodo para/usr/ast directorio para/usr/ast i-nodo para/usr/ast/courses directorio para/usr/ast/courses i-nodo para/usr/ast/courses/os directorio para/usr/ast/courses/os i-nodo para/usr/ast/courses/os/handout.t En total, 10 disco lee son requerido. 38. Algunos pros son c o mo s i g u e . Primero, ningún espacio de disco es gastado en inodos no usados. Segundo, no es posible quedarse sin i-nodos. Tercero, menos movimiento de disco es necesario desde el i-nodo y los datos iniciales pueden ser leídos en una operación. Algunas estafas son como sigue. Primero, las entradas de directorio necesitarán ahora una dirección de disco 32 bites en vez de un número de i-nodo 16 bites. Segundo, un disco entero será usado hasta para archivos que no contienen ningunos datos (archivos vacíos, archivos de dispositivo). Tercero, el archivo sys-tem controles de integridad será más lento debido a la necesidad de leer un bloque entero para cada i-nodo y porque los inodos serán dispersados por todas partes del disco. Cuarto, los archivos cuyo tamaño ha sido con cuidado diseñado para encajar el tamaño de bloque van a ya no encaje el tamaño de bloque debido al i-nodo, estropeando la interpretación. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 7 1. El XGA es 1024 ´768. Con 24 trozos/pixeles y 25 marcos/segundo nos ponemos 471,859,200 trozos/segundos. Este precio es demasiado alto para Ultraamplio SCSI, que sólo puede acercarse a 320 Mbps. 2. La televisión de NTSC estándar es a p r o xi ma d a me n t e 6 4 0 ´480 pixeles. En 8 t r oz os / pi xe l es y 30 marcos/segundo conseguimos una amplitud de banda de 73 Mbps. Sólo apenas lo hace con un canal. Dos canales serían demasiado. 3. De la mesa, HDTV es 1280 ´720 contra 640 ´480 para la TV regular. Esto tiene tres veces tan muchos pixeles y así necesita tres veces la amplitud de banda. La razón esto no necesita cuatro veces tan mucha amplitud de banda es que la proporción de aspecto de HDTV es diferente de la TV convencional para emparejar aquella de la película de 35 mm mejor. 4. Para el movimiento lento adelantamiento, es suficiente para cada marco para ser mostrado d o s o m á s veces e n f i l a . Ningún archivo adicional es necesario. Ir hacia atrás despacio va tan mal como hacia atrás rápidamente, entonces un archivo adicional es necesario. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 31 19 5. De audio es probado en 16 trozos por muestra, 44,100 tiempos/segundo con dos canales. Este da un precio de audio no comprimido de 1,411,200 trozos/segundos o 176,400 bytes/segundos. En 74 minutos, este asciende a 747 MB. Este es la capacidad llena del CD. No es comprimido en absoluto. Los datos de razón son limitados con 650 MB es que la mejor corrección de error es usada para datos ya que un error es más serio que para la música. Si hasta un factor de dos compresión hubiera sido usado en CDs de audio, los datos habrían sido menos de 374 MB y más de 74 minutos podrían sea almacenado en un CD. 6. Hay 32,768 magnitudes posibles. Por ejemplo, suponga las variedades de señal de voltios -32.768 a +32,767 voltios y el valor almacenó para cada sample es la señal acabada al número más cercano de millivolts, como un firmado Número entero 16 bites. Una señal de 16.0005 voltios tendría que ser registrada como tampoco 16,000 o como 16,001. El error de por ciento aquí es el por ciento 1/320. Sin embargo, el sorbo - posa la señal es 0.0005 voltios. Este es registrado en 0 o 1. En el caso último, el error es el 50 %. Así el ruido de cuantificación afecta amplitudes bajas más que amplitudes altas. Los conciertos de flauta serán golpeados más difíciles que el rock and roll debido a sus amplitudes inferiores. 7. Un esquema de compresión/extensión de volumen podría ser puesto en práctica c o m o sigue. U n t r oz o de la salida es reservado para señalar que la señal registrada es ampliada. 15 trozos restantes son usados para la señal. Cuando la orden alta 5 trozos de la señal de 20 trozos no son 00000, el trozo de extensión es 0 y el otro 1 5 t r o z o s contienen la orden alta 1 5 t r o z o s de los datos probados. Cuando los altos - piden que5trozos de la señal sean 00000, el trozo de extensión es encendido y el La señal de amplitud de 20 trozos es cambiada dejó 5 trozos. Al final del oyente el proceso inverso ocurre. Este esquema aumenta el ruido de cuantificación ligeramente para señales fuertes (debido a una señal de 15 trozos en vez de una señal 16 bites), pero disminuciones ello para señales tranquilas, cuando el efecto de cuantificación es el más sensible. Una desventaja principal es que este no es un estándar y no trabajaría con jugadores de CD existentes, pero esto podría trabajar para la música en línea tocada con un enchufe de unión especial que usó este esquema durante ambos finales. Una versión más sofisticada podría usar 2 trozos para denotar cuatro regímenes de extensión diferentes para niveles de señal diferentes. 8. El AMIGO tiene más líneas de exploración y más resolución espacial que NTSC. Esto tiene 625 líneas verticales contra 525 para NTSC. Esto también tiene más pixeles por línea. Éstos resultan en una imagen más aguda, y usan la amplitud de banda suplementaria. Por otra parte, NTSC tiene más marcos por segundo, entonces es mejor para agarrar la acción rápida. Ningún es "mejor" que otro en este sentido. Las compensaciones diferentes han sido hechas: mejor resolución a tiempo contra mejor resolución en espacio. Todo esto es completamente independiente de los esquemas de codificación en color usados. 9. La diferencia no causa problemas en absoluto. El algoritmo DCT es usado para codificar I-marcos en un esquema JPEG-parecido. Los macrobloques son usados 32 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 6 en P- SOLUCIONES DE PROBLEMA PARA CAPÍTULO 7 31 los marcos para localizar macrobloques que aparecieron en marcos anteriores. Las dos cosas no tienen nada que ver el uno con el otro y no entran en conflicto. 10. No ellos no hacen. El algoritmo de compensación de movimiento encontrará cada cerradura de macrob-en el marco anterior en alguna compensación de su posición corriente. Por encod-ing el hecho que el macrobloque corriente debería ser tomado del marco anterior en una posición (Dx, Dy) del corriente, no es necesario transmitir el bloque sí mismo otra vez. 11. Los procesos que apoyan las tres corrientes de vídeo ya usan 0.808 del tiempo de CPU, así hay 192 msec por segundo dejado terminado para de audio. Procde audio ess unas carreras 33.333 tiempos/segundo, el proceso de audio B dirige 25 tiempos/segundo, y proceso de audio C dirige 20 tiempos/segundo, para un total de 78.333 carreras/segundo. Estas 78.333 carreras pueden usar 192 msec, entonces cada carrera puede usar 192/78.333 o 2.45 msec. 12. El primer proceso usa 0.400 de la CPU. El segundo usa 0.375 de el CPU. Juntos ellos usan 0.775. El límite de RMS para dos procesos es 2 ´(20.5 -1), que es 0.828, entonces RMS es garantizado para trabajar. 13. Desde 0.65 <ln 2, RMS siempre puede programar las películas, no importa cuántos hay. Así el RMS no limita el número de películas. 14. La secuencia que comienza en t =150 es unos 6, B 5, C 4, A 7, B 6, A 5, y C 5. Cuando C 5 finales en t =235 no hay ningún trabajo para hacer hasta t =240 cuando A y B se hacen listos, entonces el sistema va ocioso para 5 msec. La opción de dirigir B 5 antes C 4 es arbitrario. El otro camino también es permitido. 15. Un lector DVD anda bien a casa de la inspección, pero los altos buscan tiempo de los corrientes optan - ical la grabación de sistemas limita su utilidad con el suministro de una corriente sola de datos. Los paseos de DVD no pueden apoyar corrientes múltiples con tiempos de principio diferentes o las funciones de control PARECIDAS A UN GRABADOR DE VÍDEO como pausa, rebobinado, y rápido expiden para dif-ferent a usuarios. Con la tecnología corriente los datos tendrían que a almacenado en un buffer en una memoria muy grande. Los discos duros son simplemente mejores. 16. Si el caso peor espera es 6 minuto, una nueva corriente debe comenzar cada 6 minuto. Para a Película de 180 minutos, 30 corrientes son necesarias. 17. L a v e l o c i d a d d e t r a n s f e r e n c i a d e d a t o s es 0. 5 M B/ s e gundos . Un minuto del vídeo usa 30 M B . Para ir para - sala o hacia atrás 1 minuto cada uno requiere 60 MB. 18. El HDTV no hace ninguna diferencia. Hay todavía 216,000 marcos en la película. La pérdida para cada marco es aproximadamente medio bloque de disco, o 0.5 KILOBYTES. Para la película entera, esta pérdida es 108 KILOBYTES. 19. Hay alguna pérdida para cada marco. Más marcos que usted tiene, más pérdida usted tiene. El NTSC tiene un precio de marco más alto, entonces esto tiene ligeramente más pérdida. Pero considerando los números implicados, esta pérdida no es una fracción significativa del espacio de disco total. 20. El efecto principal de HDTV es marcos más grandes. Los marcos grandes tienden a hacer la desventaja de pequeños bloques menos seria porque los marcos grandes pueden ser leídos en eficazmente. Así el argumento de interpretación de disco a favor de bloques grandes disminuye. Además, si los marcos no son partidos sobre bloques (cuando ellos no están aquí), teniendo Imarcos que son una fracción sustancial de un bloque es un problema serio. Esto a menudo puede ocurrir que un bloque es en parte lleno y un I-marco grande parece siguiente, gastando una cantidad grande del espacio en el bloque corriente. E n g e n e r a l , yendo a HDTV favorece el pequeño modelo de bloque. 21. El parachoques es bastante grande si el número de I-marcos es 4 o menos. El probabilel ity de la adquisición exactamente k I-marcos es C (24, k) yo k B 24-k, donde tengo 0.1 años y B es 0.9. Las probabilidades de adquisición exactamente 0, 1, 2, 3, y 4 I-marcos son 0.0798. 0.213, 0.272, 0.221, y 0.129, respectivamente. La suma de éstos es 0.915. Este significa que hay un 0.085 o la posibilidad del 8.5 % del fracaso. Este está lejos demasiado grande para aceptar. 22. Conseguir el juego señalan en medio del parachoques, tenemos que ser capaces de leer y almacenar tres corrientes inmediatamente. Cuando la película continúa en 12 minuto, comenzamos a almacenar las corrientes que son actualmente en 15 minuto y 20 minuto. Después de 3 minutos, hemos almacenado 15–18 minuto y 20-23 minuto. En aquel punto dejamos caer la corriente privada y comenzamos a mostrar del parachoques. Después de un 2 minuto adicional, tenemos 15–25 minuto almacenado y el punto de juego es 17 minuto. En este punto sólo cargamos el parachoques de la corriente ahora en 25 minuto. En 3 minuto, tenemos 15–28 minuto en el parachoques y el juego el punto es 20 minuto. Hemos conseguido nuestro objetivo. Como somos f u e r a de la sincronización con el cerca de corrientes de vídeo a petición, este es el mejor que podamos hacer. 23. Una alternativa debe tener un archivo separado para cada lengua. Esta alternativa minimiza el uso de RAM, pero la basura las cantidades grandes del espacio de disco. Si el espacio de disco es barato y el objetivo es apoyar tan muchas corrientes posibles inmediatamente, este acercamiento es atractivo. Otra alternativa debe almacenar la pista de audio para cada lengua por separado y hacer un suplementario procura por marco traer el de audio. Este esquema hace el uso eficiente del espacio de disco, pero introduce extra busca y así hace más lenta la interpretación. 24. La normalización constante, C, es 0.36794, entonces las probabilidades son 0.368, 0.184, 0.123, 0.092, 0.074, 0.061, 0.053, y 0.046. 25. Un disco de 14 GRAN BRETAÑA sostiene 14 ´ 230 o 15,032,385,536 bytes . Si éstos son uniformemente partidos más de 1000 cilindros, cada cilindro sostiene 15,032,385, que es sólo bastante para un clip de vídeo de 30 segundos. Así cada clip ocupa un cilindro. La pregunta es entonces que fracción del peso total es representada por los 10 primeros clips de 1000. Sumando 1, 1/2... 1/10, nos ponemos 2.92895. Multiplicando este por 0.134 nos ponemos 0.392, entonces el brazo gasta c a s i e l 4 0 % de su tiempo dentro del medio 10 cilindros. SOLUCIONES DE PROBLEMA PARA CAPÍTULO 33 31 26. Para cuatro artículos, la ley de Zipf cede probabilidades de 0.48, 0.24, 0.16, y 0.12. Las proporciones de estas probabilidades también describen la utilización relativa de los paseos para el Higo 7-0 (a). Para los otros tres arreglos striping todos los paseos serán usados igualmente, asumiendo que cada uno quién paga para una película lo mira por al final. El resultado en un tiempo particular podría ser diferente, sin embargo. Si cada uno en la ciudad quiere comenzar a mirar una película en 8 de la mañana el arreglo del Higo 7-0 (b) golpearía al principio el primer disco el más difícil, entonces el siguiente disco 15 minutos más tarde, etc. Los arreglos del Higo 70 (c) (o d) no serían afectados este camino. 27. El AMIGO corre en 25 marcos/segundo, entonces los dos usuarios son desconectados por 150 marcos. Combinarlos en 3 medios de minuto que cierran el hueco por 50 marcos/minuto. Uno va 25 marcos/minuto más rápido y uno va 25 marcos/minuto más despacio. El precio de marco normal es 1500 marcos/minuto, entonces la velocidad o abajo es 25/1500 o 1/60, que es aproximadamente el 1.67 %. 28. Para NTSC, con 30 marcos/segundo, una ronda es 33.3 msec. El disco hace girar 180 tiempos/segundo, entonces la latencia rotatoria media es media rotación o 2.8 msec. El MPEG-2 corre en aproximadamente 500,000 bytes/segundos o aproximadamente 16,667 bytes/marcos. En 3 2 0 M B / s e g u n d o s , el tiempo de transferencia para un marco es a p r o xi ma d a me n t e 5 1 msec. Así buscar, la latencia rotatoria, y los tiempos de transferencia ascienden a aproximadamente 5.8 msec. Cinco corrientes así comen por completo 29 msec de 33.3 msec, que es el máximo. 29. El promedio busca el tiempo va de 3.0 msec a 2.4 msec, entonces el tiempo por ópera - tion es reducido a 5.2 msec. Este añade uno más corriente, haciendo seis en total. 30. Seis corrientes. El Striping es inútil. Cada operación de disco todavía toma 5.2 msec para conseguir el brazo sobre los datos. Si el tiempo de transferencia es 51 msec o 13 msec no hace mucha diferencia. 31. Para la primera hornada de cinco peticiones, el crítico es para el cilindro 676, cuarto en la lista, pero con una fecha límite de t =712 msec. Entonces cada petición debe ser servida en 3 msec o menos para el cuarto para ser hecho en t =712 msec. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 8 1. Tanto USENET como SETI@home podría ser descrito cuando la amplia área distribuyó sistemas. sin embargo, USENET es realmente más primitivo que el esquema de Higo 8-1c, ya que esto no requiere ninguna infraestructura de red además de uniones de punto a punto entre pares de máquinas. También, ya que esto no hace ningún trabajo de procesamiento además necesario de asegurar la diseminación apropiada de artículos de noticias, podría ser debatido si esto es realmente un sistema distribuido de la clase por la que estamos preocupados en este capítulo. SETI@home es un ejemplo más típico del sistema distribuido de una amplia área; los datos son distribuidos a nodos remotos que entonces devuelven resultados de cálculos al nodo de coordinación. 34 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 7 2. Según los detalles de como las CPUs están relacionadas con la memoria, uno de ellos pasa primero, p.ej, agarra el autobús primero. Esto completa su operación de memoria, entonces el otro pasa. No es previsible qué va primero, pero si el sistema ha sido diseñado para el consecuencia secuencial, esto no debería importar. 3. Una máquina 200-MIPS publicará 200 millones de referencias/segundos de memoria, consum-ing 200 millones de ciclos de autobús o mitad de la capacidad del autobús. Esto toma sólo dos CPUs para consumir el autobús entero. El Caching deja caer el número de peticiones/segundo de memoria a 20 millones, permitiendo a 20 CPUs compartir el autobús. Ponerse 32 CPUs en el autobús, cada uno podría solicitar no más que 12,500,000 peticiones/segundo. Si sólo 12.5 millones de 200 millones de la memoria se refieren ences salen en el autobús, el escondite el precio de señorita debe ser 12.5/200 o el 6.25 %. Este significa que el precio de golpe es el 93.75 %. 4. Las CPUs 000, 010, 100, y 110 son cortadas de memorias 010 y 011. 5. Cada CPU maneja sus propias señales completamente. Si una señal es generada del teclado y el teclado no es adjudicado a ninguna CPU particular (el caso habitual), de alguna manera la señal tiene que ser dada a la CPU correcta para manejarse. 6. Para publicar una llamada de sistema, un proceso genera una trampa. La trampa interrumpe su propia CPU. De alguna manera, la información que una CPU de esclavo ha tenido una trampa tiene que ser comunicada a la CPU de maestro. Este no pasa en el primer modelo. Si hay instrucciones de trampa de interprocesador, este puede ser usado para señalar al maestro. Si ningunas tales instrucciones existen, el esclavo puede coleccionar los parámetros del sys-tem llamada y ponerlos en una estructura de datos en la memoria que el maestro vota la estafa - tinuously cuando es ocioso. 7. Aquí está una solución posible: entre en 3 región: CERRADURA de TST | Prueban el valor de cerradura Los JNE ENTRAN en 3 REGIÓN | Si es distinto a cero, vaya el intento otra vez REGISTRO de TSL, CERRADURA | cerradura de Copia para registrarse y poner cerradura a 1 ¿CMP REGISTER,#0 | Era cero de cerradura? Los JNE ENTRAN en 3 REGIÓN | Si esto no fuera el cero, la cerradura fue puesta, entonces lazo RET | Vuelven al visitante; la región crítica entró 8. Probablemente las cerraduras en estructuras de datos son bastante. Es difícil imaginar algo que un pedazo de código podría hacer lo que es crítico y no implica alguna estructura de datos de grano. Toda la adquisición de recurso y la liberación usan estructuras de datos para el examen - ple. Mientras no puede ser probado, es muy probable que se cierra en estructuras de datos son suficientes. 9. Esto toma 16 ciclos de autobús para mover el bloque y esto va ambos caminos para cada TSL. Así cada 50 ciclos de autobús, 32 de ellos son gastados en el movimiento del bloque de escondite. Por consiguiente, el 64 % de la amplitud de banda de autobús es gastado en transferencias de escondite. 10. Sí esto, pero el tiempo de interencuesta podría terminar por ser muy largo, degradando la interpretación. Pero sería correcto, hasta sin un máximo. 11. Está t a n bien como TSL. Es usado precargando 1 en el registro para ser usado. Entonces aquel registro y la palabra de memoria son atomically cambiado. Después de la instrucción, la palabra de memoria es cerrada con llave (es decir, tiene un valor de 1). Su previ-ous valor está contenido ahora en el registro. Si fuera antes cerrado con llave, la palabra no tiene ser cambiado y el visitante debe el lazo. Si fuera antes abierto, es cerrado con llave ahora. 12. El lazo consiste en una instrucción TSL (5 nsec), un ciclo de autobús (10 nsec), y un JMP atrás a la instrucción TSL (5 nsec). Así en 20 nsec, 1 ciclo de autobús es solicitado ocupando 10 nsec. El lazo consume el 50 % del autobús. 13. A es el proceso sólo seleccionado. Pueden haber bien otros en la misma CPU. 14. La programación de afinidad tiene que ver con la puesta del hilo derecho en la CPU derecha. Haciendo tan podría reducir bien TLB señoritas ya que éstos son guardados dentro de cada CPU. Por otra parte, esto no tiene ningún efecto en faltas de página, desde si una página está en la memoria para una CPU, esto está en la memoria para todas las CPUs. 15. (a) 2 (b) 4 (c) 8 (d) 5 (e) 3 (f) 4. 16. En una rejilla, el caso peor es nodos en esquinas de enfrente que tratan de comunicarse. Sin embargo, con un torus, las esquinas de enfrente son sólo dos saltos aparte. El caso peor es una esquina que trata d e di r i gi r s e a un nodo en el medio. Para k raro, esto toma (k -1) / 2 saltos para ir de una esquina al medio horizontalmente y el otro (k -1) / 2 saltos para ir al medio verticalmente, para un total de k -1. Para hasta k, el medio es un cuadrado de cuatro puntos en el medio, entonces el caso peor es de una esquina al punto más distante en aquel cuadrado de cuatro puntos. Esto toma k/ 2 saltos para ponerse allí horizontalmente y también k/2 verticalmente, entonces el diámetro es k. 17. La red puede ser cortada en dos por un avión durante el medio, dando a dos sistemas, cada uno con una geometría de 8 ´8 ´4. Hay 64 eslabones que corren entre las dos mitades, para la amplitud de banda de bisección de 64 Gbps. 18. Si sólo consideramos el tiempo de red, conseguimos 1 nsec por trozo o tardanza 512-nsec por paquete. Para copiar 64 bytes 4 bytes a la vez, 320 nsec son necesarios en cada lado, o 640 total nsec. Añadiendo el tiempo de alambre 512-nsec, conseguimos 1132 total nsec. Si dos copias adicionales son necesarias, conseguimos 1792 nsec. 19. Si consideramos sólo el tiempo de alambre, una red 1-Gbps entrega 125MB/segundos. El movimiento de 64 bytes en 1152 nsec es 55.6 MB/segundos. El movimiento de 64 bytes en 1792 nsec es 35.7 MB/segundos. 20. En una máquina de memoria compartida esto basta para pasar la aguja del mensaje de la CPU que ejecuta enviar a la CPU que ejecuta recibir , con possible traducciones entre direcciones de memoria virtuales y físicas. En a el multiordenador sin la memoria compartida una dirección en el espacio de dirección de una CPU no tiene ningún sentido a otra CPU, entonces los contenido actuales del parachoques enviar tienen que ser transmitidos como paquetes y luego vueltos a montar en el parachoques del proceso de recepción. Al programador los procesos parecen idénticos, pero el tiempo requerido será mucho más largo en el multiordenador. 21. El tiempo para mover bytes k por la entrada - salida programada es 20 kilobyte nsec. El tiempo para DMA es 2000 + 5 kilobyte nsec. Comparando éstos y solucionando para k conseguimos el punto de equilibrio en 133 bytes. 22. Claramente la cosa incorrecta pasa si una llamada de sistema es ejecutada remotamente. Intento - ing para leer un archivo sobre la máquina remota no trabajará si el archivo no está allí. También, el ajuste de una alarma en la máquina remota no devolverá una señal a la máquina que llama. Un modo de manejar llamadas de sistema remotas es atraparlos y devolverlos al sitio inicial para la ejecución. 23. Primero, en una red de emisión, una petición de emisión podría ser hecha. Segundo, una base de datos centralizada de quién tiene qué página podría ser mantenida. Tercero, cada página podría tener una base de casa, indicada por los trozos k superiores de su dirección virtual; la base de casa podría guardar la pista de la posición de cada una de sus páginas. 24. En esta hendidura, el nodo 1 tiene A, E, y G, el nodo 2 tiene B y F, y el nodo 3 tiene C, D, H, y yo. El corte entre nodos 1 y 2 ahora contiene AB y EB para un peso de 5. El corte entre nodos 2 y 3 ahora contiene el CD, CI, FI, y FH para un peso de 14. El corte entre nodos 1 y 3 ahora contiene EH y GH para un peso de 8. La suma es 27. 25. La mesa de archivos abiertos es guardada en el grano, tan si un proceso tiene archivos abiertos, cuando es descongelado y trata de usar uno de sus archivos, el nuevo grano no sabe sobre ellos. Un segundo problema es la máscara de señal, que también es almacenada en el grano original. Un tercer problema es que si una alarma es pendiente, esto va a márchese en la máquina incorrecta. En general, el grano es lleno de trozos y pedazos de la información sobre el proceso, y ellos tienen que ser con éxito emigrados también. 26. Los nodos de Ethernet deben ser capaces de descubrir colisiones entre paquetes, entonces pro - pagation tardanza entre los dos nodos el más extensamente separados debe ser menos que la duración del paquete más corto para ser enviado. Por otra parte el remitente puede transmitir totalmente un paquete y no descubrir una colisión aunque el paquete sufra una colisión cerca del otro final del cable. 27. Las carreras de middleware en sistemas operativos diferentes tan el código son claramente dif-ferent porque las llamadas de sistema empotradas son diferentes. Lo que ellos tienen en común produce un interfaz común a la capa de aplicación encima de ellos. Si la capa de aplicación sólo hace llamadas a la capa de Middleware y SOLUCIONES DE PROBLEMA PARA CAPÍTULO 37 31 ningunas llamadas de sistema, entonces todas las versiones de ello pueden tener el mismo código fuente. Si ellos también hacen llamadas de sistema verdaderas, éstos se diferenciarán. 28. La mayor parte de servicios apropiados son (a) Unión no fiable. (b) corriente de byte Confiable. 29. Es mantenido jerárquicamente. Hay un servidor mundial para .edu que sabe sobre todas las universidades y un servidor .com que sabe sobre todos los nombres que se terminan en .com. Así para alzar la vista cs.uni.edu, una máquina miraría primero uni en el servidor .edu, luego vaya allí para preguntar sobre cs, etcétera. 30. Un ordenador puede tener muchos procesos que esperan uniones entrantes. Éstos podrían ser el servidor de Web, servidor de correo, servidor de noticias, y otros. Algún camino es necesario para hacer posible de dirigir una unión entrante a un poco de proceso particular. Esto es hecho teniendo cada proceso escuchan a un puerto específico. Ha sido concordado sobre aquellos servidores de Web escuchará para virar a babor 80, entonces las uniones entrantes dirigidas al servidor de Web son enviadas para virar a babor 80. El número sí mismo era una opción arbitraria, pero algún número tuvo que ser elegido. 31. Ellos pueden. Por ejemplo , www.intel.com no dice nada sobre donde el servidor es. 32. Un camino sería para el servidor de Web para embalar la página entera, incluso todas las imágenes en un archivo de cremallera grande y envían a todo el asunto la primera vez tan sólo una unión es necesaria. Un segundo camino sería usar un protocolo connectionless como UDP. Este eliminaría la unión arriba, pero requeriría que servidores y navegadores hicieran su propio control de error. 33. Tener el valor de un leído depende de si un proceso resulta estar en la misma máquina que el último escritor no es de nada transparente. Este aboga por mak-ing se cambia sólo visible al proceso que hace los cambios. Por otra parte, tener un gerente de escondite solo por máquina es más fácil y más barato para poner en práctica. Tal gerente se hace más complicado si esto tiene mantener copias múltiples de cada archivo modificado, con el valor devuelto según quién hace la lectura. 34. Algún archivo cached debería ser devuelto al servidor. Todo el estándar paging algoritmos puede ser usado, como LRU o segunda posibilidad. En contraste con vir-tual memoria, sin embargo, usando LRU exacto es posible porque las referencias de archivo son infrecuentes (escala de tiempo de milisegundo, no escala de tiempo de nanosegundo). 35. La memoria compartida trabaja con páginas enteras. Este puede conducir a falso compartiendo, en cual acceso a variables sin relaciones que resultan estar en la misma paliza de causa de página. La puesta de cada variable en una página separada es pródiga. El acceso basado en el objeto elimina estos problemas y permite un grano más fino de compartir. 38 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 8 36. Desmenuzar en cualquiera de los campos del tuple cuando es insertado en el espacio tuple no ayuda porque el en puede tener parámetros sobre todo formales. Una optimización que siempre trabaja nota que todos los campos tanto de como en son escritos a máquina. Así la firma de tipo de todo tuples en el espacio tuple es conocida y el tipo de tuple necesario en un en también es conocido. Este aconseja crear un subespacio tuple para cada firma de tipo. Por ejemplo, todo el (int, int, int) los tuples entran en un espacio y todo el (cuerda, int, flotador) los tuples entran en un espacio diferente. Cuando un en es ejecutado, sólo el subespacio que hace juego tiene que ser buscado. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 9 1. La coacción es que ningunas dos células contienen las mismas dos cartas, por otra parte el desciframiento sería ambiguo. Así cada una de la 676 estafa de elementos de la matriz - tains diferente de 676 digrams. ¡El número de combina-diferente tions es así 676!. Este es una muy buena parte. 2. el tiempo ha venido la morsa dijo a la conversación de muchas cosas de barcos y zapatos y lacre de coles y reyes de por qué el mar se hierve caliente y si los cerdos tienen alas pero espere un poco las ostras gritadas antes de que tengamos nuestra charla para algunos de nosotros son sin aliento y todos nosotros somos gordos ninguna prisa dijo que el carpintero ellos le agradecieron mucho por esto De Por el espejo (Tweedledum y Tweedledee). 3. ¡El número de permutaciones es n!, entonces este es el tamaño del espacio clave. Una ventaja consiste en que el ataque estadístico basado en propiedades de lenguas naturales no trabaja porque un E realmente representa un E, etc. 4. El remitente escoge una llave arbitraria y lo envía al tercero confiado codificado con la llave secreta que ellos comparten. El tercero confiado entonces descifra la llave arbitraria y nuevas criptas ello con la llave secreta que esto comparte con el receptor. Este mensaje es enviado entonces al receptor. 5. Una función como =x k es fácil para calcular pero la toma de la raíz de k-th de y es mucho más difícil. 6. Esto depende de cuanto de largo la contraseña es. El alfabeto de cual contraseñas es construido tiene 62 símbolos. El espacio de búsqueda total es 625 + 626 + 627 628 1014 + , que es aproximadamente 2 ´ . Si se conoce que la contraseña es caracteres k, el espacio de búsqueda es reducido a sólo 62 kilobyte. La proporción de éstos es así 2 ´ 1014 / 62 kilobyte. Para k de 5 a 8, estos valores son 242,235, 3907, 63, y 1. En otras palabras, el aprendizaje que la contraseña es sólo 5 caracteres reduce el espacio de búsqueda por a SOLUCIONES DE PROBLEMA PARA CAPÍTULO 9 39 el factor de 242,235 porque todas las contraseñas largas no tienen que ser intentadas. Este es un triunfo grande. Sin embargo, el aprendizaje que esto es ocho caracteres no ayuda mucho porque esto significa que todas las contraseñas (fáciles) cortas pueden ser saltadas. 7. Trate de calmar al ayudante. El algoritmo de codificación de contraseña es público. Pase - las palabras son codificadas por el programa de entrada al sistema t a n pr ont o c omo ellos son t e c l e a d o s , y la contraseña criptografiada es comparada a la entrada en el archivo de contraseña. 8. No, esto no hace. El estudiante puede averiguar fácilmente cual el número arbitrario para su superusuario es. Esta información está en el archivo de contraseña no codificado. Si es 0003, por ejemplo , entonces él sólo trata de codificar contraseñas potenciales como Susan0003, Boston0003, IBMPC0003, etc. Si otro usuario tiene la contraseña Bos-ton0004, él no lo descubrirá, sin embargo. 9. Hay muchos criterios. Aquí están algunos de ellos: Debería ser fácil e indoloro para medir (no muestras de sangre) deberían haber muchos valores disponibles (no observan el color) La característica no debería cambiarse con el tiempo (no color de pelo) Debería ser difícil forjar la característica (no peso) 10. No, no es factible. El problema es que los límites de serie no son comprobados. Las series arreglan no la línea con límites de página, entonces el MMU no es de ninguna ayuda. Además, la fabricación de un grano llamar para cambiar el MMU en cada llamada de procedimiento sería prohibitivamente cara. 11. Si pueden confiar en todas las máquinas, esto trabaja okey. Si no pueden confiar en unos, el esquema se estropea, porque una máquina poco fiable podría enviar a un sabio mes-a una máquina de confianza que le pide realizar alguna orden en el nombre del superusuario. La máquina que recibe el mensaje no tiene ningún modo de contar si la orden realmente provino con el superusuario, o con un estudiante. 12. Ambos hacen el uso de funciones de codificación de dirección única. El UNIX almacena todas las contraseñas en el archivo de contraseña el esquema de Lamport y codificado usa un - camino funciones para generar una secuencia de contraseñas. 13. Esto no trabajaría para usarlos avanzado. Si un intruso capturara un, él sabría cual usar próxima vez. La utilización de ellos hacia atrás previene este peligro. 14. Un modo de firmar un documento sería para la tarjeta elegante para leer en el docu-ment, hacer un picadillo de ello, y luego codificar el picadillo con la llave privada del usuario, almacenada en la tarjeta. El picadillo criptografiado sería la salida al ordenador de cafetería de Internet, pero la llave secreta nunca dejaría la tarjeta elegante, entonces el esquema es seguro. 15. Si las capacidades son usadas para hacer posible de tener pequeñas esferas de protección, no; por otra parte sí. Si un redactor, por ejemplo, es arrancado con sólo las capacidades del archivo para ser corregido y su archivo reutilizable, entonces pase lo que pase bromas están al acecho dentro del redactor, todo que esto puede hacer es leído aquellos dos archivos. Por otra parte, si el redactor puede tener acceso a todos los objetos del usuario, entonces los caballos de enero Tropueden hacer su trabajo sucio, capacidades o no. 16. El compilador podría insertar el código en todas las referencias de serie para hacer la comprobación de límites. Este rasgo prevendría ataques de desbordamiento parachoques. No es hecho porque esto haría más lentos todos los programas considerablemente. Además, en C no es ilegal para declarar una serie de tamaño 1 como un parámetro de procedimiento y luego referirse a ele-ment 20, pero claramente la serie actual cuya dirección ha sido pasada debería tener al menos 20 elementos. 17. De un punto de vista de seguridad, sería ideal. Los bloques usados a veces son expuestos, escape información valiosa. De un punto de vista de interpretación, el zeroing bloquea el tiempo de CPU de basura, así degradando la interpretación. 18. Esto debería leer la contraseña entera todo el tiempo, aun si esto ve temprano en que la contraseña se equivoca. Aquellos camino, una falta de página siempre ocurrirá cuando pasar palabra - es en parte en una página de memoria. 19. Para cualquier sistema operativo todos los programas deben comenzar o la ejecución en una dirección conocida o hacer almacenar una dirección inicial en una posición conocida en el jefe de archivo de programa. (a) el virus primeras copias las instrucciones en la dirección de principio normal o la dirección en el jefe a un lugar seguro, y luego inserta un salto a sí en el código o su propia dirección de principio en el jefe. (b) Cuando hecho con su propio trabajo, el virus ejecuta las instrucciones de las que esto tomó prestado seguido un salto a la siguiente instrucción que habría sido ejecutada, o transfiere el control a la dirección que esto encontró en el jefe original. 20. Un registro de bota de maestro requiere sólo un sector, y si el resto de la primera pista es libre esto proporciona el espacio donde un virus puede esconder el sector de bota original también como una parte sustancial de su propio código. Los reguladores de disco modernos leen y almacenan pistas enteras en un buffer a la vez, así no habrá ninguna tardanza perceptible o sonidos de los adicionales busca cuando los datos suplementarios son leídos. 21. C programas tienen la extensión .c. En vez de usar el sistema de acceso llaman para probar para ejecutan el permiso, examinan el nombre de archivo para ver si esto se termina en .c. Este código lo hará trabajo por horas *file 3 nombre; int len; archivo 3 nombre = dp-> d 3 nombre; len = strlen (archivo 3 nombre); si (strcmp (&file 3 nombre [len -2 cuenta, ".c") == 0) infectan (s); SOLUCIONES DE PROBLEMA PARA CAPÍTULO 41 39 22. Ellos probablemente no pueden contar, pero ellos pueden adivinar que XORing una palabra dentro del virus con el resto producirá el código máquina válido. Sus ordenadores pueden intentar sólo cada palabra de virus por su parte y ver si cualquiera de ellos produce el código máquina válido. Para hacer más lento este proceso, Virgil puede usar una mejor codificación algo-rithm, como la utilización de llaves diferentes para el raro y hasta palabras, y luego rotat-ing la primera palabra dejada por algún número de trozos determinados por una función de picadillo en las llaves, haciendo girar la segunda palabra que número de trozos más uno, etc. 23. El compresor es necesario para comprimir otros programas ejecutables como la parte del proceso de infección de ellos. 24. La mayor parte de virus no quieren infectar un archivo dos veces. Esto no podría trabajar hasta. Por lo tanto es importante ser capaz de descubrir el virus en un archivo para ver si es infectado ya. Todas las técnicas solían hacer con fuerza para el software de antivirus para descubrir virus también lo hace con fuerza para el virus sí mismo para contar qué archivos han sido infectados. 25. Primero, el correr del programa fdisk d e l d i s c o d u r o es un error. Puede ser infectado y esto puede infectar el sector de bota. Tiene que ser dirigido del CD-ROM original o un disco flexible protegido contra escritura. Segundo, los archivos restaurados pueden ser infectados. El aplazamiento de ellos sin limpiarlos puede instalar de nuevo sólo el virus. 26. Sí, pero el mecanismo es ligeramente diferente del Windows. En UNIX un companion virus puede ser instalado en un directorio en el camino de búsqueda delante del que en el cual el verdadero programa vive. El ejemplo más común debe insertar un programa ls en un directorio de usuario, que con eficacia anula/bin/ls porque es encontrado primero. 27. Un gusano es un programa aislado que trabaja por sí mismo. Un virus es un fragmento de código que ata a otro programa. El gusano se reproduce haciendo más copias del programa de gusano. El virus se reproduce infectando otros programas. 28. Obviamente, la ejecución de cualquier programa de una fuente desconocida es peligrosa. La autoextracción de archivos puede ser sobre todo peligrosa, porque ellos pueden liberar archivos múltiples en directorios múltiples, y el programa de extracción sí mismo podría ser un Caballo de Troya. Si una opción está disponible es mucho mejor obtener archivos en la forma de un archivo ordinario, que usted puede extraer entonces con instrumentos en los que usted confía. 29. Esto no importa. Si el cero se llena es usado, entonces S2 debe contener el prefijo verdadero como un número entero no firmado en la orden baja k trozos. Si la extensión de signo es usada, entonces S2 también debe ser el signo ampliado. Mientras S2 contiene los resultados correctos de cambiar una dirección verdadera, esto no importa lo que está en los trozos superiores no usados de S2. 42 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 9 30. Aquí está la matriz de protección: 2222222222222222222222222222222222222222222222222222 222222222222222222222222O2b2j2e2c2t22222222222222222222222 22D22o2m22a2in22222P2P2P22-N22o2t2e2s22p22ro22g21222p2r2o2j2e2c2t2.t222s2p2l2a2s2h2.2g2if22 asw Lea Leer Leer Leer Escri Escribir bir 222222222222222222222222E22x2ec2222222222222222222222222 gmw Leer Leer 2222222222222W2r2i2te2222222222222222W22r2it2e2222222222222222 usuarios Lea Leer 22222222222222222222222222222222W22r2it2e2222222222222222 devel Leer Leer 222222222222222222222222E22x2ec2222222222222222222222222 31. Los ACLs son como sigue: 2222222222222222222222222222222222222 22F2i2le2222222222A2C22L22222222222222222222 PPP-notas gmw:RW; *:R prog1 asw:RWX; devel:RX; *:R project.t asw:RW; users:RW 22s2p2l2a2s2h2.g2i2f2222a2s2w2:2R2W22;2d22e2v2e2l:2R222222222 Asuma que * significa todos. 32. Si asw quiere permitir gmw, pero ningún otro miembro de usuarios para mirar splash.gif él podría modificar el ACL a asw:RW; devel:R; gmw:R. 33. Los navegadores existentes vienen precargados por las llaves públicas de varios confió en terceros como la Corporación Verisign. Su negocio consiste en verifying llaves públicas de otras compañías y certificados de composición para ellos. Estos certificados son firmados por, p or e j e mp l o , la llave privada de Verisign. Ya que la llave pública de Verisign es incorporada en el navegador, los certificados firmados con su llave privada pueden ser verificados. 34. Es entrado sólo en la matriz dos veces. En el ejemplo dado en el texto, el printer1 está en dos esferas simultáneamente. No hay ningún problema aquí. 35. Para hacer un archivo legible por cada uno excepto una persona, las listas de control de acceso son la única posibilidad. Para compartir archivos privados, las listas de control de acceso o capa-bilities pueden ser usados. Para hacer el público de archivos, las listas de control de acceso son las más fáciles, pero también puede ser posible poner una capacidad del archivo o archivos en un lugar famoso en un sistema de capacidad. 36. El servidor verificará que la capacidad es válida y luego generar una capacidad más débil. Este es legal. D e s p u é s d e t o d o , el amigo puede r e g a l a r sólo el capacidad esto ya tiene. Dándolo el poder deregalar algo aún más débil no es una amenaza de seguridad. Si usted tiene la capacidad de regalar, supongamos, leer/escribir el poder, regalando el poder sólo para leer no es un problema. 37. El no Que anotaría, que viola el * propiedad. 38. El no Que leería, que viola la propiedad de seguridad simple. 39. Una escritura de proceso a otro proceso es similar a una escritura de proceso a un archivo. Por consiguiente, el * la propiedad tendría que sostener. Un proceso podría escribir, pero no anotar. El Proceso B podría enviar a C, D, y E, pero no a A. 40. En la foto original, el R, G, y B, despide cada uno permite valores integrales distintos de 0 a 255, incluido. Este significa que hay 224 puntos válidos en color el espacio que un pixel puede ocupar. Cuando 1 trozo es llevado para nel chan-encubierto, sólo hasta los valores son permitidos (asunción que el trozo secreto es sustituido por a 0 en todas partes). Así tan la mayor parte del espacio es cubierto, pero la resolución en color es sólo la mitad como buena. En total, sólo 1/8 de los colores puede ser representado. Trazan un mapa de los colores rechazados en el color adyacente todos cuyo valores son nú me r os pa r e s , por ejemplo , los colores (201, 43, 97), (201, 42, 97), (200, 43, 96), (y 200, 42, 97) ahora todo el mapa en el punto (200, 42, 96) y puede ser ya no distinguido. 41. La imagen contiene 1,920,000 pixeles. Cada pixel tiene 3 trozos que pueden ser usados, dados una capacidad cruda d e 7 2 0 , 0 0 0 b yt e s . Si este es con eficacia doblado debido a la compresión del texto antes de almacenarlo, la imagen puede creer que el texto de ASCII ocupa - ing aproximadamente 1,440,000 bytes antes de la compresión. Así una imagen sola puede sostener el valor de un disco flexible entero de datos de ASCII. No hay ninguna extensión debido al steganography. La imagen con los datos escondidos es el mismo tamaño que el origi-nal imagen. La eficacia es el 25 %. Este puede ser fácilmente visto del hecho esto 1 trozo de cada muestra en color de 8 trozos contiene la carga útil, y la compresión aprieta dos trozos del texto de ASCII por trozo de carga útil. Así por pixel de 24 trozos, effec-tively 6 trozos del texto de ASCII están siendo codificados. 42. Los disidentes podrían firmar los mensajes usando una llave privada y luego tratar de hacer público extensamente su llave pública. Este podría ser posible teniendo alguien lo pasan de contrabando del país y luego lo fijan al Internet de un intento de coun-libre. 43. Lo siguiente es dos programas C que hacen el trabajo. Dirigido en en el mismo directorio pero en ventanas diferentes. El principio descifra primero. /* codificador encubierto - Escrito por Albert S. Woodhull el 3 de diciembre de 2000 C versión, usando permisos de archivo Este programa espera leer una cuerda de ASCII ’0’ 'y 1' caracteres de su entrada estándar. Esto genera una salida encubierta por alternativamente la fabricación de un dueño de archivo legible o no legible, controlando el tiempo el el archivo está en cada estado. Cada "vez de trozo" consiste en tres vez intervalos. El intervalo medio determina el valor del trozo. Para hacer señas 'un 0' el archivo es legible durante los dos primeros intervalos y no legible durante el último intervalo. Para hacer señas 'un 1' el archivo es legible durante el primer intervalo y no legible durante los segundos y terceros intervalos. Un colaborador puede determinar la legibilidad de un archivo para su dueño aunque el colaborador él mismo no tenga ningún acceso, mientras el archivo está en un directorio que puede ser leído. La llamada de sistema de sueño es usada para controlar el cronometraje. Este hace el proceso entero bastante lento, ya que usted no puede dormir menos de 1 segundo. */ #define MÁXIMO 80 #include <stdio.h> #include <fcntl.h> int principal (vacío) { int c; int yo = 0; int n = 0; int fd; trabajo por horas s [cuenta de MÁXIMO; /* consiga la cuerda de entrada, ahorre sólo ’0’s y '1’s, trabajos por horas de cuenta */ ¡mientras (((c = getchar ())! = EOF) && (n <MÁXIMO)) si ((c == ’0’) || (c == ’1’)) s [n ++ cuenta = c; s [n cuenta = ’’; /* cree el archivo de señal */ fd = creat ("/tmp/tmp000", 0600); /* para cada uno ’0’ 'o 1' ejecutan la secuencia correspondiente */ ¡mientras (yo! = n) { c = s [yo cuenta ++; chmod ("/tmp/tmp000", 0); interruptor (c) { caso ’0’: sueño (2); chmod ("/tmp/tmp000", 0400); sueño (1); ruptura; caso ’1’: sueño (1); chmod ("/tmp/tmp000", 0400); sueño (2); ruptura; } } /* deshágase de pruebas */ desate ("/tmp/tmp000"); } -----------------------------------------------------------------------------------------/* decodificador encubierto - Escrito por Albert S. Woodhull el 3 de diciembre de 2000 C versión, usando permisos de archivo. Este programa repetidamente comprueba los permisos de un archivo. El el codificador de compañero alternativamente cambia al dueño trozo legible de 0 a 1 en una base calculada. Una transición de legible a señales ilegibles el principio de un poco, el cronometraje de la transición atrás a señales legibles el valor del trozo. Si el tiempo ilegible es más largo que el tiempo legible el trozo es un cero, si esto es más corto el trozo es 1. */ #include <stdio.h> #include <sys/stat.h> #define VERDADERO #define FALSO 0 1 int principal (vacío) { struct stat statbuf; descifre de int, c0, c1, modo, p0, p1; /* Comience el decodificador antes de comenzar el codificador. Este lazo espera el archivo a ser creado. */ mientras (stat ("/tmp/tmp000", &statbuf) <0) los/* no hacen nada */; modo = statbuf.st3mode; /* Este lazo descubre el principio del primer trozo. */ ¡mientras ((modo y S3IRUSR)! = 0) { stat ("/tmp/tmp000", &statbuf); modo = statbuf.st3mode; } el descifre = VERDADERO; mientras (descifrando == VERDADERO) { c0 = c1 = 0; /* fase 0, uso c0 para contar */ p0 = VERDADERO; mientras (p0 == VERDADERO) { /* refresque statbuf y compruebe para el final de la señal */ si (stat ("/tmp/tmp000", &statbuf) <0) p0 = FALSO; modo = statbuf.st3mode; si ((modo y S3IRUSR) == 0) c0 ++; más p0 = FALSO; } /* fase 1, uso c1 para contar */ p1 = VERDADERO; mientras (p1 == VERDADERO) { /* refresque statbuf y compruebe para el final de la señal */ si (stat ("/tmp/tmp000", &statbuf) <0) p1 = FALSO; modo = statbuf.st3mode; ¡si ((modo y S3IRUSR)! = 0) c1 ++; más p1 = FALSO; } /* decida sobre el valor de trozo y salida ello */ si (c0> c1) printf ("0"); más printf ("1"); /* haga la salida visible ahora */ fflush (NULO); /* ver si la señal está todavía allí */ si (stat ("/tmp/tmp000", &statbuf) <0) { el descifre = FALSO; putchar (’0); } } } SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 10 1. El proceso de vocación tiene que poner l a s i g na t ur a de sistema en un registro o en la pila. 2. Los archivos que serán puestos en una lista son: bonefish, quacker, seahorse, y comadreja. 3. Esto imprime el número de líneas del archivo xyz que contienen la cuerda "nd" en ellos. 4. La tubería es como sigue: diríjase-8 z | siguen-1 La primera parte selecciona las ocho primeras líneas de z y los pasa para seguir, que sólo escribe el último en la pantalla. 5. Ellos son separados entonces la salida estándar puede ser desviada sin afectar stan-dard error. En una tubería, la salida estándar puede ir a otro proceso, pero stan-dard error todavía escribe en el terminal. 6. Cada carreras de programa en su propio proceso tan seis nuevos procesos son comenzadas. 7. Sí. La memoria del niño es una copia exacta del padre, incluso la pila. Así si las variables de ambiente estaban en la pila del padre, ellos estarán en la pila del niño también. 8. Ya que los segmentos de texto son compartidos, sólo 36 KILOBYTES tienen que ser copiados. La máquina puede copiar 8 0 b yt e s por microsegundo, entonces 3 6 K I L OB YT ES toman 0.46 msec. Añada otro 1 msec para entrar y del grano, y todo el asunto toma aproximadamente 1.46 msec. 9. El niño puede cambiar unas variables y luego salir. Con el tenedor, el padre no es garantizado esto nada el niño puede hacer afectará la dirección del padre espacio. Con vfork, esta garantía está caducada, introduciendo el possibil-ity de bichos difíciles de encontrar. 10. Cada DT el uso de CPU es partido por la mitad, entonces después de un intervalo es 10, entonces 5, 2, 1, y 0. Esto toma 5DT para golpear 0. 11. Sí. Esto no puede correr má s tan antes su memoria vuel ve a la lista libre, mejor. 12. Las señales parecen al hardware interrumpe. Un ejemplo es la señal despertadora, que señala el proceso en un número específico de segundos en el futuro. El otro es la señal de excepción de punto flotante, que indica la división por el cero o algún otro error. Muchas otras señales también existen. 13. Los usuarios malévolos podrían causar estragos con el sistema si ellos pudieran enviar señales a procesos sin relaciones arbitrarios. Nada pararía a un usuario de escribir un programa que consiste en un lazo que envió una señal al proceso con PID yo para todos yo de 1 a PID máximo. Muchos de estos procesos serían improvisados para la señal y serían matados por ello. Si usted quiere matar a sus propios procesos, que está bien, pero la exterminación de los procesos de su vecino no es aceptable. 14. Esto sería la utilización imposible UNIX o Windows 2000, pero el hardware de Pentium hace realmente este posible. Lo que es necesario debe usar los rasgos de segmentación del hardware, que no son apoyados por UNIX o por Windows 2000. El sistema operativo podría ser puesto en uno o varios segmentos globales, con las llamadas de procedimiento protegidas de hacer llamadas de sistema en vez de trampas. El OS/2 trabaja este camino. 15. Generalmente, ejecución en segundo plano de demonios que hace cosas como imprenta y envío de correo electrónico. Ya que la gente no se sienta por lo general en el borde de sus sillas que los esperan a terminar, les dan la prioridad baja, absorbiendo el tiempo de CPU de exceso no necesitado por procesos interactivos. 16. Un PID debe ser único. Tarde o temprano el contador se abrigará alrededor y volverá a 0. Entonces esto va a tan hacia arriba a, por ejemplo, 15. Si sólo resulta que tratan 15 era hace meses comenzados, pero todavía corre, 15 no puede ser adjudicado a un nuevo proceso. Así después de que PID propuesto es elegido usando el contador, una búsqueda de la mesa de proceso debe ser hecha para ver si el PID está ya en el uso. 17. Cuando el proceso sale, darán al padre el estado de salida de su niño. El PID es necesario para ser capaz de identificar al padre entonces el estado de salida puede ser transferido al proceso correcto. 18. Si todos los trozos sharing3flags son puestos, la llamada de clon comienza un hilo convencional. Si todos los trozos son limpiados la llamada es esencialmente un tenedor. 19. Los 1000 son completamente arbitrarios. La única exigencia es que cada tiempo real el hilo consigue una calidad más alta que cada hilo de tiempo compartido. 20. La carga del sistema operativo requiere el entendimiento del formato de sistema de archivo, ser capaz de buscar el directorio raíz, y ser capaz de interpretar el formato binario capaz execut-en el cual el sis te ma oper ativo es almacenado en el disco. Esto pregunta mucho de un programa de elástico de bota de 512 bytes. Esto puede cargar apenas sólo el programa de bota de una posición fija, pero este puede ser un programa largo, con el conocimiento detallado del sistema de archivo, directorio, y formatos binarios. 21. Con el texto compartido, 100 KILOBYTES son necesarios para el texto. Cada uno de los tres procesos necesita 80 KILOBYTES para su segmento de datos y 10 KILOBYTES para su pila, entonces la memoria total necesaria es 370 KILOBYTES. Sin el texto compartido, cada programa necesita 190 KILOBYTES, entonces tres de ellos necesitan un total de 570 KILOBYTES. 22. Sí. Con un campo 16 bites, pueden haber un máximo de entradas de mapa de corazón de 64 kilobyte, de ahí un máximo de marcos de página de 64 kilobyte. Así no hay ningún modo de manejar memorias más grandes que 64 MB. Cuando VAX original s a l i ó , 2 MB fue considerado una memoria muy grande, y 6 4 M B era con eficacia el infinidad. Ahora este límite de 64 MB se ha hecho completamente sensible. 23. El segmento de texto no puede cambiarse, entonces nunca tiene que ser paginado. Si sus marcos son necesarios, ellos pueden ser abandonados sólo. Las páginas siempre pueden ser recuperadas del sistema de archivo. El segmento de datos no debe ser paginado atrás al archivo capaz execut-, porque es probable que esto se ha cambiado desde ser traído. El Pag-ing ello atrás arruinaría el archivo ejecutable. El segmento de pila no está hasta presente en el archivo ejecutable. 24. Dos proceso podría trazar un mapa del mismo archivo en sus espacios de dirección al mismo tiempo. Este les da un modo de compartir la memoria física. La mitad de la memoria compartida podría ser usada como un parachoques de un a B y mitad como un parachoques de B a A. Para comunicarse, un proceso escribe un mensaje a su parte de la memoria compartida, luego una señal al otro para indicar que hay un mensaje que lo espera. La respuesta podría usar el otro parachoques. 25. La dirección de memoria 65,536 es el byte de archivo 0, entonces la dirección de memoria 72,000 es el byte de archivo 6464. 26. Al principio, el valor de cuatro páginas del archivo fueron trazado un mapa: 0, 1, 2, y 3. La llamada tiene éxito y después de que es hecho, sólo todavía trazan un mapa de las páginas 2 y 3, es decir bytes 16,384 aunque 32,767 27. Es posible. Por ejemplo, cuando la pila crece más allá de la página de fondo, una falta de página ocurre yelsistemaoperativo normalmente le adjudica la siguiente página más baja. Sin embargo, la pila ha chocado con el segmento de datos, la siguiente página no puede ser asignado a la pila, entonces el proceso debe ser terminado. Incluso si hay otra página disponible en la memoria virtual, el área de paginación de el disco podría ser lleno, haciéndolo imposible de asignar el al ma c e na mi e nt o de re s pal do para la nueva página, que también terminaría el proceso. 28. Es posible si los dos bloques no son compañeros. Considere la situación del Higo 10-0 (e). Dos nuevas peticiones e n t r a n para 8 páginas en cada uno. En este punto el fondo 32 páginas de la memoria son poseídas por 4 usuarios diferentes, cada uno con 8 páginas. Ahora los usuarios 1 y 2 liberan sus páginas, pero los usuarios 0 y 3 sostienen el suyo. Este cede una situación c o n 8 p á g i n a s usadas, 8 p á g i n a s libres, 8 p á g i n a s libre, y 8 páginas usadas. Tenemos dos bloques adyacentes del tamaño igual que no puede ser combinado porque ellos no son compañeros. 29. La paginación a una partición permite el uso de un dispositivo crudo, sin el elevado de usar estructuras de datos de sistema de archivo. Para tener acceso al bloque n, el sistema operativo puede calcular su posición de disco por sólo añadiéndolo a l t a c o d e s a l i d a del parti-tion. No hay ninguna necesidad de pasar por todos los bloques indirectos que otro - sabio ser necesario. 30. La apertura de un archivo por un camino con relación al directorio de trabajo es por lo general más estafa - venient para el programador o usuario, ya que un nombre de camino más corto es necesario. Es también por lo general mucho más simple y requiere que menos disco tenga acceso. 31. Los resultados son como sigue. (a) la cerradura es concedido. (b) La cerradura es concedida. (c) El C es bloqueado ya que los bytes 20 a 30 son no disponibles. (d) A es bloqueado ya que los bytes 20 a 25 son no disponibles. (e) El B es bloqueado ya que el byte 8 es no disponible para el cierre exclusivo. En este punto ahora tenemos un punto muerto. Ninguno de los procesos estará capaz alguna vez de correr otra vez. 32. La cuestión se levanta de que el proceso consigue la cerradura cuando se hace disponible. La solución más simple es dejarlo indeterminado. Este es lo que POSIX hace porque es lo más fácil poner en práctica. El otro debe requerir que las cerraduras sean concedidas en la orden ellos fueron solicitados. Este acercamiento es más trabajo para la realización, pero previene el hambre. Todavía otra posibilidad es dejar a procesos proporcionar una prioridad pidiendo una cerradura, y usar estas prioridades de hacer una opción. 33. Un acercamiento es dan un error y rechazan realizar el lseek. El otro debe hacer la compensación hacerse negativo. Mientras no es usado, no hay ningún daño hecho. Sólo si una tentativa es hecha para leer o escribir que el archivo debería ser el error mes-sabio ser dado. Si el lseek es seguido de otro lseek que hace la compensación positiva, ningún error es dado. 34. El dueño puede leer, escribir, y ejecutarlo, y t o d o s l o s d e má s (incluso el grupo del dueño) pueden leer sólo y ejecutarlo, pero no escribirlo. 35. Sí. Cualquier dispositivo de bloque capaz de lectura y escritura de un bloque arbitrario puede sea usados para sostener un sistema de archivo. Incluso si no había ningún modo de buscar a un bloque específico, es siempre posible rebobinar la cinta y luego contar avanzado al bloque solicitado. Tal sistema de archivo no sería un archivo de alto rendimiento sys-tem, pero esto trabajaría. El autor realmente ha hecho este en un PDP-11 que usa DECtapes y esto trabaja. 36. El no del archivo todavía tiene sólo a un dueño. Si, por ejemplo, sólo el dueño puede escribir en el archivo, el otro partido no puede hacer así. La unión de un archivo en su conservador direc-no le da de repente ningún derecho que usted no tenía antes. Esto sólo crea un nuevo camino para tener acceso al archivo. 37. Cuando el directorio de trabajo es cambiado, usando la llamada de sistema chdir, el nodo "yo" para el nuevo di re c t or i o de tr a baj o soy traído y guardado en la memoria, en la mesa de nodo "yo". El i-nodo para el directorio raíz está también allí. En el usuario struc-ture, las agujas de ambos de éstos son mantenidas. Cuando un nombre de camino tiene que ser analizado, el primer carácter es inspeccionado. Si es "un/", la aguja del nodo de raíz "" soy usado como el lugar inicial, por otra parte la aguja del i-nodo del directorio de trabajo es usada. 38. El acceso al i-nodo del directorio raíz no requiere un acceso de disco, entonces tenemos lo siguiente: 1. Lectura el / directorio para buscar "usr". 2. Lectura en el i-nodo para/usr. 3. Lectura del directorio/usr para buscar "ast". 4. Lectura en el i-nodo para/usr/ast. 5. Lectura del directorio/usr/ast para buscar "trabajo". 6. Lectura en el i-nodo para/usr/ast/work. 7. Lectura del directorio/usr/ast/work para buscar "f". 8. Lectura en el i-nodo para/usr/ast/work/f. Así e n t o t a l , ocho disco tiene acceso son necesarios antes de que el i-nodo necesario esté en la memoria. 39. El i-nodo sostiene 10 direcciones. El bloque indirecto solo sostiene 256. El dou-ble bloque indirecto conduce a 65,536, y el indirecto triple conduce a 16,777,216, para un total de 16,843,018 bloques. Este limita el tamaño de archivo máximo con 10 + 256 + 65,536 + 16,777,216 bloques, que es aproximadamente 16 gigabytes. 40. Cuando un archivo está cerrado, el contador de su i-nodo en la memoria es decremented. Si es mayor que el cero, el i-nodo no puede ser quitado de la mesa porque el archivo está todavía abierto en un poco de proceso. Sólo cuando el cero de golpes de contador puede el i-nodo ser quitado. Sin la cuenta de referencia, el sistema no sabría cuando quitar el i-nodo de la mesa. Haciendo una copia separada del nodo "yo" cada vez que el archivo fue abierto no trabajaría porque los cambios hechos en una copia no serían visibles en los demás. 52 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 10 41. El escondite parachoques tiene acceso son tan infrecuentes comparado a la memoria tiene acceso, que el coste de manejar la cola LRU en el software es aceptable. Con páginas, hay típicamente una o dos referencias por instrucción, que hace principal - taining una cola LRU poco práctico. 42. Por arrancar a la fuerza los contenido del escondite parachoques en el disco cada 30 segundos, el daño hecho por un accidente es limitado con 30 segundos. Si la actualización no corriera, un proceso podría escribir un archivo, entonces salir con los contenido llenos del archivo todavía en el escondite parachoques. De hecho, el usuario podría salir del sistema entonces y irse a casa con el archivo todavía en el escondite parachoques. Una hora más tarde el sistema podría estrellarse y perder el archivo, todavía sólo en el escondite parachoques y no en el disco. Al día siguiente no tendríamos a un usuario feliz. 43. Todo que esto tiene que hacer es puesto la cuenta de eslabón a 1 desde sólo una entrada de directorio se refiere - ences el i-nodo. 44. Es generalmente getpid, getuid , getgid , o algo así. Todo que ellos hacen es traen un número entero de un lugar conocido y lo devuelven. Cada otra llamada hace más. 45. El archivo es simplemente quitado. Este es el camino normal (realmente, el único camino) quitar un archivo. 46. Undiscoflexible de 1.44 MB puede sostener 1440 bloques de datos crudos. El bloque de bota, bloque súper, bloque de descriptor de grupo, bloquea el mapa de bit, y el mapa de bit de i-nodo de un sistema de archivo ext2 cada uso 1 bloque. Si 8192 i-nodos de 128 bytes son creados, éstos los i-nodos ocuparían otros 1024 bloques, dejando sólo 411 bloques no usados. Al menos un bloque es necesario para el directorio raíz, yéndose del espacio de 410 bloques de datos de archivo. Realmente el Linux mkfs programa es bastante elegante para no hacer más i-nodos que puede ser posiblemente usado, entonces la ineficiencia no es este mal. E n a u s e n c i a 184 inodes ocupación de 23 bloques serán creados. Sin embargo, debido al elevado del sistema de archivo ext2, Linux normalmente usa el sistema de archivo MINIX en discos flexibles y otros pequeños dispositivos. 47. Es a menudo esencial tener a alguien que puede hacer cosas que son normalmente para - ofrecidas. Por ejemplo , un usuario arr anca un trabajo que genera una cantidad infinita de salida. El usuario entonces sale del sistema y continúa unas vacaciones de tres semanas a profesor universitario Lon-. Tarde o temprano el disco se llenará, y el superusuario tendrá al aliado manu-matan el proceso y quitan el archivo de salida. Muchos otros tales ejemplos existen. 48. Probablemente alguien tenía el archivo abierto cuando el profesor cambió el permis-sions. El profesor debería haber suprimido el archivo y luego haber puesto otra copia de su a r c h i v o p r i n c i p a l en el directorio público. También, él debería usar un mejor método para distribuir archivos, como una página Web, pero está más allá del alcance de este ejercicio. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 11 1. Una ventaja consiste en que todo está en un lugar, que hace fácil para encontrar. Una desventaja es que un bloque de disco malo en el índice de alto nivel en una colmena puede causar el desastre con el sistema entero. 2. HAL es simple y franco. Incluso el ratón, el disco, y todos los otros controladores de dispositivos en ello lo harían pesado y destruirían su func-tion como una capa delgada que esconde ciertas diferencias de hardware básicas del com-puter sí mismo, pero no los dispositivos de entrada - salida. 3. Una base de datos genealógica podría encontrar conveniente de registrar el nacimiento y las fechas de muerte de los antepasados de alguien que usan el formato de tiempo de sistema estándar. De hecho , cualquier base de datos histórica podría usar este. 4. DPCs dirigido en un contexto arbitrario. APCs dirigido en el contexto de un hilo específico. El acto de señalar el proceso implica escribir un marco en la pila del usuario entonces la señal puede ser devuelta de. Este requiere el acceso al espacio de dirección del usuario. Por consiguiente, un APC es necesario. 5. (a) el gerente de proceso usa al gerente de objeto para crear hilos. (b) El gerente de memoria usa al gerente de seguridad para ver si pueden trazar un mapa de un archivo. (c) El gerente de enchufe-y-juego usa la configuración mgr para registrar un nuevo dispositivo. 6. Una señal es manejada por un nuevo hilo en el contexto de algún proceso. Por ejemplo, cuando la llave Dejada es golpeada o aun cuando un hilo critica. Realmente no hace ningún sentido de agarrar una señal en el contexto de un hilo. Realmente tiene que ser por proc-ess. Así el manejo de señal es realmente un por actividad de proceso. 7. Haría más sentido en servidores. Las máquinas de cliente tienen menos procesos concurrentes. Las bibliotecas compartidas sólo tienen sentido si hay procesos múltiples que los comparten. Por otra parte, es más eficiente unir estáticamente las bibliotecas y aceptar la copia. La ventaja de la unión estática consiste en que sólo aquellos pro - cedures que realmente son necesarios son cargados. Con DLLs puede haber pro - cedures en la memoria que nadie usa. 8. Las funciones en ntdll.dll son aquellos necesitados por los subsistemas, es decir el sys-tem llamadas. Las funciones en ntoskrnl.exe son exportadas funciones usadas por conductores y otras partes del sistema operativo. No hay ninguna relación entre ellos. El hecho que ellos son hasta cercanos es sólo una coincidencia. Ellos podrían haberse diferenciado fácilmente por un factor de cinco. 9. El no de la orden baja 3 trozos de la aguja de objeto en el mango es usado para banderas, como declarado en el texto. Éstos deben ser enmascarados lejos antes de que la aguja pueda ser 54 SOLUCIONES DE PROBLEMA PARA EL CAPÍTULO 10 seguido. Por consiguiente cada aguja tiene 3 trozos cero como los trozos de orden baja. Este significa que los jefes de objeto deben comenzar en direcciones que son múltiplos de 8 bytes. 10. Hay un límite de 32 operaciones porque hay sólo 32 trozos de derechos en el mango de objeto. 11. No es posible porque los semáforos y mutexes son objetos ejecutivos y las secciones críticas no son. Ellos son manejados sobre todo en el espacio de usuario (pero tener realmente un semáforo de apoyo cuando el bloqueo es necesario). El gerente de objeto no sabe sobre ellos y ellos no tienen mangos, como fue declarado en el texto. Ya que WaitForMultipleObjects es una llamada de sistema, el sistema no puede realizar un Booleano o de varias cosas, uno de las cuales esto no sabe nada sobre. La llamada debe ser una llamada de sistema porque los semáforos y mutexes son objetos de grano. En resumen no es posible tener cualquier llamada de sistema que mezcla objetos de grano y objetos de usuario como este. Tiene que ser un o el otro. 12. (a) las últimas salidas de hilo. (b) Un hilo ejecuta ExitProcess . (c) Otro proceso con un mango a éste lo mata. 13. El quántum de Profesional de 2000 de Windows es 20 msec y hay 12 hilos en prioridades más alto que 3. Así la primera prioridad 3 hilo debe esperar 240 msec hasta que esto consiga un tiro. 14. Como máximo unos microsegundos. Esto se adelanta el hilo corriente inmediatamente. Ello es sólo una pregunta de cuanto esto toma para dirigir el código de distribuidor para hacer el interruptor de hilo. 15. La bajada de su prioridad debajo de la prioridad baja podría ser usada como un juego de palabras - ishment para usar el tiempo de CPU excesivo u otros recursos. 16. El procesador no permitirá a tales instrucciones ser ejecutado en el modo de usuario y los atrapará como errores. En principio, un filtro que lee un programa binario y sustituye todos EN e instrucciones con llamadas a rutinas que usan servicios OS legales podría ser escrito. O bien, el programa podría ser inter - preted, con éstos las instrucciones manejadas haciendo el sistema de 2000 de Windows llaman para hacer la entrada - salida. 17. Un camino es aumentar la prioridad de procesos importantes. Un segundo camino es dar a procesos importantes quántums más largos. 18. El problema no puede ser solucionado usando mesas de página. Las mesas de páginas trazan un mapa entre direcciones virtuales y físicas. El problema aquí es que el procedimiento compartido está siendo colocado en direcciones virtuales diferentes. Si una instrucción en dirección 65,536 lee JMP 300, esto brincará a la memoria inválida (debajo de 64 KILOBYTES) y trampa. Si es remendado para leer JMP 65836 que irá adelante 300bytes, que es SOLUCIONES DE PROBLEMA PARA CAPÍTULO 11 55 correcto para aquel proceso. Pero si un proceso diferente tiene esta instrucción en, supongamos, la dirección 131,072, brincando a 65836 se equivoca. Esto no importa donde en la memoria física la página es. Para el segundo proceso, la CPU genera una dirección virtual incorrecta. Ningún ajuste de las mesas de página puede trazar un mapa correctamente de una dirección virtual incorrecta. 19. El Pentium tiene segmentos múltiples, cada comienzo en la dirección virtual 0. Cada uno Podrían trazar un mapa del archivo de .dll en un segmento separado que comienza en la dirección virtual 0 en aquel segmento. Para hacer este, la segmentación tendría que ser apoyada por Windows 2000. 20. Sí. Los VADs son el modo que el gerente de memoria guarda la pista de la cual las direcciones están en el uso y que son libres. Un VAD es necesario para una región reservada para prevenir una tentativa subsecuente de reservarlo o cometerlo de tienen éxito - ing. 21. (1) es una decisión de política sobre cuando y como recortar un funcionamiento se ponen. (2) (y 3) son requerido. (4) es una decisión de política sobre como escribir agresivamente páginas sucias al disco. (5) (y 6) son requerido. (7) no es realmente una pregunta de política o requerido; el sistema nunca tiene a páginas cero, pero si el sistema es por otra parte ocioso, zeroing páginas es siempre mejor que ejecutar sólo el lazo ocioso. 22. No es movido en absoluto. Una página sólo va en una de las listas cuando no está presente en ningún juego de funcionamiento. Si esto está todavía en un juego de funcionamiento, esto no continúa ninguna de las listas libres. 23. Esto no puede continuar la lista modificada, ya que esto contiene páginas que todavía son trazadas un mapa en y podrían ser criticadas atrás. Una página no trazada un mapa no está en aquella categoría. Esto seguramente no puede ir directamente a la lista libre porque aquellas páginas pueden ser abandonadas a voluntad. Una página sucia no puede ser abandonada a voluntad. Consequently, debe ser primero contestado al disco, entonces esto puede continuar la lista libre. 24. La copia de una palabra requiere el que leído y uno escribe, para un total de 20 nsec para mover 4 b yt e s . Este viene a 5 nsec por byte copiado. Una pantalla de XGA tiene 1024 ´768 3 b yt e s ´, que toma a p r o x i ma d a m e n t e 11. 8 msec para copiar en el mejor caso (la asunción del programa corre completamente del escondite L1). 25. Hay dos archivos. Los campos son como sigue. Los valores antes del colon son los campos de jefe: Registre 1 = 0, 8: (3, 50), (1, 22), (3, 24), (2, 53) Registran 2 = 10, 10: (1, 60) 26. El hecho que se obstruyen 66 es contiguo con una existencia dirigida no ayuda cuando los bloques no están en la orden de archivo lógica. En otras palabras, usando el bloque 66 cuando el nuevo bloque no es mejor que la utilización del bloque 90. Las entradas en el MFT son: 0, 8: (4, 20), (2, 64), (3, 80), (1, 66) 27. Esto es un accidente. Los 16 bloques por lo visto comprimidos a 8 bloques. Podría haber sido 9 o 11 como fácilmente. 28. Todos excepto elusuarioSID podrían ser quitados sin afectar la fuerza de la seguridad. SOLUCIONES CON PROBLEMAS DEL CAPÍTULO 12 1. Las mejoras del hardware de ordenador han sido en gran parte debido a colinas transis-más pequeñas. Algunos factores que pueden limitar este son: (a) las propiedades de onda de la luz puede limitar técnicas fotolitográficas convencionales para producir integró cir-cuits, (b) la movilidad de átomos individuales en sólidos puede conducir a la degradación de las propiedades de capas mu y d e l g a d a s de semiconductores, aislantes, y colinas conduc-, y la radiactividad de fondo (c) puede interrumpir obligaciones moleculares o afectar muy pequeños gastos almacenados. Hay seguramente los otros. 2. Para programas muy interactivos, el modelo de acontecimiento puede ser mejor. De éstos, sólo (el b) es interactivo. Así (a) (y c) son algorítmicos (y b) es el acontecimiento conducido. 3. La puesta de ello allí salvó alguna RAM y redujo el tiempo que carga a 0, pero el más importante, lo hizo fácil para reveladores de software de tercero para usar el GUI, así asegurando una uniformidad de mirada y sensación a través de todo el software. 4. El no de la diferencia está relacionado más con el hecho que el escondite de servidores DNS y es organizado jerárquicamente. Los caminos podrían haber sido fácilmente dados en la cumbre - abajo ordenan, pero la convención de hacer hacia atrás es bien establecido ahora. 5. Posiblemente el stat es redundante. Podría ser conseguido por una combinación de abierto, fstat, y cerca . Sería muy difícil simular cualquiera de los demás. 6. Si los conductores son puestos debajo de los hilos, entonces los conductores no pueden ser hilos independientes en el estilo de MINIX . Ellos tienen que correr como la parte de algún otro hilo, más en el estilo de UNIX. 7. Es posible. Lo que es necesario es un proceso de nivel del usuario, el servidor de semáforo. Para crear un semáforo, un usuario le envía una petición de mensaje de un nuevo semáforo. Para usar ello, el proceso de usuario pasa la identidad del semáforo a otros procesos. Ellos pueden enviar entonces mensajes al servidor de semáforo que pregunta para una operación. Si la operación se obstruye, ninguna respuesta es devuelta, así bloqueando al visitante. 8. El modelo es 8 msec del código de usuario, entonces 2 msec del código de sistema. Con la optimización, cada ciclo es ahora 8 msec del código de usuario y 1 msec del código de sistema. Así el ciclo es reducido de 10 msec a 9 msec. Multiplicación por 1000 tales ciclos, un programa de 10 segundos ahora toma 9 segundos. 9. El mecanismo para venderse a clientes es un edificio con anaqueles, empleados abastecer los anaqueles, cajeros para manejar pago, etc. La política es que clase de productos la tienda se vende. 10. Los nombres externos pueden ser mientras necesarios y longitud variable. Los nombres internos son generalmente 32 trozos o 64 trozos y longitud siempre fijada. Los nombres externos no tienen que ser únicos. Dos nombres pueden señalar al mismo objeto, por ejemplo, eslabones en el sistema de archivo UNIX. Los nombres internos deben ser únicos. Los nombres externos pueden esté jerárquico. Los nombres internos son generalmente índices en mesas y así forman un espacio de nombre llano. 11. Si la nueva mesa es 2´tan grande como la vieja, esto no se llenará rápidamente, reduciendo el número de tiempos una mesa mejorada será necesaria. Por otra parte, tanto espacio no puede ser necesario, entonces esto puede gastar la memoria. Este es un tiempo clásico contra la compensación espacial. 12. Sería arriesgado hacer esto. Suponga que el PID estaba en la última entrada. E n e s t e c a s o , saliendo el lazo dejaría p que señala a la última entrada. Como - alguna vez, si el PID no fuera encontrado, el p podría terminar por señalar a la última entrada o a uno más allá de ello, s e gún los detalles del código compilado, qué optimi-zations son encendidos , etcétera. Lo que podría trabajar con un compilador podría fallar con uno diferente. Es mejor poner una bandera. 13. Podría ser hecho, pero no sería una idea buena. Un IDE o el conductor SCSI son muchas páginas mucho tiempo. Tener el código condicional tan mucho tiempo hace el código fuente con fuerza para seguir. Sería mejor poner cada uno en un archivo separado y luego usar el Makefile para determinar cual incluir. O por lo menos, la estafa - ditional compilación podría ser usada para incluir un archivo de conductor o el otro. 14. Sí. Hace el código más despacio. También, más código significa más bichos. 15. No fácilmente. Invocaciones múltiples al mismo tiempo podrían interferir el uno con el otro. Podría ser posible si los datos estáticos fueran guardados por un mutex, pero esto significaría que un visitante a un procedimiento simple podría ser de improviso bloqueado. 16. Sí. El código es reproducido cada vez el macro es llamado. Si es llamado muchas veces, el programa será m u c h o m á s g r a n d e . Este es una compensación espacial por el tiempo típica. Un programa más grande, más rápido en vez de un programa más pequeño, más lento. Sin embargo, en un caso extremo, el programa más grande no podría caber en el TLB, haciéndolo azotar y correr así más despacio. 17. Principio por ORing exclusivo 16 trozos más abajo y superiores de la palabra juntos para formar un número entero 16 bites, s. Para cada trozo, hay cuatro casos: 00 (causa 0), 01 (causa 1), 10 (causa 1), y 11 (causa 0). Así si el número de 1s en s es raro, la paridad es rara; por otra parte es hasta. Haga una mesa con 65,536 entradas, cada un byte que contiene con el bit de paridad en ello. Las miradas macro como este: #define paridad (w) trozos [(w y 0xFFFF) ˆ ((w>> 16) y 0xFFFF) cuenta 18. Ningunas circunstancias. El valor en color "comprimido" sería tan grande como el ori-ginal, y además, una paleta en color enorme podría ser necesaria. Esto no tiene sentido en absoluto. 19. La paleta en color de 8 trozos de ancho contiene 256 entradas de 3 bytes cada uno para un total de 768 bytes. El ahorro por pixel es 2 bytes. Así con más de 384 pixeles, triunfos de GIF. Una paleta en color de 16 trozos de ancho contiene 65,536 entradas de 3 bytes cada uno, para 196,608 bytes. El ahorro aquí es 1 byte por pixel. Así con más de 196,608 pixeles, los triunfos de compresión 16 bites. Asumiendo un 4:3 proporción, el punt o de equili brio es una imagen de 512 ´384 pixeles. Para VGA (640 ´480), 16el color de trozo requiere menos datos que el color de 24 trozos verdadero. 20. Para un camino que está en el escondite de nombre de camino, esto no tiene ningún efecto porque el i-nodo es evitado de todos modos. Si no es leído, esto no importa si esto está ya en la memoria. Para un camino que no está en el escondite de nombre, pero implica un nodo fijado "yo", entonces la fijación ayuda realmente ya que esto elimina un disco leído. 21. Registrando la fecha de la última modificación, el tamaño, y posiblemente una firma deliberada c o mo una suma de control o CRC puede ayudar a determinar si esto se haya cambiado desde último referido. Una advertencia: un servidor remoto podría proporcionar informa-falso tion sobre un archivo, y la regeneración local de una firma deliberada podría ser necesaria. 22. El archivo podría ser dado un número de versión o una suma de control y esta información almacenada junto con la indirecta. Antes de tener acceso a un archivo remoto, un control sería hecho para asegurarse el número de versión o suma de control todavía concordada con el archivo corriente. 23. Un sistema de archivo tratará típicamente de escribir nuevos datos al bloque de disco disponible más cercano después de último usado. Si dos archivos están siendo escritos simultane-ously este puede c a u s a r intercalar los bloques de datos en el disco, c a us ar ambos archivos fragmentados y así más difícil de leer. Este efecto puede ser mejorado almacenando datos en un buffer en la memoria para maximizar el tamaño de escribe, o escribiendo a archivos temporales y luego copiando cada salida a un archivo permanente cuando el programa se termina. 24. Los arroyos hablaban de proyectos grandes en los cuales la comunicación entre los programadores hace más lento todo. Aquel problema no ocurre con un 1proyecto de persona y entonces la productividad puede ser más alta. 25. Si un programador puede producir 1000 líneas del código para un coste de 100,000 dólares, una línea del código cuesta 100 dólares. En Capítulo. 11, declaramos que el Windows 2000 consistió en SOLUCIONES DE PROBLEMA PARA CAPÍTULO 59 55 29 millones de líneas del código, que viene a 2.9 mil millones de dólares. Esto parece a una parte horrible. Probablemente Microsoft ha logrado mejorar al programador produc-tivity utilización de mejores instrumentos entonces un programador puede producir variosmiles líneas de código por año. 26. Suponga que la memoria cuesta 100 dólares para 64 MB (control contra precios corrientes). Entonces una máquina de final bajo necesita el valor de 1600 dólares del disco. Si el resto del ordenador personal es 500 dólares, el coste total viene a 2100 dólares. Este es demasiado caro para el mercado de final bajo. 27. Un sistema empotrado puede dirigir un único o un pequeño número de programas. Si todos los programas pueden ser guardados cargados en la memoria s i e mp r e no podría haber ninguna necesidad de un gerente de memoria o de un sistema de archivo. Además, los conductores serían necesarios sólo para unos dispositivos de entrada - salida, y podría hacer más sentido de escribir a los conductores de entrada - salida como rutinas de biblioteca. Las rutinas de biblioteca también podrían ser mejor compiladas en programas individuales, más bien que en bibliotecas compartidas, eliminat-ing la necesidad de bibliotecas compartidas. Probablemente muchos otros rasgos podrían ser eliminated en casos específicos.