LOS SISTEMAS COMPUTACIONALES
Las Computadoras
El lenguaje de las máquinas
Los sistemas computacionales
Los computadores son máquinas que utilizan la tecnología para lograr un objetivo, precisamente se entiende como tecnología al conjunto de conocimientos, técnicas, herramientas y procesos para convertir el conocimento científico en un producto funcional que permita la adaptación del entorno a las necesidades humanas, en este caso la tecnología de las computadoras en su expresión más básica se dispone de un conjunto de dispositivos electrónicos físicos que se disponen en la ciencia de manipulación de corrientes eléctricas para realizar operaciones. Ahora bien la forma en que entra la información en la computadora desde el mundo real es en una corriente eléctrica, pero esta corriente se transforma en bits, lo que significa que la tecnología de las computadoras se basa en un Sistema, que no es más que:
-Tomar una Entrada (corriente)
-Procesar en su interior la información , la transforma, cambiándola de acuerdo con el uso del sistema
- Después de esto se produce una Salida que es lo que se entrega al mundo real, en fin es el resultado que se espera para una solución de un problema del mundo real.
La tecnología de las computadoras funcionan con un lenguaje muy básico llamado sistema binario, para procesar la información de entrada, que solo entiende dos "dígitos": el 0 y el 1, esto permite crear: unidades básicas de información. En su esencia, son una abstracción, que se materializan en dispositivos electrónicos como voltajes o corrientes, su interpretación como 0 o 1 es una convención que permite manipular y procesar información digital, de aquí que se puedan hacer operaciones mátemáticas y lógicas.
En resumen:las computadoras funcionan manipulando la corriente, para poder realizar operaciones más complejas.
Explico esto usando la analogía de una computadora con el funcionamiento de un cerebro humano(estímulo-corriente-neuronas-sinapsis-operaciones-mentales).
Explico por partes: tenemos los órganos sensoriales, estos reciben una entrada de información del mundo real que son sensaciones,estas provocan impulsos eléctricos (a un nivel diferente al que conocemos por supuesto, pero si son potenciales de electricidad),que activan a las células nerviosas que están por todo el cuerpo y se conectan entre todas hasta llegar a las neuronas, esta corriente activa el intercambio de información entre las neuronas, conocido como "sinapsis", que a nivel cerebral, esta información se traduce en sustancias químicas como potasio, sodio, cloruro, calcio, etc., así pueden ocurrir procesos mentales más complejos como pensar, recordar, aprender y hablar.
En las computadoras, la corriente se transforma en bits (se trasmite y almacena) y por último el sistema ofrece una salida.
En principio, así es como el sistema computacional almacena y procesa la información y hace los cálculos en base a 0 y 1, que es una representación de corriente eléctrica,para ejecutar programas con alguna función, que en su nivel más complejo, será: un sistema operativo para un dispositivo computacional (cómo si fuera la mente humana), con soluciones de software que permitan al usuario interactuar con el dispositivo.

El lenguaje binario
A cada uno de estos dígitos (0 y 1) se le llama bit, viene del inglés "binary digit" que en español se traduce como "dígito binario", y representa el estado más simple de un dispositivo, como "encendido" o "apagado" para la carga eléctrica de un condensador, pues recordemos que se trata de voltajes y corrientes, además representa el estado básico de toda la información del mundo real, por ejemplo: abierto-cerrado, arriba-abajo, negro-blanco, Norte-Sur, Sí-No, más-menos, etc.,un bit solo puede tener uno de dos valores: 0 o 1.
El lenguaje binario también sirve de base para lo que se conoce como lógica booleana, donde el 0 es "falso" (apagado) y el 1 es "verdadero" (encendido), esta lógica es la base para las soluciones programáticas, usadas por los desarrolladores para crear softwares, en lenguajes de programación, más cercanos al lenguaje humano.
En resumen: los bits son el lenguaje máquina que representa las unidades básicas de la información que se utilizan para calcular las unidades de almacenamiento en memoria. Toda la información procesada por una computadora es medida y codificada en bits.

