Se desea implementar un sistema de adquisición de datos basado
Transcripción
Se desea implementar un sistema de adquisición de datos basado
Universidad Tecnológica Nacional Facultad Regional Bueno Aires Técnicas Digitales III Apellido 1 de Marzo de 2005 Examen Final Nombres Legajo Calificación Parte Práctica: 1. Escriba el código de un servidor concurrente que ejecute bajo Linux, y que cumpla los siguientes requerimientos. 1.a. Esperar conexiones por el port 4005 1.b. Por cada conexión crear una instancia child, la que deberá establecer un socket UDP con el cliente remoto por el que le transferirá audio en tiempo real. El audio se obtiene del dispositivo /dev/dsp. 1.c. Cada instancia child esperará además, recibir cada 5 segundos un paquete UDP proveniente del cliente remoto que contenga la string “Sigo vivo”. Tras tres ausencias consecutivas de dicho paquete cierra el socket y termina la conexión con el cliente remoto. 1.d. El dispositivo de audio no acepta ser accedido en forma concurrente. Significa que solo un proceso puede leerlo en un momento dado. 1.e. El servidor no debe crear procesos zombies Parte Teórica: 2. Procesadores IA-32 2.a. ¿Cuál es la razón por la cual se efectúa un jump far luego de poner al procesador en Modo Protegido, y luego de ponerlo en modo Real?. ¿Por qué no es suficiente un jmp near?. Se desea una justificación clara y detallada. 2.b. Si Ud. debe desarrollar el firmware de un sistema de tipo embedded, es decir no tiene precargado ningún módulo de software sobre el cual construir su programa. 2.b.i. ¿Cuáles son los pasos y recaudos que debe tener en cuenta para inicializar el sistema en modo protegido? 2.b.ii. ¿Cómo estructuraría un modelo de memoria Flat de 4 Gbytes con dos niveles de privilegio? 3. Se tiene el siguiente diagrama de llamadas inter nivel trabajando en Modo Protegido. Los diferentes segmentos van acompañados de sus respectivos selectores. Se pide: 0 Segmento de datos Segmento de código DPL=00 DPL=00 K_data 3 DPL=11 cgate U_code U_data Segmento de pila K_code K_data’ push Descriptor de Call Gate Segmento de código DPL=11 call DPL=xx 3.a. Indicar si la tarea que ejecuta en el segmento cuyo selector es U_code tiene privilegio necesario para acceder a los datos almacenados en el segmento cuyo selector es K_data. Justicar. 3.b. Si dicha tarea ejecuta la siguiente secuencia (programada para NASM): mov or push call ax,K_data ax,3 ax cgate:0 Y si el descriptor de la puerta de llamada contiene el selector del segmento denominado K_code, se desea conocer con el mayor grado de detalle posible y correctamente justificado, cual es el tratamiento que le dará Universidad Tecnológica Nacional Facultad Regional Bueno Aires Técnicas Digitales III 1 de Marzo de 2005 Examen Final el procesador de acuerdo con los datos del gráfico. Se requiere conocer con el mayor detalle posible que ocurre con el stack. 3.c. Si el código del segmento invocado por la call gate toma el parámetro pasado por la pila en el código del punto 3.b, y lo asume como un selector de segmento. ¿Puede la tarea que ejecuta en el segmento cuyo selector es U_code. accedier a los datos almacenados en el segmento cuyo selector es K_data?. 3.d. ¿Son coherentes las respuestas de los puntos 3.a, y 3.c?. Se desea conocer su conclusión. 3.e. Escriba el código necesario para que a la entrada de la rutina apuntada por la call gate de la figura impida que se plantee la situación resultante del punto 3.b. 4. Se desea conocer las siguientes respuestas en la forma mas detallada posible. 4.a. ¿Que recursos utiliza el kernel de Linux para mapear el acceso a los dispositivos de E/S sobre las funciones clásicas de manejo de archivos?. 4.b. ¿Qué es una cola de espera (wait queue), que función cumple, en un device driver, y en que parte del código se la utiliza? 4.c. ¿Cómo se compila, instala y desinstala un driver? ¿Qué condiciones deben cumplirse para poderlas ejecutar? ¿ Como declara el driver sus características al kernel.? 5. TCP/IP 5.a. Explique la relación entre port y servicio 5.b. Explique como realiza la relación entre un port y un proceso. ¿Qué función utiliza durante la programación de un servidor para este fin?.