Escolar Documentos
Profissional Documentos
Cultura Documentos
Trabajo prctico
Conceptos de Arquitecturas y Sistemas Operativos
2C/2014
1. Introduccin
1.1. Objetivos
Al terminar este trabajo Ud. habr aprendido a:
2. Instalacin
Instalaremos una versin liviana de Ubuntu Linux en el sistema de virtualizacin VirtualBox.
VirtualBox nos provee una mquina virtual que permite instalar un sistema operativo (al que llamaremos guest)
en un archivo del disco rgido y ejecutarlo dentro de una ventana en nuestra mquina real. La ventaja de
VirtualBox comparado con Bochs o QEMU es que brinda un rendimiento muy superior. VirtualBox es
multiplataforma por lo tanto es posible usarlo tanto en Windows (XP o superior) o Linux.
9. Finalmente, debe seleccionar el tamao del disco virtual 4GB. Si se seleccion la opcin Dinamically
expanding image en la pantalla anterior, el archivo inicialmente pesar pocos megabytes, para luego ir
aumentando a medida que el disco se llena. En otro caso, el archivo ocupar el tamao del disco desde el
primer momento. Recomendamos alrededor de 2GB para el disco, ya que deber entregar la imagen con
el TP. En la siguiente pantalla se pueden revisar los datos del disco rgido virtual y terminar el proceso,
para volver al asistente principal y terminar la creacin de la mquina virtual.
10. Para terminar la configuracin de la mquina virtual debe especificar que la ISO de Ubuntu bajada al
comienzo se utilice como CDROM virtual. En la ventana principal de VirtualBox haga click en
CD/DVD-ROM para ver la configuracin de la mquina virtual. VirtualBox seleccionar
automticamente la entrada correspondiente al CD-ROM. Haga click en la casilla Mount CD/DVD drive,
seleccione la opcin ISO Image File y finalmente seleccione la carpeta a la derecha de la pantalla para
especificar el archivo ISO bajado al inicio.
11. Se abrir el administrador de discos virtuales de VirtualBox, Virtual Disk Manager en la solapa CD/DVD
Imgenes. Agregue una imagen haciendo click en Add, de manera de poder seleccionarla con Select. De
esta manera podr cerrar la configuracin de la mquina virtual.
12. Inicie la mquina virtual haciendo doble clic sobre ella o utilizando el botn Start. La mquina virtual
deber bootear por defecto desde el CDROM virtual, y de esta manera iniciar la instalacin del sistema
operativo.
El men de inicio de Ubuntu (previo al inicio propiamente dicho del sistema operativo) le solicitar a que
seleccione el idioma y luego mostrar el men. Inicie el sistema operativo seleccionando Install Ubuntu.
13. Una vez que haya iniciado el sistema en modo LiveCD, seleccione el idioma que desea utilizar en el
sistema. Luego deber a elegir su pas, primero seleccionando other y luego (probablemente) Argentina ;-).
14. El siguiente paso es especificar la distribucin del teclado. Seleccione la eleccin manual, y luego elija su
distribucin, probablemente Latin American en su versin plana (sin dead keys).
15. Luego de que el instalador detecte el hardware de la mquina virtual y cargue los componentes a instalar,
se configurar la placa de red automticamente con DHCP. El siguiente paso es configurar el nombre de
la mquina virtual, puede elegir cualquier nombre ya que es meramente administrativo.
16. El instalador detectar el disco rgido virtual y deber particionarlo. Aqu empezamos a ver las ventajas de
tener una mquina virtual: dado que el disco es tambin virtual, podr particionarlo entero sin preocuparse
por pisar otro sistema operativo. Seleccione entonces la primera opcin. En la pantalla que sigue
seleccione el disco virtual y confirme la eleccin en la tercera pantalla.
3. Consignas
Antes de empezar, ejecute:
sudo apt-get install man-db manpages manpages-dev
De esta manera tendr acceso a ayuda en lnea ejecutando:
man <comando>
Por ejemplo:
man cp
Puede adems instalar la versin en castellano de la ayuda ejecutando:
sudo apt-get install manpages-es
Para acceder a la ayuda en castellano ejecute por ejemplo:
man -L es cp
Tenga presente que no todos los comandos poseen ayuda en castellano.
sudo permite a usuarios normales ejecutar comandos que requieren permisos de administrador. Al ejecutar
un comando con sudo el sistema le pedir su password, y no el password del administrador (llamado root en
Linux, siguiendo la tradicin de Unix). Esto sucede ya que el sistema permite que ciertos usuarios (que
deberrn corresponderse con usuarios privilegiados" del sistema) puedan utilizar sudo ingresando
solamente su propio password. El usuario por defecto creado en una instalacin de Ubuntu tiene este
permiso y por lo tanto en Ubuntu no es necesario una cuenta de administrador o root.
apt-get es el manejador de paquetes de la distribucin Ubuntu. Permite instalar, actualizar y desinstalar
programas. Ms adelante lo utilizaremos para instalar las herramientas necesarias para compilar programas
en Linux.
Si se encontrara detrs de un proxy, antes de utilizar apt-get debe configurar el proxy. Ejecute el siguiente
comando:
sudo echo "Acquire::http::Proxy \"http://miproxy.midominio.ar:8080\";" >/etc/apt/apt.conf
3.3. Scripting
3.3.1
Escriba un script de shell que cada 5 minutos diga HOLA y que a una hora determinada tambin los
haga. (Pista: busque comandos de control de tiempo para disparar las acciones).
3.3.2
Escriba un script de shell que actualice el archivo /etc/passwd dada una lista
id tipo usuario [grupo] clave
donde tipo puede ser "G" grupo o "U" usuario que tiene un grupo asociado.
Debe verificar si id o usuario existen, en ese caso todos los parmetros son de cambio.
Si no existen, ninguno de los dos, significa que es una cuenta nueva.
Tenga en cuenta, que en algunos casos, es necesario actualizar, por lo menos otros dos archivos
relacionados.
Sugerencia Recuerde que generalmente el espritu de los scripts es proveer la mnima lgica necesaria
alrededor de otros programas ya presentes en el sistema que puedan proveer parte de la funcionalidad
requerida para resolver un determinado problema.
3.3.2
Haga que un script que escriba en la pantalla HOLA cada vez que se loguee un usuario.
Haga que un script que escriba en la pantalla Buenos Dias cada vez que se enciende la mquina en
Linux.
Haga que un script escriba en la pantalla Adioscada vez que se desloguee un usuario.
Haga que un script escriba en la pantalla Hasta la vista babycada vez que apague la mquina. (No
usar opciones del shutdown)
Cree el archivo /home/<usuario>/tp/loop.c. Complelo con gcc. El programa compilado debe llamarse loop.
3.4.1. loop.c
#include <stdio.h>
#define IDGRUPO 200 /* Completar con su numero de grupo */
int main() {
int i, c;
while(1) {
c = 48 + i; \
printf("%c", c);
i++;
i=i%
IDGRUPO;
}
return 0;
}
Sugerencia Revise la ayuda de la llamada al sistema pipe para construir el pipe y de fork para crear nuevos
procesos.
3.5.2. Threads
Antes de resolver este ejercicio instale el paquete glibc-doc.
Resuelva el problema de productor/consumidor utilizando threads.
Sugerencia Revise la ayuda de pthreads, la implementacin de threads en Linux, para conocer los mecanismos
de creacin y destruccin de threads. Adems, pthreads provee mecanismos de sincronizacin que le ayudarn a
resolver este ejercicio.
3.6.4. hello.c
/* hello.c
*
* "Hello, world" usando modulos de kernel
*
*/
/* Headers para modulos de kernel */
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
3.6.5. Makefile
obj-m
KVERSION
= hello.o
= $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
Luego ejecute:
make
Para compilar el mdulo. Finalmente, pruebe insertar el mdulo usando:
insmod hello.ko
Debera ver el mensaje Hola kernel!" en la consola.
Quite el mdulo usando:
rmmod hello.ko
Deber ver el mensaje Chau, kernel".
10
3.8.2. Prioridades
Genere tres versiones del programa loop (3.4.1) (loop1, loop2 y loop3) y ejectelos en background.
Logre que loop3 ejecute ms rpido que los otros dos (prioridad). Obtenga los tiempos de ejecucin de cada uno
de ellos (uso de procesador) y sus estados. Explique detalladamente como logra obtener esta informacin.
3.8.5 Escriba un breve informe comparativo sobre la administracin de memoria y scheduling de procesador
del sistema operativo WINDOWS vs LINUX.
11