Originalmente las computadoras no tenían sistemas operativos. Cada vez que quisieras ejecutar un programa, cargarías ese programa en la computadora y señalarías el Contador del programador al inicio del programa. Si necesitaba acceso a una impresora o unidad de cinta, tenía que escribir el código para llenar los búferes y luego transmitir el búfer al dispositivo. El tiempo siempre fue un gran problema.
A medida que pasaba el tiempo, la gente descubrió que otros tenían módulos escritos que abordarían los problemas de comunicación con el dispositivo deseado de una manera mucho más completa de lo que usted podría escribir el dispositivo, y comenzaron a agregar estos módulos a sus programas cada vez que cargaban un programa que Se necesita acceso al dispositivo. Finalmente, a alguien se le ocurrió la idea de cargar estos módulos permanentemente en la memoria para que estuvieran disponibles para todos los programas cuando se cargaran. Esta colección de módulos disponibles permanentemente se llamaba Sistema operativo.
Esto llevó a la idea de la administración de memoria, porque no quería que su programa escribiera sobre las áreas de memoria donde estaba almacenado el sistema operativo. Eso le habría hecho imposible acceder a los módulos que necesitaba para comunicarse con los dispositivos que su Programa de Aplicación necesitaba.
Finalmente, el sistema operativo asumió tareas como la comunicación con impresoras, dispositivos de almacenamiento, terminales, la gestión de cuándo se ejecutarían los programas, la gestión de entornos multitarea, etc.
Hasta principios de la década de 1970, los sistemas operativos estaban escritos en lenguaje ensamblador y cada sistema operativo era específico de la máquina para la que estaba escrito. El sistema operativo para un PDP-11 no funcionaría en un IBM-370 o un Honeywell-6000. De hecho, el sistema operativo para un PDP-8 no funcionaría en un PDP-11, etc.
A principios de la década de 1970, los científicos (Kernighan, Ritchie, McIlroy y Neumann) de Bell Labs (Murray Hill, Nueva Jersey) estaban investigando un sistema operativo que llamaron Unics (más tarde UNIX) y decidieron volver a codificar partes del sistema. en C, un lenguaje que en ese momento estaba siendo desarrollado por Dennis Ritchie con la ayuda de Ken Thompson.
Escribir UNIX en C permitió que partes del sistema operativo se transfirieran a otras máquinas sin tener que rediseñar y volver a escribir todo el sistema operativo. Las partes del sistema operativo que no se podían portar porque involucraban acceso directo a hardware que sería diferente para cada tipo de máquina se llamaban Kernel. El Kernel es parte del sistema operativo, pero es específico del hardware en el que se ejecuta. El resto del sistema operativo se puede escribir una vez en un lenguaje de alto nivel (como C), luego se puede portar a una nueva máquina volviendo a compilarlo en la nueva máquina. El sistema operativo todavía se encarga de la gestión de memoria, gestión de dispositivos y comunicación, gestión de ejecución, etc.
Con el paso del tiempo, la gente comenzó a incluir otros programas como compiladores, utilidades, editores, etc. en su definición de la frase Sistema operativo. A menudo, estos son programas que se instalan como parte estándar del sistema operativo. Incluso encontrará algunas personas que incluyen navegadores web, hojas de cálculo y procesadores de texto en su definición de sistema operativo. Para mí, los compiladores, los navegadores, los procesadores de texto, etc. son programas de aplicación y no son realmente parte del sistema operativo.
El sistema operativo es el conjunto de programas que residen en la computadora que administra los recursos de la computadora, permite que los programas accedan a esos recursos y arbitra entre los programas que intentan usar esos recursos simultáneamente. El kernel es la parte del sistema operativo que se escribió específicamente para la máquina en la que se está ejecutando y no se puede portar fácilmente a otra máquina.
Pregunta: ¿Cuál es la diferencia entre un núcleo y un sistema operativo?
Fuentes:
- Unix – Wikipedia
- C (lenguaje de programación) – Wikipedia
- Sistema operativo – Wikipedia