Visión general. Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile. http://informatica.uv.cl



Documentos relacionados
Memoria, Datos y Direccionamiento

Tema 1: Computadores y Programas

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

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

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

MÓDULO 1: Sistemas de Cómputo

Control Digital en PC con MS-DOS

Organización Básica de un Computador y Lenguaje de Máquina

Preliminares. Tipos de variables y Expresiones

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

Informática I para Bachillerato

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Apuntes de Microcontroladores (Repaso de temas previos)

FACULTAD DE INGENIERÍA

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo Universidad Carlos III de Madrid

Modulo 1 El lenguaje Java

Computación III. Objetivo de aprendizaje del tema

El lenguaje de Programación C. Fernando J. Pereda

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

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Universidad Central de Bayamón Colegio de Desarrollo Empresarial y Tecnología

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

Capítulo 1 Introducción a la Computación

Contenido. Capítulo 1. Introducción a lenguaje C 1


ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

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

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

Hardware: dentro de la caja. Introducción a la Informática

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

SOLUCION EXAMEN junio 2006

PART II: Moviendo al jugador

Tema 3 Elementos básicos de programación

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Mod. I, Unid. 1, Obj. 1 CRITERIO DE DOMINIO 1/1

El lenguaje C: Elementos básicos del lenguaje

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1 ELEMENTOS BASICOS DEL LENGUAJE

Tema: Arreglos de Objetos en C++.

Entre los más conocidos editores con interfaz de desarrollo tenemos:

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

FUNDAMENTOS DE PROGRAMACIÓN

Clases y Objetos. Informática II Ingeniería Electrónica

Programación de dispositivos Arduino Asignatura Sistemas Digitales!

Introducción al tipo de dato ARRAY

LENGUAJE. Tema 1 - Introducción

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

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

Unidad 1: Conceptos generales de Sistemas Operativos.

Vectores. 27/05/05 Programación Digital I 1

Entorno de Programación Visual Studio 6

FUNDAMENTOS DE INFORMATICA

FACULTAD DE INGENIERÍA, U.B.A. Seminario de Sistemas Embebidos TRABAJO PRÁCTICO 0

Clase 20: Arquitectura Von Neuman

Universidad Central de Bayamón COLEGIO DE DESARROLLO EMPRESARIAL Y TECNOLOGIA. Número Estudiante:

Clase 02: Representación de datos

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

U.T.4.EL ENTORNO DE DESARROLLO

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Entorno de Ejecución del Procesador Intel Pentium

Introducción al NASM. Convenciones de colores

Manual de formación para soluciones generales en automatización Totally Integrated Automation (T I A ) MÓDULO B4. Bloques de Datos

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Introducción a la Computación

Materia Introducción a la Informática

Programación Estructurada

Introducción a la Computación (Matemática)

Arquitectura Von Neumann

Desarrollo avanzado en Android

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Es el corazón del ordenador. En el procesador se realizan todas y cada una de las tareas que los programas ordenan cumplir.

7. Manejo de Archivos en C.

OBJETIVOS DE LA MATERIA... 4 PROGRAMA ANALÍTICO. CONTENIDOS TEÓRICOS Y PRÁCTICOS... 5 BIBLIOGRAFIA... 7

TEMA 4. Unidades Funcionales del Computador

INSTITUTO TECNOLOGICO EL LLANO LICENCIATURA EN INFORMATICA ESTRUCTURA DE DATOS I

Examen escrito de Programación 1

Apellidos Nombre DNI

PRÁCTICA MANEJO INTERNO DE DATOS

Arquitectura basica de un computador

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

Objetivo de aprendizaje del tema

HARDWARE DE UN ORDENADOR. 2. Cómo se llama a la parte de los ordenadores formada por los programas y las instrucciones para que funcione el ordenador?

Estructura de Datos. Unidad I Tipos de Datos

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Tema 2. El lenguaje de programación Java (Parte 1)

FACULTAD DE INGENIERÍA

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

Academia técnica de computación A.T.C.

TEMA 1: DESCRIPCIÓN GENERAL DE UN ORDENADOR.

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

UD 1. Representación de la información

Sistemas Operativos Práctica 3

Arquitectura de un computador

Generalidades Computacionales

Sistemas de Archivos Implementación. Módulo 11. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

Tema 3. Introducción a la configuración de un PC

Transcripción:

Visión general Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile http:// 1

