• No se han encontrado resultados

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 de l ga das 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

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.

En e ste caso , 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, segú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á mu 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 punto de equilibrio es una imagen de 512 ´384 pixeles. Para VGA (640 ´480), 16-

el 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 usar intercalar los bloques de datos en el disco, causar 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 1- proyecto 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 varios miles 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 si 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 elim- inated en casos específicos.