reporte tareas 2cv5 sistemas operativos

67
Instituto Polit´ ecnico Nacional Escuela Superior de C´ omputo Semestre 2015-2016/1 Sistemas Operativos Reporte de tareas Profesor Jos´ e David Ortega Pacheco Alumno: Jim´ enez Casillas Adri´ an Grupo: 2CV5 8 de diciembre de 2015

Upload: adrian-jc

Post on 17-Feb-2016

227 views

Category:

Documents


0 download

DESCRIPTION

Profesor Pacheco Sus tareas e investigaciones

TRANSCRIPT

Page 1: Reporte Tareas  2CV5 Sistemas Operativos

Instituto Politecnico Nacional

Escuela Superior de Computo

Semestre 2015-2016/1

Sistemas Operativos

Reporte de tareas

Profesor

Jose David Ortega Pacheco

Alumno: Jimenez Casillas Adrian

Grupo: 2CV5

8 de diciembre de 2015

Page 2: Reporte Tareas  2CV5 Sistemas Operativos

Indice general

1. Especificacion de entrega 1

2. Introduccion 22.1. Documental Revolution OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2. Instalacion de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3. Arquitectura de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.4. Compilacion del kernel de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.5. Agregar una llamada al sistema en el kernel de Linux . . . . . . . . . . . . . . . . . . . . . 412.6. Agregar un modulo en tiempo de ejecucion en Linux . . . . . . . . . . . . . . . . . . . . . 46

3. Linux 513.1. Investigacion sobre los Hilos en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.1.1. Definicion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.1.2. Thread implementado en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.1.3. ¿Cual es la diferencia entre proceso e hilo? . . . . . . . . . . . . . . . . . . . . . . 523.1.4. Creando un thread en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.1.5. Tipos de Hilos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.2. Planificacion de Procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.2.1. Definicion de planificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.2.2. Tipos principales de Planificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.2.3. Tecnicas de planificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

3.3. Programas de Memoria Compartida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.3.1. Memoria Compartida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.3.2. Semaforos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.3.3. Multiplicacion de Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.3.4. Programa Fork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.3.5. Programa Fork-execlp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.3.6. Programa Zombie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

i

Page 3: Reporte Tareas  2CV5 Sistemas Operativos

Indice de figuras

2.1. Diapositiva de portada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2. Diapositiva de ındice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3. Diapositiva de Introducion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.4. Diapositiva sobre Open Source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.5. Diapositiva del Movimiento del Software Libre . . . . . . . . . . . . . . . . . . . . . . . . 52.6. Diapositiva sobre Unix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.7. Diapositiva sobre Componentes de un S.O. . . . . . . . . . . . . . . . . . . . . . . . . . . 62.8. Diapositiva sobre versiones de Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.9. Diapositiva sobre versiones de Linux 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.10. Diapositiva sobre la comercializacion del Software Libre. . . . . . . . . . . . . . . . . . . 72.11. Diapositiva de Comparacion entre los tipos de software. . . . . . . . . . . . . . . . . . . . 82.12. Diapositiva sobre la definicion de open source. . . . . . . . . . . . . . . . . . . . . . . . . 82.13. Diapositiva sobre la definicion de open source 2. . . . . . . . . . . . . . . . . . . . . . . . 92.14. Descarga de VirtualBox y del ISO de Ubuntu Server. . . . . . . . . . . . . . . . . . . . . 112.15. Instalacion de VirtualBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.16. Creacion del sistema Ubuntu Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.17. Seleccion de la memoria RAM para ubuntu. . . . . . . . . . . . . . . . . . . . . . . . . . 132.18. Seleccion de idioma para la instalacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.19. Inicio de la instalacion de ubuntu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.20. Seleccion de la ubicacion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.21. Configuracion del teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.22. Idioma del teclado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.23. Inicio del proceso de instalacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.24. Nombre de la maquina. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.25. Nombre de la cuenta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.26. Nombre del usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.27. Ingresar la contrasena. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.28. Cifrar carpeta de usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.29. Partcion del disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.30. Partcion del disco 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.31. Actualizaciones del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.32. Instalar el cargador de arranque GRUB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.33. Inicio del sistema Ubuntu Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.34. Arquitectura de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.35. Subsistema Programador de Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.36. Subsistema Administrador de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.37. Subsistema Comunicacion entre procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.38. Subsistema del Sistema Virtual de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . 27

ii

Page 4: Reporte Tareas  2CV5 Sistemas Operativos

INDICE DE FIGURAS iii

2.39. Subsistema de Interfaz de Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.40. Informacion general del subsistema del nucleo . . . . . . . . . . . . . . . . . . . . . . . . 282.41. Subsistema Programador de Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.42. Subsistema Administrador de Memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.43. Subsistema del Sistema Virtual de Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . 312.44. Subsistema de la Interfaz de Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.45. Descarga del kernel del repositorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.46. Mover de directorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.47. Proceso con el archivo .config. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.48. Instalar make y libncurses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.49. Menu con el comando make menuconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.50. Cargar archivo .config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.51. Salir del meu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.52. Modificar archivo Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.53. Inicio de la compilacion del kernel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.54. Esperando fin de compilacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372.55. Descargar kernel v3.6.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.56. Descomprimir kernel y moverse a la liga simbolica creada . . . . . . . . . . . . . . . . . . 412.57. Modificando el archivo syscall 32.tbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.58. Modificando el archivo syscalls.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.59. Modificando el archivo sys.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.60. Compilando nuevo kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.61. Modificando el archivo syscall 32.tbl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.62. Compilando y ejecutando el programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.63. Archivos moduloTest.c y Makefile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462.64. Ejecucion de comando make. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.65. Listado de Modulos instalados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472.66. Instalacion del nuevo modulo moduloTest. . . . . . . . . . . . . . . . . . . . . . . . . . . 482.67. Visualizar mensaje del modulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.68. Elimiar modulo moduloTest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.69. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.70. Archivo makefile con comentariso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.1. Programa para crear un hilo en Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.2. Compilacion del archivo de hilo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.3. Programa 1: Memoria Compartida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.4. Programa 2: Semaforos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573.5. Programa 3: Multiplicacion de Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.6. fork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.7. fork compilacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.8. fork-execlp 3cm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.9. fork-execlp compilacion 3cm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.10. zombie 3cm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623.11. zombie compilacıon 3cm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Page 5: Reporte Tareas  2CV5 Sistemas Operativos

Indice de tablas

2.1. Requerimientos mınimos para instalar Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . 21

iv

