You are on page 1of 34

MANUAL DE PRCTICAS

SISTEMAS OPERATIVOS I
AEC-1061

PLAN ISIC-2010-224

INGENIERA EN SISTEMAS COMPUTACIONALES

ndice
INTRODUCCIN ... ...................................................................................................................................................... 1 Prctica 1........................................................................................................................................................................... 2 EL DESPACHADOR DE PROCESOS Y MANEJADOR DE INTERRUPCIONES ................................................... 2 Prctica 2........................................................................................................................................................................... 5 PROBLEMA DE LA CENA DE LOS FILSOFOS ..................................................................................................... 5 Prctica 3........................................................................................................................................................................... 9 COMO CONSUMEN RECURSOS LOS PROCESOS .................................................................................................. 9 Prctica 4......................................................................................................................................................................... 15 LLAMANDO AL SISTEMA ....................................................................................................................................... 15 Prctica 5......................................................................................................................................................................... 20 Arboles .......................................................................................................................................................................... 20 Prctica 6......................................................................................................................................................................... 26 RECOMPILANDO EL NUCLEO ................................................................................................................................ 26 8.- LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR ............................................................................. 31 9.- LISTA DE BIBLIOGRAFA REQUERIDA .............................................................................................................. 31 10.- CONTROL DE CAMBIOS DEL MANUAL DE PRCTICAS ............................................................................... 32

Sistemas Operativos [AEC-1061]

INTRODUCCIN

Los sistemas operativos son un conjunto de tareas definidas que permiten la interaccin entre los dispositivos as como tambin con usuario, por esto es que se definieron las siguientes prcticas con el fin de identificar partes importantes del sistema operativo, y as tener una visin ms clara de la ejecucin de tareas, como tambin las arduas tareas que realiza el sistema operativo.

Fecha de Actualizacin 22/08/2013

Pgina 1

Sistemas Operativos [AEC-1061]

Prctica

EL DESPACHADOR DE PROCESOS Y MANEJADOR DE INTERRUPCIONES


Observaciones: Esta prctica incluye a las Prcticas # 1 y # 2 del temario de Sistemas Operativos I que dicen Identificar en el laboratorio, los elementos fundamentales del cdigo fuente, para los mdulos del ncleo del sistema; sealando los que corresponden al despachador de procesos y al manejador de interrupciones. Y Identificar en el laboratorio, los cdigos fuente que corresponden al manejo de interrupciones y de intercomunicacin entre procesos. (IPC)..

1.-OBJETIVO El alumno aprender, comprender e identificara de LINUX KERNEL, el cdigo donde se encuentra programado el despachador de procesos, as como tambin el manejador de interrupciones, con el propsito de empezar a profundizar en el sistema operativo basado en LINUX

2.- MARCO TERICO Kernel/Ncleo Que es el kernel/ncleo? El kernel o ncleo de Linux se puede definir como el corazn de este sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos. Las funciones ms importantes del mismo, aunque no las nicas, son: Administracin de la memoria para todos los programas y procesos en ejecucin. Administracin del tiempo de procesador que los programas y procesos en ejecucin utilizan. Es el encargado de que podamos acceder a los perifricos/elementos de nuestro ordenador de una manera cmoda. Hasta que empez el desarrollo de la serie 2.6 del ncleo, existieron dos tipos de versiones del ncleo: Versin de produccin: La versin de produccin, era la versin estable hasta el momento. Esta versin era el resultado final de las versiones de desarrollo o experimentales. Cuando el equipo de desarrollo del ncleo experimental, decida que tena un ncleo estable y con la suficiente calidad, se lanzaba una nueva versin de produccin o estable. Esta versin era la que se deba utilizar para un uso normal del sistema, ya que eran las versiones consideradas ms estables y libres de fallos en el momento de su lanzamiento. Versin de desarrollo: Esta versin era experimental y era la que utilizaban los desarrolladores para programar, comprobar y verificar nuevas caractersticas, correcciones, etc. Estos ncleos solan ser inestables y no se deban usar sin saber lo que se haca.

Fecha de Actualizacin 22/08/2013

Pgina 2

Sistemas Operativos [AEC-1061] Como interpretar los nmeros de las versiones de las series por debajo de la 2.6: Las versiones del ncleo se numeraban con 3 nmeros, de la siguiente forma: AA.BB.CC AA: Indicaba la serie/versin principal del ncleo. Solo han existido la 1 y 2. Este nmero cambiaba cuando la manera de funcionamiento del kernel haba sufrido un cambio muy importante. BB: Indicaba si la versin era de desarrollo o de produccin. Un nmero impar, significaba que era de desarrollo, uno par, que era de produccin. CC: Indicaba nuevas revisiones dentro de una versin, en las que lo nico que se haba modificado eran fallos de programacin. Unos ejemplos nos ayudaran a entenderlo mejor: ej1: versin del ncleo 2.4.0: Ncleo de la serie 2 (AA=2), versin de produccin 4 (BB=4 par), primera versin de la serie 2.4 (CC=0) ej2: versin del ncleo 2.4.1: Ncleo de la serie 2, versin 4, en el que se han corregido errores de programacin presentes en la versin 2.4.0 (CC=1) ej3: versin del ncleo 2.5.0: versin 0 del ncleo de desarrollo 2.5. Con la serie 2.6 del ncleo, el sistema de numeracin as como el modelo de desarrollo han cambiado. Las versiones han pasado a numerarse con 4 dgitos y no existen versiones de produccin y desarrollo. Las versiones del ncleo se numeran hoy en da con 4 dgitos, de la siguiente forma: AA.BB.CC.DD. AA: Indica la serie/versin principal del ncleo. BB: Indica la revisin principal del ncleo. Nmeros pares e impares no tienen ningn significado hoy en da. CC: Indica nuevas revisiones menores del ncleo. Cambia cuando nuevas caractersticas y drivers son soportados. DD: Este digito cambia cuando se corrigen fallos de programacin o fallos de seguridad dentro de una revisin. Hoy en da se suele usar el ncleo distribuido con la distribucin que el usuario utiliza. Son las distribuciones las encargadas de distribuir ncleos estables a sus usuarios y estos ncleos se basan en el ncleo ("vanilla") distribuido por Linus Torvalds y el equipo de programadores del ncleo.

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Disco de Sistema Operativo Ubuntu Procesador de Textos Internet

Fecha de Actualizacin 22/08/2013

Pgina 3

Sistemas Operativos [AEC-1061] 4.- COMPETENCIAS ESPECFICAS

Con ayuda del profesor los alumnos se organizaran por equipos (3 personas como mximo) de las cuales sus tareas sern: Descargar el kernel de LINUX de la pgina: https://www.kernel.org/ una vez realizada la descargar Debern identificar del cdigo fuente del kernel donde se encuentra programado el despachador de procesos as como tambin el manejador de interrupciones De no poder identificarlo podr apoyarse del internet para la identificacin, con el propsito de familiarizarse con el kernel de Linux.

5. RESULTADOS En esta parte el alumno integrara cada una de las pantallas donde se realiz la identificacin de los despachadores as como un mapa mental de la ubicacin de este.

