Sunteți pe pagina 1din 36

Organización y Estructura

del Computador 1

Tema 1 – Un recorrido por los sistemas de


computación
Definiciones
• La organización y estructura del computador, se refiere a la
interconexión de las unidades funcionales que conforman un
sistema de computación y en la manera como ellas interactúan.

• Un sistema de computación está constituido de hardware y


software del sistema que cooperan para ejecutar programas de
aplicación.

• El corazón de estos sistemas es el computador y la


información dentro de él está representada comogrupos de bits
que son interpretados de maneras diversas, dependiendo del
contexto.
Definiciones

El software esta representado por los programas, que son


traducidos por otros programas en diversas formas, comenzando
como texto en código ASCII y luego siendo traducido por
compiladores y enlazadores en archivos binarios ejecutables.
La información es una combinación de
bits y contexto.
Ejemplo1: hello.c
1 #include <stdio.h>
2
3 int main()
4{
5 printf("hello, world\n");
6}
Definiciones
• Los archivos como hello.c que consisten exclusivamente de
caracteres ASCII son conocidos como archivos texto. Los demás
archivos son conocidos como archivos binarios.
• Toda la información en un sistema incluyendo archivos en
disco, programas almacenados en memoria, datos de usuario
almacenados en memoria y datos transferidos a través de una red
se representa como una agrupación de bits. La única cosa que
distingue diferentes objetos de datos es el contexto en el cual los
vemos.
Por ejemplo, en diferentes contextos, la misma secuencia de
bytes pueden representar un entero, un número en punto flotante,
una cadena de caracteres o una instrucción de máquina.
Los programas son traducidos por otros
programas

El programa hello comienza su vida como un programa de alto


nivel en C, ya que de esta manera puede ser leído y entendido por
los humanos. Sin embargo, para ejecutar hello.c sobre el sistema,
las declaraciones (statements) individuales en C deben ser
traducidas en una secuencia de instrucciones de bajo nivel en
lenguaje de máquina.
Estas instrucciones son entonces empaquetadas en una estructura
denominada un programa objeto ejecutable y almacenadas como
un archivo binario en disco.
Fases en la traducción de los programas

• Fase de compilación

• Fase de ensamblaje

• Fase de enlace
Fase de compilación
El compilador traduce el archivo texto de entrada al archivo
texto hello.s, el cual contiene un programa en lenguaje
ensamblador. Normalmente, cada declaración en un programa en
lenguaje ensamblador describe exactamente una instrucción en
lenguaje de máquina de bajo nivel en forma de archivo texto
estándar. El lenguaje ensamblador es útil porque permite un
lenguaje de salida común para diferentes compiladores para
diferentes lenguajes de programación de alto nivel. Por ejemplo,
los compiladores de C y Fortran generan archivos de salida en el
mismo lenguaje ensamblador.
Fase de ensamblaje
el ensamblador traduce hello.s en instrucciones de lenguaje de
máquina, empaquetándolas en una forma conocida como
programa objeto relocalizable, y almacena el resultado en el
archivo objeto hello.o. El archivo hello.o es un archivo binario
cuyos bytes tienen codificados las instrucciones en lenguaje de
máquina en vez de caracteres. SI quisiéramos visualizar hello.o
con un editor de texto, aparecería solo caracteres especiales.
Fase de enlace
El programa hello llama a la función printf, la cual es parte de la
librería estándar de C provista por cada compilador C. La
función printf reside en un archivo objeto precompilado aparte
llamado printf.o, el cual debe de alguna manera ser mezclado con
el programa hello.o. El enlazador (ld) se encarga de esta unión. El
resultado es el archivo hello, el cual es un archivo objeto
ejecutable (o simplemente un ejecutable) que está listo para ser
cargado en la memoria y ejecutado por el sistema.
Organización del Hardware
Organización del Hardware
Buses: Están distribuidos en todas las partes del sistema y son
una colección de conductos eléctricos que transportan los bytes
de información entre los otros componentes de hardware. Los
buses están diseñados típicamente para transferir pedazos de
bytes de tamaño fijo conocidos como palabras. El número de
bytes en una palabra (el tamaño de la palabra) es un parámetro
fundamental del sistema que varía a lo largo de diversos sistemas.
Por ejemplo, los sistemas Intel Pentium tienen un tamaño de
palabra de 4 bytes, es decir. Los sistemas de clase servidor tales
como los Intel Itanium y los Sun SPARCS de mayor nivel tienen
tamaños de palabra de 8 bytes.
Organización del Hardware

Dispositivos de E/S: son la conexión del sistema al mundo


