Subido por Ivaan Francisco Jimenez

El sistema operativo como gestor de recursos

Anuncio
El sistema operativo como gestor de recursos
Recurso es todo medio o bien que sirve para conseguir lo que se pretende. En un computador la
memoria y el procesador son recursos físicos y un temporizador o un puerto de comunicaciones son
ejemplos de recursos lógicos. Los recursos son limitados y son reutilizados una vez que el proceso
que los disfruta ya no los necesite.
En un computador actual suelen coexistir varios procesos, del mismo o de varios usuarios,
ejecutando simultáneamente. Estos procesos compiten por los recursos, siendo el sistema
operativo el encargado de arbitrar su asignación y uso. El sistema operativo debe asegurar que no
se produzcan violaciones de seguridad, evitando que los procesos accedan a recursos a los que no
tienen derecho. Además, ha de suministrar información sobre el uso que se hace de los recursos.
Asignación de recursos
Para asignar los recursos a los procesos, el sistema operativo ha de mantener unas estructuras que
le permitan saber qué recursos están libres y cuáles están asignados a cada proceso. La asignación
de recursos se realiza según la disponibilidad de los mismos y la prioridad de los procesos,
debiéndose resolver los conflictos causados por las peticiones coincidentes.
Especial mención reviste la recuperación de los recursos cuando los procesos ya no los necesitan.
Una mala recuperación de recursos puede hacer que el sistema operativo considere, por ejemplo,
que ya no le queda memoria disponible cuando, en realidad, sí la tiene. La recuperación se puede
hacer o bien porque el proceso que tiene asignado el recurso le comunica al sistema operativo que
ya no lo necesita, o bien porque el proceso haya terminado.
Las políticas de gestión de recursos determinan los criterios seguidos para asignar los recursos. Estas
políticas dependen del objetivo a alcanzar por el sistema. No tienen las mismas necesidades los
sistemas personales, los sistemas departamentales, los sistemas de tiempo real, etc.
Muchos sistemas operativos permiten establecer cuotas o límites en los recursos asignados a cada
proceso o usuario. Por ejemplo, se puede limitar la cantidad de disco, memoria o tiempo de
procesador asignados.
Protección
El sistema operativo ha de garantizar la protección entre los usuarios del sistema: ha de asegurar la
confidencialidad de la información y que unos trabajos no interfieran con otros. Para conseguir este
objetivo ha de impedir que unos procesos puedan acceder a los recursos asignados a otros procesos.
Contabilidad
La contabilidad permite medir la cantidad de recursos que, a lo largo de su ejecución, utiliza cada
proceso. De esta forma se puede conocer la carga de utilización o trabajo que tiene cada recurso y
se pueden imputar a cada usuario los recursos que ha utilizado. Cuando la contabilidad se emplea
meramente para conocer la carga de los componentes del sistema se suele denominar
monitorización. La monitorización se utiliza, especialmente, para determinar los puntos
sobrecargados del computador y, así, poder corregirlos.
El sistema operativo como máquina extendida
El sistema operativo ofrece a los programas un conjunto de servicios, o llamadas al sistema,
proporcionándoles una visión de máquina extendida. El modelo de programación que ofrece el
hardware se complementa con estos servicios software, que permiten ejecutar de forma cómoda y
protegida ciertas operaciones complejas.
La alternativa consistiría en complicar los programas de usuario y en no tener protección frente a
otros usuarios.
Las funciones de máquina extendida se pueden agrupar en las cuatro clases siguientes: ejecución
de programas, operaciones de E/S, operaciones sobre ficheros y detección y tratamiento de errores.
Gran parte de este texto se dedicará a explicar los servicios ofrecidos por los sistemas operativos,
por lo que aquí nos limitaremos a hacer unos simples comentarios sobre cada una de estas cuatro
clases.
Ejecución de programas
El sistema operativo incluye servicios para lanzar la ejecución de un programa, creando un proceso,
así como para parar o abortar la ejecución de un proceso. También existen servicios para conocer y
modificar las condiciones de ejecución de los procesos.
Bajo la petición de un usuario, el sistema operativo leerá un ejecutable, para lo cual deberá conocer
su estructura, lo cargará en memoria y lo pondrá en ejecución. Observe que varios procesos pueden
estar ejecutando el mismo programa, por ejemplo, varios usuarios pueden haber pedido al sistema
operativo la ejecución del mismo programa editor.
Órdenes de E/S
Los servicios de E/S ofrecen una gran comodidad y protección al proveer a los programas de
operaciones de lectura, escritura y modificación del estado de los periféricos, puesto que la
programación de las operaciones de E/S es muy compleja y dependiente del hardware específico de
cada periférico. Los servicios del sistema operativo ofrecen un alto nivel de abstracción, de forma
que el programador de aplicaciones no tenga que preocuparse de esos detalles.
Operaciones sobre ficheros
Los ficheros ofrecen un nivel de abstracción mayor que el de las órdenes de E/S, permitiendo
operaciones tales como creación, borrado, renombrado, apertura, escritura y lectura de ficheros.
Observe que muchos de los servicios son parecidos a las operaciones de E/S y terminan
concretándose en este tipo de operación.
Servicios de memoria
El sistema operativo incluye servicios para que el proceso pueda solicitar y devolver zonas de
memoria para albergar datos. También suele incluir servicios para que dos o más procesos puedan
compartir una zona de memoria.
Comunicación y sincronización entre procesos
Los servicios de comunicación entre procesos son muy importantes, puesto que constituyen la base
sobre la que se ha construido Internet. Servicios como el pipe o compartir memoria permiten la
comunicación entre procesos de un mismo computador, pero servicios como el socket permiten la
comunicación entre procesos que ejecutan en máquinas remotas pero conectadas en red.
Los servicios de sincronización como el semáforo o los mutex, permiten sincronizar la ejecución de
los procesos, es decir, conseguir que ejecuten de forma ordenada (como en un debate en el que
nadie le quite la palabra a otro). mismo computador, pero servicios como el socket permiten la
comunicación entre procesos que ejecutan en máquinas remotas pero conectadas en red.
Los servicios de sincronización como el semáforo o los mutex, permiten sincronizar la ejecución de
los procesos, es decir, conseguir que ejecuten de forma ordenada (como en un debate en el que
nadie le quite la palabra a otro).
Detección y tratamiento de errores
Además de analizar detalladamente todas las órdenes que recibe, para comprobar que se pueden
realizar, el sistema operativo se encarga de tratar todas las condiciones de error que detecte el
hardware. Como más relevantes, destacaremos las siguientes: errores en las operaciones de E/S,
errores de paridad en los accesos a memoria o en los buses y errores de ejecución en los programas,
tales como los desbordamientos, las violaciones de memoria, los códigos de instrucción prohibidos,
etc.
El sistema operativo como interfaz de usuario
El módulo del sistema operativo que permite que los usuarios dialoguen de forma interactiva con él
es el intérprete de mandatos o shell. El shell se comporta como un bucle infinito que está repitiendo
constantemente la siguiente secuencia:
 Espera una orden del usuario. En el caso de interfaz textual, el shell está pendiente de lo
