Está en la página 1de 7

Foro1: Estructura de un SO

La ingeniería de un sistema tan grande y complejo como un sistema operativo moderno


debe hacerse cuidadosamente para que el sistema funcione apropiadamente y pueda
modificarse con facilidad. Un método habitual consiste en dividir la tarea en componentes
más pequeños, en lugar de tener un sistema monolítico. Cada uno de estos módulos debe
ser una parte bien definida del sistema, con entradas, salidas y funciones cuidadosamente
especificadas.

Analizaremos seis estructuras distintas que se han probado, para poder darnos una idea
del espectro de posibilidades. Los seis diseños son: sistemas monolíticos, sistemas de
capas, microkernels, sistemas cliente-servidor, máquinas virtuales y exokernels.

Sistemas monolíticos. - En este diseño, que hasta ahora se considera como la organización
más común, todo el sistema operativo se ejecuta como un solo programa en modo kernel.
El sistema operativo se escribe como una colección de procedimientos, enlazados entre sí
en un solo programa binario ejecutable extenso. Cuando se utiliza esta técnica, cada
procedimiento en el sistema tiene la libertad de llamar a cualquier otro, si éste proporciona
cierto cómputo útil que el primero necesita. Al tener miles de procedimientos que se
pueden llamar entre sí sin restricción, con frecuencia se produce un sistema poco manejable
y difícil de comprender.

Esta organización sugiere una estructura básica para el sistema operativo:


1. Un programa principal que invoca el procedimiento de 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 a los procedimientos de servicio.

Sistemas de capas. - El primer sistema construido de esta forma fue el sistema THE,
construido en Technische Hogeschool Eindhoven en Holanda por E.W. Dijkstra (1968) y
sus estudiantes. El sistema THE era un sistema simple de procesamiento por lotes para una
computadora holandesa, la Electrologica X8, que tenía 32K de palabras de 27 bits.
El sistema tenía seis capas, como se muestra en la figura 1-25. El nivel 0 se encargaba de la
asignación del procesador, de cambiar entre un proceso y otro cuando ocurrían
interrupciones o expiraban los temporizadores.
La capa 1 se encargaba de la administración de la memoria.
La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador.
La capa 3 se encargaba de administrar los dispositivos de E/S y de guardar en búferes los flujos de
información dirigidos para y desde ellos.
La capa 4 era en donde se encontraban los programas de usuario.
El proceso operador del sistema se encontraba en el nivel 5.

Microkernels. - La idea básica detrás del diseño de microkernel es lograr una alta confiabilidad al dividir
el sistema operativo en módulos pequeños y bien definidos, sólo uno de los cuales se ejecuta en modo kernel
y el resto se ejecuta como procesos de usuario ordinarios, sin poder relativamente.
En especial, al ejecutar cada driver de dispositivo y sistema de archivos como un proceso de usuario separado,
un error en alguno de estos procesos puede hacer que falle ese componente, pero no puede hacer que falle
todo el sistema. Así, un error en el driver del dispositivo de audio hará que el sonido sea confuso o se detenga,
pero la computadora no fallará.
Modelo cliente-servidor. - La comunicación entre clientes y servidores se lleva a cabo comúnmente
mediante el paso de mensajes. Para obtener un servicio, un proceso cliente construye un mensaje indicando lo
que desea y lo envía al servicio apropiado. Después el servicio hace el trabajo y envía de vuelta la respuesta.
Si el cliente y el servidor se ejecutan en el mismo equipo se pueden hacer ciertas optimizaciones, pero en
concepto estamos hablando sobre el paso de mensajes.

Máquinas virtuales. - El corazón del sistema, que se conoce como monitor de máquina virtual, se
ejecuta en el hardware solamente y realiza la multiprogramación, proporcionando no una, sino varias
máquinas virtuales a la siguiente capa hacia arriba. Sin embargo, a diferencia de otros sistemas operativos,
estas máquinas virtuales no son máquinas extendidas, con archivos y otras características adecuadas. En vez
de ello, son copias exactas del hardware, incluyendo el modo kernel/ usuario, la E/S, las interrupciones y todo
lo demás que tiene la máquina real.
Como cada máquina virtual es idéntica al verdadero hardware, cada una puede ejecutar cualquier sistema
operativo que se ejecute directamente sólo en el hardware. Distintas máquinas virtuales pueden (y con
frecuencia lo hacen) ejecutar distintos sistemas operativos.

La máquina virtual de Java


Otra área en donde se utilizan máquinas virtuales, pero de una manera algo distinta, es para ejecutar
programas de Java. Cuando Sun Microsystems inventó el lenguaje de programación Java, también
inventó una máquina virtual (es decir, una arquitectura de computadora) llamada JVM (Java
Virtual Machine, Máquina virtual de Java).