Unidades Básicas de información: Bytes
Pero como la información del mundo no existe en unidades pequeñas como los bits,se necesitaba crear unidades de almacenamiento de información que sí pudieran representar informaciones más complejas. Entonces se requirió, agrupar los bits, para que, de unidades básicas, tuvieran mayor capacidad de almacenamiento de la información.
La capacidad de las computadoras para procesar información se basa en la manipulación de bits, combinándolos para realizar operaciones lógicas y aritméticas.
Voy a usar un símil más sencillo para explicar esto, imaginemos como en el lenguaje que conocemos, la "a" ó la "b" por sí sola no representan nada de información, por lo que hay que agruparlas, para crear palabras, luego estas se agrupan para crear oraciones, después se crean párrafos, etc., esto también sucede con el lenguaje binario, hay que agrupar los bits para crear una unidad de almacenamiento de información más compleja.
En el lenguaje binario, un bit se agrupa con otros bits para crear unidades de almacenamiento de información más grandes,los Bytes una nueva unidad, que ya no tiene dos valores (0 y 1) sino estos dos valores repetidos "n" cantidad de veces,esto sería 2^n, donde n es la cantidad de bits que se agrupan para crear un byte.
Por ejemplo si decimos que 1 Byte tiene 2 bits de información, sería 2^2, lo que sería 4 veces 2, entonces donde 0 es negro y 1 es blanco, tenemos 4 colores combinando 4 veces 0 y 1: 01 = gris oscuro, 10 = gris claro, 11= plateado,00 = negro, así tendremos 4 valores nuevos, si aumentamos la cantidad de bits, si fuera 2^3, entonces tendremos 8 combinaciones más complejas de información y más colores.
Agrupaciones comunes de bits:

Antiguamente el Byte podría estar conformado por 6, 7, 8, o 9 bits, hoy, la mayoría de los sistemas computativos usan 1 Byte de 8 bits, cómo la unidad de medida más común para almacenar información en la memoria del dispositivo, ya que esto puede representar hasta 256 valores diferentes mínimos, para formar una "palabra", que en términos computativos, representa una cadena de bits, cuyo tamaño va a determinar la arquitectura de los ordenadores, el tamaño de la memoria, la estructura y las operaciones matemáticas y lógicas que el equipo puede realizar.
1 Byte de 8 bits también permite codificar letras, números o símbolos que existen en el lenguaje humano, así un Byte de 8 bits puede representar la información que se necesita del mundo real y llevarlo a lenguaje binario para que el equipo pueda entenderlo, procesarlo y ejecutarlo, así se puede programar a un nivel más bajo que el lenguaje humano, esto se conoce como codificación.
Ahora que ya tenemos los Bytes de 8 bits, estos también hay que agruparlos para crear paquetes de datos, que son los conjuntos de información de mayor almacenamiento en la memoria del dispositivo, tanto en un equipo estático como para enviarlos a través de la red.
Velocidad de Internet
Ahora cabe aclarar que la velocidad de internet se mide en Mega bits por segundo ó Mbps, en cambio el almacenamiento de datos (como el tamaño de un archivo o la capacidad de un disco duro) se mide en bytes (KB, MB, GB, etc.). Por ejemplo, una copia de seguridad de un disco duro puede pesar 500 GB de datos y va a una velocidad de 10 Mbps, mientras que una copia de seguridad que pesa 1 TB de datos va a una velocidad de 100 Mbps.
Mientras más grande sea el almacenamiento de datos que necesite una aplicación, mayor será la velocidad de internet que necesita, que de no asegurar los recuros para su funcionamiento, esto puede influir en su rendimiento, performance y "renderizado" (proceso de generar una imagen o un video a partir de una descripción o modelo digital, en páginas web se refiere a convertir código en una página web visible y funcional).

