Ir al contenido principal

Entradas

Qué es FrameBuffer?

Todos los días cuando las personas, principalmente usuarios comunes, utilizan la computadora observan la pantalla, pero muchas de estas personas no conocen como se visualizan los elementos en la pantalla; en muchos dispositivos la clave está en algo llamado framebuffer, el cual se explica un poco a continuación. El framebuffer consiste en la utilización, por parte de los dispositivos, de una sección de memoria la cual utilizará para la representación de los pixeles en pantalla, por lo general se representa como una matriz de pixeles y así en la memoria, aunque es evidente que a nivel de memoria no existen matrices todo se realiza mediante una implementación a partir de estas posiciones. Cuando se habla de que el framebuffer utiliza una sección de memoria en realidad es un archivo dentro del sistema, dicho archivo es el que se puede modificar, por parte de desarrolladores principalmente, y es el que el sistema modifica para a partir de los valores que contenga este archivo most...

Procesadores Neuronales

Muchas veces se escucha sobre temas de procesadores, pero en la mayoría de los casos es referente a el numero de núcleos, la frecuencia o la arquitectura, ya sea RISC o CISC, pero rara vez escuchamos los llamados procesadores neuronales, a continuación, se explica un poco que son estos procesadores. Los procesadores neuronales funcionan (se supone) como la red neuronal del cerebro humano, según IBM su procesador neuronal posee tantas neuronas como el cerebro de un ratón, estos procesadores funcionan muy diferentes de los tradicionales que ejecutan instrucciones, los neuronales poseen una serie de ‘neuronas artificiales’ conectadas entre sí que buscan predecir los resultados mediante una serie de parámetros establecidos para un problema. Estos procesadores buscan mayor velocidad y eficiencia, imitando el funcionamiento del cerebro el cual es fantástico, de esta manera implementar algo muy deseado en la computadoras que es la capacidad para aprender, pero para esto falta bastant...

Ciclo Fetch Decode Execute

El encargado de ejecutar un programa en una computadora u otro sistema computacional es el CPU, lo realiza siguiendo el llamado ciclo Fetch Decode Execute, con este ciclo se ejecutan todas las tareas que una computadora puede realizar. Este ciclo tiene algunas variantes y conforme ha avanzado el tiempo y la tecnología ha sufrido algunos cambios, pero el ciclo básico se conforma de las siguientes etapas: Traer la instrucción: Se obtiene la instrucción desde memoria y se almacena en el registro del CPU para instrucciones. Decodificar la instrucción: Se identifica el modo de direccionamiento de la instrucción y la ubicación de los datos a tratar, ya sea de memoria, registro o instrucción directamente. Carga de Parámetros: Se ejecuta la lectura, cargando todos los datos identificados en el paso anterior. Ejecutar: Se ejecuta la instrucción ya configurada, realiza la tarea indicada, ya sea una suma, resta, almacenar información, extraer información etc. Almacenar: Se almacen...

Llamadas al sistema

Los sistemas operativos básicamente administran los recursos de una computadora y facilitan su uso por parte de los usuarios, dentro de esto los sistemas operativos permiten la ejecución de aplicaciones que ya tenga por defecto el sistema o que se hayan desarrollado, pero estas aplicaciones utilizan muy frecuentemente las llamadas al sistema para poder realizar su función, dichas llamadas son controladas por el sistema operativo. Sistemas Operativos -  Fuente Cada sistema operativo tiene su conjunto de llamadas al sistema, así por ejemplo las llamadas al sistema de Windows no serán las mismas que las de Ubuntu Linux, debido a esto es muy común que una aplicación desarrollada en un sistema no funcione cuando se intente ejecutar en otro. Los programas hacen uso de las llamadas al sistema porque son funciones con privilegios del sistema, ya que el usuario y aplicaciones no tienen acceso al conjunto de instrucciones restringido del procesador, pero sí lo tiene el sistema opera...