exterior. Cada dispositivo de E/S está conectado al bus de E/S por
un controlador o por un adaptador. La distinción entre los dos es
principalmente una de empaquetado. Los controladores son
conjuntos de chip en el dispositivo mismo o en el tarjeta de
circuito impreso principal del sistema (a menudo llamado la
tarjeta base o la tarjeta madre). Un adaptador es una tarjeta que se
conecta a una ranura sobre la tarjeta madre. El propósito de cada
uno es transferir la información, hacia un lado y hacia otro entre
el bus de E/S y un dispositivo de E/S.
Organización del Hardware
Memoria Principal: La memoria principal es un dispositivo
de almacenamiento temporal donde se guarda un programa y los
datos que este manipula mientras el procesador está
ejecutando dicho programa. Físicamente, la memoria principal
está compuesta de una colección de chips de Memoria Dinámica
de Acceso Aleatorio (DRAM). Lógicamente, la memoria está
organizada como un arreglo lineal de bytes, cada uno de los
cuales posee una dirección única comenzando desde la dirección
cero. En general, cada una de las instrucciones de máquina que
constituyen un programa puede consistir de un número
variable de bytes. Los tamaños de los diversos datos que
corresponden a variables de programas en C varían de acuerdo a
su tipo. Por ejemplo, sobre una máquina Intel ejecutando Linux,
los datos de tipo short requieren dos bytes, los tipos int, float, y
long cuatro bytes y el tipo double requiere ocho bytes.
Organización del Hardware

Procesador: La Unidad Central de Procesamiento (CPU, por


sus siglas en inglés – Central Processing Unit), o simplemente
procesador, interpreta (o ejecuta) instrucciones almacenadas en la
memoria principal. En su núcleo está un dispositivo de
almacenamiento (o registro) del tamaño de una palabra
denominado el contador de programa (PC, por sus siglas en
inglés – program counter). En cualquier punto en el tiempo, el
PC contiene la dirección de alguna cierta instrucción en lenguaje
de máquina que está en la memoria principal.
Organización del Hardware

Procesador: Desde el momento en que el sistema es


encendido, hasta el momento en que el sistema es apagado, el
procesador realiza la misma tarea básica, una y otra vez: lee la
instrucción de memoria que está señalada por el contador de
programa (PC), interpreta los bits en la instrucción, realiza alguna
operación simple determinada por la instrucción, y entonces
actualiza el PC para señalar la siguiente instrucción, la cual puede
estar o no contigua en la memoria a la instrucción que acaba de
ser ejecutada.
Organización del Hardware

La unidad aritmético lógica (ALU, por sus siglas en inglés,


Arithmetic Logic Unit) realiza las operaciones lógicas y
aritméticas sobre los datos.

El conjunto de registros es un dispositivo pequeño de


almacenamiento que consiste de una colección de registros del
tamaño de una palabra, cada uno de los cuales posee un nombre
único.

El contador de Programa (PC, program counter) contiene la


dirección de la proxima instrucción en lenguaje de máquina
que está en la memoria principal.
Organización del Hardware
Operaciones simples que el CPU realiza:
• Cargar: Copiar un byte o una palabra desde la memoria principal en
un registro, sobrescribiendo el contenido previo del registro.
• Almacenar: Copiar un byte o una palabra desde un registro a una
posición en la memoria principal, sobrescribiendo el contenido previo
de dicha posición.
• Actualizar: Copiar el contenido de dos registros a la ALU, la cual
realiza una operación sobre las dos palabras y almacena el resultado en
un registro, sobrescribiendo el contenido de dicho registro.
• Lectura de E/S: Copiar un byte o una palabra desde un dispositivo de
E/S a un registro.
• Escritura en E/S: Copiar un byte o una palabra desde un registro a un
dispositivo de E/S
• Saltar: Extraer una palabra desde una instrucción y copiar dicha
palabra en el contador de programa (PC), sobrescribiendo el valor
anterior del PC.
Ejecutando el programa hello
Inicialmente, el programa shell está ejecutando sus instrucciones,
esperando por un comando. Cuando se escriben los caracteres
“./hello” en el teclado, el programa shell lee cada uno en un
registro, y luego lo almacena en la memoria.
Al presionar la tecla "enter" en el teclado, el shell sabe que hay
un nuevo comando.
El shell entonces carga el archivo ejecutable hello mediante la
ejecución de una secuencia de instrucciones que copian el código
y los datos contenidos en el archivo objeto hello desde el disco a
la memoria principal. Los datos incluyen la cadena de caracteres
“hello, world\n” que eventualmente será mostrada por pantalla.
Usando una técnica conocida como acceso directo a memoria
(DMA, por sus siglas en inglés – Direct Access Memory), los
datos viajan directamente del disco a la memoria principal, sin
pasar por el procesador.
Ejecutando el programa hello
Ejecutando el programa hello
Ejecutando el programa hello

Una vez que el código y los datos que están dentro del
archivo objeto hello han sido cargados en la memoria, el
procesador empieza a ejecutar las instrucciones en lenguaje
de máquina que se encuentran en la rutina principal (main)
del programa hello. Esta instrucción copia los bytes de la
cadena “hello, world\n” desde la memoria al conjunto de
registros, y desde allí al dispositivo de E/S, donde estos son
desplegados en la pantalla.
Ejecutando el programa hello
Jerarquía de memoria