Arquitectura de los Sistemas Computacionales
¿Cómo la computadora se organiza para procesar la información almacenada?
En el corazón de la computadora, se encuentra la:
Unidad Central de Procesamiento, que es lo mismo que el Procesador o CPU.
Este elemento y sus partes son el hardware de la computadora (soporte físico), que actúa como un cerebro, encargado de todos los cálculos y de procesar las instrucciones, como si fuera el "motor" que ejecuta los programas.
Antes mencionaba los bits(0 y 1) y que estos se agurapaban en Bytes, para formar las "palabras", estas se relacionan con la CPU, ya que representan la cantidad de datos transferidos entre esta y el sistema de memoria del equipo, que a menudo es algo más grande que una palabra, que se guardan con una una dirección para designar una localización de información específica.
Los CPU tiene una capacidad predefinida para trabajar con determinados tamaños de palabras, lo que significa que a mayor capacidad puede gestionar "palabras" más grandes, lo que pueden hacer más en menos tiempo.
Por ejemplo si una CPU es de 32 bits puede manejar palabras de 32 bits, mientras que si es de 64 bits puede manejar palabras de 64 bits, esto afecta la capacidad de multifunción del equipo, donde la cantidad de aplicaciones que se puedan ejecutar a la misma vez dependerá de la capacidad de la CPU.
Por ende si estamos trabajando en un proyecto de Software es importante conocer la cantidad de almacenamiento en memoria que va a necesitar para ejecutarse,cuanto más necesite más peligroso se puede volver su rendimiento.
Por ejemplo si un programa consume demasiada memoria y los usuarios abren varios programas a la vez y uno de los software consume demasiada memoria, podría acaparar los recursos del sistema, afectando el rendimiento de otras aplicaciones e incluso del sistema operativo en general. Imagina que estás trabajando en un proyecto para crear un juego o una plataforma de streaming, se necesitará almacenar un gran volumen de datos por la cantidad de gráficos que se necesiten, lo que demanda una gran capacidad de memoria, por lo que podemos esperar que el rendimiento de la CPU se vea afectado y que el Software no sea óptimo. Esto afecta directamente la Experiencia de Usuario (UX), ya que el programa se puede congelar, ponerse lento, tardar en cargar y responder lentamente, frustrando al usuario. Si hacemos pruebas de performance, es importante considerar que si el software consume demasiada memoria, las pruebas evidenciarán fallas inevitablemente.
Seguramente has escuchado que una computadora tiene una CPU Intel Core i5, una CPU AMD Ryzen 5 ó una CPU ARM Cortex A53; estos nombres reponden a las empresas reconocidas en el mercado de fabricación de CPU, como Intel, AMD y ARM que ofrecen procesadores con diferentes arquitecturas, los cuales permiten a las empresas crear software que se adecue a las necesidades de sus clientes, las que además evolucionan constantemenente para ofrecer CPU más potentes y eficientes.
Para que la CPU funcione,necesita:
- La Unidad Aritmético-Lógica o ALU, que se encarga de realizar las operaciones matemáticas y lógicas.
- La Unidad de Control y Tiempos o CU, que se encarga de coordinar todo.
Estas dos unidades permiten que el equipo pueda realizar operaciones de manera simultánea. Las CPU modernas suelen tener múltiples núcleos, que son unidades de procesamiento independientes que permiten realizar varias tareas simultáneamente, lo que mejora significativamente el rendimiento, especialmente al hacer varias cosas a la vez.
Las CPU modernas suelen tener múltiples núcleos, que son unidades de procesamiento independientes que permiten realizar varias tareas simultáneamente, lo que mejora significativamente el rendimiento, especialmente al hacer varias cosas a la vez.
Entre estos otros núcleos se encuentra: la Unidad de Procesamiento Gráfico ó GPU, que es un procesador dedicado a la visualización de contenidos, como imágenes, videos, etc., es lo que permites que puedas ver la pantalla de un monitor. Como información extra incluyo, que existen GPU externas conocidas como las tarjetas gráficas que algunas emprezas como Nvidia y AMD han desarrollado para mejorar el rendimiento de la CPU para usuarios que consumen Softwares que demandan más gráficos y operaciones más complejas, como para gamers, los Modelos de lenguaje (LLM) o las IA en general y la minería de criptoactivos, ya que puede realizar operaciones más complejas con mucha eficiencia.
Además ofrecen otras GPU más desarrolladas para el renderizado gráfico de animaciones y para CGI (Computer Generated Imagery), esta usada en el cine y en la televisión para crear efectos especiales e imágenes dinámicas y complejas.
Para trabajar de forma eficiente, la CPU utiliza:
- El Almacenamiento de Datos Permanente, "Disco Duro" ó SSD, que es una memoria de almacenamiento de datos de alta capacidad y durabilidad, aunque es un poco lenta para acceder.Es donde el procesador coloca los datos de las aplicaciones permanentemente, o sea, donde se guardan los archivos, las bases de datos, las copias de seguridad, etc. Sería como una memoria de trabajo permanente, con gran capacidad de almacenamiento, si instalamos un Software para hacer cálculos estadísticos por ejemplo, todos los recursos, instrucciones, etc, se van a guardar en el disco duro, así todos los Software que use el equipo se guardan aquíy así el procesador (CPU) accede a esta información y ejecuta los programas que se requieran. Si se apaga el equipo la información se mantiene guardada en el disco duro, al volver a encender si se requiere un Software determinado, el procesador accede a la información almacenada en el disco duro y se ejecutan los programas que se requieran.
- La Memoria de Acceso Aleatorio o RAM, que es una memoria temporal, de mayor velocidad y volátil. El procesador lo toma como memoria intermedia, pues su lectura y escritura de datos es mucho más veloz que el almacenamiento del (SSD). Piensa en ella como el escritorio: que es la primera pantalla que vemos cuando se enciende el equipo, así el procesador accede a ella y coloca los datos y aplicaciones que está usando activamente para un acceso rápido. Cuanta más RAM tenga un equipo, más "espacio de trabajo" tendrá para ejecutar programas y cambiar entre ellos sin ralentizarse. Es más volátil en relación a la SSD, diferencia del almacenamiento permanente, la RAM pierde su contenido cuando el equipo se apaga, o se corta la energía.
- Memoria Caché: Las CPUs modernas tienen niveles de memoria caché (L1, L2, L3) que son extremadamente rápidos y están ubicados muy cerca de sus núcleos del procesador. Estos cachés almacenan los datos e instrucciones más frecuentemente utilizados. Si el software está bien optimizado para el uso de la memoria, es más probable que los datos necesarios ya estén en la caché, lo que permite a la CPU procesarlos sin demoras significativas. Un software que demanda mucha memoria de forma desorganizada puede causar "fallos de caché", donde la CPU tiene que ir a la RAM con más frecuencia,ralentizando el proceso.

