Download Universidad de San Carlos Facultad de Ingeniería

Document related concepts
Transcript
Universidad de San Carlos
Facultad de Ingeniería
Ingeniería en Ciencias y Sistemas
Sistemas operativos 2
Practica no. 2 – Conociendo UNIX mediante Minix
Minix es un sistema operativo similar al LINUX. Su objetivo principal es la simplicidad en
el código, dejando de lado las optimizaciones que los sistemas operativos comerciales
tienen. Esta característica permite que el Minix sea utilizado en cursos universitarios.
Objetivos
•
•
•
Que el estudiante entienda el diseño de sistemas operativos con microkernel a bajo
nivel.
Que el estudiante ponga en practica las habilidades de programación adquiridas en
la carrera para editar programas en C simple sin necesidad de un IDE de
programación.
Que el estudiante comprenda el papel de los servidores en un microkernel
añadiendo una llamada al sistema en uno de los servidores.
Descripción
El Sistema operativo Minix, puede ser instalado sobre una arquitectura x86 con
características bastante modestas respecto al hardware más moderno. Cabe señalar que
este sistema operativo puede convivir con WINDOWS y/o LINUX para lo cual tiene un
sistema de boot similar al LINUX.
Es estudiante deberá utilizar una máquina virtual para poner en marcha una copia de
Minix 3, en la red se encuentran imágenes de Minix preinstaladas para Vmware
(recomendada en el sitio oficial), Virtualbox (imagen proporcionadas por virtualbox
imágenes) o usar algún otro entorno como qemu. Los que utilicen Virtualbox deben saber
que no podrán utilizar el driver de red, el único punto de entrada a la máquina virtual
además de montar lectores de floppy disk. Sin embargo no es limitante para la
funcionalidad del sistema.
La practica consiste en tres secciones las cuales el estudiante deberá cumplir y se
describen a continuación.
Conociendo Minix y los Unix en general
Ya que al estudiante se le permite utilizar imágenes preconfiguradas el mismo deberá
llenar un cuestionario de ejercicios para garantizar que pueda utilizar Minix sin mayores
complicaciones. Este debe ser enviado a más tardar el día lunes 7 de septiembre a la
dirección
de
correo
[email protected],
con
el
asunto
cuestionario_minix_200####.pdf. El cuestionario va como un adjunto a esta practica.
Nótese que se entrega antes de la entrega final con el objetivo de que todos conozcan
Minix y puedan utilizarlo.
Ejercicios básicos en Minix:
El código de Minix no es muy distinto a cualquier otro programa en C, para esto se le
requiere hacer algunos cambios. El estudiante debe investigar que ejecutable es el que
realiza la función y reemplazar el original de Minix, todo el código fuente se encuentra
dentro de /usr/src y el nombre de los directorios describe la función de los ejecutables.
Para esto deberá utilizar los editores de texto proporcionados por Minix. Minix no tiene un
stack de USB para intercambiar archivos y solo es posible hacerlo mediante flopy o .ya
sea el sencillo mined o elvis que es un clon del editor vi un poco más completo pero que
necesita entrenamiento previo, además deberá utilizar el compilador CC. Mediante los
siguientes ejercicios.
•
•
•
Editar el la versión que aparece en el mensaje de inicio de minix y cambiarla por su
numero de carnet.
Cambiar la implementación de fortune para que a cada ejecución además de la
frase muestre su numero de carnet (no es permitido cambiar el archivo de frases
que usa fortune).
Editar el código de uname para que la opción -a (ALL) se convierta a -t, y la -r
(RELEASE) se convierta en -l
Estas implementaciones deben de reemplazar a los ejecutables originales de Minix y
deben de ubicarse de tal forma que se ejecuten como un comando normal sin necesidad
de indicar toda la ruta en la shell del sistema.
Ejercicio avanzado en Minix:
Los cambios anteriores se hacen con el único objetivo que el estudiante se familiarice con
el editor de texto y el compilador. Sin embargo son solo aplicaciones que corren en el
espacio de usuario y aun no se ha modificado ningún aspecto del sistema operativo.
Minix 3 tiene una arquitectura de microkernel, el microkernel administra las interrupciones,
proveé mecanismos básicos de administración de procesos, implementa la comunicación
entre los mismos y también planifica su ejecución.
A diferencia de un kernel monolitico como Linux, en Minix todas las funcionalidades
restantes se implementan en servidores, por defecto el sistema de archivos, la
administración de procesos, la red y algunos otros servicios están disponibles en
servidores fuera del microkernel, esta arquitectura es utilizada actualmente en sistemas
operativos modernos como Windows.
La estructura de Minix3 hace posible que estos servidores también manejen llamadas al
sistema, como las llamadas fork o exec utilizadas en los cursos de sistemas operativos 1.
La ultima tarea sera añadir una nueva llamada al sistema, escribiendo el manejador de la
llamada y también una llamada al usuario.
Como un ejercicio final el estudiante deberá crear una llamada al sistema
do_imprimirmensaje() en el servidor de filesystem o FS, cuya única función es escribir el
mensaje “Soy una llamada al sistema”. Este método es genérico y el estudiante puede
elegir otro servidor de Minix si así lo desea, ademas de diseñar la llamada deber añadir la
biblioteca de usuario para utilizar la llamada (biblioteca de funciones de C).
Por ultimo debe hacer un programa en C que utilice esta función.
Ponderación
Cuestionario – 10 puntos
Edición de programas de usuario – 20 puntos
Implementación de la llamada al sistema – 70 puntos
Ayuda
Además de la ayuda que estara disponible por parte del auxiliar del laboratorio, se
recomienda visitar los siguientes links:
Introduction to Minix 3 (Articulo de OSNews)
http://osnews.com/story.php/15960/Introduction-to-MINIX-3/
Introducción a Minix (Servidor de información de sistemas operativos – Universidad de las
palmas Gran Canaria):
http://sopa.dis.ulpgc.es/ii-dso/lecminix/lecminix.htm
Explorador de codigo de Minix
http://www.unifr.ch/diuf/pai/OS/minix_code.html
Operating Systems: Design and Implementation 3/e - Andrew S. Tanenbaum y Albert S.
Woodhull – Libro oficial del proyecto Minix
Para comprender que son señales y llamadas:
Señales POSIX (Universidad de extremadura)
http://gsd.unex.es/~jdiaz/asig/dso/apuntes/signal/signal_v3.pdf
Making system calls in Minix (New Mexico State University)
http://www.cs.nmsu.edu/~pfeiffer/classes/474/notes/syscalls.html
Observaciones
• El cuestionario es requisito para la entrega de la practica
• Fecha de entrega cuestionario: 7 de septiembre
• Fecha de entrega: 19 de septiembre
Cuestionario practica Minix 3
Basado en la practica de introducción a Minix de la Universidad
Tecnologica Centroamericana – Honduras
En ocasiones el estudiante tendrá que descifrar como utilizar algunos
comandos.
Para ello se le sugiere que utilice la documentación en línea que viene con
Minix. Para ver los manuales de un comando, se hace de la siguiente forma:
man (original)
Por ejemplo:
man ls
man chmod
man 2 chmod
apropos chmod
1. Cambiar el password a root a “minixrules” (sin comillas), utilizando el comando:
passwd luego cambie otra vez el password de root y asígnele un password en
blanco, como el que tenía anteriormente. ¿Qué sucedió?
2. Cambie otra vez el password a “minixrules”, salga de la sesión poniendo el
comando exit, y ahora ingrese otra vez con el usuario root, pero ponga de
password: “minixrulesusac”. ¿Qué sucede? ¿Podría determinar cuál es la debilidad
del manejo de passwords en este sistema operativo? Verifique el código fuente del
comando passwd que se encuentra en /usr/src/commands/simple/passwd.c y
explicque
3. Mediante pwd muestre cual es el directorio actual al ejecutar:
◦ # cd /usr/src
◦ # cd
◦ # cd /usr/src
◦ # cd boot
◦ # cd
¿Que explicación puede darle al resultado cuando ejecuto cd
4. Mediante whereis ubique la ruta del compiladore de c del sistema
5. Mediante cat muestre el contenido de /root/.profile y explique su funcionalidad.
6. Mediante find busque el archivo proc.c y establezca su ruta
7. Mediante grep determine que lineas que contengan la cadena “include” en el
archivo /usr/src/kernel/main.c, ¿que parametro utilizo para mostrar las lineas?
8. Mediante ps determine cuantos procesos estan ejecutandose en el sistema y
cuales son
9. Mediante df determine cuanto espacio libre tienen los sitemas de archivos
montados actualmente en el sistema (en Kilobytes)
10. Ejecute el programa elvis ¿que atajo de teclado utilizo para salir de el editor?