Está en la página 1de 33

PROYECTO FIN DE CARRERA

Diseño e implementación
de un sistema operativo
para fines didácticos

ESCUELA POLITÉCNICA SUPERIOR


INGENIERÍA EN INFORMÁTICA

Autor: Aníbal Ramírez García


Tutor: Francisco Javier García Blas
Índice
1. Introducción
2. Estado de la cuestión
3. Gestión del proyecto
4. Requisitos
5. Implementación
6. Resultados
7. Conclusiones

Proyecto Fin de Carrera 2


Introducción

1. Introducción
 Necesidad de contar con un S.O. de diseño propio,
2. Estado de la sencillo en los detalles y con capacidad suficiente,
cuestión para ser usado como modelo y herramienta de apoyo
3. Gestión del para la enseñanza de los fundamentos de los sistemas
proyecto operativos.
4. Requisitos

5 Desarrollo  Los sistemas disponibles en la actualidad no son


adecuados. En general son demasiado complejos.
6. Resultados

7. Conclusiones
 Para aquellos más sencillos, la realización de prácticas
requiere un amplio conocimiento del sistema y de
las herramientas empleadas en su diseño y construc-
ción.

Proyecto Fin de Carrera 3


Introducción

1. Introducción

2. Estado de la
cuestión  Un diseño simple, de tamaño reducido, pero capaz.

3. Gestión del
proyecto  Correr tanto sobre máquina física como virtual.

4. Requisitos
 Poder ser desarrollado en un entorno sencillo, con
5 Desarrollo facilidades de compilación, ejecución y depuración
integradas.
6. Resultados

7. Conclusiones  Facilitar la elaboración de “prácticas” sobre el


mismo para su realización por el estudiante.

Proyecto Fin de Carrera 4


Estado de la cuestión

1. Introducción  MikeOS:

2. Estado de la
cuestión o Interfaz de menús y diálogo modo texto.
3. Gestión del
proyecto o Arranque desde disquete, CD-ROM y USB.

4. Requisitos o Sobre unas 60 llamadas al sistema.


5 Desarrollo
o Gestor ficheros, editor textos, visor imágenes, juegos...
6. Resultados
o Incluye intérprete BASIC.
7. Conclusiones

o Conexión terminal serie

o Escrito en ASM.

Proyecto Fin de Carrera 5


Estado de la cuestión

1. Introducción  GeekOS:

2. Estado de la
cuestión
o Objetivo básico: Ser herramienta de aprendizaje en el
diseño y construcción de un núcleo de S.O.
3. Gestión del
proyecto o Incluye proyectos para la enseñanza.

4. Requisitos o Gestión de memoria dinámica.


5 Desarrollo o Hilos sobre kernel por rodajas con planificación estática
6. Resultados
o Mutexes para sincronización de hilos.
7. Conclusiones
o Modo usuario con protección de memoria por segmentación.

o Controladores teclado y VGA modo texto

Proyecto Fin de Carrera 6


Estado de la cuestión

1. Introducción
 MenuetOS: Su objetivo, eliminar capas entre las partes del
2. Estado de la
cuestión
sistema. Escrito en ensamblador 32/64 bits. Diseño propio.
Multiprocesador, multihilo, protección anillo 3…
3. Gestión del
proyecto
 GnuFiwix: Objetivo educacional. Basado en UNIX con núcleo
4. Requisitos compatible LINUX. POSIX. Modo protegido 32 bits. Multitarea,
Memoria virtual con paginación, señales, pipes. Ficheros ext2,
5 Desarrollo abstracción VFS, etc.
6. Resultados
 Minirighi: Objetivo educacional. Escrito en ‘C’ y ‘asm’ desde 0
7. Conclusiones Multihilo, 32 bits, POSIX, núcleo ligero y de fácil lectura.
Fácilmente adaptable a nuevas tecnologías.

* Estos sistemas son mas complejos que los anteriores

Proyecto Fin de Carrera 7


Estado de la cuestión

 MINIX:
1. Introducción

2. Estado de la o Similar a Unix V7. Llamadas POSIX.