Page 6: Reporte Tareas  2CV5 Sistemas Operativos

Capıtulo 1

Especificacion 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 serıa: tarea5-so-JoseDavidOrtegaPacheco-2CV7.zip. Cada envıo deberacontener todas las fuentes en LATEX o de lenguaje C segun sea el caso. El correo de envıo de tareas es:

[email protected]

El motivo de envıo sera tareaNumero-nombreDeTarea, por ejemplo: Tarea5-compilacionDelKernelDeLinux.La fecha y hora lımite de entrega se especifica de manera particular en la descripcion de cada tarea y noes negociable ni se realizan excepciones de algun tipo.

1

Page 7: Reporte Tareas  2CV5 Sistemas Operativos

Capıtulo 2

Introduccion

Las siguientes tareas tienen como proposito que el alumno conozca las bases historicas, teoricas ypracticas del sistema operativo Linux, el cual sera el caso de estudio y sistema operativo de trabajo duranteel curso. Tambien tienen como objetivo que el alumno comprenda de manera general la arquitecturay funcionamiento de un sistema de computo, ası como los fundamentos de programacion en lenguajeensamblador.

2

Page 8: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 3

2.1. Documental Revolution OS

El alumno observara el documental “Revolution OS”del 2001, Dirigido por J.T.S. Moore, y realizarauna presentacion que explique la historia y evolucion del sistema operativo Linux mencionando fechas,hechos y personas que se consideren importantes.

PresentacionLa 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.

Page 9: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 4

Posteriormente en la figura 2.3 podemos ver el inicio del movimiento de software libre encabezado, asicomo la definicion 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 mismoBruce Perens quien definio la base de dicho proyecto.

Figura 2.4: Diapositiva sobre Open Source.

Page 10: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 5

Siguiendo con los personajes importantes en la siguiente figura 2.5 menciono a Ricard Stallman fun-dador 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.

Page 11: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 6

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 ano 1999.

Figura 2.8: Diapositiva sobre versiones de Linux.

Page 12: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 7

Continuando con las versiones de Linux de la figura 2.8 ejemplifique mas agregado una lınea del tiempocomo se puede ver en la figura 2.9

Figura 2.9: Diapositiva sobre versiones de Linux 2.

Tambien en la presentacion aborde el tema de la comercializacon del software libre mencionandoalgunos casos comentados en el documental como se muestra en la figura 2.10.

Figura 2.10: Diapositiva sobre la comercializacion del Software Libre.

Page 13: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 8

Para ejemplificar las diferencias entre software libre, open source y software privado agregue una tablacomparativa 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 definicionde Open Source dada por Eric Raymond y en gran parte a Bruce Perens, dichos derechos se mencionanen las figuras 2.12 y 2.13.

Figura 2.12: Diapositiva sobre la definicion de open source.

Page 14: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 9

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 otrosprogramas se ejecuten en el.

2. Describa cual es la mision de un sistema operativo Ayuda a que los programas se ejecuten esperandoque los demas le soliciten recursos.

3. Mencione quien es Linus Torvalds y su principal contrbucion Ingeniero de software finlandes esta-dounidense 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 enproblemas de propiedad”(Bruce Perens).

5. Mencione quien es Bruce Perens y cual fue su contribucion Bruce Perens es un programador esta-dounidense, quien contibuyo para la definicion de Open Source.

6. ¿Que es la Free Software Foundation? Fundacion creada por Richard Stallman con el proposito dedifundir el movimiento del mismo nombre.

7. Mencione quien es Richard Stallman y su principal contribucion Richard Matthew Stallman es unprogramador estadounidense y fundador de las bases legales y filosoficas del movimiento por elsoftware libre.

8. ¿Que se entiende por Software propietario? Aquel en el que el usuario no puede acceder al codigofuente y por lo tanto no tiene la posibilidad de modificar,redistribuir o su licencia tiene un costo.

9. ¿Cual es el significado de GNU? ”GNU’s not Unix 2si, es algo recursivo.

10. Describa en que consiste el Copy-Left? Constiste en tener el derecho para la libre distribucion decopias y versiones modificadas pero exigiendo que los mismos derechos sean preservados en lasversiones modificadas.

11. De manera general, ¿en que consiste la licencia GNU-GPL? Es la licencia de Linux que permiteutilizar 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 derechosque ella contiene.

Page 15: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 10

12. ¿Cual es el nombre de la primera empresa de soporte a software libre? Cygnus.

13. ¿Cual es el nombre de la primera distribucion comercial de Linux? Yggdrasil Linux.

14. ¿Cual fue la aplicacion que hizo de Linux una tecnologıa imprescindible en el contexto empresarial?Apache, el cual podıas poner diferentes servidores en una misma maquina

15. ¿Que tipo de servicios proporciona Red Hat? Brinda soporte a Linux pero tambien brinda su propiadistribucion de Linux.

16. ¿Por que se decidio hacer publico el codigo fuente de NetScape? Por que Microsoft estaba regalandoInternet 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 descrıbalos brevemente

a) Libre redistribucion: el software debe poder ser regalado o vendido libremente.

b) Codigo fuente: el codigo fuente debe estar incluido u obtenerse libremente.

c) Trabajos derivados: la redistribucion de modificaciones debe estar permitida.

d) Integridad del codigo fuente del autor: las licencias pueden requerir que las modificaciones seanredistribuidas solo como parches.

e) Sin discriminacion de personas o grupos nadie puede dejarse fuera.

f ) Sin discriminacion de areas de iniciativa: los usuarios comerciales no pueden ser excluidos.

g) Distribucion de la licencia: deben aplicarse los mismos derechos a todo el que reciba el progra-ma.

h) La licencia no debe ser especıfica de un producto: el programa no puede licenciarse solo comoparte de una distribucion mayor.

i) La licencia no debe restringir otro software: la licencia no puede obligar a que algun otrosoftware que sea distribuido con el software abierto deba tambien ser de codigo abierto.

Fecha / hora lımite de entrega: martes 22 de septiembre de 2015 / 23:00 horas

Page 16: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 11

2.2. Instalacion de Linux

El alumno realizara la instalacion de una distribucion de Linux (Ubuntu Server) de manera fısica ovirtualizada (seleccionar una forma de instalacion unicamente). Para cada uno de los pasos a ejecutar sedebe obtener y reportar la pantalla correspondiente.A continuacion se proporcionan los pasos de instalacion de manera generalizada para las dos opciones:

Instalacion fısica

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 opcion de arranque para iniciar desde la unidad de CD/DVD o USB

