diff --git a/1/ISO/assignments/historia-ssoo/historia-ssoo.pdf b/1/ISO/assignments/historia-ssoo/historia-ssoo.pdf new file mode 100644 index 0000000..f9e38e0 Binary files /dev/null and b/1/ISO/assignments/historia-ssoo/historia-ssoo.pdf differ diff --git a/1/ISO/assignments/historia-ssoo/historia-ssoo.tex b/1/ISO/assignments/historia-ssoo/historia-ssoo.tex new file mode 100644 index 0000000..a6eae25 --- /dev/null +++ b/1/ISO/assignments/historia-ssoo/historia-ssoo.tex @@ -0,0 +1,158 @@ +\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} diff --git a/1/ISO/assignments/historia-ssoo/imgs/system-hierarchy.png b/1/ISO/assignments/historia-ssoo/imgs/system-hierarchy.png new file mode 100644 index 0000000..e10b2b0 Binary files /dev/null and b/1/ISO/assignments/historia-ssoo/imgs/system-hierarchy.png differ