Exokernels. - En vez de clonar la máquina actual, como se hace con las máquinas virtuales, otra estrategia
es particionarla; en otras palabras, a cada usuario se le proporciona un subconjunto de los recursos. Así, una
máquina virtual podría obtener los bloques de disco del 0 al 1023, la siguiente podría obtener los bloques de
disco del 1024 al 2047 y así sucesivamente.
La ventaja del esquema del exokernel es que ahorra una capa de asignación. En los otros diseños, cada
máquina virtual piensa que tiene su propio disco, con bloques que van desde 0 hasta cierto valor máximo, por
lo que el monitor de la máquina virtual debe mantener tablas para reasignar las direcciones del disco (y todos
los demás recursos).

Estructura del Sistema Operativo Windows


Uno de las características que Windows comparte con el resto de los Sistemas Operativos
avanzados es la división de tareas del Sistema Operativo en múltiples categorías, las cuales
están asociadas a los modos actuales soportados por los microprocesadores. Estos modos
proporcionan a los programas que corren dentro de ellos diferentes niveles de privilegios para
acceder al hardware o a otros programas que están corriendo en el sistema. Windows usa un
modo privilegiado (Kernel) y un modo no privilegiado (Usuario).
El Modo Usuario es un modo menos privilegiado de funcionamiento, sin el acceso directo al
hardware. El código que corre en este modo sólo actúa en su propio espacio de dirección. Este
usa las APIs (System Application Program Interfaces) para pedir los servicios del sistema.
El Modo Kernel es un modo muy privilegiado de funcionamiento, donde el código tiene el
acceso directo a todo el hardware y toda la memoria, incluso a los espacios de dirección de
todos los procesos del modo usuario. La parte de WINDOWS que corre en el modo Kernel se
llama Ejecutor de Windows, que no es más que un conjunto de servicios disponibles a todos los
componentes del Sistema Operativo, donde cada grupo de servicios es manipulado por
componentes que son totalmente independientes (entre ellos el Núcleo) entre sí y se
comunican a través de interfaces bien definidas.
Estructura del Sistema Operativo Linux
Linux representa solamente el kernel (núcleo) del sistema operativo. Todo sistema operativo (como
Linux, Windows y Mac, por ejemplo) tienen un núcleo. En el caso de las distribuciones de Linux, el
kernel es Linux, libre y siendo desarrollado por colaboradores de todo el mundo.
Linux esta estructurado como una colección de módulos algunos de los cuales pueden cargarse y
descargarse automáticamente bajo demanda. Estos bloques independientes se denominan módulos
cargables, tiene un enlace dinámico y módulos apilables.

Enlace dinámico. – Un módulo de núcleo puede cargarse y enlazarse al núcleo mientras el núcleo
esta en memoria y ejecutándose como así también puede desenlazarse y eliminarse en cualquier
momento. Este enlace dinámico facilita la configuración y reduce el uso de memoria del núcleo.

Módulos apilables. – Estos se gestionan como una jerarquía. Los módulos individuales sirven como
bibliotecas cuando los módulos clientes se referencian a módulos de la parte inferior de la jerarquía.

Estructura del Sistema operativo Android


Android está basado en un núcleo Linux, que ha sido modificado y adaptado a las
necesidades específicas de los dispositivos móviles. Además de ofrecer los servicios básicos
del sistema, ofrece una capa de abstracción del hardware del dispositivo. Por encima del
núcleo, el sistema se compone de cuatro componentes básicos:

Las bibliotecas: Están escritas en lenguaje C/C++, su funcionalidad es


usada por diferentes componentes del sistema y se ofrece a los
desarrolladores a través del framework.
El Framework de aplicaciones: Lo usarán los desarrolladores para
ejecutar sus programas y está formado por las mismas APIs que utilizan
las aplicaciones base del sistema.
El Runtime de Android: Android incluye un conjunto de bibliotecas
básicas que ofrecen la mayoría de funciones incluidas en las bibliotecas
base de Java.
Las Aplicaciones: Es la parte que verá el usuario y que le ofrecen las
capacidades al dispositivo.

Tanenbaum, A. (2009). Sistemas Operativos Modernos. México: Pearson Prentice Hall.

Silberschatz, A., Galvin, P., y Gagne, G. (2013). Operating Systems Concepts. Estados Unidos:
Wiley.

https://ayudalinux.com/estructura-sistema-linux/
https://prezi.com/vkrxuuckxsj1/estructura-del-sistema-operativo-linux/
https://es.scribd.com/doc/103987454/Estructura-Del-Sistema-Operativo-
Linux
https://es.slideshare.net/JesusJimenez123/android-estructura-del-
sistema-operativo
http://edsonjosueal5991.blogspot.com/2014/08/estructura-general-de-
windows.html

Bibliografía

También podría gustarte