Está en la página 1de 67

Instituto Politecnico Nacional

Escuela Superior de Computo


Semestre 2015-2016/1
Sistemas Operativos
Reporte de tareas
Profesor
Jose David Ortega Pacheco
Alumno: Jim
enez Casillas Adri
an
Grupo: 2CV5
8 de diciembre de 2015

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

2.39. Subsistema de Interfaz de Red . . . . . . . . . . . . . . .


2.40. Informaci
on general del subsistema del n
ucleo . . . . . .
2.41. Subsistema Programador de Proceso . . . . . . . . . . . .
2.42. Subsistema Administrador de Memoria . . . . . . . . . .
2.43. Subsistema del Sistema Virtual de Archivos . . . . . . . .
2.44. Subsistema de la Interfaz de Red . . . . . . . . . . . . . .
2.45. Descarga del kernel del repositorio. . . . . . . . . . . . .
2.46. Mover de directorio. . . . . . . . . . . . . . . . . . . . . .
2.47. Proceso con el archivo .config. . . . . . . . . . . . . . . .
2.48. Instalar make y libncurses . . . . . . . . . . . . . . . . .
2.49. Men
u con el comando make menuconfig. . . . . . . . . .
2.50. Cargar archivo .config . . . . . . . . . . . . . . . . . . . .
2.51. Salir del me
u . . . . . . . . . . . . . . . . . . . . . . . . .
2.52. Modificar archivo Makefile . . . . . . . . . . . . . . . . .
2.53. Inicio de la compilaci
on del kernel. . . . . . . . . . . . . .
2.54. Esperando fin de compilaci
on . . . . . . . . . . . . . . . .
2.55. Descargar kernel v3.6.2 . . . . . . . . . . . . . . . . . . .
2.56. Descomprimir kernel y moverse a la liga simbolica creada
2.57. Modificando el archivo syscall 32.tbl . . . . . . . . . . . .
2.58. Modificando el archivo syscalls.h . . . . . . . . . . . . . .
2.59. Modificando el archivo sys.c . . . . . . . . . . . . . . . .
2.60. Compilando nuevo kernel . . . . . . . . . . . . . . . . . .
2.61. Modificando el archivo syscall 32.tbl . . . . . . . . . . . .
2.62. Compilando y ejecutando el programa . . . . . . . . . . .
2.63. Archivos m
oduloTest.c y Makefile. . . . . . . . . . . . . .
2.64. Ejecuci
on de comando make. . . . . . . . . . . . . . . . .
2.65. Listado de M
odulos instalados. . . . . . . . . . . . . . . .
2.66. Instalaci
on del nuevo m
odulo m
oduloTest. . . . . . . . .
2.67. Visualizar mensaje del m
odulo. . . . . . . . . . . . . . . .
2.68. Elimiar m
odulo m
oduloTest. . . . . . . . . . . . . . . . .
2.69. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.70. Archivo makefile con comentariso. . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

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

3.1. Programa para crear un hilo en Linux.


3.2. Compilaci
on del archivo de hilo. . . . .
3.3. Programa 1: Memoria Compartida. . .
3.4. Programa 2: Sem
aforos. . . . . . . . . .
3.5. Programa 3: Multiplicaci
on de Matrices.
3.6. fork . . . . . . . . . . . . . . . . . . . .
3.7. fork compilacion . . . . . . . . . . . . .
3.8. fork-execlp 3cm . . . . . . . . . . . . . .
3.9. fork-execlp compilacion 3cm . . . . . . .
3.10. zombie 3cm . . . . . . . . . . . . . . . .
3.11. zombie compilacon 3cm . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

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.

Figura 2.1: Diapositiva de portada.

Continuamos con la figura 2.2 que muestra el ndice de la presentacion

Figura 2.2: Diapositiva de ndice.


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.

Figura 2.3: Diapositiva de Introducion.

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.

Figura 2.4: Diapositiva sobre Open Source.


CAPITULO 2. INTRODUCCION

Siguiendo con los personajes importantes en la siguiente figura 2.5 menciono a Ricard Stallman fundador del movimiento del software libre.

Figura 2.5: Diapositiva 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.

Figura 2.6: Diapositiva sobre Unix.


CAPITULO 2. INTRODUCCION
Posteriormente en la figura 2.7 se muestran los componentes de un Sistema Operativo.

Figura 2.7: Diapositiva sobre Componentes de un S.O.

En la figura 2.8 hago uso de una tabla para mencionar las versiones de Linux hasta el a
no 1999.

Figura 2.8: Diapositiva sobre versiones de Linux.


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

Figura 2.9: Diapositiva sobre versiones de Linux 2.

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.

Figura 2.10: Diapositiva sobre la comercializacion del Software Libre.


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.

Figura 2.11: Diapositiva de Comparacion entre los tipos de software.

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.

Figura 2.12: Diapositiva sobre la definicion de open source.


CAPITULO 2. INTRODUCCION

Figura 2.13: Diapositiva sobre la definicion de open source 2.