cuestión
o Sacrifica eficiencia por comprensión y modularidad.
3. Gestión del
proyecto o Multiproceso y multiusuario.
4. Requisitos o Para PC compatible sin uso de BIOS.
5 Desarrollo o “Drivers” video: CGA, monocromo, EGA…
6. Resultados o Controladores disco duro tipo XT, AT y BIOS
7. Conclusiones o Manejo red TCP
o Escrito en ‘C’ ANSI.

* Muy difundido y utilizado en la enseñanza

Proyecto Fin de Carrera 8


Gestión del proyecto

1. Introducción  Etapas mínimas:


2. Estado de la
cuestión o Captura, análisis y especificación de requisitos.
3. Gestión del o Diseño y codificación.
proyecto
o Pruebas, instalación y mantenimiento.
4. Requisitos

5. Desarrollo  Modelos del proceso (ciclo de vida):

6. Resultados o En cascada (secuencial, clásico, tradicional).


7. Conclusiones o En cascada realimentado.
o Evolutivo incremental.
o Espiral.

Proyecto Fin de Carrera 9


Gestión del proyecto

Modelo en cascada realimentado


1. Introducción

2. Estado de la
cuestión
Definición de
3. Gestión del
requerimientos
proyecto

4. Requisitos Análisis y Diseño


del Software
5. Desarrollo
Implementación y
6. Resultados
Prueba de unidades
7. Conclusiones
Integración y
Prueba del Sistema
Modelo en
Operación y
cascada puro
Mantenimiento

Proyecto Fin de Carrera 10


Gestión del proyecto

1. Introducción
Actividades concurrentes
2. Estado de la
cuestión
Versión Inicial
3. Gestión del
Especificación
proyecto

4. Requisitos
Descripción
Desarrollo Versiones
5. Desarrollo del Sistema
Intermedias
6. Resultados

7. Conclusiones
Validación
Versión Final

Proyecto Fin de Carrera 11


Gestión del proyecto

1. Introducción

2. Estado de la
cuestión

3. Gestión del
proyecto

4. Requisitos

5. Desarrollo

6. Resultados

7. Conclusiones

Proyecto Fin de Carrera 12


Gestión del proyecto

1. Introducción

2. Estado de la
cuestión

3. Gestión del
proyecto

4. Requisitos

5. Desarrollo

6. Resultados

7. Conclusiones

Proyecto Fin de Carrera 13


Requisitos
Requerimientos más importantes del S.O.

 Multitarea expulsora.
1. Introducción  Comunicación indirecta mediante buzones.
2. Estado de la  Primitivas de sincronización mediante Semáforos
cuestión
 Gestión memoria dinámica (con posibilidad intercambio a disco)
3. Gestión del
proyecto  Múltiples terminales virtuales mediante ventanas tipo texto.

4. Requisitos  Sistema de ficheros tipo FAT ( al menos 12 y 16 bits).

5. Desarrollo ------------ Otros ------------

6. Resultados  Correr en máquina desnuda (PC compatible, Intel x86).

7. Conclusiones
 Correr bajo MS-DOS, pero sin sus servicios.
 Código en ficheros fuente separados según funcionalidad.
 Aceptar compilación, ejecución y depuración en un entorno in-
integrado tipo Turbo-C.

Proyecto Fin de Carrera 14


Desarrollo

Proc. Proc. Proc. Proc.


Usr-1 Usr-2 Usr-3 Usr-N
1. Introducción

2. Estado de la
cuestión Llamadas al Sistema (RTI SW)
Consola
3. Gestión del S.O. Servidor S.O.
proyecto Ficheros
4. Requisitos Rutinas servicio
generales Rut. Servicio ficheros
5. Desarrollo
Servicios
6. Resultados
Rutinas de utilidad auxiliares BIOS
7. Conclusiones
Rutinas Tratamiento Interrupción (RTI HW) RTI BIOS

HARDWARE (FÍSICO / VIRTUAL)


Proyecto Fin de Carrera 15
Desarrollo

