Educación

Implantación de Sistemas Operativos

SISTEMAS OPERATIVOS 1

1.- Introducción 

Los Sistemas Operativos son una materia fundamental en el estudio de la Informática. Todo usuario de  un ordenador pasará una buena parte de su tiempo dialogando con la máquina a través de comandos,  utilidades o software de un determinado Sistema Operativo. 

La evolución continua de los ordenadores supuso, ya desde las primeras generaciones de los mismos, un aumento de complejidad en la lógica de su funcionamiento. Con el fin de conseguir un uso más racional y un  mejor aprovechamiento de la capacidad de los ordenadores, se desarrollaron una serie de programas, intermediarios entre hombre y máquina, que constituyen el software funcional o sistema operativo del  ordenador. 

Un sistema operativo es un programa que actúa como una interfaz entre el usuario de un ordenador  y el hardware del mismo, ofreciendo el entorno necesario para que el usuario pueda ejecutar programas.  Por tanto el sistema operativo se carga en memoria al arrancar el ordenador y se mantiene  ejecutándose hasta que la máquina se apaga. 

Usuario 1 Usuario 2 Usuario n

Compilador Base de Datos . . . editor de texto 

Programas de Aplicación 

Sistema Operativo 

Hardware

El ordenador posee una serie de recursos que han de ser utilizados racionalmente para obtener el  mayor rendimiento posible. El S.O. es el administrador de estos recursos. 

Los recursos hardware y software que gestiona el S.O. son: 

∙ el procesador 

∙ la memoria 

∙ los dispositivos de E/S 

∙ la información (sistema de ficheros) 

Su principal objetivo es facilitar el uso del sistema informático. Como objetivos secundarios  destacaremos el empleo de hardware del ordenador de forma eficiente y la capacidad de evolución del  propio sistema (actualización del hardware, nuevos servicios, correcciones…). (Cómodo, eficiente y con capacidad de evolución) 

Para lograr estos objetivos, el sistema operativo debe realizar las tareas o servicios siguientes: 

▪ Controlar la ejecución de los programas para prevenirerrores. 

▪ Controlar las operaciones de E/S. 

▪ Gestionar los sistemas de ficheros. 

▪ Detectar errores. 

▪ Asignar los recursos del sistema: tiempo de CPU, dispositivos deE/S, memoria, etc. ▪ Resolver los conflictos que se pueden dar entre varios procesos cuando acceden a los  recursos.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 2

2.- Sistemas operativos 

El software se clasifica en 2 categorías diferentes: 

∙ Sistemas Operativos. 

∙ Software de uso general o Software de Aplicación. 

El sistema operativo es el gestor y organizador de todas las actividades que realiza el ordenador.  Marca las pautas según las cuales se intercambia información entre la memoria central y la secundaria, y  determina las operaciones elementales que puede realizar el procesador. El sistema operativo debe ser  cargado en la memoria principal antes que ninguna otra información. 

Un sistema operativo es en sí mismo un programa de ordenador. Sin embargo, es un programa muy  especial, quizá el más complejo e importante en un ordenador. El sistema operativo despierta al ordenador y  hace que reconozca a la CPU, la memoria, el teclado, el sistema de vídeo y las unidades de disco. Además,  proporciona la facilidad para que los usuarios se comuniquen con el ordenador y sirve de plataforma a partir  de la cual se ejecutan los programas de aplicación. Cuando se enciende un ordenador, lo primero que hace  ésta es llevar a cabo un autodiagnóstico de encendido durante el cual, el ordenador identifica su memoria,  sus discos, su teclado, su sistema de vídeo y cualquier otro dispositivo conectado a ella. Lo siguiente que  hace el ordenador es buscar un sistema operativo para arrancar. 

Una vez que el ordenador ha puesto en marcha su sistema operativo, mantiene al menos parte de  éste en su memoria en todo momento. Mientras el ordenador esté encendido, el sistema operativo tiene 3  tareas principales: 

1. Proporcionar ya sea una interfaz de línea de comando o una interfaz gráfica al usuario,  para que este último se pueda comunicar con el ordenador. 

∙ Interfaz de línea de comando: tú introduces palabras y símbolos desde el teclado del  ordenador. Ejemplo: el sistema operativo MS-DOS

∙ Interfaz gráfica de usuario (GUI): seleccionas las acciones mediante el uso de un ratón  para pulsar sobre figuras llamadas iconos o seleccionar opciones de los menús. Ejemplo:  los sistemas Windows de Microsoft. 

2. Administrar los dispositivos de hardware en el ordenador. Cuando se ejecutan los  programas, estos necesitan utilizar la memoria, el monitor, las unidades de disco, los puertos de  Entrada/Salida (impresoras, módems, etc.). El sistema operativo sirve de intermediario entre los  programas y el hardware, es decir, proporciona servicios a dichos programas. Teóricamente, un  programador debería de conocer las características del hardware en el que se está ejecutando su  programa para así poder utilizar correctamente dicho hardware; pero gracias al sistema  operativo, el programador puede abstraerse de las peculiaridades de la máquina ya que es el  sistema operativo quien hace el “trabajo sucio” de conocer los entresijos de lamisma. 

3. Administrar y mantener los sistemas de archivo de disco. Los sistemas operativos agrupan  la información dentro de compartimentos lógicos para almacenarlos en el disco. Estos grupos de  información son llamados archivos. Los archivos pueden contener instrucciones de programas o  información creada por el usuario. El sistema operativo mantiene una lista de los archivos en un  disco, y nos proporciona las herramientas necesarias para organizar y manipular estos archivos.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 3

3.- Evolución de los sistemas operativos 

Los objetivos fundamentales de los sistemas operativos respecto a eficiencia y facilidad de uso, no son  siempre compatibles. En un principio se primó la eficiencia, mientras que actualmente se atribuye más  importancia al uso. A continuación haremos un breve recorrido a través de la historia de los sistemas  operativos para comprender las razones de esta evolución. 