Visión general C: Java: auto *a = malloc(sizeof(auto)); a->kilometraje = 100; a->litros_bencina = 17; float kph = get_kph(a); free(a); Auto a = new Auto(); a.setkilometraje(100); a.setlitros_bencina(17); float kph = a.getkph(); Lenguaje assembler Lenguaje máquina getmpg: pushq %rbp movq %rsp, %rsp... popq %rpb ret 01010101010110001010... 010101010100010111010 Sistema opera=vo Sistema Computacional 2

Visión general Código Fuente.c Código Fuente.c Código Fuente.c Compilador Bibliotecas.h Bibliotecas.h Bibliotecas.h Código Assembler.s Código Assembler.s Código Assembler.s Ensamblador Código Objetvo.o Código Objetvo.o Código Objetvo.o Linker (enlazador) Librerías del sistema Ejecutable 3

Hardware: Modelo lógico CPU Memoria Disco Duro Teclado Monitor USB Controladores de HW 4

Hardware: Modelo lógico 5

Hardware: Vista Física 6

Ejecución/desempeño de programas Banco de Registros Registros R1 R2 Rn Caché Interna CPU Memoria RAM Pocos Man=enen los datos de ejecución del programa Desempeño NO depende sólo de la velocidad del procesador Capacidad de canal (Ancho de Banda) entre CPU y Memoria puede limitar el desempeño en la ejecución de programas 7

Memoria, Datos y direccionamiento Representación de la información 8

Codificación Binario Ejemplo: 00101011 2 =32+8+2+1=43 10 Hexadecimal Dígitos: 0 al F Cada dígito hexadecimal son 4 dígitos binarios Ejemplo: FA1D38E 16 Ejemplo: 0xFA1D38E 9

Palabras de Máquina Cada arquitectura =ene un tamaño de palabra Es el tamaño nominal del =po de dato entero. Define la can=dad de registros de memoria que puede direccionar. Máquinas de palabras de 32 bits #registros= 2 32 Máquinas de palabras de 64 bits #registros= 2 64 Por compa=bilidad, los procesadores actuales soportan dis=ntos tamaños de palabra, siempre de la forma 2 n. 10

Memoria Organización orientada al Byte Arreglo, cuyo índice se llama Dirección de memoria. Cada lugar del arreglo, con=ene exactamente 1 byte de datos. Los programas referencian esas direcciones para guardar/sacar datos. 11

Memoria Organización orientada a la palabra La dirección de memoria apunta a un conjunto de bytes La dirección es la dirección del primer bytes de la palabra La dirección siguiente difiere por 4 (caso 32 bit) u 8 (caso 64bit) 12

Memoria, Datos y direccionamiento Organización y direccionamiento de datos en memoria 13

Direcciones y punteros Dirección: Localización en memoria Puntero: dato que con=ene una dirección Por ejemplo La dirección 0x004 almacena el valor 0x0000015F 14

Direcciones y punteros Dirección: Localización en memoria Puntero: dato que con=ene una dirección Por ejemplo La dirección 0x004 almacena el valor 0x0000015F El puntero a la dirección 0x004 se almacena en la dirección 0x001C 15

Direcciones y punteros Dirección: Localización en memoria Puntero: dato que con=ene una dirección Por ejemplo La dirección 0x004 almacena el valor 0x0000015F El puntero a la dirección 0x004 se almacena en la dirección 0x001C El puntero al puntero de la dirección 0x004 se almacena en la dirección 0x0024 16

Direcciones y punteros Dirección: Localización en memoria Puntero: dato que con=ene una dirección Por ejemplo El valor almacenado en 0x0014, es un puntero?, podría ser un puntero?, no es un puntero? 17

Direcciones y punteros Tamaño de los =pos de datos (bytes) 18

Orden de los bytes Qué dato está almacenado en la dirección 0x004? 0x0000015F 0x5F010000 Dos convenciones Big Endian Lille Endian 19

Orden de los bytes Big Endian Byte más significa=vos en las direcciones más bajas (PowerPC, sun, Internet) Lille Endian Ejemplo Byte más significa=vos en las direcciones más altas (intel) Variable de 4 Bytes: 0x01234567 La dirección es 0x100. 20

Orden de los bytes Ejemplo código detector #include <stdio.h> #include <stdlib.h> int main() { union { short s; char c[sizeof(short)]; } un; un.s = 0x0102; if(sizeof(short) == 2){ if(un.c[0] == 1 && un.c[1] == 2) printf("big-endian\n"); else if(un.c[0] == 2 && un.c[1] == 1) printf("little-endian\n"); else printf("unknown\n"); } else{ printf("sizeof(short) = %lu\n", sizeof(short)); } return(exit_success); } 21