Responda lo siguiente
1. Que es Linux? Es un Sistema Operativo. Es decir, Linux es el software necesario para que otros
programas se ejecuten en el.
2. Describa c
ual es la misi
on de un sistema operativo Ayuda a que los programas se ejecuten esperando
que los dem
as le soliciten recursos.
3. Mencione quien es Linus Torvalds y su principal contrbucion Ingeniero de software finlandes estadounidense y es el creador del kernel Linux.
4. Describa que es Open Source Es la forma en que la gente colabore software sin estar envuelto en
problemas de propiedad(Bruce Perens).
5. Mencione quien es Bruce Perens y cual fue su contribucion Bruce Perens es un programador estadounidense, quien contibuy
o para la definicion de Open Source.
6. Que es la Free Software Foundation? Fundacion creada por Richard Stallman con el prop
osito de
difundir el movimiento del mismo nombre.
7. Mencione quien es Richard Stallman y su principal contribucion Richard Matthew Stallman es un
programador estadounidense y fundador de las bases legales y filosoficas del movimiento por el
software libre.
8. Que se entiende por Software propietario? Aquel en el que el usuario no puede acceder al c
odigo
fuente y por lo tanto no tiene la posibilidad de modificar,redistribuir o su licencia tiene un costo.
9. Cual es el significado de GNU? GNUs not Unix si, es algo recursivo.
2

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.

Figura 2.14: Descarga de VirtualBox y del ISO de Ubuntu Server.


CAPITULO 2. INTRODUCCION

Figura 2.15: Instalacion de VirtualBox.

Figura 2.16: Creacion del sistema Ubuntu Server.

12


CAPITULO 2. INTRODUCCION

Figura 2.17: Seleccion de la memoria RAM para ubuntu.

Figura 2.18: Seleccion de idioma para la instalacion.

13


CAPITULO 2. INTRODUCCION

Figura 2.19: Inicio de la instalacion de ubuntu.

Figura 2.20: Seleccion de la ubicacion.

14


CAPITULO 2. INTRODUCCION

15

Figura 2.21: Configuracion del teclado.

Figura 2.22: Idioma del teclado.


CAPITULO 2. INTRODUCCION

Figura 2.23: Inicio del proceso de instalacion

Figura 2.24: Nombre de la maquina.

16


CAPITULO 2. INTRODUCCION

17

Figura 2.25: Nombre de la cuenta.

Figura 2.26: Nombre del usuario.


CAPITULO 2. INTRODUCCION

Figura 2.27: Ingresar la contrase


na.

Figura 2.28: Cifrar carpeta de usuario.

18


CAPITULO 2. INTRODUCCION

19

Figura 2.29: Partcion del disco

Figura 2.30: Partcion del disco 2.


CAPITULO 2. INTRODUCCION

Figura 2.31: Actualizaciones del sistema

Figura 2.32: Instalar el cargador de arranque GRUB.

20


CAPITULO 2. INTRODUCCION

21

Figura 2.33: Inicio del sistema Ubuntu Server

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

Espacio en disco duro


Sistema base
Todas las tareas instaladas
1 gigabyte
1.75 gigabytes
700 megabytes 1.4 gigabytes

Tabla 2.1: Requerimientos mnimos para instalar Ubuntu


2. Mencione la diferencia entre la versi
on de Servidor y de Escritorio de Ubuntu
Ambas ediciones usan los mismos repositorios apt. Esto hace que resulte tan sencillo instalar una
aplicacioon de servidor en la edicio
on Escritorio que en la edicioon Servidor.
Las diferencias entre las dos ediciones son la falta de un entorno de X window.en la edicion Server
y el proceso de instalaci
on.
3. Defina el concepto de Partici
on primaria, extendida y logica
Una partici
on primaria contiene el sistema operativo y se considera como una particion logica, sin
embargo una partici
on extendida puede contener mas de una particion logica. La particion primaria
permite el arranque de los diferentes sistemas operativos que se encuentren instalados, mientras la
extendida sirve como almacen de datos, ya que ah no se pueden instalar s.o.


CAPITULO 2. INTRODUCCION

22

4. Mencione a que se hace referencia con Formato de Sistema de Archivo


Cada sistema operativo utiliza un sistema de archivos diferente, y cada sistema tiene soporte para
determinados sistemas de ficheros por lo que, por ejemplo, un equipo con Windows no puede leer
ni escribir sobre un disco formateado en HFS+.
Refiriendonos a Linux su formato de sistema de archivo es el ext3 y OS X no tiene soporte para el
pero se puede conseguir gracias a terceros, al igual que podemos hacer con NTFS.
Bajo Linux tambien podemos acceder a discos en HFS+ pero el proceso se complica un poco m
as,
necesitando recurrir a comandos de terminal y alg
un proceso intermedio mas.
5. Diga que se entiende por Gestor de Arranque
Un gestor de arranque es aquel que se encarga en ayudarnos a definir o seleccionar cual es la imagen
de Sistema Operativo que se va a cargar en la memoria para iniciar el sistema.
6. Mencione c
ual es el gestor de arranque en Linux y describa su estructura de archivos y comandos
asociados
Para Linux usa el sistema de Arranque GRUB1 , se carga y se ejecuta en 4 etapas:
La primera etapa del cargador la lee el BIOS

