\documentclass[12pt,a4paper]{article} \usepackage[spanish]{babel} \usepackage{graphicx} \usepackage{wrapfig} \title{El Sistema Operativo: Una Historia} \author{Nicolás Andrés Ortega Froysa} \begin{document} \maketitle \section{Evolución del Sistema Operativo} Para poder comprender la historia de los sistemas operativos, es necesario comprender qué es y por qué se desarrolló en primer lugar. Originalmente los ordenadores servían para resolver una única tarea, y por lo tanto su programación era muy específica a esa máquina. De este modo, no hacía falta que un software fuese generalizado para varios tipos de ordenadores, ya que para cada ordenador distinto se programaba su tarea. Mas esto limitaba mucho la usabilidad de las computadoras, ya que sólo se podían usar para una tarea. Si uno quisiera ejercer otra tarea con la misma máquina tendría que escribir el código desde cero, y el código tendría que ser específico a las propiedades (e.g.\ periféricos, tamaño de memoria, almacenamiento) de esa máquina. Es decir, con que dos máquinas no fuesen exactamente iguales en sus componentes y periféricos, el mismo código no podría correr en ambas ya que la forma de comunicar con estos componentes y periféricos cambiaría de una a otra. Por poner un ejemplo simple, imagine un monitor que recibe los datos por medio de un bloque de datos de 256 bytes, y otro que lo recibe por un {\em streaming} que se hace byte por byte. Si el código fuese creado de modo que sólo funciona con uno, sería absolutamente incompatible con el otro. Para resolver este problema y por lo tanto aumentar la usabilidad de las computadoras, se inventaron los sistemas operativos para abstraer el hardware y así hacer que el software fuera más portable de un sistema a otro. De este modo, el software tan sólo tendría que usar el interfaz que provee el sistema operativo, que sería uniforme, y el sistema operativo, por su parte, se ocuparía de transmitir esta información al hardware correspondiente, siendo programado para poder tratar con una variedad más amplia de configuraciones. Usando nuestro ejemplo de antes, el software simplemente enviaría el texto a escribir a la pantalla al sistema operativo por el método que fuere, y el sistema operativo, sabiendo en el arranque qué tipo de monitor está conectado a la máquina, enviaría los datos de forma que lo entendería ese hardware en concreto. A consecuencia de esto, los sistemas operativos también llegaron a implementar métodos para manejar los recursos de la máquina (e.g.\ memoria, CPU), en particular cuando se desarrollaron los sistemas multiprogramados. Al tener varios programas corriendo en la máquina a la vez, es necesario distribuir de manera eficaz y justa los recursos del sistema. De esta tarea también se encargaron los sistemas operativos. Con esta evolución, el sistema operativo ha quedado como un interfaz entre el software y el hardware, además de arbitro entre los propios procesos del ordenador. En la actualidad se van designando más tareas todavía a este programa para poder aprovechar del mejor rendimiento y control de la máquina. \section{IBM y los Primeros Sistemas Operativos} Los primeros sistemas operativos se hicieron para las computadoras de IBM, que en esta época tan sólo se usaban en ambientes de industria, academia, o militar. Cada sistema operativo era muy específico a la máquina en sí, y muy diferente de los demás. Mientras que hoy en día estamos acostumbrados a que en todos los sistemas haya cierta similitud de comandos e interfaces, este no era el caso en los años 50. Los sistemas operativos eran muy diversos y sus comandos e interfaces variaban radicalmente debido a que se desarrollaron de forma completamente independiente, lo cual no había ningún estándar al que todos conformaban. Aún así servían para su propósito que era abstraer los dispositivos periféricos que se usaban en conjunto con la máquina. Esto continuó de esta manera hasta los años 60, en que IBM tomó la decisión técnica y de negocios de facilitar lo que ya estaban haciendo sus clientes. En 1964 anunciaron la creación de la serie {\em System/360}; una serie de máquinas caracterizadas por usar el mismo juego de instrucciones y comandos de entrada/salida. Todo esto fue con la intención de desarrollar un único sistema operativo para toda la serie: {\em OS/360}. Aunque esto fue un fracaso tan estrepitoso debido a la diferencia de rendimiento tuvieron que desarrollar también una serie de variaciones del sistema operativo en sí. \section{Minicomputadoras y la Computación en Tiempo-Real} En los años 60 se estaba viendo la potencial que tenían las computadoras, no sólo para resolver tareas programadas, sino también para resolver problemas con entradas en tiempo-real. Para esto, se empezaron a desarrollar sistemas operativos en tiempo-real (RTOS). El más famoso de éstos fue el sistema operativo UNIX, que fue desarrollado en Bell Laboratories de AT\&T por Ken Thompson y Dennis Ritchie (entre otros). Este sistema operativo revolucionó el mundo de la informática, especialmente con su nuevo lenguaje de programación, C, que facilitaba la abstracción de las instrucciones de cada arquitectura en una lógica única. Esto fue muy necesario en esta época en que había tantas arquitecturas, y por lo tanto, tantos juegos de instrucciones distintos. Esto significaba que (en teoría) se podría escribir el código en C una vez y se podría compilar para cualquier sistema. Gracias a esta revolución, cada vez que C se porteaba a otra arquitectura, el sistema operativo UNIX también se podía portear a la misma. Esto fue facilitado por el hecho de la filosofía de desarrollo que seguía, que se fundamentaba en modularidad y simplicidad, que se denomina de forma popular como la {\em filosofía UNIX}. Esto lo convirtió en modelo para la computación moderna y todos sus sucesores. Es así hasta el punto que es casi imposible encontrar algún sistema operativo moderno que no esté escrito en algún lenguaje de alto nivel (sea C, C++, Rust, u otros). Su filosofía también dio lugar a los movimientos de software libre y código abierto, además de inspirar la creación de proyectos como serían GNU is Not UNIX (GNU), Linux, las variaciones de BSD, y macOS. \pagebreak \section{Microcomputadores: Computación para las Masas} \begin{wrapfigure}{r}{0.4\linewidth} \begin{center} \includegraphics[width=0.45\linewidth]{imgs/system-hierarchy.png} \end{center} \caption{Jerarquía de un sistema.} \label{fig:system-hierarchy} \end{wrapfigure} Ya para los años 70 empezaron a llegar los microcomputadores. Aunque al principio eran para los aficionados a la computación, seguirían desarrollándose hasta convertirse en lo que hoy en día reconoceríamos como un ordenador PC. En esta nueva época de computación, los sistemas operativos se tenían que adaptar a las necesidades cotidianas, que solían precisar de un uso altamente compartido de los recursos entre muchos procesos a la vez. Ya el sistema operativo cobraba cada vez más importancia, aunque pasase completamente desapercibido por el usuario que se fijaba únicamente en las aplicaciones gráficas que veía en la pantalla. Los sistemas operativos más populares para salir en esta época de la computación serían: Microsoft Windows, macOS, GNU/Linux, y BSD. \subsection{Microsoft Windows} El sistema operativo más popular para los PCs es sin duda Microsoft Windows. Su primera versión, Windows 1.0, salió al mercado en 1985. Fue un intento de poner un interfaz gráfico por encima de MS-DOS, que lo precedía. Se popularizó sobre todo por ser un sistema que intentaba acomodar al usuario final en las tareas cotidianas, y por lo tanto también se encargó de soportar una gran variedad de hardware. Hasta hoy sigue siendo uno de los sistemas que más dispositivos y periféricos soporta. \subsection{macOS} Sistema desarrollado por Apple Inc., originalmente tuvo su propia base, mas después de un fracaso y de casi desaparecer del mundo de la computación decidieron adoptar el modelo UNIX, rompiendo el soporte con versiones anteriores para poder proveer un sistema más estable y sostenible. Para hacer esto tomaron bastante código del sistema operativo BSD, usando su propio kernel, y desarrollaron la versión Mac OSX en 2001. Se popularizó por proveer una computación más estable, seguro, y fácil de usar que Windows, además de enfocarse en la estética de sus productos. Originalmente macOS estaba hecho para correr en CPUs con la arquitectura de PowerPC, mas cuando esto empezó a caer en desuso, y había una falta de aplicaciones que lo soportaban, empezaron a cambiar también a la arquitectura x86, y sus ordenadores usaban CPUs de Intel. Recientemente han empezado a cambiar de nuevo su arquitectura de base, adoptando la arquitectura de ARM con los CPUs M1. \subsection{GNU/Linux} \subsection{BSD} \end{document}