Apellidos Nombre DNI



Documentos relacionados
62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

SOLUCION EXAMEN junio 2006

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

Entorno de Ejecución del Procesador Intel Pentium

Organización del Computador I 1er. Parcial 17-Mayo Turno:

Contenido. Sistema de archivos. Operaciones sobre archivos. Métodos de acceso a archivos. Directorio. Sistema de archivos por capas.

"Programación en Ensamblador del microprocesador Pentium (I)"

Generación de código para funciones. Generación de código para funciones. Generación de código para funciones. Generación de código para funciones

Función de un disco duro 2009

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

INFORMÁTICA BÁSICA 1ª PARTE (DURACIÓN TOTAL DEL EXAMEN: 2 HORAS Y 15 MINUTOS)

Se guardan en archivos con extencion c y los cabezales con extension h

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Tema 4. Gestión de entrada/salida

6-REGISTROS DEL 8086 Y DEL 80286

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

Introducción a la programación orientada a objetos

Modulo 1 El lenguaje Java

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Fundamentos de Programación. Sabino Miranda-Jiménez

Tema 2. Diseño del repertorio de instrucciones

Tema 6 Ficheros. * Sistemas de almacenamiento primario y secundario

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Práctica 0. Emulador XENON de la computadora CESIUS

Capítulo 9. Archivos de sintaxis

Mi primer proyecto en Dev-C++

PROGRAMACIÓN EN C. PRÁCTICA 2: Operaciones con bits. Práctica 2: Índice. 2.1 Introducción 2.2 Representación de información binaria en C

Preliminares. Tipos de variables y Expresiones

Acronis License Server. Guía del usuario

Estructuras de Sistemas Operativos

Vincular datos entre Word y Excel.

La informática es el conjunto de técnicas y conocimientos necesarios para el tratamiento automático de la información mediante el ordenador.

7. Manejo de Archivos en C.

EJERCICIOS DEL TEMA 1

Práctica de laboratorio Uso de la Calculadora de Windows con direcciones de red

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Ejercicios - Persistencia en Android: ficheros y SQLite

Estructura de Computadores

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN

Abelardo Pardo. Iria Estévez Ayres. Damaris Fuentes Lorenzo. Pablo Basanta Val. Pedro J. Muñoz Merino. Hugo A. Parada.

Matemática de redes Representación binaria de datos Bits y bytes

Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO

Capítulo Comunicaciones de datos 1. Conexión de dos unidades 2. Conectando la unidad con una computadora personal

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

Práctica 3: Programación con subrutinas

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Entrada/Salida. Polling e Interrupciones. Verano de Mariano Moscato. Organización del Computador 1

El ordenador es un dispositivo electrónico que permite almacenar información, modificarla y generar nueva información.

Organización de Computadoras

2 Sea una unidad de disco duro de brazo móvil con las siguientes características:

RemitePIN: Nuevo procedimiento de firma electrónica para las aplicaciones de captura de las Oficinas Virtuales de Coordinación Financiera.

RELACIÓN DE PRÁCTICAS DEL TEMA 2

PARTICIONES Y FORMATOS

UNIDAD DIDÁCTICA Nº 7 USO DE LOS RECURSOS EN MOODLE

Control Digital en PC con MS-DOS

Sesión 2 Manejo básico de la interfaz de programación Win32

Laboratorio de capitulo 5

Tema 8 Procesos. * Definición informal: un proceso es un programa en ejecución

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

Midiendo el tiempo de ejecución de un programa en Windows

PRÁCTICAS DE ARQUITECTURA DE COMPUTADORES

Técnicas de Desarrollo de Programas Ingeniería Informática Curso 2008 / Ejercicios de Patrones de Diseño:

El soporte del sistema operativo. Hace que un computador sea más fácil de usar. Permite que los recursos del computador se aprovechen mejor.

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Introducción al lenguaje Java

MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS

Procesos. Procesos. Concurrencia de procesos. Qué es un proceso? Estados de un proceso. Modelo de 2 estados. (C) 2008 Mario Medina 1

TEMA III - Interrupciones en Sistemas en Tiempo Real

UNIDADES DE ALMACENAMIENTO DE DATOS

SISTEMAS BASADOS EN MICROPROCESADOR 2º Grado Ingeniería Informática (EPS UAM) EXAMEN FINAL EXTRAORDINARIO JULIO 2013 ENUNCIADO DEL PROBLEMA

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

Anexo B. Comunicaciones entre mc y PC

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