6. CONCLUSIONES El alumno comprender la estructura interna del kernel de LINUX y la identificacin de los elementos que lo componen.

7.-BIBLIOGRAFA

1. Andrew S. Tanenbaum, Roberto Escalona Garca, Sistemas Operativos Modernos, Ed. Prentice Hall. 2. Sistemas Operativos Dhamdhere, Dhananjay M. Ed. Mc-Graw Hill de Mxico 2008 3. William Stallings, Sistemas operativos. Aspectos internos y principios de diseo. Quinta edicin. 2005. Pearson. Prentice-Hall.

4. Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. 2006, Fundamentos de


sistemas operativos. Sptima edicin. McGraw-Hill.

Fecha de Actualizacin 22/08/2013

Pgina 4

Sistemas Operativos [AEC-1061]

Prctica

PROBLEMA DE LA CENA DE LOS FILSOFOS


Observaciones: Esta prctica incluye a las Prcticas # 3, # 4 y #5 del temario de Sistemas Operativos I que dicen Realizar una prctica para la deteccin de interbloqueos en los mutex del minikernel., Realizar una prctica de implementacin de semforos usando un lenguaje de alto nivel. Y Realizar una prctica de planificacin round-robin en el minikernel..

1.- OBJETIVO El alumno aplicara los conocimientos adquiridos en materia de programacin as como los adquiridos en clase para la planificacin de procesos y deteccin de interbloqueos. 2.- MARCO TERICO Para que se produzca un interbloqueo deben cumplirse las cuatro condiciones. Asegurando que un de estas cuatro no se cumplan podemos prevenir la aparicin de interbloqueos. Exclusin mutua.- Al menos un recurso debe estar en modo no compartido, es decir, solo un procesos puede usarlo cada vez. Si otro proceso solicita el recurso, el proceso solicitante tendr que esperar hasta que el recurso sea liberado. Retencin y espera.- Un proceso debe estar retenido al menos un recurso y esperando para adquirir otro recurso adicionales que actualmente estn retenidos por otro proceso. Sin desalojo.- Los recursos no pueden ser desalojados, es decir un recurso solo puede ser liberado voluntariamente por el proceso que le retiene, despus de que dicho proceso haya completado su tarea. Espera circular.- debe existir un conjunto de procesos en espera, tal que este proceso est esperando a un recurso retenido por P1, P1 est esperando a un recurso retenido por P2, ,Pn -1 est esperando a un recurso retenido por Pn, y Pn est esperando a un recurso retenido por P0. PRINCIPIOS DEL INTERBLOQUEO El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestin concurrente de procesos, no existe una solucin eficiente para el caso general. Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o ms procesos. Ejemplo 1: Interbloqueo de trfico Fecha de Actualizacin 22/08/2013 Pgina 5

Sistemas Operativos [AEC-1061] Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro cuadrantes de la interseccin son los recursos compartidos sobre los que se demanda control; por tanto, si los coches desean atravesar el cruce, las necesidades de recursos son las siguientes: El coche que va hacia el norte necesita los cuadrantes 1 y 2. El coche que va hacia el oeste necesita los cuadrantes 2 y 3. El coche que va hacia el sur necesita los cuadrantes 3 y 4. El coche que va hacia el este necesita los cuadrantes 4 y 1.

La norma ms habitual en la carretera es que un coche en un cruce de cuatro caminos debe ceder el paso al coche que est a su derecha. Esta norma funciona si solo hay dos o tres coches en el cruce. Por ejemplo, si solo llegan al cruce los coches del norte y del oeste, el coche del norte esperar hasta que el del oeste pase. Sin embargo, si los cuatro coches llegan al mismo tiempo cada uno se abstendr de entrar en el cruce, provocando interbloqueo. Si todos los coches ignoran las normas y entran (con cuidado) en el cruce, cada coche obtendr un recurso (un cuadrante) pero no podr continuar porque el segundo recurso que necesita ya ha sido invadido por otro coche. De nuevo, se tiene interbloqueo.

Fecha de Actualizacin 22/08/2013

Pgina 6

Sistemas Operativos [AEC-1061] Ejemplo 2: Cruce en un puente (es parecido al interbloqueo de trfico) En una carretera de dos direcciones, donde en un determinado cruce con la va del ferrocarril, se ha construido un puente que solo deja pasar vehculos en un solo sentido. El bloqueo ocurre cuando dos carros intentan pasar por el puente al mismo tiempo.

Una manera de resolver el bloqueo es: el conductor situado en uno de los extremos es lo suficientemente educado que deja pasar en primer lugar al del otro extremo y luego pasa l. Este ejemplo nos muestra como sucede el interbloqueo en nuestra vida diaria. 3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Java 7u21 Procesador de Textos Internet 4.- COMPETENCIAS ESPECFICAS Los alumnos con apoyo del profesor se integraran por equipos (3 personas mximo) para resolver:

El problema de los comensales filsofos que dice as: Cinco filsofos chinos se
sientan alrededor de una mesa y pasan su vida cenando y pensando. Cada filsofo tiene un plato de fideos y un palillo a la izquierda de su plato. Para comer los fideos son necesarios dos palillos y cada filsofo slo puede tomar los que estn a su izquierda y derecha. Si cualquier filsofo toma un palillo y el otro est ocupado, se quedar esperando, con el palillo en la mano, hasta que pueda tomar el otro palillo, para luego empezar a comer.Si dos filsofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condicin de carrera: ambos compiten por tomar el mismo palillo, y uno de ellos se queda sin comer.Si todos los filsofos toman el palillo que est a su derecha al mismo tiempo, entonces todos se quedarn esperando eternamente, porque alguien debe liberar el palillo que les falta. Nadie lo har porque todos se encuentran en la misma situacin (esperando que alguno deje sus palillos).

Fecha de Actualizacin 22/08/2013

Pgina 7

Sistemas Operativos [AEC-1061] Entonces los filsofos se morirn de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock. Desarrollar el algoritmo para resolver el problema. Codificacin del algoritmo.

5. RESULTADOS En esta parte el alumno integrara cada una de las pantallas donde se realiz la codificacin y el algoritmo de la resolucin del problema. 6. CONCLUSIONES El alumno aprender y comprender el funcionamiento bsico de un planificador de procesos.

7.- BIBLIOGRAFA

1. Andrew S. Tanenbaum, Roberto Escalona Garca, Sistemas Operativos Modernos, Ed. Prentice Hall. 2. Sistemas Operativos Dhamdhere, Dhananjay M. Ed. Mc-Graw Hill de Mxico 2008 3. William Stallings, Sistemas operativos. Aspectos internos y principios de diseo. Quinta edicin. 2005. Pearson. Prentice-Hall.

4. Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. 2006, Fundamentos de


sistemas operativos. Sptima edicin. McGraw-Hill.

Fecha de Actualizacin 22/08/2013

Pgina 8

Sistemas Operativos [AEC-1061]

Prctica

COMO CONSUMEN RECURSOS LOS PROCESOS


