Académique Documents
Professionnel Documents
Culture Documents
Indice general
1. Especificaci
on de entrega
2. Introducci
on
2.1. Documental Revolution OS . . . . . . . . . . . . . . .
2.2. Instalaci
on de Linux . . . . . . . . . . . . . . . . . . .
2.3. Arquitectura de Linux . . . . . . . . . . . . . . . . . .
2.4. Compilaci
on del kernel de Linux . . . . . . . . . . . .
2.5. Agregar una llamada al sistema en el kernel de Linux .
2.6. Agregar un m
odulo en tiempo de ejecucion en Linux .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
3
11
24
33
41
46
3. Linux
3.1. Investigaci
on sobre los Hilos en Linux . . . . . . .
3.1.1. Definici
on . . . . . . . . . . . . . . . . . . .
3.1.2. Thread implementado en Linux . . . . . . .
3.1.3. Cu
al es la diferencia entre proceso e hilo?
3.1.4. Creando un thread en Linux . . . . . . . .
3.1.5. Tipos de Hilos . . . . . . . . . . . . . . . .
3.2. Planificaci
on de Procesos . . . . . . . . . . . . . .
3.2.1. Definici
on de planificaci
on . . . . . . . . .
3.2.2. Tipos principales de Planificacion . . . . .
3.2.3. Tecnicas de planificaci
on . . . . . . . . . .
3.3. Programas de Memoria Compartida . . . . . . . .
3.3.1. Memoria Compartida . . . . . . . . . . . .
3.3.2. Sem
aforos . . . . . . . . . . . . . . . . . . .
3.3.3. Multiplicaci
on de Matrices . . . . . . . . .
3.3.4. Programa Fork. . . . . . . . . . . . . . . .
3.3.5. Programa Fork-execlp . . . . . . . . . . .
3.3.6. Programa Zombie . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
51
51
51
51
52
52
53
54
54
54
55
56
56
57
58
60
61
62
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Indice de figuras
2.1. Diapositiva de portada. . . . . . . . . . . . . . . . . . .
2.2. Diapositiva de ndice. . . . . . . . . . . . . . . . . . . .
2.3. Diapositiva de Introduci
on. . . . . . . . . . . . . . . . .
2.4. Diapositiva sobre Open Source. . . . . . . . . . . . . . .
2.5. Diapositiva del Movimiento del Software Libre . . . . .
2.6. Diapositiva sobre Unix. . . . . . . . . . . . . . . . . . .
2.7. Diapositiva sobre Componentes de un S.O. . . . . . . .
2.8. Diapositiva sobre versiones de Linux. . . . . . . . . . .
2.9. Diapositiva sobre versiones de Linux 2. . . . . . . . . .
2.10. Diapositiva sobre la comercializacion del Software Libre.
2.11. Diapositiva de Comparaci
on entre los tipos de software.
2.12. Diapositiva sobre la definici
on de open source. . . . . .
2.13. Diapositiva sobre la definici
on de open source 2. . . . .
2.14. Descarga de VirtualBox y del ISO de Ubuntu Server. .
2.15. Instalaci
on de VirtualBox. . . . . . . . . . . . . . . . .
2.16. Creaci
on del sistema Ubuntu Server. . . . . . . . . . . .
2.17. Selecci
on de la memoria RAM para ubuntu. . . . . . .
2.18. Selecci
on de idioma para la instalacion. . . . . . . . . .
2.19. Inicio de la instalaci
on de ubuntu. . . . . . . . . . . . .
2.20. Selecci
on de la ubicaci
on. . . . . . . . . . . . . . . . . .
2.21. Configuraci
on del teclado. . . . . . . . . . . . . . . . . .
2.22. Idioma del teclado. . . . . . . . . . . . . . . . . . . . .
2.23. Inicio del proceso de instalaci
on . . . . . . . . . . . . .
2.24. Nombre de la m
aquina. . . . . . . . . . . . . . . . . . .
2.25. Nombre de la cuenta. . . . . . . . . . . . . . . . . . . .
2.26. Nombre del usuario. . . . . . . . . . . . . . . . . . . . .
2.27. Ingresar la contrase
na. . . . . . . . . . . . . . . . . . .
2.28. Cifrar carpeta de usuario. . . . . . . . . . . . . . . . . .
2.29. Partcion del disco . . . . . . . . . . . . . . . . . . . . .
2.30. Partcion del disco 2. . . . . . . . . . . . . . . . . . . . .
2.31. Actualizaciones del sistema . . . . . . . . . . . . . . . .
2.32. Instalar el cargador de arranque GRUB. . . . . . . . . .
2.33. Inicio del sistema Ubuntu Server . . . . . . . . . . . . .
2.34. Arquitectura de Linux . . . . . . . . . . . . . . . . . . .
2.35. Subsistema Programador de Proceso . . . . . . . . . . .
2.36. Subsistema Administrador de Memoria . . . . . . . . .
2.37. Subsistema Comunicaci
on entre procesos . . . . . . . .
2.38. Subsistema del Sistema Virtual de Archivos . . . . . . .
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
4
5
5
6
6
7
7
8
8
9
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18
19
19
20
20
21
24
25
25
26
27
INDICE DE FIGURAS
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
28
29
30
31
32
33
33
34
34
35
35
36
36
37
37
41
41
42
42
43
43
44
44
46
47
47
48
48
48
50
50
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
52
53
56
57
59
60
60
61
61
62
62
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Indice de tablas
2.1. Requerimientos mnimos para instalar Ubuntu
iv
. . . . . . . . . . . . . . . . . . . . . . . .
21
Captulo 1
Especificaci
on de entrega
La entrega de cada una de las tareas lleva el siguiente formato:
tareaNumero-so-nombreApellidos-Grupo.zip
Por ejemplo, para la tarea 5 sera: tarea5-so-JoseDavidOrtegaPacheco-2CV7.zip. Cada envo deber
a
contener todas las fuentes en LATEX o de lenguaje C seg
un sea el caso. El correo de envo de tareas es:
tareas.escom.ipn@gmail.com
El motivo de envo ser
a tareaNumero-nombreDeTarea, por ejemplo: Tarea5-compilacionDelKernelDeLinux.
La fecha y hora lmite de entrega se especifica de manera particular en la descripcion de cada tarea y no
es negociable ni se realizan excepciones de alg
un tipo.
Captulo 2
Introducci
on
Las siguientes tareas tienen como proposito que el alumno conozca las bases historicas, te
oricas y
practicas del sistema operativo Linux, el cual sera el caso de estudio y sistema operativo de trabajo durante
el curso. Tambien tienen como objetivo que el alumno comprenda de manera general la arquitectura
y funcionamiento de un sistema de c
omputo, as como los fundamentos de programacion en lenguaje
ensamblador.
CAPITULO 2. INTRODUCCION
2.1.
Documental Revolution OS
El alumno observar
a el documental Revolution OSdel 2001, Dirigido por J.T.S. Moore, y realizar
a
una presentacion que explique la historia y evolucion del sistema operativo Linux mencionando fechas,
hechos y personas que se consideren importantes.
Presentacion
La figura 2.1 muestra la portada de la presentacion.
CAPITULO 2. INTRODUCCION
Posteriormente en la figura 2.3 podemos ver el inicio del movimiento de software libre encabezado, asi
como la definici
on de Linux en palabras de Linus Tolvalds.
En la figura 2.4 explico a grandes rasgos lo que es el Proyecto Open Source con las palabras del mismo
Bruce Perens quien defini
o la base de dicho proyecto.
CAPITULO 2. INTRODUCCION
Siguiendo con los personajes importantes en la siguiente figura 2.5 menciono a Ricard Stallman fundador del movimiento del software libre.
En la figura 2.6 hablo acerca de Unix para posteriormente hacer referencia a lo que es Linux y GNU.
CAPITULO 2. INTRODUCCION
Posteriormente en la figura 2.7 se muestran los componentes de un Sistema Operativo.
En la figura 2.8 hago uso de una tabla para mencionar las versiones de Linux hasta el a
no 1999.
CAPITULO 2. INTRODUCCION
Continuando con las versiones de Linux de la figura 2.8 ejemplifique mas agregado una lnea del tiempo
como se puede ver en la figura 2.9
Tambien en la presentaci
on aborde el tema de la comercializacon del software libre mencionando
algunos casos comentados en el documental como se muestra en la figura 2.10.
CAPITULO 2. INTRODUCCION
Para ejemplificar las diferencias entre software libre, open source y software privado agregue una tabla
comparativa entre los 3 tal y como se muestra en el siguiente figura 2.11.
Llegando a la parte final de la presentacion aborde sobre los 9 derechos que se tienen en la definici
on
de Open Source dada por Eric Raymond y en gran parte a Bruce Perens, dichos derechos se mencionan
en las figuras 2.12 y 2.13.
CAPITULO 2. INTRODUCCION
10. Describa en que consiste el Copy-Left? Constiste en tener el derecho para la libre distribuci
on de
copias y versiones modificadas pero exigiendo que los mismos derechos sean preservados en las
versiones modificadas.
11. De manera general, en que consiste la licencia GNU-GPL? Es la licencia de Linux que permite
utilizar las diferentes distribuciones de Linux siempre manteniendo los derechos a quien les pertenece,
y aunque se pueda modificar dichas distribuciones la licencia respalda que deban seguirse los derechos
que ella contiene.
CAPITULO 2. INTRODUCCION
10
12. C
ual es el nombre de la primera empresa de soporte a software libre? Cygnus.
13. C
ual es el nombre de la primera distribucion comercial de Linux? Yggdrasil Linux.
14. C
ual fue la aplicaci
on que hizo de Linux una tecnologa imprescindible en el contexto empresarial?
Apache, el cual podas poner diferentes servidores en una misma maquina
15. Que tipo de servicios proporciona Red Hat? Brinda soporte a Linux pero tambien brinda su propia
distribuci
on de Linux.
16. Por que se decidi
o hacer p
ublico el codigo fuente de NetScape? Por que Microsoft estaba regalando
Internet Explorer sin que nadie tuviera el codigo fuente y fue un modo de luchar contra eso.
17. Mencione los derechos que se tienen bajo el Open Source y descrbalos brevemente
a) Libre redistribuci
on: el software debe poder ser regalado o vendido libremente.
b) C
odigo fuente: el c
odigo fuente debe estar incluido u obtenerse libremente.
c) Trabajos derivados: la redistribucion de modificaciones debe estar permitida.
d ) Integridad del c
odigo fuente del autor: las licencias pueden requerir que las modificaciones sean
redistribuidas s
olo como parches.
e) Sin discriminaci
on de personas o grupos nadie puede dejarse fuera.
f ) Sin discriminaci
on de
areas de iniciativa: los usuarios comerciales no pueden ser excluidos.
g) Distribuci
on de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa.
h) La licencia no debe ser especfica de un producto: el programa no puede licenciarse solo como
parte de una distribuci
on mayor.
i ) La licencia no debe restringir otro software: la licencia no puede obligar a que alg
un otro
software que sea distribuido con el software abierto deba tambien ser de codigo abierto.
Fecha / hora lmite de entrega: martes 22 de septiembre de 2015 / 23:00 horas
CAPITULO 2. INTRODUCCION
2.2.
11
Instalaci
on de Linux
El alumno realizar
a la instalaci
on de una distribucion de Linux (Ubuntu Server) de manera fsica o
virtualizada (seleccionar una forma de instalacion u
nicamente). Para cada uno de los pasos a ejecutar se
debe obtener y reportar la pantalla correspondiente.
A continuacion se proporcionan los pasos de instalacion de manera generalizada para las dos opciones:
Instalacion fsica
1. Descargar el archivo ISO de la distribucion
2. Grabar el ISO en un CD o crear una USB que pueda arrancar la instalacion
3. Modificar la opci
on de arranque para iniciar desde la unidad de CD/DVD o USB
4. Seleccionar la opci
on de instalacion
5. Configurar las opciones de idioma, teclado, region geografica y zona horaria
6. Seleccionar particionado manual
7. Crear la partici
on raz y la de
area de intercambio
8. Proceder con la instalaci
on del sistema base e instalacion del gestor de arranque
9. Iniciar sesi
on en el sistema
Instalacion virtualizada (Virtualbox)
1. Descargar e instalar Virtualbox Host para windows o Linix seg
un sea el caso
2. Descargar el archivo ISO de la distribucion
3. Crear una nueva m
aquina virtual para Ubuntu Server
4. Crear un disco duro virtual
5. Asignar memoria fsica
6. Iniciar la m
aquina virtual
7. Iniciar la instalaci
on del sistema utilizando el ISO de la distribucion
A continuaci
on anexo las pantallas capturadas durante la instalacion de Ubuntu Server mediante la
virtualizacion usando VirtualBox.
CAPITULO 2. INTRODUCCION
12
CAPITULO 2. INTRODUCCION
13
CAPITULO 2. INTRODUCCION
14
CAPITULO 2. INTRODUCCION
15
CAPITULO 2. INTRODUCCION
16
CAPITULO 2. INTRODUCCION
17
CAPITULO 2. INTRODUCCION
18
CAPITULO 2. INTRODUCCION
19
CAPITULO 2. INTRODUCCION
20
CAPITULO 2. INTRODUCCION
21
Responda lo siguiente
1. Describa los requerimientos mnimos recomendados para la instalacion de la distribucion de Ubuntu
Server
Tipo de instalaci
on
Server (Standard)
Server (Minimal)
CPU
1 gigahertz
300 megahertz
RAM
512 megabytes
192 megabytes
CAPITULO 2. INTRODUCCION
22
desde el MBR
CAPITULO 2. INTRODUCCION
23
CAPITULO 2. INTRODUCCION
2.3.
24
Arquitectura de Linux
El alumno investigar
a las principales caractersticas del sistema operativo Linux respecto a su arquitectura, estructura de dise
no y llamadas al sistema.
Responda lo siguiente
Lea el artculo Concrete Architecture of the Linux Kernel de Ivan Bowman, Saheem Siddiqi y Meyer
C. Tanuan, y describa lo siguiente:
1. Muestre el diagrama de la estructura del sistema
CAPITULO 2. INTRODUCCION
25
Comunicaci
on entre procesos: utilizan para notificar un proceso de un evento. Una se
nal
tiene el efecto de alterar el estado del proceso de receptor, dependiendo de la sem
antica de
la se
nal particular. El kernel puede enviar se
nales a ning
un proceso en ejecucion.
Interfaz de red: proporciona conectividad de la red entre las maquinas, y un modelo de comunicaci
on socket. Se proporcionan dos tipos de implementaciones de socket: sockets BSD
y tomas de INET. Sockets BSD se implementan utilizando sockets INET. El sistema de red
de Linux proporciona dos protocolos de transporte con diferentes modelos de comunicaci
on
y calidad de servicio. Estos son los, protocolo UDP no fiable basada en mensajes y el fiable,
transmitido protocolo TCP. Estos se implementan en la parte superior del protocolo de
red IP.
3. Muestre el diagrama de cada subsistema y describa la funcion de los modulos que lo conforman
CAPITULO 2. INTRODUCCION
26
CAPITULO 2. INTRODUCCION
27
CAPITULO 2. INTRODUCCION
28
CAPITULO 2. INTRODUCCION
29
CAPITULO 2. INTRODUCCION
30
CAPITULO 2. INTRODUCCION
31
CAPITULO 2. INTRODUCCION
32
CAPITULO 2. INTRODUCCION
2.4.
33
Compilaci
on del kernel de Linux
El alumno realizar
a la compilaci
on del kernel de Linux en su version 3.6.2, de forma clasica y mediante
la forma Debian. Para cada uno de los pasos a ejecutar se debe obtener y reportar la pantalla correspondiente.
Obteneci
on de las fuentes del kernel:
1. Descargue las fuentes del kernel a partir del repositorio oficial: wget
CAPITULO 2. INTRODUCCION
34
Configuraci
on del nuevo kernel:
1. Copiar el archivo de configuraci
on actual del kernel (config-version-generic) del directorio boot al
directorio de trabajo con el nombre .config
2. Ejecutar make menuconfig (Puede ser necesario instalar make y libncurses: apt-get install), para
ingresar a la configuraci
on del kernel
CAPITULO 2. INTRODUCCION
3. Seleccionar la opci
on Load an Alternate Configuration File
4. Proporcionar el nombre del archivo de configuracion actual: .config
35
CAPITULO 2. INTRODUCCION
36
5. Salir de la configuraci
on del kernel seleccionando Exit
M
etodo cl
asico de compilaci
on:
Nombre del nuevo kernel
Abrir el archivo MakeFile y en la opcion EXTRAVERSION colocar como valor -SisOpV1, y en la
opcion NAME colocar como valor su nombre completo (juanPerezHernandez, por ejemplo)
CAPITULO 2. INTRODUCCION
37
Compilaci
on e instalaci
on del nuevo kernel
1. Ejecutar make y esperar
CAPITULO 2. INTRODUCCION
38
CAPITULO 2. INTRODUCCION
39
CAPITULO 2. INTRODUCCION
40
mkinitramfs es para el uso avanzado. En el cuadro local de update-initramfs deben hacer todas
las medidas necesarias.
En el arranque, el kernel descomprime ese archivo en el disco RAM, soportes y lo utiliza como
sistema de ficheros raz inicial. Todo hallazgo del dispositivo raz sucede en este espacio de
usuario temprana.
make-kpkg clean: La utilidad make-kpkg , usada para crear paquetes Debian relacionados con
el n
ucleo. La utilidad debe ejecutarse desde el directorio superior de las fuentes del n
ucleo, el
cual ya debe de haber sido configurado previamente (a menos que se use el objetivo configure).
Normalmente, si kernel-package no encuentra un fichero .config en el directorio actual, trata por
todos los medios de obtener uno apropiado (generalmente un fichero de configuracion adaptado
para n
ucleos Debian para esa arquitectura), y luego invoca a make oldconfig para permitir que
el usuario responda cualquier pregunta nueva.
Tpicamente, el programa se ejecuta como superusuario o bajo fakeroot, sino hay que indicar
a make-kpkg como convertirse en superusuario.
fakeroot: ejecuta una orden en un entorno donde parece que se tiene permisos de superusuario
para la manipulaci
on de ficheros. u
til para permitir a usuarios crear archivos (tar, ar, .deb etc.)
con ficheros con permisos/propietarios de superusuario. Sin fakeroot uno necesitara privilegios
de superusuario para crear los ficheros constituyentes del archivo con los permisos y propietario
correctos, y despues empaquetarlos, o uno tendra que construir los archivos directamente, sin
usar el archivador.
fakeroot reemplaza las funciones de la biblioteca de manipulacion de ficheros (chmod(2), stat(2)
etc.) por otras que simulan el efecto real que hubiesen tenido dichas funciones, si el usuario
hubiese sido realmente el superusuario.
dpkg:Es una herramienta de nivel medio para instalar, construir, borrar y gestionar los paquetes de Debian GNU/Linux. Se llama con parametros desde lnea de ordenes, especificando
una acci
on y cero o m
as opciones. La accion dice a dpkg que hacer y las opciones controlan de
alguna manera su comportamiento.
Tambien se puede usar dkpg como interfaz a dpkg-deb. Si aq encuentra alguna de las opciones
de este, se limita a llamarlo con esas mismas opciones.
Fecha / hora lmite de entrega: viernes 25 de septiembre de 2015 / 23:00 horas
CAPITULO 2. INTRODUCCION
2.5.
41
El alumno agregar
a una llamada al sistema en el kernel de Linux en su version 3.6.2. Antes de proceder
con las actividades, se debe contar con las fuentes del kernel de Linux en la version especificada.
1. Descargar las fuentes del kernel especificado de www.kernel.org
CAPITULO 2. INTRODUCCION
42
CAPITULO 2. INTRODUCCION
8. Compilar el kernel
43
CAPITULO 2. INTRODUCCION
44
Cabe mencionar que el resultado de la operacion arroja un 1 como se muestra en la figura 2.62 y
dicho resultado es debido a lo comentado en clase, que por la version del kernel no se debo agregar
al archivo sys.c sino agregarlo directamente a la arquitectura del kernel para obtener el resultado
correctamente.
CAPITULO 2. INTRODUCCION
45
Responda lo siguiente
1. Que contienen los siguientes archivos:
archx86syscallssyscall 32.tbl
En estos archivos se definen los codigos de llamadas al sistema para cada arquitectura.
includekernelsyscalls.h
Este archivo contiene las declaraciones de las llamadas al sistema.
kernelsys.c
Aqu es donde se definen el UID desbordamiento de todo el sistema y GID , para las arquitecturas que ahora tienen 32 bits UID / GID pero no lo hizo en el pasado, para versiones anteriores
del 3.2.x.
2. Para que sirve la llamada al sistema syscall()?
Es el mecanismo usado por una aplicacion para solicitar un servicio al sistema operativo.
Fecha / hora lmite de entrega: lunes 26 de octubre de 2015 / 23:00 horas
CAPITULO 2. INTRODUCCION
2.6.
Agregar un m
odulo en tiempo de ejecuci
on en Linux
El alumno crear
a una interfaz de m
odulo cargable en tiempo de ejecucion en Linux.
Crear una carpeta con el nombre: modulo
Moverse a la carpeta creada en el paso anterior
Crear el siguiente programa (m
oduloTest.c):
]include<linux/init.h>
]include<linux/modules.h>
static int hola (void)
{
printk(KERN ALERT PRUEBA: Hola modulo);
return 0;
}
static void adios (void)
{
printk(KERN ALERT PRUEBA: Adios modulo);
}
module init(hola)
module init(adios)
Crear el siguiente Makefile:
obj-m += m
oduloTest.o
HDIR = usrsrclinux-headers-3.6.2-15-generic
all:
$(MAKE) -C $(HDIR) SUBDIRS=$(PWD)
clean:
rm -rf *.o *.ko *.mod* *.symvers *.order
46
CAPITULO 2. INTRODUCCION
Ejecutar el Makefile
47
CAPITULO 2. INTRODUCCION
Ejecutar el comando insmod para instalar el modulo creado
Para eliminar el m
odulo cargado, ejecutar rmmod
48
CAPITULO 2. INTRODUCCION
49
Responda lo siguiente
1. Que es un m
odulo?
Los modulos son a groso modo, la manera mas sencilla y c omoda de a
nadir codigo y funcionalidad
al espacio del kernel sin tener que estar recompiandolo.
Como por ejemplo, Ubuntu, compilan un n
ucleo muy peque
no con lo mnimo para poder arrancar
y en tiempo de ejecuci
on carga en memoria aquellos modulos necesarios para dar servicio a los
dispositivos que tiene nuestro equipo.
2. Que es un m
odulo cargable en tiempo de ejecucion?
Los modulos son trozos de sistema operativo, en forma de ficheros objeto especiales (.ko), que se
pueden insertar y extraer en tiempo de ejecucion.
3. Que son los modutils?
Son los paquetes que contiene programas que puedes utilizar para trabajar con los modulos del
n
ucleo.
Programas instalados: depmod, genksyms, insmod, insmod ksymoops clean, kallsyms (enlace a insmod), kernelversion, ksyms (enlace a insmod), lsmod (enlace a insmod), modinfo, modprobe (enlace
a insmod) y rmmod (enlace a insmod).
4. Para que sirve:
lsmod:
comando para mostrar el listado de los modulos del kernel
insmod:
comando para instalar nuevos modulos al kernel en ejecucion
rmmod:
comando para eliminar algun modulo del kernel que este en ejecucion.
dmesg:
comando para obtener la visualizacion de los mensajes de los modulos en ejecucion.
5. Explique cada lnea de c
odigo correspondiente al modulo y al Makefile implementados
Empezare a describir el archivo m
oduloTest.c:
Tenemos las macros de inicio y fin, ademas todos los modulos que se necesitan, contienen los detalles
del modulo (Author, License. . . ). La declaracion de la funcion de inicio, la macro inithace que se
deseche a la funci
on de inicio y su memoria sea liberada una vez finaliza la carga para controladores
integrados pero no para la carga de modulos, la funcion nos indica si se a logrado cargar o no el
modulo devolviendo un 0.
Tambien tenemos declaraci
on de la funcion termino del modulo, la macro exitdesecha la funci
on
de finalizaci
on igualmente para controladores integrados pero no para modulos.
CAPITULO 2. INTRODUCCION
50
Finalmente tenemos indicado la Funcion de inicio del modulo y Funcion de termino del m
odulo.
Captulo 3
Linux
3.1.
Investigaci
on sobre los Hilos en Linux
El alumno realizar
a una investigaci
on sobre hilos en Linux
3.1.1.
Definici
on
Es un mecanismo por el cual un programa puede hacer mas de una cosa al mismo tiempo.
Como los procesos, los threads parecen correr simultaneamente; pero hay que tener el concepto que el
sistema corre una tarea por vez, y esto lo administra el Scheduller. Excepcion a estos son los sistemas que
tengan la capacidad de correr m
as de un proceso simultaneamente como en el caso de las arquitectura de
multiprocesamiento simetrico (SMP).
Podemos decir entonces que un programa que crea un thread tendra a partir de ese momento dos
time-slots.en la cola de ejecuci
on del scheduller. Pero estos dos time slotss.estan ejecutando un mismo
programa, muy probablemente en puntos de ejecucion distintos y comparten el mismo espacio de memoria, descriptores de archivos y otros recursos del sistema.
Esta caracterstica de compartir espacio de memoria y descriptores de archivos facilita la comunicaci
on
entre los threads y el programa que los creo. Es decir la problematica de ICP (Inter-Process Communication) esta resuelta.
Pero nada podemos asegurar en cuanto a la ejecucion. Mucho menos que estos guarden alguna relaci
on
en los tiempos de ejecuci
on. Estos temas son privados de Scheduller. No porque un programa cre
o un
thread podemos asegurar que siempre se ejecutara el programa padre antes que el thread, por ejemplo.
3.1.2.
Cuando se crea un thread en Linux(utilizando pthread create), se crea un nuevo proceso que ejecuta
el thread de referencia.
Pero a diferencia de un proceso creado con fork(), este nuevo proceso comparte el espacio de memoria,
descriptores de archivos y otros recursos del sistema; con el proceso que origino el thread.
51
CAPITULO 3. LINUX
3.1.3.
52
Cu
al es la diferencia entre proceso e hilo?
3.1.4.
CAPITULO 3. LINUX
53
Para compilar este programa le asignamos el nombre de thread-pid.c, y realizamos el siguiente comando:
Analizando un poco en c
odigo nos encontramos con algunas lneas nuevas, estas son:
La lnea pthread t thread; crea la variable thread de tipo pid thread. Esto es necesario para almacenar la identificaci
on de proceso thread a crear.
La lnea fprintf (stderr, main thread pid is %d \n, (int) getpid ()); imprime el n
umero de proceso
padre por la salida standar de error.
La lnea pthread create (&thread, NULL, &thread function, NULL); realiza la llamada para crear el
thread, el cual comenzara su ejecuci
on con la funcion thread function.
Analizando un poco mas en detalle la llamada vemos que posee cuatro argumentos:
1. Un puntero a la variable de tipo pthread t a donde dejara el pthread dle thread creado.
2. Un puntero al objeto de atributos del thread recien creado.
3. Un puntero a la funci
on a ejecutar por el thread. Esta funcion tiene que ser de tipo void* y un
argumento de tipo void*.
4. Los argumentos (de tipo void*) a pasarle al thread recien creado
3.1.5.
Tipos de Hilos
Un thread puede ser creado como joinable o detach. Por defecto, si no se especifica, un thread ser
a
joinable.
Un thread joinable requiere que el proceso padre utilice pthread join para liberarlo del sistema, si no
queda como zombie.
Un thread detach es liberado autom
aticamente por el sistema luego de su finalizacion, pero esto tiene
un inconveniente, es imposible sincronizar otro thread con su finalizacion, ni obtener resultado del mismo.
CAPITULO 3. LINUX
3.2.
54
Planificaci
on de Procesos
El alumno realizar
a una investigaci
on sobre la planificacion de procesos
3.2.1.
Definici
on de planificaci
on
La planificaci
on de procesos se refiere a como determina el sistema operativo al orden en que ira
cediendo el uso del procesador a los procesos que lo vayan solicitado, y a las polticas que empleara para
que el uso que den a dicho tiempo no sea excesivo respecto al uso esperado del sistema.
La Planificaci
on de procesos tiene c
omo principales objetivos la equidad, la eficacia, el tiempo de
respuesta, el tiempo de regreso y el rendimiento.
Equidad: Todos los procesos deben ser atendidos
Eficacia: El procesador debe estar ocupado el 100 % del tiempo.
Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes del usuario debe ser el
menor posible.
Tiempo de regreso: Reducir al mnimo el tiempo de espera de los resultados esperados por los
usuarios por lotes.
Rendimiento: Maximizar el n
umero de tareas que se procesan por cada hora.
Podemos hablar de 3 tipos principales de planificacion:
1. A largo plazo
2. A mediano plazo
3. A corto plazo
3.2.2.
A largo plazo: decide que procesos seran los siguientes en ser iniciados. Este tipo de planificaci
on era
el mas frecuente en los sistemas de lotes(principalmente aquellos con spool) y multiprogramados en
lotes; las decisiones eran tomadas principalmente considerando los requisitos pre-declarados de los
procesos y que el sistema tena libres al terminar alg
un otro proceso. La planificacion a largo plazo
puede llevarse a cabo con periodicidad de una vez cada varios segundos, minutos e inclusive horas.
En los sistemas de uso interactivo, casi la totalidad de los que se usan hoy en da, este tipo de planificacion no se efect
ua, dado que es tpicamente el usuario quien indica expresamente que procesos
iniciar.
A mediano plazo: Decide cuales procesos es conveniente bloquear en determinado momento, sea por
escasez/saturaci
on de alg
un recurso (como la memoria primaria) o porque estan realizando alguna
solicitud que no puede satisfacerse momentaneamente; se encarga de tomar decisiones respecto a los
procesos conforme entran y salen del estado de bloqueado (esto es, tpicamente, estan a la espera
de alg
un evento externo o de la finalizacion de transferencia de datos con alg
un dispositivo).
En algunos textos, a este planificador se le llama agendador (scheduler)
CAPITULO 3. LINUX
55
A corto plazo: Decide como compartir momento a momento al equipo entre todos los procesos que
requieren de sus recursos, especialmente el procesador. La planificacion a corto plazo se lleva a cabo
decenas de veces por segundo (raz
on por la cual debe ser codigo muy simple, eficiente y rapido); es
el encargado de planificar los procesos que estan listos para ejecucion.
En algunos textos, a este planificador se le llama despachador (dispatcher)
3.2.3.
Tecnicas de planificaci
on
CAPITULO 3. LINUX
3.3.
56
El alumno realizar
a la documentaci
on del codigo de los siguientes tres programas:
1. Programa 1 : Memoria Compartida
2. Programa 2 : Sem
aforos
3. Programa 3 : Multiplicaci
on de Matrices
4. Programa 4 : Fork
5. Programa 5 : Fork-execlp
6. Programa 6 : Proceso Zombie
3.3.1.
Memoria Compartida
Las siguientes im
agenes muestran tanto el codigo del programa, as como al correspondiente descripci
on
de lnea por lnea del funcionamiento:
CAPITULO 3. LINUX
3.3.2.
57
Sem
aforos
Las siguientes im
agenes muestran tanto el codigo del programa, as como al correspondiente descripci
on
de lnea por lnea del funcionamiento:
CAPITULO 3. LINUX
3.3.3.
58
Multiplicaci
on de Matrices
Las siguientes im
agenes muestran tanto el codigo del programa, as como al correspondiente descripci
on
de lnea por lnea del funcionamiento:
CAPITULO 3. LINUX
59
CAPITULO 3. LINUX
3.3.4.
60
Programa Fork.
CAPITULO 3. LINUX
3.3.5.
61
Programa Fork-execlp
CAPITULO 3. LINUX
3.3.6.
62
Programa Zombie