Arquitectura de Computadores
Clasificación de los Buses
Los buses se clasifican en: serie, paralelo, multiplexados, dedicados, centralizados, distribuidos, síncronos y asíncronos. Dos buses serán compatibles si son eléctricamente idénticos.
Arquitectura Von Neumann
La arquitectura Von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones. La CPU está formada por:
- Unidad Aritmética Lógica (ALU): Realiza operaciones aritméticas y lógicas básicas.
- Unidad de Control (UC): Es la parte más compleja de la CPU. Su función consiste en buscar la instrucción en la memoria principal, interpretarla y ejecutarla generando una secuencia.
- Reloj: Cuanto más frecuente sea esta señal, más veloz será el procesador.
- Registro de Instrucción (IR): Procedente de la memoria, guarda la instrucción que se va a ejecutar.
- Contador de Programa (PC): Registro con la dirección de la siguiente instrucción a ejecutar.
- Registro de Estado (SR): Guarda información de la última operación realizada por la ALU.
Algoritmos y Tipos de Datos
Tipos de Algoritmos
- Cualitativos: Se describen los pasos utilizando palabras.
- Cuantitativos: Se describen con cálculos numéricos.
Tipos de Datos
- Simples: Numéricos, lógicos, alfanuméricos.
- Estructurados: Vectores, matrices, registros, archivos, apuntadores.
Expresiones
- Aritméticas: Realizan operaciones matemáticas con valores enteros o reales.
- Relacionales: >, >=, etc.
- Lógicos: NOT, AND, OR.
Operandos o Identificadores
- Constantes: Cualquier dato que no cambia.
- Variables: Numéricas, lógicas, alfanuméricas. Regla: Comienza con una letra, no contiene espacios en blanco, hasta 8 caracteres.
Diseño de Algoritmos
- Top-Down: Divide el problema en otros más sencillos, niveles de mayor a menor complejidad relacionados por entrada/salida de información.
- Bottom-Up: Se identifican los procesos que necesitan programarse conforme van apareciendo. Satisface el problema de inmediato.
Representación de Algoritmos
- Diagrama de Flujo: Representación gráfica de un algoritmo, símbolos unidos por líneas.
- Pseudocódigo: Mezcla de lenguaje de programación utilizado para el diseño de un programa. Usa palabras que indican el proceso a realizar.
- Diagrama de Nassi-Schneiderman o Chapin: Se omiten flechas de unión, resalta la estructura de los programas, varias acciones en una caja.
Estructuras Algorítmicas
- Secuenciales: Una acción sigue a otra, la salida de una es la entrada de la siguiente.
- Asignación: Paso de valores o resultados a una zona de la memoria.
- Simple: Pasa un valor constante a una variable.
- Contador: Variable como sumador.
- De Trabajo: Recibe el resultado de una operación con variables.
Manejo de Módulos
Un problema complejo se puede dividir en varios subproblemas (módulos) más sencillos. Un subprograma (procedimientos y funciones) recibe datos, ejecuta, genera resultados y devuelve el control al programa que lo llamó. Para ejecutar una función, hay que llamarla desde el algoritmo principal.
Conceptos Básicos de C
Identificadores
Constantes, variables, vectores, etc. Mejoran la legibilidad de un programa. Comienzan con una letra o subrayado. Longitud máxima: 31 caracteres (ANSI).
Palabras Reservadas
Representan una orden. Cada compilador puede incluir las suyas. No pueden ser nombres de identificador.
Tipos de Datos
- int: Números enteros sin decimales, con signo.
- char: Caracteres ASCII (equivalente a 8 bytes).
- float: (1 palabra, coma flotante; números con decimales).
- double: (2 palabras) Coma flotante doble precisión.
- void: Vacío (declara una función que no devuelve valor, crea punteros genéricos).
Modificadores de Tipos de Datos
short
, long
, signed
, unsigned
. Adaptan el tipo base a las necesidades del programador.
Conversiones de Tipo
Cuando en una expresión intervienen variables y constantes de tipos diferentes, los operandos de menor precisión se igualan a los de precisión más alta. De mayor a menor: double
, float
, long
, int
, short
, char
. En una asignación, el lado derecho se convierte al tipo del lado izquierdo.
Constantes
De carácter, de cadena de caracteres, numéricas, simbólicas.
Variables
- Declaración: Reserva espacio en memoria según el tipo de datos.
- Inicialización: Dar valor inicial en la declaración.
Expresiones
Operadores:
- Asignación: Asigna el valor de una expresión a un identificador (variable).
- Aritméticos: Representan operaciones matemáticas.
- Relacionales: Comparan valores, devuelven cierto o falso.
Precedencia de Operadores (de mayor a menor prioridad)
Monarios, binarios, relacionales, lógicos, asignación.
Sentencias
Indican una acción. Siempre acaban en ;
. Hay de tipo: simples, compuestas, de control y comentarios.
Estructura de un Programa en C
Archivos de Cabecera
#include
: Directiva para el acceso a librerías.
Entrada y Salida de Datos
int getchar()
: Lee un carácter desde el teclado, devuelve un entero.int putchar()
: Envía a pantalla el carácter almacenado en la variable.int scanf()
: Entrada de datos con formato.int printf()
: Salida de datos con formato.
Sentencias de Control
- Selección simple: Según el resultado de la evaluación de una expresión se ejecutará una sentencia u otra.
- Selección múltiple: El resultado de la evaluación de una expresión provoca la ejecución de sentencias distintas.
- Repetición con condición inicial: Ejecuta las sentencias entre llaves tantas veces como la expresión sea cierta.
getchar()
solo lee un carácter cada vez, espera a la siguiente llamada agetchar()
. El bucle se repetirá hasta llegar al carácter return (‘\n’). - Repetición con condición final: Efectua las sentencias entre llaves tantas veces como la expresión sea cierta. Se ejecutan al menos una vez.
- Repetición con contador: Se usa cuando la finalización del bucle depende del valor de una variable que se incrementa o decrementa en una cantidad fija.
Sistemas Operativos
Objetivos del Sistema Operativo
- Control: Gestionar y asignar los recursos necesarios que requieren los programas.
- Comodidad: Facilitar el uso de la máquina a los usuarios.
- Eficiencia: El SO debe administrar los recursos (hardware y software) para aprovecharlos.
En un computador, los programas en ejecución deben compartir los recursos hardware disponibles. El SO establece a quién, cuándo, cuánto tiempo y la cantidad de recurso que asigna.
Estructura del Sistema Operativo
- Núcleo: Sincroniza la activación de los procesos y define prioridades.
- Llamadas al sistema: Conjunto de servicios que el S.O ofrece a los procesos de usuario.
- Programas del sistema: Aplicaciones que se suministran con el S.O pero no forman parte de él.
Funciones del Sistema Operativo
Las más importantes:
- Gestión de procesos
- Gestión de memoria
- Sistema de ficheros
- Dispositivos de E/S y red
- Gestión de protección y seguridad
Gestión de Procesos
El SO es responsable de la creación y eliminación de procesos, detener y reanudar procesos, comunicación y sincronización de procesos.
Gestión de la Memoria
El SO es responsable de conocer qué partes de la memoria están siendo utilizadas y por quién, decidir qué procesos se cargarán en memoria cuando haya espacio disponible, asignar y reclamar espacio de memoria cuando sea necesario. La problemática es el aislamiento del proceso y la asignación de la memoria.
Gestión de Ficheros
El SO es responsable de la creación y eliminación de ficheros. La problemática es la organización del sistema de ficheros, la asignación de espacio en disco a la información, la gestión del espacio libre y ocupado en disco y la protección.
Gestión de Dispositivos de E/S
El SO es responsable de gestionar el uso de los dispositivos E/S, el almacenamiento temporal de la información E/S y servir las interrupciones a los dispositivos de E/S. Problemática: manejadores de dispositivos específicos a cada dispositivo.
Gestión de la Red
Gestionar a varios niveles las comunicaciones con el exterior: manejadores de tarjetas de red, protocolos de comunicación (TCP/IP), aplicaciones para uso de la red.
Protección y Seguridad
Mecanismo para permitir o denegar el acceso de un proceso a un determinado recurso. El SO es responsable de definir propietarios de recursos o niveles de protección, garantizar la seguridad y el registro de accesos. Las llamadas al sistema definen la interfaz entre un proceso y el sistema operativo. Se implementan como interrupciones software.