¿Qué es un sistema operativo?

Las clases de sistemas operativos en la que nos basaremos serán los denominados multiusuarios y de multiprogramación; es decir que varios usuarios podrán correr concurrentemente múltiples programas.

Un SO es una parte importante de casi cualquier sistema informático. Para entender mejor esto veremos que un sistema informático puede separar en cuatro partes:

Estas partes hacen de capas, cada una de las cuales acerca más al usuario a utilizar los recursos del hardware. El hardware (CPU, memoria y dispositivos) proporciona los recursos de computación básicos sobre los que se agregaran estas capas sucesivas. Los programas de aplicación como los compiladores, juegos, aplicaciones de negocios, etc. definen la forma en que estos recursos se emplearán para solucionar los problemas del usuario.

Puede haber varias clases de usuarios usando el sistema, como ser personas, programas y otras computadoras, tratando de resolver diversos problemas. El SO controla y coordina el uso del hardware entre los diversos programas de aplicación y los distintos usuarios, administrando todos los recursos como disco, memoria, impresoras, monitor, etc. El SO determina los tiempos en que un determinado programa utilizará un recurso dado.

Al comienzo de la era informática, los sistemas no utilizaban SO's. Estas computadoras de hace 40 años ejecutaban un programa a la vez que era cargado por un programador. Este cargaba el programa y lo ejecutaba. Si existía algún error que hiciera que el programa se detuviera antes de lo esperado, se tenía que comenzar de nuevo con todo el proceso. Recordemos que en esa época no había muchas computadoras en funcionamiento, así que el programador tenía que esperar de varios días hasta tener nuevamente su turno enfrente de la computadora. Los SO's existen porque son una solución razonable al problema de crear un sistema informático útil. El objetivo fundamental de los sistemas informáticos es ejecutar los programas de los usuarios y facilitar la resolución de sus problemas. Todo esto se hacía a través de tarjetas perforadas que una persona encargada cargaba en la computadora y luego de algunas horas devolvía la salida impresa al programador.

Al avanzar la tecnología informática, muchos de estos programas se cargaban en una sola cinta, otro programa residente en la memoria de la computadora, cargaba y manipulaba los programas de esa cinta. Este es el ancestro de los SO's de hoy en día. En la década del 60 la tecnología de SO's avanzo mucho y se podían tener múltiples programas al mismo tiempo en la memoria. Así surgió el concepto de multiprogramación. Si un programa necesitaba esperas a que ocurriera algún evento externo, como que una cinta se rebobinara, otro podría tener acceso a la CPU para así poder utilizar el 100% del poder de procesamiento con que contaba la computadora. Esto ahorraba mucho dinero ya que en aquel entonces todo en lo referente a cómputo (memoria, espacio en disco, etc) costaba cientos de miles de dólares. A finales de los 60's, en 1969, nació UNIX, SO que trataremos más adelante, y es la base de muchos de los SO's de hoy en día, aunque muchos no lo admitan.

Definir que forma parte de un SO y que no sería difícil, dada la gran variedad existente, pero una definición para los SO que nos compete en estos momentos seria que el SO es el programa que ejecuta todo el tiempo en la computadora (conocido usualmente como kernel o núcleo), siendo los programas de aplicación todo lo demás. En general un SO intenta incrementar la productividad de un recurso de proceso tal como el hardware de la computadora, o de los usuarios de los sistemas informáticos. Ahora bien, en lo referente a la utilización eficiente de un sistema informático no siempre se puede lograr que un SO lo logre. Casi siempre resulta contradictorio la comodidad y la eficiencia.