Está en la página 1de 8

Sistemas Operativos.

2009/10
TEMA 2.- ESTRUCTURA DEL SO

2 ESTRUCTURA DEL SO

2.1 Componentes del SO


Para crear un sistema tan grande como un SO lo mejor es dividirlo en partes más
pequeñas que funcionen como componentes del sistema.

2.1.1 Gestión de procesos

Un proceso es un programa en ejecución.


Para poder ejecutarse, un proceso necesita tiempo de CPU, una porción de memoria,
archivos, E/S y demás recursos.
El SO se encarga de:
• Crear y eliminar procesos (de usuario y de sistema)
• Suspender y reanudar procesos
• Planificación de procesos
• Sincronización entre procesos
• Comunicación entre procesos
• Manejar interbloqueos

2.1.2 Gestión de memoria principal

La memoria es un recurso por el que compiten los distintos procesos.


Son responsabilidades del SO:
• saber que zonas de memoria están libres u ocupadas
• decidir qué procesos hay que cargar en las zonas libres de memoria
• reservar y liberar zonas de memoria según solicitudes

2.1.3 Gestión de archivos

Un archivo es un conjunto de datos identificado por un nombre, que normalmente se


organizan en directorios para facilitar su uso. Los archivos se almacenan en dispositivos
de E/S. Un archivo, es un concepto de alto nivel que no existe en el hardware.
Si varios usuarios tienen acceso a los archivos se debe controlar quien y de que modo
puede acceder a los mismos.
Son funciones del SO:
• Crear y eliminar archivos
• Crear y eliminar directorios
• Proveer las primitivas para manipular archivos y directorios
• Establecer las correspondencias de los archivos con el almacenamiento
secundario
• Resguardar los archivos en medios de almacenamiento secundario

1
Sistemas Operativos. 2009/10
TEMA 2.- ESTRUCTURA DEL SO
2.1.4 Gestión de la E/S

La E/S es un conjunto de dispositivos variados y complejos de programar. Su principal


problema es que es lenta en comparación con la CPU
Los objetivos del SO son:
• proporcionar una interfaz uniforme para el acceso a los dispositivos
(independencia del dispositivo)
• proporcionar drivers (controladores en software) para los dispositivos de
hardware específicos
• utilizar buffers, cachés y spool
• planificar de forma óptima las peticiones de acceso a disco

2.1.5 Gestión de almacenamiento secundario

El propósito principal de un ordenador es ejecutar programas. Los programas junto con


los datos a los que acceden deben estar en la memoria principal (almacenamiento
primario) durante la ejecución.
Como la memoria principal es limitada y volátil el sistema debe contar con un
almacenamiento secundario para respaldar a la memoria principal.
El SO se encarga de:
• La administración del espacio libre
• La asignación del almacenamiento
• La planificación del disco

2.1.6 Trabajo con redes

En un sistema distribuido, existen varios ordenadores con sus propios recursos locales
(memoria, archivos, etc.), conectados mediante una red.
El principal objetivo del SO es proporcionar primitivas para conectarse con equipos
remotos y acceder de forma controlada a sus recursos. Estas pueden ser:
• primitivas de comunicación (enviar y recibir datos)
• sistema de ficheros en red (ej. NFS)
• llamada remota a procedimiento (RPC)
• etc.

2.1.7 Sistema de protección

La protección abarca los mecanismos destinados a controlar el acceso de los usuarios a


los recursos, de acuerdo con los privilegios que se definan.
Los objetivos del SO son:
• definir el esquema general de protección: clases de usuarios, clases de
permisos/privilegios, etc.
• definir mecanismos de acceso a los recursos: contraseñas, capacidades, etc.
• controlar el acceso a los recursos, denegando el acceso cuando no esté permitido

2
Sistemas Operativos. 2009/10
TEMA 2.- ESTRUCTURA DEL SO
2.1.8 Intérprete de órdenes o de comandos (shell)

