Entradas populares

miércoles, 10 de septiembre de 2014

Estructura de los sistemas Operativos





http://es.kioskea.net/contents/651-sistema-operativo






Componentes de un sistema operativo




Administración de procesos

Administración de memoria

Subsistema de Entrada/Salida Administración de Almacenamiento secundario

Subsistema de archivos 

Sistema de protección



Administración de Procesos

Para comenzar debemos saber que es un proceso. Un proceso es un programa enMemoria + CPU + acceso a dispositivos + otros recursos. Notemos que un procesoNecesita de ciertos recursos (como CPU, memoria, archivos, dispositivos de E/S, etc.)Para realizar su tarea.Podemos ver entonces que un proceso es una entidad activa, mientras que un programaUna entidad pasiva.Sabiendo entonces que es un proceso, podemos decir entonces que el sistema operativoEs el encargado de su administración. Es el encargado de proveer servicios para queCada proceso pueda realizar su tarea. Entre los servicios se encuentran:• Crear y destruir procesos• Suspender y reanudar procesos• Proveer mecanismos para la sincronización y comunicación entre procesos• Proveer mecanismos para prevenir dead-locks o lograr salir de ellos.





Administración de Memoria


La memoria es un área de almacenamiento común a los procesadores y dispositivos,Donde se almacenan programas, datos, etc. El sistema deberá administrar el lugar libre yOcupado, y será el encargado de las siguientes tareas:• Mantener que partes de la memoria están siendo usadas, y por quien.• Decidir cuales procesos serán cargados a memoria cuando exista espacio deMemoria disponible, pero no suficiente para todos los procesos que deseamos.• Asignar y quitar espacio de memoria según sea necesario.


Subsistema de Entrada/Salida

El sistema operativo deberá ocultar las características específicas de cada dispositivo yOfrecer servicios comunes a todos. Estos servicios serán, entre otros:• Montaje y desmontaje de dispositivos• Una interfaz entre el cliente y el sistema operativo para los device drivers.• Técnicas de cache, buffering y spooling.• Device drivers específicos.


Administración de Almacenamiento secundario