Primeros sistemas 

Los primeros sistemas informáticos (hablamos de los años cincuenta) carecían de sistema operativo.  Simplemente eran grandes máquinas que se controlaban desde una consola. El programador era al mismo  tiempo el operador del sistema. Él mismo escribía un programa, lo cargaba en memoria, indicaba la  dirección de comienzo, transfería el control al programa y, a medida que éste se ejecutaba, seguía su  ejecución mediante una monitorización de las señales que iba dando el hardware. 

Estos sistemas utilizaban un método de “reserva de solicitud” para asignar el tiempo de máquina. Si  uno quería utilizar el ordenador, iba a la hoja de solicitud, miraba cual era el siguiente período libre que le  convenía y lo solicitaba. En el caso de que al programador se le acabara el tiempo de máquina concedido  sin haber terminado el trabajo, este debía suspender el trabajo en el estado en que se encontrara en ese  instante, recopilar todo el material obtenido y estudiarlo hasta que tuviera otra vez la oportunidad de  disponer de ordenador. Por el contrario, si el programador acababa antes del final del tiempo asignado, el  ordenador quedaba inactivo hasta el siguiente período de tiempo concedido a otro programador 

Los dispositivos de entrada comunes eran lectores de tarjetas y unidades de cinta. Los dispositivos  de salida comunes eran impresoras de líneas, unidades de cinta y perforadoras de tarjetas. 

Podemos deducir que en esos primeros sistemas el aprovechamiento de los recursos del ordenador  era escasísimo, perdiéndose tiempo de CPU, de ahí los esfuerzos para mejorar su rendimiento. 

El objetivo principal era la eliminación del tiempo de inactividad del ordenador (CPU frecuentemente  ociosa) para lo que se introdujo la secuencia automática de trabajos

Secuencia automática de trabajos 

Analizando el trabajo que desempeñaba un operador, se observó que era bastante mecánico y que  podía ser automatizado con lo que surgió lo que se denomina secuencia automática de trabajos. Se diseñó  un pequeño programa que transfería automáticamente el control de un trabajo al siguiente. Este programa  se denominó Monitor Residente, que puede ser considerado como el primer sistema operativo y que, como  su nombre indica, permanecía constantemente en memoria. 

Estos programas de control deben estar en memoria principal, por lo que es necesario un programa  de carga inicial (IPL), existente en la ROM, que se ejecuta automáticamente al arrancar el ordenador. 

Se utilizaban tarjetas de control que marcaban el principio y fin de cada programa y eran  interpretadas por el JCL (lenguaje de control de trabajo). También eran necesarios programas para controlar  los dispositivos y gestionar posibles errores. 

Inicialmente el control del ordenador residía en el monitor residente, quien lo transfería al primer  trabajo. Cuando éste acababa, el monitor residente volvía a tener el control dando paso al segundo de los  trabajos, y así sucesivamente. 

Incluso con la secuencia automática de trabajos, la CPU permanece a menudo inactiva. El problema  reside en que la velocidad de los dispositivos mecánicos de E/S es muy inferior a la velocidad de los  dispositivos electrónicos: mientras tiene lugar una operación de E/S, la CPU permanece “ociosa”, esperando  que la E/S se complete y mientras la CPU ejecuta, los dispositivos de E/S están inactivos.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 4

Operación Off-Line 

Con el tiempo los dispositivos de E/S fueron más rápidos pero a la vez aumentaba la velocidad de la  CPU con lo que el problema no quedó resuelto. La CPU continuaba siendo mucho más rápida que los  dispositivos de E/S. 

Una solución a esa diferencia de velocidad consistía en sustituir las lectoras de tarjetas (dispositivos  de entrada) e impresoras de salida (dispositivos de salida) por unidades de cinta magnética. 

En lugar de hacer que la CPU leyera directamente las tarjetas, estas se copiaban primero en una  cinta magnética. Esta cinta se pasaba al ordenador en bloque para la ejecución de los programas,  grabándose los resultados en una nueva cinta. Por último, la cinta de resultados se volcaba sobre una  impresora. Las acciones de copiado de tarjetas a cinta y de cinta a impresora se hacían sin intervención del  ordenador, ya que eran operaciones muy lentas, y mientras el ordenador trataba otros trabajos. Es lo que se  conoce como operación off-line

La principal ventaja de la operación off-line consistía en que el ordenador principal ya no quedaba  limitado por la velocidad de las lectoras de tarjetas y las impresoras sino por la velocidad de las unidades de  cinta, mucho más rápidas. 

A continuación se muestra un esquema de un sistema on-line (a) y de un sistema off-line (b): 

(a) 

(b) 

CPU

Lectora de tarjetas Impresora 

CPU

Lectora de tarjetas Unidades de cinta Unidades de cinta Impresora 

La desventaja del sistema off-line era que un usuario tenía que esperar a que se llenara una cinta con otros trabajos hasta que pudiera ser procesada la misma, además de todos los procesos de rebobinar la  cinta, desmontarla, llevarla a mano a la unidad central y montarla sobre una unidad libre. 

Buffering 

Esta técnica trata de mantener ocupados tanto a la CPU como a los dispositivos de E/S. Una forma  de mejorar el tiempo que se pierde en los procesos de carga de la cinta en el ordenador (que es un proceso  relativamente lento), es utilizar una memoria intermedia, denominada buffer, donde la cinta va grabando  datos hasta que se llena, volcándose estos en la memoria de una vez y, mientras el procesador realiza 

operaciones con los datos recibidos, en paralelo se vuelve a cargar el buffer. Para la salida el proceso es  análogo: los datos de salida se descargan en otro buffer hasta que el dispositivo de salida pueda  procesarlos. De esta manera, la CPU y el dispositivo están ocupados. A esta forma de trabajo se le  denomina buffering

La misión de las técnicas de buffering es mantener tanto el procesador como los dispositivos de E/S ocupados el mayor tiempo posible. Esto se logra solapando la E/S de un trabajo con el procesamiento del mismo. 

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 5

