Sistemas operativos modernos

17. ¿Habría algún motivo para querer montar un sistema de archivos en un directorio no vacío? Si lo hay, ¿cuál sería? 18. Para cada una de las llamadas al sistema siguientes, dé una condición que la haga fallar: fork, exec y unlink. 19. ¿La llamada cuenta = write(fd, buffer, nbytes): puede devolver en cuenta algún valor distinto de nbytes? En caso afirmativo, ¿por qué? 20. Un archivo cuyo descriptor es fd contiene la sucesión de bytes siguiente: 3, 1,4, 1, 5, 9, 2, 6, 5, 3, 5. Se efectúan las llamadas al sistema siguientes: lseek{fd, 3, S E E K _ S E T ); read{fd, &buffer, 4); donde la llamada Iseek coloca el apuntador de archivo en el byte 3. ¿Qué contiene el búfer una vez que ha terminado la lectura? 21. ¿Qué diferencia fundamental hay entre un archivo especial de bloques y un archivo especial por caracteres? 22. En el ejemplo dado en la figura 1-17, el procedimiento de biblioteca se llama read y la llamada al sistema en sí se llama read. ¿Es indispensable que ambos tengan el mismo nombre? Si no, ¿cuál es más importante? 23. El modelo cliente-servidor es muy utilizado en sistemas distribuidos. ¿Puede usarse también en un sistema de una sola computadora? 24. Para un programador, una llamada al sistema se ve como cualquier otra llamada a un procedimiento de biblioteca. ¿Es importante que el programador sepa cuáles procedimientos de biblioteca emiten llamadas al sistema? ¿En qué circunstancias y por qué? 25. La figura 1-23 muestra que varias llamadas al sistema UNIX no tienen equivalentes en la API Win32. Para cada una de las llamadas de la lista que no tienen equivalente en Win32, ¿qué consecuencias ten­ dría ese hecho para un programador que quiere convertir un programa UNIX de modo que se ejecute bajo Windows? 26. He aquí algunas preguntas para practicar las conversiones de unidades; a) ¿Cuánto dura un microaño en segundos? b) Es común llamar mieras a los micrómetros. ¿Qué longitud tiene una gigamicra? c) ¿Cuántos bytes hay en una memoria de 1TB? d) La masa de la Tierra es de 6000 yottagramos. ¿Cuánto es eso en kilogramos? 27. Escriba un shell similar al de la figura 1-19 pero que contenga suficiente código para ser funcional y poder probarlo. También se podrían añadir algunas características como redirección de entrada y sa­ lida, canalizaciones y trabajos en segundo plano. 28. Si cuenta con un sistema personal tipo UNIX (Linux, MINIX, Free BSD, etc.) que pueda hacer fa­ llar y rearrancar sin problemas, escriba un script de shell que intente crear un número ¡limitado de procesos hijos y observe qué sucede. Antes de efectuar el experimento, teclee syn c para desalojar a

RkJQdWJsaXNoZXIy MjI4NDcx