En los sistemas operativos se esta presentando una tendencia que es la de explotar la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta.
Como podemos ver en esta figura, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a ficheros, servicio a procesos, servicio a terminales o servicio a la memoria; cada parte es pequeña y controlable. Además, puesto que todos los servidores se ejecutan como procesos en modo usuario, y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia, si hay un error en el servidor de ficheros éste puede fallar, pero esto no afectará en general a toda la máquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en sistemas distribuidos. Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se gestiona de forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta.
Para resumir las caracteristicas que posee una estructura Cliente - Servidor son:
Bibliografía: http://wwwdi.ujaen.es/~lina/TemasSO/INTRODUCCION/5Estructuradelossistemasoperativos.htm
Como podemos ver en esta figura, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a ficheros, servicio a procesos, servicio a terminales o servicio a la memoria; cada parte es pequeña y controlable. Además, puesto que todos los servidores se ejecutan como procesos en modo usuario, y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia, si hay un error en el servidor de ficheros éste puede fallar, pero esto no afectará en general a toda la máquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en sistemas distribuidos. Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se gestiona de forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta.
La idea anterior de un núcleo que sólo controla el transporte de mensajes de clientes a servidores, y viceversa, no es totalmente real. Algunas funciones del sistema operativo (como la introducción de órdenes en los registros físicos de los controladores de E/S) son difíciles, si no es que imposible de realizar, a partir de programas de usuario. Existen dos formas de afrontar este problema. Una es hacer que algunos procesos de servidores críticos (por ejemplo, los gestores de los dispositivos de E/S) se ejecuten en realidad en modo núcleo, con acceso total al hardware, pero de forma que se comuniquen con los demás procesos mediante el mecanismo normal de mensajes.
Para resumir las caracteristicas que posee una estructura Cliente - Servidor son:
- Se mantiene un núcleo mínimo.
- La mayoría de las funciones se implantan en los procesos del usuario.
- Lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores.
Bibliografía: http://wwwdi.ujaen.es/~lina/TemasSO/INTRODUCCION/5Estructuradelossistemasoperativos.htm
9 comentarios:
Interesante, interesante. Bastante explicativo.
Sólo me gustaría saber que sistemas son los que usan este tipo de kernel?
Saludos.
Pd: El Link de mi post es:
Los Núcleos Monolíticos
Bien explicado en el blog del toro, solo tengo duda si el hecho de hacer algunos procesos de modo servidor no hace lento es SO??? que SO usan esta arquitectura???
http://eniogt.blogspot.com ya se me estaba olvidadno.. jaja
Si bueno pues 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. Es decir, un proceso cliente puede actuar como servidor para otro.
Esto 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.
Por esta razón es que el hecho de tener en modo servidor procesos no hace mas lento el SO, por el contrario lo hace mas eficiente.
Según he leído actualmente se está trabajando en una versión de UNIX que contempla en su diseño esta estructura.
pshhhhhhh que toro!!
Ta bastante bien explicado como es el asunto como es que se da la relación entre clientes y servidores entre procesos.
si bueno es una buena estructura que deben manejar los sistemas operativos actuales, en la que el kernel debe controlar la comunicacion entre los clientes y los servidores.
http://darineloperativos1.blogspot.com/
Que calidad vs porque me imajino que al tener un núcleo más pequeño el sistema operativo iniciaría mucho más rápido en algunas máquinas, y eso es bastante atractivo para los usuarios.
buen post gerardo [naa toro!]
Buena explicación del contenido, tocaste puntos importantes para definir sus ventajas y desventajas. Excelente la retroalimentacion que manejaste con los comentarios.
Publicar un comentario