desde el MBR

La segunda etapa Contiene c


odigo extra que permite leer cilindros mayores que 1024 o dispo4
sitivos tipo LBA .
La segunda etapa del gestor de arranque ejecuta y muestra el men
u de inicio de GRUB que
permite al usuario elegir un sistema operativo y examinar y modificar los parametros de inicio.
Despues de elegir un sistema operativo, se carga y se le pasa el control.
GRUB soporta metodos de arranque directo, arranque chain-loading, LBA, ext2, ext3, ext4 y hastaun pre-sistema operativo en m
aquinas x86 totalmente basado en comandos. Contiene tres interfaces: un men
u de selecci
on, un editor de configuracion, y una consola de lnea de comandos.
7. Muestre la estructura del sistema de archivos en Linux (Ubuntu Server) y mencione de manera
general que es lo que contiene cada directorio
La estructura de sistema de archivos es en arbol, los directorios que integran Ubuntu son:
a) /bin: Contiene varios comandos u
tiles que son de uso tanto para el sistema administrador, as
como los usuarios no privilegiados, por lo general contiene los Shell, Este es el directorio que
se considera el esencial.
b) /root: Contiene todo lo necesario para el proceso de arranque a excepcion de archivos (GRUB).
c) /dev: Aqu se encuentra la ubicacion de los archivos especiales o dispositivos, aqu es donde
tambien se guardan las particiones de los discos, la Unidad deCD, etc.
d ) /etc: Este es el centro neur
algico de su sistema, que contiene todos los archivos de configuraci
on
relacionados con el sistema.
1

Grand Unified Bootloader


Basic Input/Output System
3
Master Boot Record
4
Logical Block Addressing
2


CAPITULO 2. INTRODUCCION

23

e) /home: Aqu se encuentran los directorios personales de los usuarios.


f ) /initrd: Proporciona la capacidad de cargar un disco RAM por el boot de carga. Este disco
RAM puede ser montado como archivos raz programas de sistema y se pueden ejecutar desde
la isma.
g) /lib: Contiene los m
odulos del n
ucleo y las imagenes de bibliotecas compartidas (la biblioteca
de codigo de programaci
on).
h) /lost+found: Un chequeo al sistema de ficheros larga (la velocidad de este control depende del
tipo de sistema de archivos que se maneje.
i ) /media: En medio de una gran controversia y consternacion por parte del sistema y los administradores de red un directorio vque contiene los puntos de montaje para medios extrables
ha sido creada.
j ) /mnt: Este es un punto de montaje generico bajo el cual se monta sus sistemas de archivos o
dispositivos.
k ) /opt: Este directorio se reserva para todo el software y paquetes adicionales que no forman
parte de la instalaci
on por defecto.
l ) /proc: Es muy especial, ya que tambien es un sistema de ficheros virtual, no contiene archivos
realespero la informaci
on del sistema en tiempo de ejecucion, puede ser considerado como un
centro de control y la informacion para el n
ucleo.
m) /root: Este es el directorio inicial del administrador del sistema.
n) /sbin: Aqu se encuentran los ejecutables que utiliza para el mantenimiento del sistema y / o
tareas administrativas.
n
) /usr: Este es uno de los m
as importantes directorios en el sistema, ya que contiene todos los
binarios de usuarios, su documentacion, bibliotecas, etc.
o) /var: Contiene datos variables como los archivos de registro del sistema, los directorios de
correo y la cola de impresi
on y transitoria y archivos temporales.
p) /srv: Este contiene datos especficos del sitio que se sirve de este sistema.
q) /tmp: Este directorio contiene sobre todo los archivos que se requieren temporalmente.
8. Defina que es y para que sirve el
area de intercambio (Swap) y la recomendacion de tama
no para
dicha area
El espacio de memoria de intercambio o Swap es lo que se conoce como memoria virtual; utiliza
espacio en la unidad de almacenamiento en lugar de un modulo de memoria. Cuando la memoria
real se agota, el sistema copia parte del contenido de esta directamente en este espacio de memoria
de intercambio a fin de poder realizar otras tareas.
Se recomienda que para menos de un 1GB de RAM, usar una SWAP del doble de la cantidad total
de memoria RAM.
Mas de 1 GB de Ram, se recomienda usar la misma cantidad del total de memoria RAM, m
as de 2
GB.
Fecha / hora lmite de entrega: miercoles 23 de septiembre de 2015 / 23:00 horas


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

Figura 2.34: Arquitectura de Linux