Orden de los bytes Ejemplo Complemento 2 22

Manipulación de datos en memoria Escuela de Ingeniería Civil en Informática Universidad de Valparaíso, Chile http:// 23

Direcciones y punteros en C Declaración de variables int x,y; &: dirección de un valor * : valor en una dirección Encuentre dos localizaciones de memoria en las que almacenará 2 enteros (en 1 palabra cada uno) Declaración de punteros int *pa; Declara que pa es un puntero a un dato que es un entero. Asignación a un puntero pa = &x; Asigna a pa un puntero a la dirección en la que x está almacenada. 24

Direcciones y punteros en C Aclaraciones *pa : es el valor en la dirección de memoria dada por el valor de pa &: dirección de un valor * : valor en una dirección Ejemplos: int x,y; int *pa; x=100; pa = &x; y = *pa + 1 cuánto vale y? A qué es equivalente *(&x)? pa = pa +1; Si ptr = 0x500, cuánto vale pa=pa+1? 25

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 1 x vale 0x0 y vale 0x3CD02700 26

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 1 x vale 0x0 y vale 0x3CD02700 int x,y; x = y + 3; Tome el valor de y, súmelo 3 y guárdelo en la dirección de memoria x 27

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 1 x vale 0x0 y vale 0x3CD02700 int x,y; x = y + 3; Tome el valor de y, súmelo 3 y guárdelo en la dirección de memoria x 28

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 2 x vale 0x0 y vale 0x3CD02700 int *x,y; x = &y + 3;?? 29

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 2 x vale 0x0 y vale 0x3CD02700 int *x,y; x = &y + 3; &y = 0x0018 3 => 3*4 = 0x0C x = 0x000024 30

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 3 x vale 0x0 y vale 0x3CD02700 int *x,y; x = &y + 3; *x = y;?? 31

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 3 x vale 0x0 y vale 0x3CD02700 int *x,y; x = &y + 3; *x = y; copie el valor de y a la dirección que apunta x. 32

Asignaciones en C Estructura genérica Lep- Hand- Side = Right- Hand- Side LHS debe contener un localización de memoria (AKA variable) RHS debe contener un valor. (Puede ser una dirección) Ejemplo 3 x vale 0x0 y vale 0x3CD02700 int *x,y; x = &y + 3; *x = y; copie el valor de y a la dirección que apunta x. 33

Arreglos en C Representan localizaciones de memoria adyacentes que almacenan el mismo =po de dato. int arreglo[128] Cuántos bytes adyacentes =ene asignado la estructura arreglo? 34

Arreglos en C Representan localizaciones de memoria adyacentes que almacenan el mismo =po de dato. int arreglo[128] Entonces: a) b) Esta declaración asigna 512 bytes adyacentes en memoria. Supongamos que arreglo está en la dirección 0x00FF0000 int* p_arreglo; p_arreglo = arreglo; p_arreglo = &arreglo[0]; c) d) p_arreglo? &arreglo[i] es equivalente a (arreglo + i), p_arreglo = &arreglo[3]; p_arreglo = &arreglo[0] + 3; &arreglo[0] + i*sizeof(arreglo[0]); 35

Arreglos en C Representan localizaciones de memoria adyacentes que almacenan el mismo =po de dato. int arreglo[128] Entonces: a) b) Esta declaración asigna 512 bytes adyacentes en memoria. Supongamos que arreglo está en la dirección 0x00FF0000 int* p_arreglo; p_arreglo = arreglo; p_arreglo = &arreglo[0]; c) d) p_arreglo? &arreglo[i] es equivalente a (arreglo + i), p_arreglo = &arreglo[3]; p_arreglo = &arreglo[0] + 3; &arreglo[0] + i*sizeof(arreglo[0]); 36

Examinando Representaciones de Datos Cualquier =po de dato puede ser tratado como un arreglo de bytes, casteándolo a char. void show_bytes(char *start, int len) { int i; for (i = 0; i < len; i++) printf("%p\t0x%.2x\n", start+i, *(start+i)); printf("\n"); } void show_int (int x) { show_bytes( (char *) &x, sizeof(int)); } int a = 0x3039; printf("int a = %d;\n,a); show_int(a); 37