Tarea no. 1: Introducción Sistemas Operativos Profesor: Andrés Becerra Sandoval 1. Instale una distribución de Linux, o use una que ya tenía. Reporte: nombre de la distribución, versión del kernel, versión de glibc, versión de gcc, manejador de paquetes. 2. Ejecute en un emulador de terminal: $ ps -ef . ¿Que hace?. ¿Que tienen que ver los resultados que arroja con los conceptos del curso? 3. Ejecute: $ free . ¿Que hace?. ¿Que tienen que ver los resultados que arroja con los conceptos del curso? 4. Ejecute $ firefox . ¿Que pasa con el control de la terminal, puede volver a ejecutar $ ps -ef ? 5. Ahora ejecute $firefox&, en otra terminal que sucede ahora con la terminal ¿puede controlarla de nuevo, que significado tiene & en unix? 6. Compile el siguiente programa (con gcc programa.c el compilador crea a.out que puede ejecutarse con ./a.out): # i n c l u d e < s t d i o . h> i n t main ( ) { while ( 1 ) p r i n t f ( "x" ) ; return 0; } 7. Ejecute el programa, ¿que sucede?. ¿Que pasa cuando digita la combinación de teclas CTRL-C (con insistencia si es necesario) en la terminal? 1 8. Ejecute el programa otra vez. ¿Que pasa cuando digita la combinación de teclas CTRL-Z (con insistencia si es necesario) en la terminal? ¿Puede ahora ejecutar $ ps -ef ? ¿Que significado tiene CTRL-Z? 9. Ahora sobre la terminal ejecute $ fg ¿Que sucedió? ¿Que le pasó al programa que se estaba ejecutando en el lapso entre el CTRL-Z y la ejecución de $ fg? 10. Compile y ejecute el siguiente programa de copia de archivos : # i n c l u d e < f c n t l . h> # i n c l u d e < u n i s t d . h> i n t main ( ) { i n t in , out ; int len ; char c ; i n = open ( " t e s t . t x t " , O_RDONLY ) ; o u t = open ( " o u t . t x t " , O_WRONLY | O_CREAT | O_RDONLY ) ; w h i l e ( ( l e n = r e a d ( i n ,& c , 1 ) ) > 0 ) w r i t e ( o u t ,& c , 1 ) ; close ( in ) ; close ( out ) ; return 0; } a) Ahora compilelo con $ gcc -E nombrearchivo ¿que archivo se creó?, ¿que contiene? b) Ahora compilelo con $ gcc -S nombrearchivo ¿que archivo se creó?, ¿que contiene? 11. Ejecute $ man fg . Ejecute $ man man ¿Que es man? 12. Baje el kernel estable de linux de www.kernel.org. ¿que versión bajó? 13. Descomprima el kernel. Entre a arch/x86/syscalls y vea el archivo syscall_table_XX.tbl, donde XX es la arquitectura suya de 32 o 64 bits. ¿cuantas llamadas al sistema hay? 14. Ahora revise al archivo arch/x86/boot/main.c. Este es el archivo que contiene la función principal en el kernel de linux, ¿que entiende de la función main? ¿Quien le pasa parámetros al kernel? 2