IIProyectoIIS2024 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Instituto Tecnológico de Costa Rica

Escuela de Ingenierı́a en Computadores


CE 4303 — Principios de Sistemas Operativos
Proyecto 2
Proyecto Libre

Fecha de asignación: 15 de Octubre, 2024 Fecha de entrega: 14 de Noviembre, 2024


Grupos: 4 personas máximo Profesor: Jason Leitón, Leonardo Araya

1. Objetivo
Implementar las diferentes capas necesarias para que una aplicación pueda interactuar con
hardware a través del sistema operativo, ası́ como fomentar el diseño y creatividad de los estu-
diantes en la integración del software y hardware.
Implementar un algoritmo destribuidor de cargas de procesamiento en un sistema distribuido
para optimizar el tiempo de respuesta, utilizando OpenMPI con información cifrada.

2. Atributos a evaluar
Aprendizaje continuo. Se requiere que el estudiante valore las estrategias y el conocimiento
adquirido para alcanzar el objetivo.

Herramientas de Ingenierı́a. Se requiere que el estudiante sea capaz de adaptar técnicas,


recursos y herramientas modernas para la solución de problemas.

3. Elección libre
En este proyecto cada grupo podrá elegir qué desarrollar utilizando alguna aplicación de los
conceptos de SO. Las áreas que debe tener el proyecto son:

1. I/O de datos: El grupo debe crear su propio driver hecho a la medida para controlar
un dispositovo de hardware externo. Cada grupo debe tener autoridad en la defensa. Se
recomienda realizar el módulo de kernel utilizando GPIO.

2. Hardaware: Se deberá de desarrollar un dispositivo electrónico que involucre algún tipo


de movimiento o alguna funcionalidad interesante de procesamiento, cómo por ejemplo
procesador de video o audio.

3. Distribución: Se debe contar con procesamiento distribuido. Al menos debe contar con 3
nodos que procesen. No es permitido compartir archivos directamente desde una directorio.

Proyecto 2 Proyecto Libre Página 1 de 7


Instituto Tecnológico de Costa Rica
Escuela de Ingenierı́a en Computadores
CE 4303 — Principios de Sistemas Operativos
4. Seguridad: Toda la información que se pase por medio de red debe ser cifrada utilizando
algún algoritmo de cifrado.

Cada grupo debe de proponer que es lo que desean desarrollar tomando en cuenta que la
solución de involucrar los 4 aspectos anteriores. La propuesta debe ser aprobada por el
profesor y se debe aportar un documento donde se estipule con detalle lo que se realizará en el
desarrollo del proyecto (similar a la especificación de este documento). Esta propuesta debe ser
validada por el profesor antes del Jueves 24 de octubre 19:00. Cada grupo deberá reunirse
con el profesor para presentar la propuesta del documento y discutir aspectos que no queden
claros.
Cabe destacar que presentar la propuesta y que pueda ser validada tiene un valor de 2 % del
proyecto.
En caso de que el grupo no decida proponer un proyecto se deberá implementar lo que indica
en este documento. En este caso el grupo debe tener un primer diseño con los diagramas y
validarlo con el profesor antes del Jueves 24 de octubre 19:00. De igual manera este diseño
tiene un valor de 2 % .
Es importante resaltar que la idea de este proyecto es fomentar a cada grupo a trabajar en
proyectos con aplicaciones que sean de interés común para los integrantes, por lo que debe de
haber un consenso en lo que se desea desarrollar.

4. Motivación
Con el desarrollo de este proyecto, se implementará un prototipo hardware, el cual deberá de
tener su respectivo device driver y todas las capas de software que este requiere para que puedan
interactuar el hardware y SO por medio del mismo. Se desarrollarán y reforzarán técnicas de
integración del hardware y software por medio del device driver, además se detallará el proceso
de comunicación necesario del sistema operativo hacia el hardware del computador para que la
interacción sea adecuada. También se enfocará en el procesamiento distribuido para equilibrar
cargas dentro de un sistemas con varios nodos.

5. Descripción
El proyecto relaciona 4 áreas de los sistemas operativos: drivers, hardware, seguridad y pro-
cesamiento distribuido.
En general, el proyecto cuenta con las capas que se muestran en la figura 1, las cuales son de
suma importancia por los insumos que necesitan y proporcionan para efectuar de buena manera
el procesamiento.

Proyecto 2 Proyecto Libre Página 2 de 7


Instituto Tecnológico de Costa Rica
Escuela de Ingenierı́a en Computadores
CE 4303 — Principios de Sistemas Operativos

Cliente (Carga archivo)

Capa de Software
Servidor/Cluster

Biblioteca