2. Explique de manera breve cada subsistema respecto a su funcion
Planificador de procesos: es el principal responsable de la carga, ejecucion y terminaci
on
adecuada de los procesos de usuario. El algoritmo de planificacion se llama en dos puntos
diferentes durante la ejecucion de un proceso de usuario. En primer lugar, hay llamadas al
sistema que llaman el programador directamente, como sleep(). En segundo lugar, despues
de cada llamada al sistema, y despues de cada interrupcion sistema lento (que se describe
en un momento), el algoritmo de programacion se llama.
Administrador de memoria: utiliza el administrador de memoria de hardware para asignar
direcciones virtuales (utilizados por los procesos de usuario) a direcciones de memoria
fsica. Cuando un usuario accede a un proceso de ubicacion de la memoria, el gestor de la
memoria del hardware traduce esta direccion de memoria virtual a una direccion fsica, a
continuaci
on, utiliza la direccion fsica para realizar el acceso.
Sistema Virtual de Archivos: debe ser compatible con muchos sistemas de archivos l
ogicos diferentes y diversos dispositivos de hardware. Para ello tiene dos capas conceptuales
que se extienden f
acilmente. La capa de controlador de dispositivo representa todos los
dispositivos fsicos con una interfaz com
un. La capa del sistema de archivos virtual (VFS)
representa a todos los sistemas de archivos logicos con una interfaz com
un. La arquitectura
conceptual del kernel de Linux ([Bowman 1998], [Siddiqi 1998]) muestra como se organiza
conceptualmente esta descomposicion.


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

Figura 2.35: Subsistema Programador de Proceso

Figura 2.36: Subsistema Administrador de Memoria


CAPITULO 2. INTRODUCCION

Figura 2.37: Subsistema Comunicacion entre procesos

26


CAPITULO 2. INTRODUCCION

27

Figura 2.38: Subsistema del Sistema Virtual de Archivos


Lea el artculo Conceptual Architecture of the Linux Kernel de Ivan Bowman, y describa lo siguiente:
1. Mueste el diagrama general de la arquitectura conceptual
2. Cual es el elemento central en la arquitectura de acuerdo al artculo y por que?
El artculo comenta que el subsistema mas central es el planificador de procesos: todos los
demas subsistemas dependen del planificador de procesos ya que todos los subsistemas deben
suspender y reanudar los procesos. Por lo general, un subsistema suspendera un proceso que
esta a la espera de una operacion de hardware para completar, y reanudar el proceso cuando
se termina la operaci
on.
Su prop
osito es controlar el acceso a la CPU (s) de la computadora. Esto no solo incluye el
acceso de los procesos de usuario, sino tambien el acceso a otros subsistemas del kernel.
3. Describir de manera breve cada uno de los elementos de la arquitectura, y para cada uno de
ellos mostrar su diagrama de subsistemas y describir los modulos internos
a) Programador de Proceso : Su proposito es controlar el acceso a la CPU (s) de la computadora. Esto no s
olo incluye el acceso de los procesos de usuario, sino tambien el acceso a
otros subsistemas del kernel.
El planificador est
a dividido en cuatro modulos principales:
El m
odulo de poltica de planificacion es responsable de juzgar que proceso va a tener
acceso a la CPU; la poltica esta dise
nada para que los procesos tengan un acceso
equitativo a la CPU.
M
odulos de Arquitectura especficos estan dise
nados con una interfaz com
un para
abstraer los detalles de cualquier arquitectura de computadora en particular. Estos


CAPITULO 2. INTRODUCCION

28

Figura 2.39: Subsistema de Interfaz de Red

Figura 2.40: Informacion general del subsistema del n


ucleo
m
odulos son responsables de comunicar con una CPU de suspender y reanudar un
proceso. Estas operaciones consisten en saber lo que se registra y la necesidad de
informaci
on de estado para ser preservado para cada proceso y ejecucion del c
odigo
ensamblador para efectuar una operacion de suspender o reanudar.
El m
odulo independiente de la arquitectura se comunica con el modulo de polticas para
determinar que proceso se ejecutara el proximo, entonces llama al modulo especfico de
la arquitectura para reanudar el proceso adecuado. Ademas, este modulo llama al gestor
de memoria para asegurar que el hardware de memoria se restaura adecuadamente para
el proceso reanudado.
El m
odulo de interfaz de llamadas al sistema permite el acceso a los procesos de usuario
s
olo aquellos recursos que se exportan de forma explcita por el n
ucleo. Esto limita la
dependencia de los procesos de usuario en el kernel a una interfaz bien definida que
raramente cambia, a pesar de los cambios en la aplicacion de otros modulos del kernel.
b) Administrador de Memoria: Se encarga de controlar el acceso al proceso de los recursos de
memoria de hardware.


CAPITULO 2. INTRODUCCION

29

Figura 2.41: Subsistema Programador de Proceso


