Visión general Los sistemas operativos se pueden analizar desde

Anuncio
Visión general
Los sistemas operativos se pueden analizar desde diferentes perspectivas,
estas pueden ser (entre otras):

Enfocarse en los servicios que brinda.

Analizarlo tomando en cuenta la interfaz que brinda a usuarios y
programadores.

Tomar en cuenta los componentes que lo conforman y la manera en
que ellos interaccionan.
Servicios
Los servicios que brinda un sistema operativo dado pueden diferir de los
ofertados por otros pero, en todos los casos, esos servicios deben proveer un
medio cómodo para que los programadores y usuarios puedan usar la
computadora de una forma eficiente y fácil.
Servicios que ayudan a los usuarios

Interfaz de ejecución
Casi todos los SO poseen una interfaz que puede tener diferentes formas,
dos muy populares son:
o La interfaz de línea de comandos.
o La interfaz gráfica tan popular hoy en día.
Otra, no tan popular, es la interfaz que se brinda a través de lotes (batch)
de tareas que se cargan en un archivo que contiene el conjunto de
comandos u órdenes que deben ejecutarse.

Ejecución de programas
El sistema debe ser capaz de cargar los programas en memoria,
ejecutarlos (transformándolos en procesos) y terminarlos normal o
anormalmente.

Operaciones de entrada-salida
Cuando un proceso realiza sus tareas necesita, por lo general, leer y
escribir datos desde y hacia archivos o equipos específicos con
1
características propias que exigen diferentes manipulaciones. Estas
operaciones, usualmente, se realizan por el SO y no directamente por los
procesos de usuarios.

Manipulación de archivos
Los procesos necesitan manipular archivos y directorios, creándolos,
destruyéndolos, copiando información, etc.

Comunicación
Por muchas razones los procesos necesitan comunicarse entre sí e
intercambiar información, la comunicación puede establecerse entre
procesos que se ejecutan en la misma o en diferentes computadoras
unidas por una red. La comunicación puede hacerse a través de
mensajes o a través de una memoria compartida.

Detección de errores
Existen diferentes vías que producen errores y el sistema operativo es
responsable de tomar la acción apropiada cada vez que ocurran.
Servicios que proporcionan eficiencia al SO

Asignación de recursos
El hecho de que existan varios usuarios y múltiple procesos ejecutándose
a la vez hace clara la necesidad de la existencia de mecanismos que
controlen la asignación de los recursos.

Contabilidad
Estos servicios permiten conocer los tipos de recursos que usan los
usuarios, durante qué tiempo, en qué cantidad, etc.
Forma de brindar los servicios
Todos los SO ofrecen servicios a través de:

Programas de sistemas que pueden venir formando parte del propio
SO o que se distribuyen como programas independientes que son
cargados por órdenes expresas de los usuarios para hacer diversas
tareas.
2

Llamadas al sistema. Son invocaciones a funciones propias del
sistema operativo que normalmente residen en su núcleo.
A manera de ejemplo se muestra la cadena de llamadas al sistema
(se resaltan en negrita) que provoca la simple orden de copiar un
archivo, supóngase que se hace de forma interactiva:
1) Para adquirir el nombre del archivo fuente.
a. Escribir la petición en pantalla.
b. Leer el nombre desde el tecleado.
2) Para adquirir el nombre del archivo destino.
a. Escribir la petición en pantalla.
b. Leer el nombre tecleado.
3) Abrir el archivo de entrada, si no existe abortar la
operación.
4) Crear el archivo de salida.
5) Hasta que la lectura falle
a. Leer la entrada
b. Escribir lo leído hacia la salida
6) Cerrar ambos archivos.
7) Terminar normalmente.
Los programadores, raras veces, ven tanto nivel de detalles o actúan con
funciones que están a un nivel superior, pero los especialistas en Ciencia
de la Computación sí deben saber todos esos detalles, ya que ellos son
los que están preparados para hacer modificaciones al SO e incluso
hacer nuevos sistemas.
Algunas de las funciones que están a un nivel superior (no de un usuario
cualquiera) se incluyen dentro del conjunto de funciones conocidas como
API (application programming interface).
Existen tres familias de API muy comunes:
 Win32 para sistemas operativos de la familia Windows.
3
 POSIX para los sistemas basados en POSIX (casi todas las
versiones de Linux, UNIX y MAC OS X).
 Las API de Java para la JVM.
En todos estos casos, al usar una función incluida en la API se está
haciendo una llamada al sistema que en realidad hace el trabajo, observe
la figura 1. Puede apreciarse el cambio que hace el SO de modo usuario
a modo kernel.
Aplicación de usuario
open( )
Modo
usuario

