UNIVERSIDAD DE CÓRDOBA
Facultad de Ingenierías
Ingeniería de Sistemas
Estructura de los Sistemas Operativos
Presentado por:
Paula Andrea David Petro
Tutor: Antonio Fernando Movilla
Curso: Sistemas Operativos
VIII Semestre
Montería - Córdoba
06/04/2021
Estructura de los sistemas operativos
Un sistema operativo es el principal programa que se ejecuta en toda
computadora de propósito general. Los hay de todo tipo, desde muy simples hasta
terriblemente complejos, y entre más casos de uso hay para el cómputo en la vida
diaria, más variedad habrá en ellos. También, se puede definir como, un conjunto
de rutinas o extensiones de software que permiten la administración y gestión del
hardware. Consiste básicamente en rutinas de control que hacen funcionar una
computadora y proporcionan un entorno para la ejecución de los programas.
Los sistemas operativos tienen gran variación en su composición y están
organizados en muchas líneas diferentes. El diseño de un sistema operativo es
una tarea de gran envergadura. Es importante definir bien los objetivos del sistema
antes de comenzar su diseño. El tipo de sistema deseado es la base para elegir
entre los diversos algoritmos y estrategias.
Podemos crear un sistemas tan grande y complejo como es un sistema operativo
sólo si lo descomponemos en piezas más pequeñas. Cada una de estas piezas
deberá ser una porción bien delineada del sistema, con entradas, salidas y
funciones definidas con cuidado. Obviamente, no todos los sistemas tienen la
misma estructura; sin embargo, muchos de los modernos comparten la meta de
soportar los componentes del sistema que se describen a continuación.
1. Administración de procesos
2. Administración de memoria
3. Subsistema de Entrada/Salida
4. Administración de Almacenamiento secundario
5. Subsistema de archivos
6. Sistema de protección
De igual manera, los sistemas operativos comprenden diferentes estructuras de
acuerdo con la necesidad, metas de los usuarios (fácil uso, confiable, rápido, etc.)
y las del sistema (fácil de diseñar, implementar y mantener, eficiente, etc.).
Algunos de estos son:
Sistema Monolítico
Estos sistemas no tienen una estructura definida, sino que son escritos como una
colección de procedimientos donde cualquier procedimiento puede invocar a otro.
Ejemplos de estos sistemas pueden ser MS-DOS o Linux (aunque incluye algo
decapas). Es importante tener en cuenta que ningún sistema es puramente de un
tipo.
Ejemplos de sistemas monolíticos:
Los ejemplos típicos de este sistema son Unix, MS-DOS y Mac OS hasta Mac OS
8.6. Otros ejemplos son:
Linux
Syllable
Núcleos tipo DOS
DR-DOS
Familia Microsoft Windows 9x (95, 98, 98SE, Me)
Sistema en capas
El diseño se organiza en una jerarquía de capas, donde los servicios que brinda
una capa son consumidos solamente por la capa superior. La capa 0 es del
Hardware y la N es la de los procesos de Usuario. Estos sistemas tienen como
ventaja que son modulares y la verificación se puede hacer a cada capa por
separado (son más mantenibles). Sin embargo, el diseño es muy costoso y es
menos eficiente que el sistema monolítico ya que pierde tiempo pasando por cada
capa.
El sistema consta de 6 capas:
Capa 5: Se encuentra la interfaz de usuario.
Capa 4: Aloja los programas de usuario.
Capa 3: Se controlan los dispositivos E/S (entrada y salida).
Capa 2: Se administra la comunicación inter-proceso y la consola del
operador.
Capa 1: Administración de memoria y discos.
Capa 0: Correspondiente al Hardware, realizando asignación del
procesador, también alterna entre procesos cuando ocurren interrupciones
o se han expirado y proporciona multiprogramación básica de la CPU.
Ejemplos de sistemas por capas:
THE (Technische Hogeschool Eindhoven)
Venus
MULTICS (Multiplexed Information and Computing Service)
Sistema con micronúcleo
La idea consiste en tener un núcleo que brinde los servicios mínimos de manejo
de procesos, memoria y que provea la comunicación entre procesos. Todos los
restantes servicios se construyen como procesos separados del micronúcleo, que
ejecutan en modo usuario. Estos sistemas tienen como ventaja un diseño simple y
funcional, que aumenta la portabilidad y la escalabilidad. Para agregar un nuevo
servicio no es necesario modificar el núcleo, y es más seguro ya que los servicios
corren en modo usuario.
Algunas ventajas que podemos destacar de los Micronúcleos son los
siguientes:
Uniformidad de interfaces: disponen de una interfaz única para las solicitudes de
los procesos, el paso de mensajes.
Portabilidad: reduciendo el núcleo e implementando casi todo en servidores, para
implementarlo en arquitecturas diferentes, sólo habría que modificar el núcleo
haciendo más simple su portabilidad.
Fiabilidad: es más fácil corregir fallas en un sistema pequeño ya que se pueden
realizar pruebas más rigurosas que en un sistema mucho más grande.
Ejemplos de sistemas con micronúcleo
AIX QNX RadiOS
BeOS Minix Symbian
Mach Hurd VSTa
MorphOS L4
Sistemas por módulos
La mayoría de los sistemas operativos modernos implementan este enfoque. Lo
que caracteriza este tipo de estructura es que el kernel se compone por módulos,
y cada uno de estos módulos se encuentra separado de forma independiente, tal
que, si alguno falla no afecta a los otros, ni al núcleo, por ejemplo, si el módulo de
software que se encarga de controlar el proceso de Telnet en una unidad se
bloquea o es atacado, sólo este proceso se verá afectado. El resto de las
operaciones siguen sus funciones habituales. Los módulos se pueden cargar
dinámicamente en el núcleo cuando se necesiten, ya sea, en tiempo de ejecución
o durante el arranque del sistema. El kernel dispone de los componentes
fundamentales y se conectan directamente con servicios adicionales. Además
otros componentes pueden cargarse dinámicamente al núcleo. Este enfoque
modular utiliza la programación orientada a objetos.
En general, esta estructura se parece bastante a la de capas, pero es mucho más
flexible debido a que cualquier módulo de esta estructura puede llamar a otro. Es
similar a la estructura de microkernel, pues el kernel también tiene las funciones
esenciales, pero este es más eficiente ya que, no necesitan un mecanismo de
paso de mensajes para comunicarse, sólo interfaces conocidas.
Ejemplos de comandos Linux para gestionar módulos:
Smod: Muestra todos los módulos que están cargados en el kernel Linux.
Modprobe: Se utiliza para agregar, ver y eliminar módulos.
Rmmod: Utilizado para descargar módulos del kernel, con la restricción de que no
estén siendo utilizados y que no sean llamados por otros módulos.
Ejemplos sistema por módulos:
Unix modernos
Solaris
Linux
Mac OSX
Sistema Cliente-Servidor
En los sistemas operativos modernos, los sistemas cliente-servidor nacen con la
finalidad de minimizar el núcleo (kernel), trasladando el código de todos sus
servicios a las capas superiores; y el núcleo sólo deberá controlar la
comunicación, que se realiza mediante mensajes, entre clientes y servidores o
servidores y hardware.
El objetivo es desarrollar la mayoría de las funciones del sistema operativos como
procesos de usuario. Un proceso de usuario, llamado en este caso proceso
cliente, envía una solicitud a un proceso servidor, que realiza el trabajo y devuelve
la respuesta.
El Cliente y el Servidor pueden actuar como una sola entidad y también pueden
actuar como entidades separadas, realizando actividades o tareas independientes.
Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o en
la misma plataforma. Cada plataforma puede ser escalable independientemente.
Los cambios realizados en las plataformas de los Clientes o de los Servidores, ya
sean por actualización o por reemplazo tecnológico, se realizan de una manera
transparente para el usuario final. La interrelación entre el hardware y el software
están basados en una infraestructura poderosa, de tal forma que el acceso a los
recursos de la red no muestra la complejidad de los diferentes tipos de formatos
de datos y de los protocolos. Su representación típica es un centro de trabajo
(PC), en donde el usuario dispone de sus propias aplicaciones de oficina y sus
propias bases de datos, sin dependencia directa del sistema central de
información de la organización.
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.