Capa de Hardware Device Driver Module

Figura 1: Capas generales del proyecto

5.1. Dispositivo fı́sico


Se deberá crear un prototipo de hardware, utilizando cualquier sistema embebido. Como
parte del diseño se deberá elegir alguna interfaz para interactuar con el sistema (GPIO, RJ45,
VGA, o cualquier otro), el cual debe contar con una justificación del porqué de dicha elección
(Se aconseja que sea GPIO).
El dispositivo mecánico será el encargado de presionar en el orden correcto las letras en
un dispositivo con algún teclado, también se puede realizar para que sea capaz de escribir una
palabra en papel (Esto queda a elección del grupo) . El objetivo es “simular”la capacidad de una
mano. El teclado puede ser de cualquier tipo ya sea fı́sico o digital. Una vez que el dispositivo
termine de colocar todos los caracteres de la palabra debe hacer alguna señal para indicar que ya
terminó (puede encender algún led, hacer un movimiento, incluso poner un punto, esto quedará
a criterio de cada grupo).

5.2. Hardware
Se debe crear un prototipo de “mano”que sea capaz de realizar las funciones antes descritas.
El diseño y la manera mecánica de este prototipo quedará directamente ligado a la creatividad del
estudiante. Se requiere los diagramas de los componentes que fueron utilizados para el hardware.

Proyecto 2 Proyecto Libre Página 3 de 7


Instituto Tecnológico de Costa Rica
Escuela de Ingenierı́a en Computadores
CE 4303 — Principios de Sistemas Operativos
5.3. Driver
Se deberá desarrollar un device driver en el lenguaje de programación C y utilizando algún
ambiente de Linux. Será el encargado de proveer a las capas superiores las primitivas necesarias
para la interacción con el dispositivo fı́sico. La interacción con el dispositivo fı́sico será mediante
el device driver (encargado de que el sistema operativo lo reconozca), en otro caso la nota será 0
en el rubros correspondientes. Es importante que considere que el device driver necesita ser un
módulo del kernel de Linux (verificar con lsmod que se esté ejecutando). Se debe prestar atención
a NO utilizar ningun driver del sistema para la interfaz que se utilice. Es importante resaltar
que cada grupo debe saber defender el código del driver, en caso contrario, la nota será cero. No
se permite únicamente utilizar un driver comercial, si no que debe estar justo a la medida para
que lo se vaya a implementar.

5.4. Biblioteca
Se deberá crear una biblioteca (se espera un .a con los métodos especı́ficos), la cual es la
única que interactuará con el driver desarrollado en el punto anterior. La idea fundamental de
este módulo es proporcionar un conjunto de funciones consumibles al usuario para que pueda
interactuar con el hardware a través del device driver. Se debe generar el .a. Esta biblioteca será
la encargada de proporcionar funciones como Read y Write, MoveRight, entre otras.

5.5. Superficie de donde escribir o digitar la palabra


La superficie donde se debe escribir la palabra quedará a elección de cada grupo, puede ser
un teclado fı́sico, un papel o incluso un teclado digital. Lo realmente importante es que se logre
observar en pantalla o en papel la palabra que debe escribir o digitar el prototipo fı́sico.

5.6. Servidor-Clúster
Será el encargado de controlar el flujo de información, y es quien le brinda ordenes al hardware
utilizando la biblioteca. El servidor será el encargado de orquestar el procesamiento distribuido
entre los 3 nodos, además debe de recibir el resultado final proveniente de los nodos de pro-
cesamiento. El servidor recibirá por parte del cliente un documento texto cifrado caracter por
caracter (el algoritmo de cifrado lo elige cada grupo). La idea es que este servidor divida el pro-
ceso en diferentes nodos para que cada uno decifre parte del documento y encuentren la palabra
que más se repite en todo el documento. La manera en que se encuentre la palabra que más
se repita en el documento quedará a diseño de cada grupo, sin embargo, el algoritmo debe ser
paralelizable de manera distribuida.
Una vez que se encuentre la palabra que más se repita, se debe escribir o digitar en la superficie
de escritura, junto con la cantidad de veces que se decifra.
Es importante destacar que el servidor debe guardar tanto el archivo cifrado como el decifrado.

Proyecto 2 Proyecto Libre Página 4 de 7


Instituto Tecnológico de Costa Rica
Escuela de Ingenierı́a en Computadores
CE 4303 — Principios de Sistemas Operativos
5.7. Cliente
El cliente deberá de enviar el archivo al servidor para que este divida el procesamiento. Tam-
bién será el encargado de recibir el archivo y cifrar caracter por caracter utilizando el algoritmo
de cifrado elegido por cada grupo. En esta parte no se espera interfaz gráfica.