Es la interfaz entre el usuario y el SO. Su principal función es obtener y ejecutar la


siguiente orden especificada por el usuario.
Es usual la introducción de órdenes tecleando directamente desde el terminal de trabajo
para tareas como:
• copiar archivos
• iniciar la ejecución de programas
• imprimir
• introducir datos a los programas
• etc.

Ejemplos:
• JCL en sistemas por lotes,
• COMMAND.COM en MS-DOS,
• shell en UNIX

2.2 Servicios del SO


El SO ofrece a los programadores una serie de servicios básicos:
• Ejecución de programas
• Operaciones de E/S
• Manipulación de archivos y directorios
• Comunicaciones (entre procesos y con equipos remotos)
• Detección de errores

Además el SO ofrece funciones para optimizar el uso del sistema como:


• Compartición de recursos
• Contabilidad (estadísticas)
• Protección

2.3 Llamadas al sistema


El SO ofrece servicios a los programas. Los programas acceden a estos servicios
mediante llamadas al sistema.
Las llamadas al sistema son la interfaz entre el programa en ejecución y el SO puesto
que son la única forma en la que un programa puede solicitar operaciones al SO.
Generalmente están disponibles como instrucciones en lenguaje ensamblador aunque
algunos sistemas permiten llamadas al sistema directamente desde un lenguaje de alto
nivel (Pascal, C, Perl, Fortram)
Las llamadas al sistema se pueden agrupar en cinco categorías principales:
• Control de procesos
• Manipulación de archivos
• Manipulación de dispositivos
• Mantenimiento de información
• Comunicaciones

3
Sistemas Operativos. 2009/10
TEMA 2.- ESTRUCTURA DEL SO

2.4 Programas del sistema


Los programas del sistema crean un entorno más cómodo para el desarrollo y ejecución
de los programas. Algunos son interfaces entre el usuario y las llamadas al sistema.
Se pueden dividir en las siguientes categorías:
• Manipulación de archivos.
• Información de estado.
• Modificación de archivos.
• Apoyo a lenguajes de programación.
• Carga y ejecución de programas.
• Comunicaciones.

El programa del sistema más representativo e importante es el intérprete de órdenes o


shell.

2.5 Estructura del sistema


En su interior, un SO posee una cierta estructura, una organización.

2.5.1 Sistemas monolíticos

Es la arquitectura más simple para un SO. Es un núcleo compacto, que contiene todas
las rutinas del SO.
Sus características son:
• 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 éste último proporciona un cálculo útil para el
primero.
• Para construir el programa objeto real del sistema operativo siguiendo este punto
de vista, se compilan de forma individual los procedimientos, o los ficheros que
contienen los procedimientos, y después se enlazan en un sólo fichero objeto.
• En términos de ocultación de la información, ésta es prácticamente nula: cada
procedimiento es visible a los demás.
• Los servicios (mediante llamadas al sistema) que proporciona el sistema
operativo se solicitan colocando los parámetros en lugares bien definidos, como
los registros o la pila, para después ejecutar una llamada al kernel o supervisor.
Esta instrucción cambia la máquina del modo usuario al modo kernel, y
transfiere el control al sistema operativo.
• Esta organización sugiere una estructura básica del sistema operativo:
o Un programa principal que llama al procedimiento del servicio
solicitado.
o Un conjunto de procedimientos de servicio que lleva a cabo las llamadas
al sistema.

4
Sistemas Operativos. 2009/10
TEMA 2.- ESTRUCTURA DEL SO
o Un conjunto de procedimientos de utilidades que ayudan a los
procedimientos de servicio.
• En este modelo, para cada llamada al sistema existe un procedimiento de
servicio que se encarga de ella.

2.5.2 Sistemas por capas