En resumen:el Procesador es el cerebro de la computadora y es el que "piensa" para ejecutar las instrucciones del software y realizar las operaciones, la Unidad Aritmética-Lógica (ALU) y la Unidad de Control y Tiempos (CU), coordinan las operaciones, organizan las instrucciones y ordenan los recursos que necesita el procesador para ejecutar las tareas y la GPU contribuye a la visualización gráfica de contenidos, actúan como estructuras dentro del cerebro. Para lograr una ejecución del programa la CPU accede a las memorias del equipo, en caso se que sean operaciones rápidas accede a la memoria RAM como una memoria rapida a corto plazo y en caso de accesos más lentos y de mayor cantidad de datos accede a la SSD o disco duro, así el procesador los archivos y datos que necesita para su ejecución.
Pero, la CPU y sus componentes, para poder funcionar requieren de un programación especial, para que las partes interactúen y se ejecuten todas sus operaciones, relacionadas, digamos que se necesita una mente que pueda pensar, así es como se necesitan los Sistemas Operativos, digamos que puedes tener el hardware pero necesitas que este trabaje.

Existen otros componentes físicos que forman parte del conjunto de hardware de la computadora que también son importantes, incluso comoponente externos como un monitor, teclado, ratón, etc., todas estas partes estarán vinculadas a la CPU, ya que requieren de su dirección para poder funcionar, a instancias de esta explicación no se particulariza en estos componentes, pero es importante acalarar que son también piezas importantes de la lógica de funcionamiento de un dispositivo computativo.
Los Sistemas Operativos
Los Sistemas Operativos (SO) ó (en inglés: OS) son un conjunto de programas que conforman el software fundamental de una computadora, que gestiona los recursos de hardware y software de esta, haciendo posible que las aplicaciones funcionen y que los usuarios interactúen con la máquina, es lo que permite que el dispositivo computacional funcione.
Los SO tienen dos grnades conjuntos en la organización de su lógica:
Las Aplicaciones que son los programas que se ejecutan en el equipo, como el explorador de archivo, el editor de texto el reproductor de audio, un navegador web, una aplicación de escritorio, una terminal de comandos.
El núcleo o kernel, que es el software que se comunica directamente con el hardware y se encarga de gestionar los recursos en este, como el procesador, la memoria, la tarjeta gráfica y el resto de funciones del sistema operativo, que maneja el sistema de ficheros, el acceso a la red y otras tareas de bajo nivel que son críticas para el rendimiento.
Cuando se necesita utilizar una aplicación del SO, esta por detrás accede al kernel, este naneja el uso de recursos de hardware que se requieren para que la aplicación se pueda ejecutar, como por ejemplo asignar un espacio de memoria a un proceso, o el acceso a un dispositivo de entrada y salida como por ejemplo un teclado, un monitor, una impresor, una speaker, etc.
Los SO ofrecen una interfaz, haciendo posible que los usuarios interactúen con la máquina.
Es como el director de orquesta de la computadora, desde gestionar las partes del hardware, hasta gestionar los Software que se ejecuten en estas. Es un programa de control que se encarga de supervisar todas las demás aplicaciones que se ejecutan,manejando tareas esenciales como las interrupciones, controlando los dispositivos de entrada y salida (E/S).
Además gestiona cómo los programas se cargan y utilizan la memoria.
Sus funciones principales incluyen manejar los dispositivos, controlar los programas y procesar las órdenes que se le dan. Se podría programar un SO desde 0, para que tu dispositivo computacional funcione, pero esto sería tarea muy compleja, pues requiere organizar las ejecuciones del procesador, el almacenamiento de datos y la comunicación entre los componentes del equipo, además de como se gestionan los recursos del equipo para poder ejecutar los Softwares que se le instalen, por otra parte se requieren muchas capas de lenguajes de programación.
Existen muchos SO, precompilados o preinstalados que los usuarios suelen emplear, algunos pagos como Windows y Mac OS X , y otros gratuitos de código abierto como Linux, existen otros como Solaris,FreeBSD, Unix, etc.