Microcontrolador – Arduino

El Arduino es una plataforma de hardware abierto todos sus diagramas, planos y otros datos sobre este dispositivo están disponibles para todos en su página web y otros sitios, esto permite crear prototipos más fácilmente. Arduino UNO -  Fuente Al igual que una computadora el Arduino tiene memoria, CPU y compatibilidad para dispositivos de entrada y salida, pero un poco diferente, por ejemplo, la CPU no están poderosa como para ejecutar un sistema operativo y por lo general los dispositivos de entrada y salida en el Arduino son otros dispositivos como los sensores de calor, sensores de luz o luces led, pantallas entre muchos otros dispositivos. Algo muy importante es que este dispositivo solo puede ejecutar una tarea (programa) a la vez, situación que no sucede en las computadoras normales. Esto se debe también, a que el Arduino viene siendo un microcontrolador y no una computadora. Este dispositivo siempre está ejecutando un programa en un ciclo infinito, cuando los pr...

Ventajas de Programar en Ensamblador

El lenguaje de programador ensamblador es muy conocido por todos los programadores, pero también muy excluido, una pregunta que puede surgir es la siguiente, ¿por qué programar en ensamblador cuando se tienen diversos lenguajes de alto nivel que facilitan el desarrollo? A continuación, se mencionan algunos motivos para ello. Como se sabe, existen muchos lenguajes de programación de alto nivel como C, C++, C#, JAVA entre otros que presentan muchas características avanzadas y en algunos casos en conjunto con IDE (Integrated Development Environment) aceleran y facilitan mucho la elaboración de software. Sintaxis Ensamblador.  Fuente Hay que tener en cuenta que estos lenguajes de alto nivel, a pesar de ser muy útiles, muchas veces los programas resultantes requieren de computadoras con recursos informáticos considerables para poder ejecutarse de forma óptima. Recordemos que todo código escrito en lenguaje de alto nivel es transcrito de forma automática a lenguaje ensamblador...

Estructuras de Control en Ensamblador

En los lenguajes de alto nivel disponemos de estructuras de control como “if” o “else” que nos permiten dar sentido a nuestro código , pero estas estructuras no están presentes en un lenguaje de bajo nivel como el ensamblador o no de la misma forma, como se detalla a continuación. Estructuras Condicionales: Estos tipos son los if, if-else, elif, switch, los más comunes en los lenguajes de alto nivel y los más utilizados. Estas estructuras no están del todo ausentes en lenguaje ensamblador, ya que al fin y al cabo estas instrucciones se convierten a ensamblador, en ensamblador se cuenta con instrucciones como CMP o TEST(Para comparar o evaluar) en el caso de ARM y sus equivalentes en las demás arquitecturas de procesadores. Para poder crear los condicionales se debe utilizar una combinación de estas (CMP, TEST, ...) junto con las instrucciones de Branch, Jump, etc según corresponda. Ejemplos If Else: If Else en Lenguaje C If Else en Lenguaje Ensamblador Estructuras...

Estructura de un Archivo Ensamblador Arm

Los archivos en lenguaje ensamblador para los procesadores Arm terminan en “.s”, esta es su extensión con la cual son creados los archivos para su posterior compilación, los archivos como en todo lenguaje llevan una estructura, a continuación se explica la estructura y algunas características comúnmente presentes en estos archivos. Las directivas: Son fácilmente reconocibles, ya que son las que empiezan por un “.”, estas son muy importantes dentro del archivo de ensamblador, esto debido a que permite definir las secciones de data y texto como “.data” y “.text” respectivamente, las directivas son palabras reservadas que el compilador entiende y le dan estructura para que sea posible interpretar el código en el archivo. Las Etiquetas: Son muy utilizadas y tambien muy importantes, las etiquetas empiezan al comienzo de una linea y estas deben finalizar con el carácter “:”, no pueden iniciar con numeros. Son muy importantes, ya que sirven para hacer referencia a esa parte de codigo...

