Tu computadora vino con un sistema operativo (SO) instalado. Los sistemas operativos son los programas fundamentales con los que interactúan tus aplicaciones para comunicarse con la computadora. Para las computadoras con teclados, probablemente sea Linux, MacOS o Windows. Para teléfonos y tabletas, probablemente sea Android o iOS.
En términos generales, el sistema operativo se encarga de las tareas básicas de las que dependen tus aplicaciones, incluyendo:
El núcleo se ocupa directamente del hardware (teclado, ratón, micrófono, cámara, discos duros, memoria, impresora, altavoces, pantalla, etc.). Así que el núcleo está generalmente escrito en un lenguaje de bajo nivel para que pueda controlar ese hardware. Se encarga de varias tareas importantes:
Hoy en día, los núcleos OS son notablemente similares. De los cinco sistemas listados anteriormente (Linux, macOS, Windows, Android, e iOS), cuatro de ellos (todos menos Windows) están basados en variantes de un solo núcleo, llamado Unix.
Lee más información acerca de Unix.
("Unix" es una marca registrada, actualmente propiedad de The Open Group y no todas las variantes que se discuten aquí están autorizadas a usar ese nombre, pero todas ellas proporcionan esencialmente la misma interfaz de programa). Unix fue creado alrededor de 1970 por Ken Thompson y Dennis Ritchie en los Laboratorios AT&T Bell.
Antes de Unix, casi todo el mundo pensaba que un sistema operativo tenía que ser desarrollado para una arquitectura de computadora en particular y tenía que ser escrito en el lenguaje de máquina de esa computadora, las instrucciones de muy bajo nivel que el hardware entiende directamente. La primera versión de Unix también fue escrita en el lenguaje de máquina de una computadora en particular, la Digital Equipment Corporation PDP-7. Pero los desarrolladores de Unix sabían que el PDP-7 no era la única computadora del mundo y que vendrían otras mejores, así que querían hacer que Unix fuera portátil, lo que significa que podría ser llevado a una nueva arquitectura de computadora sin una reescritura completa. Así que en 1972 Dennis Ritchie inventó el lenguaje de programación C para ese propósito. El C es similar a otros lenguajes disponibles en esa época, pero con una característica añadida: un programador de C puede leer o escribir cualquier byte individual de la memoria del programa conociendo su dirección, un número que lo distingue de otros bytes. (Puedes ver que esta característica es bastante opuesta a la abstracción de alto nivel. Solo es útil para un programador que está pensando en detalle sobre qué es y dónde está en la memoria de la computadora). Unix fue entonces reescrito en C.
Debido a su portabilidad, Unix se extendió rápidamente a muchas arquitecturas de computadoras. Los investigadores de Berkeley desarrollaron una versión, basada en la versión de AT&T, con memoria virtual, la capacidad de ejecutar un programa que solo está parcialmente en la memoria principal de la computadora, con el resto guardado en un disco. Esta versión de Berkeley es un ancestro de los sistemas operativos de Apple, macOS (desde macOS 10.0) e iOS. (Una computadora Apple no se comporta como una computadora Unix, pero las diferencias están casi todas en los programas de nivel de aplicación, no en el núcleo.) Android, el sistema operativo de Google para teléfonos celulares y tabletas, está basado en Linux, una reescritura completa de Unix escrita originalmente por Linus Torvalds, quien era, en ese momento, un estudiante de informática en Finlandia.
Los programas a nivel de aplicación que formaban parte del paquete original de Unix han sido reemplazados, en la mayoría de los sistemas, por programas reescritos del paquete GNU (acrónimo de Gnu's Not Unix) de la Fundación por el Software Libre o Free Software Foundation.