Windows y Linux
En el panorama actual, Windows de la empresa Microsoft ha sido históricamente el sistema operativo dominante en computadoras personales, creado por Bill Gates en 1985, siendo conocido por su usabilidad intuitiva para usuarios no expertos y una amplia compatibilidad de software y controladores. Sin embargo, su posición mayoritaria lo convierte en un objetivo preferente para ataques de malware y virus, y su naturaleza propietaria limita la transparencia de su código ya que no es de código abierto, o sea no podrías personalizar o modficar sus funcionalidades.
Por otro lado, Linux tiene un kernel de sistema operativo de código abierto, credo por Linus Torvalds en 1991, que ha dado origen a numerosas distribuciones (como Ubuntu), retomo que el kernel es la parte que que controla el hardware y permite que las aplicaciones se ejecuten, en conjunto con Lnux se asocia GNU que es el conjunto de aplicaciones que permiten el uso de Linux para crear un sistema operativo y el software libre, de aqui que se reconozca como GNU Linux. Linux destaca por su excepcional estabilidad, seguridad y velocidad, y al ser de código abierto, permite una mayor transparencia y personalización. Su código fuente es accesible para todos y puede ser modificado y distribuido libremente, se utiliza en numerosos sistemas informáticos de todo el mundo. Por lo que se han creado SO que utilizan el Kernel de Linux y un conjunto de aplicaciones de software libre de manera diferente y dan lugar a nuevas instancias de GNU Linux como Debian, Ubuntu, Fedora, Red Hat, entre otros . Si bien muchas distribuciones modernas incluyen interfaces gráficas amigables, el uso de Linux a menudo requiere conocimientos más especializados y familiaridad con la línea de comandos, lo que puede representar un desafío para usuarios menos técnicos. A pesar de tener una menor compatibilidad directa con cierto software comercial, Linux es una opción potente y gratuita, especialmente valorada por profesionales de TI y se usa para comnfigurar entornos de servidor de alto rendimiento.
En un sistema operativo de un dispositivo móvil, si bien los principios fundamentales son los mismos que en una computadora: controlar el hardware y el software para que el ordenador funcione correctamente. Los SO más difundidos son iOS y Android, las aplicaciones móviles, desarrolladas con lenguajes como Swift para iOS y Kotlin para Android, están diseñadas para aprovechar al máximo las funcionalidades específicas del hardware de los teléfonos, como la cámara o los sensores. Esto sugiere que los sistemas operativos móviles están altamente optimizados para esa integración más profunda y el rendimiento específico en un entorno de dispositivo portátil.
