Download sistemas operativos por juan guillermo salazar panesso juan diego

Document related concepts

Máquina virtual wikipedia , lookup

Historia de los sistemas operativos wikipedia , lookup

Multiusuario wikipedia , lookup

Arquitectura de Windows NT wikipedia , lookup

Windows 2000 wikipedia , lookup

Transcript
SISTEMAS OPERATIVOS
POR
JUAN GUILLERMO SALAZAR PANESSO
JUAN DIEGO VILLA
ASIGNATURA
TECNOLOGIAS CONVERGENTES
PROFESOR
MIGUEL ANGEL ROLDAN
INSTITITUTO TECNOLOGICO METROPOLITANO
MEDELLIN
NOVIEMBRE
2009
Introducción
Este trabajo ha de tratar acerca de los sistemas
operativos desde sus inicios, sus definiciónes, los usos
que tienen, como funciona, además daremos a conocer
los componentes tecnológicos, servicios y estándares
protocolos y normas que se utilizan en un sistema
operativo, se describirá una diagonal de tendencias que
nos ilustre la evolución de estas plataformas que hoy
desempeña un papel importante para nuestra vida
cotidiana.
Otro propósito de este trabajo es analizar como las
nuevas tecnologías convergen y son compatibles con
los nuevos sistemas operativos.
MARCO TEORICO
QUE ES UN SISTEMA OPERATIVO
Un Sistema Operativo (SO) es una colección organizada de rutinas o
extensiones de software del hardware. Consiste en rutinas de control que
hacen funcionar una computadora y proporcionan un entorno para la
ejecución de los programas. Existen otros programas que se apoyan en el
SO para poder acceder a los recursos que necesitan. Esto se lleva a cabo a
través de llamadas sistema operativo. También el SO debe brindar una forma
de que el usuario se pueda comunicar con él a través de una interfaz que le
brinde una vía de comunicación con el hardware del sistema informático.
El objetivo principal del SO es lograr que el sistema informático es el lograr
que el hardware de la computadora se emplee de modo eficiente, y el
objetivo secundario se use de manera cómoda.
El SO debe asegurar el correcto funcionamiento del sistema informático. Para
lograr esto el hardware debe brindar algún mecanismo apropiado que impida
que los usuarios intervengan en el funcionamiento del sistema y así mismo el
SO debe poder utilizar este recurso de hardware de modo que esto se
cumpla.
El SO debe ofrecer servicios a los programas y sus usuarios para facilitar la
tarea de programación.
Reseña Histórica de los sistemas operativos
Los Sistemas Operativos, al igual que el Hardware de los computadores, han
sufrido una serie de cambios revolucionarios llamados generaciones. En el
caso del Hardware, las generaciones han sido marcadas por grandes
avances en los componentes utilizados, pasando de válvulas ( primera
generación ) a transistores ( segunda generación ), a circuitos integrados (
tercera generación), a circuitos integrados de gran y muy gran escala (cuarta
generación). Cada generación Sucesiva de hardware ha ido acompañada de
reducciones substanciales en los costos, tamaño, emisión de calor y
consumo de energía, y por incrementos notables en velocidad y capacidad.
Generación Cero (década de 1940)
Los primeros sistemas computacionales no poseían sistemas operativos. Los
usuarios tenían completo acceso al lenguaje de la maquina. Todas las
instrucciones eran codificadas a mano.
Primera Generación (década de 1950)
Los sistemas operativos de los años cincuenta fueron diseñados para hacer
mas fluida la transición entre trabajos. Antes de que los sistemas fueran
diseñados, se perdía un tiempo considerable entre la terminación de un
trabajo y el inicio del siguiente. Este fue el comienzo de los sistemas de
procesamiento por lotes, donde los trabajos se reunían por grupos o lotes.
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.
Al inicio de los 50's esto había mejorado un poco con la introducción de
tarjetas perforadas (las cuales servían para introducir los programas de
lenguajes de máquina), puesto que ya no había necesidad de utilizar los
tableros enchufables.
Además el laboratorio de investigación General Motors implementó el primer
sistema operativo para la IBM 701. Los sistemas de los 50's generalmente
ejecutaban una sola tarea, y la transición entre tareas se suavizaba para
lograr la máxima utilización del sistema. Esto se conoce como sistemas de
procesamiento por lotes de un sólo flujo, ya que los programas y los datos
eran sometidos en grupos o lotes.
La introducción del transistor a mediados de los 50's cambió la imagen
radicalmente.
Se crearon máquinas suficientemente confiables las cuales se instalaban en
lugares especialmente acondicionados, aunque sólo las grandes
universidades y las grandes corporaciones o bien las oficinas del gobierno se
podían dar el lujo de tenerlas.
Para poder correr un trabajo (programa), tenían que escribirlo en papel (en
Fortran o en lenguaje ensamblador) y después se perforaría en tarjetas.
Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema y
la entregaría a uno de los operadores. Cuando la computadora terminara el
trabajo, un operador se dirigiría a la impresora y desprendería la salida y la
llevaría al cuarto de salida, para que la recogiera el programador.
Segunda Generación (a mitad de la década de 1960)
La característica de los sistemas operativos fue el desarrollo de los sistemas
compartidos con multiprogramación, y los principios del multiprocesamiento.
En los sistemas de multiprogramación, varios programas de usuario se
encuentran al mismo tiempo en el almacenamiento principal, y el procesador
se cambia rápidamente de un trabajo a otro. En los sistemas de
multiprocesamiento se utilizan varios procesadores en un solo sistema
computacional, con la finalidad de incrementar el poder de procesamiento de
la maquina.
La independencia de dispositivos aparece después. Un usuario que desea
escribir datos en una cinta en sistemas de la primera generación tenia que
hacer referencia especifica a una unidad de cinta particular. En la segunda
generación, el programa del usuario especificaba tan solo que un archivo iba
a ser escrito en una unidad de cinta con cierto numero de pistas y cierta
densidad.
Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse
directamente con el computadora través de terminales. Surgieron sistemas
de tiempo real, en que los computadores fueron utilizados en el control de
procesos industriales. Los sistemas de tiempo real se caracterizan por
proveer una respuesta inmediata.
Tercera Generación (mitad de década 1960 a mitad década de 1970)
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 Generación (mitad de década de 1970 en adelante)
Los sistemas de la cuarta generación constituyen el estado actual de la
tecnología. Muchos diseñadores y usuarios se sienten aun incómodos,
después de sus experiencias con los sistemas operativos de la tercera
generación.
Con la ampliación del uso de redes de computadores y del procesamiento en
línea los usuarios obtienen acceso a computadores alejados geográficamente
a través de varios tipos de terminales.
Los sistemas de seguridad se ha incrementado mucho ahora que la
información pasa a través de varios tipos vulnerables de líneas de
comunicación. La clave de cifrado esta recibiendo mucha atención; han sido
necesario codificar los datos personales o de gran intimidad para que; aun si
los datos son expuestos, no sean de utilidad a nadie mas que a los
receptores adecuados.
El porcentaje de la población que tiene acceso a un computador en la década
de los ochenta es mucho mayor que nunca y aumenta rápidamente.
El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra
interesado en los detalles físicos de; sistema de computación que esta siendo
accedida. En su lugar, el usuario ve un panorama llamado maquina virtual
creado por el sistema operativo.
Los sistemas de bases de datos han adquirido gran importancia. Nuestro
mundo es una sociedad orientada hacia la información, y el trabajo de las
bases de datos es hacer que esta información sea conveniente accesible de
una manera controlada para aquellos que tienen derechos de acceso.
Tipos de Sistemas Operativos.
Actualmente los sistemas operativos se clasifican en tres formas:



sistemas operativos por los servicios que ofrecen
sistemas operativos por su estructura (visión interna)
sistemas operativos por la forma en que ofrecen sus servicios (visión
externa).
Sistemas Operativos por Servicios.
Esta clasificación es la más comúnmente usada y conocida desde el punto de
vista del usuario final:
Por Número de Usuarios:
Sistema Operativo Monousuario.
Los sistemas operativos monousuarios son aquéllos que soportan a un
usuario a la vez, sin importar el número de procesadores que tenga la
computadora o el número de procesos o tareas que el usuario pueda ejecutar
en un mismo instante de tiempo. Las computadoras personales típicamente
se han clasificado en este renglón.
En otras palabras los sistemas monousuarios son aquellos que nada más
puede atender a un solo usuario, gracias a las limitaciones creadas por el
hardware, los programas o el tipo de aplicación que se este ejecutando.
Sistema Operativo Multiusuario.
Los sistemas operativos multiusuarios son capaces de dar servicio a más de
un usuario a la vez, ya sea por medio de varias terminales conectadas a la
computadora o por medio de sesiones remotas en una red de
comunicaciones. No importa el número de procesadores en la máquina ni el
número de procesos que cada usuario puede ejecutar simultáneamente.
En esta categoría se encuentran todos los sistemas que cumplen
simultáneamente las necesidades de dos o más usuarios, que comparten
mismos recursos. Este tipo de sistemas se emplean especialmente en redes.
En otras palabras consiste en el fraccionamiento del tiempo (timesharing).
Por el Número de Tareas:
Sistema Operativo Monotarea.
Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez
por usuario. Puede darse el caso de un sistema multiusuario y monotarea, en
el cual se admiten varios usuarios al mismo tiempo pero cada uno de ellos
puede estar haciendo solo una tarea a la vez.
Los sistemas operativos monotareas son más primitivos y, solo pueden
manejar un proceso en cada momento o que solo puede ejecutar las tareas
de una en una.
Sistema Operativo Multitarea.
Un sistema operativo multitarea es aquél que le permite al usuario estar
realizando varias labores al mismo tiempo.
Es el modo de funcionamiento disponible en algunos sistemas operativos,
mediante el cual una computadora procesa varias tareas al mismo tiempo.
Existen varios tipos de multitareas. La conmutación de contextos es un tipo
muy simple de multitarea en el que dos o más aplicaciones se cargan al
mismo tiempo, pero en el que solo se esta procesando la aplicación que se
encuentra en primer plano (la que ve el usuario). En la multitarea cooperativa,
la que se utiliza en el sistema operativo Macintosh, las tareas en segundo
plano reciben tiempo de procesado durante los tiempos muertos de la tarea
que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta
esperando información del usuario.
Un sistema operativo multitarea puede estar editando el código fuente de un
programa durante su depuración mientras compila otro programa, a la vez
que está recibiendo correo electrónico en un proceso en background. Es
común encontrar en ellos interfaces gráficas orientadas al uso de menús y el
ratón, lo cual permite un rápido intercambio entre las tareas para el usuario,
mejorando su productividad. Un sistema operativo multitarea se distingue por
su capacidad para soportar la ejecución concurrente de dos o más procesos
activos.
Por el Número de Procesadores:
Sistema Operativo de Uniproceso.
Un sistema operativo uniproceso es aquél que es capaz de manejar
solamente un procesador de la computadora, de manera que si la
computadora tuviese más de uno le sería inútil. El ejemplo más típico de este
tipo de sistemas es el DOS y MacOS.
Sistema Operativo de Multiproceso.
Un sistema operativo multiproceso se refiere al número de procesadores del
sistema, que es más de uno y éste es capaz de usarlos todos para distribuir
su carga de trabajo. Generalmente estos sistemas trabajan de dos formas:
simétrica o asimétricamente.
Asimétrica.
Cuando se trabaja de manera asimétrica, el sistema operativo
selecciona a uno de los procesadores el cual jugará el papel de procesador
maestro y servirá como pivote para distribuir la carga a los demás
procesadores, que reciben el nombre de esclavos.
Simétrica.
Cuando se trabaja de manera simétrica, los procesos o partes de ellos
son enviados indistintamente a cual quiera de los procesadores disponibles,
teniendo, teóricamente, una mejor distribución y equilibrio en la carga de
trabajo bajo este esquema.
Un aspecto importante a considerar en estos sistemas es la forma de crear
aplicaciones para aprovechar los varios procesadores. Existen aplicaciones
que fueron hechas para correr en sistemas monoproceso que no toman
ninguna ventaja a menos que el sistema operativo o el compilador detecte
secciones de código paralelizable, los cuales son ejecutados al mismo tiempo
en procesadores diferentes. Por otro lado, el programador puede modificar
sus algoritmos y aprovechar por sí mismo esta facilidad, pero esta última
opción las más de las veces es costosa en horas hombre y muy tediosa,
obligando al programador a ocupar tanto o más tiempo a la paralelización que
a elaborar el algoritmo inicial.
Sistemas Operativos por su Estructura.
A continuación se describen las distintas estructuras que presentan los
actuales sistemas operativos para satisfacer las necesidades que de ellos se
quieren obtener.
Estructura Monolítica.
Es la estructura de los primeros sistemas operativos constituidos
fundamentalmente por un solo programa compuesto de un conjunto de
rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra.
Las características fundamentales de este tipo de estructura son:


Construcción del programa final a base de módulos compilados
separadamente que se unen a través del ligador.
Buena definición de parámetros de enlace entre las distintas rutinas
existentes, que puede provocar mucho acoplamiento.


Carecen de protecciones y privilegios al entrar a rutinas que manejan
diferentes aspectos de los recursos de la computadora, como
memoria, disco, etc.
Generalmente están hechos a medida, por lo que son eficientes y
rápidos en su ejecución y gestión, pero por lo mismo carecen de
flexibilidad para soportar diferentes ambientes de trabajo o tipos de
aplicaciones.
Estructura Jerárquica.
A medida que fueron creciendo las necesidades de los usuarios y se
perfeccionaron los sistemas, se hizo necesaria una mayor organización del
software, del sistema operativo, donde una parte del sistema contenía
subpartes y esto organizado en forma de niveles.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada
una de ellas estuviera perfectamente definida y con una claro interface con el
resto de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas
operativos, el primero de los cuales fue denominado THE (Technische
Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Se
puede pensar también en estos sistemas como si fueran `multicapa'. Multics
y Unix caen en esa categoría.
En la estructura anterior se basan prácticamente la mayoría de los sistemas
operativos actuales. Otra forma de ver este tipo de sistema es la denominada
de anillos concéntricos o "rings".
En el sistema de anillos, cada uno tiene una apertura, conocida como puerta
o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores.
De esta forma, las zonas más internas del sistema operativo o núcleo del
sistema estarán más protegidas de accesos indeseados desde las capas más
externas. Las capas más internas serán, por tanto, más privilegiadas que las
externas.
Máquina Virtual.
Se trata de un tipo de sistemas operativos que presentan una interface a
cada proceso, mostrando una máquina que parece idéntica a la máquina real
subyacente. Estos sistemas operativos separan dos conceptos que suelen
estar unidos en el resto de sistemas: la multiprogramación y la máquina
extendida. El objetivo de los sistemas operativos de máquina virtual es el de
integrar distintos sistemas operativos dando la sensación de ser varias
máquinas diferentes.
El núcleo de estos sistemas operativos se denomina monitor virtual y tiene
como misión llevar a cabo la multiprogramación, presentando a los niveles
superiores tantas máquinas virtuales como se soliciten. Estas máquinas
virtuales no son máquinas extendidas, sino una réplica de la máquina real, de
manera que en cada una de ellas se pueda ejecutar un sistema operativo
diferente, que será el que ofrezca la máquina extendida al usuario
Cliente-Servidor.
El tipo más reciente de sistemas operativos es el denominado Clienteservidor, que puede ser ejecutado en la mayoría de las computadoras, ya
sean grandes o pequeñas.
Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito
general y cumple con las mismas actividades que los sistemas operativos
convencionales.
El núcleo tiene como misión establecer la comunicación entre los clientes y
los servidores. Los procesos pueden ser tanto servidores como clientes. Por
ejemplo, un programa de aplicación normal es un cliente que llama al servidor
correspondiente para acceder a un archivo o realizar una operación de
entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente
puede actuar como servidor para otro." Este paradigma ofrece gran
flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el
núcleo provee solamente funciones muy básicas de memoria, entrada/salida,
archivos y procesos, dejando a los servidores proveer la mayoría que el
usuario final o programador puede usar. Estos servidores deben tener
mecanismos de seguridad y protección que, a su vez, serán filtrados por el
núcleo que controla el hardware. Actualmente se está trabajando en una
versión de UNIX que contempla en su diseño este paradigma.
Sistemas Operativos por la Forma de Ofrecer sus Servicios
Esta clasificación también se refiere a una visión externa, que en este caso
se refiere a la del usuario, el cómo accesa a los servicios. Bajo esta
clasificación se pueden detectar dos tipos principales: sistemas operativos de
red y sistemas operativos distribuidos.
Sistema Operativo de Red.
Los sistemas operativos de red se definen como aquellos que tiene la
capacidad de interactuar con sistemas operativos en otras computadoras por
medio de un medio de transmisión con el objeto de intercambiar información,
transferir archivos, ejecutar comandos remotos y un sin fin de otras
actividades. El punto crucial de estos sistemas es que el usuario debe saber
la sintaxis de un conjunto de comandos o llamadas al sistema para ejecutar
estas operaciones, además de la ubicación de los recursos que desee
accesar. Por ejemplo, si un usuario en la computadora hidalgo necesita el
archivo matriz.pas que se localiza en el directorio /software/codigo en la
computadora morelos bajo el sistema operativo UNIX, dicho usuario podría
copiarlo a través de la red con los comandos siguientes:hidalgo%hidalgo%rcp
morelos:/software/codigo/matriz.pas. hidalgo%.
En este caso, el comando rcp que significa "remote copy" trae el archivo
indicado de la computadora morelos y lo coloca en el directorio donde se
ejecutó el mencionado comando. Lo importante es hacer ver que el usuario
puede accesar y compartir muchos recursos.
Los Sistemas Operativos de red mas ampliamente usados son: Novell
Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX,
LANtastic.
Sistemas Operativos Distribuidos.
Los sistemas operativos distribuidos abarcan los servicios de los de red,
logrando integrar recursos (impresoras, unidades de respaldo, memoria,
procesos, unidades centrales de proceso) en una sola máquina virtual que el
usuario accesa en forma transparente. Es decir, ahora el usuario ya no
necesita saber la ubicación de los recursos, sino que los conoce por nombre
y simplemente los usa como si todos ellos fuesen locales a su lugar de
trabajo habitual. Todo lo anterior es el marco teórico de lo que se desearía
tener como sistema operativo distribuido, pero en la realidad no se ha
conseguido crear uno del todo, por la complejidad que suponen: distribuir los
procesos en las varias unidades de procesamiento, reintegrar sub-resultados,
resolver problemas de concurrencia y paralelismo, recuperarse de fallas de
algunos recursos distribuidos y consolidar la protección y seguridad entre los
diferentes componentes del sistema y los usuarios. Los avances tecnológicos
en las redes de área local y la creación de microprocesadores de 32 y 64 bits
lograron que computadoras mas o menos baratas tuvieran el suficiente poder
en forma autónoma para desafiar en cierto grado a los mainframes, y a la vez
se dio la posibilidad de intercomunicarlas, sugiriendo la oportunidad de partir
procesos muy pesados en cálculo en unidades más pequeñas y distribuirlas
en los varios microprocesadores para luego reunir los sub-resultados,
creando así una máquina virtual en la red que exceda en poder a un
mainframe. El sistema integrador de los microprocesadores que hacer ver a
las varias memorias, procesadores, y todos los demás recursos como una
sola entidad en forma transparente se le llama sistema operativo distribuido.
Las razones para crear o adoptar sistemas distribuidos se dan por dos
razones principales: por necesidad ( debido a que los problemas a resolver
son inherentemente distribuidos ) o porque se desea tener más confiabilidad
y disponibilidad de recursos. En el primer caso tenemos, por ejemplo, el
control de los cajeros automáticos en diferentes estados de la república. Ahí
no es posible ni eficiente mantener un control centralizado, es más, no existe
capacidad de cómputo y de entrada/salida para dar servicio a los millones de
operaciones por minuto. En el segundo caso, supóngase que se tienen en
una gran empresa varios grupos de trabajo, cada uno necesita almacenar
grandes cantidades de información en disco duro con una alta confiabilidad y
disponibilidad. La solución puede ser que para cada grupo de trabajo se
asigne una partición de disco duro en servidores diferentes, de manera que si
uno de los servidores falla, no se deje dar el servicio a todos, sino sólo a unos
cuantos y, más aún, se podría tener un sistema con discos en espejo
(mirror) a través de la red, de manera que si un servidor se cae, el servidor en
espejo continúa trabajando y el usuario ni cuenta se da de estas fallas, es
decir, obtiene acceso a recursos en forma transparente.
Los sistemas distribuidos deben de ser muy confiables, ya que si un
componente del sistema se compone otro componente debe de ser capaz de
reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que
existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring,
Amoeba, Taos, etc.
Ventajas de los Sistemas Distribuídos
En general, los sistemas distribuídos (no solamente los sistemas operativos)
exhiben algunas ventajas sobre los sistemas centralizados que se describen
enseguida.
Economía: El cociente precio/desempeño de la suma del poder de los
procesadores separados contra el poder de uno solo centralizado es mejor
cuando están distribuídos.
Velocidad: Relacionado con el punto anterior, la velocidad sumada es muy
superior.
Confiabilidad: Si una sola máquina falla, el sistema total sigue funcionando.
Crecimiento: El poder total del sistema puede irse incrementando al añadir
pequeños sistemas, lo cual es mucho más difícil en un sistema centralizado y
caro.
Distribución: Algunas aplicaciones requieren de por sí una distribución física.
Por otro lado, los sistemas distribuídos también exhiben algunas ventajas
sobre sistemas aislados. Estas ventajas son:
Compartir datos: Un sistema distribuído permite compartir datos más
fácilmente que los sistemas aislados, que tendrian que duplicarlos en cada
nodo para lograrlo.
Compartir dispositivos: Un sistema distribuído permite accesar
dispositivos desde cualquier nodo en forma transparente, lo cual es imposible
con los sistemas aislados. El sistema distribuído logra un efecto sinergético.
Comunicaciones: La comunicación persona a persona es factible en
los sistemas distribuídos, en los sistemas aislados no. _ Flexibilidad: La
distribución de las cargas de trabajo es factible en el sistema distribuídos, se
puede incrementar el poder de cómputo.
Desventajas de los Sistemas Distribuídos
Así como los sistemas distribuídos exhiben grandes ventajas, también se
pueden identificar algunas desventajas, algunas de ellas tan serias que han
frenado la producción comercial de sistemas operativos en la actualidad. El
problema más importante en la creación de sistemas distribuídos es el
software: los problemas de compartición de datos y recursos es tan complejo
que los mecanismos de solución generan mucha sobrecarga al sistema
haciéndolo ineficiente. El checar, por ejemplo, quiénes tienen acceso a
algunos recursos y quiénes no, el aplicar los mecanismos de protección y
registro de permisos consume demasiados recursos. En general, las
soluciones presentes para estos problemas están aún en pañales.
Otros problemas de los sistemas operativos distribuídos surgen debido a la
concurrencia y al paralelismo. Tradicionalmente las aplicaciones son creadas
para computadoras que ejecutan secuencialmente, de manera que el
identificar secciones de código `paralelizable' es un trabajo arduo, pero
necesario para dividir un proceso grande en sub-procesos y enviarlos a
diferentes unidades de procesamiento para lograr la distribución. Con la
concurrencia se deben implantar mecanismos para evitar las condiciones de
competencia, las postergaciones indefinidas, el ocupar un recurso y estar
esperando otro, las condiciones de espera circulares y , finalmente, los
"abrazos mortales" (deadlocks). Estos problemas de por sí se presentan en
los sistemas operativos multiusuarios o multitareas, y su tratamiento en los
sistemas distribuídos es aún más complejo, y por lo tanto, necesitará de
algoritmos más complejos con la inherente sobrecarga esperada.
NUCLEOS DE SISTEMAS OPERATIVOS
Para comprender mejor qué diferencias existen entre ambas categorías, se
necesita revisar algunos conceptos.
Trabajos, Procesos y Thread
Estos tres conceptos van definiendo el grado de granularidad en que el
sistema operativo trata a las masas de operaciones que se tienen que
realizar. Un trabajo se conceptualiza como un conjunto de uno o más
procesos. Por ejemplo, si se tiene que hacer el trabajo de correr el inventario,
tal vez se subdivida ese trabajo en varios procesos: obtener la lista de
artículos, número en existencia, artículos vendidos, artículos extraviados, etc.
Un proceso se define como la imagen de un programa en ejecución, es decir,
en memoria y usando el CPU. A este nivel de granularidad, un proceso tiene
un espacio de direcciones de memoria, una pila, sus registros y su 'program
counter'. Un thread es un trozo o sección de un proceso que tiene sus
propios registros, pila y 'program counter' y puede compartir la memoria con
todos aquellos threads que forman parte del mismo proceso.
Objetos
Un objeto es una entidad que contiene dos partes principales: una colección
de atributos y un conjunto de métodos (también llamados servicios).
Generalmente los atributos del objeto no pueden ser cambiados por el
usuario, sino solamente a través de los métodos. Los métodos sí son
accesibles al usuario y de hecho es lo único que él observa: los métodos
conforman lo que se llama la 'interfaz' del objeto. Por ejemplo, para el objeto
'archivo' los métodos son abrir, cerrar, escribir, borrar, etc. El cómo se abre,
se cierra, se borra, etc; está escondido para el usuario, es decir, los atributos
y el código están 'encapsulados'. La única forma de activar un método es a
través del envío de mensajes entre los objetos, o hacia un objeto.
Cliente - Servidor
Un cliente es un proceso que necesita de algún valor o de alguna operación
externa para poder trabajar. A la entidad que provee ese valor o realiza esa
operación se le llama servidor. Por ejemplo, un servidor de archivos debe
correr en el núcleo (kernel) o por medio de un proceso 'guardián' al servidor
de archivos que escucha peticiones de apertura, lectura, escritura, etc; sobre
los archivos. Un cliente es otro proceso guardián que escucha esas
peticiones en las máquinas clientes y se comunica con el proceso servidor a
través de la red, dando la apariencia de que se tienen los archivos en forma
local en la máquina cliente.
Núcleo Monolítico
Los núcleos monolíticos generalmente están divididos en dos partes
estructuradas: el núcleo dependiente del hardware y el núcleo independiente
del hardware. El núcleo dependiente se encarga de manejar las
interrupciones del hardware, hacer el manejo de bajo nivel de memoria y
discos y trabajar con los manejadores de dispositivos de bajo nivel,
principalmente. El núcleo independiente del hardware se encarga de ofrecer
las llamadas al sistema, manejar los sistemas de archivos y la planificación
de procesos. Para el usuario esta división generalmente pasa desapercibida.
Para un mismo sistema operativo corriendo en diferentes plataformas, el
núcleo independiente es exactamente el mismo, mientras que el dependiente
debe re-escribirse.
Microkernel
Un núcleo con 'arquitectura' micronúcleo es aquél que contiene únicamente el
manejo de procesos y threads, el de manejo bajo de memoria, da soporte a
las comunicaciones y maneja las interrupciones y operaciones de bajo nivel
de entrada-salida. [Tan92]. En los sistemas oprativos que cuentan con este
tipo de núcleo se usan procesos 'servidores' que se encargan de ofrecer el
resto de servicios (por ejemplo el de sistema de archivos) y que utilizan al
núcleo a través del soporte de comunicaciones.
Este diseño permite que los servidores no estén atados a un fabricante en
especial, incluso el usuario puede escoger o programar sus propios
servidores. La mayoría de los sistemas operativos que usan este esquema
manejan los recursos de la computadora como si fueran objetos: los
servidores ofrecen una serie de 'llamadas' o 'métodos' utilizables con un
comportamiento coherente y estructurado. Otra de las características
importantes de los micronúcleos es el manejo de threads. Cuando un proceso
está formado de un solo thread, éste es un proceso normal como en
cualquier sistema operativo.
CUADROS SINOPTICOS
CUADRO SINOPTICO POR EVOLUCION
HISTORIA
Década de
1940
Década de
1950
A mitad de
la década
de 1960
1964
Mitad de
década de
1970 en
adelante
A PARTIR
DEL 2000
EN
ADELANTE
EVOLUCIÒN DE LOS SISTEMAS OPERATIVOS
IMPACTOS Y LOGROS
CARACTERISITISTICAS
Los usuarios tenían completo acceso al
Los primeros sistemas
lenguaje de la maquina.
computacionales no poseían
Todas las instrucciones eran codificadas a
sistemas operativos
mano.
Se crearon máquinas suficientemente
Sistemas de procesamiento por
confiables las cuales se instalaban en
lotes.
lugares especialmente acondicionados,
Introducción de tarjetas perforadas. aunque sólo las grandes universidades y
La introducción del transistor
las grandes corporaciones o bien las
oficinas del gobierno se podían dar el lujo
de tenerlas.
Desarrollo de los sistemas
Los usuarios podían acoplarse
compartidos con
directamente con el computadora través de
multiprogramación.
terminales.
Principios del multiprocesamiento.
Los computadores fueron utilizados en el
Sistemas de tiempo real
control de procesos industriales.
Estos sistemas introdujeron mayor
complejidad a los ambientes
Introducción de la familia de
computacionales; una complejidad a la
computadores Sistema/360 de IBM.
cual, en un principio, no estaban
acostumbrados los usuarios.
Ampliación del uso de redes de
computadores y del
Los sistemas de la cuarta generación
procesamiento en línea.
constituyen el estado actual de la
Se implementaron los sistemas de
tecnología, los usuarios obtienen acceso a
seguridad.
computadores alejados geográficamente a
El concepto de maquinas virtuales través de varios tipos de terminales.
es utilizado.
SISTEMAS OPERATIVOS EVOLUCION DESDE EL AÑO 2000
Date
Windows
Mac
BSD
Red Hat
Ubuntu
Others
MorphOS 0.4[citation needed]
2000
2000-01
Windows 2000 (first of the
2000-02
Windows server operating systems
Solaris 8
to drop the 'NT' marketing)[10]
2000-03
FreeBSD 4.0
Red Hat Linux 6.2E
AtheOS (announced on Usenet),
BeOS R5
2000-04
2000-05
2000-06
Plan 9 Third Edition[11]
2000-07
2000-08
Debian 2.2
Windows Me (last of the Windows
2000-09
9x line of operating systems to be
SUSE Linux 7.0
produced and sold)[12]
2000-10
z/OS
2000-11
2000-12
HP-UX 11i (11.11)
Haiku (operating system)
(formerly known as Open BeOS,
2001
began development), EnGarde
Secure Linux
2001-03
Mac OS X
v10.0
Date
Windows
Mac
BSD
Red Hat
Ubuntu
Others
2001-05
AIX 5L 5.1
2001-07
eComStation 1.0 (July 10)
2001-08
Mac OS X
2001-09
v10.1
Windows XP (succeeded Windows
Me and Windows 2000,
2001-10
successfully merging the
Novell NetWare 6.0
'professional' NT line of desktop
operating systems with the 'home'
9x line of operating systems)[13]
2001-11
OS/2 4.52 (latest IBM version,
2001-12
released for both desktop and
server systems)
[
2002
Windows XP 64-bit Edition citation
needed]
Red Hat Enterprise
2002-03
Linux 2.1 AS
Plan 9 Fourth Edition[14], SUSE
2002-04
Linux 8.0
2002-05
Solaris 9 (SPARC)
2002-06
Debian 3.0, Syllable 0.4.0 (first
2002-07
2002-08
release of Syllable)[15]
Mac OS X
v10.2[16]
Date
2002-09
Windows
Mac
BSD
Red Hat
Ubuntu
Others
Windows XP Service Pack 1
2002-10
AIX 5.2
2002-11
2002-12
MorphOS 1.0
2003-01
FreeBSD 5.0
Solaris 9 (x86)
2003-02
2003-03
2003-04
Windows XP 64-bit Edition, Version
2003[17]
Windows Server 2003
Red Hat Enterprise
2003-05
Linux 2.1 ES
2003-06
2003-07
2003-08
Novell NetWare 6.5
2003-09
HP-UX 11i v2 (11.23)
2003-10
Mac OS X
Red Hat Enterprise
v10.3
Linux 3
2003-11
SUSE Linux 9.0
Fedora Core 1
2003-12
2004-03
ReactOS 0.2.0
Ubuntu 4.10
2004-04
(First released
version)
2004-05
2004-07
Fedora Core 2
DragonFly
AmigaOS 4 (Pre-Release)[18]
BSD 1.0
Date
2004-08
Windows
Mac
BSD
Red Hat
Ubuntu
Windows XP Service Pack 2
Others
AIX 5.3
2004-11
Fedora Core 3
2004-12
NetBSD 2.0
2005-01
Solaris 10
Red Hat Enterprise
2005-02
Linux 4
Windows Server 2003 Service
2005-03
Pack 1, Windows XP Professional
Novell Open Enterprise Server
x64 Edition
Mac OS X
2005-04
Ubuntu 5.04
v10.4
2005-05
2005-06
Fedora Core 4
Debian 3.1
2005-07
2005-08
2005-09
2005-10
Ubuntu 5.10
2005-11
FreeBSD 6.0
2005-12
NetBSD 3.0
SUSE Linux 10.0
2006-01
2006-02
2006-03
Windows Server 2003 R2
Fedora Core 5
2006-04
2006-05
2006-06
SymbOS, MINIX 3.1.2 (May 8)
Ubuntu 6.06
(LTS)
Date
Windows
Mac
BSD
Red Hat
Ubuntu
Others
2006-07
2006-08
ReactOS 0.3.0
2006-09
2006-10
2006-11
Fedora Core 6
Ubuntu 6.10
Windows Vista
Slackware 11.0
AmigaOS 4.0
2006-12
2007
BS2000/OSD v7.0
Inferno Fourth Edition (February
2007-02
2007-03
2)
Windows Server 2003 Service
Red Hat Enterprise
Pack 2
Linux 5
2007-04
Ubuntu 7.04
2007-05
Debian 4.0
Fedora 7
2007-07
Slackware 12.0
2007-09
HP-UX 11i v3 (11.31)
Mac OS X
2007-10
2007-11
Ubuntu 7.10
v10.5
Windows Home Server
2007-12
Fedora 8
AIX 6.1, gOS
NetBSD 4.0
2008-01
2008-02
Windows Vista Service Pack 1,
Windows Server 2008
FreeBSD 7.0
Singularity 1.1 (initial public
2008-03
2008-04
release, March 4)
Windows XP Service Pack 3
Ubuntu 8.04
(LTS)
Date
Windows
Mac
BSD
2008-05
Red Hat
Ubuntu
Others
OpenSolaris 2008.05, Slackware
Fedora 9
12.1
2008-06
MorphOS 2.0, SUSE Linux 11.0
DragonFly
2008-07
BSD 2.0
2008-08
STOP 6.5
2008-09
AmigaOS 4.1, z/OS V1R10
2008-10
Ubuntu 8.10
OpenBSD
2008-11
4.4
Fedora 10
Android
Singularity 2.0
MorphOS 2.2, OpenSolaris
2008-12
2008.11, Slackware 12.2
2009-01
2009-02
Debian 5.0
2009-03
2009-04
2009-05
NetBSD 5.0
Ubuntu 9.04
OpenBSD
Windows Vista Service Pack 2
4.5
AmigaOS 4.1 (Quick Fix),
2009-06
Fedora 11
OpenSolaris 2009.06, Palm
webOS
2009-07
Mac OS X
2009-08
2009-10
Slackware 13.0
v10.6
Windows 7
Ubuntu 9.10
CONCLUSIONES
• El sistema operativo es el programa más importante, porque controla el funcionamiento de la
computadora y el de los demás programas.
• Los sistemas operativos deben ir ligados a la evolución de Hardware y Software para ofrecer un
mejor servicio al usuario.
•La competencia entre los diferentes sistemas opertivos favorecen al usuario ya que bajan sus
precios u ofrecen sistemas operativos gratuitos.
BIBLIOGRAFIA – CIBERGRAFIA
 Sistemas Operativos ModernosAndrew S. Tanenbaum
Pearson
Education.
 www.oshistory.com
 www.monografias.com
 Sistemas Operativos / Diseño E Implementación Andrew S.
Tanenbaum
Prentice - Hall