El subsistema de administrador de memoria se compone de tres modulos:
El m
odulo especfico de arquitectura presenta una interfaz virtual para el hardware de
gesti
on de memoria
El gestor independiente arquitectura realiza todas la asignacion por proceso e intercambio de memoria virtual. Este modulo es responsable de determinar que seran desalojados p
aginas de memoria cuando hay un error de pagina - no hay modulo de poltica
independiente, ya que no se espera que esta poltica tendra que cambiar.
Una interfaz de llamada al sistema se proporciona para facilitar el acceso restringido
a los procesos de usuario. Esta interfaz permite a los procesos de usuario para asignar
y almacenamiento gratuito, y tambien para realizar la memoria de archivos E / S
asignada.
c) Sistema de Archivo Virtual: esta dise
nado para presentar una vision coherente de los datos
que se almacena en los dispositivos de hardware, y permite que el administrador del sistema para montar cualquiera de un conjunto de sistemas de archivos logicos en cualquier
dispositivo fsico.
Adem
as de los objetivos tradicionales del sistema de archivos, el sistema de archivos virtual tambien es responsable de cargar nuevos programas ejecutables. Esta responsabilidad
se logra mediante el m
odulo de sistema de archivo logico, y esto permite a Linux soporta
varios formatos de ejecutables.
Este subsistema consta de 5 modulos:
Controlador de dispositivo para cada controlador de hardware soportado. Puesto que
hay un gran n
umero de dispositivos de hardware incompatibles, hay un gran n
umero
de controladores de dispositivos. La extension mas com
un de un sistema Linux es la
adici
on de un nuevo controlador de dispositivo.
Interfaz independiente de dispositivos proporciona una vision consistente de todos los
dispositivos.
Sistema de archivo l
ogico para cada sistema de archivos compatible.


CAPITULO 2. INTRODUCCION

30

Figura 2.42: Subsistema Administrador de Memoria


La interfaz independiente del sistema presenta un hardware y-archivo-sistema l
ogico
visi
on independiente de los recursos de hardware. En este modulo se presenta todos los
recursos utilizando una interfaz orientada a bloques o archivo orientado a caracteres.
Por u
ltimo, la interfaz de llamada al sistema proporciona acceso controlado al sistema
de archivos para los procesos de usuario. El sistema de archivos virtual exporta u
nica
funcionalidad especfica para los procesos de usuario.
d ) Interfaz de red: permite que los sistemas Linux para conectarse a otros sistemas en una
red. El subsistema de red abstrae tanto de estos detalles de implementacion para que los
procesos de usuario y otros subsistemas del kernel pueden tener acceso a la red sin necesidad de saber lo que se est
a utilizando dispositivos fsicos o protocolo.
Consta de 4 m
odulos:
Controladores de dispositivos de red se comunican con los dispositivos de hardware.
Hay un m
odulo de controlador de dispositivo para cada posible dispositivo de hardware.
El m
odulo de interfaz independiente dispositivo proporciona una vision consistente de
todos los dispositivos de hardware de modo que los niveles mas altos en el subsistema
no necesitan conocimientos especficos del hardware en uso.
Los m
odulos de protocolo de red son responsables de la implementacion de cada uno
de los posibles protocolos de transporte de red.
El m
odulo de interfaz independiente de protocolo proporciona una interfaz que es
independiente de los dispositivos de hardware y protocolo de red. Este es el m
odulo
de interfaz que es utilizado por otros subsistemas del n
ucleo para acceder a la red sin
tener una dependencia de protocolos o de hardware particulares.


CAPITULO 2. INTRODUCCION

31

Figura 2.43: Subsistema del Sistema Virtual de Archivos


e) Comunicaci
on entre procesos: Depende del administrador de memoria para soportar un
mecanismo de comunicaci
on de memoria compartida. Este mecanismo permite que dos
procesos para acceder a un area de memoria com
un, ademas de su memoria privada usual.
La arquitectura del subsistema de comunicacion entre procesos se omite por razones de
brevedad, ya que no es tan interesante como los otros subsistemas.
Cual es la estructura de dise
no de Linux?, mencione tres ventajas y tres desventajas de dicha
estructura de dise
no
Cual es la clasificaci
on de las llamadas al sistema en Linux?, escriba el nombre de las llamadas al
sistema que contiene cada categora
Llamadas al sistema para el control de procesos:
1. fork( )
2. getpid( )
3. getppid( )
4. La familia de llamadas exec. . . (. . . )
5. wait()
6. waitpid()
7. exit()
8. System()


CAPITULO 2. INTRODUCCION

Figura 2.44: Subsistema de la Interfaz de Red


Llamadas al sistema para el control de se
nales:
SIGHUP
SIGINT
SIGQUIT
SIGILL
SIGTRAP
SIGABRT
SIGBUS
SIGFPE
SIGKILL
SIGUSR1
Fecha / hora lmite de entrega: jueves 24 de septiembre de 2015 / 23:00 horas

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

Figura 2.45: Descarga del kernel del repositorio.

2. Mueva las fuentes al directorio usrsrc

Figura 2.46: Mover de directorio.


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

Figura 2.47: Proceso con el archivo .config.

2. Ejecutar make menuconfig (Puede ser necesario instalar make y libncurses: apt-get install), para
ingresar a la configuraci
on del kernel

Figura 2.48: Instalar make y libncurses


CAPITULO 2. INTRODUCCION

Figura 2.49: Men


u con el comando make menuconfig.

3. Seleccionar la opci
on Load an Alternate Configuration File
4. Proporcionar el nombre del archivo de configuracion actual: .config

Figura 2.50: Cargar archivo .config

35


CAPITULO 2. INTRODUCCION

36

5. Salir de la configuraci
on del kernel seleccionando Exit

Figura 2.51: Salir del me