4. Seleccionar la opcion de instalacion

5. Configurar las opciones de idioma, teclado, region geografica y zona horaria

6. Seleccionar particionado manual

7. Crear la particion raız y la de area de intercambio

8. Proceder con la instalacion del sistema base e instalacion del gestor de arranque

9. Iniciar sesion en el sistema

Instalacion virtualizada (Virtualbox)

1. Descargar e instalar Virtualbox Host para windows o Linix segun sea el caso

2. Descargar el archivo ISO de la distribucion

3. Crear una nueva maquina virtual para Ubuntu Server

4. Crear un disco duro virtual

5. Asignar memoria fısica

6. Iniciar la maquina virtual

7. Iniciar la instalacion del sistema utilizando el ISO de la distribucion

A continuacion anexo las pantallas capturadas durante la instalacion de Ubuntu Server mediante lavirtualizacion usando VirtualBox.

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

Page 17: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 12

Figura 2.15: Instalacion de VirtualBox.

Figura 2.16: Creacion del sistema Ubuntu Server.

Page 18: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 13

Figura 2.17: Seleccion de la memoria RAM para ubuntu.

Figura 2.18: Seleccion de idioma para la instalacion.

Page 19: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 14

Figura 2.19: Inicio de la instalacion de ubuntu.

Figura 2.20: Seleccion de la ubicacion.

Page 20: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 15

Figura 2.21: Configuracion del teclado.

Figura 2.22: Idioma del teclado.

Page 21: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 16

Figura 2.23: Inicio del proceso de instalacion

Figura 2.24: Nombre de la maquina.

Page 22: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 17

Figura 2.25: Nombre de la cuenta.

Figura 2.26: Nombre del usuario.

Page 23: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 18

Figura 2.27: Ingresar la contrasena.

Figura 2.28: Cifrar carpeta de usuario.

Page 24: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 19

Figura 2.29: Partcion del disco

Figura 2.30: Partcion del disco 2.

Page 25: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 20

Figura 2.31: Actualizaciones del sistema

Figura 2.32: Instalar el cargador de arranque GRUB.

Page 26: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 21

Figura 2.33: Inicio del sistema Ubuntu Server

Responda lo siguiente

1. Describa los requerimientos mınimos recomendados para la instalacion de la distribucion de UbuntuServer

Tipo de instalacion CPU RAMEspacio en disco duroSistema base Todas las tareas instaladas

Server (Standard) 1 gigahertz 512 megabytes 1 gigabyte 1.75 gigabytes

Server (Minimal) 300 megahertz 192 megabytes 700 megabytes 1.4 gigabytes

Tabla 2.1: Requerimientos mınimos para instalar Ubuntu

2. Mencione la diferencia entre la version de Servidor y de Escritorio de Ubuntu

Ambas ediciones usan los mismos repositorios apt. Esto hace que resulte tan sencillo instalar unaaplicacioon de servidor en la edicioon Escritorio que en la edicioon Servidor.

Las diferencias entre las dos ediciones son la falta de un entorno de “X window.en la edicion Servery el proceso de instalacion.

3. Defina el concepto de Particion primaria, extendida y logica

Una particion primaria contiene el sistema operativo y se considera como una particion logica, sinembargo una particion extendida puede contener mas de una particion logica. La particion primariapermite el arranque de los diferentes sistemas operativos que se encuentren instalados, mientras laextendida sirve como almacen de datos, ya que ahı no se pueden instalar s.o.

Page 27: Reporte Tareas  2CV5 Sistemas Operativos

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 paradeterminados sistemas de ficheros por lo que, por ejemplo, un equipo con Windows no puede leerni 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 elpero 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 mas,necesitando recurrir a comandos de terminal y algun 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 imagende Sistema Operativo que se va a cargar en la memoria para iniciar el sistema.

6. Mencione cual es el gestor de arranque en Linux y describa su estructura de archivos y comandosasociados

Para Linux usa el sistema de Arranque “GRUB”1, se carga y se ejecuta en 4 etapas:

La primera etapa del cargador la lee el BIOS 2 desde el MBR 3 .

La segunda etapa Contiene codigo extra que permite leer cilindros mayores que 1024 o dispo-sitivos tipo LBA 4 .

La segunda etapa del gestor de arranque ejecuta y muestra el menu de inicio de GRUB quepermite 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 has-ta“un pre-sistema operativo en maquinas x86 totalmente basado en comandos”. Contiene tres in-terfaces: un menu de seleccion, un editor de configuracion, y una consola de lınea de comandos.

7. Muestre la estructura del sistema de archivos en Linux (Ubuntu Server) y mencione de manerageneral 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 utiles 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 quese 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 dondetambien se guardan las particiones de los discos, la Unidad deCD, etc.

d) /etc: Este es el centro neuralgico de su sistema, que contiene todos los archivos de configuracionrelacionados con el sistema.

1Grand Unified Bootloader2Basic Input/Output System3Master Boot Record4Logical Block Addressing

Page 28: Reporte Tareas  2CV5 Sistemas Operativos

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 discoRAM puede ser montado como archivos raız programas de sistema y se pueden ejecutar desdela isma.

g) /lib: Contiene los modulos del nucleo y las imagenes de bibliotecas compartidas (la bibliotecade codigo de programacion).

h) /lost+found: Un chequeo al sistema de ficheros larga (la velocidad de este control depende deltipo de sistema de archivos que se maneje.

i) /media: En medio de una gran controversia y consternacion por parte del sistema y los admi-nistradores de red un directorio vque contiene los puntos de montaje para medios extraıblesha sido creada.

j ) /mnt: Este es un punto de montaje generico bajo el cual se monta sus sistemas de archivos odispositivos.

k) /opt: Este directorio se reserva para todo el software y paquetes adicionales que no formanparte de la instalacion por defecto.

l) /proc: Es muy especial, ya que tambien es un sistema de ficheros virtual, no contiene archivosreales”pero la informacion del sistema en tiempo de ejecucion, puede ser considerado como uncentro de control y la informacion para el nucleo.

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 / otareas administrativas.

n) /usr: Este es uno de los mas importantes directorios en el sistema, ya que contiene todos losbinarios de usuarios, su documentacion, bibliotecas, etc.

o) /var: Contiene datos variables como los archivos de registro del sistema, los directorios decorreo y la cola de impresion y transitoria y archivos temporales.

