1) Existen dos tipos de requisitos que deben observarse al construir un sistema operativo: requisitos de usuario como facilidad de uso y requisitos de software como eficiencia y tolerancia a errores. 2) Los sistemas operativos actuales usan diferentes estructuras como sistemas monolíticos, sistemas en estratos, máquinas virtuales y modelos cliente-servidor para satisfacer estas necesidades. 3) Las funciones de un núcleo de sistema operativo incluyen la gestión de procesos, memoria, E/I y comunicaciones entre
1. 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:
2. 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 THE
Programas de usuario
Administración de E/S
Comunicación entre operador y procesos
Administración de memoria y tambor
Distribució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.
3. 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").
4. 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.
5. 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.
6. 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.
7. 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úcleo
El 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 GNUHurd y en Mac OS X
BeOS
Minix
MorphOS
QNX
RadiOS
Hurd
8. 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:
MicrosoftWindows 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.
9. 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.
10. 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.
11. 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.