Observaciones: Esta prctica incluye a las Prcticas # 6 del temario de Sistemas Operativos I que dicen Realizar una prctica de monitoreo de memoria de un proceso..

1.- OBJETIVO El alumno entender el funcionamiento de la memoria y como se relaciona con los procesos.

2.- MARCO TERICO Se refiere a colocar de forma general, la informacin necesaria para el desarrollo de la prctica, es decir est orientado al cortical Izquierdo. El comando top nos provee una vist dinmica y en tiempo real con la cantidad y estado de los procesos corriendo actualmente, memoria, espacio de swap y los recursos utilizados por cada proceso.

La interfaz es actualizada cada cierto perodo de tiempo (por defecto, 3segundos). Despliega un resumen del estado del sistema y una lista de los procesos corriendo, de la siguiente manera:

top - 16:26:10 up 2:53, 1 user, load average: 0.01, 0.01, 0.00 Tasks: 46 total, 2 running, 44 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3%us, 0.3%sy, 6.0%ni, 93.0%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 252692k total, 248656k used, 4036k free, 19440k buffers

Swap: 506036k total,

44k used, 505992k free, 188384k cached

PID USER 3365 p2p

PR NI VIRT RES SHR S %CPU %MEM

TIME+ COMMAND

39 19 42560 21m 4716 S 6.3 8.9 3:32.54 mlnet


Pgina 9

Fecha de Actualizacin 22/08/2013

Sistemas Operativos [AEC-1061]

4076 root 1 root 2 root 3 root 4 root 5 root 163 root

20 0 2324 1120 888 R 0.3 0.4 0:00.11 top 20 0 1656 496 456 S 0.0 0.2 0:00.38 init 15 -5 15 -5 15 -5 15 -5 15 -5 0 0 0 0 0 0 0 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 0 S 0.0 0.0 0:00.00 ksoftirqd/0 0 S 0.0 0.0 0:00.00 events/0 0 S 0.0 0.0 0:00.03 khelper 0 S 0.0 0.0 0:00.00 kblockd/0

Resumen del estado del sistema En la primer lnea tenemos la fecha y hora actual, la cantidad de

usuarios utilizando el sistema y la carga del sistema del ltimo minuto, de los ltimos 5 minutos y de los ltimos 15 minutos respectivamente. Cmo se calcula el load average es un tema en s mismo, pero bsicamente es el promedio de la cantidad de procesos corriendo o prontos para correr en cierto perodo de tiempo.

Lo que tenemos que saber que a mayor load average, mayor uso de procesador. Un load average de 0 indica que el procesador ha sido muy poco utilizado en ese perodo de tiempo, mientras que si es mayor, significa que hay ms procesos corriendo y prontos para correr que lo que el(los) core(s) pueden procesar. Un load average igual a la cantidad de cores indica un uso ptimo del CPU. Ms info ac y ac.

En la segunda lnea (Tasks) tenemos la cantidad de procesos y una agregacin segn el estado de cada uno. Los diferentes estados que muestra son los siguientes: Running: procesos corriendo actualmente, o listos para correr en cuanto se les asigne tiempo de CPU. Sleeping: el proceso est dormido esperando que ocurra un evento para volver al estado running. Stopped: La ejecucin del proceso est parada; no est corriendo, y no va a volver a correr. Los procesos generalmente entran en este estado cuando reciben seales que no estn manejando, y la

Fecha de Actualizacin 22/08/2013

Pgina 10

Sistemas Operativos [AEC-1061]

accin por defecto de las mismas es pasar el proceso a stopped. Esto incluye seales como SIGSTOP, SIGTSTP, SIGTTIN, y SIGTTOU. Una seal de tipo SIGCONT saca al proceso de este estado (ver el comando fg). Con Ctrl+Z mandamos el proceso corriendo en la terminal al background, pasando a estado stopped.

Zombie: El proceso tampoco est corriendo. Los procesos quedan en este estado cuando su el proceso que los inici muri, ya sea por un error de programacin o porque fue matado (ver kill -9). La tercera lnea nos da los porcentajes de uso de procesador, discriminado por tipo de uso. Los diferentes tipos significan lo siguiente: us: tiempo de procesos de usuario sy: tiempo de procesos del sistema (kernel) ni: tiempo de procesos del usuario que tienen un nice positivo wa: tiempo en el cual los procesos estn esperando por pedidos de I/O pendientes. id: tiempo idle, en que no hay procesos requiriendo tiempo de procesador, y tampoco hay pedidos de I/O pendientes. st: steal time, slo aplica cuando nuestro Linux corre en una mquina virtual. Es el tiempo que algn proceso de nuestro sistema estaba esperando en la cola de ejecucin, pero el hypervisor eligi no darnos tiempo de procesador, y asignarlo a otro procesador virtual. Si presionamos la tecla 1, top nos muestra las estadsticas de uso discriminado por cada core/procesador:

top - 18:57:22 up 12 days, 5:09, 1 user, load average: 0.03, 0.03, 0.00 nTasks: 174 total, 1 running, 173 sleeping, 0 stopped, 0 zombie Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu2 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Fecha de Actualizacin 22/08/2013

Pgina 11

Sistemas Operativos [AEC-1061]

Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu4 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
La lnea siguiente (Mem) detalla las estadsticas de uso de memoria. En ella vemos la memoria total, la memoria utilizada, la memoria libre y la memoria utilizada por como buffers.

Mem:

252692k total, 248656k used,

4036k free,

19440k buffers

La ltima de las lneas del resumen (Swap) detalla el uso del espacio de swap. Indica cunto es el espacio de swap total, cunto est utilizado, cunto libre y cunto est siendo utilizado por pginas cacheadas

Swap: 506036k total,


Lista de procesos

44k used, 505992k free, 188384k cached

Luego del resumen del uso de los recursos del sistema top lista los procesos activos, ordenndolos segn el uso de procesador.

Las columnas tienen el siguiente significado: PID: Process ID USER: usuario que inici el proceso PR: prioridad del proceso NI: nice value. Un valor negativo significa mayor prioridad (hasta -20), un valor positivo, menor prioridad (hasta 19) VIRT: Cantidad de memoria virtual utilizada por el proceso (incluyendo datos, cdigo, shared libraries y swap)

Fecha de Actualizacin 22/08/2013

Pgina 12

Sistemas Operativos [AEC-1061]

RES: Cantidad de memoria RAM fsica que el proceso est utilizando SHR: Cantidad de memoria compartida. Refleja la memoria que potencialmente podra ser compartida con otros procesos. S: Status del proceso. Los posibles estados son D (uninterruptible sleep), R (running), S (sleeping), T (traced ostopped) o Z (zombie). %CPU: porcentaje de CPU utilizado desde la ltima actualizacin de la pantalla. %MEM: porcentaje de memoria fsica utilizada por el proceso TIME+: Tiempo total de CPU que el proceso ha utilizado desde que se inici. COMMAND: comando utilizado para iniciar el proceso. Se pueden agregar, quitar o cambiar el orden de estas columnas con las teclas f y o. Interaccin con top Podemos utilizar las siguientes teclas para interactuar con top: M Ordenar por uso de memoria P Ordenar por uso de CPU T Ordenar por tiempo de CPU utilizado F seleccionar campo por el cual ordenar la lista de procesos i mostrar u ocultar procesos idle y zombie m, l, t, 1 muestra u oculta las lneas del resumen (parte de arriba) f, o agregar/quitar columnas, cambiar el orden s cambia el tiempo de actualizacin de la pantalla (por defecto, 3 segundos) z Colores k Matar un proceso (luego pregunta el PID) r renice cambia el nice value de un proceso (luego pregunta el PID) q finalizar Fecha de Actualizacin 22/08/2013 Pgina 13