1. Introducción Libre / No uso


2. Estado de la
cuestión

3. Gestión del
activarPreparado
proyecto

4. Requisitos Creación Preparado Ejecutando Fin

5. Desarrollo
Interrupción
6. Resultados

7. Conclusiones
Bloqueado

Diagrama de estados de un proceso

Proyecto Fin de Carrera 16


Desarrollo

Tabla de procesos
Primero
Preparados
1. Introducción Ultimo Otros campos descriptor proceso Sig.

… … … ….
2. Estado de la Primero
Servidor
Ultimo … … … ….
cuestión
… … … ….
3. Gestión del Primero
Dormidos … … … …. NULL
Ultimo
proyecto
… … … …. NULL
Primero
4. Requisitos Term.Win 1
Ultimo … … … …. NULL

5. Desarrollo … … … …. NULL
Primero
Term.Win 2
Ultimo NULL
6. Resultados
Primero
7. Conclusiones Buzón 1
Ultimo … … … …. NULL

… … … …. NULL
Primero
Semáforo 1
Ultimo

Colas de espera de varios recursos

Proyecto Fin de Carrera 17


Desarrollo
Llamada
Sistema

Preparados Ejecutando
1. Introducción Padre
Hijo
Fork
2. Estado de la
cuestión Fin Rodaja

3. Gestión del Fin servicio Petición


proyecto Cola Servidor Servidor

4. Requisitos Tecla
Cola TermWin LeerTecla
5. Desarrollo
Fin lapso
Dormidos Sleep
6. Resultados

7. Conclusiones Subida Semáforo Bajar


Cola Semáforo Semáforo
* si lleno/vacio
Enviado/recibido Send/Rec
Cola Buzón mensaje

Transición de un proceso entre colas del sistema


Proyecto Fin de Carrera 18
Desarrollo
Llamada al
Sistema ó
Interrupción
HW
Prc-A Ejecutando instrucciones Ejecutando instrucciones
1. Introducción

2. Estado de la ¿ Hay que


cuestión bloquear ó es
fin de rodaja ?
3. Gestión del NO
R.T.I. Ejecutando instrucciones Ejecutando instrucciones
proyecto

4. Requisitos Guarda el Pone Trata la -Recupera puntero


Guarda
Puntero de nueva interrupción pila del descriptor.
registros
Pila en el pila en Hardware ó
5. Desarrollo (estado)
descriptor espacio Llamada S. -Recupera registros
en la pila
del proceso de SO (estado) de la pila
6. Resultados SI
- Activar
Ejecutando instrucciones
7. Conclusiones proceso
preparado

Prc-B
Ejecutando instrucciones

Esquema sobre el cambio de contexto de procesos


Proyecto Fin de Carrera 19
Desarrollo

1. Introducción
0H priHue memDisponible A0000 H
2. Estado de la
cuestión

3. Gestión del F p W F F p W p
proyecto A r i A A r i r
S T c n T T
T
c n
T
c
4. Requisitos
O 2
e
A r 0 1
e
B r C
5. Desarrollo m m
NULL

6. Resultados

7. Conclusiones
huecos

Ejemplo de mapa de memoria en SO

Proyecto Fin de Carrera 20


Desarrollo
struct win_t
• nombre
pWinFocal
• plano
• eSI, eID, cursor
• atributo color
1. Introducción • pWinUp, pWinDw
A B C • buffTeclas
2. Estado de la pWinTop • nTec,In,Out
cuestión • cola procesos

3. Gestión del
proyecto C
4. Requisitos
B

5. Desarrollo

6. Resultados A
7. Conclusiones
Segmento de ventana

comando_

Fondo pantalla
Proyecto Fin de Carrera 21
Desarrollo

0, 0 Pantalla
1. Introducción
eSI (x, y)

2. Estado de la
cuestión
s1 si s2
3. Gestión del
s1 si
proyecto
si s2
4. Requisitos
si
5. Desarrollo s1
c:\>
6. Resultados
x, y
s1
7. Conclusiones eID (x, y)

longitud

