Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Ahora nos pondremos en la tarea crear un programa en C, y luego compilarlo. Para editar
el código fuente necesitamos usar un editor de texto. Si nos encontramos con una consola de texto,
podemos usar nano, por ejemplo, y podemos comenzar invocando el comando seguido del nombre del
archivo a editar, ya sea que éste exista o no:
nano ejercicio_1.c
Una vez terminado de editar el código podemos salir (en caso de usar nano, tener en
cuenta que el menú de abajo en la pantalla indica con el símbolo ^ que debe presionar la tecla Ctrl, y
compilarlo, o bien guardar sin salir (:w) y realizar la compilación en otra consola o terminal.
En caso de encontrarse en entorno de texto (no gráfico), puede abrir una nueva consola
virtual (cambiando con Alt-F1 a F6) iniciar sesión y realizar la compilación. Este último método
permite alternar entre la línea de comandos (para compilar) y el código fuente (para editar) con mayor
rapidez. Es como tener ventanas en el entorno gráfico.
Para compilar, básicamente debemos invocar al compilador (gcc) seguido del nombre del
archivo con el código fuente (extensión .c). La opción -o nos permite especificar el nombre del
ejecutable que se creará como resultado del proceso. De ser omitida dicha opción, el nombre del
ejecutable será a.out.
En el ejemplo siguiente se muestra la línea de comandos para compilar el código en el
archivo ejercicio_1.c y para nombre del ejecutable será ejercicio_1 (notar la ausencia de la
extensión .c) en el nombre del ejecutable.
En caso de que el compilador encuentre errores, serán presentados por pantalla, indicando
el número de línea en el cual se encuentran (habrá que corregirlos y recompilar). De otro modo, la
compilación resultó exitosa y el archivo ejecutable ejercicio_1 debería estar en el directorio actual.
Podemos verificar su existencia listando contenido del directorio (con dir o ls). Para
ejecutarlo alcanza con el comando:
./ejercicio_1
Para cancelar la ejecución del programa (antes de que finalice), presione Ctrl-c.
Cabe destacar que olvidarse de guardar el archivo fuente luego de modificarlo, y olvidarse
de recompilar el código luego de modificaciones son errores comunes que deben ser evitados poniendo
atención. Otro punto a tener en cuenta es que el archivo a ejecutar, valga la redundancia, debe ser el
ejecutable generado como resultado de la compilación (a.out, o ejercicio_1, por ejemplo), y no el
código fuente. Intentar ejecutar ejercicio_1.c (notar la extensión) resultará probablemente en un
error, por ser un archivo de texto, no un ejecutable.
Al trabajar en la consola de texto, no es necesario incluír al final del programa
instrucciones como las que se usan en el entorno Windows, tales como getch() o system("pause"),
Página 1 de 3
Sistemas Operativos - Laboratorio de C básico en Linux
Otra sugerencia es que no intente escribir el código completo del programa antes de
compilar. En cambio, lo recomendable es escribir un fragmento del código, compilar, depurar y
ejecutar, y si funciona bien, recién continuar con otro fragmento del código.
Cuestionario de control
De manera individual, es decir, no grupal, lea el texto anterior y responda las siguientes preguntas, a
modo de control de lectura.
Ejercicios
1. Cree un programa que lea 10 números enteros tanto positivos como negativos ingresados por el
teclado y presente su máximo, mínimo y promedio al finalizar.
2. Cree un programa que lea números enteros tanto positivos como negativos ingresados por el teclado
hasta tanto se ingrese el número cero y presente su máximo, mínimo y promedio al finalizar.
3. Modifique el programa del punto 1 para que al ingresar el texto "salir" termine de inmediato sin
presentar resultados; y al ingresar el texto "resultados" termine presentando los resultados.
4. Cree un programa que lea una cadena de texto de hasta 100 caracteres ingresada por teclado y
cuente su cantidad de palabras.
5. Cree un programa que lea cadenas de texto de hasta 100 caracteres ingresadas por teclado y vaya
presentándolas por pantalla concatenadas, hasta que se ingrese el número 0, momento en el cual deberá
presentarse la cantidad total de cadenas ingresadas, y la cantidad total de palabras.
wget http://soutn.ernet.com.ar/descargas/programas/recorrer_matriz.c
Lea el programa y modifíquelo para que recorra la matriz, colocando en la variable 'contenido' el valor
de cada celda. No importa que el valor se sobreescriba, es sólo para realizar una lectura desde
memoria. Ejecute y verifique su funcionamiento correcto. En caso de encontrarse con un error de
"certificado no confiable", use el comando wget con la opción --no-check-certificate.
Luego, utilice alguna de las herramientas del sistema vistas en trabajos anteriores para averiguar la
Página 2 de 3
Sistemas Operativos - Laboratorio de C básico en Linux
cantidad de memoria principal disponible (es decir, libre). Ajuste el tamaño de la constante BASE para
que el tamaño de la matriz sea cercano a la memoria libre. Se permite una diferencia de hasta 50 MB.
Verifique la ejecución correcta del programa.
Luego de esto:
Investigue las siguientes características de la máquina que está utilizando (no importa si es máquina
virtual):
Frecuencia de CPU, frecuencia de RAM, frecuencia del bus, tasa de transferencia máxima de RAM,
tamaño de cachés, tamaño de la línea de los cachés.
cat /proc/cpuinfo
d. Considerando que el programa realiza transferencias desde memoria, en base al tiempo de ejecución
obtenido y la cantidad de Bytes transferidos, ¿cuál sería la tasa de transferencia para lo encontrado en
los puntos a y b?
e. ¿Encuentra alguna relación entre los valores investigados sobre el CPU y la RAM y estas tasas de
transferencia calculadas? Advertencia: por cada ciclo del lazo, hay una transferencia de memoria, y
varias instrucciones de CPU, es decir que se introducen tiempos adicionales que quitan precisión al
cálculo. No espere encontrar coincidencias exactas en los valores.
Página 3 de 3