Documente Academic
Documente Profesional
Documente Cultură
Estructura de un Sistema
Operativo, Niveles de
Diseño
REPORTE DE INVESTIGACIÓN
Arana Cabrera Maricela
Galarza Cabrera Karen Beatriz
García Brito Keiri
Hernández Nájera Laura Marysthel
Ruiz Soto Abraham
Solís Macedo Paula
09/09/2010
Breve explicación del diseño por capas de un sistema operativo tradicional, los enfoques
de diseño monolítico y micronúcleo. Análisis de la estructura de los sistemas operativos
Linux, UNIX y Windows.
A
L
Arquitectura de un Sistema Operativo UNIX
Los programas de Usuario. ........................ 15
Clásico ..................................................... 14
Arquitectura de Windows .............................. 7 M
El Hardware ................................................. 14 P
El Núcleo ..................................................... 14 Planificación del procesador ......................... 5
El Shell ........................................................ 15
El sistema de archivos ................................ 15 S
El Subsistema OS/2. ................................... 12 Servicios ....................................................... 5
El Subsistema POSIX. ................................ 11 Similitudes ................................................... 16
El Subsistema Win32 .................................. 10 Similitudes y Diferencias entre las
Estructura de un Sistema Operativo ............. 4 arquitecturas de UNIX, Windows y Linux 15
G Sistema Operativo de Micronúcleo ............... 6
Subsistemas de Ambiente Protegido............ 9
Gestión de Archivos y directorios. ................. 6
Gestión de dispositivos de E/S ...................... 6 V
Gestión de memoria ...................................... 5 Visión General de la Arquitectura de
Gestión de procesos ..................................... 5 Windows. .................................................. 7
I
Introducción ................................................... 3
1. Introducción
Los primeros SO’s eran sumamente sencillos, limitados a hacer funcionar el ordenador en
el que estaban montados, 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.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas
estuviera perfectamente definida y con un claro interface con el resto de elementos.
Edsger Dijkstra fue uno de los científicos y filósofos de la informática de los años 70,
desarrollando sobre todo algoritmos que proponían una solución a problemas que aun no
tenían una respuesta, o bien, dando una solución más optima que las ya existentes. Fue
profesor en la Technische Hogeschool, Eindhoven, en Holanda (Países Bajos) donde
ideó, con fines puramente didácticos, separar el diseño de un sistema operativo en capas
que hiciese mucho más sencilla el desarrollo de cada una de las partes de este dando
como resultado un sistema mucho más estable ya que el ó los programadores pueden
concentrarse en solo una función en particular a la vez, reduciendo en gran medida los
errores de diseño.
En este diseño cada capa ó nivel representa una función del SO, las capas que propuso
Dijkstra son las siguientes:
Capa Nombre
5 Programas de Usuario
4 Gestión de Información (Sistema de Archivos)
3 Gestión de Dispositivos (E/S)
2 Gestión de Procesos
1 Gestión de Memoria
0 Gestión de CPU
1 Hardware
En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa
(trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las
zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de
accesos indeseados desde las capas más externas. Las capas más internas serán, por
tanto, más privilegiadas que las externas.
2.2. Gestión de memoria
2.2.1. Servicios
El gestor de memoria ofrece una serie de servicios a los procesos. Estos son:
Solicitar memoria
Liberar memoria
Compartir memoria.
La planificación del procesador se refiere a la manera o técnicas que se usan para decidir
cuánto tiempo de ejecución y cuando se le asignan a cada proceso del sistema.
Obviamente, si el sistema es monousuario y monotarea no hay mucho que decidir, pero
en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema.
Facilitar el manejo de los dispositivos periféricos. Para ello ofrecer una interfaz
sencilla, uniforme y fácil de utilizar entre los dispositivos, y gestionar los errores que
se pueden producir en el acceso a los mismos.
Ofrecer mecanismos de protección que impidan a los usuarios acceder sin control a
los dispositivos periféricos.
El servidor de archivos es la parte del sistema operativo que cubre una de las cuatro
clases de funciones que tiene este en su faceta de máquina extendida. Los Objetivos
fundamentales del servidor de archivos son los dos siguientes:
Facilitar el manejo de los dispositivos periféricos. Para ello ofrece una visión lógica
simplificada de los mismos en forma de archivos.
Proteger a los usuarios, poniendo limitaciones a los archivos que es capaz de
manipular cada usuario.
Un sistema de archivos ( file system ) es una estructura de directorios con algún tipo de
organización el cual nos permite almacenar, crear y borrar archivos en diferentes
formatos.
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. Por ejemplo, un programa de
aplicación normal es un cliente que llama al servidor correspondiente para acceder a un
archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez,
un proceso cliente puede actuar como servidor para otro." [Alcal92]. Este paradigma
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. Estos servidores deben tener mecanismos de seguridad y protección que, a
su vez, serán filtrados por el núcleo que controla el hardware. Actualmente se está
trabajando en una versión de UNIX que contempla en su diseño este paradigma.
4. Arquitectura de Windows
4.1. Visión General de la Arquitectura de Windows.
Un Sistema Operativo serio, capaz de competir en el mercado con otros como Unix que
ya tienen una posición privilegiada, en cuanto a resultados, debe tener una serie de
características que le permitan ganarse ese lugar. Algunas de estas son:
Uno de los pasos más importantes que revolucionó los Sistemas Operativos de la
Microsoft fue el diseño y creación de un Sistema Operativo extensible, portable, fiable,
adaptable, robusto, seguro y compatible con sus versiones anteriores (Windows NT).
Ya creado este diseño las demás versiones que le sucedieron a Windows NT fueron
tomando esta arquitectura como base y le fueron adicionando nuevos componentes.
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).
Uno de los objetivos fundamentales del diseño fue el tener un núcleo tan pequeño como
fuera posible, en el que estuvieran integrados módulos que dieran respuesta a aquellas
llamadas al sistema que necesariamente se tuvieran que ejecutar en modo privilegiado
(modo kernel). El resto de las llamadas se expulsarían del núcleo hacia otras entidades
que se ejecutarían en modo no privilegiado (modo usuario), y de esta manera el núcleo
resultaría una base compacta, robusta y estable.
Todos los programas que no corren en Modo Kernel corren en Modo Usuario. La mayoría
del código del Sistema Operativo corre en Modo Usuario, así como los subsistemas de
ambiente (Win32 y POSIX que serán explicados en capítulos posteriores) y aplicaciones
de usuario. Estos programas solamente acceden a su propio espacio de direcciones e
interactúan con el resto del sistema a través de mensajes Cliente/Servidor.
El subsistema de Win32
El subsistema de POSIX
El subsistema de OS/2
Aunque algunas veces se muestran las personalidades Win16 y DOS incluidas en una
lista de subsistemas de ambiente protegido, ellas realmente son parte del subsistema
Win32.
Los subsistemas de ambiente protegido actúan como los mediadores entre las
aplicaciones del Modo Usuario y el Ejecutor de Windows.
Win32 es el subsistema nativo y primario de WINDOWS. Las bases para este subsistema
es el conjunto de APIs de Win32. Muchos de estas API son extensiones directas de sus
homólogas Win16.
Este subsistema actúa como un servidor para todos los otros subsistemas de ambiente
soportados en WINDOWS, los que actúan como clientes y traducen sus llamadas API
hacia las API apropiadas de Win32.
Algunos de los objetivos que se trazaron para mantener la compatibilidad con las
aplicaciones hechas en versiones anteriores fueron:
Permitir que los programas hechos sobre DOS pudieran correr sin modificación.
Suministrar la capacidad para ejecutar la mayoría de las aplicaciones Windows de
16 bits sin modificación
Proteger al sistema y otras aplicaciones de 32 bits de la interferencia de las
aplicaciones de 16 bits y DOS.
Permitir a las plataformas RISC (Reduced Instruction set Computer,
microprocesador cuyo número de instrucciones es reducido para lograr una
frecuencia más alta de trabajo) ejecutar aplicaciones Windows de 16 bits y DOS.
Suministrar un mecanismo para compartir datos entre aplicaciones Windows de 32
y 16 bits.
Así que, el primer paso en proporcionar compatibilidad fue crear un ambiente de DOS. El
ambiente de DOS en WINDOWS se llama la máquina virtual de DOS (Machine DOS
Virtual o VDM). El VDM es una aplicación de modo usuario de 32 bits el cual solicita los
servicios del subsistema de Win32 y en ocasiones directamente a la capa de servicios del
sistema. Es basado en DOS 5.0.
WINDOWS permite ejecutar tantas aplicaciones de DOS como uno desee, donde cada
aplicación corre en su propio VDM. Puesto que los VDMs son nada más que procesos
normales bajo WINDOWS, ellos también son multitarea preventiva al igual que otros
procesos en el sistema. Por consiguiente, puede decirse que WINDOWS permite la
multitarea preventiva de programas de DOS.
Uno de los rasgos adicionales del VDM es que le da 620 KB de memoria "convencional"
libre al usuario. Lo milagroso sobre esto es que también da a las aplicaciones de DOS
soporte de ratón, red, y CD-ROM.
Microsoft prestó mucha atención a los diferentes estándares de sistemas abiertos cuando
Windows NT estaba en vía de desarrollo. Ellos reconocieron el valor de soportar sistemas
abiertos como un método para ganar aceptación de su nuevo sistema operativo avanzado
dentro del mercado.
Uno de los estándares más frecuentemente citados soportados por Windows es el POSIX
(Interfaz de Sistema operativo Portable Basado en Unix), el cual representa la interfaz del
Sistema Operativo portable y fue desarrollado por el IEEE (Instituto de Ingenieros en
Electricidad y Electrónica) como un método de proporcionar portabilidad a las aplicaciones
hechas sobre plataformas UNIX. No obstante, POSIX se ha integrado en muchos
sistemas no UNIX.
Existen muchos niveles de obediencia con POSIX. Estos niveles representan un conjunto
de evoluciones de propuestas, aunque no todas han sido aprobadas como estándares.
2. Micronúcleo:
La principal tarea de este componente es la planificación de ejecución de hilos
(segmento de código perteneciente a un proceso particular). Es el responsable de
todas las funciones que se realizan en el sistema.
3. El Administrador de Objetos:
Es usado para crear, modificar y eliminar objetos usados por todos los sistemas
que conforman el Ejecutor de Windows. Se aseguran de que los objetos no
consuman muchos recursos (por lo regular en la memoria).
4. El Administrador de Procesos:
Es el responsable de crear, quitar y modificar los estados de todos los procesos.
Así como también de proporcionar información de los estados de todos los
procesos.
7. El Ejecutor de Windows:
Provee los fundamentos del sistema operativo que serán suministradas a todas las
aplicaciones que corren sobre el sistema.
8. El Administrador de Entrada-Salida:
El Administrador de Entrada-Salida (I/O Manager) es responsable de gestionar la
comunicación entre los distintos drivers de dispositivo
5. Arquitectura de un Sistema Operativo UNIX Clásico
El Hardware,
El Núcleo o Kernel,
El Intérprete de comandos o Shell,
El Sistema de Archivos
Los Programas de Usuario.
5.1. El Hardware
5.2. El Núcleo
5.3. El Shell
El Shell, o intérprete de comandos es la parte del Unix a través de la cual se controlan los
recursos del sistema. Es un programa interpretador de comandos que lee los comandos
que se le introducen y dispone lo necesario para que éstos se ejecuten.
También el Shell se puede utilizar como lenguaje de programación para crear programas
llamados guiones o scripts. Unix SVR4 provee de cuatro programas shell: El shell Bourne
o shell del sistema (sh), el shell job o shell de trabajos (jsh), el shell C (csh), y el shell Korn
(ksh). Sistemas Unix más modernos proveen de versiones más avanzadas del shell, como
el shell Tenex C (tcsh), que agrega a csh características provenientes de TENEX/TOPS-
20 como completación de comandos, y el shell Bourne Again (bash) de GNU, que agrega
al shell estándar características adicionales provenientes de csh y ksh.
El Unix proporciona diferentes herramientas y utilidades que sirven para realizar una gran
variedad de trabajos. Algunas son órdenes simples cuyo propósito es realizar tareas
específicas, y otros son como pequeños lenguajes de programación. Estas herramientas
pueden funcionar por separado o unidas entre sí. Existen diversos programas de
aplicación que usan estos comandos para llevar a cabo diferentes tareas, ya sea tareas
generales o específicas de cada caso.
Todos los sistemas son monolíticos porque son pesados en cuanto al núcleo que
lo realiza.
Son sistemas operativos que admite múltiples usuarios, así como también
múltiples tareas, lo que significa que permite que en un único equipo o
multiprocesador se ejecuten simultáneamente varios programas a cargo de uno o
varios usuarios.
6.2. Diferencias
Linux: Todos los entornos los maneja a alto nivel exigiendo a cada uno de los
procesos el máximo. Ya que es robusto en el manejo de ficheros y de información.
Unix: Es un sistema de código puro el cual necesita para que exista una
comunicación la programación de cada una de sus interfaces para hacer la
petición con el kernel además de contar con las bibliotecas que permitan
establecer la comunicación entre el núcleo del sistema y el usuario final. El usuario
es el que hace la administración y control del hardware.