14
SISTEMAS OPERATIVOS ESTRUCTURA DE LOS SISTEMAS OPERATIVOS

Estructura de Un Sistema Operativo

Embed Size (px)

DESCRIPTION

Estructura y clasificacion de los sistemas operativos

Citation preview

Page 1: Estructura de Un Sistema Operativo

sistemas operativos

ESTRUCTURA DE LOS SISTEMAS OPERATIVOS

Page 2: Estructura de Un Sistema Operativo

ESTRUCTURA DE UN SISTEMA OPERATIVO

Los seis diseños son: sistemas monolíticos, sistemas de capas, microkernels,

sistemas cliente-servidor, máquinas virtuales y exokernels.

SISTEMAS MONOLÍTICOS

Los sistemas monolíticos son aquellos en los que su centro es un grupo de

estructuras fijas, las cuales funcionan entre sí.

En los Sistemas Operativos Monolíticos, existen módulos grandes en el núcleo,

los cuales interactúan entre sí, para poder tener esta estructura, las diferentes

partes del kernel son compiladas por capas.

Un núcleo monolítico es un tipo de núcleo o kernel de un sistema operativo.

Como ejemplo de sistema operativo de núcleo monolítico están UNIX, Linux y

FreeBSD.

Estos sistemas tienen un núcleo grande y complejo, que engloba todos los

servicios del sistema. Está programado de forma no modular, y tiene un

rendimiento mayor que un micronúcleo (agregar referencia). Sin embargo,

cualquier cambio a realizar en cualquier servicio requiere la recompilación del

núcleo y el reinicio del sistema para aplicar los nuevos cambios.

Un sistema operativo con núcleo monolítico concentra todas las

funcionalidades posibles (planificación, sistema de archivos, redes,

controladores de dispositivos, gestión de memoria, etc) dentro de un gran

programa. El mismo puede tener un tamaño considerable, y deberá ser

recompilado por completo al añadir una nueva funcionalidad. Todos los

componentes funcionales del núcleo tienen acceso a todas sus estructuras de

datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo

el núcleo.

Esta organización sugiere una estructura básica para el sistema operativo:

1. Un programa principal que invoca el procedimiento de servicio solicitado.

2. Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al

sistema.

Page 3: Estructura de Un Sistema Operativo

3. Un conjunto de procedimientos utilitarios que ayudan a los procedimientos

de servicio.

En este modelo, para cada llamada al sistema hay un procedimiento de servicio

que se encarga de la llamada y la ejecuta. Los procedimientos utilitarios hacen

cosas que necesitan varios procedimientos de servicio, como obtener datos de

los programas de usuario. Esta división de los procedimientos en tres niveles:

El sistema de capas.

Consiste en organizar el sistema operativo como una jerarquía de capas, cada

una construida sobre la inmediata inferior. El primer sistema construido de esta

manera fue el sistema THE (Technische Hogeschool Eindhoven), desarrollado

en Holanda por E. W. Dijkstra (1968) y sus estudiantes.

• Capa 0: Asignación del procesador y multiprogramación

Page 4: Estructura de Un Sistema Operativo

En esta capa se proporciona la multiprogramación básica de la CPU, esto

quiere decir que trabaja en la asignación del procesador y también se alteran

los procesos cuando se ocurren las interrupciones o expiran los cronómetros.

Dichos sistemas constan de procesos secuénciales, estos se pueden

programar sin importar que varios procesos se estén ejecutando en el mismo

procesador.

• Capa 1: administración de la memoria y el disco

Aquí se administra la memoria, al mismo tiempo se asignaba el espacio de

memoria principal para los diversos procesos y un depósito de palabras de

512K en el cual se utilizaba para almacenar partes de los procesos, en este

caso las paginas, ya que no existía un lugar en la memoria principal. En esta

capa no se debe de preocupar que los procesos que estén en memoria o en el

depósito, esto se debe que el software de esta capa se encarga de garantizar

que las paginas lleguen a la memoria cuando fueran necesarias.

• Capa 2: comunicación operador - proceso

En esta capa se encarga de la comunicación entre el proceso y la consola de

usuario. Arriba de esta capa, cada proceso tiene su propia consola.

• Capa 3: control de entrada y salida

En la capa 3 se controlan los dispositivos de E/S y también guarda en buffers

los flujos de información entre los diferentes dispositivos. Por encima de esta

capa, los procesos pueden trabajar con dispositivos específicos de E/S

teniendo propiedades adecuadas.

• Capa 4: programas de usuario

Aquí se localizan los programas de los usuarios, estos no se preocupan por el

proceso, memoria, consola o control de E/S, que se tuvieran que utilizar.

• Capa 5: el operador

En esta capa se localiza el proceso operador del sistema.

Microkernels.

Page 5: Estructura de Un Sistema Operativo

Con el diseño de capas, los diseñadores podían elegir en dónde dibujar el

límite entre kernel y usuario. Tradicionalmente todas las capas iban al kernel,

pero eso no es necesario. La idea básica detrás del diseño de microkernel es

lograr una alta confiabilidad al dividir el sistema operativo en módulos

pequeños y bien definidos, sólo uno de los cuales (el microkernel) se ejecuta