Buffering 

Terminal buffers CPU buffer Impresora 

El buffering es complicado. Uno de los problemas reside en detectar tan pronto como sea posible  que un dispositivo de E/S haya acabado una operación. La operación de E/S que le siga únicamente podrá  iniciarse cuando la previa haya finalizado. Este problema se resuelve mediante las interrupciones: tan  pronto como un dispositivo de E/S acaba una operación, interrumpe a la CPU para avisarlo. Entonces, ésta  detiene lo que está haciendo e inmediatamente transfiere el control a la rutina de servicio de las  interrupciones. La rutina de servicio de la interrupción comprueba si el buffer no está lleno (para un  dispositivo de entrada) o si no esta vacío (para un dispositivo de salida) e inicia la siguiente petición de E/S.  De esta manera, los dispositivos de E/S y la CPU pueden trabajar a pleno rendimiento. 

Spooling 

Con la aparición del disco magnético como dispositivo de almacenamiento masivo de información  con acceso directo, desapareció el problema que representaban las cintas magnéticas ya que éstas tienen  un acceso secuencial con lo que una lectora de tarjetas no podía escribir sobre un extremo de la cinta  mientras la CPU leía el otro. En cambio, los discos, pueden ser leídos y escritos en cualquier punto de su  superficie. Con este sistema, las tarjetas se leen directamente desde la lectora de tarjetas sobre eldisco 

La técnica del spooling (Simultaneous Peripheral Operation On-line) utiliza el disco como un buffer muy grande, para leer tan por delante como sea posible de los dispositivos de entrada y para almacenar los  ficheros de salida hasta que los dispositivos de salida sean capaces de aceptarlos. Cuando se ejecuta un  trabajo, se lee desde el disco; cuando el trabajo solicita una operación de salida, ésta se escribe en un  buffer y luego se escribe en el disco. 

Cuando se crean varias ordenes de E/S simultáneamente, se utiliza un fichero spool en el que se  almacenan todos los trabajos en colas de espera. Los ficheros spool disponen de un sistema de gestión que  permite reorganizar esta cola según la prioridad del trabajo. 

Disco 

Spooling 

E/S 

CPU 

Lectora de tarjetas Impresora 

La ventaja del spooling sobre el buffering es que el spooling solapa la E/S de un trabajo con la computación de otros. De esta manera, puede mantener tanto a la CPU como a los dispositivos de E/S  trabajando con un rendimiento mucho mayor. Incluso en un sistema sencillo, el spooling puede estar  leyendo la entrada de un trabajo mientras imprime la salida de otro diferente. El buffering únicamente puede  simultanear la E/S de un trabajo con su propia computación.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 6

Un sistema de SPOOL se podría ver como una cola de archivos en espera de que llegue su turno  para ser impresos, grabados en una cinta, etc. La gestión de la cola (la planificación de trabajos) puede ser  del tipo primero en llegar-primero en salir (FIFO), en función de la prioridad de cada trabajo, en función de  la longitud, etc. 

Multiprogramación 

La multiprogramación es un modo de trabajo en el que se pueden ejecutar varios programas  simultáneamente con el fin de aprovechar al máximo los recursos del ordenador, incluso si éste sólo posee  una única CPU. Surgió de la imposibilidad, para los sistemas o modos de trabajo anteriores, de que con un  solo trabajo se pudiese tener ocupados al procesador y a los dispositivos de E/S durante todo el tiempo. 

La multiprogramación es un método para aumentar el empleo de la CPU disponiendo en todo  momento de algo que la CPU pueda ejecutar. 

Podemos clasificar los trabajos en dos tipos: 

Trabajos limitados por proceso: aquellos que consumen la mayor parte de su tiempo en la CPU y  poco en operaciones de E/S. 

Trabajos limitados por operaciones de entrada/salida: dedican la mayor parte de su tiempo en  operaciones de E/S, haciendo poco uso del procesador, manteniéndolo inactivo durante grandes  períodos de tiempo. 

Proceso limitado por CPU 

Proceso limitado por E/S 

CPU Espera terminación E/S 

El segundo tipo de procesos fue el que dio lugar a la multiprogramación al aprovechar la inactividad del procesador durante la ejecución de una operación de entrada/salida de un proceso, para que otro que lo  necesite utilice dicho procesador. 

Desde el punto de vista de cada proceso, cada uno está siendo atendido por un procesador aunque  en realidad todos están atendidos por el mismo, que conmuta de uno a otro constantemente. 

Desde el punto de vista del usuario, los procesos se están ejecutando en paralelo sin tener en  cuenta que en cada momento sólo se atiende a uno de ellos. 

Con el esquema planteado es fácil comprender que van a surgir diversos tipos de problemas: 

∙ El acceso al procesador deberá seguir algún tipo de reglas para que todos los posibles  trabajos que lleguen puedan ser ejecutados. 

∙ La memoria ha de ser compartida por todos los trabajos, ya que necesitarán residir en ella  al mismo tiempo para poder ser ejecutados, por ello se hace necesario algún tipo de  administración de la misma. 

∙ Varios trabajos pueden necesitar la utilización de algún recurso al mismo tiempo, dando  lugar a problemas de concurrencia.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 7

Surge el concepto de planificar el procesador, puesto que hay que ir asignando tiempo de CPU a los  diferentes procesos que están en memoria principal. 

Tiempo compartido 

El siguiente paso en el desarrollo de los sistemas operativos fue la introducción de la multiprogramación interactiva

Apareció a la vez que los terminales conversacionales o interactivos (formados únicamente por un  teclado y una pantalla, sin CPU, ni memoria), llamados también “terminales tontos” que carecían de sistema  operativo, en los que el usuario ya no tenía que suministrar todos los datos al principio de la ejecución del  proceso, sino que podía ir dándolos a medida que el proceso los iba necesitando, de igual modo que iba  recibiendo respuesta inmediata. Esos terminales estaban conectados directamente al ordenador central de  tal manera que se podía estar trabajando simultáneamente desde dichos terminales puesto que el  ordenador iba conmutando entre ellos. 