Sistemas Operativos [AEC-1061]

h ayuda

3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Ubuntu Procesador de Textos Internet 4.- COMPETENCIAS ESPECFICAS Los alumnos con apoyo del profesor se integraran por equipos (3 personas mximo) para el resolver:

Abrir una terminal. Escribir en la terminal el comando top y presionamos 1. Escribir en la terminal el comando watch -d free m Comparar top vs watch. Que identificaste de las terminales.

5. RESULTADOS En esta parte el alumno integrara cada una de las pantallas donde se realizaron laspruebas. 6. CONCLUSIONES El alumno aprender comandos bsicos para monitoreo del sistema en LINUX.

7.- BIBLIOGRAFA

1. Andrew S. Tanenbaum, Roberto Escalona Garca, Sistemas Operativos Modernos, Ed. Prentice Hall. 2. Sistemas Operativos Dhamdhere, Dhananjay M. Ed. Mc-Graw Hill de Mxico 2008 3. William Stallings, Sistemas operativos. Aspectos internos y principios de diseo. Quinta edicin. 2005. Pearson. Prentice-Hall.

4. Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. 2006, Fundamentos de


sistemas operativos. Sptima edicin. McGraw-Hill.

Fecha de Actualizacin 22/08/2013

Pgina 14

Sistemas Operativos [AEC-1061]

Prctica

LLAMANDO AL SISTEMA
Observaciones: Esta prctica incluye a las Prcticas # 8 del temario de Sistemas Operativos I que dicen Realizar una prctica de introduccin de una nueva llamada al sistema en el minikernel..

1.- OBJETIVO El alumno aplicar la llamada al kernel para identificar de qu manera responde este. 2.- MARCO TERICO Se refiere a colocar de forma general, la informacin necesaria para el desarrollo de la prctica, es decir est orientado al cortical Izquierdo. A la hora de programar en C hay 3 tipos de funciones a las que podemos recurrir. Las funciones ordinarias internas a tu programa (desarrollo propio al programa), las funciones de librera que son funciones ordinarias que residen en una librera externa a tu programa (desarrollo propio o ajeno al programa). Como por ejemplo las funciones de la librera estandar C (libc). Una llamada a estas funciones es igual a cualquier llamada a una funcin. Los argumentos son situados en los registros del procesador o en la pila. La ejecucin es transferida al comienzo del cdigo de la funcin, que tpicamente est cargada en una librera compartida. Y, por ltimo, las llamadas al sistema (system call). Una llamada al sistema est implementada en el ncleo de Linux. Cuando un programa llama a una funcin del sistema, los argumentos son empaquetados y manejados por el ncleo, el cual toma el control de la ejecucin hasta que la llamada se completa. Una llamada al sistema no es una llamada a una funcin ordinaria, y se requiere un procedimiento especial para transferir el control al ncleo. Sin embargo la librera GNU C encapsula las llamadas al sistema con funciones de manera que pueden ser llamadas de manera sencilla y se confunden con llamadas a funciones ordinarias. Las funciones de entrada/salida como open y read son ejemplos de llamadas al sistema en Linux. El conjunto de llamadas al sistema Linux forman el interfaz ms bsico entre los programas y el ncleo de Linux. Existen llamadas al sistema que slo pueden ser ejecutados por el supe usuario en caso contrario fallarn. Adems una funcin de librera puede invocar una o ms funciones de librera o llamadas del sistema como parte de su implementacin. Linux tiene ms de 300 diferentes llamadas al sistema. Un listado de las llamadas al sistema de tu versin del kernel de Linux se puede encontrar en /usr/include/asm/unistd.h actualmente este fichero incluye a otros dos uno para arquitecturas de 32 bits y otro para arquitecturas de 64 bits (unistd_32.h y unistd_64.h respectivamente) Para poder introducirnos en las llamadas al sistema es necesario conocer strace. Strace (system trace) es un comando de la shell donde puedes depurar las llamadas al sistema de cualquier programa. strace

Fecha de Actualizacin 22/08/2013

Pgina 15

Sistemas Operativos [AEC-1061] te informa sobre las llamadas al sistema que realiza un programa adems de las seales que recibe. Es por tanto un herramienta muy valiosa de depuracin. Para utilizar strace basta con escribir strace seguido del nombre del programa que quieres analizar, por ejemplo $ strace hostname strace basicamente ejecuta el comando especificado hasta que este finaliza. Strace intercepta y registra las llamadas al sistema que el programa ha ejecutado y las seales recibidas por el proceso. strace envia a stderror o a un fichero especificado con la opcin -o el nombre de la llamada al sistema, sus argumentos y el valor de retorno de la llamada. Por ejemplo: execve("/bin/hostname", ["hostname"], [/* 43 vars */]) = 0 La llamada al sistema es execve. Los parmetros que se pasan al programa son los que se encuentran entre parmetros "/bin/hostname", ["hostname"], [/* 43 vars */] y el valor de retorno aparece despues del igual (0)

Para seales se imprime el smbolo de la seal y una cadena explicativa rodeado de '---' y '+++'. Por Ejemplo: --- SIGFPE (Floating point exception) @ 0 (0) --+++ killed by SIGFPE +++ En el caso de SIGKILL podemos ver: <unfinished ...> Recordemos que esta seal no se puede enmascarar. A continuacin voy a analizar un par de llamadas al sistema bastante comunes que pueden servir como ejemplo. El primero es access que sirve para comprobar los permisos sobre un determinado fichero. Access puede comprobar cualquier combinacin de permisos lectura, escritura y ejecucin. La llamada a access tiene 2 argumentos el primero es la ruta al fichero cuyos permisos queremos comprobar el segundo es un campo de bits tipo OR que puede contener R_OK, W_OK, X_OK que corresponden a verificar los permisos de lectura, escritura y ejecucin. El valor de retorno es 0 si tiene todos los permisos especificados por el segundo parmetro. Si el fichero existe pero no tiene todos los permisos especificados devuelve -1 y errno cambia a EACCES (o a EROFS si se ha solicitado los permisos de escritura para un fichero de slo lectura). Si el segundo argumento es F_OK slo se comprueba la existencia del fichero. Si el fichero existe devuelve 0 si no existe devuelve -1 y fija errno a NOENT. Si el directorio donde est el fichero es inaccesible errno se fija a EACCESS. Veamos un ejemplo:

Fecha de Actualizacin 22/08/2013

Pgina 16

Sistemas Operativos [AEC-1061]