Interface de llamada al sistema
Modo
núcleo
i
.
.
.
open( )
Implementación
de la llamada al
sistema open( )
.
.
.
.
.
.
return
Figura 1. El SO manipula una llamada al sistema.
Las llamadas al sistema también necesitan que se le pasen parámetros, la
figura 2 muestra una visión general de cómo hacerlo. En ella se aprecia la
relación que existe entre un programa de usuario, que usa la función de C
estándar printf, y la llamada al sistema write, debe observarse de nuevo el
cambio de modo del SO en el que se puede apreciar el concepto conocido
como operación dual.
4
#include <stdio.h>
int main ( )
{
.
.
.
printf ("Hola");
.
.
.
return o;
}
Modo
usuario
Biblioteca estándar de C
Modo
núcleo
write( )
Llamada al sistema write( )
Figura 2. Relación entre printf y write
Estructura del SO
Sistema de matrícula
Registros de software
Control de graduados
Compiladores
Enlazadores
Intérprete de comandos
Sistema Operativo
Lenguaje de máquina
Microprogramación
Hardware
Figura 3. Estructura de un sistema de cómputo
5
La figura 3 muestra la estructura de un sistema de cómputo, donde se puede
apreciar el sitio que ocupa el SO.
La parte inferior de las capas que se muestran es la que contiene el
hardware (componentes eléctricos y mecánicos) que no es de interés de este
sistema de enseñanza.
La microprogramación está, generalmente, integrada a la memoria de solo
lectura conocida como ROM. En esa capa se encuentra un software muy
primitivo que controla, en forma directa, los dispositivos físicos que se
encuentran en la capa de software (es un firmware). Algunas instrucciones
de lenguaje de máquina (ADD, MOVE, JMP) se interpretan por el
microprograma que la transforma en un conjunto de instrucciones básicas
para después comunicarse con los dispositivos físicos y satisfacer la petición
original.
El conjunto de instrucciones que interpreta el microprograma define el
lenguaje de máquina y, aunque no forma parte de la máquina en sí, muchos
fabricantes lo consideran así y de ahí la confusión.
En resumen todo lo mencionado hasta el momento (sería mejor quitar de ahí
al lenguaje de máquina) conforma la máquina real tal y como cualquiera la
puede comprar.
Encima de la máquina real se sitúa el SO, transformando a la máquina real
en una máquina virtual que tiene más potencialidades.
Después del SO están los programas de sistemas (compiladores,
enlazadores, el Shell, etc.) y por último se pueden apreciar las aplicaciones.
6
Programas de aplicación
Programas del sistema residentes en memoria
Manipuladores de equipos del SO
Manipuladores de equipos de la ROM BIOS
Figura 4. Estructura del SO MS-DOS
La figura 4 muestra la estructura simple del SO MS-DOS. Este SO, es un
ejemplo típico de un sistema que se diseñó sin tomar en cuenta la dimensión,
más bien la popularidad que iba a alcanzar, por ese motivo no está bien
estructurado en módulos con funciones específicas, las interfaces y los
niveles de funcionalidad no están bien separadas y por eso es proclive a la
intervención de programas maliciosos, aunque en justicia estaba limitado por
las propias fronteras que imponía el procesador (8086-88) sobre el cual se
implementó.
La versión original de UNIX también tenía una estructura limitada que venía
dada por las propias limitantes del hardware de la época. Estaba formado por
dos partes separadas, el kernel y los programas de sistemas (figura 5).
Esa estructura monolítica es muy difícil de mantener debido a que las partes
son demasiado grandes y abarcan muchas funcionalidades que deberían
estar separadas.
7
Usuarios
Intérprete de comandos, comandos.
Compiladores e intérpretes.
Bibliotecas del sistema.
Kernel
Llamadas al sistema-sirve de interfaz para el núcleo (kernel)
Manipuladores de
señales y de
terminales.
Sistema de E/S de
caracteres
Sistema de archivo
Sistema de intercambio
(swapping ) y de E/S de
bloques. Manipuladores de
disco y cintas
Manipulador de la
CPU
Sistema de memoria
virtual paginado y
segmentado
Interfaz kernel-hardware
Controladores de
terminales
Equipos controladores de
disco y cinta
Controladores de
memoria física
Figura 5. Estructura del SO UNIX (original)
Una solución al problema anterior es migrar algunas de las funcionalidades
del kernel de forma que tenga un kernel pequeño, conocido como
microkernel, y adicionalmente formar capas con diferentes funcionalidades.
Una idea más actual es que el sistema operativo se haga en forma modular y
use las facilidades de las técnicas de programación orientada a objetos, la
figura 6 presenta una idea de esta concepción. En este caso el kernel posee
un conjunto de componentes que se enlazan dinámicamente a otros servicios
durante el proceso de carga o de ejecución, lo cual es muy común en las
versiones actuales de UNIX, por ejemplo Solaris, Linux y Mac OS.
8
Planificación
Manipuladores
de equipos y
buses
Sistema
de
archivos
Núcleo
Misceláneas
Llamadas
al
sistema
Torrentes
Figura 6. Estructura del SO Solaris
Máquinas virtuales
La idea de las capas se toma en cuenta para definir el concepto de máquina
virtual que no debe confundirse con la máquina virtual que crea el SO al
agregar funcionalidades nuevas al hardware.
La idea, en este caso, es
abstraer el hardware de una computadora (todos sus componentes) en
diferentes ambientes de ejecución para crear la ilusión de que cada
ambiente se ejecuta sobre una computadora particular. La máquina virtual no
ofrece nuevas funcionalidades sino que presenta una interface idéntica a la
máquina simple que está debajo de ella.
9
Descargar