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

Documentos relacionados