u

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)

Figura 2.52: Modificar archivo Makefile


CAPITULO 2. INTRODUCCION

37

Compilaci
on e instalaci
on del nuevo kernel
1. Ejecutar make y esperar

Figura 2.53: Inicio de la compilacion del kernel.

Figura 2.54: Esperando fin de compilacion


2. Ejecutar make install
3. Ejecutar make modules install
4. Ejecutar mkinitramfs -k -o bootinitrd.img-3.6.2-SisOpV1 3.6.2-SisOpV1
M
etodo Debian:
Actualizaci
on de paquetes: apt-get update
Instalacion de paquetes mecesarios para la compilacion: apt-get install kernel-package fakeroot buildessential
Compilaci
on e instalaci
on del nuevo kernel
1. Ejecutar make-kpkg clean
2. Ejecutar fakeroot make-kpkg initrd append-to-version=-nombre kernel image kernel headers
y esperar
3. Ejecutar dpkg -i linux-image-versi
on-nombre arquitectura.deb


CAPITULO 2. INTRODUCCION

38

4. Ejecutar dpkg -i linux-headers-versi


on-Nombre arquitectura.deb
Actualizaci
on del gestor de arranque e inicio con el nuevo kernel:
1. Actualizar el gestor de arranque: update-grub
2. Reiniciar el sistema
3. Seleccionar el nuevo kernel para iniciar
4. Mostrar que estamos en el nuevo kernel: uname -a
Responda lo siguiente
1. Cual es el repositorio oficial del kernel de Linux?
El repositiorio oficial se encuentra en la pagina: https://www.kernel.org/ ,donde se aloja el kernel;
aunque en la versi
on 3.1-rc5 se alojo en la pagina de: https://github.com/torvalds/linux por
un supuesto hackeo al repositorio oficial.
2. Que son los Patches?
Comunmente se asocia a cambios que se aplican a un programa, para corregir errores, agregarle
funcionalidad, actualizarlo, etc. Tambien puede ser aplicado tanto a un binario ejecutable como al
codigo fuente de cualquier tipo de programa, incluso, un sistema operativo.
El tipo de patche (parche) que se usa con mayor frecuencia en el software libre es al codigo fuente
donde un parche suele constar de un archivo de texto que describe modificaciones a realizar en el
codigo fuente del programa en cuestion.
3. Explique el significado del n
umero que representa el versionado en el kernel de Linux (Linux 3.6.2,
por ejemplo)?
El primer n
umero indica la versi
on del Kernel.
El segundo n
unmero indica la revision mayor. Antes del Kernel 2.6 los n
umeros de revisi
on pares
correspondan a versiones estables y los impares correspondan a versiones inestables que estaban
a
un en desarrollo. Desp
ues de la version 2.6 lo n
umeros se manejaron de manera distinta.
El tercer n
umero corresponde a las revisiones menores, como la aceptacion de nuevos drivers.
El cuarto n
umero corresponde a las correcciones de errores menores o parches de seguridad.
4. Para que sirve realizar la compilacion del kernel?
A grandes rasgos el hecho de compilar el kernel de Linux nos brinda la posibilidad de hacer un kernel
justo a la medida de nuestro hardware, eliminando todos aquellos modulos que no necesitamos.
Tambien podemos configurarlo para no tener ning
un modulo, sino que este todo integrado en el
Kernel, a
nadiendo m
as robustez al sistema, pero as no podremos a
nadir mas hardware y si lo
hacemos debemos de compilar el kernel de nuevo.


CAPITULO 2. INTRODUCCION

39

5. Que es un kernel vanilla?


