Son los sistemas cuyos componentes de hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente–servidor.
Los recursos de diferentes máquinas en red se integran de forma que desaparece la dualidad local/remoto. La diferencia fundamental con los sistemas en red es que la ubicación del recurso es transparente a las aplicaciones y usuarios, por lo que, desde este punto de vista, no hay diferencia con un sistema de tiempo compartido. El usuario accede a los recursos del sistema distribuido a través de una interfaz gráfica de usuario desde un terminal, despreocupándose de su localización
Pera la construcción de un sistema distribuido que se comporte según esperan los usuarios, va a requerir considerar varios conjuntos de características:
Compartición de Recursos: El término recurso es bastante abstracto, pero es el que mejor caracteriza el abanico de entidades que pueden compartirse en un sistema distribuido. El abanico se extiende desde componentes hardware como discos e impresoras hasta elementos software como ficheros, ventanas, bases de datos y otros objetos de datos. La idea de compartición de recursos no es nueva ni aparece en el marco de los sistemas distribuidos. Los sistemas multiusuario clásicos desde siempre han provisto compartición de recursos entre sus usuarios. Sin embargo, los recursos de una computadora multiusuario se comparten de manera natural entre todos sus usuarios. Por el contrario, los usuarios de estaciones de trabajo monousuario o computadoras personales dentro de un sistema distribuido no obtienen automáticamente los beneficios de la compartición de recursos.
Transparencia: La transparencia se define como la ocultación al usuario y al programador de aplicaciones de la separación de los componentes de un sistema distribuido, de manera que el sistema se percibe como un todo, en vez de una colección de componentes independientes. La transparencia ejerce una gran influencia en el diseño del software de sistema.
Escalabilidad: es la capacidad de nuestro sistema para soportar más carga de trabajo con modificaciones o ampliaciones que sean razonables en términos de coste, tiempo y complejidad.
Tolerancia a fallos:Los sistemas informáticos a veces fallan. Cuando se producen fallos en el software o en el hardware, los programas podrían producir resultados incorrectos o podrían pararse antes de terminar la computación que estaban realizando. El diseño de sistemas tolerantes a fallos se basa en dos cuestiones, complementarias entre sí: Redundancia hardware (uso de componentes redundantes) y recuperación del software (diseño de programas que sean capaces de recuperarse de los fallos).En los sistemas distribuidos la redundancia puede plantearse en un grano más fino que el hardware, pueden replicarse los servidores individuales que son esenciales para la operación continuada de aplicaciones críticas.
Concurrencia:Cuando existen varios procesos en una única maquina decimos que se están ejecutando concurrentemente. Si el ordenador está equipado con un único procesador central, la concurrencia tiene lugar entrelazando la ejecución de los distintos procesos. Si la computadora tiene N procesadores, entonces se pueden estar ejecutando estrictamente a la vez hasta N procesos.
En los sistemas distribuidos hay muchas maquinas, cada una con uno o más procesadores centrales. Es decir, si hay M ordenadores en un sistema distribuido con un procesador central cada una entonces hasta M procesos estar ejecutándose en paralelo. En un sistema distribuido que está basado en el modelo de compartición de recursos, la posibilidad de ejecución paralela ocurre por dos razones: Muchos usuarios interactúan simultáneamente con programas de aplicación. Muchos procesos servidores se ejecutan concurrentemente, cada uno respondiendo a diferentes peticiones de los procesos clientes.
Apertura (opennesss): Un sistema informático es abierto si el sistema puede ser extendido de diversas maneras. Un sistema puede ser abierto o cerrado con respecto a extensiones hardware (añadir periféricos, memoria o interfaces de comunicación, etc…) o con respecto a las extensiones software ( añadir características al sistema operativo, protocolos de comunicación y servicios de compartición de recursos, etc… ). La apertura de los sistemas distribuidos se determina primariamente por el grado hacia el que nuevos servicios de compartición de recursos se pueden añadir sin perjudicar ni duplicar a los ya existentes.
Escalabilidad (scalability):Los sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas diferentes. La escala más pequeña consiste en dos estaciones de trabajo y un servidor de ficheros, mientras que un sistema distribuido construido alrededor de una red de área local simple podría contener varios cientos de estaciones de trabajo, varios servidores de ficheros, servidores de impresión y otros servidores de propósito específico. A menudo se conectan varias redes de área local para formar internetworks, y éstas podrían contener muchos miles de ordenadores que forman un único sistema distribuido, permitiendo que los recursos sean compartidos entre todos ellos.
Kernel monolítico:Un kernel o núcleo monolítico es un tipo de arquitectura de sistemas operativos donde el sistema operativo completo trabaja en el espacio del núcleo. Por lo tanto es un núcleo grande y complejo donde se concentran todas las funcionalidades del sistema. Un conjunto de primitivas o llamadas de sistema implementan todos los servicios del sistema operativo como la administración de procesos, la concurrencia y la administración de memoria. Los controladores de dispositivos (drivers) pueden se añadidos al kernel (núcleo) como módulos.
Micro Kernel: Un microkernel o micronúcleo es la cantidad de software mínimo que puede proveer los mecanismos que se necesitan para implementar un sistema operativo. Estos mecanismos incluyen administración del espacio de direcciones, administración de procesos y comunicación entre procesos (IPC). El microkernel debe ocupar muy poco espacio, por lo que suelen tener hasta 10 mil líneas de código solamente. Por ejemplo, el kernel de MINIX solo tiene 6 mil líneas de código. Para reducir el kernel, algunas funciones tradicionales del kernel del sistema operativo se ejecutan en el espacio de usuario como ser los controladores de dispositivos, sistema de archivos, pila de protocolos, etc.
Arquitectura de un micro kernel: El patrón de arquitectura Microkernel se aplica a sistemas de Software que deben estar habilitados para adaptarse a requerimientos cambiantes del sistema. Separa un núcleo de funcionalidad mínima de la funcionalidad extendida y de partes específicas al cliente. También sirve como un socket para conectores en estas extensiones y coordinar su colaboración.
El patrón Microkernel define cinco tipos de componentes:
Servidores internos
Servidores externos
Clientes
Adaptadores
Microkernel
Son declaraciones en lenguaje natural y en diagramas de los servicios que se espera que el sistema provea y de las restricciones bajo las cuales debe operar.
Describen los requerimientos funcionales y no funcionales de tal forma que sean comprensibles por los usuarios del sistema que no posean un conocimiento técnico detallado. Únicamente especifican el comportamiento externo del sistema y evitan, tanto como sea posible, las características de diseño del sistema. Por consiguiente, los requerimientos del usuario no se deben definir utilizando un modelo de implementación. Deben redactarse utilizando el lenguaje natural, representaciones y diagramas intuitivos sencillos.
Sin embargo, pueden surgir diversos problemas cuando se redactan en lenguaje natural: falta de claridad, confusión de requerimientos y conjunción de requerimientos.
El núcleo de Windows se diseña para que los controladores de dispositivos tengan los mismos privilegios que el mismo núcleo. Se espera que estos Controladores no modifiquen las estructuras centrales que hay dentro del núcleo. En ediciones x64 de Windows, Microsoft decidió comenzar a endurecer las restricciones para que el núcleo no pudiese parchearse. La tecnología usada se denomina protección contra revisiones del núcleo.
Las modificaciones prohibidas incluyen:
Modificar las tablas de llamadas al sistema del sistema.
Modificar la tabla de distribución de interrupción (IDT)
Modificar la tabla de descriptor global (GDT)
Usar pilas no asignadas por el núcleo
Modificar o parchear código dentro del núcleo o las bibliotecas HAL o NDIS
La protección contra revisiones del núcleo sólo previene que se instalen Controladores que lo modifiquen, pero no dispone de protección contra los que modifican a otro Controlador.
Al final, debido a que los Controladores tienen otorgados los mismos privilegios que el núcleo, es imposible prevenir completamente, que los controladores sorteen la protección y lo parcheen.7 Sin embargo, la protección presenta obstáculos significantes contra el parcheo, añadiendo código ofuscado y nombres de símbolos engañosos y usando un sistema de seguridad por oscuridad, para obstaculizar los intentos de sortearla. Las actualizaciones periódicas de la protección también la convierten en un (blanco móvil), porque las técnicas para sortearla, que posiblemente funcionen por un tiempo, probablemente dejarán de funcionar con la próxima actualización del sistema.
República Bolivariana de Venezuela
Ministerio del poder popular para la educación superior
I.U.P "Santiago Mariño"
Escuela: 47 Sistemas operativos
Ciudad Guayana,febrero del 2017
Profesor:
Yvan Salazar.
Autor:
Alumno – José Muñoz.
C.I 20556084