3.1. Guardar un libro de trabajo

Sistema para el control y tramitación de documentos SITA MSc. María de la Caridad Robledo Gómez y Ernesto García Fernández.

V Manual de Portafirmas V.2.3.1

Práctica 8 - DMA y Almacenamiento Masivo

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL SISTEMA ENCRIPTACIÓN DE HECHOS RESERVADOS

WINDOWS 98/Me EL EXPLORADOR DE WINDOWS IV

Programación Estructurada

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

CCNA Discovery Networking para el hogar y pequeñas empresas

WINDOWS : COPIAS DE SEGURIDAD

Creación de Funciones de Conducción

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Transcripción:

A continuación se muestra el listado de un programa cuyo objetivo es encontrar una palabra dentro de una cadena de caracteres de la sección de datos y copiar dicha palabra en otra zona de la sección de datos. La cadena en donde se encuentra la palabra a buscar está marcada con la etiqueta cadena. Las palabras que integran la cadena se encuentran separadas por un guión (carácter - ), y el terminador de cadena es el número 0. Las palabras dentro la cadena ocupan una posición, siendo la primera posición la número 0. Así en la cadena del programa la palabra que ocupa la posición 0 es En, la que ocupa la posición 1, un, la que ocupa la posición 2, lugar, y así sucesivamente. La zona de memoria en la que se almacenará la palabra encontrada en la cadena está marcada con la etiqueta palabra. Se trata de una zona de 10 bytes inicializados con el valor 0. En la sección de datos también se observa la variable pos_palabra. Esta variable contiene la posición de la palabra que queremos encontrar en la cadena de caracteres. Para llevar a cabo el procesamiento requerido, el programa utiliza el procedimiento ObtenDirPalabra. Este procedimiento recibe dos parámetros a través de la pila: 1) la dirección de la cadena en la que se encuentra la palabra a buscar, y 2) la posición que ocupa la palabra que queremos buscar en la cadena. El procedimiento devuelve como resultado en el registro EAX la dirección de memoria en la que se encuentra la palabra buscada. Para llevar a cabo su procesamiento, el procedimiento emplea una variable local en la pila de tipo doble palabra. Dicha variable será utilizada por el procedimiento como contador de palabras. El procedimiento ObtenDirPalabra funciona según se explica a continuación. El procedimiento utiliza el registro ESI para direccionar los caracteres de la cadena a procesar. El procesamiento se realiza en un bucle. En cada iteración del bucle se procesa un carácter de cadena. Si el carácter no es un guión, simplemente se incrementa ESI para que apunte al siguiente carácter. Si el carácter es un guión, se incrementa ESI para que apunte al siguiente carácter y se incrementa el contador de palabras (variable local). Cuando este contador alcanza el valor del segundo parámetro recibido por el procedimiento (posición de la palabra que queremos buscar), se abandona el bucle. Así el registro ESI queda apuntando al comienzo de la palabra que buscamos dentro de la cadena. Después este valor se pasa a EAX para devolver el resultado. El programa principal llama al procedimiento ObtenDirPalabra indicándole que busque en cadena la palabra situada en la posición indicada por la variable pos_palabra. Mediante este procedimiento se obtiene la dirección de la palabra buscada. Después, mediante un bucle, el programa principal copia la palabra en el área de la sección de datos marcada con la etiqueta palabra. Contesta a las preguntas que se proporcionan después del listado. Allí donde sea pertinente, ten en cuenta los comentarios del programa en tus respuestas. Datos adicionales Dirección de comienzo de la sección de datos: 00402000 Valor de ESP al inicio del programa: 0012FFC4.386.MODEL flat EXTERN ExitProcess:PROC.DATA cadena DB "En-un-lugar-de-la-mancha", 0 palabra DB 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 pos_palabra DD 5.CODE ObtenDirPalabra PROC push ebp mov ebp, esp ; Reservar espacio para la variable local contador de palabras ( 1 ) ; Salvar registros push esi push edx ; Recuperar parametros mov esi, [ebp+12] mov edx, [ebp+8] ; Contador de palabras = 0 mov [ebp-4], DWORD PTR 0 bucle1: cmp [esi], BYTE PTR 0 je SHORT fuera1 cmp [esi], BYTE PTR '-' je SHORT es_guion ; si no es guion, ; es un caracter de una palabra inc esi jmp bucle1 es_guion: inc esi inc DWORD PTR [ebp-4] ; Incrementar contador palabras ; Si contador palabra = posicion palabra, abandonar bucle cmp [ebp-4], edx je SHORT fuera1 jmp bucle1 fuera1: ; Preparar el resultado para el retorno mov eax, esi ; Preparacion del retorno pop edx