que escribe el usuario en la línea de mandatos. En las interfaces gráficas está pendiente de
los eventos del apuntador (ratón) que manipula el usuario, además, de los del teclado.
 Analiza la orden y, en caso de ser correcta, la ejecuta, para lo cual emplea los servicios del
sistema operativo.
 Concluida la orden muestra un aviso o prompt y vuelve a la espera.
El diálogo mediante interfaz textual exige que el usuario memorice la sintaxis de los mandatos, con
el agravante de que son distintos para cada sistema operativo (p. ej.: para mostrar el contenido de
un fichero en Windows se emplea el mandato type, pero en UNIX se usa el mandato cat). Por esta
razón, cada vez son más populares los intérpretes de mandatos con interfaz gráfica, como el que se
encuentra en las distintas versiones de Windows o el KDE o Gnome de Linux.
Sin embargo, la interfaz textual es más potente que la gráfica y permite automatizar operaciones
Ficheros de mandatos
Casi todos los intérpretes de mandatos pueden ejecutar ficheros de mandatos, llamados shell
scripts. Estos ficheros incluyen varios mandatos totalmente equivalentes a los mandatos que se
introducen en el terminal. Además, para realizar funciones complejas, pueden incluir mandatos
especiales de control del flujo de ejecución como pueden ser los bucles, las secuencias condicionales
o las llamadas a función, así como etiquetas para identificar líneas de mandatos.
Para ejecutar un fichero de mandatos basta con invocarlo de igual forma que un mandato estándar
del intérprete de mandatos.
Descargar