El kernel de www.kernel.org son kernels de vanilla.
Cada distribuci
on diferente toma estos kernels de vanilla y a
nade su propio tipo de saborizante. Pueden corregir errores particulares en el codigo (Debian es muy bueno en hacer esto), y pueden agregar
sus propios parches que hacer cosas de lujo (SuSE a
nade un parche para hacer una animaci
on en la
pantalla de inicio), y se puede agregar parches para mejorar la instalaciones del kernel (a menudo
usando la fuente de la rama de desarrollo del kernel por ejemplo, para muy nuevos dispositivos USB).
As pues, aunque todos los n
ucleos se derivan de la misma fuente kernel, no todos los n
ucleos son
iguales.
As que si usted tiene una distribucion particular y tomar ventaja de algunas de las caractersticas
no estandar del n
ucleo, y luego ir a descargar un kernel de vanilla, el nuevo dispositivo USB moda
caliente ya no puede trabajar y si usted esta en SUSE ya no lo hara ver una animacion de tiempo
de arranque llamativo.
6. Que es un Makefile?
El archivo makefile (o Makefile), en conjunto con el comando make, nos permite, entre otras cosas,
establecer una serie de acciones que se deben seguir para crear una version ejecutable de un programa
o sistema que consista de varios archivos separados. A traves de este le decimos al sistema que
archivos dependen de otros, y le especificamos cuales. Esto es de importancia para el proceso de
compilaci
on y producci
on final de version ejecutable.
7. Describa para que sirven los siguientes comandos / comandos con opciones:
make: El prop
osito de la utilidad make es determinar automaticamente que piezas de un programa necesitan ser recompiladas, y lanzar las ordenes para recompilarlas. El programa make
emplea los datos del makefile (y otros internos) y los tiempos de u
ltima modificacion de los
ficheros para decidir cu
ales de ellos necesitan ser actualizados. Para cada uno de esos ficheros,
lanza las
ordenes que tiene grabadas en su base de datos.
Make ejecuta
ordenes en el makefile para actualizar uno o mas nombres de objetivo, donde
nombre es tpicamente un programa. Si no se ha dado la opcion -f, make buscara los makefiles
llamados GNUmakefile, make- file, y Makefile, en este orden, parando en el primero que encuentre y dando un error si no encuentra ninguno.
make install: es el metodo mas com
un de instalacion de un programa cuando lo compilamos
nosotros mismos, pero no es el u
nico y algunos programas tienen sus propios metodos de
configuraci
on /compilaci
on /instalacion.
make modules install: El comando make modules simplemente compila los modulos, dejando a
los binarios compilados en el directorio de construccion. Y el comando make modules install se
asegurar
a de que no se compilan binarios (y compilar los modulos, si no) e instalar los binarios
en su kernel modules directorio.
Si est
a seguro de que todos los modulos compilar sin problemas, puede utilizar make modules install directamente.
mkinitramfs: Genera una imagen initramfs. El initramfs es un archivo cpio gzip. El archivo se
puede utilizar en una caja diferente de el mismo arco con el kernel de Linux correspondiente.


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

Agregar una llamada al sistema en el kernel de Linux

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

Figura 2.55: Descargar kernel v3.6.2

2. Mover y descomprimir las fuentes del kernel al directorio usrsrc


3. Crear un liga simb
olica a las fuentes del kernel
4. Moverse a la liga simb
olica creada en el paso anterior

Figura 2.56: Descomprimir kernel y moverse a la liga simbolica creada

5. Modificar el archivo archx86syscallssyscall 32.tbl, agregando lo siguiente al final:


350 i386 add sys add


CAPITULO 2. INTRODUCCION

42

Figura 2.57: Modificando el archivo syscall 32.tbl

6. Modificar el archivo includelinuxsyscalls.h y agregar lo siguiente:


asmlinkage long sys add(int a, int b);

Figura 2.58: Modificando el archivo syscalls.h

7. Modificar el archivo kernelsys.c como sigue:


SYSCALL DEFINE2(add, int, a, int, b)
{
return a + b;
}


CAPITULO 2. INTRODUCCION

Figura 2.59: Modificando el archivo sys.c

8. Compilar el kernel

Figura 2.60: Compilando nuevo kernel

9. Iniciar con el nuevo kernel

43


CAPITULO 2. INTRODUCCION

44

Figura 2.61: Modificando el archivo syscall 32.tbl

10. Programa de prueba para la llamada


]include<stdio.h>
]include<unistd.h>
int main()
{
printf(5 + 6 = %d , syscall(350,5,6));
return 0;
}
11. Compile y ejecute el programa del paso anterior

Figura 2.62: Compilando y ejecutando el programa

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

Figura 2.63: Archivos moduloTest.c y Makefile.

46


CAPITULO 2. INTRODUCCION
Ejecutar el Makefile

Figura 2.64: Ejecucion de comando make.

Ejecutar el comando lsmod y verificar que no este instalado el modulo

Figura 2.65: Listado de Modulos instalados.

47


CAPITULO 2. INTRODUCCION
Ejecutar el comando insmod para instalar el modulo creado

Figura 2.66: Instalacion del nuevo modulo moduloTest.

Para ver el mensaje producido por el modulo, ejecutar dmesg

Figura 2.67: Visualizar mensaje del modulo.

Para eliminar el m
odulo cargado, ejecutar rmmod

Figura 2.68: Elimiar modulo moduloTest.

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.

Figura 2.69: Funciones


A continuaci
on comento lnea a lnea lo que se hace en el archivo makefile:

Figura 2.70: Archivo makefile con comentariso.

Fecha / hora lmite de entrega: lunes 26 de octubre de 2015 / 23:00 horas

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.

Thread implementado en Linux

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?

Un proceso es cualquier programa en ejecucion y es totalmente independiente de otros procesos. El


comando de ps nos lista los procesos en ejecucion en nuestra maquina. Un proceso tiene su propia zona de
memoria y se ejecuta simult
aneamente.a otros procesos. Es totalmente imposible que un proceso se meta,
a posta o por equivocaci
on, en la zona de memoria de otro proceso. Esta es una de las caractersticas que
hace de Linux/Unix un sistema fiable.
Dentro de un proceso puede haber varios hilos de ejecucion (varios threads). Eso quiere decir que un
proceso podra estar haciendo varias cosas a la vez. Los hilos dentro de un proceso comparten todos
la misma memoria. Eso quiere decir que si un hilo toca una variable, todos los demas hilos del mismo
proceso veran el nuevo valor de la variable. Esto hace imprescindible el uso de semaforos o mutex (EXclusion MUTua, por sus siglas en ingles, funciones pthread mutex...) para evitar que dos threads accedan
a la vez a la misma estructura de datos. Tambien hace que si un hilo se equivoca corrompe una zona
de memoria, todos los dem
as hilos del mismo proceso vean la memoria corrompida. Un fallo en un hilo
puede hacer fallar a todos los dem
as hilos del mismo proceso.
2