Otro ejemplo de llamada a sistema es fsync. Fsync permite sincronizar el contenido de un fichero con su copia en disco. Linux utiliza sincronizaciones asincronas entre la copia del fichero en memoria y la copia en disco. Para asegurarse de que ambas copias contienen la misma informacin. El sistema se encarga de hacer esto automaticamente pero es posible hacerlo manualmente a travs de esta llamada. Este es un ejemplo.

Si compilas el fichero anterior y al ejecutable lo llamamos sync en el directorio actual podemos ejecutar $ traceroute sync Y as ver como traceroute nos muestra la llamada al sistema, sync().

Fecha de Actualizacin 22/08/2013

Pgina 17

Sistemas Operativos [AEC-1061] 3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Ubuntu Procesador de Textos Internet 4.- COMPETENCIAS ESPECFICAS Los alumnos con apoyo del profesor se integraran por equipos (3 personas mximo) para el resolver:

Abrir Gedit Introducir el siguiente texto:

Compilar con gcc. Identificar la llamada que est realizando. Explicar el cdigo que realiza.

5. RESULTADOS En esta parte el alumno integrara cada una de las pantallas donde se realizaron laspruebas. 6. CONCLUSIONES El alumno aprender codificacin bsica para la llamada al sistema operativo.

7.- BIBLIOGRAFA

5. Andrew S. Tanenbaum, Roberto Escalona Garca, Sistemas Operativos Modernos, Ed. Prentice Hall.
Fecha de Actualizacin 22/08/2013 Pgina 18

Sistemas Operativos [AEC-1061]

6. Sistemas Operativos Dhamdhere, Dhananjay M. Ed. Mc-Graw Hill de Mxico 2008 7. William Stallings, Sistemas operativos. Aspectos internos y principios de diseo. Quinta edicin. 2005. Pearson. Prentice-Hall.

8. Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. 2006, Fundamentos de


sistemas operativos. Sptima edicin. McGraw-Hill.

Fecha de Actualizacin 22/08/2013

Pgina 19

Sistemas Operativos [AEC-1061]

Prctica
Arboles

Observaciones: Esta prctica incluye a las Prcticas # 9, # 10 y #11 del temario de Sistemas Operativos I que dicen Realizar una prctica de gestin de archivos. Representando un rbol de directorios. , Realizar una prctica de creacin de un sistema de archivos simulando una semejanza con el servidor de archivos en Windows., Realizar una prctica de creacin de un sistema de archivos simulando su semejanzacon el servidor de archivos de Linux.

1.- OBJETIVO El alumno desarrollara el modelado XML para la representacin de rboles de archivos. 2.- MARCO TERICO Se refiere a colocar de forma general, la informacin necesaria para el desarrollo de la prctica, es decir est orientado al cortical Izquierdo. rbol de directorios

Estructura de directorios bsica en GNU/Linux Al examinar el contenido de nuestro disco duro mediante la consola o cualquiera de las utilidades graficas de que dispone nuestra distribucin de GNU/Linux (tomemos como ejemplo el navegador Konqueror de KDE), nos daremos cuenta de que existen muchos directorios cuyo nombre puede parecer confuso, sobretodo si tenemos cierta experiencia en los sistemas de Microsoft. En este caso, tambin observaremos que los directorios utilizan el carcter / en lugar del carcter \ para referirse a una ruta de subdirectorios anidados.

En GNU/Linux, todo tiene su reflejo en algn archivo o en algn directorio del sistema de archivos.

Los directorios de GNU/Linux pueden pertenecer a dos categoras distintas, segn si se pueden o no compartir en un entorno de red, o si contienen datos estticos o variables.

Pero desde el punto de vista del usuario, en GNU/Linux existen dos tipos de directorios: los directorios del sistema y el directorio del usuario.

Fecha de Actualizacin 22/08/2013

Pgina 20

Sistemas Operativos [AEC-1061]

Directorios del sistema

Los directorios del sistema son aquellos en los que se guardan todos los archivos que componen nuestro sistema operativo GNU/Linux. Es de capital importancia que ningn usuario que no disponga de los permisos adecuados pueda acceder a los archivos que componen nuestro sistema, ya que, de lo contrario, un usuario inexperto (por ejemplo) podra modificarlos o eliminarlos y hacer que todo el sistema se volviera inestable, o incluso inutilizable (como es el caso de los sistemas de Microsoft, donde la mera activacin de un virus por parte de un usuario determinado vulnera la totalidad del sistema operativo y la seguridad y privacidad de los datos del resto de usuarios). En una sistema: distribucin GNU/Linux tpica podemos encontrar los siguientes directorios del

/boot Este directorio contiene la informacin necesaria para poder arrancar nuestro sistema GNU/Linux. Entre otros archivos, aqu se encuentran los ncleos que se pueden iniciar (normalmente se trata de archivos con un nombre similar a vmlinuz-x.y.z).

/etc Este directorio contiene todos los archivos de configuracin de nuestro sistema GNU/Linux (como el archivo passwd, que contiene una lista con los nombres de usuario y contraseas, o el archivo fstab, que contiene una lista con los puntos donde se han montado las diferentes particiones y los sistemas de archivos que utilizan).

/bin Contiene programas ejecutables (tambin llamados binarios) que forman parte del sistema operativo GNU/Linux. Estos comandos pueden ser usados por cualquier usuario y son relativos a la consola. /sbin Contienen programas ejecutables (tambin llamados binarios) que forman parte del sistema operativo GNU/Linux. Estos comandos son relativos a los sistemas de archivos, particiones e inicio del sistema, y solo pueden ser usados por el administrador.

/lib Contiene las bibliotecas (o libreras) del sistema que son necesarias durante el inicio del mismo. Estas bibliotecas son anlogas a los archivos DLL de Windows. Su ventaja reside en que no es necesario integrar su cdigo en los programas que las usan, ya que cuando un programa necesita alguna de sus funciones, se carga la biblioteca en la memoria y puede ser usada por cualquier otro programa que la necesite, sin necesidad de volver a cargarla en memoria. Un subdirectorio especial es/lib/modules, que contiene los mdulos del ncleo (normalmente se trata de controladores de dispositivos) que se cargan nicamente en caso de que haga falta usar un determinado dispositivo, por lo que no estarn permanentemente ocupando memoria.

/mnt Este directorio es tpico de las distribuciones RedHat, aunque puede no estar presente en otras distribuciones. Su misin consiste en agrupar en un mismo lugar los puntos de montaje de diversas particiones externas, como por ejemplo: CD-ROM, DVD, disqueteras, unidades ZIP, particiones de MSWindows y de otros sistemas operativos, etc. Este directorio contiene un subdirectorio adicional para cada una de estas particiones (como /mnt/cdrom, /mnt/win_c, /mnt/floppy o /mnt/zip). Si accedemos a estos subdirectorios estaremos accediendo realmente a esas particiones.

Fecha de Actualizacin 22/08/2013

Pgina 21

Sistemas Operativos [AEC-1061]

/usr Su nombre proviene de user (usuario) y, como tal, contiene una rplica de otros directorios de nuestro sistema GNU/Linux orientados al usuario en lugar de al propio sistema. Este directorio se puede compartir en una red local, pero su contenido es esttico.