5.8. Requerimientos técnicos


Este proyecto se debe realizar en el lenguaje de programación C o RUST.

Debe ser implementado en Linux, sin máquinas virtuales.

No se permite soluciones “alambradas”.

Se debe prestar especial atención a los errores de acceso a memoria o utilización de recursos.
Es inaceptable el error segmentation fault.

En cada nodo se debe mostrar el monitor del sistema para ver el consumo de recurso.

6. Documentación- Estilo IEEE-Trans


Introducción: Teorı́a necesaria, breve descripción del proyecto y qué es lo que se espera en
el escrito.

Ambiente de desarrollo: Configuración básica se debe utilizar para ejecutar el proyecto.


Frameworks, bibliotecas externas o principales, aplicaciones de terceros, herramientas de
desarrollo.

Atributos: Esta sección deben de describirse cuales atributos fueron reforzados durante el
desarrollo del proyecto. Para el atributo de aprendizaje continuo debe responder las
siguientes preguntas:

• ¿Cuales son las necesidades actuales de aprendizaje para enfrentar el proyecto?


• ¿Cuáles son las tecnologı́as que se pueden utilizar para el desarrollo?
• ¿Cuáles acciones se implementó para el desarrollo del proyecto (organización de tiem-
po, búsqueda de información, repaso de contenidos, entre otros)?
• Evalúe de forma crı́tica la eficiencia de las acciones implementadas en el contexto
tecnológico.

Para el atributo de Trabajo individual y en equipo se debe especificar 7 puntos (Se debe
colocar pregunta y respuesta), los cuales son los siguientes:

Proyecto 2 Proyecto Libre Página 5 de 7


Instituto Tecnológico de Costa Rica
Escuela de Ingenierı́a en Computadores
CE 4303 — Principios de Sistemas Operativos
• Indicar las estrategias para el trabajo individual y en equipo de forma equitativa e
inclusiva en las etapas del proyecto (planificación, ejecución y evaluación).
• Indicar la planificación del trabajo mediante la identificación de roles, metas y reglas.
• Indicar cuales acciones promueven la colaboración entre los miembros del equipo du-
rante el desarrollo del proyecto.
• Indicar cómo se ejecutan las estrategias planificadas para el logro de los objetivos.
• Indicar la evaluación para la el desempeño del trabajo individual y en equipo
• Indicar la evaluación para las estrategias utilizadas de equidad e inclusión.
• Indicar la evaluación para las acciones de colaboración entre los miembros del equipo

Detalles del diseño del programa desarrollo, tanto del software como del hardware (en caso
de que aplique): Diagramas UML, diagramas de flujo, imágenes, descripciones entre otros,
todo lo que sea necesario para entender de una mejor manera el diseño y funcionamiento del
proyecto. Es necesario que realice como mı́nimo, el diagrama de arquitectura, componentes,
secuencia y funcionalidades.

Instrucciones de cómo se utiliza el proyecto.

Tabla de actividades por cada estudiante: bitácora con el total de horas trabajadas por
estudiante.

Conclusiones

Sugerencias y recomendaciones.

Referencias

7. Entregables
Código fuente con documentación interna.

Documentación.

Archivos necesarios para ejecutar el programa.

8. Evaluación
Driver 20 %

Hardware 15 %

Proyecto 2 Proyecto Libre Página 6 de 7


Instituto Tecnológico de Costa Rica
Escuela de Ingenierı́a en Computadores
CE 4303 — Principios de Sistemas Operativos
Cliente 5 %

Servidor 15 %

Biblioteca 10 %

Clúster 15 %

Documentación 20 %

9. Fecha de entrega
14 de Noviembre. 14:00 por tecdigital.

10. Puntos extras (10 puntos)


Cada grupo que lo implemente en windows, sin embargo, los demás requerimientos deben de
seguir cumpliendose, por ejemplo, que sea desarrollado en C, RUST o ensamblador, utilizando
alguna de las interfaces deadas y utilizando algún framework como OpenMPI para la distribución
de cargas de procesamiento.

11. Otros aspectos administrativos


Para la revisión del proyecto se debe de entregar tanto la documentación como la imple-
mentación del software.

No se reciben trabajos después de la hora indicada.

En la revisión del proyecto pueden estar presentes el coordinador y asistente.

Es responsabilidad del estudiante proveer los medios para poder revisar la funcionalidad
del software, por ejemplo, si no se realiza la interfaz, se debe de proporcionar otro medio
para la verificación, de lo contrario la nota será cero en los rubros correspondientes a la
funcionalidad faltante.

Proyecto 2 Proyecto Libre Página 7 de 7

También podría gustarte