Ejemplos de intersección de segmento y ventana

Proyecto Fin de Carrera 22


Desarrollo

Tabla Informativa Disco struct infDrv


…….. • ¿Montado?
……..
Tabla Procesos • nHeads, nSects, nCyls
……..
• Sec_por_cluster
…….. ……..
• Pri_Sec_Datos
1. Introducción ……..
• Pri_Sec_DirRaiz
……..
• nSec_Reservados
2. Estado de la ……..
• Num_totalSectores
cuestión • FAT12 ó FAT16
• Puntero a FAT
• Tamaño FAT
3. Gestión del Tabla Fich. Abiertos • ¿Sucio?
proyecto ……..
……..
……..
4. Requisitos …….. Tabla Inf. Ficheros
……..
5. Desarrollo …….. ……..
……..
Tabla Descr. Ficheros
……..
6. Resultados
infoFich_t
7. Conclusiones descrFich_t • Entrada directorio
• Puntero a infFich • Unidad disco
• Posición punt. fich. • nSect, nEntr (dir)
• Num referencias • ¿Sucio?
• Num referencias

Principales tablas y estructuras del sistema de ficheros


Proyecto Fin de Carrera 23
Resultados

 Se ha logrado un S.O. simple, sobre máquina desnuda, virtual y


en modo invitado DOS, que cubre todos los requisitos pedidos
1. Introducción
y que se ajusta ampliamente a las necesidades de enseñanza
2. Estado de la
cuestión planteadas.

3. Gestión del
proyecto  Inclusión de diversos comandos internos para mostrar y probar

4. Requisitos determinadas partes internas del S.O.

5. Desarrollo
 Desarrollo de unos programas de usuario “ejemplo o modelo”,
6. Resultados
para otros y también para realizar pruebas sobre el sistema.
7. Conclusiones
 Realización de unas “prácticas” a realizar por el estudiante, ba-
sadas en este sistema y que muestran algunos de los conceptos
más interesantes sobre los fundamentos de los SSOO.

Proyecto Fin de Carrera 24


Resultados

 COMANDOS INTERNOS :
1. Introducción EXIT, CLS, DIR, MEM, LSV, TFA, PS, KILL, DUMP, MW, CW,

2. Estado de la CD, DEL, RD, MD, TOUCH, COMPAC, DESMON, TYPE, TST,
cuestión
AYUDA y CHKDSK.
3. Gestión del
proyecto  PROGRAMAS DE USUARIO:
4. Requisitos Calibra, errante, erraslp, hola, menuexc, menusem, menumsj,
5. Desarrollo tsfork, sh, sh-frk y test.
6. Resultados
 PRÁCTICAS:
7. Conclusiones
Tratamiento de interrupciones (Ctrl-C), manejo de excepciones
(overflow y div. 0), llamada sleep, semáforos, buzones,
compactación memoria, y arranque del sistema (boot).

Proyecto Fin de Carrera 25


Resultados

1. Introducción

2. Estado de la
cuestión

3. Gestión del
proyecto

4. Requisitos

5. Desarrollo

6. Resultados

7. Conclusiones

Proyecto Fin de Carrera 26


Resultados

1. Introducción

2. Estado de la
cuestión

3. Gestión del
proyecto

4. Requisitos

5. Desarrollo

6. Resultados

7. Conclusiones

Proyecto Fin de Carrera 27


Conclusiones

1. Introducción  Es posible realizar un S.O. para los fines didácticos requeridos


si se mantiene su complejidad dentro de unos márgenes.
2. Estado de la
cuestión
 Ha sido posible realizar unas prácticas basadas en dicho S.O.
3. Gestión del y éstas avalan la idoneidad del mismo para la enseñanza.
proyecto

4. Requisitos  A medida que se intenta aumentar las prestaciones del sistema,


la complejidad del mismo tiende a dispararse.
5. Desarrollo

6. Resultados  El diseño monolítico ha resultado ser práctico a la hora de favo-


recer una gran simplicidad en los detalles de construcción.
7. Conclusiones

 Realizar este proyecto ha contribuido en gran medida a mejorar