En un sistema por capas el S.O. se construye en niveles jerárquicos, cada uno de los
cuales aprovecha los servicios del nivel inferior.
Las características de este sistema son:
• Diseño más modular y escalable que el monolítico.
• Cada capa del SO consistiría en la implementación de un objeto abstracto que es
el encapsulamiento de datos y de operaciones que pueden manipular esos datos.
• La principal ventaja de este enfoque es la modularidad. Las capas se escogen de
forma que cada una sólo utilice funciones y servicios de las capas de niveles
inferiores. Esto simplifica la depuración y verificación del sistema.
• Una capa no necesita saber como se han implementado las operaciones del nivel
inferior; sólo necesita saber que hacen. Así cada capa oculta la existencia de
ciertas estructuras de datos, operaciones y hardware de las capas de niveles más
altos.
• Primer SO con diseño por capas: Sistema THE con seis niveles

o L5: programas de usuario


o L4: buffers para dispositivos de E/S
o L3: driver de la consola del operador
o L2: gestión de memoria
o L1: planificación de procesos
o L0: hardware

• El principal problema del enfoque por capas es que puesto que una capa sólo
puede usar las capas que están a un nivel más bajo la planificación tiene que ser
muy cuidadosa.
• Otra desventajas es que tienden a ser menos eficientes porque las llamadas entre
capas implican el paso de parámetros, es decir cada capa implica un gasto extra.
• La tendencia actual es hacia el equilibrio, menos capas con más funcionalidad ya
que así se conservan las ventajas de la modularidad y se evitan los problemas de
definición e interacción entra las capas.

2.5.3 Sistema Microkernel

Una tendencia de los sistema operativos modernos es la de trasladar el código a capas


superiores, y eliminar la mayor parte posible del sistema operativo para mantener un
núcleo mínimo.
Según este modelo, el SO consiste en un conjunto de módulos autónomos, cada uno de
los cuales tiene a disposición del resto una serie de servicios (competencias). Podemos

5
Sistemas Operativos. 2009/10
TEMA 2.- ESTRUCTURA DEL SO
ver un módulo como un servidor de determinados servicios que atiende las peticiones de
otros módulos y que su vez puede ser cliente de otros módulos.
En este modelo lo único que hace el núcleo es controlar la comunicación entre los
clientes y los servidores. Como todos los servidores se ejecutan como procesos en modo
usuario, y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia, si
hay un error en el servidor de ficheros éste puede fallar, pero esto no afectará en general
a toda la máquina.
Una ventaja de este modelo es su capacidad de adaptación para su uso en sistemas
distribuidos gracias a la comunicación mediante mensajes.
La idea de un núcleo que sólo controla el transporte de mensajes de clientes a
servidores, y viceversa, no es totalmente real. Algunas funciones del sistema operativo
son difíciles, si no es que imposible de realizar, a partir de programas de usuario.
Existen dos formas de afrontar este problema:
• Una es hacer que algunos procesos de servidores críticos (por ejemplo, los
gestores de los dispositivos de E/S) se ejecuten en realidad en modo núcleo, con
acceso total al hardware, pero de forma que se comuniquen con los demás
procesos mediante el mecanismo normal de mensajes.
• La otra forma es construir una cantidad mínima de mecanismos dentro del
núcleo, pero manteniendo las decisiones de política relativos a los usuarios
dentro del espacio de los usuarios.

2.5.4 Sistema Modular

Se usan técnicas de programación orientada a objetos para crear un kernel modular. En


este caso el kernel dispone de un conjunto de componentes fundamentales y enlaza
dinámicamente los servicios adicionales durante el arranque o en tiempo de ejecución.
Por ejemplo la estructura del sistema operativo Solaris está organizada alrededor de un
kernel central con siete tipos de módulos de kernel cargables:
1. Clases de planificación
2. Sistemas de archivos
3. Llamadas al sistema cargables
4. Formatos ejecutables
5. Módulos Streams
6. Módulos misceláneos
7. Controladores de bus y dispositivos

Este diseño permite al kernel proporcionar servicios básicos e implementar ciertas