/opt Contiene paquetes de software adicionales, como por ejemplo KDE o GNOME. Algunas distribuciones no hacen uso de l. /var Su nombre procede de variable, y esa es la naturaleza de la informacin que contienen sus subdirectorios y archivos, como colas de impresin (en /var/spool/lpd), correo electrnico que todava no se ha recogido (en /var/spool/mail) o enviado (en /var/spool/mqueue), o archivos de registro creados por los distintos procesos de nuestro sistema (en /var/log).

/tmp Este directorio contiene diversos archivos temporales que son usados por distintos programas de nuestro sistema.

/dev Este directorio contiene archivos de dispositivos que permiten la comunicacin con los distintos elementos hardware que tengamos instalados en nuestro sistema. Entre los distintos dispositivos que aqu podemos encontrar estn los discos duros (como /dev/hda o /dev/sda), las particiones de los discos duros (como por ejemplo/dev/hda1 o /dev/sda4), las unidades de CD-ROM SCSI (como /dev/scd0) y los vnculos a cualquier tipo de unidad de CD-ROM (como /dev/cdrom), las disqueteras (como /dev/fd0), las impresoras (como /dev/lp0), los puertos serie (como /dev/ttyS0 o/dev/cua0), el puerto PS/2 (/dev/psaux) y las tarjetas de sonido (como /dev/audio).

/proc Contiene los archivos del sistema de archivos de proceso. No son verdaderos archivos, sino una forma de acceder a las propiedades de los distintos procesos que se estn ejecutando en nuestro sistema. Para cada proceso en marcha existe un subdirectorio /proc/<nmero de proceso> con informacin sobre l.

/root Este es el directorio personal del usuario root o superusuario. Contiene bsicamente la misma informacin que los directorios personales de los distintos usuarios del sistema, pero orientada nica y exclusivamente al usuario root.

/home Aqu residen los directorios de los distintos usuarios del sistema, excepto el del usuario root, que se encuentra en el directorio especial /root. Este directorio es opcional, aunque est presente en casi todas las distribuciones. La jerarqua /etc

Este directorio posee distintos subdirectorios que se utilizan para la configuracin de determinados componentes de nuestro sistema:

Fecha de Actualizacin 22/08/2013

Pgina 22

Sistemas Operativos [AEC-1061]

/etc/opt Contiene los archivos de configuracin para el software instalado en el directorio /opt. Cada paquete de software tendr su correspondiente subdirectorio dentro de /etc/opt. /etc/X11 Contiene los archivos de configuracin del entorno grfico X Window. Entre otras cosas, contiene los gestores de ventanas y de arranque de los distintos escritorios grficos. Este directorio es opcional. /etc/sgml Contiene los archivos de configuracin para SGML y XML. Este directorio es opcional. La jerarqua /usr

Este directorio contiene distintos subdirectorios: /usr/bin Contiene casi la totalidad de los comandos que un usuario puede necesitar.

/usr/include Contiene los archivos de cabeceras usados por los programas escritos en el lenguaje C. /usr/lib Contiene las bibliotecas de usuario.

/usr/local Contiene la jerarqua local de usuario, con los subdirectorios tpicos /bin, /include, /lib, /sbin, etc. Tras la instalacin de un sistema GNU/Linux, este directorio estar vaco.

/usr/sbin Contiene los archivos binarios (ejecutables) no vitales del sistema usados por el administrador. /usr/share Contiene archivos de datos independientes de la arquitectura del sistema, como documentacin, howtos, etc. Aqu se encontrar los subdirectorios /man (que contiene manuales de programas) y /misc (que contiene diversos datos independientes de la arquitectura). Tambin se pueden encontrar los subdirectorios/dict, /doc, /games, /info, /locale, /smgl, zoneinfo, etc.

/usr/X11R6 Contiene todos los programas que componen el entorno grfico X Window (binarios, bibliotecas y pginas man, por lo que encontraremos directorios como /usr/X11R6/bin /usr/X11R6/lib y /usr/X11R6/man). Este directorio es opcional.

/usr/games Contiene los archivos binarios de muchos juegos y programas educativos. Este directorio es opcional.

/usr/src Contiene el cdigo fuente del ncleo de GNU/Linux. Este directorio es opcional. /usr/local Como en el resto de sistemas operativos UNIX, GNU/Linux est diseado para ser usado en entornos de red, por lo que es bastante frecuente que el directorio /usr no se encuentre en el ordenador local, sino en un servidor. Por ello, el directorio /usr/local est destinado a contener el software que se instale localmente en cada ordenador, y contiene subdirectorios similares a los que se puede encontrar bajo /usr (como /usr/local/bin, /usr/local/sbin, /usr/local/lib, /usr/local/man , etc.). Adicionalmente, encontraremos un directorio /usr/local/etc con idntica funcionalidad al directorio /etc. Fecha de Actualizacin 22/08/2013 Pgina 23

Sistemas Operativos [AEC-1061] Aunque use su ordenador de forma aislada y no en un entorno de red, este es el directorio en el que deber instalar sus programas. La jerarqua /var Este directorio tambin posee una estructura tpica de subdirectorios: /var/cache Contiene datos de aplicaciones en cache, como archivos del servidor web y pginas de manual. /var/lib Contiene informacin de estado variable.

/var/log Contiene registros creados por diversos programas y por el propio sistema operativo.

/var/run Contiene datos relevantes para algunos procesos que se estn ejecutando.

/var/spool Contiene datos encolados de diversas aplicaciones, como correo electrnico del sistema y colas de impresin.

/var/tmp Contiene datos temporales que deben ser preservados entre reinicios del sistema. El directorio del usuario En un sistema GNU/Linux, cada usuario dispone de su propio directorio personal donde puede guardar los documentos creados por l con los distintos programas. Este directorio personal puede ser de acceso exclusivo para cada usuario, por lo que ningn otro usuario podr entrar en l y visualizar el contenido de los archivos que contiene (aunque esto depende del nivel de seguridad seleccionado durante la instalacin del sistema, ya que lo normal suele ser que el resto de usuarios puedan entrar en l y ver el contenido de algunos archivos y subdirectorios, pero no modificarlo). Los directorios personales estn ubicados en /home/<nombre de usuario>. El usuario root si dispone de los permisos suficientes para acceder a los directorios personales del resto de usuarios. Otros directorios

Algunas distribuciones hacen uso de otros directorios adicionales que suelen montar en el directorio raz: /media Es un directorio anlogo al estndar /mnt, y contiene los puntos de montaje de los dispositivos extrables.

/windows Algunas distribuciones lo crean si detectan un sistema Microsoft Windows instalado en nuestro equipo, creando dentro de ste tantos subdirectorios como particiones de Windows tengamos (como /windows/C, /windows/D, etc.). Contiene el punto de montaje de estas particiones.

Fecha de Actualizacin 22/08/2013

Pgina 24

Sistemas Operativos [AEC-1061]