usuario 1 

usuario 2 

usuario n 

El tiempo compartido es una extensión lógica de la multiprogramación. Se ejecutan múltiples trabajos mientras la CPU se conmuta entre ellos, pero la conmutación es tan frecuente que los usuarios pueden  interactuar con cada programa durante su ejecución. 

Un sistema operativo en tiempo compartido utiliza la planificación de la CPU y la multiprogramación  para dotar a cada usuario de una pequeña parte del ordenador compartido. Como cada acción o comando  en un sistema de tiempo compartido suele ser breve, basta con un tiempo de CPU corto para cada usuario.  Dado que el sistema cambia rápidamente de un usuario al siguiente, estos tienen la impresión de que cada  uno de ellos dispone de su propio ordenador, cuando realmente un solo ordenador es compartido entre  muchos usuarios. 

Tiempo real 

El tiempo real es otra modalidad de los sistemas operativos multiprogramados, en que se necesita un tiempo de respuesta pequeño ante cualquier petición. Si el sistema no respeta las restricciones de tiempo  en las que las operaciones deben entregar su resultado se dice que ha fallado. 

Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario,  sino los procesos. 

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la  mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos. Su objetivo es  proporcionar rápidos tiempos de respuesta. 

Muchos S.O. de tiempo real son construidos para aplicaciones muy específicas como control de  tráfico aéreo, bolsas de valores, control de refinerías, telecomunicaciones, control industrial. 

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 8

Proceso distribuido 

El siguiente paso en la evolución de los sistemas operativos fue el proceso distribuido, que consiste  en la conexión de ordenadores entre sí a través de una gran variedad de dispositivos, existiendo varias  modalidades entre las que podemos citar la conexión de varios ordenadores compartiendo un mismo almacenamiento principal o aquellos que se conectan a una misma red nacional o internacional para el  intercambio de información. 

Multiproceso 

Uno de los problemas actuales en el proceso de datos ha sido la aparición de aplicaciones que  manejan tal cantidad de información, que un solo procesador no es capaz de procesarla en el tiempo  requerido. 

El sistema estándar es monoprocesador o monoproceso, es decir, sólo tiene una CPU. Un  sistema multiprocesador o multiproceso tiene varios procesadores que pueden trabajar conjuntamente compartiendo memoria y periféricos. 

En este tipo de ordenadores, el sistema operativo es complejo debido a que tiene que administrar  varios procesadores de tal manera que la carga y reparto de los trabajos debe equilibrar y optimizar al  máximo el proceso global. 

Puede trabajar de diferentes formas: 

Asimétrica: el ordenador irá saturando de trabajo a sus procesadores poco a poco. Con la  primera tarea utilizará el primer procesador, si entra otra tarea se utilizará lo que reste de  potencia del 1º procesador y lo necesario del segundo. Los demás procesadores se irán  utilizando de forma sucesiva. De esta forma pueden quedar procesadores inactivos. 

Simétrica: utilizan la totalidad de los procesadores para realizar todas las tareas. La  saturación del procesador sólo se producirá cuando el sistema esté funcionando al 100%.  Cada programa utiliza parte de todos los procesadores. Si llega otro programa, se utilizarán  también todos los procesadores y así hasta su total utilización. De esta forma trabajarán  todos pero a más bajo rendimiento. 

En las siguientes figuras vemos las diferencias existentes en la ejecución de cuatro procesos A, B, C  y D en tres sistemas con diferentes métodos de funcionamiento: monoprogramación, multiprogramación y  multiproceso. 

A
B
C
D

1 procesador 

Monoprogramación Multiprogramación 

Procesos Procesos

Tiempo de proceso Tiempo de proceso

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 9

Lleva el mismo tiempo en ambos sistemas (sólo hay un procesador que, en realidad, únicamente puede  hacer una cosa a la vez). 

A B C D 

4 procesadores 

Multiproceso 

Procesos 

Tiempo de proceso

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 10

4.- Más clasificaciones de sistemas operativos 

