Unidad 1
Unidad 1
Unidad 1
30-8-2021
UNIDAD 1
INTRODUCCIÓN A LA
COMPUTACIÓN
Carrera: Ingeniería industrial.
Profesor: Miguel Ángel Vázquez Rivas.
Materia: Algoritmos y lenguajes de programación.
Horario: Lunes y miércoles (19:20 – 21:00).
Equipo 2.
Integrantes:
Franco Meza Natalia Abigail.
1
1.2.1.2.4 Objetivos de la programación………………………………….….….…50
1.2.1.2.5 Clasificación de los diferentes tipos de programación………….……52
1.2.1.2.6 Lenguajes de programación ……………………………………………55
1.2.1.3 Aplicación……………………………………………………………….………57
1.2.2 Hardware…………………………………………………………………………...66
1.2.2.1 CPU……………………………………………………………………………79
1.2.2.1.1 Historia del CPU…………………………………………………………80
1.2.2.1.1.1 CPU de transistores y circuitos integrados discretos……………82
1.2.2.1.1.2 Microprocesadores………………………………………….………83
1.2.2.1.2 Identificación y composición del CPU…………………………………85
1.2.2.1.3 Operación del CPU………………………………………………………86
1.2.2.1.4 Diseño e implementación…………………………………….…………89
1.2.2.5 Desempeño……………………………………………………..……………97
1.2.2.1.4 Función general de CPU……………………………….……….………98
1.2.2.2 Memoria principal…………………………………………………..…………99
1.2.2.2.1 Tipos……………………………………………………………………...100
1.2.2.3 Periféricos……………………………………………………………………102
1.2.2.3.1 Clasificación de los periféricos………………………………..….……102
1.2.2.3.2 Periféricos de entrada…………………………………………….……104
1.2.2.3.3 Periféricos de salida…………………………………………….………106
1.2.2.3.4 Periféricos de almacenamiento………………………………………109
1.2.2.3.5 Periféricos de comunicación…………………………………….……111
1.2.3 Firmware…………………………………………………………………………113
Conclusiones……………………………………………………………………………118
Bibliografía………………………………………………………………………………119
2
Introducción
3
Como ejemplo nos damos cuenta con esta pandemia lo necesario que son las
tecnologías de la información y comunicación, para entrar mas en contexto
pongamos como ejemplo el aprendizaje a distancia, esto demanda la dependencia
de estos sistemas y tecnologías.
El conocimiento sobre el desarrollo de estos sistemas y estas nuevas tecnologías
es verdaderamente amplio, existe demasiada información que están al alcance de
nosotros, abordaremos de manera precisa cada tema a profundidad sobre los
conceptos mas importantes que se distinguen sobre los sistemas computacionales
y como se han estado desarrollando a lo largo del tiempo.
4
1.1 Tecnologías de la información
¿Qué son las tecnologías de la información?
La tecnología de la información es un proceso que utiliza una combinación de
medios y métodos de recopilación, procesamiento y transmisión de datos para
obtener nueva información de calidad sobre el estado de un objeto, proceso o
fenómeno. El propósito de la tecnología de la información es la producción de
información para su análisis por las personas y la toma de decisiones sobre la
base de esta para realizar una acción.
La introducción de una
computadora personal en el ámbito
de la información y la aplicación de
los medios de comunicación de
telecomunicaciones han
determinado una nueva etapa en
el desarrollo de la tecnología de la
información. La TI moderna es una
tecnología de la información con
una interfaz de usuario "amigable"
que utiliza computadoras
personales e instalaciones de
telecomunicaciones. La nueva
tecnología de la información se
basa en los siguientes principios básicos.
1. Modo interactivo (diálogo) de trabajar con una computadora.
2. Integración con otros productos de software.
3. Flexibilidad en el proceso de cambio de datos y definiciones de tareas.
Como un conjunto de herramientas de tecnología de la información, se utilizan
muchos tipos de programas informáticos: procesadores de texto, sistemas de
publicación, hojas de cálculo, sistemas de gestión de bases de datos, calendarios
electrónicos, sistemas de información de propósito funcional.
Características de las tecnologías de la información:
• Operación del usuario en el modo de manipulación de datos (sin
programación). El usuario no debe saber y recordar, sino que debe ver
(dispositivos de salida) y actuar (dispositivos de entrada).
• Soporte de información transversal en todas las etapas de la transmisión de
información sobre el apoyo de una base de datos integrada, que
5
proporciona una forma única de introducir, buscar, mostrar, actualizar
y proteger la información.
• Procesamiento de documentos sin papel durante el cual sólo se registra la
versión final del documento en papel, las versiones intermedias y los datos
necesarios registrados en los medios se entregan al usuario a través de la
pantalla de visualización del PC.
• Modo de solución de tareas interactivo (de diálogo) con una amplia gama
de posibilidades para el usuario.
• Producción colectiva de un documento sobre la base de un grupo de
ordenadores unidos por medios de comunicación.
• Procesamiento adaptativo de la forma y los modos de presentación de la
información en el
proceso de resolución
de problemas.
Tipos de tecnologías
de la información
Los principales tipos de
tecnología de la
información incluyen
los siguientes.
• La tecnología de
la información para el
procesamiento de
datos está diseñada
para resolver
problemas bien
estructurados, cuyos
algoritmos de solución son bien conocidos y para los cuales existen todos
los datos de entrada necesarios. Esta tecnología se aplica al nivel de
rendimiento del personal de baja calificación con el fin de automatizar
algunas operaciones rutinarias y constantemente repetidas del trabajo
administrativo.
6
• La tecnología de información de gestión está destinada al servicio de
información de todos los empleados de las empresas, relacionado con la
aceptación de las decisiones administrativas. En este caso, la información
suele presentarse en forma de informes de gestión ordinarios o especiales
y contiene información sobre el pasado, el presente y el posible futuro de la
empresa.
• La tecnología de la información de la oficina automatizada está diseñada
para complementar el sistema de comunicación existente del personal de la
empresa. La automatización de la oficina asume la organización y el apoyo
de los procesos de comunicación tanto dentro de la empresa, como con el
entorno externo sobre la base de redes informáticas y otros medios
modernos de transferencia y trabajo con la información.
• La tecnología de la información para el soporte de decisiones está diseñada
para desarrollar una decisión de gestión que se produce como resultado de
un proceso iterativo en el que participan un sistema de soporte de
decisiones (un enlace informático y el objeto de la gestión) y una persona
(el enlace de gestión, que establece datos de entrada y evalúa el
resultado).
La tecnología de la información de los sistemas expertos se basa en el uso
de inteligencia artificial. Los sistemas expertos permiten a los gerentes recibir
asesoramiento experto sobre cualquier problema sobre el cual se haya acumulado
conocimiento en estos sistemas.
¿Qué alcance tiene el TI?
El campo de la tecnología de la información es muy amplio. Cubre áreas como:
• Soporte, administración y diseño de telecomunicaciones y sistemas
informáticos.
• Programadores de software.
• Informáticos y control de redes.
Se trata de habilidades que puedes aprender si cursas alguna licenciatura de las
referidas a este campo de las tecnologías, como una Ingeniería en Sistemas
Computacionales o Tecnología de la Información, ya que podrás aprender la teoría
y la técnica.
7
¿Qué sectores o
trabajos cubre un
profesional en TI?
Casi todos los trabajos
que realizan un
profesional en TI se
basan
fundamentalmente en
cuatro categorías:
• Informáticos.
• Ingenieros
informáticos.
• Analistas de
sistemas.
• Programadores informáticos.
¿Qué habilidades se debe tener?
Si te llama la atención el mundo de la informática y estás pensando estudiar una
carrera para especializarte en TI, debes tomar en cuenta algunas habilidades que
debes tener.
• Debes tener un pensamiento crítico y lógico.
• También debes tener destreza para mantener una buena comunicación y
disposición para ayudar a otros.
• Un punto que también te aportará valor es la creatividad. Un profesional en
TI debe estar constantemente mirando opciones a futuro para ayudar a
desarrollar soluciones a posibles problemas tecnológicos.
• Por lo general, los empleadores buscan personas con capacidad
estratégica, resolución de problemas, capacidad de análisis y, sobre todo,
tener una mente dispuesta al cambio.
8
1.2 Elementos de un sistema computacional.
Para entender cómo funciona un sistema operativo, es necesario conocer qué
lugar ocupa en un sistema informático y cuáles son sus elementos funcionales
básicos.
En primer lugar, hay que decir que el sistema operativo constituye una parte
importante en cualquier sistema informático. Un sistema informático consta ….
• El hardware (CPU, impresora y otros dispositivos periféricos)
El hardware es “el cuerpo” de la computadora y el software “el alma”. La unidad
central de procesamiento (CPU), monitor, teclado e impresora son los cuatro
componentes físicos más importantes de la computadora. El CPU es el “cerebro”
de la computadora.
El software:
Es el conjunto de programas que le dan vida al hardware, si no hay software,
entonces el hardware no funciona, la computadora en si no hace nada. No tiene
sentido usarlo porque no hay programas para trabajar para él.
El Software se puede clasificar en: Firmware, Sistemas Operativos y Aplicaciones.
• El sistema operativo
El sistema operativo es el primer programa que funciona cuando se pone en
marcha el ordenador y gestiona los procesos de ejecución de otros programas y
aplicaciones que funcionan sobre él, actuando como intermediario entre los
usuarios y el hardware, administra todos los recursos como discos, impresoras y
memorias.
• Las aplicaciones (programas que realizan tareas y actividades diversas:
procesadores, bases de datos, hojas de cálculo, juegos...)
Aplicaciones instaladas sobre gusto personar sobre los usuarios, para ayuda de
manera personalizada, ya sea para trabajo y entretenimiento
Son programas para tareas específicas tales como Word (para escribir textos),
Paint (para dibujar), Ares (para descargar música), Internet Explorer (para navegar
en Internet).
9
Los usuarios
10
Funcionamiento de un sistema operativo
El sistema operativo es el encargado de gestionar los recursos del hardware y
controlar las aplicaciones de forma que el usuario obtenga los mejores resultados
en su interacción con el ordenador. Eso es posible a través de los siguientes
elementos:
• La gestión de memoria: la memoria es uno de los recursos más importantes
de un ordenador ya que todas las aplicaciones o programas informáticos
requieren para su ejecución una gran capacidad de memoria. Los sistemas
operativos se encargan de administrar y gestionar la capacidad de la
memoria del ordenador mientras los programas se están ejecutando. “La
parte del sistema operativo que administra la memoria se llama
administrador de memoria y su labor consiste en llevar un registro de las
partes de memoria que se estén utilizando y aquellas que no, con el fin de
asignar espacio en memoria a los procesos cuando éstos la necesiten y
liberándola cuando terminen, así como administrar el intercambio entre la
memoria principal y el disco en los casos en los que la memoria principal no
le pueda dar capacidad a todos los procesos que tienen necesidad de ella”.
El sistema operativo debe además de disponer de varias opciones de
administración de la memoria para optimizar los resultados.
• El sistema de archivos: un sistema de archivos es un conjunto de carpetas
y directorios necesarios para almacenar, organizar, crear, manejar y
acceder a los datos. Los sistemas operativos disponen de su propio sistema
de archivos que son representados de forma gráfica o textual
mediante gestores de archivo. Estos facilitan el control de acceso a los
archivos y la ejecución de otras actividades como copiar, eliminar, crear,
mover, renombrar...
• La gestión de procesos: Los procesos son los programas en ejecución, que
requieren ser gestionados para que funcionen correctamente. Los sistemas
operativos disponen de módulos encargados de administrarlos para que se
ejecuten, basándose en la planificación y teniendo en cuenta la
concurrencia de procesos.
La gestión de los elementos de Entrada y Salida (los periféricos): Dispositivos de
entrada y salida son “cada una de las interfaces o abstracciones proporcionadas
por un sistema operativo, para permitir que las aplicaciones accedan y hagan uso
de los dispositivos hardware de entrada/salida. La funcionalidad disponible a
través de estas interfaces suele estar proporcionada por los sistemas operativos
se pueden clasificar atendiendo a:
11
• elemento del sistema operativo llamado controlador de dispositivo que
corresponda al dispositivo en cuestión”.
Sistema operativo
• Un sistema operativo es un conjunto de programas o software destinado a
permitir la comunicación del usuario con un ordenador y gestionar sus
recursos de manera cómoda y eficiente. Comienza a trabajar cuando se
enciende el ordenador, y gestiona el hardware de la máquina desde los
niveles más básicos.
• El sistema operativo es el primer programa que funciona cuando se pone
en marcha el ordenador, y gestiona los procesos de ejecución de otros
programas y aplicaciones, que funcionan sobre él, actuando como
intermediario entre los usuarios y el hardware. El sistema operativo
administra todos los recursos como discos, impresoras, memoria, monitor,
altavoces y demás dispositivos. Por ello, resulta imprescindible para el
funcionamiento del ordenador.
Clasificación de los sistemas operativos
• Administración de tareas.
monotarea: los que permiten sólo ejecutar un programa a la vez.
multitarea: los que permiten ejecutar varias tareas o programas al mismo tiempo
• Administración de usuarios.
monousuario: aquellos que sólo permiten trabajar a un usuario, como es el caso
de los ordenadores personales.
multiusuario: los que permiten que varios usuarios ejecuten sus programas a la
vez.
• Organización interna o estructura.
1. Monolítico.
2. Jerárquico.
3. Cliente-servidor.
• Manejo de recursos o acceso a servicios.
centralizados: si permite utilizar los recursos de un solo ordenador.
distribuidos: si permite utilizar los recursos (CPU, memoria, periféricos...) de más
de un ordenador al mismo tiempo.
12
1.2.1 Software
Software es un término informático que hace referencia a un programa o conjunto
de programas de cómputo, así como datos, procedimientos y pautas que permiten
realizar distintas tareas en un sistema informático.
Comúnmente se utiliza este término para referirse de una forma muy genérica a
los programas de un dispositivo informático, sin embargo, el software abarca todo
aquello que es intangible en un sistema computacional.
Software es un término procedente del idioma
inglés, que es aceptado por la RAE y que no
posee una traducción que se ajuste al español.
Se conoce como software, logicial o soporte
lógico al sistema formal de un sistema informático,
que comprende el conjunto de los componentes
lógicos necesarios que hacen posible la
realización de tareas específicas, en
contraposición a los componentes físicos que son llamados hardware. La
interacción entre el software y el hardware hace operativo un ordenador (u otro
dispositivo), es decir, el software envía instrucciones que el hardware ejecuta,
haciendo posible su funcionamiento.
Los componentes lógicos incluyen, entre muchos otros, las aplicaciones
informáticas, tales como el procesador de texto, que permite al usuario realizar
todas las tareas concernientes a la edición de textos; el llamado software de
sistema, tal como el sistema operativo, que básicamente permite al resto de los
programas funcionar adecuadamente, facilitando también la interacción entre los
componentes físicos y el resto de las aplicaciones, y proporcionando
una interfaz con el usuario.
El software, en su gran mayoría, está escrito en lenguajes de programación de alto
nivel, ya que son más fáciles y eficientes para que los programadores los usen,
porque son más cercanos al Lenguaje natural respecto del lenguaje de máquina.3
Los lenguajes de alto nivel se traducen a lenguaje de máquina utilizando
un compilador o un intérprete, o bien una combinación de ambos.
El software también puede estar escrito en lenguaje ensamblador, que es de bajo
nivel y tiene una alta correspondencia con las instrucciones de lenguaje máquina;
se traduce al lenguaje de la máquina utilizando un ensamblador.
El anglicismo software es el más ampliamente difundido al referirse a este
concepto, especialmente en la jerga técnica; en tanto que el término sinónimo
logicial, derivado del término francés logiciel, es utilizado mayormente en países y
zonas de influencia francesa.
13
Existen varias definiciones similares aceptadas para software, pero probablemente
la más formal sea la siguiente:
Es el conjunto de los programas de cómputo, procedimientos, reglas,
documentación y datos asociados, que forman parte de las operaciones de un
sistema de computación.
Considerando esta definición, el concepto de software va más allá de los
programas de computación en sus distintos estados: código
fuente, binario o ejecutable; también su documentación, los datos a procesar e
incluso la información de usuario forman parte del software: es decir, abarca todo
lo intangible, todo lo «no físico» relacionado.
El término software fue usado por primera vez en este sentido por John W.
Tukey en 1957. En la ingeniería de software y las ciencias de la computación,
el software es toda la información procesada por los sistemas informáticos:
programas y datos.
El concepto de leer diferentes
secuencias de instrucciones
(programa) desde la memoria de un
dispositivo para controlar los
cálculos fue introducido por Charles
Babbage como parte de su máquina
diferencial. La teoría que forma la
base de la mayor parte
del software moderno fue propuesta
por Alan Turing en su ensayo de
1936, “los números computables”, con una aplicación al problema de decisión.
14
software ha crecido de unos pocos visionarios que operaban en su garaje con sus
prototipos.
Steve Jobs y Bill Gates fueron los Henry Ford y Chevrolet Luis de sus tiempos. En
el caso del desarrollo de software, el despegue final es generalmente aceptado
que se produce con la publicación en la década de 1980 de las especificaciones
para el IBM Personal Computer. Hoy su movimiento sería visto como un tipo de
público sourcing.
Hasta ese momento, el software se incluye con el hardware de los fabricantes de
equipos originales (OEM), tales como Data General, Digital Equipment y de IBM.
Cuando un cliente compra una minicomputadora, esta incluye el software que es
instalado por los ingenieros empleados por el OEM. Las empresas de informática
de hardware no sólo incluyen sus paquetes de software, sino que también
asesoren sobre la ubicación de los equipos normalmente en un espacio
refrigerado llamo sala de ordenadores. La mayoría de las empresas tenían su
software en su contabilidad valorados 0 ya que no podían venderlo. Cuando Data
General introdujo su software Data General Nova, una compañía llamada Digidyne
intentó instalar este software que ya había adquirido en un equipo distinto. Data
Gerenal se negó a darle una licencia para poder hacerlo y fueron a los Tribunales.
La Corte Suprema dijo que si Digidyne había pagado era propietaria de ese
software debía poder instalarlo en el equipo que quisiese, lo que se llamó Digidyne
v. Poco después IBM publicó los registros de DOS y nació Microsoft. La decisión
de la Corte Suprema permitió valorar el software, patentarlo y comerciar con él. Es
difícil imaginar hoy que una vez la gente sentía que el software no valía nada sin
una máquina. Hay muchas empresas de éxito hoy en día que venden sólo
productos de software, aunque todavía hay muchos problemas comunes de
concesión de licencias de software debido a la complejidad de los diseños y
documentación, lo que lleva a los trolls de patentes.
Con las especificaciones de software de código abierto y la posibilidad de
concesión de licencias de software, nuevas oportunidades se levantaron de
herramientas de software que luego se convirtieron en el estándar de facto, como
DOS para los sistemas operativos, sino también diversos programas de
procesamiento de texto y hojas de cálculo. En un patrón de crecimiento similar, los
métodos de desarrollo de propiedad se convirtieron en la metodología estándar de
desarrollo de software.
15
1.2.1.2 Evolución del software.
El software es el soporte lógico que administra nuestras computadoras, el cual ha
surgido a partir de varias etapas y al igual que el hardware es fundamental para
que nuestros ordenadores funcionen correctamente con una estructura completa y
óptima para la solución de nuestros problemas tecnológicos. La ingeniería de
software es una disciplina que lleva más de cincuenta años evolucionando,
creando nuevas tendencias en programación y estilos de vida dedicados al estudio
de la tecnología.
La historia del software se ha dividido en cuatro etapas, de importante avance y
una quinta, que es la actual en la cual se ha reforzado muchos de los trabajos
anteriormente creados y con la aparición de la web se han repotenciado.
A continuación, explicaremos la evolución en el tiempo, del software dentro del
contexto tecnológico explicando los más importantes ingenios dentro del campo.
16
▪ Aparecieron algunos tipos de programación, como el lenguaje ensamblador
FORTRAN y COBOL el cual era orientado a negocios. Eran escritos en
Tarjetas Perforadas y posteriormente llevados a cuartos de entrada, esto
con la aparición de los transistores y sistemas de procesamiento por lotes
(Segunda generación de los Sistemas Operativos).
17
1.2.1.2.3 Tercera etapa (1975-1985)
▪ Procesamiento Distribuido. El cual permitía realizar trabajos en conjunto,
permitiendo interconectar computadores bajo funciones concurrentes.
▪ Debido a lo anterior incrementó notablemente la complejidad de los
sistemas informáticos.
▪ Redes de área local y de área global. Comunicaciones digitales de alto
ancho de banda y la creciente demanda de acceso “instantáneo” a los
datos.
▪ Aparecieron los microprocesadores.
▪ Amplio uso de microprocesadores y
computadoras personales (hardware de bajo
costo). Incorporación de “inteligencia” (autos,
hornos de microondas, robots industriales y
equipos de diagnóstico de suero sanguíneo),
los cuales fueron de alto impacto en el
mercado.
18
▪ EL software al igual que la red se vuelven parte fundamental en la
economía por el gran acceso de la población a la información y la
orientación a los negocios.
19
1.2.1.4 características de un software
• Corrección.
• Usabilidad.
• Seguridad.
• Flexibilidad.
• Portabilidad.
22
El prerrequisito para la portabilidad es la abstracción generalizada entre la
aplicación lógica y las interfaces del sistema. Cuando un software se puede
compilar en diversas plataformas (x86, IA64, amd64, etc.), se dice que este es
multiplataforma. Esta característica es importante para el desarrollo de reducción
de costos cuando se quiere hacer una misma aplicación.
23
compilar, interpretar, depurar, etc. Habitualmente cuentan con una
avanzada interfaz gráfica de usuario (GUI).
• Software de aplicación: Es aquel que permite a los usuarios llevar a cabo
una o varias tareas específicas, en cualquier campo de actividad
susceptible de ser automatizado o asistido, con especial énfasis en los
negocios. Incluye entre muchos otros:
o Aplicaciones para Control de sistemas y automatización industrial.
o Aplicaciones ofimáticas.
o Software educativo.
o Software empresarial.
o Bases de datos.
o Telecomunicaciones (por ejemplo, Internet y toda su estructura
lógica).
o Videojuegos.
o Software médico.
o Software de cálculo numérico y simbólico.
o Software de diseño asistido (CAD).
o Software de control numérico (CAM).
24
Considerando los de gran porte, es necesario realizar complejas tareas, tanto
técnicas como de gerencia, una fuerte gestión y análisis diversos (entre otras
cosas), la complejidad de ello ha llevado a que desarrolle una ingeniería específica
para tratar su estudio y realización: es conocida como ingeniería de Software.
25
aplican sus conocimientos especializados, pero utilizando modelos, paradigmas y
procesos ya elaborados.
Para cada una de las fases o etapas listadas en el ítem anterior, existen
subetapas (o tareas). El modelo de proceso o modelo de ciclo de vida utilizado
para el desarrollo, define el orden de las tareas o actividades involucradas, 13
también define la coordinación entre ellas, y su enlace y realimentación. Entre los
más conocidos se puede mencionar: modelo en cascada o secuencial, modelo
espiral, modelo iterativo incremental. De los antedichos hay a su vez algunas
variantes o alternativas, más o menos atractivas según sea la aplicación requerida
y sus requisitos.
26
• Modelo cascada.
El modelo en cascada puro «difícilmente se utiliza tal cual», pues esto implicaría
un previo y absoluto conocimiento de los requisitos, la no volatilidad de estos (o
rigidez) y etapas subsiguientes libres de errores; ello sólo podría ser aplicable a
escasos y pequeños sistemas a desarrollar. En estas circunstancias, el paso de
una etapa a otra de las mencionadas sería sin retorno, por ejemplo, pasar del
diseño a la codificación implicaría un diseño exacto y sin errores ni probable
modificación o evolución: codifique lo diseñado sin errores, no habrá en absoluto
variantes futuras. Esto es utópico; ya que intrínsecamente el software es de
carácter evolutivo, cambiante y difícilmente libre de errores, tanto durante su
desarrollo como durante su vida operativa.
27
entonces la aplicación de este con sus etapas realimentadas de alguna forma,
permitiendo retroceder de una a la anterior (e incluso poder saltar a varias
anteriores) si es requerido.
Lo dicho es, a grandes rasgos, la forma y utilización de este modelo, uno de los
más usados y populares. La modelo cascada realimentado resulta muy atractivo,
hasta ideal, si el proyecto presenta alta rigidez (pocos cambios, previsto no
evolutivo), los requisitos son muy claros y están correctamente especificados.
Hay más variantes similares al modelo: refino de etapas (más etapas, menores y
más específicas) o incluso mostrar menos etapas de las indicadas, aunque en tal
caso la faltante estará dentro de alguna otra. El orden de esas fases indicadas en
el ítem previo es el lógico y adecuado, pero adviértase, como se dijo, que
normalmente habrá realimentación hacia atrás.
28
• Modelos evolutivos.
El software evoluciona con el tiempo.
Los requisitos del usuario y del
producto suelen cambiar conforme se
desarrolla el mismo. Las fechas de
mercado y la competencia hacen que
no sea posible esperar a poner en el
mercado un producto absolutamente
completo, por lo que se aconseja
introducir una versión funcional
limitada de alguna forma para aliviar las presiones competitivas.
En esas u otras situaciones similares, los desarrolladores necesitan modelos
de progreso que estén diseñados para acomodarse a una evolución temporal o
progresiva, donde los requisitos centrales son conocidos de antemano, aunque
no estén bien definidos a nivel detalle.
En el modelo cascada y cascada realimentado no se tiene demasiado en
cuenta la naturaleza evolutiva del software, se plantea como estático, con
requisitos bien conocidos y definidos desde el inicio.
Los evolutivos son modelos iterativos, permiten desarrollar versiones cada vez
más completas y complejas, hasta llegar al objetivo final deseado; incluso
evolucionar más allá, durante la fase de operación.
Los modelos iterativo incremental y espiral (entre otros) son dos de los más
conocidos y utilizados del tipo evolutivo.
• Modelo iterativo incremental.
En términos generales, se puede distinguir, los pasos generales que sigue el
proceso de desarrollo de un producto software. En el modelo de ciclo de vida
seleccionado, se identifican claramente dichos pasos. La descripción del
sistema es esencial para especificar y confeccionar los distintos incrementos
hasta llegar al producto global y final. Las actividades concurrentes
(especificación, desarrollo y validación) sintetizan el desarrollo pormenorizado
de los incrementos, que se hará posteriormente.
29
.
31
observa una respuesta rápida en cuanto a entrega temprana; sin notar que
la fecha límite del proyecto puede no estar acotada ni tan definida, lo que
da margen de operación y alivia presiones al equipo de desarrollo.
Como se dijo, el iterativo incremental es un modelo del tipo evolutivo, es decir
donde se permiten y esperan probables cambios en los requisitos en tiempo de
desarrollo; se admite cierto margen para que el software pueda evolucionar.
Aplicable cuando los requisitos son medianamente bien conocidos, pero no son
completamente estáticos y definidos, la cuestión es que si es indispensable para
poder utilizar un modelo Cascada.
El modelo es aconsejable para el desarrollo de software en el cual se observe, en
su etapa inicial de análisis, que posee áreas bastante bien definidas a cubrir, con
suficiente independencia como para ser desarrolladas en etapas sucesivas. Tales
áreas para cubrir suelen tener distintos grados de apremio por lo cual las mismas
se deben priorizar en un análisis previo, es decir, definir cuál será la primera, la
segunda, y así sucesivamente; esto se conoce como definición de los incrementos
con base en la priorización. Pueden no existir prioridades funcionales por parte del
cliente, pero el desarrollador debe fijarlas de todos modos y con algún criterio, ya
que basándose en ellas se desarrollarán y entregarán los distintos incrementos.
El hecho de que existan incrementos funcionales del software lleva
inmediatamente a pensar en un esquema de desarrollo modular, por tanto, este
modelo facilita tal paradigma de diseño.
En resumen, un modelo incremental lleva a pensar en un desarrollo modular, con
entregas parciales del producto software denominados incrementos del sistema,
que son escogidos según prioridades predefinidas de algún modo. El modelo
permite una implementación con refinamientos sucesivos (ampliación o mejora).
Con cada incremento se agrega nueva funcionalidad o se cubren nuevos
requisitos o bien se mejora la versión previamente implementada del
producto software.
Este modelo brinda cierta flexibilidad
para que durante el desarrollo se
incluyan cambios en los requisitos por
parte del usuario, un cambio de
requisitos propuesto y aprobado puede
analizarse e implementarse como un
nuevo incremento o, eventualmente,
podrá constituir una mejora/adecuación
de uno ya planeado. Aunque si se
produce un cambio de requisitos por parte del cliente que afecte incrementos
previos ya terminados (detección/incorporación tardía) se debe evaluar la
factibilidad y realizar un acuerdo con el cliente, ya que puede impactar fuertemente
en los costos.
32
La selección de este modelo permite realizar entregas funcionales tempranas al
cliente (lo cual es beneficioso tanto para él como para el grupo de desarrollo). Se
priorizan las entregas de aquellos módulos o incrementos en que surja la
necesidad operativa de hacerlo, por ejemplo, para cargas previas de información,
indispensable para los incrementos siguientes.
El modelo iterativo incremental no obliga a especificar con precisión y detalle
absolutamente todo lo que el sistema debe hacer, (y cómo), antes de ser
construido (como el caso de la cascada, con requisitos congelados). Solo se hace
en el incremento en desarrollo. Esto torna más manejable el proceso y reduce el
impacto en los costos. Esto es así, porque en caso de alterar o rehacer los
requisitos, solo afecta una parte del sistema. Aunque, lógicamente, esta situación
se agrava si se presenta en estado avanzado, es decir en los últimos
incrementos. En definitiva, el modelo facilita la incorporación de nuevos requisitos
durante el desarrollo.
Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se
implementa funcionalidad parcial. También provee un impacto ventajoso frente al
cliente, que es la entrega temprana de partes operativas del software.
El modelo proporciona todas las ventajas del modelo en cascada realimentado,
reduciendo sus desventajas sólo al ámbito de cada incremento.
El modelo incremental no es recomendable para casos de sistemas de tiempo
real, de alto nivel de seguridad, de procesamiento distribuido, o de alto índice de
riesgos.
• Modelo espiral.
33
modelo original de Boehm, expuesto en su tratado de 1988; en 1998 expuso un
tratado más reciente.
Cada paso por la región de planificación provoca ajustes en el plan del proyecto; el
coste y planificación se realimentan en función de la evaluación del cliente. El
gestor de proyectos debe ajustar el número de iteraciones requeridas para
completar el desarrollo.
34
El modelo espiral puede ir adaptándose y aplicarse a lo largo de todo el Ciclo de
vida del software (en el modelo clásico, o cascada, el proceso termina a la entrega
del software).
Una visión alternativa del modelo puede observarse examinando el eje de punto
de entrada de proyectos. Cada uno de los circulitos fijados a lo largo del eje
representan puntos de arranque de los distintos proyectos (relacionados); a saber:
Este modelo requiere considerar riesgos técnicos en todas las etapas del
proyecto; aplicado adecuadamente debe reducirlos antes de que sean un
verdadero problema.
35
Desventajas importantes:
36
1.2.1.8 Etapas en el desarrollo del software
• Captura, análisis y especificación de requisitos.
Al inicio de un desarrollo (no de un proyecto), esta es la primera fase que se
realiza, y, según el modelo de proceso adoptado, puede casi terminar para pasar a
la próxima etapa (caso de Modelo Cascada Realimentado) o puede hacerse
parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de
carácter evolutivo).
En simples palabras y básicamente, durante esta fase, se adquieren, reúnen y
especifican las características funcionales y no funcionales que deberá cumplir el
futuro programa o sistema a desarrollar.
• Procesos, modelado y formas de elicitación de requisitos.
Siendo que la captura, elicitación y especificación de requisitos, es una parte
crucial en el proceso de desarrollo de software, ya que de esta etapa depende el
logro de los objetivos finales previstos, se han ideado modelos y diversas
metodologías de trabajo para estos fines. También existen
herramientas software que apoyan las tareas relativas realizadas por el ingeniero
en requisitos.
37
El diseño sigue siendo una fase separada de la programación o codificación, esta
última corresponde a la traducción en un determinado lenguaje de programación
de las premisas adoptadas en el diseño.
• Codificación del software.
Durante esta etapa se realizan las tareas que
comúnmente se conocen como programación;
que consiste, esencialmente, en llevar a código
fuente, en el lenguaje de programación elegido,
todo lo diseñado en la fase anterior. Esta tarea
la realiza el programador, siguiendo por
completo los lineamientos impuestos en el
diseño y en consideración siempre a los
requisitos funcionales y no funcionales (ERS)
especificados en la primera etapa.
• Pruebas (unitarias y de integración).
Entre las diversas pruebas que se le efectúan al software se pueden distinguir
principalmente:
➢ Pruebas unitarias: Consisten en probar o testear piezas de software
pequeñas; a nivel de secciones, procedimientos, funciones y módulos;
aquellas que tengan funcionalidades específicas. Dichas pruebas se utilizan
para asegurar el correcto funcionamiento de secciones de código, mucho
más reducidas que el conjunto, y que tienen funciones concretas con cierto
grado de independencia.
➢ Pruebas de integración: Se realizan una vez que las pruebas unitarias
fueron concluidas exitosamente; con éstas se intenta asegurar que el
sistema completo, incluso los subsistemas que componen las piezas
individuales grandes del software funcionen correctamente al operar en
conjunto.
• Instalación y paso a producción.
La instalación del software es el proceso por el cual los programas
desarrollados son transferidos apropiadamente al computador destino,
inicializados, y, eventualmente, configurados; todo ello con el propósito de ser
ya utilizados por el usuario final. Constituye la etapa final en el desarrollo
propiamente dicho del software. Luego de esta el producto entrará en la fase
de funcionamiento y producción, para el que fuera diseñado.
• Mantenimiento.
El mantenimiento de software es el proceso de control, mejora y optimización
del software ya desarrollado e instalado, que también incluye depuración de
errores y defectos que puedan haberse filtrado de la fase de pruebas de control y
beta test. Esta fase es la última (antes de iterar, según el modelo empleado) que
38
se aplica al ciclo de vida del desarrollo de software. La fase de mantenimiento es
la que viene después de que el software está operativo y en producción.
De un buen diseño y documentación del desarrollo dependerá cómo será la fase
de mantenimiento, tanto en costo temporal como monetario.
Modificaciones realizadas a un software que fue
elaborado con una documentación indebida o pobre
y mal diseño puede llegar a ser tanto o más costosa
que desarrollar el software desde el inicio. Por ello,
es de fundamental importancia respetar
debidamente todas las tareas de las fases del
desarrollo y mantener adecuada y completa la
documentación.
1.2.1.1 sistemas
Un sistema informático es un sistema que permite almacenar y
procesar información; es el conjunto de partes
interrelacionadas: hardware, software y personal informático.
El hardware incluye computadoras o cualquier tipo de dispositivo electrónico, que
consisten en procesadores, memoria, sistemas de almacenamiento externo, etc.
El software incluye al sistema operativo, firmware y aplicaciones, siendo
especialmente importante los sistemas de gestión de bases de datos. Por último,
el componente humano incluye al personal técnico que apoya y mantienen el
sistema (analistas, programadores, operarios, etc.) y a los usuarios que lo utilizan.
39
Los sistemas informáticos son tipos de sistemas de información, o sea, sistemas que se
organizan en torno al manejo de datos de diversa naturaleza, aunque no todos los
sistemas de información sean informáticos. Esto es, no todos son digitales, ni
automatizados, ni electrónicos.
40
1.2.1.3 Tipos de sistemas informáticos que existen
Hoy en día existen diferentes tipos de sistemas
informáticos, donde cada uno de ellos ejerce
una acción fundamental para lo que es el
funcionamiento de una máquina
electrónica. Teniendo en cuenta que sin ellos no
se podría realizar casi ninguna actividad.
Debido a todas las funciones que ellos realizan,
es importante que exista una clasificación según
el tipo y su función. Por lo tanto, aquí te vamos a
enseñar cómo se clasifican los SI que existen
actualmente:
• Sistema de apoyo a la toma de decisiones: Estos sistemas también son
conocidos como el soporte a la toma de decisiones o Decision Support
System o por sus siglas DSS.
El mismo ha sido diseñado para llevar a cabo lo que son los procesos de la toma
de decisiones, y el mismo puede ser usado por una gerencia para así resolver los
problemas y estar en la capacidad de escoger la opción más viable y
poder predecir cuales son los futuros escenarios y así estar preparados
para cualquier eventualidad:
• Sistema de colaboración empresarial: También conocidos como Enterprise
resource planning o por sus siglas ERP, son un sistema de colaboración
empresarial utilizado por la mayoría de las empresas de todo el mundo, ya
que les da la facilidad a las distintas compañías de poder gestionar toda la
información que circula dentro de la empresa.
41
Básicamente todos estos sistemas son
desarrollados para poder generar cualquier tipo
de información que sea capaz de satisfacer y
responder a los problemas del usuario. Es decir,
que los mismos pasan a ser una versión
simplificada donde se presentan todas las
operaciones que se realizan en la empresa:
• Sistema de procesamiento de
transacciones: Estos sistemas informáticos
están implementados para lo que es la
gestión de todo lo que se encuentra
relacionado con el nivel operacional de la
empresa. Se trata de un sistema que se
encarga de procesar las transacciones de un sistema que almacena y
procesa todas las transacciones realizadas durante el día y que son
fundamentales tener para el manejo adecuado de la empresa.
• Sistema de Información de Gestión: Estos SI son capaces de
poder gestionar y almacenar todos los datos de múltiples niveles con el
objetivo de poder crear una visión más clara al momento de la toma de
decisiones. Su especialidad es generar reportes los cuales facilitan la
información para gestión operativa y lo que es el control de todas las
actividades en el proceso de transacciones de la empresa.
• Sistema de control de procesos de negocio: Estos sistemas son los
encargados de poder monitorear, gestionar y controlar cualquier proceso de
industrialización que se lleve a cabo. Es en este tipo de sistema
informático donde se manejan los sensores electrónicos conectados a los
ordenadores para así poder establecer un monitoreo directo y a la misma
vez poder controlar todos los procesos de las maquinarias.
Los sistemas informáticos se emplean hoy en día en una enorme multiplicidad de
ámbitos. Por ejemplo, en el trabajo empresarial, tienen funciones contables como
administrativas. También son aliados de la investigación científica, para procesar
gran cantidad de datos.
En todos los ámbitos se utiliza para salvaguardar información confidencial o
personal. Por otro lado, también pueden distribuir la información a lo largo de
numerosos solicitantes y enviarla a través de sistemas de comunicación sobre
largas distancias.
El mundo global contemporáneo, en el que compramos en línea y generamos
tanta información, no podría existir sin vastas y complejas redes de sistemas
informáticos.
42
1.2.1.4 Comparación con un sistema
de información
Todos los sistemas informáticos son sistemas
de información, ya que lidian con datos
inscriptos en diversos lenguajes, pero no es
cierto lo contrario.
La gran diferencia allí es la presencia de
computadores, que brindan su potencia de procesamiento al sistema para que la
recuperación de información sea lo más veloz, precisa y masiva posible. No
obstante, existen sistemas de información en base en papel, la palabra escrita u
otros métodos.
43
1.2.1.7 Clasificación de los sistemas informáticos
Los sistemas informáticos pueden clasificarse con base a numerosos criterios. Las
clasificaciones no son estancas y es común encontrar sistemas híbridos que no
encajen en una única categoría.
Por su uso.
• Sistemas de uso específico. En sistemas complejos es frecuente tener
subsistemas que se encargan de tareas específicas como por ejemplo
el sistema de detección de intrusos o el sistema de monitorización.
• Sistemas de uso general.
Por el paralelismo de los procesadores.
• MIMD, Multiple Instruction Multiple Data.
• SIMD, Single Instruction Multiple Data.
• SISD, Single Instruction Single Data.
Por el tipo de computadora utilizado en el sistema.
• Estaciones de trabajo (workstations).
• Macrocomputadoras (servidores de gran capacidad).
• Minicomputadoras (por ejemplo, computadoras personales).
• Microcomputadoras (servidores pequeños).
• Supercomputadoras.
• Terminales ligeros (thin clients).
Por la arquitectura.
• Arquitectura cliente-servidor.
• Arquitectura de 3 capas.
• Arquitectura de 4 capas.
• Arquitectura de n capas.
• Monitor de teleproceso o servidor de transacciones.
• Servidor de aplicaciones.
• Sistema aislado.
44
1.2.1.2 programación
La programación es el proceso
utilizado para idear y ordenar las
acciones necesarias para realizar un
proyecto, preparar ciertas máquinas o
aparatos para que empiecen a
funcionar en el momento y en la forma
deseados o elaborar programas para
su empleo en computadoras.
En la actualidad, la noción de programación se encuentra muy asociada a la
creación de aplicaciones de informática y videojuegos. En este sentido, es el
proceso por el cual una persona desarrolla un programa, valiéndose de una
herramienta que le permita escribir el código (el cual puede estar en uno o varios
lenguajes, como C++, Java y Python, entre otros) y de otra que sea capaz de
“traducirlo” a lo que se conoce como lenguaje de máquina, que puede
"comprender" el microprocesador.
Programación es el proceso de tomar un algoritmo y codificarlo en una notación,
un lenguaje de programación, de modo que pueda ser ejecutado por una
computadora. Aunque existen muchos lenguajes de programación y muchos tipos
diferentes de computadoras, el primer paso es la necesidad de tener una solución.
Sin un algoritmo no puede haber un programa.
Las ciencias de la programación no son el estudio de la programación. La
programación, sin embargo, es una parte importante de lo que hace un científico
de la computación. La programación es a menudo la manera en la que creamos
una representación para nuestras soluciones. Por tanto, esta representación en un
lenguaje y el proceso de crearla se convierte en una parte fundamental de la
disciplina.
Los algoritmos describen la solución a un problema en términos de los datos
requeridos para representar el caso del problema y el conjunto de pasos
necesarios para producir el resultado pretendido. Los lenguajes de programación
deben suministrar un modo dotacional para representar tanto el proceso como los
datos. Para este fin, los lenguajes suministran estructuras de control y tipos de
datos.
Las estructuras de control permiten que los pasos algorítmicos sean
representados de una manera conveniente, pero sin ambigüedades. Como
mínimo, los algoritmos requieren estructuras que lleven a cabo procesamiento
secuencial, selección para toma de decisiones e iteraciones para control repetitivo.
Siempre y cuando el lenguaje proporcione estas instrucciones básicas, éste puede
ser usado para la representación del algoritmo.
45
Todos los ítems de datos en la computadora están representados como cadenas
de dígitos binarios. Con el fin de darle significado a estas cadenas, necesitamos
tener tipos de datos. Los tipos de datos brindan una interpretación para estos
datos binarios de modo que podamos considerarlos en términos que tengan
sentido con respecto al problema que está siendo resuelto. Estos tipos de datos
incorporados de bajo nivel (a menudo denominados tipos de datos primitivos)
proporcionan los bloques constructivos para el desarrollo de algoritmos.
Por ejemplo, la mayoría de los lenguajes de
programación proporcionan un tipo de datos
para los enteros. Las cadenas de dígitos
binarios en la memoria de la computadora
pueden interpretarse como enteros y se les dan
los significados típicos que comúnmente
asociamos con los enteros. Además, un tipo de
datos también proporciona una descripción de
las operaciones en las que los ítems de datos pueden participar. Con enteros, son
comunes las operaciones tales como la suma, la resta y la multiplicación.
Podemos dar por sentado que los tipos de datos numéricos puedan participar en
estas operaciones aritméticas.
La dificultad que a menudo nos surge es el hecho que los problemas y sus
soluciones son muy complejos. Estas estructuras y tipos de datos simples,
suministrados por el lenguaje, si bien son ciertamente suficientes para representar
soluciones complejas, están típicamente en desventaja a medida que trabajamos
en el proceso de solución de problemas. Requerimos maneras de controlar esta
complejidad y contribuir con la creación de soluciones.
46
Personaje Aporte
Gottfried Wilheml von Leibniz Máquinas de operaciones básicas
Máquina diferencial para el cálculo de
Charles Babbage
polinomios
Lady Ada Countess of Lovelace Almacenamiento en tarjetas perforadas
Creador de un sistema para automatizar la
Herman Hollerit
pesada tarea del censo
Máquina de Turing - una máquina capaz de
Alan Mathison Turing resolver problemas - Aportes de Lógica
Matemática - Computadora con tubos de vacío
Contribuyó al algebra binaria y a los sistemas
George Boole de circuitos de computadora (álgebra
booleana).
Primera computadora digital electrónica
John Vincent Atanasoff
patentada - Atanasoff Berry Computer (ABC)
En colaboración con IBM desarrolló el Mark 1,
una computadora electromecánica de 16
metros de largo y más de dos de alto que
Howard Aiken
podía realizar las cuatro operaciones básicas y
trabajar con información almacenada en forma
de tablas.
Junto a John Presper Eckert desarrolló una
computadora electrónica completamente
John W. Mauchly
operacional a gran escala llamada Electronic
Numerical Integrator And Computer (ENIAC).
Propuso guardar en memoria no solo la
Johann Ludwig Von Neumann información, sino también los programas,
acelerando los procesos.
47
1.2.1.2.2 Funcionamiento de un programa
Para crear un programa, y que la computadora lo interprete y ejecute, las
instrucciones deben escribirse en un lenguaje de programación. En sus comienzos
las computadoras interpretaban solo instrucciones en un lenguaje específico, del
más bajo nivel, conocido como código máquina, siendo éste excesivamente
complicado para programar. De hecho, solo consiste en cadenas de números 1 y
0 (sistema binario). Para facilitar el trabajo de programación, los primeros
científicos, que trabajaban en el área, decidieron reemplazar las instrucciones,
secuencias de unos y ceros, por mnemónicos, que son abreviaturas en inglés de
la función que cumple la instrucción; las codificaron y crearon así un lenguaje de
mayor nivel, que se conoce como Assembly o lenguaje ensamblador. Por ejemplo,
para sumar se podría usar la letra A de la palabra inglesa add (sumar). En
realidad, escribir en lenguaje ensamblador es básicamente lo mismo que hacerlo
en lenguaje máquina, pero las letras y palabras son bastante más fáciles de
recordar y entender que secuencias de números binarios. A medida que la
complejidad de las tareas que realizaban las computadoras aumentaba, se hizo
necesario disponer de un método más sencillo para programar. Entonces, se
crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como
multiplicar dos números puede necesitar un conjunto de instrucciones en lenguaje
ensamblador, en un lenguaje de alto nivel bastará con solo una. Una vez que se
termina de escribir un programa, sea en ensamblador o en algunos casos,
lenguajes de alto nivel, es necesario compilarlo, es decir, traducirlo completo a
lenguaje máquina.Eventualmente será necesaria otra fase denominada
comúnmente link o enlace, durante la cual se anexan al código, generado durante
la compilación, los recursos necesarios de alguna biblioteca. En algunos lenguajes
de programación, puede no ser requerido el proceso de compilación y enlace, ya
que se puede trabajar en modo intérprete. Esta modalidad de trabajo es
equivalente, pero se realiza instrucción por instrucción, se traduce a medida que
es ejecutado el programa.
48
1.2.1.2.3 Léxico y programación
La programación se rige por reglas y un
conjunto más o menos reducido de órdenes,
expresiones, instrucciones y comandos que
tienden a asemejarse a una lengua
natural acotada (en inglés); y que además tienen
la particularidad de una reducida ambigüedad.
Cuanto menos ambiguo es un lenguaje de
programación se dice que es más potente. Bajo
esta premisa, y en el extremo, el lenguaje más
potente existente es el binario, con ambigüedad
nula (lo cual lleva a pensar así del lenguaje
ensamblador).
En los lenguajes de programación de alto nivel se distinguen diversos elementos
entre los que se incluyen el léxico propio del lenguaje y las reglas semánticas y
sintácticas. Estos lenguajes tienen la particularidad de utilizar palabras del idioma
inglés dentro de su léxico, por lo que muchas de ellas tienen una función
específica dentro del lenguaje con el que se está trabajando y no se las puede
utilizar de manera diferente, son las denominadas palabras reservadas. Por otro
lado, otra particularidad de los lenguajes de programación de alto nivel y
sus herramientas de desarrollo es el permitir a los programadores el uso de
comentarios (frases o párrafos sin funcionalidad en el programa), a fin de que
otros programadores entiendan más fácilmente la funcionalidad del código creado.
49
• Claridad. Es muy importante que el programa sea lo más claro y legible
posible, para facilitar tanto su desarrollo como su posterior mantenimiento.
Al elaborar un programa se debe intentar que su estructura sea sencilla y
coherente, así como cuidar el estilo de programación. De esta forma se ve
facilitado el trabajo del programador, tanto en la fase de creación como en
las fases posteriores de corrección de errores, ampliaciones,
modificaciones, etc. Fases que pueden ser realizadas incluso por otro
programador, con lo cual la claridad es aún más necesaria para que otros
puedan continuar el trabajo fácilmente. Algunos programadores llegan
incluso a utilizar Arte ASCII para delimitar secciones de código; una práctica
común es realizar aclaraciones en el mismo código fuente utilizando líneas
de comentarios. Contrariamente, algunos programadores realizan acciones
que tienden a introducir confusión para impedir un análisis cómodo a otros
programadores, recurren al uso de código ofuscado,
• Eficiencia. Se trata de que el
programa, además de
realizar aquello para lo que
fue creado (es decir, que sea
correcto), lo haga
gestionando de la mejor
forma posible los recursos
que utiliza. Normalmente, al
hablar de eficiencia de un
programa, se suele hacer referencia al tiempo que tarda en realizar la tarea
para la que ha sido creado y a la cantidad de memoria que necesita, pero
hay otros recursos que también pueden ser de consideración para mejorar
la eficiencia de un programa, dependiendo de su naturaleza (espacio en
disco que utiliza, tráfico en la red que genera, etc.).
• Portabilidad. Un programa es portable cuando tiene la capacidad de poder
ejecutarse en una plataforma, ya sea hardware o software, diferente a
aquella en la que se desarrolló. La portabilidad es una característica muy
deseable para un programa, ya que permite, por ejemplo, a un programa
que se ha elaborado para el sistema GNU/Linux que también pueda
ejecutarse en la familia de sistemas operativos Windows.
Consecuentemente el programa puede llegar a más usuarios.
50
1.2.1.2.5 Clasificación de los diferentes tipos de programación
• Programación estructurada
La programación estructurada es un paradigma de programación orientado a
mejorar la claridad, calidad y tiempo de desarrollo de un programa de
computadora recurriendo únicamente a subrutinas y tres estructuras
básicas: secuencia, selección (if y switch) e iteración (bucles for y while);
asimismo, se considera innecesario y contraproducente el uso de la instrucción
de transferencia incondicional (GOTO), que podría conducir a código espagueti,
mucho más difícil de seguir y de mantener, y fuente de numerosos errores de
programación.
Surgió en la década de 1960, particularmente del trabajo de Böhm y Jacopini, y un
famoso escrito de 1968: La sentencia goto, considerada perjudicial, de Edsger
Dijkstra. Sus postulados se verían reforzados, a nivel teórico, por el teorema del
programa estructurado y, a nivel práctico, por la aparición de lenguajes
como ALGOL, dotado de estructuras de control consistentes y bien formadas.
• Programación modular
51
simples como para poder ser resueltos fácilmente con algún lenguaje de
programación. Esta técnica se llama refinamiento sucesivo, divide y vencerás o
análisis descendente (Top-Down).
Un 'módulo' es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos
módulos tiene una tarea bien definida y algunos necesitan de otros para poder
operar. En caso de que un módulo necesite de otro, puede comunicarse con este
mediante una interfaz de comunicación que también debe estar bien definida.
Si bien un módulo puede entenderse como una parte de un programa en
cualquiera de sus formas y variados contextos, en la práctica se los suele tomar
como sinónimos de procedimientos y funciones. Pero no necesaria ni
estrictamente un módulo es una función o un procedimiento, ya que el mismo
puede contener muchos de ellos. No debe confundirse el término "módulo" (en el
sentido de programación modular) con términos como "función" o "procedimiento",
propios del lenguaje que lo soporte.
52
• Programación dirigida por eventos
La programación dirigida por eventos es un paradigma de programación en el que
tanto la estructura como la ejecución de los programas van determinados por los
sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos
provoquen.
Para entender la programación
dirigida por eventos, podemos
oponerla a lo que no es: mientras en
la programación secuencial
(o estructurada) es el programador el
que define cuál va a ser el flujo del
programa, en la programación
dirigida por eventos será el propio
usuario o lo que sea que esté
accionando el programa el que dirija
el flujo del programa. Aunque en la programación secuencial puede haber
intervención de un agente externo al programa, estas intervenciones ocurrirán
cuando el programador lo haya determinado, y no en cualquier momento como
puede ser en el caso de la programación dirigida por eventos.
El creador de un programa dirigido por eventos debe definir los eventos que
manejarán su programa y las acciones que se realizarán al producirse cada uno
de ellos, lo que se conoce como el administrador de evento. Los eventos
soportados estarán determinados por el lenguaje de programación utilizado, por
el sistema operativo e incluso por eventos creados por el mismo programador.
En la programación dirigida por eventos, al comenzar la ejecución del programa se
llevarán a cabo las inicializaciones y demás código inicial y a continuación el
programa quedará bloqueado hasta que se produzca algún evento. Cuando
alguno de los eventos esperados por el programa tenga lugar, el programa pasará
a ejecutar el código del correspondiente administrador de evento. Por ejemplo, si
el evento consiste en que el usuario ha hecho clic en el botón de play de un
reproductor de películas, se ejecutará el código del administrador de evento, que
será el que haga que la película se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación Léxico y Visual
Basic, en los que a cada elemento del programa (objetos, controles, etcétera) se le
asignan una serie de eventos que generará dicho elemento, como la pulsación de
un botón del ratón sobre él o el redibujado del control. O en Javascript que asigna
manejadores de eventos a los que responder a eventos en una web en el caso del
navegador o a eventos producidos por objetos emisores en el caso de NodeJS.
53
La programación dirigida por eventos es la base de lo que llamamos interfaz de
usuario, aunque puede emplearse también para desarrollar interfaces entre
componentes de Software o módulos del núcleo.
En los primeros tiempos de la computación, los programas eran secuenciales,
también llamados Batch. Un programa secuencial arranca, lee parámetros de
entrada, procesa estos parámetros, y produce un resultado, todo de manera lineal
y sin intervención del usuario mientras se ejecuta.
Con la aparición y popularización de los PC, el software empezó a ser demandado
para usos alejados de los clásicos académicos y empresariales para los cuales
era necesitado hasta entonces, y quedó patente que el paradigma clásico de
programación no podía responder a las nuevas necesidades de interacción con el
usuario que surgieron a raíz de este hecho.
54
Mediante este lenguaje se comunican el programador y la máquina, permitiendo
especificar, de forma precisa, aspectos como:
• cuáles datos debe operar un software específico.
• cómo deben ser almacenados o transmitidos esos datos.
• las acciones que debe tomar el software dependiendo de las circunstancias
variables.
Para explicarlo mejor (en otras y con menos palabras), el lenguaje de
programación es un sistema estructurado de comunicación, el cual está
conformado por conjuntos de símbolos, palabras claves, reglas semánticas y
sintácticas que permiten el entendimiento entre un programador y una máquina.
Es importante recalcar que existe el error común de usar como sinónimos el
lenguaje de programación y el lenguaje informático, pero ¿por qué no debemos
confundirlos?
Pues, es debido a que el lenguaje de programación
obedece a un conjunto de reglas que permiten
expresar las instrucciones que serán interpretadas
por el programador. Y el lenguaje informático
comprende otros lenguajes que dan formato a un
texto, pero no son programación en sí mismos.
Entonces, no todos los lenguajes informáticos son de
programación, pero todos los lenguajes de
programación son a la vez informáticos.
55
1.2.1.3 Aplicación
¿Qué es el software de aplicación?
En informática, se entiende por software de aplicación, programas de
aplicaciones o en algunos casos aplicaciones, al conjunto de los programas
informáticos generalmente instalados en el sistema por el usuario, y diseñados
para llevar a cabo un objetivo determinado y concreto, de tipo lúdico, instrumental,
comunicativo, informativo, etc.
Dicho de otro modo: todos aquellos programas que no tienen que ver con el
funcionamiento del computador, sino que instalamos en él para darle funciones
determinadas como herramienta de trabajo (hoja de cálculo, procesador de
palabras, programas de diseño gráfico, etc.), de ocio (videojuegos, reproductores
de audio o video, etc.) o de información (enciclopedias digitales, navegador de
Internet, etc.), entre otras.
El software de aplicación normalmente es diseñado y comercializado aparte del
software de sistema que viene incorporado de fábrica al computador, y su
selección e instalación en el sistema es a total libre albedrío del usuario. No es, sin
embargo, imposible que muchos programas de este tipo vengan preinstalados –
debido a convenios empresariales y promociones específicas- en el disco rígido de
un computador recién comprado.
La tecnología ha avanzado considerablemente los últimos años, creando medios
que facilitan a las personas la posibilidad de resolver todo tipo de problemas por
medio del uso de computadoras y software. Por eso, cada día se crean y
actualizan nuevos softwares de aplicación con el fin de mejorar sus
funcionalidades y cumplir de manera más eficaz con sus funciones. Dicho esto, es
más que seguro que exista un software de aplicación programado para casi
cualquier cosa que se nos ocurra.
Funciones
56
Características de un software de aplicación
Independientes
Generalmente, un programa u aplicación posee independencia del software de
sistema y el sistema operativo. A pesar de que necesita de la existencia de ambos
para poder ser utilizado, un software de aplicación puede ser utilizado solamente
cuando el usuario lo necesita, por lo que puede ser desinstalado o simplemente no
usado cuando éste no es necesario.
Compatibilidad
Los softwares de aplicación son programados para ejecutarse en plataformas
concretas. A pesar de que la gran mayoría se encuentra adaptado para correr en
diferentes sistemas operativos, es necesario tomar en cuenta que no siempre son
compatibles con todos los existentes.
Enfoque
El enfoque u objetivo de un software de aplicación no es otro que permitir realizar
tareas concretas para el usuario. Para ello, las aplicaciones son programadas de
manera tal que el usuario pueda interactuar con las variables del programa.
Requisitos de hardware
Al igual que como ocurre con otros tipos de softwares, el software de
aplicación necesita ser respaldado por un soporte de hardware capaz de permitir
que se lleven a cabo todas las tareas que realiza el programa durante su
ejecución. En este sentido, los softwares de aplicación más exigentes necesitan
un mínimo de memoria RAM, un procesador de mayor o menor potencia y otros
elementos de hardware.
Adquisición
Una de las particularidades de este tipo de programas se basa en el acceso que
se puede tener a él. En este sentido, existen softwares de aplicación de licencia
libre que pueden ser adquiridos de forma gratuita, sin embargo, siempre existen
programas homólogos de pago que cumplen funciones similares. En muchos
casos, estos últimos cuentan con paquetes o funciones extras que pueden dar una
gran ventaja a los usuarios.
Instalación
Los softwares más complejos o que permiten realizar tareas particulares,
generalmente deben ser adquiridos, comprados o descargados, ya que éstos no
vienen preinstalados en un ordenador. Esto ocurre cuando se trata de programas
para llevar a cabo funciones muy específicas.
57
Tipos de software de aplicación
Suit de aplicaciones
Consiste en múltiples aplicaciones que se encuentran agrupadas. La intención de
una suit de aplicaciones es la de ofrecer un catálogo de programas con funciones
específicas. Sin embargo, cuando se observa de manera global, todos y cada uno
de los elementos que la compone se encuentra relacionado entre sí.
Software empresarial
Se refiere a cualquier software que aborde todas las necesidades que posea una
organización o empresa. Además de esto, también se encarga de organizar los
procesos y flujos de información de dicha organización. Este software
generalmente se encuentra dividido en varios departamentos.
Software departamental
Este software es un subtipo de software empresarial, se enfoca en pequeñas
empresas subdivididas en pequeñas organizaciones que conforman un solo
sistema.
58
Software de acceso de contenido
Permite a los usuarios ingresar a contenidos sin editar y editarlos, casi siempre
posee un software que admite la edición de esos contenidos.
Software educativo
Este software se encuentra relacionado con el software de acceso de contenido.
Es utilizado por estudiantes y profesores, y se enfoca en ofrecer herramientas
relacionadas a la pedagogía, el aprendizaje y la gestión de centros educativos
59
Ejemplos de softwares de aplicación
Debido a que se trata de los softwares más utilizados por los usuarios, existe una
infinidad de ejemplos de softwares de aplicación que pueden detallarse. A
continuación, enlistamos algunos:
Adobe Reader
Adobe Reader es un software de aplicación que permite a los usuarios visualizar y
editar archivos PDF. A pesar de ser un programa gratuito, el acceso a algunas de
sus funciones solo es permitido cuando se adquiere una licencia.
60
Adobe Ilustrator
Opera
Opera es una aplicación disponible para computadoras y dispositivos móviles,
teniendo en ambos casos la misma función. Opera funciona como un navegador
web que permite a los usuarios acceder a páginas web por medio de una
conexión de internet. Se trata de un software gratuito y uno de los navegadores
más populares de la actualidad.
61
Internet Download Manager
Internet Download Manager (IDM) es un software de aplicación que permite
gestionar la descarga de todo tipo de archivos alojados en los diferentes
servidores de internet. Debido a sus funciones, es un programa que
constantemente recibe nuevas actualizaciones que buscan mejorar la experiencia
del usuario.
Skype
Diseñado con el fin de brindar un medio de comunicación virtual a través de la red,
Skype es un software de aplicación perteneciente a Microsoft. Skype cuenta con
funciones que hacen posible realizar llamadas de voz, video llamadas y
comunicación por chat. Igualmente, su plataforma permite compartir archivos
multimedia.
VLC
También conocido como VLC Media Player, se trata de un software de
aplicación que funciona como reproductor multimedia. Es un software libre de
código abierto, por lo que además de permitir la reproducción de archivos de audio
o video en un gran número de formatos, ofrece la posibilidad de alterar sus
funciones para adecuarlas a las necesidades particulares de los usuarios.
62
FIFA 20
FIFA 20 es un software de aplicación enfocado al entretenimiento. En este sentido,
se trata de un videojuego desarrollado por EA Sports. FIFA 20 es un videojuego
que permite a los usuarios sumergirse en una experiencia de simulación
futbolística a través de partidos de balón pie que pueden disputarse contra una
inteligencia artificial u otros jugadores de forma local o por medio de una red.
Google Chrome
Google Chrome, al igual que Opera, es un navegador web desarrollado por
Google Inc. Su uso es gratuito y permite a los usuarios la posibilidad de acceder a
páginas webs por medio de una conexión a internet. Actualmente, Google Chrome
es uno de los líderes en cuanto a navegadores de internet, algo que se debe
principalmente a su velocidad, bajos requisitos de hardware y cómoda interfaz.
63
Ventajas y desventajas del software de aplicación
Ventajas
• La gran mayoría de softwares de aplicación son gratuitos, en cuanto a
los pagos, generalmente tienen un precio de adquisición bajo.
• Una vez que se adquiere y se instala un software de aplicación en un
ordenador, este puede ser ejecutado y utilizado las veces que el
usuario lo desee.
• Todos los softwares de aplicación permiten llevar a cabo tareas,
resolver problemas y en términos generales, facilitar la vida de los
usuarios.
• Las aplicaciones están diseñadas para mejorar la calidad de vida de
las personas y mejorar la experiencia de los usuarios.
• Muchos de los softwares de aplicación reciben actualizaciones
periódicas con el fin de resolver problemas mejorar su funcionabilidad.
• Los softwares de aplicación pueden ejecutarse en computadoras o
teléfonos, por lo que pueden ser de utilidad tanto en oficinas como en
la calle.
• Permite automatizar procesos, facilitar la gestión y obtener resultados
de manera eficaz, confiable y en menor tiempo.
Desventajas
• Los softwares de aplicación están desarrollados para sectores
concretos, por lo que es posible en muchas ocasiones que no se
pueda adquirir el producto en el idioma deseado o con las funciones
específicas que el usuario necesita.
64
• Los softwares de pago ofrecen un código único que no puede ser
reutilizado después de su instalación.
• El desarrollo de softwares de aplicación resulta muchas veces
complejo y costoso, por lo que no cualquier usuario ni programador
puede desarrollar uno.
• Los programas más exigentes requieren de un hardware capaz de
ejecutarlo, por eso, en algunos casos los ordenadores o dispositivos
móviles más antiguos no son compatibles.
• Algunos softwares de aplicación no son compatibles con ciertos
sistemas operativos o computadoras.
1.2.2 Hardware
Hardware es una palabra inglesa que hace referencia a las partes físicas tangibles
de un sistema informático, es decir, todo aquello que podemos tocar con las
manos. Dentro del hardware encontramos una gran variedad de componentes
eléctricos, electrónicos, electromecánicos y mecánicos. El hardware es el chasis
del ordenador, los cables, los ventiladores, los periféricos y todos los componentes
que se pueden encontrar en un dispositivo electrónico. La Real Academia
Española lo define como «Conjunto de los componentes que integran la parte
material de una computadora».
El término no solamente se aplica a los ordenadores, ya que es a menudo
utilizado en otras áreas de la vida diaria y la tecnología como robots, teléfonos
móviles, cámaras fotográficas, reproductores digitales o cualquier otro dispositivo
electrónico. El hardware representa un concepto contrario al Software, la parte
intangible de un sistema informático, es decir todo aquello que no podemos tocar
físicamente.
Una forma de clasificar el hardware es en dos categorías: el hardware principal,
que abarca el conjunto de componentes indispensables necesarios para otorgar la
funcionalidad mínima y, por otro lado, el hardware complementario, que es el
utilizado para realizar funciones específicas más allá de las básicas, no
estrictamente necesarias para el funcionamiento del sistema informático.
La historia del hardware de computador se puede clasificar en cuatro
generaciones, cada una caracterizada por un cambio tecnológico de gran
importancia.
65
• Primera generación (1945-1956): electrónica implementada con tubos de
vacío, que desplazaron los componentes electromecánicos (relés).
• Segunda generación (1957-1963): electrónica desarrollada
con transistores. La lógica discreta era muy parecida a la anterior, pero
con una implementación mucho más pequeña, reduciendo el tamaño de
un ordenador en gran medida.
• Tercera generación (1964-hoy): electrónica basada en circuitos
integrados, la cual permite integrar cientos de transistores y otros
componentes electrónicos en un único circuito integrado impreso en una
pastilla de silicio. Esto vuelve a suponer una notable reducción en el
coste, consumo y tamaño.
• Cuarta generación (futuro): se originará cuando los circuitos de silicio
sean reemplazados por un nuevo tipo de material o tecnología, las más
prometedoras son el grafeno y los procesadores cuánticos.
La historia del hardware comienza en el ya lejano año 1960, un momento que está
marcado por el paso de los tubos de vacío a los circuitos integrados basados en el
silicio, la misma tecnología que se sigue usando hoy en día. Este importante
cambio viene marcado por los transistores discretos, que empezaron a ser
suficientemente viables desde el punto de vista de la economía y la fiabilidad, por
lo que ya no había ninguna razón para seguir usando los tubos de vacío.
La memoria principal de los ordenadores vio una gran evolución con el paso de las
cintas magnéticas a los chips basados en transistores de silicio, este
movimiento permitió reducir de forma muy importante el consumo de energía, el
tamaño y el coste de fabricación de los equipos informáticos. Los años seguían
pasando y la tecnología de los circuitos integrados era cada vez más barata, lo
que hizo posible la aparición de los ordenadores personales. Un hardware más
pequeño y asequible, también provocó el desarrollo de importantes nuevos
sistemas operativos como Unix.
El primer circuito integrado se creó en 1958, aunque tuvieron que pasar algunos
años hasta que se empezaron a usar en los ordenadores. La NASA fue una de las
pioneras en el uso de esta tecnología, el Apollo Guidance Computer del programa
Apolo, y el misil balístico incontinentemente LGM-30 Minuteman fueron las
primeras creaciones de la agencia espacial en usar ordenadores con circuitos
integrados.
66
No fue hasta el 15 de noviembre de 1971, cuando Intel lanzó el primer
microprocesador comercial del mundo, el famoso Intel 4004. Este procesador fue
desarrollado para Busicom, una compañía japonesa de calculadoras, que buscaba
una alternativa al circuito cableado. Las grandes capacidades de este procesador
hicieron que fuera usado para el desarrollo de ordenadores. Este procesador
era capaz de ejecutar 60.000 instrucciones por segundo, un número que fue
aumentando en los futuros procesadores Intel 8008, 8080, 8086 y 8088. El Intel
4004 funcionaba acompañado de un chip de RAM de varios kilobits, basado en
una invención por Robert Dennard de IBM.
67
Los primeros ordenadores personales en comercializarse fueron el Altair 8800 y el
IMSAI 8080. Ambos equipos eran esencialmente minicomputadores reducidos e
incompletos, pues para conectar un teclado o un teletipo a ellos se requerían
accesorios pesados y costosos. Ambas máquinas ofrecían un panel delantero con
interruptores y luces, que se comunicaban con el usuario en binario.
Tipos de hardware
Una vez que tenemos claro el concepto de hardware, vamos a dar un repaso a los
componentes más importantes de un ordenador o un sistema informático, así
como sus características más importantes.
La Unidad Central de Procesamiento, más conocida por sus siglas en inglés CPU,
es el componente fundamental de un ordenador, pues se trata del encargado de
interpretar y ejecutar instrucciones y procesar datos. En el caso de que la CPU
sea manufacturada como un único circuito integrado se conoce como
microprocesador, abreviado comúnmente como procesador. Los ordenadores más
potentes, como los utilizados en la supercomputación, pueden tener multitud de
microprocesadores funcionando de forma conjunta, el conjunto de todos ellos
conforma la unidad central de procesamiento.
Las unidades centrales de procesamiento no sólo están presentes en los
ordenadores, sino que se incluyen en todo tipo de dispositivos que incorporan una
cierta capacidad de proceso, algunos ejemplos de ellos son los controladores de
procesos industriales, videoconsolas, televisores, automóviles, calculadoras,
aviones, teléfonos móviles, electrodomésticos, juguetes y muchos más. AMD e
Intel son los diseñadores de las CPUs para ordenadores, mientras que los
modelos utilizados en dispositivos móviles y de bajo consumo están diseñados por
68
multitud de compañías como Samsung, Qualcomm, Texas Instruments, MediaTek,
Nvidia e Intel.
El microprocesador se monta en la placa base sobre el zócalo de la CPU, que
permite las conexiones eléctricas entre los circuitos de la placa y el procesador.
Sobre el procesador se fija un disipador térmico que es indispensable en los
modelos que consumen mucha energía, la cual, en gran parte, es emitida en
forma de calor. También podemos encontrarnos con procesador soldados en la
propia placa base: Intel BGA. Esto es bastante habitual en consolas, portátiles
muy finos o en los mini PC de tamaño super reducido.
Placa base
La placa base, también conocida como placa madre, placa principal, motherboard
o mainboard es un gran circuito impreso sobre el que se conectan el resto de los
componentes de un ordenador. En la placa base se coloca el chipset, las ranuras
de expansión, el zócalo del procesador, los conectores, diversos circuitos
integrados y muchos otros elementos. Se trata del soporte fundamental que aloja y
comunica a todos los demás componentes, para ello posee una serie de buses
mediante los cuales se transmiten los datos hacia dentro y fuera del sistema.
La tendencia actual es integrar en la placa base el mayor número posible de
elementos encargados de las funciones básicas, como vídeo, audio, red y puertos
de varios tipos. Estas funciones antes se realizaban con tarjetas de expansión, las
cuales encarecían el precio final del ordenador. La integración ha ido incluso más
allá en los últimos años, moviendo muchos de estos elementos dentro del
procesador, algo que abarata aún más los costes de fabricación. En ese sentido
actualmente se encuentran los sistemas denominados System on a Chip (SoC)
que consiste en un único circuito integrado que consta de varios módulos
69
electrónicos en su interior, como un procesador, un controlador de memoria, una
GPU, tarjeta de sonido con resistencia a una alta impedancia o la conectividad Wi-
Fi y Bluetooth.
Hay que tener muy en cuenta varios factores a la hora de elegir una placa base:
Memoria RAM
70
Esta particularidad también se conoce como acceso directo, en contraposición al
acceso secuencial de otros tipos de memoria.
En la RAM se almacena temporalmente la información, datos y programas que la
CPU lee, procesa y ejecuta. Este tipo de memoria es volátil, lo que significa
que los datos almacenados se pierden al interrumpir su alimentación eléctrica. Es
decir, cuando apagamos o reiniciamos nuestro PC.
La memoria RAM de un ordenador se presenta en lo que se conoce
como módulos, los cuales albergan varios circuitos integrados de memoria
DRAM que, conjuntamente, conforman toda la memoria principal.
La memoria RAM más usada en la actualidad es la DDR4 SDRAM. Los módulos
tienen un total de 288 pines DIMM, cada uno de los cuales ofrece una velocidad
de datos que va de un mínimo de 1,6 GT/s hasta un objetivo máximo inicial de 3,2
GT/s. Las memorias DDR4 SDRAM tienen un mayor rendimiento y menor
consumo que las memorias DDR3 predecesoras.
Las memorias DDR4 se presentan en dos formatos diferentes:
71
velocidad dentro de una caja metálica sellada. Sobre cada una de las caras de
cada plato se sitúa un cabezal de lectura y escritura que se mantiene en
suspensión sobre una delgada lámina de aire generada por la rotación de los
platos.
El primer disco duro fue inventado por IBM en 1956, desde entonces ha
multiplicado su capacidad y se han hecho más compactos. En la actualidad,
podemos encontrar modelos de 3,5 pulgadas y 2,5 pulgadas, siendo los primeros
usados principalmente en PCs de escritorio y servidores, y los segundos en
portátiles. Todos los discos duros se comunican con el PC mediante una interfaz
estandarizada, la más común hasta los años 2000 fue IDE en el entorno
doméstico y SCSI en servidores y estaciones de trabajo. Desde el 2000 en
adelante ha ido masificándose el uso de la interfaz SATA.
• SSD SATA: El clásico y más económico del mercado. Nos ofrece tasas
de lectura y escritura sobre 500 MB/s. Con estos modelos podremos
acelerar muchísimo el arranque del sistema operativo y aplicaciones de
nuestro ordenador.
• SSD M.2 NVMe: Esta ranura nos permite conectar SSD ultra rápidos con
una velocidad desde los 2000 MB/s hasta los 2800 MB/s tanto en
escritura como lectura. Son los más veloces y los que nos ayudarán a
mejorar el rendimiento en aplicaciones de alto rendimiento. Ojo, preparad
una refrigeración adicional para bajar sus altas temperaturas.
• SSD M.2 SATA: También hay SSD más económicos para la conexión
M.2. Se encuentran a la par en precio de los SSD SATA y su rendimiento
es prácticamente igual. Vienen muy bien para bolsillos ajustados o
MiniPC estilo Intel NUC.
• PCI Express: Antes del lanzamiento de los dispositivos NVME eran
bastante comunes. En fechas actuales son raros de ver, es más fácil ver
alguna unidad Intel Optane de gama alta con esta interfaz.
• MSATA: Se incorporaba en algunas placas base de gama media / alta
hace unos años, pero actualmente solo lo podremos encontrar en algun
portátil de línea empresarial. Su rendimiento es muy parecido a los SSD
SATA.
Fuente de alimentación
73
(CC), que alimentan los distintos circuitos del aparato electrónico al que se
conecta. Las fuentes de alimentación se usan en todo tipo de dispositivos
electrónicos, ya que generalmente todos ellos necesitan corriente continua para
funcionar, y las redes eléctricas de nuestras casas solo ofrecen corriente alterna.
Este es uno de los componentes más importantes de nuestro PC, ya que es el
encargado de alimentar el resto de las componentes, una fuente de alimentación
de baja calidad nos va a dar muchos problemas casi seguro, por ello es muy
recomendable optar por un modelo de buena calidad.
Algunos de los puntos más importantes a la hora de elegir una fuente de
alimentación son:
74
Tarjeta de sonido
75
Tarjeta gráfica
Una tarjeta gráfica o tarjeta de vídeo es una tarjeta de expansión que se encarga
de procesar los datos provenientes de la CPU y transformarlos en información
representable en el dispositivo de salida, por ejemplo: monitor, televisor o
proyector. Al igual que ocurre con la tarjeta de sonido, la tarjeta gráfica también
puede estar integrada en la placa base o incluso en el procesador.
Una tarjeta gráfica está formada por varios elementos que trabajan de forma
conjunta para hacer su trabajo:
76
tarjeta gráfica integrada que incorpora algunos procesadores (Intel HD o
las APU de AMD), que adquieren su memoria del uso compartido de la
RAM.
• RAMDAC: se encarga de transformar las señales digitales producidas en
la tarjeta gráfica en una señal analógica que sea interpretable por el
monitor. Dada la creciente popularidad de los monitores de señal digital,
el RAMDAC se está quedando obsoleto, puesto que no es necesaria la
conversión.
A su vez, la GPU está formada por varios elementos:
77
1.2.2.1CPU
78
1.2.2.1.1 Historia del CPU
Las primeras computadoras, como el ENIAC,
tenían que ser físicamente recableados para
realizar diferentes tareas, lo que hizo que
estas máquinas se denominaran
"computadoras de programa fijo". Dado que el
término "CPU" generalmente se define como
un dispositivo para la ejecución de software
(programa informático), los primeros
dispositivos que con razón podríamos llamar
CPU vinieron con el advenimiento de la
computadora de programa almacenado.
La idea de una computadora con programa
almacenado ya estaba presente en el diseño
de John Presper Eckert y en el ENIAC de John William Mauchly, pero esta
característica se omitió inicialmente para que el aparato pudiera estar listo antes.
El 30 de junio de 1945, antes de que se construyera la ENIAC, el matemático John
Von Neumann distribuyó el trabajo titulado First Draft of a Report on the EDVAC
(Primer Borrador de un Reporte sobre el EDVAC). Fue el esbozo de una
computadora de programa almacenado, que se terminó en agosto de 1949.
EDVAC fue diseñado para realizar un cierto número de instrucciones (u
operaciones) de varios tipos. Significativamente, los programas escritos para el
EDVAC se crearon para ser almacenados en la memoria de alta velocidad de la
computadora y no para que los especificara el cableado físico de la computadora.
Esto superó una severa limitación del ENIAC, que era el importante tiempo y
esfuerzo requerido para volver a configurar el equipo para realizar una nueva
tarea. Con el diseño de Von Neumann, el programa o software que corría EDVAC
podría ser cambiado simplemente cambiando el contenido de la memoria. Sin
embargo, EDVAC no fue la primera computadora de programa almacenado, la
Máquina Experimental de Pequeña Escala de Mánchester, un pequeño prototipo
de computadora de programa almacenado ejecutó su primer programa el 21 de
junio de 1948. Su sucesora, la Manchester Mark I, ejecutó su primer programa en
la noche del 16 al 17 de junio de 1949.
Las primeras CPU fueron diseñadas a medida como parte de una computadora
más grande, generalmente una computadora única en su especie. Sin embargo,
este método de diseñar las CPU a medida, para una aplicación particular, ha
desaparecido en gran parte y se ha sustituido por el desarrollo de clases de
procesadores baratos y estandarizados adaptados para uno o varios propósitos.
Esta tendencia de estandarización comenzó generalmente en la era de los
transistores discretos, computadoras centrales y microcomputadoras y fue
acelerada rápidamente con la popularización del circuito integrado (IC), este ha
79
permitido que sean diseñados y fabricados CPU más complejas en espacios
pequeños en la orden de nanómetros. Tanto la miniaturización como la
estandarización de las CPU han aumentado la presencia de estos dispositivos
digitales en la vida moderna mucho más allá de las aplicaciones limitadas de
máquinas de computación dedicadas. Los microprocesadores modernos aparecen
en todo, desde automóviles hasta teléfonos móviles o celulares y juguetes de
niños.
Si bien Von Neumann muchas veces acreditado por el diseño de la computadora
con programa almacenado debido a su diseño del EDVAC, otros antes que él,
como Konrad Zuse, habían sugerido y aplicado ideas similares. La denominada
arquitectura Harvard del Harvard Mark I, que se completó antes de EDVAC,
también utilizó un diseño de programa almacenado usando cinta de papel
perforada en vez de memoria electrónica. La diferencia clave entre las
arquitecturas de Von Neumann y la de Harvard es que la última separa dentro del
almacenamiento el tratamiento de instrucciones de la CPU y los datos, mientras
que el primero utiliza el mismo espacio de memoria para ambos. La mayoría de
los CPU modernos son de diseño Von Neumann, pero los CPU con arquitectura
Harvard se ven, sobre todo en aplicaciones embebidas; por ejemplo, los
microcontroladores Atmel AVR son procesadores de arquitectura Harvard.
Los relés eléctricos y los tubos de vacío (válvulas termoiónicas) eran usados
comúnmente como elementos de conmutación; una computadora útil requiere
miles o decenas de miles de dispositivos de conmutación. La velocidad global de
un sistema depende de la velocidad de los conmutadores. Las computadoras de
tubo, como el EDVAC, tendieron en tener un promedio de ocho horas entre fallos,
mientras que las computadoras de relés, (anteriores y más lentos), como el
Harvard Mark I, fallaban muy raramente. Al final, los CPU basados en tubo
llegaron a ser dominantes porque las significativas ventajas de velocidad
producidas generalmente pesaban más que los problemas de confiabilidad. La
mayor parte de estas tempranas CPU síncronas corrían en frecuencias de reloj
bajas comparadas con los modernos diseños microelectrónicos. Eran muy
comunes en este tiempo las frecuencias de la señal del reloj con un rango desde
100 kHz hasta 4 MHz, limitado en gran parte por la velocidad de los dispositivos
de conmutación con los que fueron construidos.
80
1.2.2.1.1.1 CPU de transistores y de circuitos integrados discretos
La complejidad del diseño de las CPU
aumentó junto con la facilidad de la
construcción de dispositivos
electrónicos más pequeños y
confiables. La primera de esas
mejoras vino con el advenimiento del
transistor. Las CPU transistorizadas
durante los años 1950 y los años 1960
no tuvieron que ser construidos con
elementos de conmutación abultados,
no fiables y frágiles, como los tubos de
vacío y los relés eléctricos. Con esta
mejora, fueron construidas CPU más
complejas y confiables sobre una o
varias tarjetas de circuito impreso que contenían componentes discretos
(individuales).
Durante este período, ganó popularidad un método de fabricar muchos
transistores en un espacio compacto. El circuito integrado (IC) permitió que una
gran cantidad de transistores fueran fabricados en una simple oblea basada en
semiconductor o "chip". Al principio, solamente circuitos digitales muy básicos, no
especializados, como las puertas NOR fueron miniaturizados en IC. Las CPU
basadas en estos IC de "bloques de construcción" generalmente son referidos
como dispositivos de pequeña escala de integración "small-scale integration"
(SSI). Los circuitos integrados SSI, como los usados en el computador guía del
Apoyo (Apollo Guidance Computer), usualmente contenían transistores que se
contaban en números de múltiplos de diez. Construir un CPU completo usando IC
SSI requería miles de chips individuales, pero todavía consumía mucho menos
espacio y energía que diseños anteriores de transistores discretos. A medida que
la tecnología microelectrónica avanzó, en los IC fue colocado un número creciente
de transistores, disminuyendo así la cantidad de IC individuales necesarios para
una CPU completa. Los circuitos integrados MSI y el LSI (de mediana y gran
escala de integración) aumentaron el número de transistores a cientos y luego a
miles.
En 1964, IBM introdujo su arquitectura de computador System/360, que fue usada
en una serie de computadoras que podían ejecutar los mismos programas con
velocidades y desempeños diferentes. Esto fue significativo en un tiempo en que
la mayoría de las computadoras electrónicos eran incompatibles entre sí, incluso
las hechas por el mismo fabricante. Para facilitar esta mejora, IBM utilizó el
concepto de microprograma, a menudo llamado «microcódigo», ampliamente
usado aún en las CPU modernas. La arquitectura System/360 era tan popular que
81
dominó el mercado del mainframe durante las siguientes décadas y dejó una
herencia que todavía aún perdura en las computadoras modernas, como el IBM
zSeries. En el mismo año de 1964, Digital Equipment Corporation (DEC) introdujo
otra computadora que sería muy influyente, dirigida a los mercados científicos y de
investigación, el PDP-8. DEC introduciría más adelante la muy popular línea del
PDP-11, que originalmente fue construido con IC SSI, pero eventualmente fue
implementado con componentes LSI cuando se convirtieron en prácticos. En
fuerte contraste con sus precursores hechos con tecnología SSI y MSI, la primera
implementación LSI del PDP-11 contenía una CPU integrada únicamente por
cuatro circuitos integrados LSI.
Las computadoras basadas en transistores tenían varias ventajas frente a sus
predecesores. Aparte de facilitar una creciente fiabilidad y un menor consumo de
energía, los transistores también permitían que CPU operara a velocidades mucho
más altas debido al corto tiempo de conmutación de un transistor en comparación
a un tubo o relé. Gracias tanto a esta creciente fiabilidad como al dramático
incremento de velocidad de los elementos de conmutación que por este tiempo
eran casi exclusivamente transistores, se fueron alcanzando frecuencias de reloj
de la CPU de decenas de megahercios.
Además, mientras que las CPU de
transistores discretos y circuitos integrados
se usaban comúnmente, comenzaron a
aparecer los nuevos diseños de alto
rendimiento como procesadores vectoriales
SIMD (single instruction multiple data –
instrucción única, datos múltiples). Estos
primeros diseños experimentales dieron
lugar más adelante a la era de las
supercomputadoras especializadas, como
las hechas por Cray Inc.
1.2.2.1.1.2 Microprocesadores.
En la década de 1970 los inventos fundamentales de Federico Faggin (ICs Silicon
Gate MOS con puertas autoalineadas junto con su nueva metodología de diseño
de lógica aleatoria) cambió el diseño e implementación de las CPU para siempre.
Desde la introducción del primer microprocesador comercialmente disponible, el
Intel 4004, en 1970 y del primer microprocesador ampliamente usado, el Intel
8080, en 1974, esta clase de CPU ha desplazado casi totalmente el resto de los
métodos de implementación de la Unidad Central de procesamiento. Los
fabricantes de mainframes y minicomputadoras de ese tiempo lanzaron programas
de desarrollo de IC propietarios para actualizar sus arquitecturas de computadoras
más viejas y eventualmente producir microprocesadores con conjuntos de
instrucciones que eran retro compatibles con sus hardwares y softwares más
82
viejos. Combinado con el advenimiento y
el eventual vasto éxito de la ahora ubicua
computadora personal, el término "CPU"
es aplicado ahora casi exclusivamente a
los microprocesadores.
Las generaciones previas de CPU fueron
implementadas como componentes
discretos y numerosos circuitos
integrados de pequeña escala de
integración en una o más tarjetas de
circuitos. Por otro lado, los
microprocesadores son CPU fabricados
con un número muy pequeño de IC; usualmente solo uno. El tamaño más
pequeño del CPU, como resultado de estar implementado en una simple pastilla,
significa tiempos de conmutación más rápidos debido a factores físicos como el
decrecimiento de la capacitancia parásita de las puertas. Esto ha permitido que los
microprocesadores síncronos tengan tiempos de reloj con un rango de decenas de
megahercios a varios gigahercios. Adicionalmente, como ha aumentado la
capacidad de construir transistores excesivamente pequeños en un IC, la
complejidad y el número de transistores en un simple CPU también se ha
incrementado dramáticamente. Esta tendencia ampliamente observada es descrita
por la ley de Moore, que ha demostrado hasta la fecha, ser una predicción
bastante exacta del crecimiento de la complejidad de los CPUs y otros IC.
Mientras que, en los pasados sesenta años han cambiado drásticamente, la
complejidad, el tamaño, la construcción y la forma general de la CPU, es notable
que el diseño y el funcionamiento básico no ha cambiado demasiado. Casi todos
los CPU comunes de hoy se pueden describir con precisión como máquinas de
programa almacenado de von Neumann. A medida que la ya mencionada ley del
Moore continúa manteniéndose verdadera, se han presentado preocupaciones
sobre los límites de la tecnología de transistor del circuito integrado. La
miniaturización extrema de puertas electrónicas está causando los efectos de
fenómenos que se vuelven mucho más significativos, como el electro migración y
el sub-umbral de pérdida. Estas nuevas preocupaciones están entre los muchos
factores que hacen a investigadores estudiar nuevos métodos de computación
como la computación cuántica, así como ampliar el uso de paralelismo y otros
métodos que extienden la utilidad del modelo clásico de Von Neumann.
83
1.2.2.1.2 Identificación y composición del CPU.
La CPU suele ser pequeña, con forma cuadrada, y tiene conectores y pines
metálicos. Por lo general, suele estar instalada en la placa base de un ordenador,
en un zócalo especial que puede estar en diferentes sitios dependiendo de la
placa base. El procesador no va soldado a la placa, por lo que puedes cambiar la
CPU de un ordenador por otra si quieres.
La CPU tiene un mínimo de un procesador o núcleo en su interior, un chip para
realizar los cálculos y operaciones. Al principio todos tenían sólo uno, pero con el
tiempo las CPU han ido aumentando el número de estos núcleos, y hay diferentes
maneras de llamarles dependiendo de este número.
Por ejemplo, si alguna vez has escuchado que un procesador es Dual-Core o de
doble núcleo, es porque tiene dos de estos chips en su interior. Luego
evolucionaron a cuatro, los Quad-Core, y se han ido aumentando con seis, ocho o
incluso 12 núcleos o más. Todos ellos se identifican por ese nombre que incluye la
palabra Core, pero antes se le pone una referencia al número de núcleos.
Que la CPU tenga varios procesadores o núcleos suele implicar que es capaz de
realizar más operaciones a la vez, por lo que su funcionamiento puede ser más
rápido y mejor. Sin embargo, esto no siempre quiere decir que cuantos más
núcleos haya más rápido será todo, ya que esto es algo que también depende de
cómo sean cada uno de los núcleos.
Por ejemplo, algunos procesadores de Intel y AMD, los dos principales fabricantes,
tienen tecnologías que les permiten ejecutar dos hilos de ejecución en un único
núcleo, que son las secuencias de instrucciones pertenecientes al sistema
operativo o aplicación. Los hilos de ejecución, o threads en inglés, son las
secuencias de instrucciones pertenecientes al sistema operativo o una aplicación.
¿Y esto qué quiere decir? Pues que en los procesadores que tengan esta
tecnología, cada núcleo físico puede actuar como si fuera dos núcleos virtuales, ya
que cada uno puede trabajar con dos hilos o secuencias de instrucciones
diferentes.
Y luego está la frecuencia del procesador,
que se marca en gigahercios. La
frecuencia, también llamada el reloj, es la
que marca el ritmo con el que trabaja el
procesador. Un hercio es una acción que
se repite una vez por segundo, y así
subiendo, hasta el Gigahercio, que son
1.000.000.000 de acciones por segundo.
84
El ritmo de trabajo de un procesador viene marcado por la capacidad de realizar
cuantas más acciones por segundo mejor, ya que cada operación de una
aplicación puede requerir varios ciclos de reloj o acciones.
En definitiva, ya no sólo importa el número de procesadores, sino cómo trabaja
cada uno. Cuantos más GHz tenga un procesador más rápido será. Esto,
simplificándolo al máximo, significa que, si tienes un procesador de cuatro núcleos
a 1 GHz, este será más lento que un procesador de dos núcleos a 2,5 GHz.
85
Fetch
El primer paso, leer,
implica el recuperar una
instrucción, (que es
representada por un
número o una secuencia
de números), de la
memoria de programa. La
localización en la memoria
del programa es
determinada por un
contador de programa
(PC), que almacena un número que identifica la dirección de la siguiente
instrucción que se debe buscar. Después se lee una instrucción, el PC es
incrementado por la longitud de la instrucción en términos de unidades de
memoria de modo que contendrá la dirección de la siguiente instrucción en la
secuencia. Frecuentemente, la instrucción a ser leída debe ser recuperada de
memoria relativamente lenta, haciendo detener al CPU mientras espera que la
instrucción sea devuelta.
Decode
En el paso de decodificación, la instrucción es dividida en partes que tienen
significado para otras unidades de la CPU. La manera en que el valor de la
instrucción numérica es interpretado está definida por la arquitectura del conjunto
de instrucciones (el ISA) de la CPU. A menudo, un grupo de números en la
instrucción, llamados opcode, indica qué operación realizar. Las partes restantes
del número usualmente proporcionan información requerida para esa instrucción,
como, por ejemplo, operandos para una operación de adición. Tales operandos se
pueden dar como un valor constante (llamado valor inmediato), o como un lugar
para localizar un valor, que, según lo determinado por algún modo de dirección,
puede ser un registro o una dirección de memoria. En diseños más viejos las
unidades del CPU responsables de decodificar la instrucción eran dispositivos de
hardware fijos. Sin embargo, en CPUs e ISAs más abstractos y complicados, es
frecuentemente usado un microprograma para ayudar a traducir instrucciones en
varias señales de configuración para el CPU. Este microprograma es a veces
reescribible de tal manera que puede ser modificado para cambiar la manera en
que el CPU decodifica instrucciones incluso después de que haya sido fabricado.
86
Execute
Después de los pasos de lectura y decodificación, es llevado a cabo el paso de la
ejecución de la instrucción. Durante este paso, varias unidades del CPU son
conectadas de tal manera que ellas pueden realizar la operación deseada. Si, por
ejemplo, una operación de adición fue solicitada, una unidad aritmeticológica
(ALU) será conectada a un conjunto de entradas y un conjunto de salidas. Las
entradas proporcionan los números a ser sumados, y las salidas contendrán la
suma final. La ALU contiene la circuitería para realizar operaciones simples de
aritmética y lógica en las entradas, como adición y operaciones de bits (bitwise). Si
la operación de adición produce un resultado demasiado grande para poder ser
manejado por el CPU, también puede ser ajustada una bandera (flag) de
desbordamiento aritmético localizada en un registro de banderas (ver abajo la
sección sobre rango de números enteros).
Writeback
El paso final, la escritura, simplemente «escribe» los resultados del paso de
ejecución a una cierta forma de memoria. Muy a menudo, los resultados son
escritos a algún registro interno del CPU para acceso rápido por subsecuentes
instrucciones. En otros casos los resultados pueden ser escritos a una memoria
principal más lenta pero más barata y grande. Algunos tipos de instrucciones
manipulan el contador de programa en lugar de directamente producir datos de
resultado. Estas son llamadas generalmente "saltos" (jumps) y facilitan
comportamientos como bucles, la ejecución condicional de programas (con el uso
de saltos condicionales), y funciones en programas. Muchas instrucciones también
cambiarán el estado de dígitos en un registro de "banderas". Estas banderas
pueden ser usadas para influenciar cómo se comporta un programa, puesto que a
menudo indican el resultado de varias operaciones. Por ejemplo, un tipo de
instrucción de "comparación" considera dos valores y fija un número, en el registro
de banderas, de acuerdo con cuál es el mayor. Entonces, esta bandera puede ser
usada por una posterior instrucción de salto para determinar el flujo de programa.
Después de la ejecución de la instrucción y la escritura de los datos resultantes, el
proceso entero se repite con el siguiente ciclo de instrucción, normalmente
leyendo la siguiente instrucción en secuencia debido al valor incrementado en el
contador de programa. Si la instrucción completada era un salto, el contador de
programa será modificado para contener la dirección de la instrucción a la cual se
saltó, y la ejecución del programa continúa normalmente. En CPUs más complejos
que el descrito aquí, múltiples instrucciones pueden ser leídas, decodificadas, y
ejecutadas simultáneamente. Esta sección describe lo que es referido
generalmente como el "entubado RISC clásico" (Classic RISC pipeline), que de
hecho es bastante común entre los CPU simples usados en muchos dispositivos
electrónicos, a menudo llamados microcontroladores.
87
1.2.2.1.4 Diseño e implementación
Rango de Enteros
La manera en que un CPU representa
los números es una opción de diseño
que afecta las más básicas formas en
que el dispositivo funciona. Algunas de
las primeras calculadoras digitales
usaron, para representar números
internamente, un modelo eléctrico del
sistema de numeración decimal
común (base diez). Algunas otras
computadoras han usado sistemas de
numeración más exóticos como el
ternario (base tres). Casi todos los
CPU modernos representan los números en forma binaria, en donde cada dígito
es representado por una cierta cantidad física de dos valores, como un voltaje
"alto" o "bajo".
Con la representación numérica están relacionados el tamaño y la precisión de los
números que un CPU puede representar. En el caso de un CPU binario, un bit se
refiere a una posición significativa en los números con que trabaja un CPU. El
número de bits (o de posiciones numéricas, o dígitos) que un CPU usa para
representar los números, a menudo se llama "tamaño de la palabra", "ancho de
bits", "ancho de ruta de datos", o "precisión del número entero" cuando se ocupa
estrictamente de números enteros (en oposición a números de coma flotante).
Este número difiere entre las arquitecturas, y a menudo dentro de diferentes
unidades del mismo CPU. Por ejemplo, un CPU de 8 bits maneja un rango de
números que pueden ser representados por ocho dígitos binarios, cada dígito
teniendo dos valores posibles, y en combinación los 8 bits teniendo 28 o 256
números discretos. En efecto, el tamaño del número entero fija un límite de
hardware en el rango de números enteros que el software corre y que el CPU
puede usar directamente.
El rango del número entero también puede afectar el número de posiciones en
memoria que el CPU puede direccionar (localizar). Por ejemplo, si un CPU binario
utiliza 32 bits para representar una dirección de memoria, y cada dirección de
memoria representa a un octeto (8 bits), la cantidad máxima de memoria que el
CPU puede direccionar es 232 octetos, o 4 GB. Esta es una vista muy simple del
espacio de dirección del CPU, y muchos diseños modernos usan métodos de
dirección mucho más complejos como paginación para localizar más memoria que
su rango entero permitiría con un espacio de dirección plano.
88
Niveles más altos del rango de
números enteros requieren más
estructuras para manejar los dígitos
adicionales, y, por lo tanto, más
complejidad, tamaño, uso de energía, y
generalmente costo. Por ello, no es del
todo infrecuente, ver
microcontroladores de 4 y 8 bits usados
en aplicaciones modernas, aun cuando
están disponibles CPU con un rango
mucho más alto (de 16, 32, 64, e incluso 128 bits). Los microcontroladores más
simples son generalmente más baratos, usan menos energía, y por lo tanto
disipan menos calor. Todo esto pueden ser consideraciones de diseño importantes
para los dispositivos electrónicos. Sin embargo, en aplicaciones del extremo alto,
los beneficios producidos por el rango adicional, (más a menudo el espacio de
dirección adicional), son más significativos y con frecuencia afectan las opciones
del diseño. Para ganar algunas de las ventajas proporcionadas por las longitudes
de bits tanto más bajas, como más altas, muchas CPUs están diseñadas con
anchos de bit diferentes para diferentes unidades del dispositivo. Por ejemplo, el
IBM System/370 usó un CPU que fue sobre todo de 32 bits, pero usó precisión de
128 bits dentro de sus unidades de coma flotante para facilitar mayor exactitud y
rango de números de coma flotante. Muchos diseños posteriores de CPU usan
una mezcla de ancho de bits similar, especialmente cuando el procesador está
diseñado para usos de propósito general donde se requiere un razonable equilibrio
entre la capacidad de números enteros y de coma flotante.
Frecuencia de reloj
La mayoría de los CPU, y, de hecho, la mayoría de los dispositivos de lógica
secuencial, son de naturaleza síncrona. Es decir, están diseñados y operan en
función de una señal de sincronización. Esta señal, conocida como señal de reloj,
usualmente toma la forma de una onda cuadrada periódica. Calculando el tiempo
máximo en que las señales eléctricas pueden moverse en las varias bifurcaciones
de los muchos circuitos de un CPU, los diseñadores pueden seleccionar un
período apropiado para la señal del reloj.
Este período debe ser más largo que la cantidad de tiempo que toma a una señal
moverse, o propagarse en el peor de los casos. Al fijar el período del reloj a un
valor bastante mayor sobre el retardo de la propagación del peor caso, es posible
diseñar todo el CPU y la manera que mueve los datos alrededor de los "bordes"
de la subida y bajada de la señal del reloj. Esto tiene la ventaja de simplificar el
CPU significativamente, tanto en una perspectiva de diseño, como en una
perspectiva de cantidad de componentes. Sin embargo, esto también tiene la
desventaja que todo el CPU debe esperar por sus elementos más lentos, aun
cuando algunas unidades de esta son mucho más rápidas. Esta limitación ha sido
89
compensada en gran parte por varios métodos de aumentar el paralelismo del
CPU.
Sin embargo, las mejoras arquitectónicas por sí solas, no solucionan todas las
desventajas de CPUs globalmente síncronas. Por ejemplo, una señal de reloj está
sujeta a los retardos de cualquier otra señal eléctrica. Velocidades de reloj más
altas en CPUs cada vez más complejas hacen más difícil de mantener la señal del
reloj en fase (sincronizada) a través de toda la unidad. Esto ha conducido que
muchos CPU modernos requieran que se les proporcione múltiples señales de
reloj idénticas, para evitar retardar una sola señal lo suficiente como para hacer al
CPU funcionar incorrectamente. Otro importante problema cuando la velocidad del
reloj aumenta dramáticamente, es la cantidad de calor que es disipado por el CPU.
La señal del reloj cambia constantemente, provocando la conmutación de muchos
componentes (cambio de estado) sin importar si están siendo usados en ese
momento. En general, un componente que está cambiando de estado, usa más
energía que un elemento en un estado estático. Por lo tanto, a medida que la
velocidad del reloj aumenta, así lo hace también la disipación de calor, causando
que el CPU requiera soluciones de enfriamiento más efectivas.
Un método de tratar la conmutación de componentes innecesarios se llama el
clock gating, que implica apagar la señal del reloj a los componentes innecesarios,
efectivamente desactivándolos. Sin embargo, esto es frecuentemente considerado
como difícil de implementar y por lo tanto no ve uso común fuera de diseños de
muy baja potencia. Un notable diseño de CPU tardío que utiliza una amplia
compuerta del reloj para reducir los requisitos de potencia de la consola de
videojuegos es la de la Xbox 360 basada en la PowerPC de IBM. Otro método de
tratar algunos de los problemas de una señal global de reloj es la completa
remoción de esta. Mientras que quitar la señal global del reloj hace, de muchas
maneras, considerablemente más complejo el proceso del diseño, en comparación
con diseños síncronos similares, los diseños asincrónicos (o sin reloj) tienen
marcadas ventajas en el consumo de energía y la disipación de calor. Aunque se
trate de algo infrecuente, las CPUs completas se han construido sin utilizar una
señal global de reloj. Dos notables ejemplos de esto son el AMULET, que
implementa la arquitectura del ARM, y el MiniMIPS, compatible con el MIPS
R3000. En lugar de remover totalmente la señal del reloj, algunos diseños de CPU
permiten que ciertas unidades del dispositivo sean asincrónicas, como, por
ejemplo, usando ALU en conjunción con pipelining superescalar para alcanzar
algunas ganancias en el desempeño aritmético. Mientras que no esté
completamente claro si los diseños totalmente asincrónicos pueden
desempeñarse a un nivel comparable o mejor que sus contrapartes síncronas, es
evidente que por lo menos sobresalen en las operaciones matemáticas más
simples. Esto, combinado con sus excelentes características de consumo de
energía y disipación de calor, los hace muy adecuados para sistemas embebidos.
90
Paralelismo
La descripción de la operación básica de un CPU ofrecida en la sección anterior
describe la forma más simple que puede tomar un CPU. Este tipo de CPU,
usualmente referido como subescalar, opera sobre y ejecuta una sola instrucción
con una o dos piezas de datos a la vez.
Este proceso da lugar a una ineficacia inherente en CPU subescalares. Puesto
que solamente una instrucción es ejecutada a la vez, todo el CPU debe esperar
que esa instrucción se complete antes de proceder a la siguiente instrucción.
Como resultado, la CPU subescalar queda "paralizado" en instrucciones que
toman más de un ciclo de reloj para completar su ejecución. Incluso la adición de
una segunda unidad de ejecución (ver abajo) no mejora mucho el desempeño. En
lugar de un camino quedando congelado, ahora dos caminos se paralizan y
aumenta el número de transistores no usados. Este diseño, en donde los recursos
de ejecución de la CPU pueden operar con solamente una instrucción a la vez,
solo puede, posiblemente, alcanzar el desempeño escalar (una instrucción por
ciclo de reloj). Sin embargo, el desempeño casi siempre es subescalar (menos de
una instrucción por ciclo).
Las tentativas de alcanzar un
desempeño escalar y mejor han
resultado en una variedad de
metodologías de diseño que hacen
comportarse al CPU menos
linealmente y más en paralelo.
Cuando se refiere al paralelismo en los CPU, generalmente son usados dos
términos para clasificar estas técnicas de diseño.
El paralelismo a nivel de instrucción, en inglés instruction level parallelism (ILP),
busca aumentar la tasa en la cual las instrucciones son ejecutadas dentro de un
CPU, es decir, aumentar la utilización de los recursos de ejecución en la pastilla.
El paralelismo a nivel de hilo de ejecución, en inglés thread level parallelism (TLP),
que se propone incrementar el número de hilos (efectivamente programas
individuales) que un CPU pueda ejecutar simultáneamente.
Cada metodología se diferencia tanto en las maneras en las que están
implementadas, como en la efectividad relativa que producen en el aumento del
desempeño de la CPU para una aplicación.
91
ILP: Segmentación y arquitectura superescalar
Uno de los métodos más simples para lograr incrementar al paralelismo es
comenzar los primeros pasos de leer y decodificar la instrucción antes de que la
instrucción anterior haya terminado de ejecutarse. Esta es la forma más simple de
una técnica conocida como segmentación (instruction pipelining en inglés), y es
utilizada en casi todas los CPU de propósito general modernos. Al dividir la ruta de
ejecución en etapas discretas, la tubería permite que más de una instrucción sea
ejecutada en cualquier tiempo. Esta separación puede ser comparada a una línea
de ensamblaje, en la cual una instrucción es hecha más completa en cada etapa
hasta que sale de la tubería de ejecución y es retirada del mismo.
Sin embargo, la tubería introduce la posibilidad de una situación donde es
necesario terminar el resultado
de la operación anterior para
completar la operación siguiente;
una condición llamada a menudo
como conflicto de dependencia
de datos. Para hacer frente a
esto, debe ser tomado un cuidado adicional para comprobar estas clases de
condiciones, y si esto ocurre, se debe retrasar una porción de la tubería de
instrucción. Naturalmente, lograr esto requiere circuitería adicional, los
procesadores entubados son más complejos que los subescalares, pero no
mucho. Un procesador entubado puede llegar a ser casi completamente escalar,
solamente inhibido por las abruptas paradas de la tubería (una instrucción durando
más de un ciclo de reloj en una etapa).
Una mejora adicional sobre la idea del entubado de instrucción (instruction
pipelining) condujo al desarrollo de un método que disminuye incluso más el
tiempo ocioso de los componentes del CPU. Diseños que se dice que son
superescalares incluyen una larga tubería de instrucción y múltiples unidades de
ejecución idénticas. En una tubería super escalar, múltiples instrucciones son
leídas y pasadas a un despachador, que decide si las instrucciones se pueden o
no ejecutar en paralelo (simultáneamente). De ser así, son despachadas a las
unidades de ejecución disponibles, dando por resultado la capacidad para que
varias instrucciones sean ejecutadas simultáneamente. En general, cuantas más
instrucciones un CPU super escalar es capaz de despachar simultáneamente a las
unidades de ejecución en espera, más instrucciones serán completadas en un
ciclo dado.
La mayor parte de la dificultad en el diseño de una arquitectura super escalar de
CPU descansa en crear un despachador eficaz. El despachador necesita poder
determinar rápida y correctamente si las instrucciones pueden ejecutarse en
paralelo, tan bien como despacharlas de una manera que mantenga ocupadas
tantas unidades de ejecución como sea posible. Esto requiere que la tubería de
92
instrucción sea llenada tan a menudo como sea posible y se incrementa la
necesidad, en las arquitecturas super escalares, de cantidades significativas de
caché de CPU. Esto también crea técnicas para evitar peligros como la predicción
de bifurcación, ejecución especulativa, y la ejecución fuera de orden, cruciales
para mantener altos niveles de desempeño. Tratando de predecir qué rama (o
trayectoria) tomará una instrucción condicional, la CPU puede minimizar el número
de veces que todo el canal debe esperar hasta que se complete una instrucción
condicional. Frecuentemente, la ejecución especulativa proporciona aumentos
modestos del desempeño al ejecutar porciones de código que no puede ser
necesario después de completarse una operación condicional. Fuera de la orden
de ejecución cambia de algún modo el orden en que se ejecutan las instrucciones
para reducir retardos debido a las dependencias de datos. También en el caso de
instrucciones individuales de datos múltiples — los procesadores modernos, en
caso de que se hayan procesado una gran cantidad de datos del mismo tipo,
pueden desactivar partes de la tubería de manera que cuando se ejecuta una sola
sentencia muchas veces, la CPU salta la captación y decodifica fases y por lo
tanto aumenta considerablemente el rendimiento en ciertas ocasiones, sobre todo
en los motores de programas altamente monótonos como el software de creación
de video y procesamiento de fotografías.
En el caso donde una porción de la CPU es superescalar y una parte no lo es, la
parte que no es superescalar sufre en el desempeño debido a las paradas de
horario. El Intel Pentium original (P5) tenía dos ALUs superescalares que podían
aceptar, cada una, una instrucción por ciclo de reloj, pero su FPU no podía aceptar
una instrucción por ciclo de reloj. Así el P5 era superescalar en la parte de
números enteros, pero no era superescalar de números de coma (o punto
[decimal]) flotante. El sucesor a la arquitectura del Pentium de Intel, el P6, agregó
capacidades superescalares a sus funciones de coma flotante, y por lo tanto
produjo un significativo aumento en el desempeño de este tipo de instrucciones.
Tanto el diseño superescalar como el entubado simple aumentan el ILP de una
CPU al permitir a un solo procesador completar la ejecución de instrucciones en
ratios que sobrepasan una instrucción por ciclo (IPC). La mayoría de los modernos
diseños de CPU son por lo menos algo superescalares, y en la última década, casi
todos los diseños de CPU de propósito general son superescalares. En los últimos
años algo del énfasis en el diseño de computadores de alto ILP se ha movido del
hardware del CPU hacia su interfaz de software, o ISA. La estrategia very long
instruction word o VLIW, causa a algún ILP a ser implícito directamente por el
software, reduciendo la cantidad de trabajo que el CPU debe realizar para darle un
empuje significativo al ILP y por lo tanto reducir la complejidad del diseño.
93
Paralelismo a nivel de hilos
Otra estrategia para lograr el rendimiento es ejecutar varios programas o hilos en
paralelo. Esta área de investigación se conoce como computación paralela. En la
taxonomía de Flynn, esta estrategia se conoce como múltiples instrucciones de
varios datos o MIMD.
Una tecnología utilizada para este propósito fue el multiprocesamiento (MP). El
puntapié inicial de esta tecnología se conoce como multiprocesamiento simétrico
(SMP), donde un pequeño número de CPU comparten una visión coherente de su
sistema de memoria. En este esquema, cada CPU tiene un hardware adicional
para mantener una visión constantemente actualizada de la memoria. Para evitar
visitas rancias de la memoria, las CPU pueden cooperar en el mismo programa y
los programas pueden migrar desde una CPU a otra. Para aumentar el número de
CPUs que cooperan más allá de unas pocas, se introdujeron en 1990, los
esquemas tales como el non-uniform memory Access (acceso no uniforme a
memoria) (NUMA) y los protocolos de coherencia basados en directorios. Los
sistemas SMP se limitan a un pequeño número de CPU mientras que los sistemas
NUMA se han construido con miles de procesadores. Inicialmente, el
multiprocesamiento se construyó usando múltiples CPUs discretas y tableros para
implementar la interconexión entre los procesadores. Cuando los procesadores y
su interconexión hayan sido implementadas en un único chip de silicio, la
tecnología se conoce como un procesador multinúcleo.
Posteriormente, se reconoció que existía un paralelismo muy estrecho con un
único programa. Un único programa podría tener varios hilos (o funciones) que
podrían ser ejecutadas por separado o en paralelo. Algunos de los primeros
ejemplos de esta tecnología implementaban procesamiento de entrada/salida tales
como el acceso directo a memoria como un hilo separado del hilo computado. En
la década de 1970, se introdujo un enfoque más general a esta tecnología, cuando
se diseñaron sistemas para ejecutar múltiples hilos de computación en paralelo.
Esta tecnología se conoce como multihilo (MT).
Este enfoque se considera más rentable que la del multiprocesamiento, ya que
solo se replica un pequeño número de componentes dentro de una CPU para
soportar MT en oposición a la totalidad de la CPU en el caso de MP. En MT, las
unidades de ejecución y el sistema de memoria, incluyendo los cachés son
compartidos entre varios hilos. La desventaja de MT es que el soporte de
hardware para multihilo es más visible para el software que la de MP y por lo tanto
el software supervisor como el de los sistemas operativos tienen que someterse a
los cambios más grandes para apoyar MT. Un tipo de MT que se implementó es
conocido como bloque multihilo, donde se ejecuta un hilo hasta que se paralice
esperando que regresen los datos desde la memoria externa. En este esquema, la
CPU tendría luego que cambiar rápidamente a otro hilo que está listo para
funcionar, el interruptor muchas veces realiza un ciclo de reloj de la CPU, como la
94
tecnología UltraSPARC. Otro tipo de MT se denomina multihilo simultáneo, en
donde las instrucciones de múltiples hilos se ejecutan en paralelo dentro de un
ciclo de reloj de la CPU.
Paralelismo de datos
Un menos común pero cada vez más importante paradigma de CPU (y, de hecho,
de computación en general) trata con vectores. Los procesadores de los que se ha
hablado anteriormente son todos referidos como cierto tipo de dispositivo escalar.
Como implica su nombre, los procesadores vectoriales se ocupan de múltiples
piezas de datos en el contexto de una instrucción, esto contrasta con los
procesadores escalares, que tratan una pieza de dato por cada instrucción. Estos
dos esquemas de ocuparse de los datos son generalmente referidos
respectivamente como SISD (single instruction, single data) y SIMD (single
instruction, multiple data). La gran utilidad en crear CPU que se ocupen de
vectores de datos radica en la optimización de tareas que tienden a requerir la
misma operación, por ejemplo, una suma, o un producto escalar, a ser realizado
en un gran conjunto de datos. Algunos ejemplos clásicos de este tipo de tareas
son las aplicaciones multimedia (imágenes, vídeo, y sonido), así como muchos
tipos de tareas científicas y de ingeniería. Mientras que una CPU escalar debe
completar todo el proceso de leer, decodificar, y ejecutar cada instrucción y valor
en un conjunto de datos, una CPU vectorial puede realizar una simple operación
en un comparativamente grande conjunto de datos con una sola instrucción. Por
supuesto, esto es solamente posible cuando la aplicación tiende a requerir
muchos pasos que apliquen una operación a un conjunto grande de datos.
95
1.2.2.5 Desempeño
El "desempeño" (performance) o la velocidad de un procesador depende de, entre
muchos otros factores, la velocidad del reloj (generalmente dada en múltiplos de
hertz) y las instrucciones por ciclo de reloj (IPC), que juntos son los factores para
las instrucciones por segundo (IPS) que el CPU puede rendir.Muchos reportes de
valores IPS han representado tasas de ejecución "pico" en secuencias de
instrucciones artificiales con pocas ramas, mientras que las cargas de trabajo
realistas consisten en una combinación de instrucciones y de aplicaciones,
algunas de las cuales requieren más tiempo para ejecutar que otras. El
rendimiento de la jerarquía de memoria también afecta en gran medida al
rendimiento del procesador, un tema muy poco tenido en cuenta en los cálculos de
MIPS. Debido a estos problemas, para este fin, se han desarrollado varios
exámenes estandarizados, tales como SPECint muchas veces llamados "puntos
de referencia" - para tratar de medir el rendimiento real efectivo en aplicaciones de
uso cotidiano.
El desempeño de procesamiento de las computadoras se incrementa utilizando
procesadores multinúcleo, que en esencia es conectar dos o más procesadores
individuales (llamados núcleos en este sentido) en un solo circuito integrado.
Idealmente, un procesador de doble núcleo sería casi dos veces tan potente como
un procesador de núcleo único. En la práctica, la ganancia de desempeño es
mucho menor, solo alrededor del 50%, debido a la implementación de algoritmos
imperfectos de software. El aumento del número de núcleos en un procesador (es
decir, dual-core, quad-core, etc) aumenta la carga de trabajo que se puede
manejar. Esto significa que el procesador ahora puede manejar numerosos
eventos asíncronos, interrupciones, etc que pueden tomar un "peaje" en la CPU
(Central Processing Unit) cuando se abruma. Estos núcleos pueden considerarse
como diferentes plantas en una planta de procesamiento, con el manejo de cada
piso una tarea diferente. En ocasiones, estos núcleos se manejan las mismas
tareas que los núcleos adyacentes a ellos si un solo núcleo no es suficiente para
manejar la información.
Debido a las capacidades específicas de las CPU
modernas, como HyperThreading y Uncore, que
implican el intercambio de recursos reales de la
CPU mientras que el objetivo de una mayor
utilización, supervisar los niveles de rendimiento y la
utilización del hardware se fue convirtiendo
gradualmente en una tarea más compleja. Como
respuesta, algunas CPUs implementan lógica de hardware adicional que controla
la utilización real de las diversas partes de una CPU y proporciona varios
contadores accesibles a software; un ejemplo es la tecnología Performance
Counter Monitor ("Monitor de contador de rendimiento") de Intel.
96
1.2.2.1.4 Función general del CPU
La CPU de tu ordenador es la que ejecuta una secuencia de instrucciones y
procesa los datos de estas. Estas secuencias de instrucciones son las que
realizan los programas que tienes instalados en el ordenador. Vamos, que son los
encargados de realizar las operaciones que necesitan los programas o
aplicaciones para realizar las
tareas que les pides que hagan.
Tú le dices a tu aplicación
fotográfica que aplique un
cálculo. Esta aplicación le da al
ordenador las instrucciones con
los cálculos o acciones que
necesita realizar para llevar a
cabo la tarea. Las instrucciones
se ponen en la RAM, donde son
recogidas por la CPU, que es la
que las lleva a cabo.
Para ello se siguen varios pasos diferentes. El primero es el de leer los datos e
instrucciones para realizar cada una de las tareas de las aplicaciones. Los datos
se decodifican y se dividen para que puedan ser entendidos por las diferentes
partes de la CPU, las cuales ejecutan las acciones, realizan los cálculos, y
escriben los resultados en la memoria principal, ya sea como resultado o para
utilizarlos después en otras operaciones.
Pero esta es una simplificación extrema, ya que estas funciones básicas del
procesador se realizan por cada instrucción, y cada programa puede requerir de
varias instrucciones para realizar una acción. Además, estas no se realizan en
orden y una detrás de otra, sino que el procesador puede estar trabajando con
muchas funciones a la vez para los diferentes programas activos.
Tienes que entender que todo en tu ordenador está representado por números,
por lo que la CPU es la encargada de recopilar y calcular las operaciones de estos
números. Con estas operaciones se realiza exactamente todo lo que haces en tu
ordenador, desde abrir el menú de inicio de Windows hasta ver un vídeo en
YouTube, todo requiere una serie de instrucciones y cálculos para poder
realizarse.
En los ordenadores modernos, la CPU no es la que lo realiza todo, ya que suelen
interferir otros componentes especializados, como por ejemplo puede ser la tarjeta
gráfica para todo lo relacionado con lo que ves en pantalla. También entra en
juego la memoria RAM para almacenar datos de rápido acceso, y el resto de los
componentes que hay dentro de tu ordenador.
97
En este enjambre de dispositivos y componentes, la CPU es el cerebro o el
director de orquesta, pues es quien lo organiza todo para que las tareas se hagan
donde toca y de la manera que deben realizarse para obtener los resultados
deseados.
La CPU no es más imprescindible que otros componentes básicos de un
ordenador, ya que este no funcionará sin fuente de alimentación u otros
componentes. Tampoco es el todo del que depende la ejecución de tareas, ya que
para todo lo relacionado con la producción de vídeos o la visualización de
videojuegos, también son necesarios tener una buena tarjeta gráfica o GPU y una
buena memoria RAM.
Pero de la velocidad y potencia de la CPU sí que puede depender lo rápido que
vaya un ordenador, y tener una buena o mala CPU afectará al rendimiento de tu
equipo.
98
Cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y
después lo empieza a ejecutar. Lo mismo ocurre cuando necesita procesar una
serie de datos; antes de poder procesarlos los tiene que llevar a la memoria
principal.
Dentro de la memoria de acceso aleatorio (RAM) existe una clase de memoria
denominada memoria caché, que se caracteriza por ser más rápida que las
demás, permitiendo que el intercambio de información entre la CPU y la MP sea a
mayor velocidad.
La estructura de la memoria principal ha cambiado en la historia de las
computadoras. Desde los años 1980 es prevalentemente una unidad dividida en
celdas que se identifican mediante una dirección. Está formada por bloques de
circuitos integrados o chips capaces de almacenar, retener o "memorizar"
información digital, es decir, valores binarios; a dichos bloques tiene acceso el
microprocesador de la computadora.
1.2.2.2.1 Tipos
En las computadoras son utilizados dos tipos de memorias:
1. Memoria de Solo Lectura (Read Only Memory, ROM). Viene grabada de
fábrica con una serie de programas. El software de la ROM se divide en dos
partes:
• Rutina de arranque o POST (Power On Self Test, «Auto Diagnóstico de
Encendido»): realiza el chequeo de los componentes
de la computadora; por ejemplo, circuitos
controladores de video, de acceso a memoria, el
teclado, unidades de disco, etcétera. Se encarga de
determinar cuál es el hardware que está presente y de
la puesta a punto de la computadora. Mediante un
programa de configuración, el setup, lee una memoria
llamada CMOS RAM (RAM de Semiconductor de
Óxido Metálico). Esta puede mantener su contenido
durante varios años, aunque la computadora esté apagada, con muy poca
energía eléctrica suministrada por una batería, guarda la fecha, hora, la
memoria disponible, capacidad de disco rígido, si tiene disquetera o no. Se
encarga en el siguiente paso de realizar el arranque (booteo): lee un
registro de arranque BR (Boot Record) del disco duro o de otra unidad
(como CD, USB...), donde hay un programa que carga el sistema operativo
a la RAM. A continuación, cede el control a dicho sistema operativo y la
computadora queda listo para trabajar.
99
• Rutina del BIOS (Basic Input-Output System o «Sistema Básico de Entrada-
Salida»): permanece activa mientras se está usando la computadora.
Permite la activación de los periféricos de entrada/salida: teclado, monitor,
ratón, etcétera.
• Rutina Setup: etapa primaria en la que se pueden modificar opciones
básicas como el horario. Es indiferente al sistema operativo y se inicia antes
de iniciar sesión.
2. Memoria de Lectura-Escritura (Read-
Write Memory, RWM): es la memoria
del usuario que contiene de forma
temporal el programa, los datos y los
resultados que están siendo usados
por el usuario de la computadora. En
general es memoria volátil, pierde su contenido cuando se apaga la
computadora, es decir que mantiene los datos y resultados en tanto el
bloque reciba alimentación eléctrica, a excepción de la CMOS RAM.
Tanto la RAM como la ROM son circuitos integrados, llamados chips. El chip es
una pequeña pastilla de material semiconductor (silicio) que contiene múltiples
circuitos integrados, tales como transistores, entre otros dispositivos electrónicos,
con los que se realizan numerosas funciones en computadoras y dispositivos
electrónicos; que permiten, interrumpen o aumentan el paso de la corriente. Estos
chips están sobre una tarjeta o placa.
Es común llamar erróneamente a la memoria de lectura/escritura (RWM) como
memoria de acceso aleatorio (RAM), donde se confunde el tipo de memoria con la
forma de acceso a ella.
El contenido de las memorias no es otra cosa que dígitos binarios o bits (binary
digits), que se corresponden con dos estados lógicos: el 0 (cero) sin carga
eléctrica y el 1 (uno) con carga eléctrica. A cada uno de estos estados se le llama
bit, que es la unidad mínima de almacenamiento de datos.
Al bloque de MP, suele llamarse RAM, por ser este el tipo de chips de memoria
que conforman el bloque, pero se le asocia también el chip CMOS, que almacena
al programa BIOS del sistema, y los dispositivos periféricos de la memoria
secundaria (discos y otros periféricos), para conformar el subsistema de memoria
de la computadora.
La CPU direcciona las posiciones de la RAM para poder acceder a los datos
almacenados en ellas y para colocar los resultados de las operaciones.
Los bloques RWM, las ROM y las memorias secundarias conforman el subsistema
de memoria de una computadora.
100
1.2.2.3 Periféricos.
Periférico es la denominación genérica para designar al aparato o dispositivo
auxiliar e independiente conectado a la placa base de una computadora.
Se consideran periféricos a las unidades o dispositivos de hardware a través de
los cuales el ordenador se comunica con el exterior, y también a los sistemas que
almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria
principal.
Se considera periférico a los dispositivos
que no pertenecen al núcleo fundamental
del ordenador, formado por la unidad
central de procesamiento (CPU) y la
memoria principal, permitan
realizar operaciones de
entrada/salida (E/S) complementarias al
proceso de datos que realiza la CPU.
Estas tres unidades básicas en un
ordenador son: CPU, memoria central y el
subsistema de E/S, están comunicadas
entre sí por tres buses o canales de comunicación:
• Direcciones, para seleccionar la dirección del dato o del periférico al que se
quiere acceder.
• Control, básicamente para seleccionar la operación a realizar sobre el dato
(principalmente lectura, escritura o modificación).
• Datos, por donde circulan los datos.
101
Fue con la popularización de Finder, sistema
operativo de la Macintosh de Apple y la
posterior aparición de Windows cuando
el ratón comenzó a ser un elemento
imprescindible en cualquier hogar dotado de
una computadora personal. Actualmente
existen sistemas operativos con interfaz de
texto que pueden prescindir del ratón como,
por ejemplo, MS-DOS. El caso del teclado es
también emblemático, pues en las nuevas
computadoras tabletas, sistemas de juego o
teléfonos móviles con pantalla táctil, el teclado se emula en la pantalla. Inclusive
en casos de adaptaciones especiales los teclados dejan de ser el periférico de
entrada más utilizado, llegando a desaparecer en algunos casos por el uso de
programas reconocedores de voz.
Los periféricos pueden clasificarse en las siguientes categorías principales:
• Periféricos de entrada: captan y digitalizan los datos de ser necesario,
introducidos por el usuario o por otro dispositivo y los envían al ordenador
para ser procesados.
102
1.2.2.3.2 Periféricos de entrada.
103
Algunos dispositivos permiten muchos grados continuos de libertad como entrada.
Estos se pueden utilizar como dispositivos señaladores, pero generalmente se
utilizan en formas que no impliquen apuntación a una ubicación en el espacio,
tales como el control de un ángulo de la cámara en aplicaciones 3D.
Generalmente, este tipo de dispositivos se utilizan en “entornos de realidad
virtual inmersiva asistidos por computadora” (Computer Assisted Virtual
Environment, CAVE) o “entorno virtual automático”, donde se requiere entradas y
registros de 6DOF.
Los dispositivos de entrada (tales como botones o pulsadores, y palancas de
mando) se pueden combinar en un único dispositivo físico que podría ser pensado
como un dispositivo compuesto.
Muchos dispositivos para videojuegos tienen controladores de esta manera.
Técnicamente los mouses son dispositivos compuestos (por el movimiento para
posicionar el cursor y pulsar algún botón para hacer clic), aunque generalmente,
los dispositivos compuestos se consideran que tienen más de dos formas de
entrada diferentes.
Ejemplos:
• Controlador de videojuego.
• Gamepad.
• Paddle (para videojuego).
• Volante (videojuegos).
• Wii Remote.
104
1.2.2.3.3 Periféricos de Salida.
Un periférico o dispositivo de salida es un dispositivo electrónico capaz de
imprimir, mostrar o emitir señales que sean fácilmente interpretables por el
usuario. Básicamente, un dispositivo de salida tiene la función de mostrarle al
usuario operador de la computadora el resultado de las operaciones realizadas o
procesadas por la misma.
El periférico de salida la computadora se comunica y nos muestra el resultado de
nuestro trabajo, pudiendo observarlos fácilmente por intermedio del monitor o la
impresora, los dos dispositivos de salida más utilizados. Pero también existen
otros tipos de periférico de salida, que incluyen placas de audio, herramientas y
mucho más.
Monitores
El monitor de nuestra PC es sin
duda el dispositivo de salida
más importante del conjunto,
ya que sin él no podríamos
saber qué es lo que está
pasando en la computadora.
Este dispositivo de
visualización está constituido
por diversos puntos luminosos
denominados píxeles, siendo la
cantidad de píxeles lo que
determina la resolución gráfica
del mismo; cuanto mayor que sea la cantidad de píxeles, mayor es la resolución,
pues la misma imagen es reproducida en un número mayor de puntos mejorando
la visualización de los detalles.
Dejando de lado a los denominados monitores CRT o de tubo de rayos
catódicos, los cuales están completamente obsoletos pero que aún podemos ver
junto a algunas computadoras, existen dos tipos principales de monitor, ambos
con pantallas de panel plano, los monitores LED o LCD, lo que básicamente es lo
mismo salvo que cambia el tipo de retroiluminación.
También podrían considerarse como monitores los llamados proyectores, ya que
también poseen la capacidad de mostrar los datos que ofrece como resultado de
las operaciones la computadora.
105
Proyectores
Básicamente, un proyector es un dispositivo capaz de emitir las imágenes creadas
con la computadora, al igual que los monitores, pero con la ventaja de poder
hacerlo en cualquier superficie, siempre que esta sea plana y de color claro.
También es capaz de proyectar imágenes de gran tamaño con una excelente
calidad.
En el mercado existen varios tipos de proyectores, siendo los más comunes los
proyectores del tipo LCD y los picos proyectores, sin embargo, existe una tercera
categoría que comprende a los proyectores 3D. Cabe destacar que los
proyectores como periféricos de salida son muy comunes para mostrar todo tipo
de presentaciones, y su forma de conexión es muy similar también, ya que poseen
puertos del tipo VGA y HDMI.
Impresoras
La impresora es otro de los periféricos de salida más importantes, ya que fueron
diseñadas para poder perpetuar en papel los resultados o datos procesados por la
computadora. Al contrario que en el caso del monitor, la impresora no es un
dispositivo imprescindible, pero es de especial importancia cuando necesitamos
representar la información procesada por la PC en papel en forma de listados,
gráficos, dibujos, imágenes y demás.
En la actualidad existen varios tipos de impresoras, siendo las más utilizadas en el
momento las de láser y las impresoras multifunción, sobre todo en el ámbito de las
oficinas y el hogar. A partir de este punto vamos a conocer las principales
características de ambos tipos de impresoras, así como también lo básico acerca
de otros tipos de impresoras menos conocidas para la mayoría de los usuarios.
106
Audio: Placas de audio, parlantes y auriculares
Sin duda alguna, la tarjeta de sonido de una computadora, y los parlantes y
auriculares que la acompañan, son de suma importancia para el usuario, ya que
además de proveerle del placer de escuchar música mientras trabaja, son los
encargados de reproducir los variados sonidos y mensajes que emite la PC para
notificarnos de los acontecimientos que están sucediendo en la misma.
En este punto, los parlantes, junto a los auriculares son los dispositivos más
utilizados para escuchar música a través del reproductor de audio de nuestro
sistema operativo. En la actualidad podemos encontrar tarjetas de audio a las
cuales se le pueden conectar parlantes tanto estéreo, es decir 2 canales, izquierdo
y derecho, como multicanal, conformado por hasta 7 canales de audio distintos.
También existen tarjetas de audio externas, las cuales se conectan por medio de
un puerto USB, las cuales generalmente cuando es necesaria una buena
performance, como por ejemplo en el ámbito del Home Studio.
Cabe destacar que las placas de audio también pueden ser consideradas como un
dispositivo de entrada, ya que ofrecen conexiones para enchufar micrófonos y
otros tipos de accesorios para el ingreso de sonido a la computadora.
Cabe destacar que las placas de audio también pueden ser consideradas como un
dispositivo de entrada, ya que ofrecen conexiones para enchufar micrófonos y
otros tipos de accesorios para el ingreso de sonido a la computadora.
107
1.2.2.3.4 Periféricos de Almacenamiento.
Se encargan de guardar los datos de los que hace uso la CPU, para que ésta
pueda hacer uso de ellos una vez que han sido eliminados de la memoria
principal, ya que ésta se borra cada vez que se apaga la computadora. Pueden
ser internos, como un disco duro, o extraíbles, como un CD. Los más comunes
son:
• Disco duro
• Unidad de CD
• Unidad de DVD
• Unidad de Blu-ray Disc
• Memoria flash
• Memoria USB
Disco duro
Unidad de CD
108
Unidad de DVD
Blu-ray disc también conocido como Blu-ray o BD, es un formato de disco óptico
de nueva generación de 12 cm de diámetro (igual que el CD y el DVD) para vídeo
de gran definición y almacenamiento de datos de alta densidad de 5 veces mejor
que el DVD. Su capacidad de almacenamiento llega a 25 GB por capa, aunque
Sony y Panasonic han desarrollado un nuevo índice de evaluación (i-MLSE) que
permitiría ampliar un 33% la cantidad de datos almacenados, desde 25 a 33,4 GB
por capa.
Memoria flash
109
1.2.2.3.5 Periféricos de Comunicación.
Los Periféricos de Comunicación son todos aquellos que permiten la interacción
entre dos o más ordenadores o entre un ordenador y algún otro dispositivo
periférico. Entre los Periféricos de Comunicación más utilizados están:
Tarjeta de red
Una tarjeta de red o NIC (network interface card), conocida también como
adaptadores de red es una placa que contiene circuitos integrados y que
generalmente se encuentran ubicadas en un slot o ranura de la caja que contiene
el procesador del ordenador. La tarjeta de red permite conectar, a través de una
red, el ordenador con otro dispositivo que se encuentre a su vez conectado a la
misma red. De esta forma, no sólo comunicamos dos o más ordenadores entre sí,
sino que también podemos compartir recursos. Existen distintos tipos de tarjetas
de red, los cuales son diseñados según el tipo de tecnología utilizada en la red
para la que fueron diseñados. Entre las tarjetas de red más comúnmente utilizadas
se encuentran las denominadas tipo ethernet las cuales se refiere a la tecnología
de redes de área local basada en los estándares IEEE 802.3. Las tarjetas de red
ethernet varían según la velocidad de transmisión que oscila desde algunos miles
de bites por segundo hasta el gigabyte. Otra característica fundamental de una
tarjeta de red es la denominada dirección física o MAC Address (Media Access
Control Address de dirección de control de acceso). Esto no es más que lo que
identifica unívocamente al dispositivo (ordenador o periférico) al que corresponde
la tarjeta de red, dentro de la red a la
que están interconectados. La manera
de visualizar la dirección física o MAC
Address en ordenadores cuyo sistema
operativo es Windows es ejecutando,
en una sesión de MSDOS, el
comando winipcfg (ipconfig /all en
Windows XP).
110
Tarjeta Wireless
Una tarjeta Wireless, que significa sin cables y conocida también como tarjeta wifi
(marca comercial de WIFI Alliance), es una tarjeta de red inalámbrica que permite
la comunicación con otros dispositivos sin el uso de un medio físico (cable). La
tarjeta Wireless utiliza una transmisión, a través del aire, basada en ondas de
radio electromagnéticas. La ventaja de utilizar redes inalámbricas versus las redes
tradicionales o con cables, es su menor costo y la movilidad, comodidad que la
ausencia de cables produce.
HUB
Hub o concentrador, es un dispositivo de comunicación cuya característica
fundamentas es la de servir de interlocutor entre los distintos dispositivos
conectados a la red. Un HUB es un dispositivo que contiene varios puertos de
comunicación y que cuando recibe por uno de los puertos información, la
retransmite al resto de los puertos. Existen algunos tipos de HUB inteligentes que
son capaces de monitorear el tráfico de cada puerto y que además permite que se
les configure. Existen diferentes tipos de concentradores según el tipo de red en la
que estén establecidos.
Switch
El Switch o conmutador, es un dispositivo de comunicación cuya funcionalidad es
la misma que la del Hub o concentrador, diferenciándose solamente en que éste
no comparte el ancho de banda.
111
1.2.3 Firmware.
El firmware o soporte lógico inalterable es un programa informático que establece
la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo
de cualquier tipo. Está fuertemente integrado con la electrónica del dispositivo, es
el software que tiene directa interacción con el hardware, siendo así el encargado
de controlarlo para ejecutar correctamente las instrucciones externas. De hecho, el
firmware es uno de los tres principales pilares del diseño electrónico.
En resumen, un firmware es un software que maneja físicamente al hardware.
El programa BIOS de una computadora es un firmware cuyo propósito es activar
una máquina desde su encendido y preparar el entorno para cargar un sistema
operativo en la memoria RAM y disco duro.
112
Más adelante, en el uso popular el término se amplió nuevamente, para denotar
cualquier cosa residente en ROM, incluyendo las instrucciones de máquina del
procesador para el BIOS, los cargadores de arranque, o aplicaciones
especializadas.
El firmware ha evolucionado para significar casi cualquier contenido programable
de un dispositivo de hardware, no solo código de máquina para un procesador,
sino también configuraciones y datos para los circuitos integrados para
aplicaciones específicas (ASIC), dispositivos de lógica programable, etc.
Hasta mediados de los años 1990 el procedimiento típico para actualizar
un firmware a una nueva versión era reemplazar el medio de almacenamiento que
contenía el firmware, usualmente un chip de memoria ROM enchufado en
un zócalo. Hoy en día este procedimiento no es habitual ya que los fabricantes
han añadido una nueva funcionalidad que permite grabar las nuevas instrucciones
en la misma memoria, haciendo de la actualización un proceso mucho más
cómodo y dinámico. Aun así, el proceso de actualización de un firmware hay que
realizarlo con mucho cuidado, ya que al ser un componente vital cualquier fallo
puede dejar al equipo inservible. Por ejemplo, un fallo de alimentación a mitad del
proceso de actualización evitaría la carga completa del código que gobierna el
equipo, quizá incluso la carga del código que se encarga de actualizar el firmware,
así que no podríamos actualizarlo de nuevo y por lo tanto el equipo dejaría de
funcionar.
Periféricos de computador
La mayoría de los periféricos del computador son de hecho computadores de
propósito especial. Mientras que los dispositivos externos tienen
el firmware almacenado internamente, las modernas tarjetas de los periféricos de
computadores típicamente tienen grandes partes de firmware que es cargado en
el arranque por el sistema huésped, pues esto es más flexible. Dicho hardware por
lo tanto puede no funcionar completamente hasta que el computador huésped le
haya cargado el firmware indispensable, a menudo por medio del driver de
dispositivo específico (o, más exactamente, por medio de un subsistema dentro
113
del paquete del driver de dispositivo). Los modernos drivers de dispositivo también
pueden exponer una interfaz directa de usuario para la configuración además de
las llamadas/interfaces del sistema operativo o de las Interfaces de programación
de aplicaciones (API).
114
Retos del firmware en los PC
En algún sentido, los varios componentes del firmware son tan importantes como
el sistema operativo en un computador. Sin embargo, a diferencia de la mayoría
de los sistemas operativos modernos, el firmware tiene raramente un mecanismo
automático bien desarrollado para actualizarse a sí mismo para corregir los
problemas de funcionalidad que son detectados después de que la unidad es
despachada.
BIOS y firmware
El BIOS es bastante fácil de actualizar en un PC moderno; los dispositivos como
las tarjetas de vídeo o los módems confían en el firmware cargado dinámicamente
por un controlador de dispositivo y a menudo pueden así ser actualizados
transparentemente a través de los mecanismos de actualización del sistema
operativo. En contraste, el firmware en dispositivos de almacenamiento es
raramente actualizado; no están estandarizados los mecanismos para detectar las
versiones del firmware y actualizarlas. Estos dispositivos, por lo tanto, tienden a
tener un índice más alto de problemas de funcionalidad, comparados con otras
partes de un moderno sistema de computación.
Teléfonos móviles
La mayoría de los teléfonos móviles tienen una capacidad de firmware actualizable
por muchas de las mismas razones que se especificaron anteriormente, pero
algunos incluso pueden ser actualizados para mejorar la recepción o la calidad del
sonido.
115
Automóviles
Desde 1996 la mayoría de los automóviles han empleado una computadora a
bordo y varios sensores para detectar problemas mecánicos. Los vehículos
modernos también emplean sistemas controlados por computador, ABS y
sistemas de control de transmisión operados por computadora.
El conductor puede también recibir información “in-dash” de esta manera mientras
conduce, como, por ejemplo, lecturas en tiempo real de la economía del
combustible y de la presión del neumático. La mayoría del firmware del vehículo
puede ser actualizado en un distribuidor local autorizado.
116
Conclusiones
Se concluye que a lo largo de esta investigación nos hemos dado cuenta de que
tan avanzada esta la tecnología moderna, así como también los sistemas
operativos que son la base para todo dispositivo inteligente, por lo tanto, se ha
vuelto indispensable la actualización e innovación de estos sistemas.
La creación de nuevos sistemas de información es indispensable para satisfacer
las nuevas necesidades de las personas, actualizar dichas tecnologías es un reto
considerable para todos los expertos en esta área, por lo que el conocimiento en
esta rama de la tecnología requiere una constante actualización, con nuevos y
mejorados dispositivos.
También están en constante actualización y desarrollo nuevos sistemas
operativos con nuevas y mejores funciones que nos permiten realizar actividades
cotidianas más rápido y eficaz.
Es posible que dentro de algunos años seamos capaces de desarrollar nuevas
tecnologías con inteligencia artificial capaces de operar de manera autónoma, con
nuevos estándares de tecnología y con un gran procesamiento de información que
permitirá la no intervención humana.
Hacer un uso adecuado de estas tecnologías es responsabilidad de nosotros, así
como también comprender de mejor manera que nuevas aplicaciones se le
pueden dar a estas tecnologías, todos y cada uno de nosotros debemos estar
comprometidos con el uso responsable de estos sistemas.
A lo largo de esta investigación se han abordado temas de suma importancia que
nos ayudaron a comprender mejor los conceptos que se estarán analizando con
mayor profundidad y precisión en esta asignatura, todos los integrantes de este
equipo hemos analizado con detenimiento toda la información que contiene este
archivo y hemos reflexionado sobre el fuerte impacto que tiene el desarrollo de
nuevos sistemas de computación e información sobre futuras generaciones.
117
Bibliografía
• Software". En: Significados.com. Disponible
en: https://www.significados.com/software/ Consultado: 25 de agosto de
2021, 01:02 pm.
• varios . (2021). software. 25/08/2021, de Wikipedia Sitio web:
https://es.wikipedia.org/wiki/Software
• Marqués, P. (1996). El software educativo. J. Ferrés y P. Marqués,
Comunicación educativa y Nuevas Tecnologías, 119-144.
• desconocido . (2021). ¿Qué es un software? 25/08/2021, de software web
Sitio web: https://softwarewebsas.com/blog/software/30
• desconocido . (2015). evolución del software . 25/08/2021, de análisis de
sistemas Sitio web: https://analisisdesistemas1.wordpress.com/software/2-
evolucion-del-software/
• Felix Albornoz . (2021). sistema informático . 26/08/2021, de internet paso a
paso Sitio web: https://internetpasoapaso.com/sistema-informatico/
• desconocido . (27/04/2021). sistemas . 26/08/2021, de wikipedia Sitio web:
https://es.wikipedia.org/wiki/Sistema_inform%C3%A1tico
• "Sistema Informático". Autor: Julia Máxima Uriarte. Para: Caracteristicas.co.
Última edición: 29 de marzo de 2020. Disponible
en: https://www.caracteristicas.co/sistema-informatico/. Consultado: 26 de
agosto de 2021.
• varios . (2021). programación . 26/08/2021, de wikipedia Sitio web:
https://es.wikipedia.org/wiki/Programaci%C3%B3n
• Kernighan, B. W., & Ritchie, D. M. (1991). El lenguaje de programación C.
Pearson Educación.
• López, L. (2004). Programación estructurada. Un enfoque algorítmico (2a.
Edición). AlfaOmega.
• Morales, K. G. (2008). Fundamentos de programación.
• Llorens Largo, F., García-Peñalvo, F. J., Molero Prieto, X., & Vendrell Vidal,
E. (2017). La enseñanza de la informática, la programación y el
pensamiento computacional en los estudios preuniversitarios.
• desconocido . (2021). conceptos básicos (CPU). 28/08/2021, de Xataca
basics Sitio web: https://www.xataka.com/basics/cpu-que-como-sirve
• artículo de investigación . (2021). unidad central de procesamiento .
28/08/2021, de wikipedia Sitio web:
https://es.wikipedia.org/wiki/Unidad_central_de_procesamiento
• "CPU". Autor: Equipo editorial, Etecé. De: Argentina. Para: Concepto.de.
Disponible en: https://concepto.de/cpu/. Última edición: 5 de agosto de
2021. Consultado: 26 de agosto de 2021 - Fuente: https://concepto.de/cpu/
118
• "Software de aplicación". Autor: Equipo editorial, Etecé. De: Argentina.
Para: Concepto de. Disponible en: https://concepto.de/software-de-
aplicacion/. Última edición: 5 de agosto de 2021. Consultado: 26 de agosto
de 2021 - Fuente: https://concepto.de/software-de-aplicacion/
119
• Ceupe, B. (2020, 19 mayo). ¿Qué son las tecnologías de la información?
Ceupe. https://www.ceupe.com/blog/que-son-las-tecnologias-de-la-
informacion.html
• Publicador Aliat. (2021, 15 junio). ¿Qué es TI?: conoce este concepto y sus
alcances. Mundo ETAC. https://etac.edu.mx/blog-etac/index.php/que-es-ti/
120