p) /srv: Este contiene datos especıficos 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 tamano paradicha areaEl espacio de memoria de intercambio o Swap es lo que se conoce como memoria virtual; utilizaespacio en la unidad de almacenamiento en lugar de un modulo de memoria. Cuando la memoriareal se agota, el sistema copia parte del contenido de esta directamente en este espacio de memoriade 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 totalde memoria RAM.

Mas de 1 GB de Ram, se recomienda usar la misma cantidad del total de memoria RAM, mas de 2GB.

Fecha / hora lımite de entrega: miercoles 23 de septiembre de 2015 / 23:00 horas

Page 29: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 24

2.3. Arquitectura de Linux

El alumno investigara las principales caracterısticas del sistema operativo Linux respecto a su arqui-tectura, estructura de diseno y llamadas al sistema.

Responda lo siguiente

Lea el artıculo Concrete Architecture of the Linux Kernel de Ivan Bowman, Saheem Siddiqi y MeyerC. 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 terminacionadecuada de los procesos de usuario. El algoritmo de planificacion se llama en dos puntosdiferentes durante la ejecucion de un proceso de usuario. En primer lugar, hay llamadas alsistema que llaman el programador directamente, como sleep(). En segundo lugar, despuesde cada llamada al sistema, y despues de cada interrupcion sistema lento (que se describeen un momento), el algoritmo de programacion se llama.

• Administrador de memoria: utiliza el administrador de memoria de hardware para asignardirecciones virtuales (utilizados por los procesos de usuario) a direcciones de memoriafısica. Cuando un usuario accede a un proceso de ubicacion de la memoria, el gestor de lamemoria del hardware traduce esta direccion de memoria virtual a una direccion fısica, acontinuacion, utiliza la direccion fısica para realizar el acceso.

• Sistema Virtual de Archivos: debe ser compatible con muchos sistemas de archivos logi-cos diferentes y diversos dispositivos de hardware. Para ello tiene dos capas conceptualesque se extienden facilmente. La capa de controlador de dispositivo representa todos losdispositivos fısicos con una interfaz comun. La capa del sistema de archivos virtual (VFS)representa a todos los sistemas de archivos logicos con una interfaz comun. La arquitecturaconceptual del kernel de Linux ([Bowman 1998], [Siddiqi 1998]) muestra como se organizaconceptualmente esta descomposicion.

Page 30: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 25

• Comunicacion entre procesos: utilizan para notificar un proceso de un evento. Una senaltiene el efecto de alterar el estado del proceso de receptor, dependiendo de la semantica dela senal particular. El kernel puede enviar senales a ningun proceso en ejecucion.

• Interfaz de red: proporciona conectividad de la red entre las maquinas, y un modelo de co-municacion socket. Se proporcionan dos tipos de implementaciones de socket: sockets BSDy tomas de INET. Sockets BSD se implementan utilizando sockets INET. El sistema de redde Linux proporciona dos protocolos de transporte con diferentes modelos de comunicaciony 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 dered 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

Page 31: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 26

Figura 2.37: Subsistema Comunicacion entre procesos

Page 32: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 27

Figura 2.38: Subsistema del Sistema Virtual de Archivos

Lea el artıculo 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 artıculo y por que?El artıculo comenta que el subsistema mas central es el planificador de procesos: todos losdemas subsistemas dependen del planificador de procesos ya que todos los subsistemas debensuspender y reanudar los procesos. Por lo general, un subsistema suspendera un proceso queesta a la espera de una operacion de hardware para completar, y reanudar el proceso cuandose termina la operacion.

Su proposito es controlar el acceso a la CPU (s) de la computadora. Esto no solo incluye elacceso 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 deellos 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 compu-tadora. Esto no solo incluye el acceso de los procesos de usuario, sino tambien el acceso aotros subsistemas del kernel.El planificador esta dividido en cuatro modulos principales:

• El modulo de polıtica de planificacion es responsable de juzgar que proceso va a teneracceso a la CPU; la polıtica esta disenada para que los procesos tengan un accesoequitativo a la CPU.

• Modulos de Arquitectura especıficos estan disenados con una interfaz comun paraabstraer los detalles de cualquier arquitectura de computadora en particular. Estos

Page 33: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 28

Figura 2.39: Subsistema de Interfaz de Red

Figura 2.40: Informacion general del subsistema del nucleo

modulos son responsables de comunicar con una CPU de suspender y reanudar unproceso. Estas operaciones consisten en saber lo que se registra y la necesidad deinformacion de estado para ser preservado para cada proceso y ejecucion del codigoensamblador para efectuar una operacion de suspender o reanudar.

• El modulo independiente de la arquitectura se comunica con el modulo de polıticas paradeterminar que proceso se ejecutara el proximo, entonces llama al modulo especıfico dela arquitectura para reanudar el proceso adecuado. Ademas, este modulo llama al gestorde memoria para asegurar que el hardware de memoria se restaura adecuadamente parael proceso reanudado.

• El modulo de interfaz de llamadas al sistema permite el acceso a los procesos de usuariosolo aquellos recursos que se exportan de forma explıcita por el nucleo. Esto limita ladependencia de los procesos de usuario en el kernel a una interfaz bien definida queraramente 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 dememoria de hardware.

Page 34: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 29

Figura 2.41: Subsistema Programador de Proceso

El subsistema de administrador de memoria se compone de tres modulos:

• El modulo especıfico de arquitectura presenta una interfaz virtual para el hardware degestion de memoria

• El gestor independiente arquitectura realiza todas la asignacion por proceso e intercam-bio de memoria virtual. Este modulo es responsable de determinar que seran desalo-jados paginas de memoria cuando hay un error de pagina - no hay modulo de polıticaindependiente, ya que no se espera que esta polıtica tendra que cambiar.

• Una interfaz de llamada al sistema se proporciona para facilitar el acceso restringidoa los procesos de usuario. Esta interfaz permite a los procesos de usuario para asignary almacenamiento gratuito, y tambien para realizar la memoria de archivos E / Sasignada.

c) Sistema de Archivo Virtual: esta disenado para presentar una vision coherente de los datosque se almacena en los dispositivos de hardware, y permite que el administrador del sis-tema para montar cualquiera de un conjunto de sistemas de archivos logicos en cualquierdispositivo fısico.

Ademas de los objetivos tradicionales del sistema de archivos, el sistema de archivos vir-tual tambien es responsable de cargar nuevos programas ejecutables. Esta responsabilidadse logra mediante el modulo de sistema de archivo logico, y esto permite a Linux soportavarios formatos de ejecutables.

Este subsistema consta de 5 modulos:

• Controlador de dispositivo para cada controlador de hardware soportado. Puesto quehay un gran numero de dispositivos de hardware incompatibles, hay un gran numerode controladores de dispositivos. La extension mas comun de un sistema Linux es laadicion de un nuevo controlador de dispositivo.

• Interfaz independiente de dispositivos proporciona una vision consistente de todos losdispositivos.

• Sistema de archivo logico para cada sistema de archivos compatible.

Page 35: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 30

Figura 2.42: Subsistema Administrador de Memoria

• La interfaz independiente del sistema presenta un hardware y-archivo-sistema logicovision independiente de los recursos de hardware. En este modulo se presenta todos losrecursos utilizando una interfaz orientada a bloques o archivo orientado a caracteres.

• Por ultimo, la interfaz de llamada al sistema proporciona acceso controlado al sistemade archivos para los procesos de usuario. El sistema de archivos virtual exporta unicafuncionalidad especıfica para los procesos de usuario.

d) Interfaz de red: permite que los sistemas Linux para conectarse a otros sistemas en unared. El subsistema de red abstrae tanto de estos detalles de implementacion para que losprocesos de usuario y otros subsistemas del kernel pueden tener acceso a la red sin necesi-dad de saber lo que se esta utilizando dispositivos fısicos o protocolo.

Consta de 4 modulos:

• Controladores de dispositivos de red se comunican con los dispositivos de hardware.Hay un modulo de controlador de dispositivo para cada posible dispositivo de hardware.

• El modulo de interfaz independiente dispositivo proporciona una vision consistente detodos los dispositivos de hardware de modo que los niveles mas altos en el subsistemano necesitan conocimientos especıficos del hardware en uso.

• Los modulos de protocolo de red son responsables de la implementacion de cada unode los posibles protocolos de transporte de red.

• El modulo de interfaz independiente de protocolo proporciona una interfaz que esindependiente de los dispositivos de hardware y protocolo de red. Este es el modulode interfaz que es utilizado por otros subsistemas del nucleo para acceder a la red sintener una dependencia de protocolos o de hardware particulares.

Page 36: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 31

Figura 2.43: Subsistema del Sistema Virtual de Archivos

e) Comunicacion entre procesos: Depende del administrador de memoria para soportar unmecanismo de comunicacion de memoria compartida. Este mecanismo permite que dosprocesos para acceder a un area de memoria comun, ademas de su memoria privada usual.La arquitectura del subsistema de comunicacion entre procesos se omite por razones debrevedad, ya que no es tan interesante como los otros subsistemas.

¿Cual es la estructura de diseno de Linux?, mencione tres ventajas y tres desventajas de dichaestructura de diseno

¿Cual es la clasificacion de las llamadas al sistema en Linux?, escriba el nombre de las llamadas alsistema que contiene cada categorıa

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()

Page 37: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 32

Figura 2.44: Subsistema de la Interfaz de Red

Llamadas al sistema para el control de senales:

• SIGHUP

• SIGINT

• SIGQUIT

• SIGILL

• SIGTRAP

• SIGABRT

• SIGBUS

• SIGFPE

• SIGKILL

• SIGUSR1

Fecha / hora lımite de entrega: jueves 24 de septiembre de 2015 / 23:00 horas

Page 38: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 33

2.4. Compilacion del kernel de Linux

El alumno realizara la compilacion del kernel de Linux en su version 3.6.2, de forma clasica y mediantela forma Debian. Para cada uno de los pasos a ejecutar se debe obtener y reportar la pantalla correspon-diente.

Obtenecion 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 �usr�src

Figura 2.46: Mover de directorio.

Page 39: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 34

Configuracion del nuevo kernel:

1. Copiar el archivo de configuracion actual del kernel (config-version-generic) del directorio �boot aldirectorio 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), paraingresar a la configuracion del kernel

Figura 2.48: Instalar make y libncurses

Page 40: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 35

Figura 2.49: Menu con el comando make menuconfig.

3. Seleccionar la opcion Load an Alternate Configuration File

4. Proporcionar el nombre del archivo de configuracion actual: .config

Figura 2.50: Cargar archivo .config

Page 41: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 36

5. Salir de la configuracion del kernel seleccionando Exit

Figura 2.51: Salir del meu

Metodo clasico de compilacion:

Nombre del nuevo kernel

Abrir el archivo MakeFile y en la opcion EXTRAVERSION colocar como valor -SisOpV1, y en laopcion NAME colocar como valor su nombre completo (juanPerezHernandez, por ejemplo)

Figura 2.52: Modificar archivo Makefile

Page 42: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 37

Compilacion e instalacion 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 �boot�initrd.img-3.6.2-SisOpV1 3.6.2-SisOpV1

Metodo Debian:

Actualizacion de paquetes: apt-get update

Instalacion de paquetes mecesarios para la compilacion: apt-get install kernel-package fakeroot build-essential

Compilacion e instalacion del nuevo kernel

1. Ejecutar make-kpkg clean

2. Ejecutar fakeroot make-kpkg –initrd –append-to-version=-nombre kernel image kernel headersy esperar

3. Ejecutar dpkg -i linux-image-version-nombre arquitectura.deb

Page 43: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 38

4. Ejecutar dpkg -i linux-headers-version-Nombre arquitectura.deb

Actualizacion 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 version 3.1-rc5 se alojo en la pagina de: https://github.com/torvalds/linux porun supuesto hackeo al repositorio oficial.

2. ¿Que son los Patches?Comunmente se asocia a cambios que se aplican a un programa, para corregir errores, agregarlefuncionalidad, actualizarlo, etc. Tambien puede ser aplicado tanto a un binario ejecutable como alcodigo 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 fuentedonde un parche suele constar de un archivo de texto que describe modificaciones a realizar en elcodigo fuente del programa en cuestion.

3. ¿Explique el significado del numero que representa el versionado en el kernel de Linux (Linux 3.6.2,por ejemplo)?

El primer numero indica la version del Kernel.

El segundo nunmero indica la revision mayor. Antes del Kernel 2.6 los numeros de revision parescorrespondıan a versiones estables y los impares correspondıan a versiones inestables que estabanaun en desarrollo. Despues de la version 2.6 lo numeros se manejaron de manera distinta.

El tercer numero corresponde a las revisiones menores, como la aceptacion de nuevos drivers.

El cuarto numero 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 kerneljusto a la medida de nuestro hardware, eliminando todos aquellos modulos que no necesitamos.