/srv Aqu se alojan los directorios que usan los distintos servidores que tengamos instalados, como el servidor web (en /srv/www) o el servidor FTP (en /srv/ftp). Estos directorios no forman parte del estndar FHS, por lo que debern ser evitados 3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Ubuntu Procesador de Textos Internet XML gedit

4.- COMPETENCIAS ESPECFICAS Los alumnos con apoyo del profesor se integraran por equipos (3 personas mximo) para el resolver:

Abrir Gedit. Programa un rbol en XML. Programar un rbol de la estructura de archivos de Windows. Programar un rbol de la estructura de archivos de Linux. Identificar los nodos, raz, tallo y hojas del sistema de archivos.

5. RESULTADOS En esta parte el alumno integrara cada una de las pantallas donde se realizaron laspruebas. 6. CONCLUSIONES El alumno aprender codificacin bsica para la representacin de sistemas de archivos. 7.- BIBLIOGRAFA

1. Andrew S. Tanenbaum, Roberto Escalona Garca, Sistemas Operativos Modernos, Ed. Prentice Hall. 2. Sistemas Operativos Dhamdhere, Dhananjay M. Ed. Mc-Graw Hill de Mxico 2008 3. William Stallings, Sistemas operativos. Aspectos internos y principios de diseo. Quinta edicin. 2005. Pearson. Prentice-Hall.

4. Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. 2006, Fundamentos de


sistemas operativos. Sptima edicin. McGraw-Hill.

Fecha de Actualizacin 22/08/2013

Pgina 25

Sistemas Operativos [AEC-1061]

Prctica

RECOMPILANDO EL NUCLEO
Observaciones: Esta prctica incluye a las Prcticas # 12 y # 13 del temario de Sistemas Operativos I que dicen Desarrollar una prctica de recompilacin del ncleo de un sistema operativo puede serdidctico como pcxinu de Douglas Comer o minix de Andrew Tanenbaum o real comoGNU/LINUX. y Elaborar algunas llamadas al sistema y distinguir el mecanismo de las interrupciones enel contexto de los Procesos.

1.- OBJETIVO El alumno aprender a compilar y modificar el KERNEL de LINUX. 2.- MARCO TERICO Qu es el Kernel? El kernel o ncleo de Linux lo podramos definir como el corazn del SO. Antiguamente haba dos tipos de versiones del ncleo. Tenamos: Versin de produccion: Era la versin estable del momento y la que se deba de utilizar, ya que, esta versin era el resultado final de las versiones que estaban en desarrollo. Versin de desarrollo:Era la versin que estaba en desarrollo y la que los programadores utilizaban para corregir bugs. Esta versin era muy inestable. Cmo entender los numeritos del kernel? Muchas veces habr visto los kernel de esta manera: Kernel 2.4.1 Kernel 2.6.21.1 Y claro, cmo se entiende eso? Pues bien, las versiones por debajo de la 2.6 se numeraban en 3 dgitos. (SS.PP.VV) SS: Indica la serie (o versin) principal del kernel. Solo existen las versiones 1 y 2. PP: Indica si la versin es de desarrollo o de produccin. Fcil, nmero impar es que est en desarrollo, numero par que esta de produccin. VV: Indica si el kernel tiene revisiones dentro de la versin (Slo se modificaban fallos de programacin) Hoy en da, tambin convive con la 2.4, la 2.6. Con sta serie el sistema de numeracin pues cambio. En esta serie los modelos de desarrollo han cambiado, la manera de numerarse a pasado a ser de 4 dgitos (VV.RR.NR.CR) y no existen las versiones de produccin ni la de desarrollo. VV: Indica la versin (o serie) del kernel. RR: Indica la revisin del kernel (Da igual que los vea de forma impar o par, hoy en da, no tiene significado) NR: Indica nuevas revisionesdel kernel. Estos nmeros cambian cuando se incorporan nuevas caractersticas y drivers CR: Este digito cambia cuando se corrigen fallos de programacin o fallos de seguridad dentro de una revisin.

Fecha de Actualizacin 22/08/2013

Pgina 26

Sistemas Operativos [AEC-1061] Jerarqua de directorios En Linux existe un sistema de archivos que carga y contiene todos los directorios, redes, programas, particiones, dispositivos, etc. que el sistema sabe reconocer, o por lo menos, identificar. Este sistema de ficheros y directorios, tiene como base al carcter (/); ese mismo carcter sirve tambin para demarcar los directorios, como por ejemplo: "/home/usuario/imagen.jpg". El directorio especificado por una ruta consistente slo por este carcter contiene toda la jerarqua de los directorios que constituyen todo el sistema. A este directorio suele llamrselo directorio raz. En Linux, a los discos no se les asigna una letra como en Windows (p.e. "C:"), sino que se les asigna un directorio de la jerarqua del directorio raz (/), como por ejemplo: "/media/floppy". Es prctica comn en el sistema de ficheros de Linux, utilizar varias sub-jerarquas de directorios, segn las diferentes funciones y estilos de utilizacin de los archivos.16Estos directorios pueden clasificarse en: Estticos: Contiene archivos que no cambian sin la intervencin del administrador ( root), sin embargo, pueden ser ledos por cualquier otro usuario. (/bin, /sbin, /opt, /boot, /usr/bin...) Dinmicos: Contiene archivos que son cambiantes, y pueden leerse y escribirse (algunos solo por su respectivo usuario y el root). Contienen configuraciones, documentos, etc. Para estos directorios, es recomendable una copia de seguridad con frecuencia, o mejor an, deberan ser montados en una particin aparte en el mismo disco, como por ejemplo, montar el directorio /home en otra particin del mismo disco, independiente de la particin principal del sistema; de esta forma, puede repararse el sistema sin afectar o borrar los documentos de los usuarios. (/var/mail, /var/spool, /var/run, /var/lock, /home...) Compartidos: Contiene archivos que se pueden encontrar en un ordenador y utilizarse en otro, o incluso compartirse entre usuarios. Restringidos: Contiene ficheros que no se pueden compartir, solo son modificables por el administrador. (/etc, /boot, /var/run, /var/lock...) Kernel panic

Kernel panic. En Linux, un panic es un error casi siempre insalvable del sistema detectado por el ncleo en oposicin a los errores similares detectados en el cdigo del espacio de usuario. Es posible para el cdigo del ncleo indicar estas condiciones mediante una llamada a la funcin de pnico situada en el archivo header sys/system.h. Sin embargo, la mayora de las alertas son el resultado de excepciones en el cdigo del ncleo que el procesador no puede manejar, como referencias a direcciones de memorias invlidas. Generalmente esto es indicador de la existencia de un bug en algn lugar de la cadena de alerta. Tambin pueden indicar un fallo en el hardware como un fallo de la RAM o errores en las funciones aritmticas en el procesador, o por un error en el software. En muchas ocasiones es posible reiniciar o apagar adecuadamente el ncleo mediante una combinacin de teclas como ALT+SysRq+REISUB.

Fecha de Actualizacin 22/08/2013

Pgina 27