Las restricciones de diseño de la memoria de un computador


se pueden resumir en tres características:

• Capacidad de almacenamiento
• Velocidad de acceso
• Costo por bit de almacenamiento.

Es por eso que no se cuenta con un solo componente de


memoria, y en consecuencia, los dispositivos de
almacenamiento en cada sistema informático son
organizados como una jerarquía de memoria
Jerarquía de memoria

Cache: Es un sistema especial de almacenamiento de alta


velocidad donde se guarda un conjunto de datos duplicados
de otros originales, con la propiedad de que los datos
originales son costosos de acceder, normalmente en tiempo,
respecto a la copia en el cache. Cuando se accede por
primera vez a un dato, se hace una copia en la memoria
cache; los accesos siguientes se realizan a dicha copia,
haciendo que el tiempo de acceso medio al dato sea menor.


Jerarquía de memoria
Jerarquía de memoria

A medida que nos movemos de la cima de la jerarquía a la


parte inferior, los dispositivos se hacen lentos, más grandes,
y menos costosos por byte.
El conjunto de registros ocupa el nivel superior de la
jerarquía, que se conoce como el nivel 0 (L0). La caché L1
ocupa el nivel 1 (de allí el término L1). La caché L2 ocupa
el nivel 2. La memoria principal ocupa el
nivel 3, y así sucesivamente.
Jerarquía de memoria
El Sistema Operativo
El sistema operativo, es el software que controla la
ejecución de los programas en el procesador y gestiona sus
recursos. Dentro de sus funciones se encuentran: la
planificación de procesos y tareas, y la gestión de memoria;
y sus objetivos son:

-Comodidad: el sistema operativo hace que un computador


sea más fácil y cómodo de usar.

- Eficiencia: El sistema operativo permite que los recursos


del computador se utilicen de forma eficiente.
El Sistema Operativo
Todos los intentos realizados por un programa de aplicación
para manipular el hardware deben pasar a través del sistema
operativo.

El sistema operativo se encarga de proteger el hardware de


un uso inadecuado por parte de aplicaciones fuera de
control, y proporcionar rutinas que posean mecanismos
simples y uniformes para la manipulación de complicados, y
a menudo muy diferentes, dispositivos hardware de bajo
nivel.
El Sistema Operativo
Procesos
Un proceso es un programa en ejecución, que lo controla el
sistema operativo, por tal motivo, cuando un programa tal
como hello se ejecuta sobre un sistema moderno, el sistema
operativo provee la ilusión que el programa es el único que se
está ejecutando en el sistema. Por tal motivo, da la impresión
como si tuviese uso exclusivo del procesador, la memoria
principal y los dispositivos de E/S. El procesador ejecuta las
instrucciones en el programa, una después de la otra, sin
interrupción. Y el código y los datos del programa se observan
como los únicos objetos en la memoria del sistema. Este
entorno descrito se representa mediante un proceso.
Procesos
Múltiples procesos pueden ejecutarse concurrentemente sobre
el mismo sistema y a cada proceso se le da la impresión de que
tiene el uso exclusivo del hardware. Por concurrente, se
entiende que las instrucciones de un proceso son intercaladas
con las instrucciones de otro proceso. El sistema operativo
realiza esta operación de intercalado con un mecanismo
conocido como intercambio de contexto.
Procesos
El sistema operativo hace un seguimiento de toda la
información de estado que el proceso necesita para ejecutarse.
Este estado, el cual se conoce también como el contexto,
incluye informaciones tales como los valores actuales del PC,
el conjunto de registros y el contenido de la memoria principal.
En cualquier instante de tiempo, sólo un proceso se está
ejecutando sobre el sistema. Cuando el sistema operativo
decide transferir el control desde el proceso actual a algún
nuevo proceso, este realiza un cambio de contexto guardando
el contexto del proceso actual, restaurando el contexto del
nuevo proceso y luego pasando el control al nuevo proceso. El
nuevo proceso reinicia exactamente donde había quedado.
Procesos
El sistema operativo hace un seguimiento de toda la
información de estado que el proceso necesita para ejecutarse.
Este estado, el cual se conoce también como el contexto,
incluye informaciones tales como los valores actuales del PC,
el conjunto de registros y el contenido de la memoria principal.
En cualquier instante de tiempo, sólo un proceso se está
ejecutando sobre el sistema. Cuando el sistema operativo
decide transferir el control desde el proceso actual a algún
nuevo proceso, este realiza un cambio de contexto guardando
el contexto del proceso actual, restaurando el contexto del
nuevo proceso y luego pasando el control al nuevo proceso. El
nuevo proceso reinicia exactamente donde había quedado.
Procesos

S-ar putea să vă placă și