características dinámicamente. El resultado es similar a un sistema por capas ya que
cada módulo tiene interfaces bien definidas y protegidas, pero es más flexible que este
en el sentido de que cualquier módulo puede llamar a otro. Además se parece a un
microkernel ya que el módulo principal sólo dispone de las funciones esenciales y de
los conocimientos sobre cómo cargar y comunicarse con otros módulos. Sin embargo es
más eficiente que un microkernel ya que los módulos no necesitan un mecanismo de
paso de mensajes para poder comunicarse.

6
Sistemas Operativos. 2009/10
TEMA 2.- ESTRUCTURA DEL SO

2.6 Máquinas virtuales


Una máquina virtual, proporciona mediante software a los programas la emulación de
un hardware que no existe. Abstrae el hardware del ordenador formando varios entornos
de ejecución diferentes de forma que parezca que cada uno está operando en su propio
ordenador de forma privada. Se crea la ilusión de que cada proceso tiene su propio
procesador con su propia memoria. Se pueden ejecutar varias máquinas virtuales al
mismo tiempo (por ej. mediante tiempo compartido).
El software emulador convierte las peticiones hechas a la máquina virtual en
operaciones sobre la máquina real. Los recursos reales se reparten entre las distintas
máquinas virtuales.
Ejemplos de máquinas virtuales:
• IBM VM: ofrecía a cada usuario su propia máquina virtual monotarea; las
máquinas virtuales se planificaban con tiempo compartido.
• Java: los programas compilados en Java corren sobre una máquina virtual
(JVM).
• VMWare: en un PC, es capaz de ejecutar al mismo tiempo varias sesiones
Windows, Linux, OS/2, etc.
• Nachos: S.O. que se ejecuta en una máquina virtual MIPS, cuyo emulador corre
sobre UNIX.

Ventajas e inconvenientes de las máquinas virtuales:


• Protección: cada máquina virtual está aislada de las otras y no puede interferir
• Investigación y desarrollo: se puede desarrollar y ejecutar para un hardware que
no tenemos
• Independencia del hardware (ej. Java)
• Pervivencia de sistemas antiguos (ej. Emuladores MS-DOS)
• La implementación de la máquina virtual puede ser compleja y lenta.

2.7 Arranque del sistema


El arranque del ordenador se compone de dos fases:

2.7.1 Arranque hardware

Una máquina sin SO es prácticamente incapaz de realizar actividades. Como la


memoria principal es volátil se dispone de un pequeño programa grabado en una
memoria ROM que forma parte del propio mapa de memoria del ordenador (iniciador
ROM).
Al encender el ordenador se genera una señal eléctrica que carga en el contador de
programa la dirección de comienzo en memoria del programa iniciador ROM. Este
realiza tres funciones:
• Comprobación del sistema detectando las características del mismo (tipo de
procesador, cantidad de memoria, etc.) y el funcionamiento en conjunto.
• Almacenamiento en memoria de un programa encargado de cargar en memoria
el SO (boot).

7
Sistemas Operativos. 2009/10
TEMA 2.- ESTRUCTURA DEL SO
• Transferencia del control al cargador del SO (una vez que este se ha cargado
completamente en memoria).

2.7.2 Arranque del SO

El SO normalmente se encuentra almacenado en una unidad de disco. El programa


cargador del SO (boot) tiene como primera misión la incorporación en memoria de
algunas partes del SO. Después se pasa a la fase de inicialización donde se llevan a cabo
las siguientes tareas:
• Comprobación del sistema: Pruebas hardware que complementan las del
iniciador ROM para verificar el buen funcionamiento del sistema. Además se
comprueba el sistema de archivos.
• Generación de estructuras de información necesarias para el SO: tablas de
procesos, memoria, de periféricos, etc.
• Almacenamiento en memoria principal del SO residente.
• Creación de un proceso de entrada en cada terminal del sistema: presentación de
un mensaje de bienvenida y permanecer a la espera de que el usuario inicie una
sesión de trabajo.

También podría gustarte