159 lines
8.8 KiB
TeX
159 lines
8.8 KiB
TeX
|
\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}
|