Sistemas Operativos [AEC-1061] Lenguajes de programacin Linux est escrito en el lenguaje de programacin C, en la variante utilizada por el compilador GCC (que ha introducido un nmero de extensiones y cambios al C estndar), junto a unas pequeas secciones de cdigo escritas con el lenguaje ensamblador. Por el uso de sus extensiones al lenguaje, GCC fue durante mucho tiempo el nico compilador capaz de construir correctamente Linux. Sin embargo, Intel afirm haber modificado su compilador C de forma que permitiera compilarlo correctamente. Asimismo se usan muchos otros lenguajes en alguna forma, bsicamente en la conexin con el proceso de construccin del ncleo (el mtodo a travs del cual las imgenes arrancables son creadas desde el cdigo fuente). Estos incluyen a Perl, Python y varios lenguajes shell scripting. Algunos drivers tambin pueden ser escritos en C++, Fortran, u otros lenguajes, pero esto no es aconsejable. El sistema de construccin de Linux oficialmente solo soporta GCC como ncleo y compilador de controlador. Portabilidad .

Ipod ejecutando un ncleo Linux. An cuando Linus Torvalds no ide originalmente Linux como un ncleo portable, ha evolucionado en esa direccin. Linux es ahora de hecho, uno de los ncleos ms ampliamente portados, y funciona en sistemas muy diversos que van desde iPAQ (una handheld) hasta unzSeries (un mainframe masivo). Est planeado que Linux sea el sistema operativo principal de las nuevas supercomputadoras de IBM, Blue Gene cuando su desarrollo se complete. De todos modos, es importante notar que los esfuerzos de Torvalds tambin estaban dirigidos a un tipo diferente de portabilidad. Segn su punto de vista, la portabilidad es la habilidad de compilar fcilmente en un sistema aplicaciones de los orgenes ms diversos; as, la popularidad original de Linux se debi en parte al poco esfuerzo necesario para tener funcionando las aplicaciones favoritas de todos, ya sean GPL o de Cdigo abierto. Las arquitecturas principales soportadas por Linux son DEC Alpha, ARM, AVR32, Blackfin,ETRAX CRIS, FR-V, H8, IA64, M32R, m68k, MicroBlaze, MIPS, MN10300, PA-RISC, PowerPC, System/390, SuperH, SPARC, x86, x86 64 y Xtensa17 Arquitectura de mquina virtual El ncleo Linux puede correr sobre muchas arquitecturas de mquina virtual, tanto como host del sistema operativo o como cliente. La mquina virtual usualmente emula la familia de procesadores Intel x86, aunque en algunos casos tambin son emulados procesadores de PowerPC o ARM. Fecha de Actualizacin 22/08/2013 Pgina 28

Sistemas Operativos [AEC-1061] Formatos binarios soportados Linux 1.0 admita slo el formato binario a.out. La siguiente serie estable (Linux 1.2) agreg la utilizacin del formato ELF, el cual simplifica la creacin de bibliotecas compartidas (usadas de forma extensa por los actuales ambientes de escritorio como GNOME yKDE). ELF es el formato usado de forma predeterminada por el GCC desde alrededor de la versin 2.6.0. El formato a.out actualmente no es usado, convirtiendo a ELF en el formato binario utilizado por Linux en la actualidad. Linux tiene la capacidad de permitir al usuario aadir el manejo de otros formatos binarios. Tambin binfmt_misc permite correr el programa asociado a un archivo de datos. 3.- MATERIAL, EQUIPO, REACTIVO o SOTFWARE A UTILIZAR Sistema Operativo Ubuntu Kernel de LINUX Procesador de Textos Internet gedit

4.- COMPETENCIAS ESPECFICAS Los alumnos con apoyo del profesor se integraran por equipos (3 personas mximo) para el resolver:

Iniciar en Ubuntu. Descargar el Kernel mas actual del siguiente hipervnculo: https://www.kernel.org/ Descomprimirlo en el lugar de preferencia. Abrir una terminal forma manual o por el comando: Ctrl+Alt+T. Acceder por medio de la terminal a la ruta donde se encuentra el kernel descomprimido. Una vez dentro del directorio ejecutar en la terminal el comando: make menuconfig. Ya que cargo el configurador podrs explorar cada una de las opciones que te da el Kernel para poder personalizarlo. Al final guardas los cambios que hayas hecho o los descartas segn sea el caso. Ingresa en la terminal el siguiente condigo para compilar los modulos: make modules. Y para instalar los mdulos al kernel ingresa el siguiente cdigo:make modules_install. Al final para instalar el kernel modificado ingresa el siguiente cdigo: make install. Ingresa por ltimo el siguiente comando: update-grub. Reinicia la mquina para que visualices los cambios al Kernel. Del cdigo fuente debers identificar donde se encuentra el mdulo del despachador de procesos, roud-robin, semforo.

5. RESULTADOS En esta parte el alumno integrara cada una de las pantallas donde se realizaron laspruebas y las modificaciones al kernel. 6. CONCLUSIONES El alumno aprender a compilar y personalizar un kernel real de GNU/LINUX.

Fecha de Actualizacin 22/08/2013

Pgina 29

Sistemas Operativos [AEC-1061] 7.- BIBLIOGRAFA

1. Andrew S. Tanenbaum, Roberto Escalona Garca, Sistemas Operativos Modernos, Ed. Prentice Hall. 2. Sistemas Operativos Dhamdhere, Dhananjay M. Ed. Mc-Graw Hill de Mxico 2008 3. William Stallings, Sistemas operativos. Aspectos internos y principios de diseo. Quinta edicin. 2005. Pearson. Prentice-Hall.

4. Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. 2006, Fundamentos de


sistemas operativos. Sptima edicin. McGraw-Hill.

Fecha de Actualizacin 22/08/2013

Pgina 30

Sistemas Operativos [AEC-1061] 8.- LISTA DE MATERIAL, EQUIPO O REACTIVO A UTILIZAR FOLIO 1 2 3 4 5 6 7 NOMBRE DEL MATERIAL, EQUIPO O REACTIVO Java 7u21 Sistema Operativo Ubuntu Procesador de Textos Internet XML gedit Kernel de LINUX CANT. UNIDAD

9.- LISTA DE BIBLIOGRAFA REQUERIDA FOLIO 1 2 3 4 5 6 BIBLIOGRAFIA CANT

Andrew S. Tanenbaum, Roberto Escalona Garca, Sistemas Operativos Modernos, Ed. Prentice Hall. Sistemas Operativos Dhamdhere, Dhananjay M. Ed. Mc-Graw Hill de Mxico 2008 William Stallings, Sistemas operativos. Aspectos internos y principios de diseo. Quinta edicin. 2005. Pearson. Prentice-Hall.

Fecha de Actualizacin 22/08/2013

Pgina 31

Sistemas Operativos [AEC-1061] 10.- CONTROL DE CAMBIOS DEL MANUAL DE PRCTICAS

DATOS GENERALES
FECHA DE ACTUALIZACION
22/08/2013

ELABOR Y/O ACTUALIZ


Ing. Edgar Franco Prez

DESCRIPCIN DE LA ACTUALIZACIN
Se elabor todo el manual de prcticas debido a que es nuevo plan de estudios.

Fecha de Actualizacin 22/08/2013

Pgina 32