Universidad Tecnológica Nacional Facultad Regional Bueno Aires Técnicas Digitales III 15 de Febrero de 2005 Examen Final 1- Se desea implementar el servidor de un sistema de voto electrónico. El mismo funcionará en el centro de cómputos de la Comisión Nacional Electoral, escuchando conexiones TCP en el puerto 50400. Los clientes remotos (urnas virtuales en cada escuela) se conectan para ser validados, y una vez autenticados proceden a descargar en el servidor el contenido de la urna virtual que tienen cargada con los votos de los sufragantes. Dicha descarga se realiza por un puerto UDP que se encuentre disponible al momento de conectarse el cliente. Pare evitar una avalancha de conexiones, existe un cronograma de momentos de conexión para cada distrito electoral, con lo que se garantiza que no existirán más de 100 conexiones simultáneas, las cuales no demorarán más de 1 minuto en realizar la descarga. Para su comodidad, existen implementadas en un módulo de programa aparte (usted solo debe incluir el módulo en el comando para compilar) las siguientes funciones para consulta de la base de datos: Int ChkClient(char *password); // verifica cliente ok y devuelve un clientID. Int GuardaUrna (int clietnID, void *votos, int cant); //guarda los datos de la urna para el clientID dado. El acceso a la Base de datos de autenticación es exclusivo y debe realizarse de a un proceso por vez. Al conectar un cliente, este puede enviar uno de los siguientes comandos (son strings de chars): VALIDAR: y junto con este comando envía su clave (unica de 20 chars). DESCARGA: y espera recibir de vuelta, un ok y el numero de puerto UDP donde el servidor espera recibir los datos de la urna del cliente, luego de esto el cliente comienza la descarga (suponga que la verificación de consistencia de datos esta resuelta por otro equipo de desarrollo). FIN: petición de desconexión. Parte Teórica: 2. La instrucción mov ax, [esi] corresponde a una tarea que al momento de su ejecución tiene: ds : esi = 23h : 9F0A02EBh, y CR3 = 0000F000h. Las tablas de descriptores de página se ubicarán en memoria física a continuación del Directorio de Tabla de Páginas (DTP), en el mismo orden en el que se encuentran sus descriptores correspondientes en el DTP. De modo que el modelo queda del siguiente modo: Directorio de Tablas de Página (DTP) Base_DTP Tablas de Página Base_TP 0 1 Indexn PTBAn n 0 1 Indexm PBAm m Se desea determinar: 2.a. Valor de Base_DTP. Base_DTP = dirección física de memoria a partir de la cual se ubica el DTP. 2.b. El valor de n. n = descriptor de tabla de página seleccionado en el DPT. 2.c. El valor de PTBAn, que debe llevar el descritor Nro. n del DPT de acuerdo a los datos del problema. 2.d. Valor de Base_TP. Base_TP dirección física de memoria a partir de la cual se ubica la tabla que contiene el selector de la página de memoria física en donde reside el dato apuntado por es:edi. 2.e. Valor de m. m = descriptor de la página que contiene el objeto seleccionado por es:edi. 2.f. El valor de PBAm para que el objeto seleccionado por es:edi mapee sobre la dirección 100012Ebh. 3. Device Drivers 3.a. Diseñe la función que implemente la syscall read() de un driver para un puerto paralelo genérico, el registro de datos estará en la posición 0x3bc, se utilizará lectura por interrupciones en la linea irq7. 3.b. Explique para qué son los números MAYOR y MENOR. 3.c. Explique cómo se instala un driver y qué funciones del mismo entran en juego al instalarlo y al removerlo. 3.d. Qué relación guarda con el i-nodo del directorio /dev. Universidad Tecnológica Nacional Facultad Regional Bueno Aires Técnicas Digitales III 15 de Febrero de 2005 Examen Final 4. Un descriptor de Interrupt Gate se encuentra en la IDT en la entrada correspondiente a la NMI. Una aplicación que ejecuta en un segmento de código de DPL=10 ejecuta INT2h. 4.a. ¿Qué ocurre si el descriptor de NMI tiene DPL=00? 4.b. Si el selector que contiene la Interrupt Gate corresponde en la GDT a un descriptor de segmento de código de DPL=00. ¿Cuál es el máximo valor numérico que debe tener en el campo DPL el descriptor citado para que la aplicación pueda acceder al handler de INT 2?. Se pide justificar la respuesta. 4.c. ¿Qué ocurre con la pila de la aplicación en el caso en que el valor del campo DPL del descriptor de Interrupt Gate sea el que se solicita en el ítem 4.b?. Se pide explicar este punto lo mas detalladamente posible. 5. Se necesitan transferir por el USB 128 bytes de información por cada frame de 1 mseg. utilizando transferencias de interrupción. Se dispone de un controlador 1.1 compatible con 4 endpoints de 64 bytes cada uno. ¿De que forma resolvería la situación de modo de utilizar la cantidad mínima de endpoints del controlador?. Se pide justificar la respuesta