Estructura del sistema operativo

Preview:

Citation preview

Estructura del sistema operativo

Según [Alcal92], se deben observar dos tipos de requisitos cuando se construye un

sistema operativo, los cuales son:

Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y

adecuado al uso al que se le quiere destinar.

Requisitos del software: Donde se engloban aspectos como el mantenimiento,

forma de operación, restricciones de uso, eficiencia, tolerancia frente a los

errores y flexibilidad.

A continuación se describen las distintas estructuras que presentan los actuales

sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener.

Sistemas monolíticos.

La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto cálculo útil para el primero.

Se componen de un conjunto de procedimientos, donde cada uno de ellos puede llamar a todos los demás.

Proceso para requerir un servicio del S.O.: el programa de usuario coloca los parámetros necesarios en los lugares previamente definidos, y seguidamente ejecuta una llamada al supervisor (se cambia de modo usuario a modo supervisor), transfiriendo el control al S. O. que examina dichos parámetros y determina el procedimiento que debe invocar. Cuando se complete la llamada devuelve el control al programa de usuario. S. O. con una pequeña estructura de niveles:

Esta organización sugiere una organización básica del sistema operativo:

1.- Un programa principal que llama al procedimiento del servicio solicitado.2.- Un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.3.- Un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.

En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de ella. Los procedimientos de utilidad hacen cosas necesarias para varios procedimientos de servicio, como por ejemplo, buscar los datos del programa del usuario.

Sistemas en estratos.

Se organiza en una jerarquía de estratos, estando construido cada uno de ellos sobre el otro que tiene menor jerarquía que él.

Ejemplos:

A. THE (Dijkstra, 1968): sistema de procesamiento por lotes.B. MULTICS: anillos concéntricos alrededor del hardware, donde los internos son más privilegiados que los externos.

Operador de THEProgramas de usuarioAdministración de E/SComunicación entre operador y procesosAdministración de memoria y tamborDistribución del procesador y multiprogramación

Máquinas virtuales.

Crea ilusiones (máquinas virtuales) de la máquina real, permitiendo que en cada máquina virtual se ejecute un S. O. distinto.El programa de control es el que se ejecuta directamente sobre el propio hardware y ofrece al nivel inmediatamente superior varias máquinas virtuales.

Tipos de máquinas virtuales

Funcionamiento de la máquina virtual de Java, una de las máquinas virtuales de proceso más populares.

Funcionamiento de VMWare, una de las máquinas virtuales de sistema más populares.

Las máquinas virtuales se pueden clasificar en dos grandes categorías según su funcionalidad y su grado de equivalencia a una verdadera máquina.

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 operativo. A la capa de software que permite la virtualización se la llama monitor de máquina virtual o "hypervisor". Un monitor de máquina virtual puede ejecutarse o bien directamente sobre el hardware o bien sobre un sistema operativo ("host operatingsystem").

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.

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. Ejemplos: Multics y Unix.

Modelo Cliente-Servidor.

Descripción: su objetivo es minimizar el kernel desplazando el código de todos sus servicios a estratos lo más superiores posibles. Para ello, la mayoría de sus funciones se implementan como procesos de usuario, denominados procesos servidores, de forma que cuando un proceso de usuario llamado proceso cliente, necesita un servicio del S.O. lo que hace es enviar un mensaje al proceso servidor correspondiente, que realiza el trabajo y devuelve la respuesta. El kernel lo único que hace es implementar la comunicación entre clientes y servidores y entre servidores y el hardware.

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.

Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en 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.

Estructura orientada al objeto.Descripción: se basan en una colección de objetos, donde las funciones del sistema son un tipo de objeto (ficheros, dispositivos, etc.). La interacción entre dichos objetos viene determinada por las capacidades que cada uno tenga para actuar con el otro.El kernel es el responsable del mantenimiento de las definiciones de los tipos de objetos soportados y del control de los privilegios de acceso a los mismos. Cuando un

