Alumno:
Docente:
Qu es un sistema operativo?
Los hay de todo tipo, desde muy simples hasta terriblemente complejos, y entre ms
casos de uso hay para el cmputo en la vida diaria, ms variedad habr en ellos.
Metas:
Tareas principales:
AOS 40
A finales de los aos 1940, con lo que podramos llamar la aparicin de la primera
generacin de computadoras, se acceda directamente a la consola de la computadora
desde la cual se actuaba sobre una serie de micro interruptores que permitan introducir
directamente el programa en la memoria de la computadora (en realidad al existir tan
pocas computadoras todos podran considerarse prototipos y cada constructor lo haca
sin seguir ningn criterio predeterminado). Por aquel entonces no existan los sistemas
operativos, y los programadores deban interactuar con el hardware del computador sin
ayuda externa. Esto haca que el tiempo de preparacin para realizar una tarea fuera
considerable. Adems, para poder utilizar la computadora deba hacerse por turnos. Para
ello, en muchas instalaciones, se rellenaba un formulario de reserva en el que se
indicaba el tiempo que el programador necesitaba para realizar su trabajo. En aquel
entonces las computadoras eran mquinas muy costosas lo que haca que estuvieran
muy solicitadas y que slo pudieran utilizarse en periodos breves de tiempo. Todo se
haca en lenguaje de mquina.
Proceso en serie
Este modo de operacin podra denominarse proceso en serie porque refleja el hecho de
que los usuarios tenan que acceder al computador en serie. Con el paso del tiempo se
desarrollaron varias herramientas de software de sistemas para intentar hacer ms
eficiente este proceso en serie. Entre stas se incluan bibliotecas de funciones comunes,
montadores, cargadores, depuradores y rutinas de manejo de E/S que estaban
disponibles como un software comn para todos los usuarios.
Monitor residente
Como solucin para optimizar el tiempo de montaje surgi la idea de agrupar los
trabajos en lotes, en una misma cinta o conjunto de tarjetas, de forma que se ejecutaran
uno a continuacin de otro sin perder apenas tiempo en la transicin.
Las primeras mquinas eran muy caras y, por tanto, era importante maximizar la
utilizacin de las mismas. El tiempo desperdiciado por la planificacin y la preparacin
era inaceptable.
Para mejorar el uso, se desarroll el concepto de sistema operativo por lotes (batch). El
primer sistema operativo por lotes fue desarrollado a mediados de los 50 por la General
Motors para usar en un IBM 701 [WEIZ81]. Este concepto fue refinado posteriormente
e implementado en un IBM 704 por una serie de clientes de IBM. A principios de los
60, un conjunto de constructores ya haba desarrollado sistemas operativos por lotes
para sus computadores. IBSYS, el sistema operativo de IBM para las computadoras
7090/7094, es particularmente notable por su amplia influencia en otros sistemas.
La idea central que est detrs del esquema sencillo de proceso por lotes es el uso de un
elemento de software conocido como monitor. Con el uso de esta clase de sistema
operativo, los usuarios ya no tenan acceso directo a la mquina. En su lugar, el usuario
deba entregar los trabajos en tarjetas o en cinta al operador del computador, quien
agrupaba secuencialmente los trabajos por lotes y ubicaba los lotes enteros en un
dispositivo de entrada para su empleo por parte del monitor. Cada programa se
construa de modo tal que volviera al monitor al terminar su procesamiento y, en ese
momento, el monitor comenzaba a cargar automticamente el siguiente programa.
Para entender cmo funciona este esquema, se va a ver desde dos puntos de vista: el del
monitor y el del procesador. Desde el punto de vista del monitor, l es quien controla la
secuencia de sucesos. Para que esto sea posible, gran parte del monitor debe estar
siempre en memoria principal y disponible para su ejecucin (figura 2.3). Esta parte del
monitor se conoce como monitor residente. El resto del monitor consta de utilidades y
funciones comunes que se cargan como subrutinas en los programas de los usuarios al
comienzo de cualquier trabajo que las necesite. El monitor lee los trabajos uno a uno del
dispositivo de entrada (normalmente, un lector de tarjetas o una unidad de cinta
magntica). A medida que lo lee, el trabajo actual se ubica en la zona del programa de
usuario y el control pasa al trabajo. Cuando el trabajo termina, se devuelve el control al
monitor, quien lee inmediatamente un nuevo trabajo. Los resultados de cada trabajo se
imprimen y entregan al usuario.
Considrese ahora esta secuencia desde el punto de vista del procesador. En un cierto
momento, el procesador estar ejecutando instrucciones de la zona de memoria principal
que contiene al monitor. Estas instrucciones hacen que el trabajo siguiente sea ledo en
otra zona de la memoria principal. Una vez que el trabajo se ha ledo, el procesador
encuentra en el monitor una instruccin de desvo que ordena al procesador continuar la
ejecucin en el inicio del programa de usuario. El procesador ejecuta entonces las
instrucciones del programa de usuario hasta que encuentre una condicin de finalizacin
o de error. Cualquiera de estos dos sucesos provoca que el procesador vaya a por la
instruccin siguiente del programa monitor. De este modo, la frase "el control se le pasa
al trabajo" quiere decir simplemente que el procesador pasa a leer y ejecutar
instrucciones del programa de usuario, mientras que la frase "el control vuelve al
monitor" quiere decir que el procesador pasa ahora a leer y ejecutar las instrucciones del
programa monitor.
Para ejecutar el trabajo, el monitor lee la tarjeta $FTN y carga el compilador adecuado
desde el dispositivo de almacenamiento masivo (generalmente una cinta). El compilador
traduce el programa de usuario en cdigo objeto, que se almacena en memoria o en el
dispositivo de almacenamiento. Si se carga en memoria, la operacin es conocida como
"compilar, cargar y arrancar" (compile, load, and go). Si se almacena en cinta, entonces
se requiere la tarjeta $LOAD. Esta tarjeta es leda por el monitor, quien retoma el
control despus de la operacin de compilacin. El monitor llama al cargador, que carga
el programa objeto en memoria en el lugar del compilador y le transfiere el control. De
esta manera, un segmento grande de memoria se puede compartir entre diferentes
subsistemas, aunque en cada momento slo uno de ellos tiene que estar presente y
ejecutndose.
Naturalmente, se puede construir un sistema operativo sin estas caractersticas, pero los
fabricantes de computadores comprobaron rpidamente que los resultados eran caticos
y, por tanto, incluso los sistemas operativos por lotes ms primitivos ya disponan de
estas caractersticas en el hardware. Por otro lado, hay que decir que el sistema
operativo ms utilizado del mundo, el PC-DOS/MS-DOS, no dispone de proteccin de
memoria ni de instrucciones privilegiadas de E/S. Sin embargo, como este sistema est
destinado a computadores personales de un solo usuario, los problemas que se pueden
originar son menos graves.
Almacenamiento temporal
La dcada de 1960
A lo largo de su ejecucin, un programa normalmente pasa por etapas con muy distintas
caractersticas: durante un ciclo fuertemente dedicado al clculo numrico, el sistema
opera limitado por el CPU (CPU-bound), mientras que al leer o escribir resultados a
medios externos (incluso mediante spools) el lmite es impuesto por los dispositivos,
esto es, opera limitado por entrada-salida (I-O bound). La programacin multitareas o
los sistemas multiprogramados buscaban maximizar el tiempo de uso efectivo del
procesador ejecutando varios procesos al mismo tiempo. El hardware requerido cambi
fuertemente. Si bien se esperaba que cada usuario fuera responsable con el uso de
recursos, result necesario que apareciera la infraestructura de proteccin de recursos:
un proceso no debe sobrescribir el espacio de memoria de otro (ni el cdigo, ni los
datos), mucho menos el espacio del monitor. Esta proteccin se encuentra en la Unidad
de Manejo de Memoria (MMU), presente en todas las computadoras de uso genrico
desde los aos noventa. Ciertos dispositivos requieren bloqueo para ofrecer acceso
exclusivo/nico: cintas e impresoras, por ejemplo, son de acceso estrictamente
secuencial, y si dos usuarios intentaran usarlas al mismo tiempo, el resultado para
ambos se corrompera. Para estos dispositivos, el sistema debe implementar otros spools
y mecanismos de bloqueo.
Sistemas de tiempo compartido El modo de interactuar con las computadoras se
modific drsticamente durante los aos sesenta, al extenderse la multitarea para
convertirse en sistemas interactivos y multiusuarios, en buena medida diferenciados de
los anteriores por la aparicin de las terminales (primero teletipos seriales,
posteriormente equipos con una pantalla completa como se conocen hasta hoy). En
primer trmino, la tarea de programacin y depuracin del cdigo se simplific
fuertemente al poder hacer el programador directamente cambios y someter el programa
a la ejecucin inmediata. En segundo trmino, la computadora nunca ms estara
simplemente esperando a que est listo un programa: mientras un programador editaba o
compilaba su programa, la computadora segua calculando lo que otros procesos
requirieran. Un cambio fundamental entre el modelo de multiprogramacin y de tiempo
compartido es el tipo de control sobre la multitarea (se ver en detalle en el captulo 3).
Multitarea cooperativa o no apropiativa (Cooperative multitasking). La implementaron
los sistemas multiprogramados: cada proceso tena control del CPU hasta que ste haca
una llamada al sistema (o indicara su disposicin a cooperar por medio de la llamada
yield: ceder el paso). Un clculo largo no era interrumpido por el sistema operativo, en
consecuencia, un error de programador poda congelar la computadora completa.
Multitarea preventiva o apropiativa (Preemptive multitasking). En los sistemas de
tiempo compartido, el reloj del sistema interrumpe peridicamente a los diversos
procesos, transfiriendo forzosamente el control nuevamente al sistema operativo. ste
puede entonces elegir otro proceso para continuar la ejecucin. Adems, fueron
naciendo de forma natural y paulatina las abstracciones que se conocen hoy en da,
como los conceptos de archivos y directorios, y el c- digo necesario para emplearlos
iba siendo enviado a las bibliotecas de sistema y, cada vez ms (por su centralidad)
hacia el ncleo mismo del, ahora s, sistema operativo. Un cambio importante entre los
sistemas multiprogramados y de tiempo compartido es que la velocidad del cambio
entre una tarea y otra es mucho ms rpido: si bien en un sistema multiprogramado un
cambio de contexto poda producirse slo cuando la tarea cambiaba de un modo de
ejecucin a otro, en un sistema interactivo, para dar la ilusin de uso exclusivo de la
computadora, el hardware emita peridicamente al sistema operativo interrupciones
(seales) que le indicaban que cambie el proceso activo (como ahora se le denomina a
una instancia de un programa en ejecucin). Diferentes tipos de proceso pueden tener
distinto nivel de importancia ya sea porque son ms relevantes para el
funcionamiento de la computadora misma (procesos de sistema), porque tienen mayor
carga de interactividad (por la experiencia del usuario) o por diversas categoras de
usuarios (sistemas con contabilidad por tipo de atencin). Esto requiere la
implementacin de diversas prioridades para cada uno de stos.
Tiempo Real
Estos sistemas se usan en entornos donde se deben aceptar y procesar en tiempos muy
breves un gran nmero de sucesos, en su mayora externos al ordenador. Si el sistema
no respeta las restricciones de tiempo en las que las operaciones deben entregar su
resultado se dice que ha fallado. El tiempo de respuesta a su vez debe servir para
resolver el problema o hecho planteado. El procesamiento de archivos se hace de una
forma continua, pues se procesa el archivo antes de que, entre el siguiente, sus primeros
usos fueron y siguen siendo en telecomunicaciones.
Multiprocesador
Adems del Atlas Supervisor y el OS/360, los sesenta marcaron el inicio de UNIX, a
mediados de los 60 aparece Multics, sistema operativo multiusuario multitarea
desarrollado por los laboratorios Bell de AT&T y programado en PL/1 uno de los pocos
SO desarrollados en un lenguaje de alto nivel en aquel tiempo, luego del fracaso del
proyecto UNIX comienza a desarrollarse a partir de este a finales de la dcada.
AOS 70
Para solventar los problemas antes comentados, se realiz un costossimo trabajo para
interponer una amplia capa de software entre el usuario y la mquina, de forma que el
primero no tuviese que conocer ningn detalle de la circuitera.
Fue uno de los primeros sistemas operativos de tiempo compartido, que implement un
solo nivel de almacenamiento para el acceso a los datos, desechando la clara distincin
entre los ficheros y los procesos en memoria, y uno de los primeros sistemas
multiprocesador.
* MVS (Multiple Virtual Storage): Fue el sistema operativo ms usado en los modelos
de mainframes -ordenadores grandes, potentes y caros usados principalmente por
grandes compaas para el procesamiento de grandes cantidades de datos- System/370 y
System/390 de IBM, desarrollado tambin por IBM y lanzado al mercado por primera
vez en 1974. Como caractersticas destacables, permita la ejecucin de mltiples tareas,
adems de que introdujo el concepto de memoria virtual y finalmente aadi la
capacidad de que cada programa tuviera su propio espacio de direccionamiento de
memoria, de ah su nombre.
CCP (Comand Control Processor): Intrprete de comandos que permita
introducir los mandatos con sus parmetros separados por espacios. Adems, los
traduca a instrucciones de alto nivel destinadas a BDOS.
BDOS (Basic Disk Operating System): Traductor de las instrucciones en
llamadas a la BIOS.
El hecho de que, aos despus, IBM eligiera para sus PCs a MS-DOS supuso su mayor
fracaso, por lo que acab desapareciendo.
AOS 80
Con la creacin de los circuitos LSI -integracin a gran escala-, chips que contenan
miles de transistores en un centmetro cuadrado de silicio, empez el auge de los
ordenadores personales. En stos se dej un poco de lado el rendimiento y se busc ms
que el sistema operativo fuera amigable, surgiendo mens, e interfaces grficas. Esto
reduca la rapidez de las aplicaciones, pero se volvan ms prcticos y simples para los
usuarios. En esta poca, siguieron utilizndose lenguajes ya existentes, como Smalltalk
o C, y nacieron otros nuevos, de los cuales se podran destacar: C++ y Eiffel dentro del
paradigma de la orientacin a objetos, y Haskell y Miranda en el campo de la
programacin declarativa. Un avance importante que se estableci a mediados de la
dcada de 1980 fue el desarrollo de redes de computadoras personales que corran
sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos
sistemas operativos eran los mayoritarios: MS-DOS, escrito por Microsoft para IBM PC
y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que
dominaba en los ordenadores personales que hacan uso del Motorola 68000.
Apple Macintosh
MS-DOS
En 1981 Microsoft compr un sistema operativo llamado QDOS que, tras realizar unas
pocas modificaciones, se convirti en la primera versin de MS-DOS (MicroSoft Disk
Operating System). A partir de aqu se sucedieron una serie de cambios hasta llegar a la
versin 7.1, a partir de la cual MS-DOS dej de existir como tal y se convirti en una
parte integrada del sistema operativo Windows.
Microsoft Windows
Familia de sistemas operativos propietarios desarrollados por la empresa de software
Microsoft Corporation, fundada por Bill Gates y Paul Allen. Todos ellos tienen en
comn el estar basados en una interfaz grfica de usuario basada en el paradigma de
ventanas, de ah su nombre en ingls. Las versiones de Windows que han aparecido
hasta el momento se basan en dos lneas separadas de desarrollo que finalmente
convergen en una sola con la llegada de Windows XP. La primera de ellas conformaba
la apariencia de un sistema operativo, aunque realmente se ejecutaba sobre MS-DOS.
AOS 90
GNU/Linux
En 1991 aparece la primer versin del ncleo de Linux. Creado por Linus Torvalds y
un sinfn de colaboradores a travs de Internet. Este sistema se basa en Unix, un sistema
que en principio trabajaba en modo comandos, estilo MS-DOS. Hoy en da dispone de
Ventanas, gracias a un servidor grafico y a gestores de ventanas como KDE, GNOME
entre muchos. Recientemente GNU/Linux dispone de un aplicativo que convierte las
ventanas en un entorno 3D como por ejemplo Beryl. Lo que permite utilizar linux de
una forma muy visual y atractiva.
BeOS
Solaris es un sistema operativo de tipo Unix desarrollado desde 1992 inicialmente por
Sun Microsystems y actualmente por Oracle Corporation como sucesor de SunOS. Es
un sistema certificado oficialmente como versin de Unix. Funciona en arquitecturas
SPARC y x86 para servidores y estaciones de trabajo.
ReactOS
FreeDOS
FreeDOS es un proyecto que aspira a crear un sistema operativo libre que sea totalmente
compatible con las aplicaciones y los controladores de MS-DOS.
La dcada de 2000
SymbOS
SymbOS es un claro ejemplo de software optimizado, de tal manera que con un mnimo
hardware se obtienen prestaciones similares a otros grandes sistemas operativos
actuales. Esto lo convierte en el antagonista de los modernos sistemas operativos, que
derrochan la mayor parte de los recursos apoyndose en la alta potencia del hardware
actual.
MorphOS
Darwin
Darwin es el sistema que subyace en Mac OS X, cuya primera versin final sali en el
ao 2001 para funcionar en computadoras Macintosh.
MAC OS
La primera versin del sistema fue Mac OS X Server 1.0 en 1999, y en cuanto al
escritorio, fue Mac OS X v10.0 Cheetah (publicada el 24 de marzo de 2001).
OpenSolaris
La dcada de 2017
IllumOS
Se trata del cdigo base a partir del cual cualquiera podr crear su propia distribucin de
software basada en el sistema operativo OpenSolaris. Pero Illumos no es una
distribucin, ni una bifurcacin (fork), al menos por el momento, en la medida que no
pretende separarse del tronco principal, sino un derivado de la "consolidacin" OS/Net
(ms conocida como ON), que consiste bsicamente en el cdigo fuente del kernel
(SunOS), los drivers, los servicios de red, las bibliotecas del sistema y los comandos
bsicos del sistema operativo.
OpenIndiana
Las estructuras internas de los sistemas operativos pueden ser muy diferentes, ya que se
deben tener en cuenta las metas de los usuarios (fcil uso, confiable, rpido, etc.) y las
del sistema (fcil de disear, implementar y mantener, eficiente, etc.). Veremos 3
posibles diseos del sistema.
Sistema Monoltico
Estos sistemas no tienen una estructura definida, sino que son escritos como una
coleccin de procedimientos donde cualquier procedimiento puede invocar a otro.
Ejemplos de estos sistemas pueden ser MS-DOS o Linux (aunque incluye algo de
capas). Es importante tener en cuenta que ningn sistema es puramente de un tipo.
Sistema en capas
El diseo se organiza en una jerarqua de capas, donde los servicios que brinda una capa
son consumidos solamente por la capa superior. La capa 0 es del Hardware y la N es la
de los procesos de Usuario.
Estos sistemas tienen como ventaja que son
modulares y la verificacin se puede hacer a
cada capa por separado (son ms
mantenibles). Sin embargo, el diseo es muy
costoso y es menos eficiente que el sistema
monoltico ya que pierde tiempo pasando por
cada capa.
La idea consiste en tener un ncleo que brinde los servicios mnimos de manejo de
procesos, memoria y que provea la comunicacin entre procesos. Todos los restantes
servicios se construyen como procesos separados del microncleo, que ejecutan en
modo usuario. Estos sistemas tienen como ventaja un diseo simple y funcional, que
aumenta la portabilidad y la escalabilidad. Para agregar un nuevo servicio no es
necesario modificar el ncleo, y es ms seguro ya que los servicios corren en modo
usuario.