Concept Os

Embed Size (px)

DESCRIPTION

sistema

Citation preview

  • Nociones Bsicas de un Sistema Computador

    Clase 2

    Introduccin a la Programacin

  • Antes de empezar a programar

    Veremos algunos conceptos muy bsicos sobre:

    Computadoras

    Sistemas Operativos

    Programas, lenguajes de programacin y algoritmos

  • Computadora, Sistema Operativo, Programas

    Computadora:

    Formada por:

    Procesador

    Dispositivos de entrada y salida con sus correspondientes chips dedicados para controlar el flujo de informacin entre los dispositivos y el procesador

    Memoria : donde residen los programas y los datos cuando se estn ejecutando

    Buses que interconectan estos componentes entre s.

  • Arquitectura Von Neumann

  • Modelo Secuencial de Ejecucin

    El procesador (su unidad de control) obtiene las instrucciones de la memoria una a una y las ejecuta (en la unidad de proceso) en el orden en que estn almacenadas.

    Tanto las instrucciones como los datos residen en Memoria, y no hay ninguna distincin entre ellos: son todos secuencias de ceros y unos, es decir, todos son nmeros.

    Como sabe el procesador qu es una instruccin y qu es un dato?

  • Instrucciones

    Cada familia de procesadores tiene su propio conjunto de instrucciones, es decir, Intel, PowerPc, Alpha, Mips, Sparc, en fin... Cada uno de ellos define qu instrucciones tendr su mquina. Por ejemplo: Intel tiene una instruccin de multiplicar:

    MUL BX;; DX:AXAX*BX Observen que la multiplicacin devuelve un resultado en DOBLE precisin: es decir el doble de largo (como mximo) que los operandos.

    Yo podra disear una mquina SIN una instruccin de multiplicar. Por lo tanto, si mi programa necesita realizar una multiplicacin, debera utilizar repetidas sumas para obtener el resultado

  • Instrucciones y Formatos

    Decamos entonces que cada arquitectura (ISA) define un repertorio propio de instrucciones, estas instrucciones se codifican siguiendo un formato tambin definido por el ISA.

    Ejemplo: formato de una operacin aritmtica en MIPS (32 bits)

  • Las programas residen en memoria

    Para poder ser ejecutado, un programa debe residir en memoria (principal). (luego veremos como llega all.)

    O sea, cualquiera sea el lenguaje en que escribamos nuestros programas, al final ste estar en memoria organizado como una secuencia de instrucciones del formato de la arquitectura (ISA).

  • Memoria

    La memoria principal es un chip (circuito integrado) que se localiza fuera del procesador.

    01000010111100000100001011110000 00001111000010101000011110000111 00011100011000010001000100010010 00010010101010101000010000100000

  • La memoria: leyendo instrucciones

    La unidad de control repite este ciclo infinito: 1. Pone la direccin de la siguiente instruccin en las

    seales de direccin y lee la instruccin (Fetch) 2. Decodifica y Ejecuta la instruccin 3. Incrementa el contador de direcciones y vuelve al paso 1

    Procesador

    01000010 00001111 00011100 00010010

    direccin

    instruccin

  • Los Datos

    No tendran sentido las instrucciones sin los datos. Las instrucciones operan sobre los datos. Y dijimos que los datos, tambin estn guardados en la memoria. As, por ejemplo:

    programa

    datos

    Los datos, a diferencia de las instrucciones, pueden ser ledos o escritos de/a la memoria por parte del procesador.

  • Modelo Procesador-Memoria

    Las direcciones de los datos estn especificadas en las instrucciones. Ejemplo: ISA Intel

    ADD BX, Variable;; BXBX+[Variable]

    Procesador

    01000010 00001111 00011100 00010010

    direccin de dato o instruccin

    Instruccin o dato

    dato

  • Ciclo de Ejecucin de una instruccin

    1. Poner la direccin de la siguiente instruccin en las seales de direccin y leer la instruccin (Fetch de instruccin)

    2. Decodificar la instruccin 3. Por cada operando en memoria: Poner la direccin

    del dato en las seales de direccin y leer el operando (fetch del dato)

    4. Ejecutar 5. Si hay que escribir el resultado en memoria, poner la

    direccin de memoria y escribir el resultado 6. Incrementar el contador de direcciones y volver al

    paso 1

  • Ciclo de ejecucin de una instruccin

    Cuando el procesador est en el paso 1, trae una instruccin.

    Cuando el procesador est en el paso 3, trae un dato.

  • Mas sobre la memoria

    La memoria est organizada como una coleccin de bytes (8 bits). Cada posicin de memoria de 8 bits, tiene asociado un nmero, que es su posicin dentro de la coleccin. Este nmero se llama direccin y va desde la posicin 0 hasta la 2n-1, siendo 2n el tamao de la memoria medida en bytes. Esa direccin es un nmero, por ejemplo: 100 . Su contenido es el nmero binario natural: 01101100

    01000010 00001111 00011100 01101100 00010010

    0 1

    100

  • Sistema Binario y otros

    Todos los nmeros, tanto los que representan instrucciones, como datos, como direcciones (son tres cosas!) estn representados en el sistema binario.

    El sistema binario, cuando se implementa sobre la lgica, se expresa en volts (0 y 5).

    Podemos subir el nivel de abstraccin para la representacin numrica, tanto de datos como de direcciones como de instrucciones, a otros sistemas de numeracin mas convenientes para el caso:

    Por ejemplo: el decimal para los nmeros

    Hexadecimal para nmeros y direcciones

  • Interface software-hardware

    Cuando hablemos de variables en los lenguajes de programacin estaremos hablando de direcciones de datos. Una variable, es el nombre simblico de la direccin de un dato. En nuestro ejemplo, a la direccin 100, que contiene el dato 01101100, la llamamos simblicamente: VAR1.

    Las variables almacenan valores en memoria.

    Las variables son posiciones de memoria a las que habr que darles un valor, un contenido, de lo contrario, tendrn cualquier cosa

  • Microarquitectura del Procesador

  • Entrada/Salida

    Discos, Memorias Flash, teclado, Monitor, mouse, enfin toda una cantidad importante de complementos que comunican el procesador y su memoria con el mundo exterior. Cada dispositivo fsico (disco, por ej) tiene un hardware asociado a l que sirve para programarlo, enviar y recibir datos. Este hardware, o controlador del dispositivo, tambin deber comunicarse con el procesador.

    disco E/S CPU

    Direcciones/datos

  • Entrada/Salida

    Afortunadamente para los programadores, toda la programacin para acceder a los dispositivos est hecha. Capas de software, que van desde las libreras de los lenguajes de programacin hasta el sistema operativo, se encargan de facilitarnos la tarea.

    Programa usuario

    Datos usuario

    Programa SO

    Datos SO

    Libre

    Memoria

  • Sistemas Operativos

    Se crearon para hacer que el programador pudiera tener un acceso mas sencillo a los recursos de la computadora. Es software.

  • Sistemas Operativos

  • Estimacin del uso de SOs en 2009

  • Algoritmos, Programas y Lenguajes de Programacin

    Sea el siguiente problema (Euler 1):

    Hallar la suma de todos los nmeros enteros menores que 1000 que sean mltiplos de 3 y de 5.

    Paso 0: Tomar el primer nmero Paso 1: Si es mltiplo de 3, sumar el nmero a la salida Paso 2: Si es mltiplo de 5, sumar el nmero a la salida Paso 3: Avanzar al siguiente nmero. Paso 4: Si es igual a 1000, terminar, sino Ir al paso 1

    Un algoritmo:

  • Algoritmo

    Definicin del Diccionario de Lengua Espaola, de la Real Academia

    Conjunto ordenado y finito de operaciones que permite hallar la solucin de un problema.

    Ejemplos de algoritmos: Instrucciones para poner en marcha la heladera que acabo de comprar. Instrucciones para dividir dos nmeros

    Representacin de los algoritmos En lenguaje natural (ejemplo pgina anterior) Mediante diagramas de flujo Mediante grafos de estado Etc

  • Programas y LPs

    En Python: #include int main() { int suma,i; suma=0; for(i=3;i

  • Programas y LPs

    En la sintaxis, hay algunas diferencias y algunas similitudes entre los dos lenguajes.

    En ejecucin, las diferencias son mayores: El programa escrito en C, es necesario compilarlo para poder ser ejecutado.

    El programa escrito en python NO es necesario compilarlo para poder ejecutarlo.

    El lenguaje C es un lenguaje compilado

    El lenguaje Python es un lenguaje interpretado.

  • Compilados vs. Interpretados

    Esto significa que hay una diferencia en el modo en que se traducen ambos al lenguaje de la mquina (recuerden, unos y ceros, instrucciones, ISA) y en el modo en que ambos lenguajes se ejecutan

    Ventajas de la compilacin (lenguajes fuertemente compilados, como C):

    Ms rpida la ejecucin porque ya est en cdigo escrito en lenguaje mquina, y el procesador solo tiene que ejecutar.

    Mas eficiente el cdigo generado porque el compilador tiene mas tiempo para pensar y generar cdigo mas optimizado.

  • Compilados vs. Interpretados

    Ventajas de la interpretacin

    Menor el tiempo de desarrollo: escribo y veo si funciona inmediatamente.

    El programa fuente es portable entre distintos SO o mquinas.

    Desventaja de los compilados:

    los ejecutables NO son portables. Hay que volver a compilar si cambiamos de SO y de ISA.

  • C:\Users\Patricia\programas_c>gcc -o euler1 euler1.c C:\Users\Patricia\programas_c>dir Directorio de C:\Users\Patricia\programas_c 27/03/2011 11:47 a.m. . 27/03/2011 11:47 a.m. .. 25/03/2011 10:42 a.m. 236 euler1.c 27/03/2011 11:47 a.m. 25.126 euler1.exe C:\Users\Patricia\programas_c>euler1.exe El resultado es 233168 C:\Users\Patricia\programas_c>

    Comando para Compilar

    Programa ejecutable

    Programa fuente

    Comando para Ejecutar

    Compilacin

  • Interpretacin

    C:\Users\Patricia\programas_python>python Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> def euler1(): ... result = 0 ... for i in range(1,1000): ... if i % 3 == 0 or i % 5 == 0 : ... result = result + i ... print result ... >>> euler1() 233168 >>> euler1() 233168

    Invocacin al intrprete

    prompt de SO

    Sentencias del programa de usuario

    Invocacin de la funcin dentro del interprete

    prompt de python

  • Comenzamos a Programar: en C

    CodeBlocks , incluye el entorno para windows llamado MinGW que a su vez incluye al compilador gcc (de gnu)

    Si lo tenemos instalado , ejecutamos el primer programa hello word!

    (que ademas ya viene escrito)

    Escribimos, compilamos y ejecutamos hello.c

    Escribimos: con algn editor

    Compilamos: gcc o hello hello.c

    Ejecutamos ./hello

    (Tambin hay CodeBlocks bajo linux)

    Windows Linux

  • Comenzamos a Programar: en Python

    Python 2.7 incluye:

    Command line

    IDLE (entorno que permite editar y luego ejecutar)

    EasyEclipse for Python

    Entorno de desarrollo incluye Proyectos, Edicin y Ejecucin.

    Abrimos una consola e invocamos a Python

    Desde el prompt de python escribimos :

    Hello , world

    Windows Linux

  • Hello world, en C y en Python

    #include int main() { printf("Hello world!\n"); }

    Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print "hello world" hello world >>>

    C

    Python

  • Fin