SISTEMA OPERATIVO
Un Sistema
Operativo es el software encargado de ejercer el control y coordinar el uso del
hardware entre diferentes programas de aplicación y los diferentes usuarios. Es
un administrador de los recursos de hardware del sistema.
En una
definición informal es un sistema que consiste en ofrecer una distribución
ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre
los diversos programas que compiten por ellos.
A pesar de que
todos nosotros usamos sistemas operativos casi a diario, es difícil definir qué
es un sistema operativo. En parte, esto se debe a que los sistemas operativos
realizan dos funciones diferentes.
Proveer una
máquina virtual, es decir, un ambiente en el cual el usuario pueda ejecutar
programas de manera conveniente, protegiéndolo de los detalles y complejidades
del hardware. Administrar eficientemente los recursos del computador.
El sistema
operativo como máquina virtual
Un computador se
compone de uno o más procesadores o CPUs, memoria principal o RAM, memoria secundaria
(discos), tarjetas de expansión (tarjetas de red, módems y otros), monitor,
teclado, mouse y otros dispositivos. O sea, es un sistema complejo. Escribir
programas que hagan uso correcto de todas estas componentes no es una tarea
trivial. Peor aún si hablamos de uso óptimo. Si cada programador tuviera que
preocuparse de, por ejemplo, cómo funciona el disco duro del computador,
teniendo además siempre presentes todas las posibles cosas que podrían fallar,
entonces a la fecha se habría escrito una cantidad bastante reducida de
programas.
Es mucho más
fácil decir `escriba "Chao" al final del archivo "datos"',
que
1-Poner en
determinados registros del controlador de disco la dirección que se quiere
escribir, el número de bytes que se desea escribir, la posición de memoria
donde está la información a escribir, el sentido de la operación (lectura o
escritura), amén de otros parámetros;
2-Decir al
controlador que efectué la operación.
3-Esperar.
Decidir qué hacer si el controlador se demora más de lo esperado (¿cuánto es
"lo esperado"?).
4-Interpretar el
resultado de la operación (una serie de bits).
5-Reintentar si
algo anduvo mal.
Además, habría
que reescribir el programa si se instala un disco diferente o se desea ejecutar
el programa en otra máquina.
Hace muchos años
que quedó claro que era necesario encontrar algún medio para aislar a los
programadores de las complejidades del hardware. Esa es precisamente una de las
tareas del sistema operativo, que puede verse como una capa de software que
maneja todas las partes del sistema, y hace de intermediario entre el hardware
y los programas del usuario. El sistema operativo presenta, de esta manera, una
interfaz o máquina virtual que es más fácil de entender y de programar que la
máquina "pura". Además, para una misma familia de máquinas, aunque
tengan componentes diferentes (por ejemplo, monitores de distinta resolución o
discos duros de diversos fabricantes), la máquina virtual puede ser idéntica:
el programador ve exactamente la misma interfaz.
El sistema
operativo como administrador de recursos
La otra tarea de
un sistema operativo consiste en administrar los recursos de un computador
cuando hay dos o más programas que ejecutan simultáneamente y requieren usar el
mismo recurso (como tiempo de CPU, memoria o impresora).
Además, en un
sistema multiusuario, suele ser necesario o conveniente compartir, además de
dispositivos físicos, información. Al mismo tiempo, debe tenerse en cuenta
consideraciones de seguridad: por ejemplo, la información confidencial sólo
debe ser accesada por usuarios autorizados, un usuario cualquiera no debiera
ser capaz de sobrescribir áreas críticas del sistema, etc. (En este caso, un
usuario puede ser una persona, un programa, u otro computador). En resumen, el
sistema operativo debe llevar la cuenta acerca de quién está usando qué
recursos; otorgar recursos a quienes los solicitan (siempre que el solicitante
tenga derechos adecuados sobre el recurso); y arbitrar en caso de solicitudes
conflictivas.
Las tareas que
generalmente realiza un Sistema Operativo son las siguientes:
-Realizar el interfaz sistema-usuario.
-Compartir los recursos de Hardware entre los
usuarios.
-Permitir a los usuarios compartir sus datos entre
ellos.
-Prevenir que las actividades de un usuario no
interfieran en las de los demás usuarios.
-Calendarizar los recursos de los usuarios.
-Facilitar el acceso a los dispositivos de E/S.
-Recuperarse de fallas o errores.
-Llevar el control sobre el uso de los recursos.
-Entre otras.
Un sistema
operativo está formado por varios programas que en conjunto presentan al
usuario una vista integrada del sistema, los componentes principales de un
sistema operativo son los siguientes módulos:
-Manejo de procesos.
-Manejo de E/S.
-Manejo de Memoria.
-Manejo del Sistema de Archivos.
El sistema operativo indica a la computadora la
manera de utilizar otros programas de software y administra todo el hardware,
tanto el interno como el externo, que está instalado en la computadora.
Los sistemas
operativos pueden ser basados en caracteres o gráficos. Un sistema operativo
basado en caracteres, tal como MS-DOS, le permite escribir comandos en un
indicador para controlar la computadora. Un interfaz gráfico del usuario, o
GUI, le permite enviar comandos a la computadora al hacer clic en iconos o al
seleccionar elementos en los menús. Windows 95 cuenta con un GUI.
La mayoría de
los sistemas operativos pueden manejar programas de 16 ó 32 bits, o ambos.
Microsoft Windows 3.x ejecuta únicamente los programas de 16 bits; Windows 95
de Microsoft puede ejecutar ambos programas de 16 ó 32 bits.
Un sistema
operativo (SO) es un programa o conjunto de programas que en un sistema
informático gestiona los recursos de hardware y provee servicios a los
programas de aplicación, y corre en modo privilegiado respecto de los
restantes.1
Nótese que es un
error común muy extendido denominar al conjunto completo de herramientas
sistema operativo, es decir, la inclusión en el mismo término de programas como
el explorador de ficheros, el navegador web y todo tipo de herramientas que
permiten la interacción con el sistema operativo, también llamado núcleo o
kernel. Esta identidad entre kernel y sistema operativo es solo cierta si el
núcleo es monolítico. Otro ejemplo para comprender esta diferencia se encuentra
en la plataforma Amiga, donde el entorno gráfico de usuario se distribuía por
separado, de modo que, también podía reemplazarse por otro, como era el caso de
directory Opus o incluso manejarlo arrancando con una línea de comandos y el
sistema gráfico. De este modo, al arrancar un Amiga, comenzaba a funcionar con
el propio sistema operativo que llevaba incluido en una ROM, por lo que era
cuestión del usuario decidir si necesitaba un entorno gráfico para manejar el
sistema operativo o simplemente otra aplicación. Uno de los más prominentes
ejemplos de esta diferencia, es el núcleo Linux, usado en las llamadas
distribuciones Linux, ya que al estar también basadas en Unix, proporcionan un
sistema de funcionamiento similar. Este error de precisión, se debe a la
modernización de la informática llevada a cabo a finales de los 80, cuando la
filosofía de estructura básica de funcionamiento de los grandes computadores2
se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el
concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un
sistema mono usuario (únicamente un usuario al mismo tiempo) más sencillo de
gestionar.3 (Véase AmigaOS, beOS o MacOS como los pioneros4 de dicha
modernización, cuando los Amiga fueron bautizados con el sobrenombre de Video
Toasters5 por su capacidad para la Edición de vídeo en entorno multitarea round
robin, con gestión de miles de colores e interfaces intuitivos para diseño en
3D.
Uno de los
propósitos del sistema operativo que gestiona el núcleo intermediario consiste
en gestionar los recursos de localización y protección de acceso del hardware,
hecho que alivia a los programadores de aplicaciones de tener que tratar con
estos detalles. La mayoría de aparatos electrónicos que utilizan
microprocesadores para funcionar, llevan incorporado un sistema operativo.
(teléfonos móviles, reproductores de DVD, computadoras, radios, enrutadores,
etc). En cuyo caso, son manejados mediante una Interfaz Gráfica de Usuario, un
gestor de ventanas o un entorno de escritorio, si es un celular, mediante una
consola o control remoto si es un DVD y, mediante una línea de comandos o
navegador web si es un enrutador.
Llamadas al
sistema operativo
Definición breve:
llamadas que ejecutan los programas de aplicación para pedir algún servicio al
SO.
Cada SO
implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas
es la interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que
deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos
de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en
general el programa no funcionará, a no ser que el nuevo SO tenga la misma
interfaz. Para ello:
Las llamadas correspondientes deben tener
el mismo formato.
Cada llamada al nuevo SO tiene que dar los
mismos resultados que la correspondiente del anterior.
Modos de ejecución en un CPU
Las aplicaciones
no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema
Operativo, tiene que poder utilizar todo el juego de instrucciones del CPU. Por
ello, una CPU debe tener (al menos) dos modos de operación diferentes:
Modo usuario: el CPU podrá ejecutar sólo
las instrucciones del juego restringido de las aplicaciones.
Modo supervisor: la CPU debe poder ejecutar
el juego completo de instrucciones.
Llamadas al sistema
Una aplicación,
normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por
lo que si ésta se codifica como una llamada de función, cualquier cambio en el
S.O. haría que hubiera que reconstruir la aplicación.
Pero lo más
importante es que una llamada de función no cambia el modo de ejecución de la
CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que
conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de
la CPU en la llamada (y la recuperación del modo anterior en el retorno).
Esto se hace
utilizando instrucciones máquina diseñadas específicamente para este cometido,
distintas de las que se usan para las llamadas de función.
Interrupciones y excepciones
El SO ocupa una
posición intermedia entre los programas de aplicación y el hardware. No se
limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones
en las que es el hardware el que necesita que se ejecute código del SO. En
tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse
estas llamadas a dos condiciones:
Algún
dispositivo de E/S necesita atención.
Se ha producido una situación de error al
intentar ejecutar una instrucción del programa (normalmente de la aplicación).
En ambos casos,
la acción realizada no está ordenada por el programa de aplicación, es decir,
no figura en el programa.
Según los dos
casos anteriores tenemos las interrupciones y la excepciones:
Interrupción: señal que envía un
dispositivo de E/S a la CPU para indicar que la operación de la que se estaba
ocupando, ya ha terminado.
Excepción: una situación de error detectada
por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por
parte del SO.
Componentes de
un sistema operativo
Gestión de
procesos
Un proceso es
simplemente, un programa en ejecución que necesita recursos para realizar su
tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el
responsable de:
·
Crear y destruir los procesos.
·
Parar y reanudar los procesos.
·
Ofrecer mecanismos para que se
comuniquen y sincronicen.
La gestión de
procesos podría ser similar al trabajo de oficina. Se puede tener una lista de
tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo.
Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se
terminen seguir con las de prioridad media y después las de baja. Una vez realizada
la tarea se tacha. Esto puede traer un problema que las tareas de baja
prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para
siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas más
antiguas.
Gestión de la
memoria principal
La Memoria es
una gran tabla de palabras o bytes que se referencian cada una mediante una
dirección única. Este almacén de datos de rápido accesos es compartido por la
CPU y los dispositivos de E/S, es volátil y pierde su contenido en los fallos
del sistema. El SO es el responsable de:
·
Conocer qué partes de la
memoria están siendo utilizadas y por quién.
·
Decidir qué procesos se
cargarán en memoria cuando haya espacio disponible.
·
Asignar y reclamar espacio de
memoria cuando sea necesario.
Sistema de
archivos
Los archivos son
colecciones de información relacionada, definidas por sus creadores. Éstos
almacenan programas (en código fuente y objeto) y datos tales como imágenes,
textos, información de bases de datos, etc. El SO es responsable de:
·
Construir y eliminar archivos y
directorios.
·
Ofrecer funciones para
manipular archivos y directorios.
·
Establecer la correspondencia
entre archivos y unidades de almacenamiento.
·
Realizar copias de seguridad de
archivos.
Existen
diferentes Sistemas de Archivos, es decir, existen diferentes formas de
organizar la información que se almacena en las memorias (normalmente discos)
de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32,
EXT3, NTFS, XFS, etc.
Desde el punto
de vista del usuario estas diferencias pueden parecer insignificantes a primera
vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los
sistemas de ficheros FAT32 y NTFS, que se utilizan fundamentalmente en sistemas
operativos de Microsoft, tienen una gran diferencia para un usuario que utilice
una base de datos con bastante información ya que el tamaño máximo de un
fichero con un sistema de archivos FAT32 está limitado a 4 gigabytes, sin
embargo, en un sistema NTFS el tamaño es considerablemente mayor.
Programas de
sistema
Son aplicaciones
de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un
entorno útil para el desarrollo y ejecución de programas, siendo algunas de las
tareas que realizan:
·
Manipulación y modificación de archivos.
·
Información del estado del
sistema.
·
Soporte a lenguajes de
programación.
·
Comunicaciones.
En Breve
Un Sistema Operativo (SO)
es el software básico de una computadora que provee una interfaz entre el resto
de programas del ordenador, los dispositivos hardware y el usuario.
Las funciones básicas del
Sistema Operativo son administrar los recursos de la máquina, coordinar el
hardware y organizar archivos y directorios en dispositivos de almacenamiento.
No hay comentarios:
Publicar un comentario