Raspbian OS

Existen diversas distribuciones de GNU/Linux como Ubuntu, openSUSE, Fedora entre otras, pero estas no ofrecen experiencias muy distintas (en especial al usuario común). Existe una distribución relativamente nueva llamada Raspbian OS la cual tiene características muy particulares. Logo de Raspberry PI + Debian Formando Raspbian OS El sistema operativo Raspbian OS fue desarrollado para el dispositivo Raspberry PI, es una distribución de GNU/Linux como muchas otras, ya que está basada en Debian Wheezy pero fue modificada para funcionar en el procesador ARMv6 del Raspberry PI, dicho procesador posee arquitectura RISC como es común en dispositivos pequeños y modernos. El sistema operativo trae preinstalado herramientas para desarrolladores de software permitiéndoles trabajar en lenguajes de programación como PYTHON, C, JAVA y evidentemente el lenguaje ensamblador, este último con extensiones “.S” y respetando la arquitectura RISC. Raspbian OS cuenta con unos compiladores ...

Arquitectura RISC y CISC

Cuando se desarrolla una aplicación, se utilizan por lo general lenguajes de programación de alto nivel como JAVA, C++, PYTHON etc. Pero estos lenguajes durante su proceso de compilación se transforman en lenguaje ensamblador, existen casos en los cuales se desarrolla un software directamente en el lenguaje ensamblador, pero para poder realizar esto último se necesita saber la arquitectura del dispositivo. A continuación, se explicarán las arquitecturas RISC y CISC. La arquitectura RISC, su nombre significa en inglés Reduce Instruction Set Computer, y CISC que significa en Complex Instruction set Computer. El primero hace referencia a un conjunto reducido de instrucciones en el procesador, mientras que el segundo se refiere a un conjunto complejo de instrucciones. Estos dos, forman las dos arquitecturas de procesadores que podemos encontrar en los computadores actuales, y cada uno tiene sus usos específicos y particularidades respecto al otro. CISC (Complex Instruction Set Co...

Importancia de los Sistemas Numéricos en la Computación

Un sistema de numeración se define como un conjunto de símbolos y reglas que permiten representar datos numéricos. Además, los sistemas numéricos modernos se caracterizan por ser posicionales, ya que un símbolo tiene un peso según en la posición que se encuentre en la cifra numérica. Existen distintos sistemas numéricos modernos, los más comunes son: ·          Sistema Decimal : 0-1-2-3-4-5-6-7-8-9, (Diez símbolos) ·          Sistema Binario : 0-1, (Dos símbolos) ·          Sistema Octal : 0-1-2-3-4-5-6-7, (Ocho símbolos) ·          Sistema Hexadecimal : 0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F, (Dieciséis Símbolos) Todos los sistemas mencionados anteriormente tienen reglas y relaciones que permiten la realización de las operaciones básica que conocemos como la suma, resta, multiplicación, división. L...

Medidas de Rendimiento

El rendimiento de una computadora es muy importante en la actualidad, esto a causa de muchas razones, por ejemplo, las personas que juegan videojuegos necesitan tener una computadora que cumpla con los requisitos que piden sus juegos favoritos para ser ejecutados, otro ejemplo seria una persona que sea desarrollador de software, ya que por lo general necesitan un PC más potente que los comunes para poder ejecutar sus herramientas de trabajo. A continuación, se explicarán algunos aspectos y herramientas que se toman en cuenta para determinar el rendimiento de una computadora, específicamente del procesador. Sin perjuicio de otras definiciones llamaremos rendimiento al tiempo que se demora en realizar una determinada tarea. Cuanto menor sea ese tiempo mayor será el rendimiento (Pérez, 2017). Pero esto es un poco relativo, ya que existen procesadores multitareas que, al ejecutar una tarea su tiempo de ejecución es menor que procesadores que no presentan esta característica, pero l...