Dado que la memoria RAM es volátil y pequeña para todos los datos y programas quese precisan guardar, se utilizan discos para guardar la mayoría de la información. ElSistema operativo será el responsable de:• Administrar el espacio libre• Asignar la información a un determinado lugar• Algoritmos de planificación de disco (estos algoritmos deciden quien utiliza unDeterminado recurso del disco cuando hay competencia por él.

Subsistema de Archivos

Proporciona una vista uniforme de todas las formas de almacenamiento, implementandoEl concepto de archivo como una colección de bytes. El Sistema Operativo deberáProveer métodos para:• Abrir, cerrar y crear archivos• Leer y escribir archivos.
Sistema de protección

Antes que nada, tener en cuenta que por protección nos referimos a los mecanismos porLos que se controla el acceso de los procesos a los recursos.En un sistema multiusuario donde se ejecutan procesos de forma concurrente se debenTomar medidas que garanticen la ausencia de interferencia entre ellos. Estas medidasDeben incorporar la posibilidad de definir reglas de acceso, entre otras cosas.

Servicios del Sistema Operativo

El sistema brindará un entorno de ejecución de programas donde se dispondrá de unConjunto de servicios. Los servicios principales serán:• Ejecución de programas (el SO deberá ser capaz de cargar un programa aMemoria y ejecutarlo. El programa deberá poder finalizar, de forma normal oanormal)• Operaciones de E/S (el SO deberá proveer un mecanismo de acceso ya que porEficiencia y protección los usuarios no accederán directamente al dispositivo)• Manipulación del Sistema de archivos (se deberá tener acceso al sistema deArchivos y poder, como mínimo, leer, escribir, borrar y crear).• Comunicación entre procesos (los procesos deberán poder comunicarse, ya seaQue estén en el mismo computador o el diferentes)• Manipulación de errores (el sistema deberá tomar decisiones adecuadas anteEventuales errores que ocurran, como fallo de un dispositivo de memoria, falloEn un programa, etc.)

Estructura del Sistema

La estructura interna de los sistemas operativos pueden ser muy diferentes, ya que seDebe tener en cuenta las metas de los usuarios (fácil uso, confiable, rápido, etc.) y las delSistema (fácil de diseñar, implementar y mantener, eficiente, etc.).






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.


Los sistemas monoliticos se describen en 3 procesos principales:

- Un Programa principal que invoca el procedimiento de servicio solicitado.- Un Conjunto de procedemientos de servicio que llevan a cabo las llamadas del sistema.- Un Conjunto de procedimientos de utilería que ayudan a los procedimientos del servicio.En teoria un procedimiento dado puede invocar a ciertos servicios los cuales a su vez se verán ayudados por programas de utilería los cuales extraeran información importante para este.


SISTEMAS MONOLÍTICOS 

Es una colección de procedimientos que se pueden llamar entre sí, cada procedimiento tiene una interfaz bien definida en términos de parámetros y resultados.Un sistema monolítico está compuesto por un grupo de estructuras fijas las cuales funcionan entre sí. Existen módulos grandes en el kernell, los cuales interactúan entre sí, para poder tener una estructura, las diferentes partes del Kernell son compiladas por capas. Se encarga del funcionamiento del PC como son comunicación entre procesos, planificación y gestión del espacio de direcciones.


http://labsopa.dis.ulpgc.es/so-itig/tema3/img023.GIF

Sistemas por capas


El primer sistema que tuvo esta estructura fue el sistema THE construido en la Technische Hogeschool Eindhoven de los Países Bajos por E. W. Dijkstra (1968) y sus estudiantes. El sistema THE era un sencillo sistema por lotes para una computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27  bits (los bits eran costosos en esos tiempos).Más arriba de la capa 0, el sistema consistía en procesos secuenciales, cada uno         de los cuales podía programarse sin tener que preocuparse por el hecho de que múltiples procesos se estuvieran ejecutando en un solo procesador. En otras palabras, la capa 0 se encargaba de la multiprogramación básica del CPU.


https://sites.google.com/site/osupaep2010/_/rsrc/1285995237615/sistemas-operativos/sistemas-por-capas/Fig6.jpg?height=143&width=339


La capa 1 administraba la memoria, repartiendo espacio para los procesos en la memoria principal y en un tambor de 512K palabras que servía para contener partes de los procesos (páginas) para las que no había espacio en la memoria principal. Más arriba de la capa 1, los procesos no tenían que preocuparse por si estaban en la memoria o en el tambor; el software de esa capa se encargaba de que se colocaran en la memoria las páginas en el momento en que se necesitaban.La capa 2 manejaba la comunicación entre cada proceso y la consola del operador. Por encima de esta capa cada proceso tenía efectivamente su propia consola de operador.

La capa 3 se encargaba de administrar los dispositivos de E/S y de colocar en buffers las corrientes de información provenientes de y dirigidas a ellos. Más arriba de la capa 3 cada proceso podía tratar con dispositivos de E/S abstractos con propiedades  bonitas,  en  lugar de dispositivos reales con muchas  peculiaridades.  En  la  capa  4  se encontraban los programas de usuario, los cuales no tenían que preocuparse por la administración de procesos, memoria, consola o E/S. El proceso del operador del sistema estaba en la capa 5.Una  forma  más  generalizada del  concepto  de  capas  estuvo  presente  en  el  sistema  MULTICS. En vez de  estar  organizado  en capas,  MULTICS  estaba  organizado  como  una  serie  de anillos concéntricos, siendo los interiores más privilegiados que los exteriores.Aunque todo el sistema operativo formaba parte del espacio de direcciones de cada proceso de usuario en MULTICS, el hardware permitía designar  procedimientos  individuales  (en  realidad,  segmentos  de  memoria)  como  protegidos  contra lectura, escritura o ejecución.En tanto el esquema por capas del sistema THE era en realidad sólo una ayuda para el diseño, ya que todas las partes del programa en última instancia se vinculaban en un solo programa objeto, en MULTICS el mecanismo de anillo estaba muy presente en el momento de la ejecución y el hardware obligaba a ajustarse a él. La ventaja del mecanismo de anillo es que fácilmente puede extenderse para estructurar los subsistemas de usuario. Por ejemplo, un profesor podría escribir un programa para probar y calificar los programas de los estudiantes y ejecutar este programa en el anillo n, con los programas de los estudiantes ejecutándose en el anillo n + 1 para que los estudiantes no puedan modificar sus calificaciones.




Microkernels



El paradigma del micronúcleo, tuvo una gran relevancia académica durante los años ochenta y principios de los noventa, dentro de lo que se denominó self healing computing, esto es, sistemas independientes que fuesen capaces de superar por si mismos errores de software o hardware. En un principio pretendía ser una solución a la creciente complejidad de los sistemas operativos.Microkernel: es un tipo de núcleo de un sistema operativo que provee un conjunto de primitivas o llamadas mínimas al sistema para implementar servicios básicos como espacios de direcciones, comunicación entre procesos y planificación básica. Todos los otros servicios (gestión de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.





Las principales ventajas de su utilización son la reducción de la complejidad, la descentralización de los fallos (un fallo en una parte del sistema no se propagaría al sistema entero) y la facilidad para crear y depurar controladores de dispositivos. Según los defensores de esta tendencia, esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware.Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las ventajas de Zero Copy y la integración con las aplicaciones. Además, los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria. Sus detractores le achacan también y fundamentalmente, mayor complejidad en el código, menor rendimiento y limitaciones en diversas funciones.



http://upload.wikimedia.org/wikipedia/commons/thumb/d/d0/OS-structure2.svg/400px-OS-structure2.svg.png

Estructura de núcleo monolítico, micronúcleo y núcleo híbrido

http://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/Kernel-microkernel.svg/250px-Kernel-microkernel.svg.png


Modelo cliente-servidor


La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.Una  tendencia  en  los  sistemas  operativos  modernos  es  llevar  aún  más  lejos  esta  idea  de trasladar  código  a  capas  superiores  y  quitarle  lo  más  que  se  pueda  al  sistema  operativo,  dejando un  kernel  mínimo.  El  enfoque  usual  consiste  en  implementar la  mayor  parte  de  las  funciones del sistema operativo en procesos de usuario. Para solicitar un servicio,  como  leer  un  bloque de un archivo, un proceso de usuario (ahora llamado proceso cliente) envía la solicitud a un proceso servidor, el cual realiza el trabajo y devuelve la respuesta.Este  modelo se muestra en la Figura 8, lo único que  el  kernel  hace  es  manejar la comunicación entre los clientes y los servidores.  Al dividir el sistema  operativo en partes, cada una de las cuales sólo se encarga de una faceta del sistema, como el servicio de archivos, de procesos, de terminales o de memoria, cada parte puede ser pequeña y manejable. Además, dado que todos los servidores se ejecutan como procesos en modo de usuario, y no en modo de kernel, no tienen acceso directo al hardware. Por tanto, si se activa un error en el servidor de archivos, es posible que el servicio de archivos se caiga, pero normalmente esto no hará que se caiga toda la máquina.





https://sites.google.com/site/osupaep2010/_/rsrc/1285995762359/sistemas-operativos/modelo-cliente-servidor/Fig8.jpg?height=126&width=550



Maquina virtual


En informatica una maquina virtual es un software que simula a una computadora y puede ejecutar programas como si fuese una computadora real. Este software en un principio fue definido como "un duplicado eficiente y aislado de una maquina fisica". La acepcion del termino actualmente incluye a maquinas virtuales que no tienen ninguna equivalencia directa con un harware real.



http://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/VM_Monitor_IBM_VM_370.jpg/300px-VM_Monitor_IBM_VM_370.jpg

uuna caracteristica esencial de las maquinas virtuales es que los procesos que ejecutan estan limitados por los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de una computadora virtual.

Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para "probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por ejemplo) desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo directamente en nuestra computadora y sin miedo a que se desconfigure el sistema operativo primario.


http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/VirtualBox2.png/300px-VirtualBox2.png

Tipos de máquinas virtuales

  • Máquinas virtuales de sistema (en inglés System Virtual Machine)Máquinas virtuales de proceso (en inglés Process Virtual Machine).La máquina virtual puede proporcionar una arquitectura de instrucciones (ISA]) que sea algo distinta de la verdadera máquina. Es decir, podemos simular hardware.Varias máquinas virtuales (cada una con su propio sistema operativo llamado sistema operativo "invitado" o "guest"), pueden ser utilizadas para consolidar servidores.

  • http://upload.wikimedia.org/wikipedia/commons/thumb/7/71/VMware-schema.png/300px-VMware-schema.png            Funcionamiento de VMWare

Máquinas virtuales de sistema

Las máquinas virtuales de sistema, también llamadas máquinas virtuales de hardware, permiten a la máquina física subyacente multiplicarse entre varias máquinas virtuales, cada una ejecutando su propio sistema operativoA la capa de software que permite la vitalización se la llama monitor de máquina virtual o hypervisor. 

http://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Java-jvm.png/300px-Java-jvm.pngFuncionamiento de la máquina virtual de Java

Máquinas virtuales de proceso

Una máquina virtual de proceso, a veces llamada "máquina virtual de aplicación", se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. La máquina se inicia automáticamente cuando se lanza el proceso que se desea ejecutar y se detiene para cuando éste finaliza. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo, que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la misma forma sobre cualquier plataforma. El ejemplo más conocido actualmente de este tipo de máquina virtual es la máquina virtual de Java. Otra máquina virtual muy conocida es la del entorno. DMicrosoft que se llama "Common Lenguaje Runtime".

Inconvenientes de las máquinas virtuales

Uno de los inconvenientes de las máquinas virtuales es que agregan gran complejidad al sistema en tiempo de ejecución. Esto tiene como efecto la ralentización del sistema, es decir, el programa no alcanzará la misma velocidad de ejecución que si se instalase directamente en el sistema operativo "anfitrión" (host) o directamente sobre la plataforma de hardware. Sin embargo, a menudo la flexibilidad que ofrecen compensa esta pérdida de eficiencia.