pop esi mov esp, ebp pop ebp ret 8 ObtenDirPalabra ENDP ; Programa principal inicio: ; Obtener en EAX la direccion de la palabra ; indicada por la varible pos_palabra ( 2 ) xor ebx, ebx ; resetear auxiliar xor edi, edi ; resetear indice ; bucle que copia la palabra encontrada ; en la zona marcada con la etiqueta palabra bucle2: cmp [eax], BYTE PTR 0 je SHORT fuera2 cmp [eax], BYTE PTR '-' je SHORT fuera2 mov bl, [eax] mov [palabra+edi], bl ( 3 ) jmp bucle2 fuera2: ; Retorno al sistema operativo push 0 call ExitProcess nop END inicio Qué instrucciones son necesarias en el hueco ( 3 ) del listado? inc eax inc edi Determina el rango de direcciones que ocupa la variable pos_palabra. (Ejemplo de respuesta: 00402000 00402007) 00402023-00402026 Codifica la instrucción mov edx, [ebp+8], marcada en el listado del programa con el símbolo. Indica su codificación en hexadedimal. 8B 55 08 Determina el valor retornado por el procedimiento ObtenDirPalabra, una vez que ha sido ejecutado en el programa anterior. Contesta en hexadecimal. 00402012 Determina el valor que toma el registro ESP justo después de que se ejecute la instrucción push ebp, marcada en el listado del programa con el símbolo. 0012FFB4 A continuación se muestra el listado de un función escrita en lenguaje C en la que se observa una sentencia de asignación marcada con el símbolo. Determina el código ensamblador que generaría el compilador de C para compilar dicha sentencia. (Se entiende que puedes utilizar cualquier código que lleve a cabo de forma correcta la sentencia indicada.) int A=2, B=3; Qué instrucción (solo una) es necesaria en el hueco ( 1 ) del listado? sub esp, 4 A = B+5; Qué instrucciones son necesarias en el hueco ( 2 ) del listado? push OFFSET cadena push [pos_palabra] call ObtenDirPalabra mov eax, [B] add eax, 5 mov [A], eax

Página Virtual (Binario ) 00000 00000 00000 00001 00000 00010 00000 00011 00000 00100 00000 00101 01000 00000 01000 00001 01000 00010 01000 00011 11111 11110 11111 11111 Página Física / (Binario) - 00 11 00 00 11 01 00 01 10 00 01 11 - La MMU de un computador funciona con direcciones virtuales de 20 bits, direcciones físicas de 16 bits y páginas de 1 KB. En la tabla adjunta se muestra el estado de la tabla de páginas de un proceso que se encuentra en ejecución en el sistema. En esta tabla, tanto las páginas virtuales como las físicas están expresadas en binario. Las entradas de la tabla de páginas que contienen un -, así como aquellas que no se muestran, corresponden a páginas no utilizadas por el proceso; si contienen la palabra, significa que se encuentran en el disco; y si en ellas se encuentra un número, éste representa la página física a la que se encuentra asignada la página virtual correspondiente. Teniendo en cuenta toda esta información, contesta a las preguntas A y B. A) Cuando el estado de la tabla de páginas es el que se muestra, la MMU recibe la dirección virtual 40B7A (hex.). Indica si la MMU genera una excepción de protección, una excepción de fallo de página o si genera una dirección física. En este último caso, indica la dirección física generada expresada en HEXADECIMAL. 1B7A B) Partiendo del estado de la tabla de páginas mostrado en la tabla adjunta, determina la dirección virtual más significativa que al ser recibida por la MMU generaría un fallo de página. Contesta en HEXADECIMAL. 407FF A continuación se proporcionan el prototipo de la función GetLocalTime() y la definición del tipo de estructura SYSTEMTIME, tal y como se encuentra en los ficheros de cabecera del sistema de desarrollo. void GetLocalTime( LPSYSTEMTIME lpsystemtime ); typedef struct _SYSTEMTIME WORD wyear; WORD wmonth; WORD wdayofweek; WORD wday; WORD whour; WORD wminute; WORD wsecond; WORD wmilliseconds; SYSTEMTIME, *PSYSTEMTIME; Teniendo en cuenta la información anterior, escribe una función que imprima en pantalla la hora del día, generando un mensaje con la siguiente forma: Hora: xx En donde xx representa la hora. Para ello utiliza la función de la API Win32 GetLocalTime(). NOTA: no es necesario que inicialices con el valor 0 los campos de la estructura del tipo SYSTEMTIME que utilices en tu programa. 1 #include <windows.h> #include <stdio.h> SYSTEMTIME tiempo; GetLocalTime(&tiempo); printf( Hora: %d\n, tiempo.whour);