programa desee realizar una operación sobre un objeto determinado, deberá ejecutar una llamada al sistema, indicando qué derechos tiene para poder utilizarlo y qué operación intenta llevar a cabo. Como resultado de dicha llamada, el sistema validará la petición y, si puede ser aceptada, permitirá la realización de dicha operación.

Núcleo del sistema Operativo

En informática, un núcleo o kernel (de la raíz germánicaKern) es un software que constituye la parte más importante del sistema operativo.[1] Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.

Funciones generalmente ejercidas por un núcleo

Los núcleos tienen como funciones básicas garantizar la carga y la ejecución de los procesos, las entradas/salidas y proponer una interfaz entre el espacio núcleo y los programas del espacio del usuario.

Aparte de las funcionalidades básicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de ficheros o los servicios) necesariamente no son proporcionadas por un núcleo de sistema de explotación. Pueden establecerse estas funciones del sistema de explotación tanto en el espacio usuario como en el propio núcleo. Su implantación en el núcleo se hace en el único objetivo de mejorar los resultados. En efecto, según la concepción del núcleo, la misma función llamada desde el espacio usuario o el espacio

núcleo tiene un coste temporal obviamente diferente. Si esta llamada de función es frecuente, puede resultar útil integrar estas funciones al núcleo para mejorar los resultados.

Ejemplo:

Núcleo Linux es un núcleo de sistema operativo libre tipo Unix.[] Es uno de los principales ejemplos de software libre. Linux está licenciado bajo la GPL v2 y está desarrollado por colaboradores de todo el mundo. El desarrollo del día a día tiene lugar en la Linux Kernel Mailing List.

Unix es un programa escrito casi en su totalidad en lenguaje C, con excepción de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera. Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimo la atención individual.

El núcleo opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo.

Creación de procesos, asignación de tiempos de atención y sincronización. Asignación de la atención del procesador a los procesos que lo requieren. Administración de espacio en el sistema de archivos, que incluye: acceso,

protección y administración de usuarios; comunicación entre usuarios y entre procesos, y manipulación de E/S y administración de periféricos.

Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.

Reside siempre en la memoria principal y tiene el control sobre la computadora, por lo que ningún otro proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya mencionados. Un proceso llama al núcleo mediante módulos especiales conocidos como llamadas al sistema.

Tipos de núcleo

Hay cuatro grandes tipos de núcleos:

Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.

Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.[4]

Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.

Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.

MicronúcleoEl objetivo principal es la separación de la implementación de los servicios básicos y de la política de funcionamiento del sistema. Estos servidores de usuario, utilizados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la

estructura y diseño del núcleo. Si falla uno de estos servidores, no se colgará el sistema entero, y se podrá reiniciar este módulo independientemente del resto.

Algunos ejemplos de micronúcleos:

AIX La familia de micronúcleos L4 El micronúcleoMach, usado en GNU Hurd y en Mac OS X BeOS Minix MorphOS QNX RadiOS Hurd

Núcleos híbridos (micronúcleos modificados)

Los núcleos híbridos fundamentalmente son micronúcleos que tienen algo de código «no esencial» en espacio de núcleo para que éste se ejecute más rápido de lo que lo haría si estuviera en espacio de usuario. Éste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en micronúcleo adoptaron antes que se demostrara que los micronúcleos pueden tener muy buen rendimiento. La mayoría de sistemas operativos modernos pertenecen a esta categoría, siendo el más popular Microsoft Windows. XNU, el núcleo de Mac OS X, también es un micronúcleo modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach. DragonFlyBSD es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.

Algunos ejemplos de núcleos híbridos:

Microsoft Windows NT , usado en todos los sistemas que usan el código base de Windows NT

XNU (usado en Mac OS X) DragonFlyBSD ReactOS

Exonúcleos

Esquema básico de la interacción entre un Exonúcleo (Exokernel) con el Software a través de bibliotecas.

Los exonúcleos, también conocidos como sistemas operativos verticalmente estructurados, representan una aproximación radicalmente nueva al diseño de sistemas operativos.