en modo kernel y el resto se ejecuta como procesos de usuario ordinarios, sin

poder relativamente.

En especial, al ejecutar cada driver de dispositivo y sistema de archivos como

un proceso de usuario separado, un error en alguno de estos procesos puede

hacer que falle ese componente, pero no puede hacer que falle todo el sistema.

Así, un error en el driver del dispositivo de audio hará que el sonido sea

confuso o se detenga, pero la computadora no fallará. En contraste, en un

sistema monolítico con todos los drivers en el kernel, un driver de audio con

errores puede hacer fácilmente referencia a una dirección de memoria inválida

y llevar a todo el sistema a un alto rotundo en un instante.

Modelo cliente-servidor

Una ligera variación de la idea del microkernel es diferenciar dos clases de

procesos: los servidores, cada uno de los cuales proporciona cierto servicio, y

los clientes, que utilizan estos servicios. Este modelo se conoce como cliente-

servidor. A menudo la capa inferior es un microkernel, pero eso no es

requerido. La esencia es la presencia de procesos cliente y procesos servidor.

La comunicación entre clientes y servidores se lleva a cabo comúnmente

mediante el paso de mensajes. Para obtener un servicio, un proceso cliente

construye un mensaje indicando lo que desea y lo envía al servicio apropiado.

Después el servicio hace el trabajo y envía de vuelta la respuesta. Si el cliente

y el servidor se ejecutan en el mismo equipo se pueden hacer ciertas

optimizaciones, pero en concepto estamos hablando sobre el paso de

mensajes.

Una generalización obvia de esta idea es hacer que los clientes y los

servidores se ejecuten en distintas computadoras, conectadas mediante una

red de área local o amplia, Como los clientes se comunican con los servidores

mediante el envío de mensajes, no necesitan saber si los mensajes se manejan

Page 6: Estructura de Un Sistema Operativo

en forma local en sus propios equipos o si se envían a través de una red a

servidores en un equipo remoto. En cuanto a lo que al cliente concierne, lo

mismo ocurre en ambos casos: se envían las peticiones y se regresan las

respuestas. Por ende, el modelo cliente-servidor es una abstracción que se

puede utilizar para un solo equipo o para una red de equipos.

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.

Page 7: Estructura de Un Sistema Operativo

Exokernels

En vez de clonar la máquina actual, como se hace con las máquinas virtuales,

otra estrategia es particionarla; en otras palabras, a cada usuario se le

proporciona un subconjunto de los recursos. Así, una máquina virtual podría

obtener los bloques de disco del 0 al 1023, la siguiente podría obtener los

bloques de disco del 1024 al 2047 y así sucesivamente.

En la capa inferior, que se ejecuta en el modo kernel, hay un programa llamado

exokernel (Engler y colaboradores, 1995). Su trabajo es asignar recursos a las

máquinas virtuales y después comprobar los intentos de utilizarlos, para

asegurar que ninguna máquina trate de usar los recursos de otra. Cada

máquina virtual de nivel de usuario puede ejecutar su propio sistema operativo,

al igual que en la VM/370 y las Pentium 8086 virtuales, con la excepción de que

cada una está restringida a utilizar sólo los recursos que ha pedido y que le han

sido asignados.

La ventaja del esquema del exokernel es que ahorra una capa de asignación.

En los otros diseños, cada máquina virtual piensa que tiene su propio disco,

con bloques que van desde 0 hasta cirt to valor máximo, por lo que el monitor

de la máquina virtual debe mantener tablas para reasignar las direcciones del

disco (y todos los demás recursos). Con el exokernel, esta reasignación no es

necesaria.

El exokernel sólo necesita llevar el registro para saber a cuál máquina virtual se

le ha asignado cierto recurso. Este método sigue teniendo la ventaja de separar

la multiprogramación (en el exokernel) del código del sistema operativo del

Page 8: Estructura de Un Sistema Operativo

usuario (en espacio de usuario), pero con menos sobrecarga, ya que todo lo

que tiene que hacer el exokernel es mantener las máquinas virtuales

separadas unas de las otras.

CLASIFICACION DE LOS SISTEMAS OPERATIVOS.

Page 9: Estructura de Un Sistema Operativo

Monousuarios

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.

Multiusuarios

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.

Monotareas

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.

Multitareas

Un sistema operativo multitarea es aquél que le permite al usuario estar

realizando varias labores al mismo tiempo. Por ejemplo, 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.

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.

Multiproceso

Page 10: Estructura de Un Sistema Operativo

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.

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. Cuando se trabaja de manera simétrica, los procesos o

partes de ellos (threads) son enviados indistintamente a cualesquiera de los

procesadores disponibles, teniendo, teóricamente, una mejor distribución y

equilibrio en la carga de trabajo bajo este esquema.

Se dice que un thread es la parte activa en memoria y corriendo de un proceso,

lo cual puede consistir de un área de memoria, un conjunto de registros con

valores específicos, la pila y otros valores de contexto. Us 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.

Bibliografía.

Sistemas Operativos - 3ª edición-Andrew S. Tanenbaum

Sistemas Operativos - 2ª D.M Dhamdhere