MercuryOS: Lectura de datos desde disco


Para poder cargar el SO desde nuestro bootloader tendremos que ser capaces de leer desde el disco, almacenar esta información en la memoria RAM y finalmente ejecutar las instrucciones que hemos cargado, en este artículo aprenderemos como leer y cargar estos datos.

 


Autor: kr0m -- 12/06/2020 02:50:36

MercuryOS: Segmentación de memoria en modo real 16bits


En este artículo aprenderemos como funciona un microprocesador en su fase de arranque mas temprana(modo real 16bits), también comprenderemos porque con un microprocesador que tiene registros de 16 bits no es capaz de direccionar mas de 64KB de RAM y como aumentar este límite a 1MB gracias a la segmentación de memoria.

 


Autor: kr0m -- 11/06/2020 00:12:05

MercuryOS: Funciones en ensamblador


Desde el punto de vista de la CPU una función no es mas que un salto a una dirección de memoria donde se encuentran las intrucciones de una rutina y un salto de retorno a la instrucción inmediatamente posterior al primer salto. En este artículo explicaré como se deben de llamar a las funciones para que sean reutilizables y que sea seguro su uso.

 


Autor: kr0m -- 10/06/2020 01:04:03

MercuryOS: IF-ELSE en ensamblador


Una de las estructuras mas básicas cuando se empieza a programar son las sentencias if, en este artículo explicaré un ejemplo muy sencillo en pseudocódigo y como traducirlo a ensamblador.

 


Autor: kr0m -- 09/06/2020 00:55:54

Servidor de paquetes binarios en FreeBSD mediante Poudriere


Todos conocemos las ventajas de utilizar binarios compilados a medida:

  • Menor consumo de RAM
  • Binarios mas pequeños
  • Versiones mas modernas de software
  • Menor superficie de ataque ya que se han eliminado todas las funcionalidades innecesarias del binario

El único inconveniente es el tiempo requerido para la compilación, pero y si dispusiésemos de un equipo con mayor potencia para realizar la compilación y utilizar estos binarios en nuestro servidor? Precisamente Poudriere se ocupa de esta tarea, compila binarios a medida desde los ports para que sean utilizados por otros equipos.


Autor: kr0m -- 08/06/2020 01:54:51

Downgradear un port en FreeBSD


Hay ocasiones en las que una versión determinada de un port tiene algún bug o no nos interesa tenerla instalada por alguna razón, para poder instalar un commit en concreto del port debemos utilizar la herramienta portdowngrade, con esta seremos capaces de ver el histórico de commits y revertir a uno de ellos.

 


Autor: kr0m -- 07/06/2020 04:01:39

MercuryOS: Pila


La CPU es capaz de almacenar información en los registros pero esto nos limita mucho en cuanto a tamaño, para solventar este problema utilizamos la memoria principal(RAM). Para leer/escribir algún dato en RAM necesitamos conocer la dirección de memoria en cuestión, como esto puede ser engorroso se ideó la pila, esta no es mas que una región de memoria donde se pueden ir apilando datos para posteriormente ir desapilándolos.


Autor: kr0m -- 06/06/2020 03:50:16

MercuryOS: Memoria


En este artículo aprenderemos como la BIOS organiza la RAM de forma interna y como localizar direcciones de memoria de variables de nuestro programa en ASM.

 


Autor: kr0m -- 05/06/2020 02:54:05

MercuryOS: Interrupciones


Las interrupciones permiten a la CPU pausar la tarea que estuviese haciendo en ese momento para ejecutar otra de mayor prioridad y poder volver a la tarea original una vez atendida la prioritaria. Las interrupciones pueden ser disparadas tanto por software(int 0x10) como por hardware(la llegada de un paquete por red). En este artículo utilizaremos la int0x10 para pintar por pantalla un texto.

 


Autor: kr0m -- 04/06/2020 00:48:06

MercuryOS: Boot Sector


Quien no ha fantaseado alguna vez en programar su propio SO, esta utopía puede llegar a materializarse con unos conocimientos mínimos sobre ensamblador y C, en este artículo se explicará el proceso de arranque de una computadora y como conseguir arrancar nuestro SO super reducido.

 

 


Autor: kr0m -- 02/06/2020 23:36:02