Tambien podemos configurarlo para no tener ningun modulo, sino que este todo integrado en elKernel, anadiendo mas robustez al sistema, pero ası no podremos anadir mas hardware y si lohacemos debemos de compilar el kernel de nuevo.

Page 44: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 39

5. ¿Que es un kernel vanilla?El kernel de www.kernel.org son kernels de vanilla.

Cada distribucion diferente toma estos kernels de vanilla y anade su propio tipo de saborizante. Pue-den corregir errores particulares en el codigo (Debian es muy bueno en hacer esto), y pueden agregarsus propios parches que hacer cosas de lujo (SuSE anade un parche para hacer una animacion en lapantalla de inicio), y se puede agregar parches para mejorar la instalaciones del kernel (a menudousando la fuente de la rama de desarrollo del kernel por ejemplo, para muy nuevos dispositivos USB).

Ası pues, aunque todos los nucleos se derivan de la misma fuente kernel, no todos los nucleos soniguales.

Ası que si usted tiene una distribucion particular y tomar ventaja de algunas de las caracterısticasno estandar del nucleo, y luego ir a descargar un kernel de vanilla, el nuevo dispositivo USB modacaliente ya no puede trabajar y si usted esta en SUSE ya no lo hara ver una animacion de tiempode 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 programao sistema que consista de varios archivos separados. A traves de este le decimos al sistema quearchivos dependen de otros, y le especificamos cuales. Esto es de importancia para el proceso decompilacion y produccion final de version ejecutable.

7. Describa para que sirven los siguientes comandos / comandos con opciones:

make: El proposito de la utilidad make es determinar automaticamente que piezas de un pro-grama necesitan ser recompiladas, y lanzar las ordenes para recompilarlas. El programa makeemplea los datos del makefile (y otros internos) y los tiempos de ultima modificacion de losficheros para decidir cuales 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, dondenombre es tıpicamente un programa. Si no se ha dado la opcion -f, make buscara los makefilesllamados GNUmakefile, make- file, y Makefile, en este orden, parando en el primero que en-cuentre y dando un error si no encuentra ninguno.

make install: es el metodo mas comun de instalacion de un programa cuando lo compilamosnosotros mismos, pero no es el unico y algunos programas tienen sus propios metodos deconfiguracion /compilacion /instalacion.

make modules install: El comando make modules simplemente compila los modulos, dejando alos binarios compilados en el directorio de construccion. Y el comando make modules install seasegurara de que no se compilan binarios (y compilar los modulos, si no) e instalar los binariosen su kernel modules directorio.Si esta seguro de que todos los modulos compilar sin problemas, puede utilizar make modu-les install directamente.

mkinitramfs: Genera una imagen initramfs. El initramfs es un archivo cpio gzip. El archivo sepuede utilizar en una caja diferente de el mismo arco con el kernel de Linux correspondiente.

Page 45: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 40

mkinitramfs es para el uso avanzado. En el cuadro local de update-initramfs deben hacer todaslas medidas necesarias.

En el arranque, el kernel descomprime ese archivo en el disco RAM, soportes y lo utiliza comosistema de ficheros raız inicial. Todo hallazgo del dispositivo raız sucede en este espacio deusuario temprana.

make-kpkg clean: La utilidad make-kpkg , usada para crear paquetes Debian relacionados conel nucleo. La utilidad debe ejecutarse desde el directorio superior de las fuentes del nucleo, elcual 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 portodos los medios de obtener uno apropiado (generalmente un fichero de configuracion adaptadopara nucleos Debian para esa arquitectura), y luego invoca a make oldconfig para permitir queel usuario responda cualquier pregunta nueva.Tıpicamente, el programa se ejecuta como superusuario o bajo fakeroot, sino hay que indicara make-kpkg como convertirse en superusuario.

fakeroot: ejecuta una orden en un entorno donde parece que se tiene permisos de superusuariopara la manipulacion de ficheros. util para permitir a usuarios crear archivos (tar, ar, .deb etc.)con ficheros con permisos/propietarios de superusuario. Sin fakeroot uno necesitarıa privilegiosde superusuario para crear los ficheros constituyentes del archivo con los permisos y propietariocorrectos, y despues empaquetarlos, o uno tendrıa que construir los archivos directamente, sinusar 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 usuariohubiese sido realmente el superusuario.

dpkg:Es una herramienta de nivel medio para instalar, construir, borrar y gestionar los pa-quetes de Debian GNU/Linux. Se llama con parametros desde lınea de ordenes, especificandouna accion y cero o mas opciones. La accion dice a dpkg que hacer y las opciones controlan dealguna manera su comportamiento.

Tambien se puede usar dkpg como interfaz a dpkg-deb. Si aq encuentra alguna de las opcionesde este, se limita a llamarlo con esas mismas opciones.

Fecha / hora lımite de entrega: viernes 25 de septiembre de 2015 / 23:00 horas

Page 46: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 41

2.5. Agregar una llamada al sistema en el kernel de Linux

El alumno agregara una llamada al sistema en el kernel de Linux en su version 3.6.2. Antes de procedercon 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 �usr�src

3. Crear un liga simbolica a las fuentes del kernel

4. Moverse a la liga simbolica creada en el paso anterior

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

5. Modificar el archivo arch�x86�syscalls�syscall 32.tbl, agregando lo siguiente al final:

350 i386 add sys add

Page 47: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 42

Figura 2.57: Modificando el archivo syscall 32.tbl

6. Modificar el archivo include�linux�syscalls.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 kernel�sys.c como sigue:

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

}

Page 48: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 43

Figura 2.59: Modificando el archivo sys.c

8. Compilar el kernel

Figura 2.60: Compilando nuevo kernel

9. Iniciar con el nuevo kernel

Page 49: Reporte Tareas  2CV5 Sistemas Operativos

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 ydicho resultado es debido a lo comentado en clase, que por la version del kernel no se debıo agregaral archivo sys.c sino agregarlo directamente a la arquitectura del kernel para obtener el resultadocorrectamente.

Page 50: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 45

Responda lo siguiente

1. Que contienen los siguientes archivos:

arch�x86�syscalls�syscall 32.tbl

En estos archivos se definen los codigos de llamadas al sistema para cada arquitectura.

include�kernel�syscalls.h

Este archivo contiene las declaraciones de las llamadas al sistema.

kernel�sys.c

Aquı es donde se definen el UID desbordamiento de todo el sistema y GID , para las arquitectu-ras que ahora tienen 32 bits UID / GID pero no lo hizo en el pasado, para versiones anterioresdel 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 lımite de entrega: lunes 26 de octubre de 2015 / 23:00 horas