la comprensión que el autor tenía sobre el diseño y construcción
de un S.O.

Proyecto Fin de Carrera 28


Conclusiones

Computing results.
SLOC Directory SLOC-by-Language (Sorted)
3108 top_dir cpp=3108
1. Introducción 632 USRS_PRG cpp=632
333 LL_S_SO cpp=333
2. Estado de la 0 MI_C0 (none)
cuestión
Totals grouped by language (dominant language first):
cpp: 4073 (100.00%)
3. Gestión del
proyecto Total Physical Source Lines of Code (SLOC) = 4,073

4. Requisitos Development Effort Estimate, Person-Years (Person-Months) = 0.87 (10.49)


(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
5. Desarrollo
Schedule Estimate, Years (Months) = 0.51 (6.11)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
6. Resultados
Estimated Average Number of Developers (Effort/Schedule) = 1.72
7. Conclusiones
Total Estimated Cost to Develop = $ 118,046
(average salary = $56,286/year, overhead = 2.40).

SLOCCount, Copyright (C) 2001-2004 David A. Wheeler

Costes de desarrollo según “sloccount”


Proyecto Fin de Carrera 29
Conclusiones

USC Unified CodeCount (UCC) - RESULTS SUMMARY


(c) Copyright 1998 - 2011 University of Southern California
1. Introducción SLOC COUNT RESULTS - Generated by UCC v.2011.03 on 4 15 2012
Total Blank Comments Compiler Data Exec. Number SLOC File SLOC
2. Estado de la Lines Lines Whole Embedded Direct. Decl. Instr. of Files Type Definition
cuestión

3. Gestión del 6819 674 1695 1417 336 402 3712 48 4450 CODE Physical
proyecto
6819 674 1695 1417 336 353 3866 48 4555 CODE Logical
4. Requisitos

5. Desarrollo Valoración USC (SLOC lógicas):


6. Resultados
 Esfuerzo estimado : 2’4 x (4555 ^ 1’05) = 11’79 meses/hombre.
7. Conclusiones
 Si tomamos como coste anual de un analista programador 50.400€:

Obtenemos un coste total estimado: 50.400 x 11’79 / 12 = 49.518 €

Proyecto Fin de Carrera 30


Conclusiones

Valoración subjetiva (Consideraciones):

1. Introducción  3 horas de media sobre una base de 8 horas diarias durante 2,5 años.
2. Estado de la  Coste empresarial salario anual analista/programador……. = 50.400 €
cuestión
 Coste trabajo desarrollo………………… 2’5 x 3/8 x 50.400 = 47.250 €
3. Gestión del
 El beneficio se ha desestimado por ser un proyecto de código abierto.
proyecto

4. Requisitos

5. Desarrollo Concepto Importe (€)


6. Resultados Recursos Humanos… 47.250 €
7. Conclusiones Ordenador Personal.. 750 €
Software (abierto)… 0 €

Total presupuesto….. 48.000 €

Proyecto Fin de Carrera 31


Conclusiones

1. Introducción  Nuevas llamadas al sistema y más comandos internos.


2. Estado de la
cuestión  Comunicación puerto serie, paralelo y ethernet.
3. Gestión del
proyecto  Manejo de ratón (PS/2 y/o RS232).

4. Requisitos  Ficheros especiales de dispositivo y redireccionamiento de E/S.


5. Desarrollo
 Instalación de nuevos drivers estática y/o dinámicamente.
6. Resultados

7. Conclusiones  Realizar programas o herramientas de apoyo al S.O. como por


ejemplo, un monitor de procesos en ejecución mediante RS232.

 Adaptar el sistema al modo protegido del i386.

Proyecto Fin de Carrera 32


PROYECTO FIN DE CARRERA

¡¡ MUCHAS GRACIAS !!

ESCUELA POLITÉCNICA SUPERIOR


INGENIERÍA EN INFORMÁTICA

Autor: Aníbal Ramírez García


Tutor: Francisco Javier García Blas

También podría gustarte