A lo largo de la historia muchas cosas sufren una serie
de cambios y los sistemas
operativos no son la excepción, claro que en este caso
se habalran son de las generaciones de los Sistemas
Operativos:
- Generación Ceroà A finales de los 40's el uso de
computadoras
estaba restringido a aquellas empresas o
instituciones que podían pagar su alto
precio, y no
existían los sistemas operativos. En su lugar, el
programador debía tener un conocimiento
y contacto profundo con el hardware, y en
el infortunado caso de que su programa
fallara, debía examinar los valores
de los registros y
páneles de luces indicadoras del estado de
la
computadora para determinar la causa del fallo y poder
corregir su programa, además de enfrentarse nuevamente a
los procedimientos
de apartar tiempo del
sistema y poner
a punto los compiladores,
ligadores, etc; para volver a correr su programa, es decir,
enfrentaba el problema del procesamiento serial ( serial
processing ) - Primera Generacionà La importancia de los sistemas
operativos nace históricamente desde los 50's, cuando se
hizo evidente que el operar una computadora
por medio de tableros enchufables y luego por medio del
trabajo en
lote se podía mejorar notoriamente, pues el operador
realizaba siempre una secuencia de pasos repetitivos, lo cual
es una de las características contempladas en la
definición de lo que es un programa. Es decir, se
comenzó a ver que las tareas mismas del operador
podían plasmarse en un programa, el cual a través
del tiempo y por su enorme complejidad se le llamó
"Sistema
Operativo". Cuando
el trabajo estaba en ejecución,
este tenia
control total de la maquina. Al terminar cada
trabajo, el
control era devuelto al sistema operativo, el
cual limpiaba y leía e iniciaba
el trabajo siguiente. Así,
tenemos entre los primeros sistemas operativos al Fortran
Monitor
System ( FMS ) e IBSYS [Tan92]. - Segunda Generacionà A mediado de los años 60's
junto con la tercera generación de computadoras nace uno
de los primeros sistemas operativos con la filosofía de
administrar una familia de
computadoras: el OS/360 de IBM. Fue este un proyecto tan
novedoso y ambicioso que enfrentó por primera vez una
serie de problemas
conflictivos debido a que anteriormente las computadoras eran
creadas para dos propósitos en general: el comercial y
el científico. Así, al tratar de crear un solo
sistema operativo para computadoras que podían dedicarse
a un propósito, al otro o ambos, puso en evidencia la
problemática del trabajo en equipos de análisis, diseño e implantación de sistemas
grandes. El resultado fue un sistema del cual uno de sus mismos
diseñadores patentizó su opinión en la
portada de un libro: una
horda de bestias prehistóricas atascadas en un foso de
brea. Surge también en la tercera generación de
computadoras el concepto de la
multiprogramación, porque debido al alto costo de las
computadoras era necesario idear un esquema de trabajo que
mantuviese a la unidad central de procesamiento más
tiempo ocupada, así como el encolado (spooling ) de
trabajos para su lectura
hacia los lugares libres de memoria o la
escritura de
resultados. Sin embargo, se puede afirmar que los sistemas
durante la esta generación siguieron siendo
básicamente sistemas de lote. - Tercera Generacionà Se inicia en 1964, con la introducción de
la familia de computadores Sistema/360
de IBM. Los computadores de esta generación fueron
diseñados como sistemas para usos generales . Casi
siempre eran sistemas grandes, voluminosos, con el
propósito de serlo todo para toda la gente. Eran
sistemas de modos múltiples, algunos de ellos soportaban
simultáneamente
procesos por lotes, tiempo compartido,
procesamiento de tiempo real y multiprocesamiento. Eran grandes
y costosos, nunca antes se había construido algo
similar, y muchos de los esfuerzos de desarrollo
terminaron muy por arriba del
presupuesto y mucho después de lo que
el planificador marcaba como fecha de terminación. Estos
sistemas introdujeron mayor complejidad a los ambientes
computacionales; una complejidad a la cual, en un principio, no
estaban acostumbrados los usuarios - Cuarta Generacionà A mediados de los 70's la electrónica avanza hacia la integración a gran escala,
pudiendo crear circuitos
con miles de transistores en
un centímetro cuadrado de silicón y ya es posible
hablar de las computadoras personales y las estaciones de
trabajo. Surgen los conceptos de interfaces amigables
intentando así atraer al público en general al
uso de las computadoras como herramientas
cotidianas. Se hacen populares el MS-DOS y
UNIX en
estas máquinas. También es común
encontrar clones de computadoras personales y una multitud de
empresas pequeñas ensamblándolas por todo el
mundo.Para mediados de los 80's, comienza el auge de las
redes de
computadoras y la necesidad de sistemas operativos en red y sistemas operativos
distribuidos. La red mundial Internet se va
haciendo accesible a toda clase de
instituciones y se comienzan a dar muchas soluciones (
y problemas ) al querer hacer convivir recursos
residentes en computadoras con sistemas operativos diferentes.
Para los 90's el paradigma de
la programación orientada a objetos cobra
auge, así como el manejo de objetos desde los sistemas
operativos. Las aplicaciones intentan crearse para ser
ejecutadas en una plataforma específica y poder ver sus
resultados en la pantalla o monitor de otra diferente (por
ejemplo, ejecutar una simulación en una máquina con UNIX
y ver los resultados en otra con DOS ). Los niveles de interacción se van haciendo cada vez
más profundos.
Un Sistema Operativo es el software encargado de
ejercer el control y
coordinar el uso del hardware entre diferentes programas de
aplicación y los diferentes usuarios. Es un administrador de
los recursos de hardware del sistema. En una
definición informal es un sistema que consiste en ofrecer
una distribución ordenada y controlada de los
procesadores,
memorias y
dispositivos de E/S entre los diversos programas que compiten por
ellos.
A pesar de que todos nosotros usamos sistemas operativos casi a
diario, es difícil definir qué es un sistema
operativo. En parte, esto se debe a que los sistemas operativos
realizan dos funciones
diferentes: El primero es proveer una máquina virtual, es
decir, un ambiente en el
cual el usuario pueda ejecutar programas de manera conveniente,
protegiéndolo de los detalles y complejidades del
hardware; y el segundo es administrar eficientemente los recursos
del computador.
Es también un programa que actúa como
intermediario entre el usuario y el hardware de un computador y
su propósito es proporcionar un entorno en el cual el
usuario pueda ejecutar programas. El objetivo
principal de un Sistema Operativo es, entonces, lograr que el
Sistema de computación se use de manera
cómoda, y el
objetivo secundario es que el hardware del computador se emplee
de manera eficiente.
Un Sistema Operativo es una parte importante de cualquier sistema
de computación. Un sistema de computación puede
dividirse en cuatro componentes: el hardware, el Sistema
Operativo, los programas de aplicación y los
usuarios.
El hardware (Unidad Central de Procesamiento (UCP),
memoria y dispositivos de
entrada/salida (E/S)) proporciona los recursos de
computación básicos. Los programas de
aplicación (compiladores, sistemas de bases de datos,
juegos de
vídeo y programas para negocios)
definen la forma en que estos recursos se emplean para resolver
los problemas de computación de los usuarios.
Administrador de
Memoriaà Aquí se describen las
técnicas más usuales en el manejo de
memoria, revisando los conceptos relevantes. Se abarcan los
esquemas de manejo simple de memoria real, la
multiprogramación en memoria real con sus variantes, el
concepto de `overlays', la multiprogramación con
intercambio y los esquemas de manejo de memoria
virtual.
- Manejo de Memoria en Sistema Monousuario sin
Intercambio:
se usa principalmente en sistemas monousuario y
monotarea, como son las computadoras personales con DOS. Bajo
este esquema, la memoria
real es tomada para almacenar el programa que se esté
ejecutando en un momento dado, con la visible desventaja de que
si se está limitado a la cantidad de RAM
disponible únicamente. La
organización física bajo este
esquema es muy simple: El sistema operativo se ubica en las
localidades superiores o inferiores de la memoria, seguido por
algunos manejadores de dispositivos (`drivers' ). Esto deja un
espacio contiguo de memoria disponible que es tomado por los
programas del usuario, dejando generalmente la ubicación
de la pila (` stack') al último, con el objetivo de que
ésta pueda crecer hasta el máximo posible. Como
es obvio, bajo estos esquemas no se requieren algoritmos
sofisticados para asignar la memoria a los diferentes procesos, ya
que éstos son ejecutados secuencialmente conforme van
terminando.
- Multiprogramación en Memoria Real: En los
60's, las empresas e instituciones que habían invertido
grandes sumas en la compra de equipo de cómputo se
dieron cuenta rápidamente que los sistemas en lote
invertían una gran cantidad de tiempo en operaciones de
entrada y salida, donde la intervención de la unidad
central de procesamiento era prácticamente nula, y se
comenzaron a preguntar cómo hacer que se mantuviera
más tiempo ocupada. Fue así como nació el
concepto de multiprogramación, el cual consiste en la
idea de poner en la memoria física más de un
proceso al
mismo tiempo, de manera que si el que se está ejecutando
en este momento entraba en un periodo de entrada/salida, se
podía tomar otro proceso para que usara la unidad
central de procesamiento. De esta forma, la memoria
física se dividía en secciones de tamaño
suficiente para contener a varios programas.
Administrador de
Procesosà En este administrador se
encuentra el modulo de la planificación del procesador el
cual se describe a continuación:
- Planificación del procesador: La
planificación del procesador se refiere a la manera o
técnicas que se usan para decidir cuánto tiempo
de ejecución y cuando se le asignan a cada proceso del
sistema. Obviamente, si el sistema es monousuario y monotarea
no hay mucho que decidir, pero en el resto de los sistemas esto
es crucial para el buen funcionamiento del sistema. En los sistemas de
planificación generalmente se identifican tres niveles:
el alto, el medio y el bajo. El nivel alto decide que trabajos
(conjunto de procesos) son candidatos a convertirse en procesos
compitiendo por los recursos del sistema; el nivel intermedio
decide que procesos se suspenden o reanudan para lograr ciertas
metas de rendimiento mientras que el planificador de bajo nivel
es el que decide que proceso, de los que ya están listos
(y que en algún momento paso por los otros dos
planificadores) es al que le toca ahora estar
ejecutándose en la unidad central de procesamiento. En
este trabajo se revisaran principalmente los planificadores de
bajo nivel porque son los que finalmente eligen al proceso en
ejecución.
Objetivos de la
Planificación: Una estrategia de
planificación debe buscar que los procesos obtengan sus
turnos de ejecución apropiadamente, conjuntamente con un
buen rendimiento y minimización de la sobrecarga
(overhead) del planificador mismo. En general, se buscan cinco
objetivos
principales:
- Justicia o Imparcialidad: Todos los procesos
son tratados de
la misma forma, y en algún momento obtienen su turno de
ejecución o intervalos de tiempo de ejecución
hasta su terminación exitosa. - Maximizar la Producción: El sistema debe de
finalizar el mayor numero de procesos en por unidad de
tiempo. - Maximizar el Tiempo de Respuesta: Cada usuario
o proceso debe observar que el sistema les responde
consistentemente a sus requerimientos. - Evitar el aplazamiento indefinido: Los
procesos deben terminar en un plazo finito de
tiempo. - El sistema debe ser predecible: Ante cargas de
trabajo ligeras el sistema debe responder rápido y con
cargas pesadas debe ir degradándose paulatinamente. Otro
punto de vista de esto es que si se ejecuta el mismo proceso en
cargas similares de todo el sistema, la respuesta en todos los
casos debe ser similar.
Características a considerar de los
procesos: No todos los equipos de cómputo procesan el
mismo tipo de trabajos, y un algoritmo de
planificación que en un sistema funciona excelente puede
dar un rendimiento pésimo en otro cuyos procesos tienen
características diferentes. Estas características
pueden ser:
- Cantidad de Entrada/Salida: Existen procesos
que realizan una gran cantidad de operaciones de entrada y
salida (aplicaciones de bases de datos, por
ejemplo). - Cantidad de Uso de CPU:
Existen procesos que no realizan muchas operaciones de entrada
y salida, sino que usan intensivamente la unidad central de
procesamiento. Por ejemplo, operaciones con matrices. - Procesos de Lote o Interactivos: Un proceso de
lote es más eficiente en cuanto a la lectura
de datos, ya que generalmente lo hace de archivos,
mientras que un programa interactivo espera mucho tiempo (no es
lo mismo el tiempo de lectura de un archivo que la
velocidad en
que una persona teclea
datos) por las respuestas de los usuarios. - Procesos en Tiempo Real: Si los procesos deben
dar respuesta en tiempo real se requiere que tengan prioridad
para los turnos de ejecución. - Longevidad de los Procesos: Existen procesos
que típicamente requerirán varias horas para
finalizar su labor, mientras que existen otros que solo
necesitan algunos segundos.
Seminario Sistemas Operativos (SO), Internet
Explorer.
Presentado por:
Angellen Barrios
Sandra Certain
Zuhelen Trespalacios