Page 51: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 46

2.6. Agregar un modulo en tiempo de ejecucion en Linux

El alumno creara una interfaz de modulo 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 (moduloTest.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 += moduloTest.oHDIR = �usr�src�linux-headers-3.6.2-15-genericall:$(MAKE) -C $(HDIR) SUBDIRS=$(PWD)clean:rm -rf *.o *.ko *.mod* *.symvers *.order

Figura 2.63: Archivos moduloTest.c y Makefile.

Page 52: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 47

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.

Page 53: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 48

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 modulo cargado, ejecutar rmmod

Figura 2.68: Elimiar modulo moduloTest.

Page 54: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 49

Responda lo siguiente

1. ¿Que es un modulo?Los modulos son a groso modo, la manera mas sencilla y c omoda de anadir codigo y funcionalidadal espacio del kernel sin tener que estar recompiandolo.Como por ejemplo, Ubuntu, compilan un nucleo muy pequeno con lo mınimo para poder arrancary en tiempo de ejecucion carga en memoria aquellos modulos necesarios para dar servicio a losdispositivos que tiene nuestro equipo.

2. ¿Que es un modulo cargable en tiempo de ejecucion?Los modulos son “trozos de sistema operativo”, en forma de ficheros objeto especiales (.ko), que sepueden 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 delnucleo.Programas instalados: depmod, genksyms, insmod, insmod ksymoops clean, kallsyms (enlace a ins-mod), kernelversion, ksyms (enlace a insmod), lsmod (enlace a insmod), modinfo, modprobe (enlacea 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 lınea de codigo correspondiente al modulo y al Makefile implementados

Empezare a describir el archivo “moduloTest.c”:

Tenemos las macros de inicio y fin, ademas todos los modulos que se necesitan, contienen los detallesdel modulo (Author, License. . . ). La declaracion de la funcion de inicio, la macro “init”hace que sedeseche a la funcion de inicio y su memoria sea liberada una vez finaliza la carga para controladoresintegrados pero no para la carga de modulos, la funcion nos indica si se a logrado cargar o no elmodulo devolviendo un 0.

Tambien tenemos declaracion de la funcion termino del modulo, la macro “exit”desecha la funcionde finalizacion igualmente para controladores integrados pero no para modulos.

Page 55: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 2. INTRODUCCION 50

Finalmente tenemos indicado la Funcion de inicio del modulo y Funcion de termino del modulo.

Figura 2.69: Funciones

A continuacion comento lınea a lınea lo que se hace en el archivo “makefile”:

Figura 2.70: Archivo makefile con comentariso.

Fecha / hora lımite de entrega: lunes 26 de octubre de 2015 / 23:00 horas

Page 56: Reporte Tareas  2CV5 Sistemas Operativos

Capıtulo 3

Linux

3.1. Investigacion sobre los Hilos en Linux

El alumno realizara una investigacion sobre hilos en Linux

3.1.1. Definicion

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 elsistema corre una tarea por vez, y esto lo administra el Scheduller. Excepcion a estos son los sistemas quetengan la capacidad de correr mas de un proceso simultaneamente como en el caso de las arquitectura demultiprocesamiento simetrico (SMP).

Podemos decir entonces que un programa que crea un thread tendra a partir de ese momento dos“time-slot’s.en la cola de ejecucion del scheduller. Pero estos dos “time slots’s.estan ejecutando un mismoprograma, muy probablemente en puntos de ejecucion distintos y comparten el mismo espacio de memo-ria, descriptores de archivos y otros recursos del sistema.

Esta caracterıstica de compartir espacio de memoria y descriptores de archivos facilita la comunicacionentre los threads y el programa que los creo. Es decir la problematica de ICP (Inter-Process Communi-cation) esta resuelta.

Pero nada podemos asegurar en cuanto a la ejecucion. Mucho menos que estos guarden alguna relacionen los tiempos de ejecucion. Estos temas son privados de Scheduller. No porque un programa creo unthread 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 ejecutael 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

Page 57: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 52

3.1.3. ¿Cual es la diferencia entre proceso e hilo?

Un proceso es cualquier programa en ejecucion y es totalmente independiente de otros procesos. Elcomando de ps nos lista los procesos en ejecucion en nuestra maquina. Un proceso tiene su propia zona dememoria y se ejecuta “simultaneamente.a otros procesos. Es totalmente imposible que un proceso se meta,a posta o por equivocacion, en la zona de memoria de otro proceso. Esta es una de las caracterısticas quehace de Linux/Unix un sistema fiable.

Dentro de un proceso puede haber varios hilos de ejecucion (varios threads). Eso quiere decir que unproceso podrıa estar haciendo varias cosas “a la vez”. Los hilos dentro de un proceso comparten todosla misma memoria. Eso quiere decir que si un hilo toca una variable, todos los demas hilos del mismoproceso veran el nuevo valor de la variable. Esto hace imprescindible el uso de semaforos o mutex (EX-clusion MUTua, por sus siglas en ingles, funciones pthread mutex...) para evitar que dos threads accedana la vez a la misma estructura de datos. Tambien hace que si un hilo “se equivoca 2corrompe una zonade memoria, todos los demas hilos del mismo proceso vean la memoria corrompida. Un fallo en un hilopuede hacer fallar a todos los demas hilos del mismo proceso.

Un proceso es, por tanto, mas costoso de lanzar, ya que se necesita crear una copia de toda la memoriade nuestro programa. Los hilos son mas ligeros. En cuanto a complejidad, en los hilos, al compartir lamemoria y los recursos, es casi obligado el uso de mutex o semaforos, ası que su programacion suele sermas complicada y se necesita ser mas cuidadoso. Un proceso, en el momento de lanzarlo, se hace inde-pendiente del nuestro, ası que no deberıamos tener ningun problema, salvo que necesitemos comunicacionentre ellos, que nos liarıamos a programar memorias compartidas (con sus correspondientes semaforos),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.

Page 58: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 53

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

Figura 3.2: Compilacion del archivo de hilo.

Analizando un poco en codigo nos encontramos con algunas lıneas nuevas, estas son:

La lınea “pthread t thread;” crea la variable thread de tipo pid thread. Esto es necesario para alma-cenar la identificacion de proceso thread a crear.La lınea “fprintf (stderr, “main thread pid is %d \n”, (int) getpid ());” imprime el numero de procesopadre por la salida standar de error.La lınea “pthread create (&thread, NULL, &thread function, NULL);” realiza la llamada para crear elthread, el cual comenzara su ejecucion 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 funcion a ejecutar por el thread. Esta funcion tiene que ser de tipo void* y unargumento 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 serajoinable.

Un thread joinable requiere que el proceso padre utilice pthread join para liberarlo del sistema, si noqueda como zombie.

Un thread detach es liberado automaticamente por el sistema luego de su finalizacion, pero esto tieneun inconveniente, es imposible sincronizar otro thread con su finalizacion, ni obtener resultado del mismo.

Page 59: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 54

3.2. Planificacion de Procesos

El alumno realizara una investigacion sobre la planificacion de procesos

3.2.1. Definicion de planificacion

La planificacion de procesos se refiere a como determina el sistema operativo al orden en que iracediendo el uso del procesador a los procesos que lo vayan solicitado, y a las polıticas que empleara paraque el uso que den a dicho tiempo no sea excesivo respecto al uso esperado del sistema.

La Planificacion de procesos tiene como principales objetivos la equidad, la eficacia, el tiempo derespuesta, 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 elmenor posible.

Tiempo de regreso: Reducir al mınimo el tiempo de espera de los resultados esperados por losusuarios por lotes.

Rendimiento: Maximizar el numero 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 Planificacion

A largo plazo: decide que procesos seran los siguientes en ser iniciados. Este tipo de planificacion erael mas frecuente en los sistemas de lotes(principalmente aquellos con spool) y multiprogramados enlotes; las decisiones eran tomadas principalmente considerando los requisitos pre-declarados de losprocesos y que el sistema tenıa libres al terminar algun otro proceso. La planificacion a largo plazopuede 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 dıa, este tipo de pla-nificacion no se efectua, dado que es tıpicamente el usuario quien indica expresamente que procesosiniciar.

A mediano plazo: Decide cuales procesos es conveniente bloquear en determinado momento, sea porescasez/saturacion de algun recurso (como la memoria primaria) o porque estan realizando algunasolicitud que no puede satisfacerse momentaneamente; se encarga de tomar decisiones respecto a losprocesos conforme entran y salen del estado de bloqueado (esto es, tıpicamente, estan a la esperade algun evento externo o de la finalizacion de transferencia de datos con algun dispositivo).En algunos textos, a este planificador se le llama agendador (scheduler)

Page 60: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 55

A corto plazo: Decide como compartir momento a momento al equipo entre todos los procesos querequieren de sus recursos, especialmente el procesador. La planificacion a corto plazo se lleva a cabodecenas de veces por segundo (razon por la cual debe ser codigo muy simple, eficiente y rapido); esel 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 planificacion

Primero en llegar primero en ser servido

Conocido como FCFS (First Come First Served). Este algoritmo emplea una cola de procesos, asig-nando un lugar a cada proceso por el orden de llegada. Cuando el proceso llega es puesto en su lugar enla cola despues del que llego antes que el y se pone en estado de listo. Cuando un proceso comienza aejecutarse no se interrumpe su ejecucion hasta que termina de hacerlo.

Prioridad al mas corto

Su nombre es SJF (Shortest Job First). El proceso que se encuentra en ejecucion cambiara de estadovoluntariamente, o sea, no tendra un tiempo de ejecucion determinado para el proceso. A cada procesose le asigna el tiempo que usara cuando vuelva a estar en ejecucion, y se ira ejecutando el que tenga unmenor tiempo asignado. Si se da el caso de que dos procesos tengan igual valor en ese aspecto emplea elalgoritmo FCFS.

Round Robin

A cada proceso se le asigna un tiempo determinado para su ejecucion, el mismo tiempo para todos. Encaso de que un proceso no pueda ser ejecutado completamente en ese tiempo se continuara su ejecuciondespues de que todos los procesos restantes sean ejecutados durante el tiempo establecido. Este es unalgoritmo basado en FCFS que trata la cola de procesos que se encuentran en estado de listos como unacola circular.

Planificacion por prioridad

En este tipo de planificacion a cada proceso se le asigna una prioridad siguiendo un criterio determi-nado, y de acuerdo con esa prioridad sera el orden en que se atienda cada proceso.

Planificacion garantizada

Para realizar esta planificacion el sistema tiene en cuenta el numero de usuarios que deben ser aten-didos. Para un numero ”n”de usuarios se asignara a cada uno un tiempo de ejecucion igual a 1/n.

Planificacion de Colas Multiples

El nombre se deriva de MQS (Multilevel Queue Schedulling). En este algoritmo la cola de procesosque se encuentran en estado de listos es dividida en un numero determinado de colas mas pequenas. Losprocesos son clasificados mediante un criterio para determinar en que cola sera colocado cada uno cuandoquede en estado de listo. Cada cola puede manejar un algoritmo de planificacion diferente

Page 61: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 56

3.3. Programas de Memoria Compartida

El alumno realizara la documentacion del codigo de los siguientes tres programas:

1. Programa 1 : Memoria Compartida

2. Programa 2 : Semaforos

3. Programa 3 : Multiplicacion de Matrices

4. Programa 4 : Fork

5. Programa 5 : Fork-execlp

6. Programa 6 : Proceso Zombie

3.3.1. Memoria Compartida

Las siguientes imagenes muestran tanto el codigo del programa, ası como al correspondiente descripcionde lınea por lınea del funcionamiento:

Figura 3.3: Programa 1: Memoria Compartida.

Page 62: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 57

3.3.2. Semaforos

Las siguientes imagenes muestran tanto el codigo del programa, ası como al correspondiente descripcionde lınea por lınea del funcionamiento:

Figura 3.4: Programa 2: Semaforos.

Page 63: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 58

3.3.3. Multiplicacion de Matrices

Las siguientes imagenes muestran tanto el codigo del programa, ası como al correspondiente descripcionde lınea por lınea del funcionamiento:

Page 64: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 59

Figura 3.5: Programa 3: Multiplicacion de Matrices.

Page 65: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 60

3.3.4. 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 devolvera el ID de proceso del proceso invocador.

Fork: crea un nuevo proceso duplicando el proceso de llamada. los nuevos procesos se conocen comoprocesos Hijo.

El proceso invocado devolvera su identificcador de proceso, dependiendo si es Proceso padre o hijo.

Page 66: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 61

3.3.5. 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 deproceso.

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 unallamada a la funcion Fork().

Page 67: Reporte Tareas  2CV5 Sistemas Operativos

CAPITULO 3. LINUX 62

3.3.6. 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 compilacıon