Un proceso es, por tanto, m


as costoso de lanzar, ya que se necesita crear una copia de toda la memoria
de nuestro programa. Los hilos son m
as ligeros. En cuanto a complejidad, en los hilos, al compartir la
memoria y los recursos, es casi obligado el uso de mutex o semaforos, as que su programacion suele ser
mas complicada y se necesita ser m
as cuidadoso. Un proceso, en el momento de lanzarlo, se hace independiente del nuestro, as que no deberamos tener ning
un problema, salvo que necesitemos comunicaci
on
entre ellos, que nos liaramos a programar memorias compartidas (con sus correspondientes sem
aforos),
colas de mensajes, sockets o cualquier otro mecanismo de comunicacion entre procesos Unix.

3.1.4.

Creando un thread en Linux

El siguiente programa crea un thread.

Figura 3.1: Programa para crear un hilo en Linux.

CAPITULO 3. LINUX

53

Para compilar este programa le asignamos el nombre de thread-pid.c, y realizamos el siguiente comando:

Figura 3.2: Compilacion del archivo de hilo.

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.

Tipos principales de Planificaci


on

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

Primero en llegar primero en ser servido


Conocido como FCFS (First Come First Served). Este algoritmo emplea una cola de procesos, asignando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar en
la cola despues del que lleg
o antes que el y se pone en estado de listo. Cuando un proceso comienza a
ejecutarse no se interrumpe su ejecuci
on hasta que termina de hacerlo.
Prioridad al m
as corto
Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecucion cambiara de estado
voluntariamente, o sea, no tendr
a un tiempo de ejecucion determinado para el proceso. A cada proceso
se le asigna el tiempo que usar
a cuando vuelva a estar en ejecucion, y se ira ejecutando el que tenga un
menor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea el
algoritmo FCFS.
Round Robin
A cada proceso se le asigna un tiempo determinado para su ejecucion, el mismo tiempo para todos. En
caso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuara su ejecuci
on
despues de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es un
algoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como una
cola circular.
Planificaci
on por prioridad
En este tipo de planificaci
on a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con esa prioridad ser
a el orden en que se atienda cada proceso.
Planificaci
on garantizada
Para realizar esta planificaci
on el sistema tiene en cuenta el n
umero de usuarios que deben ser atendidos. Para un n
umero nde usuarios se asignara a cada uno un tiempo de ejecucion igual a 1/n.
Planificaci
on de Colas M
ultiples
El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesos
que se encuentran en estado de listos es dividida en un n
umero determinado de colas mas peque
nas. Los
procesos son clasificados mediante un criterio para determinar en que cola sera colocado cada uno cuando
quede en estado de listo. Cada cola puede manejar un algoritmo de planificacion diferente

CAPITULO 3. LINUX

3.3.

56

Programas de Memoria Compartida

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:

Figura 3.3: Programa 1: Memoria Compartida.

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:

Figura 3.4: Programa 2: Semaforos.

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

Figura 3.5: Programa 3: Multiplicacion de Matrices.

CAPITULO 3. LINUX

3.3.4.

60

Programa Fork.

En la siguiente figura tenemos la captura de el codigo Fork.c

Figura 3.6: fork


En la Figura tenemos la captura de compilacion de el codigo de Fork.c

Figura 3.7: fork compilacion


En la cabecera unistd.h define constantes y tipos simbolicos diversos, y declara funciones auxiliares.
La funcion getpid devolver
a el ID de proceso del proceso invocador.
Fork: crea un nuevo proceso duplicando el proceso de llamada. los nuevos procesos se conocen como
procesos Hijo.
El proceso invocado devolvera su identificcador de proceso, dependiendo si es Proceso padre o hijo.

CAPITULO 3. LINUX

3.3.5.

61

Programa Fork-execlp

En la Figura tenemos la captura de el codigo Fork-execlp.c

Figura 3.8: fork-execlp


En la Figura tenemos la captura de compilacion de el codigo Fork-execlp.c

Figura 3.9: fork-execlp compilacion


La familia de funciones Exec remplaza la imagen del proceso que la invoca por una nueva imagen de
proceso.
En la cabecera unistd.h define constantes y tipos simbolicos diversos, y declara funciones auxiliares.
Para incluir el uso de Getpid,execpl, etc.
La funcion execlp sobrepone, es decir pone encima una imagen del proceso que ha sido creado por una
llamada a la funci
on Fork().

CAPITULO 3. LINUX

3.3.6.

62

Programa Zombie

En la Figura tenemos la captura de el codigo Zombie.c

Figura 3.10: zombie


En la Figura tenemos la captura de la compilacion del codigo Zombie.c

Figura 3.11: zombie compilacon