Sistemas operativos monotarea y multitarea (multiprogramado

Un sistema operativo monotarea es aquel que sólo es capaz de ejecutar una tarea a la vez. Es el  caso del sistema DOS de Microsoft. De esta forma, los recursos del sistema estarán dedicados a esa tarea  hasta que finalice su ejecución. (Esto no impide que el sistema pueda ser multiusuario. Varios usuarios  pueden intentar ejecutar sus programas en el mismo ordenador, pero lo harán de forma sucesiva). 

Por otra parte, como hemos visto anteriormente, un sistema es multitarea (multiprogramadocuando permite realizar más de un trabajo de forma simultánea. Para ello la CPU comparte el tiempo de uso  del procesador entre los diferentes programas que se van a ejecutar. Así, todos los procesos tardarán  individualmente más tiempo en ejecutarse, pero el tiempo medio de espera será mucho menor que en  monotarea. 

Sistemas operativos monousuario y multiusuario 

Que un sistema operativo sea monousuario significa que sólo un usuario puede hacer uso del  ordenador, es decir, que todos los recursos del ordenador están asignados a un único usuario (un único  terminal es el que puede acceder al sistema). El ejemplo más común de sistema monousuario es el sistema  operativo MS-DOS. 

En cambio, el término multiusuario hace referencia a sistemas que soportan más de un usuario.  Este término es bastante amplio y abarca varias posibilidades. Por un lado, están los sistemas que permiten  que varios usuarios estén utilizando de manera simultánea todos los recursos del ordenador (CPU,  memoria, etc.). Éste es el caso de los sistemas UNIX y Linux, por ejemplo, e incluso Windows XP. Por otro  lado, el término multiusuario también contempla a aquellos sistemas que permiten que más de un usuario  utilice todos los recursos del ordenador aunque no de manera simultánea. Éste es el caso de los sistemas  UNIX, Linux, Windows NT, Windows 2000, Windows XP y Windows 2003, en los que se definen (por parte  del administrador del sistema) diferentes “perfiles de usuario”, es decir, que en el sistema existen usuarios  definidos cada uno con un nombre y una contraseña necesarios para que puedan acceder al sistema con el  fin de tener acceso a ciertas tareas y datos, y con la posibilidad de que cada uno maneje sus propios datos  sin afectar a los de los demás. 

Sistemas Operativos para redes 

Son sistemas operativos diseñados con el objetivo de permitir que varios equipos accedan a diversos  recursos (archivos, programas, impresoras, etc.) que se encuentran en uno o más equipos servidores. 

Los usuarios de una red pueden compartir archivos o comunicarse entre sí con facilidad. En  consecuencia, a menudo se puede reducir el costo de los programas y equipos, se pueden adquirir  versiones para red de los programas más usados y compartir dispositivos costosos, como pueden ser  impresoras, unidades de almacenamiento, scanner, etc. 

Cada vez más va en aumento la necesidad de utilizar redes, así como también van disminuyendo los  costos del hardware necesario. Instalando placas de red, cables y software de red, es posible configurar un  sistema de comunicaciones sofisticado y productivo. 

Hoy en día, los sistemas operativos que hay en el mercado soportan el funcionamiento en red.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 11

5- Esquema de un Sistema Operativo 

Todo el mundo sabe que en el mundo PC, los ordenadores son casi todos ellos diferentes en sus  componentes (placas madre, tarjetas de vídeo, controladoras de disco, lector de CD-ROM, tarjeta de sonido,  etc.), aunque al final nos permiten trabajar con los mismos sistemas operativos. Básicamente, las partes o  subsistemas que componen un sistema operativo son las siguientes: 

Interfaz de usuario: Es el entorno que nos ofrece el sistema operativo para poder trabajar con  él. En el caso del DOS, es un programa (el “command.com”) el que nos permite movernos por las  unidades de disco, manejar las disqueteras, realizar operaciones de copia o borrado de ficheros,  cargar otros programas, etc. Se le suele llamar intérprete de comandos. 

Núcleo: Es el corazón del sistema operativo y “descansa” directamente sobre el hardware. Tiene  dos vertientes: la que se «comunica» con las aplicaciones que utilizamos los usuarios y que  ofrece servicios como acceso a puertos de comunicaciones y a la impresora, lectura y escritura  de disco, asignación de memoria…; y la que es complementaria, es decir, la que «habla» con el  hardware de la máquina: RAM, periféricos, procesador, etc. 

Sistema de ficheros: Es un subsistema que organiza la información en los discos duros,  disqueteras y en general en cualquier dispositivo de almacenamiento masivo. En el caso del DOS  el sistema de ficheros se denomina FAT. Windows utilizan el sistema de ficheros llamado NTFS.  Los sistemas basados en Linux suelen utilizar el sistema de ficheros denominado ext3 y ext4. 

Controladores de dispositivos (Entrada/Salida): Son los conocidos drivers, y existe uno para  cada tarjeta o dispositivo externo al procesador que tengamos en nuestra máquina. Todos los  PC’s cuentan con drivers para la tarjeta gráfica, la controladora IDE, SCSI, el disco duro, el lector  de CD-ROM, la tarjeta de sonido, etc. Estos drivers normalmente son suministrados por el  fabricante de las tarjetas y, en el caso del sistema operativo DOS, son ficheros conextensión 

«sys» que se cargan en nuestro fichero «config.sys». Los drivers son software. 

Para entender mejor estos conceptos, veamos un caso práctico. La simple lectura de un archivo  puede servirnos de ejemplo. La aplicación (un procesador de textos, por ejemplo) que desea leer el archivo  debe pedir al núcleo del sistema operativo dicho servicio (lectura de archivo). Este, a su vez, le solicita al  sistema de ficheros dicho archivo y, dependiendo de cómo lo haya guardado (sector, pista, etc.), ordenará al  driver del disco duro que realice dicha operación. Después será la controladora del disco la que ordenará al  disco para que se sitúe en la pista, sector y cilindro donde que se guarda el archivo, y que lo lea y pase los  datos. 

Hecho esto, la controladora devolverá dichos datos al driver, éste al sistema de ficheros que  organizará la información con estructura de archivo y, por último, el núcleo dará dicho archivo a la aplicación  que se lo había solicitado.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 12

6.- Gestión de procesos 

6.1.- Concepto de proceso o tarea 

Es la unidad más pequeña de trabajo individualmente planificable por un sistema operativo. Un  proceso o tarea es un programa en ejecución. Mientras un programa se considera un ente pasivo (conjunto  de instrucciones destinadas a obtener unos resultados), un proceso es un ente activo, que sufre frecuentes  cambios de estado y necesita diferentes recursos del sistema a lo largo del tiempo. 

Aparece en los sistemas operativos con multiprogramación o multitarea, donde varios programas  activos, se ejecutan concurrentemente, compitiendo por los recursos del sistema (procesador, memoria,  archivos de datos, dispositivos de E/S, etc.). 

6.2.- Estados de un proceso 

El sistema operativo considera un proceso como una progresión de estados desde que comienza su  ejecución hasta su finalización. Un proceso puede encontrarse en uno de los siguientes estados: 

Turno de CPU 

En Ejecución

Fin de ejecución 

Operación de E/S o  espera de un evento 

MEMORIA 

Listo o Preparado Bloqueado o suspendido 

Fin de Operación E/S o evento 

Liberar Memoria Principal DISCO 

Memoria disponibleIntercambiado 

LISTO o PREPARADO: Se encuentra en la memoria principal en espera de ser atendido por la CPU. 

EN EJECUCIÓN: El proceso está siendo ejecutado en la CPU. Hay que tener en cuenta que una CPU  sólo puede atender a un proceso en cada instante. 

Abandona este estado cuando ocurre alguna de las siguientes situaciones: 

❑ Finaliza su ejecución. 

❑ Finaliza el quantum de tiempo asignado de CPU (en un modelo de multiprogramación que utilice  este criterio de abandono de CPU) pasando al estado preparado. 

❑ Inicia una operación de E/S o bien ocurre un evento externo que lo suspenda, pasando a estado bloqueado o suspendido. 

BLOQUEADO o SUSPENDIDO: Espera a que se cumpla alguna condición: una operación de E/S  (bloqueado) o está esperando algún evento que le permita continuar su ejecución (ejemplo: una señal de  sincronización de otro proceso). 

Abandona este estado cuando ocurre alguna de las siguientes situaciones: 

❑ Finaliza su ejecución. 

❑ Finaliza la operación de E/S. 

❑ Ocurre el evento que lo tenía suspendido. 

Si el proceso continúa su ejecución pasará al estado preparado. 

INTERCAMBIADO: El proceso que se encuentra en estado preparado es llevado temporalmente a disco  porque el sistema necesita liberar espacio en memoria. Este proceso, parcialmente ejecutado,  permanece en disco hasta que haya memoria suficiente para devolverlo al estado preparado. 

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 13

También puede considerarse el estado INACTIVO, cuando un proceso no está ejecutándose, bien porque haya  finalizado su ejecución, o bien porque no ha comenzado. 

6.3.- Bloque de control de procesos (PCB) 

El sistema operativo mantiene toda la información que necesita de un proceso en una estructura de  datos llamada PCB. Cuando se inicia un proceso, se crea un PCB para él que se mantiene hasta que  finalice su ejecución. Un PCB contiene la siguiente información: 

∙ Identificador del proceso (Ejemplo: PID en el sistema Linux) 

∙ Estado hardware: valor de los registros del procesador (necesita ser salvado cuando abandona el  estado de ejecución). 

∙ Estado en el que se encuentra el proceso (Ejemplo: listo, suspendido, etc.). 

∙ Prioridad del proceso respecto a los demás (para aplicar algoritmos de prioridad). ∙ Recursos solicitados, recursos asignados, etc. 

∙ Información de gestión de memoria (localización de las tablas, etc.). 

∙ Información de gestión de archivos (archivos abiertos, derechos de acceso). 

∙ Etc. 

El sistema operativo utiliza esta estructura para gestionar el estado global del sistema, creando  varias colas con los PCB según el estado en el que se encuentre cada proceso. (El estado global del sistema  en un instante determinado, es el conjunto de recursos y procesos existentes con sus estados  correspondientes.) 

Una cola es una estructura formada por un conjunto de elementos del mismo tipo (en este caso  PCB). Los elementos forman una cola según el orden de llegada, y el primer elemento en ser atendido es el  primero en haber llegado a la cola. Por eso también se denomina Lista FIFO (First-In First-Out). 

1º 2º 3º 4º 

SALIDAElemento cabeza Elemento finalENTRADA 

En Memoria Principal se gestionan las listas del sistema: 

Una cola para cada uno de los estados de un proceso: en ellas se encuentran los PCB de  todos los procesos reconocidos por el sistema. Cada proceso pertenece a una única lista. El  planificador es el encargado de gestionar el paso de los procesos de una lista a otra. 

Colas de dispositivos: puede existir una cola para cada dispositivo de E/S. Cada cola recoge  los PCB de los procesos que están esperando por un dispositivo para realizar una operación de  E/S. 

Cola de procesos listos 

CPU 

Colas de dispositivos  (procesos bloqueados) 

Impresora

Modem 

∙ ∙ 

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 14

6.4.- Planificadores 

Se denomina planificador al software del S.O. encargado de asignar los recursos del sistema entre  los procesos que los solicitan. (Gestiona el paso de los procesos de una lista a otra.) 

Un sistema operativo contiene módulos de planificación que controlan la ejecución de los procesos.  Su objetivo es optimizar el rendimiento del sistema, es decir, el uso eficiente de los recursos (CPU y demás  dispositivos), aumentar la productividad (maximizar el número de tareas ejecutadas en unidad de tiempo),  disminuir el tiempo de respuesta de los procesos (tiempo que espera el usuario desde que lanza la  ejecución de una tarea hasta recibe una respuesta), etc. 

Para planificar los procesos, el sistema utilizar 3 tipos de planificadores que hacen uso de las colas  de PCB: 

MEMORIA PRINCIPAL 

Planificador a largo plazo

Cola de procesos listos Planificador a corto plazo 

DISCO CPU

Planificador a medio  plazo 

Cola de procesos suspendidos 

PLANIFICADOR A LARGO PLAZO o PLANIFICADOR DE TRABAJOS: se encarga de seleccionar qué  trabajo (tarea) de los que se encuentra en disco esperando comenzar su ejecución (en estado inactivo),  pasa a la cola de procesos listos de memoria principal. 

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 15

Es por tanto el encargado de controlar el grado de multiprogramación (número de procesos que están  en memoria principal). Se ejecuta cuando haya memoria suficiente para aumentar el número de  procesos en memoria. Es importante que seleccione los trabajos de forma que combine los trabajos  orientados a CPU (muchas operaciones de CPU y pocas con dispositivos de E/S), con los trabajos  orientados a E/S (pocas operaciones de CPU y muchas con dispositivos de E/S), para disminuir los  tiempos muertos en CPU y dispositivos de E/S. 

PLANIFICADOR A MEDIO PLAZO o PLANIFICADOR DE SWAPPING: una operación de swapping  consiste en llevar a disco un proceso que está en memoria reduciendo el grado de multiprogramación,  para liberar memoria o bien para realizar una mejor combinación de procesos orientados a CPU y  orientados a E/S. 

Este planificador selecciona trabajos que se encuentran parcialmente ejecutados en la cola de procesos  listos o en la cola de suspendidos, para llevarlos a disco, pasando a estado intercambiado. Posteriormente,  volverán a memoria para continuar su ejecución. 

PLANIFICADOR A CORTO PLAZO o PLANIFICADOR DE CPU: selecciona, de entre los procesos  listos, cuál pasa a ser atendido por la CPU. Se ejecuta cada vez que un proceso abandona laCPU. 

6.5.- Algoritmos de planificación  

6.6.- Concurrencia y sincronización de procesos 

Los sistemas multiproceso o multitarea, que permiten la ejecución concurrente de varios procesos (se  ejecutan al mismo tiempo y hacen uso de los mismos recursos). Estos procesos deben sincronizarse  cuando van a utilizar recursos compartidos, como estructuras de datos comunes o dispositivos físicos. Para que dos actividades se consideren concurrentes es necesario que tengan alguna relación entre ellas. 

Ejemplos: 

– dos personas que viven juntas: 

Persona A Persona B
09:50 Llega a casa
10:00 Mira la nevera. No hay leche
10:10 Va a la tienda 10:10 Llega a casa
10:20 Llega a la tienda 10:20 Mira la nevera. No hay leche
10:30 Deja la tienda 10:30 Va a la tienda
10:40 Llega a casa y guarda la leche 10:40 Llega a la tienda
10:50 Deja la tienda
11:00 Llega a casa y ¿¿?? ¡¡ya hay leche!!

– Un proceso escribe un fichero y otro que lee los datos en él; el funcionamiento de uno interfiere en el otro. 

– Un proceso que permite la retirada de fondos de una cuenta bancaria, actualiza una variable compartida  que es el saldo. Otro proceso accede a dicha variable para consultar el saldo actual de lacuenta. 

Cuando varios procesos comparten un recurso, es necesario que exista sincronización entre ellos. Debe  existir una forma de prohibir que más de un proceso lea o escriba datos compartidos a la vez. 

Se denomina sección crítica de un programa al conjunto de instrucciones que realizan operaciones que  pueden dar lugar a interferencias con otros procesos. 

Para garantizar la integridad del sistema se aplica la técnica de exclusión mutua: cuando un proceso  ejecuta su sección crítica, ningún otro proceso puede estar en ella. Hay que tener en cuenta que un proceso  no puede “dormirse” en su sección crítica porque estará bloqueando la sección crítica de otros procesos.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 16

INTERBLOQUEO 

La mayoría de los recursos sólo pueden utilizarse por un proceso a la vez. No obstante, la apropiación de un  recurso para uso exclusivo puede provocar bloqueos. 

Por ejemplo, dos procesos que desean imprimir un archivo situado en una cinta al mismo tiempo. El proceso  A solicita en uso exclusivo la impresora y el proceso B solicita el uso exclusivo de la cinta. El proceso A no  puede imprimir porque no tiene acceso a la cinta, pero no suelta la impresora. El proceso B no imprime  porque no tiene acceso a la impresora, pero no suelta la cinta. Se dice que los procesos se han bloqueado y  permanecerán así para siempre si el S.O. no se encarga de solucionarlo. 

El bloqueo de un conjunto de procesos se produce cuando un proceso espera un evento que sólo puede ser  provocado por otro proceso del conjunto. 

Motivos: exclusión mutua y no apropiación

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 17

7.- Gestión de memoria 

7.1.- Introducción 

Para poder ejecutar un programa en un ordenador es necesario que, previamente, tanto él como los  datos que maneja estén cargados en la Memoria Principal. 

Hemos visto como un conjunto de procesos pueden compartir la CPU. Podemos repartir los servicios  de la CPU entre varios programas mejorando notablemente el rendimiento del mismo y, por tanto, su  velocidad de proceso. No obstante, para lograr este incremento en las prestaciones, tenemos que mantener  varios procesos en memoria; tenemos que compartir la memoria. 

En el funcionamiento de un ordenador la Memoria Principal es un recurso «central» ya que tanto la CPU  como los dispositivos de E/S acceden a ella para leer y/o grabar la información que manejan. 

CPUMEMORIA  PRINCIPAL 

Dispositivos  de E/S 

Un programa tiene que cargarse en memoria para ejecutarse. A medida que se ejecuta, la CPU irá  leyendo cada instrucción para ejecutarla además de leer también de la memoria los datos que necesite esa  instrucción. El posible resultado que se genere de la ejecución de la instrucción, también irá a la memoria  principal. Finalmente, el programa termina y se declara disponible su espacio de memoria. 

Esta operación se estará repitiendo continuamente por lo que la velocidad a la que se realicen estos  accesos, tanto de lectura como de escritura, condicionará la rapidez y eficacia del ordenador. 

Por lo tanto, una parte de todo sistema operativo tiene como función controlar el correcto  funcionamiento de la memoria además de que ha de intentar que su uso sea lo más eficiente posible. De esa  tarea se encarga el gestor de memoria

7.2.- Direccionamiento 

La memoria física se puede ver como una sucesión de celdas cada una de las cuales es capaz de  almacenar un byte. Además, cada una de estas celdas posee su propia dirección para poder acceder a ellas  directamente. 

Cuando se desarrolla el hardware de un ordenador se define el esquema de direccionamiento que éste  podrá utilizar. Si las direcciones que genera son de 16 bits (es decir, un bus de direcciones de 16 bits) podrá  direccionar como máximo 216 celdas, o sea, 64 KB. Aunque la memoria fuera mayor, por ejemplo de 128 KB,  sólo podría acceder a los primeros 64 bytes. 

Asignación de direcciones 

Hasta ahora sabemos que los programas deben estar en memoria para su ejecución, pero ¿en qué  dirección se deben cargar? 

El programador que diseña su programa no puede saber dónde se cargará ese programa que está  codificando, simplemente definirá una sentencia de inicio que marcará el comienzo de las instrucciones y, a  partir de ella, escribirá el resto de su programa.

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 18

Posteriormente, el Compilador, traducirá a lenguaje máquina el programa escrito en código fuente y les asignará, a las diferentes instrucciones y variables, un desplazamiento con respecto a la dirección de la  instrucción inicial, dirección que se denomina cero relativo. Por lo tanto, el compilador asignará direcciones  relativas al programa. 

Una vez enlazado (linkado) el programa, el Cargador podrá colocarlo en memoria asignándole al cero  relativo una dirección de memoria real, quedando definidas a partir de ella el resto de direcciones del  programa por medio de los mencionados desplazamientos. Es decir, que se habrán transformado las  direcciones relativas en direcciones absolutas o reales. 

Se logra así independizar el desarrollo de un programa de su futura dirección de carga en la memoria. 

Direcciones simbólicas 

Direcciones relativas 

(Desplazamiento respecto al inicio) 

Punto de carga 

(Dirección de inicio) 

Direcciones absolutas 

7.3.- Jerarquía de almacenamiento 

 PROGRAMA FUENTE

COMPILADOR 

 PROGRAMA OBJETO

ENLAZADOR / CARGADOR

PROGRAMA CARGABLE  

Los primeros ordenadores utilizaban memoria de tipo magnético. Dado el nivel tecnológico del  momento, se trataba de dispositivos muy grandes y caros que mantenían en todo momento los programas y  datos que ejecutaban. No parecía lógico mantener cargados en memoria principal aquellos programas y datos  que no fueran a ejecutarse, pero tampoco sería práctico compilarlos y enlazarlos cada vez que fuera necesaria  su ejecución. Por eso, el desarrollo de dispositivos rápidos de almacenamiento secundario (cintas y discos)  permitió guardar en ellos dichos programas y datos, transfiriéndolos a la memoria principal cuando fueran a  procesarse. El sistema operativo se encargaría también de gestionar este almacenamiento secundario. 

En la década de los 60, las nuevas tecnologías permitieron el desarrollo de memorias mucho más  rápidas que las magnéticas, aunque también más caras. Estas memorias muy rápidas o caché, se  comenzaron a utilizar para almacenar los programas y datos más utilizados, logrando una mejora general  del sistema. Su coste forzó a usar memorias caché de pequeño tamaño. 

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 19

Tiempo  

acceso 

Capacidad 

MEMORIA  

CACHÉ 

Los programas y datos pueden ser 

utilizados directamente por el procesador 

MEMORIA 

PRINCIPAL

Los programas y datos deben ser transferidos  

a la memoria principal antes de ser tratados  

por el procesador 

Coste 

7.4.- Gestión de la memoria 

MEMORIA  SECUNDARIA 

Al ser la memoria un recurso tan caro e influyente en el rendimiento general del ordenador, debe de ser  manejado de la forma más eficaz posible. Por este motivo, el sistema operativo dedica una parte importante de  su software a su gestión (gestor de memoria) buscando la utilización más adecuada. 

7.4.1.- Sistemas monoprogramados 

En un sistema que trabaje en modo monoprogramación, la memoria principal se divide en dos  partes: una parte para el sistema operativo, y otra para el programa de usuario que se ejecuta en ese  instante. 

MEMORIA PRINCIPAL 

Sistema operativo
Programa de usuario
Zona no utilizada

En este tipo de sistemas, el gestor de memoria tiene como misión importante el asegurar la  independencia de las 2 zonas para que no interfieran entre ellas. A esta función se la denomina protección  de la memoria

7.4.2.- Sistemas multiprogramados 

En un sistema multiprogramado, la CPU accede simultáneamente a varios procesos repartiendo el  tiempo entre todos ellos según diversas técnicas como las que hemos visto anteriormente. Sabemos  también que, para que un proceso se ejecute, éste ha de estar situado en la memoria principal del  ordenador por lo que en los sistemas multiprogramados la parte de la memoria correspondiente al usuario,  debe subdividirse en varias zonas, llamadas regiones o particiones, para hacer sitio a varios procesos. El  número de regiones indicará el grado de multiprogramación del sistema. 

Implantación de Sistemas Operativos 

SISTEMAS OPERATIVOS 20

MEMORIA PRINCIPAL 

Sistema operativo
Proceso 1
Proceso 2
Zona no utilizada

Si simultáneamente se encuentran en memoria varios procesos, se han de proteger sus respectivas  regiones para que no se “molesten” unas a otras. 

7.4.3.- Memoria virtual 

Hasta ahora hemos supuesto que el programa a ejecutar tiene que estar cargado totalmente en la  memoria principal aunque no todas las partes de ese programa se ejecutan al mismo tiempo. La memoria  virtual es una técnica de gestión que, combinando hardware y software, permite la ejecución de programas  parcialmente cargados en memoria real. 

En los sistemas que utilizan técnicas de memoria virtual, el sistema operativo mantiene en la  memoria principal aquella parte del proceso que se utiliza en cada momento, el resto permanece en el disco.  De esta manera, una parte del disco se utiliza como si se tratase de memoria principal (de ahí el nombre de  memoria virtual) con lo que podemos ejecutar programas de mayor tamaño que la capacidad real de la  memoria RAM. Esto supone una gran ventaja pero que tiene también un inconveniente: los discos son  dispositivos que poseen elementos mecánicos lo que los hace mucho más lentos que la memoria principal  por lo que los programas se ejecutarán de forma más lenta. Para minimizar este problema, es recomendable  que los discos sean de gran velocidad. 

Supongamos un proceso que necesita 1 MB de memoria para su ejecución. Se le pueden asignar,  por ejemplo, únicamente 512 KB. Cuando el sistema operativo necesite una parte de ese programa que  todavía no está en la memoria principal, tiene que traer del disco el bloque de datos que necesita y, en caso  de que sea necesario, tiene que pasar un bloque de la memoria al disco (para hacer sitio al nuevo bloque).  A este proceso de intercambio se le conoce como swapping

Con la utilización de la memoria virtual, se puede trabajar con programas de mayor tamaño así como  también se puede tener más grado de multiprogramación.

Implantación de Sistemas Operativos