La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Los exonúcleos son extremadamente pequeños, ya que limitan expresamente su funcionalidad a la protección y el multiplexado de los recursos. Se llaman así porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en bibliotecas dinámicas.

Los diseños de núcleos clásicos (tanto el monolítico como el micronúcleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstracción del hardware, o

detrás de los controladores de dispositivo. En los sistemas clásicos, si se asigna memoria física, nadie puede estar seguro de cuál es su localización real.

La finalidad de un exonúcleo es permitir a una aplicación que solicite una región específica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos están disponibles, y que el programa tiene derecho a acceder a ellos.

Procesos del Sistema Operativo

Un proceso es un programa en ejecución. Los procesos son gestionados por el sistema

operativo y están formados por:

Las instrucciones de un programa destinadas a ser ejecutadas por

el microprocesador.

Su estado de ejecución en un momento dado, esto es, los valores de

los registros de la unidad central de procesamiento para dicho programa.

Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.

Otra información que permite al sistema operativo su planificación.

Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un

proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los

hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de

ejecución.

Los procesos son creados y destruidos por el sistema operativo, así como también este

se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de

otros procesos. El mecanismo por el cual un proceso crea otro proceso se

denomina bifurcación (fork). Los nuevos procesos pueden ser independientes y no

compartir el espacio de memoria con el proceso que los ha creado o ser creados en el

mismo espacio de memoria.

En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La

diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en

que dichos hilos comparten toda la memoria reservada para el proceso.

Estados en los que puede estar un proceso.

Listo. Tiene todo lo necesario para ejecutarse excepto el procesador. Suspendido. No está en memoria principal. Bloqueado. Está esperando un evento.

Bloqueado y suspendido. Listo y suspendido.

El proceso se puede definir como un programa de gestión por el sistema operativo.

Durante su elección el proceso va modificando en ejecución y, de una forma un poco

más precisa, como la unidad de procesamiento los registro del modelo de

programación de la computadora, de acuerdo a las intrusiones de maquina

involucradas.

Estados de un proceso.-

Un proceso puede variar entre 5 distintos estados:

New: cuando el proceso está siendo creado.

Running: cuando el proceso se está ejecutando.

Waiting: cuando el proceso está esperando que se cumpla algún otro evento.

Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU.

Terminated: cuando el proceso está terminado.

Internamente los procesos se almacenan en una lista encadenada en donde cada nudo

almacena la información anterior.

Método

Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a

detenerse a los otros hasta que reciban una señal para continuar.

Se usa una variable de tipo semáforo para sincronizar los procesos.

Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.

Se mantiene una cola de procesos en espera en el semáforo.

La forma de elegir los procesos de la cola en espera es mediante una política *first

in first out.  (en español "primero en entrar, primero en salir")

*Es un concepto utilizado en estructuras de datos, contabilidad de costes y teoría

de colas. Por ejemplo: Guarda analogía con las personas que esperan en una cola y

van siendo atendidas en el orden en que llegaron, es decir, que la primera persona

que entra es la primera persona que sale.

La sincronización explícita entre procesos es un caso particular del estado "bloqueado".

En este caso, el suceso que permite desbloquear un proceso no es una operación de

entrada/salida, sino una señal generada a propósito por el programador desde otro

proceso.

Información del estado

+ Se encarga de almacenar el contenido de los registros del procesador cuando el

proceso, no esta ejecutándose.

+ Este proceso normalmente esta supervisado y dirigido por el hardware de la

máquina.

Información del control

+ Es la información que se utiliza para obtener datos relacionados con el control del

proceso.

Los privilegios del proceso

+ Debido a que el microprocesador, no dispone de memoria ilimitada para la ejecución

de los procesos, a estos se les aplica un ‘sistema de privilegios de proceso’.

+ De esta forma un proceso con ‘mayor privilegio de proceso’ puede interrumpir uno

de menor ‘privilegio’, pero nunca al revés.

Recommended