A continuación se muestra el listado de un programa cuyo objetivo es solicitar al sistema operativo que reserve una región de memoria de 8 páginas a partir de la dirección contenida en el puntero q y con el atributo de protección de lectura/escritura. La dirección de la región reservada debe almacenarse en el puntero p. Después de realizar la reserva el programa envía un mensaje a pantalla indicando la dirección efectiva a partir de la cual se ha realizado la reserva. Teniendo en cuenta esta información, escribe la sentencia VirtualAlloc() necesaria en el listado siguiente. #include <windows.h> #include <stdio.h> void *p; void *q = (void *)0x00800534; p = VirtualAlloc( q, 8*4096, MEM_RESERVE, PAGE_READWRITE ); En la sección de datos de un programa ensamblador se encuentran definidas las variables que se indican a continuación:.data contador_a DD 0 contador_b DD 0 Escribe un fragmento de código ensamblador que en función del contenido del registro EAX, incremente el contenido de contador_a, si EAX >= 0, e incremente el contenido de contador_b, si EAX < 0. Utiliza las etiquetas que consideres oportunas. cmp eax, 0 jl menor_cero inc [contador_a] jmp sigue menor_cero: inc [contador_b] sigue: printf( Direccion de reserva: %p, p); Cuál será la dirección más significativa de la región reservada en la operación anterior? Contesta en hexadecimal. 00807FFF Contesta a las siguientes cuestiones sobre las interrupciones enmascarables utilizadas en los procesadores IA-32. Objetivo: son utilizadas por los periféricos para solicitar la atención del procesador. Nombre y finalidad de las líneas de control usadas para gestionar este tipo de interrupciones: INTR (Interrupt Request): Se utiliza para solicitar interrupción al procesador. INTA (Interrupt Acknowledge): Es utilizada por el procesador para inidicar que ha aceptado una solicitud de interrupción. Mecanismo de enmascaramiento: Bit IF del registro de estado. Si IF=0 no se aceptan las interrupciones. Si IF=1 sí se aceptan.

Indica y describe brevemente los componentes básicos de un disco duro Platos: Están formados por una aleación rígida de aluminio y recubiertos por una capa de material magnético sobre la que se graba la información. Motor de giro: Su objetivo es hacer girar los platos a velocidad constante. Cabezas de lectura/escritura: Su objetivo es escribir información sobre la superficie de los platos y leer de ellos. Hay una cabeza por cada superficie. Brazo: Su objetivo es servir de soporte para la cabeza. Actuador: Es un servomotor encargado de mover los brazos para posicionar las cabezas en las posiciones de los platos requeridas. Explica los conceptos de localidad espacial y localidad temporal en el acceso a las instrucciones y datos de un programa. Localidad espacial: Cuando un programa accede a una instrucción o a un dato, existe una elevada probabilidad de que instrucciones o datos cercanos sean accedidos pronto. Localidad temporal: Cuando un programa accede a una instrucción o a un dato, existe una elevada probabilidad de que esa misma instrucción o dato vuelva a ser accedido pronto. En la definición técnica de un proceso se indica cuáles son los cuatro elementos fundamentales que lo forman. Indica a continuación dichos elementos y describe brevemente cada uno de ellos. Imagen binaria de un programa. Ésta está formada por las instrucciones y datos del programa. La pila. Área de memoria en la que se almacenan datos temporales. Contesta a las siguientes preguntas acerca de los procesos Windows y a la API Win32. Nombre de la función de la API Win32 utilizada para poner procesos en ejecución: CreateProcess() Nombre del fichero de cabecera (.h) que es nacesario incluir en los programas C cuando se hace uso de la API Win32: Windows.h La tabla de páginas. Traduce las direcciones virtuales generadas por el proceso en las direcciones físicas en la que se encuentra almacenado El PCB. Estructura utilizada por el sistema operativo para controlar la ejecución del proceso. Rango de direcciones correspondiente al espacio de usuario de un proceso Windows: 00000000-7FFFFFFF