Orígenes de los Sistemas Operativos

Anuncio
GUIA NRO. 1 ARQUITECTURA DEL COMPUTADOR. TI - PII
Orígenes de los Sistemas Operativos
Los primeros sistemas
En un principio solo existía el hardware del computador. Los primeros computadores eran
(físicamente) grandes maquinas que se operaban desde una consola. El programador escribía un
programa y luego lo controlaba directamente desde la consola. En primer lugar, el programa se
cargaba manualmente en la memoria, desde los interruptores del tablero frontal, desde una cinta de
papel o desde tarjetas perforadas. Luego se pulsaban los botones adecuados para establecer la
dirección de inicio y comenzar la ejecución del programa. Mientras este se ejecutaba, el
programador – operador lo podía supervisar observando las luces en la consola. Si se descubrían
errores, el programador podía detener el programa, examinar el contenido de la memoria y depurar
el programa directamente desde la consola. La salida del programa se imprimía o perforaba en
cintas de papel o tarjetas para su impresión posterior.
Un aspecto importante de este entorno era su naturaleza interactiva directa. El programador
también era el operador del sistema de computación. La mayoría de los sistemas utilizaban un
esquema de reservaciones para asignar tiempo de maquina. Si alguien quería usar el computador
acudía a la hoja de registro, buscaba el siguiente tiempo libre de la maquina que fuera conveniente
y se agotaba para usarla.
Sin embargo, con este procedimiento se presentaban ciertos problemas. Suponga que usted se
había registrado para usar una hora del tiempo del computador dedicada a ejecutar el programa
que estaba desarrollando, pero se topaba con un error difícil y no podía terminar en esa hora. Si
alguien mas había reservado el siguiente bloque de tiempo usted debía detenerse, rescatar lo que
pudiera y volver mas tarde para continuar. Por otra parte, si el programa se ejecutaba sin
problemas, podría terminar en 35 minutos, pero como pensó que necesitaría la maquina durante
mas tiempo se registró para usarla una hora, y permanecería inactiva durante 25 minutos.
Conforme transcurrió el tiempo, se desarrollaron software y hardware adicional empezaron a
popularizarse los lectores de tarjetas, impresoras de líneas y cintas magnéticas, se diseñaron
ensambladores, cargadores y ligadores para facilitar las tareas de programación, y se crearon
bibliotecas de funciones comunes de manera que estas podían copiarse a un nuevo programa si
tener que escribirlas de nuevo.
Las rutinas que efectuaban operaciones de entrada / salida tenían una importancia especial. Cada
nuevo dispositivo de E / S poseía sus propias características, lo que requería una cuidadosa
programación. Asimismo, para cada uno de ellos se escribía una subrutina especial llamada
manejador de dispositivo. Este sabe como deben usarse una serie de aspectos relacionados con el
dispositivo, el cual poseía su propio manejador. Una tarea sencilla como leer un carácter de un
lector de cinta de papel, podía conllevar complicadas secuencias de operaciones específicas para
el dispositivo. En lugar de tener que escribir cada vez el codigo necesario, bastaba usar el
manejador de dispositivo de la biblioteca.
Más tarde aparecieron los compiladores de los lenguajes de programación, lo que facilito la tarea
de desarrollo de programas, pero hizo más complejo el funcionamiento del computador. Por
ejemplo, al preparar la ejecución de un programa en el lenguaje FORTRAN, el programador
primero debía cargar en el computador el compilador de este lenguaje, que generalmente se
guardaba en una cinta magnética, por lo que había que montar la cinta adecuada en la unidad
correspondiente. El programa se leía a través del lector de tarjetas y se escribía en otra cinta. El
compilador de FORTRAN producida una salida en lenguaje ensamblador, que luego tenia que
ensamblarse. Para esto era necesario montar otra cinta con el ensamblador. Finalmente el
programa en código binario estaba listo para ejecutarse, se cargaba en memoria y se depuraba
desde la consola como antes. Observe que era necesario un considerable tiempo de preparación
para realizar un trabajo, ya que estos consistían en la ejecución de varios pasos.
Monitor Sencillo
El tiempo de preparación para los trabajos representaba un verdadero problema. Durante el lapso
en que se montaban las cintas o el programador operaba la consola, la UCP permanecía inactiva.
Recuerde que al inicio se disponía de pocos computadores y su costo era muy alto. Por eso, el
tiempo de maquina era muy valioso y los dueños querían que sus computadores se usaran todo lo
posible.
La solución tuvo dos facetas. En primer lugar se contrato un operador profesional, por lo que el
programador no operaba directamente la maquina. Al momento en que este terminaba un trabajo el
operador iniciaba el siguiente con lo que se eliminaban los periodos de inactividad en los que el
computador permanecía reservado pero no se usaba.
Puesto que el operador tenia mas experiencia que el programador para operar la maquina, este
ultimo solo proporcionaba las tarjeteas o cintas necesarias junto con una breve descripción de
cómo se debía ejecutar el trabajo. Por supuesto, el operador no podía depurar un programa
incorrecto desde la consola, ya que no comprendía el programa, de modo de que en caso de un
error en el programa se hacia un volcado de la memoria, y el programador efectuaba la depuración
a partir del volcado. Esto permitía al operador proseguir de inmediato con el trabajo siguiente, pero
representaba un problema de depuración algo mas complicado para el programador.
El segundo ahorro considerable de tiempo se logro al reducir el tiempo de preparación. Los trabajos
con requisitos similares se agrupaban en lotes, y se ejecutaban como un grupo en el computador.
Por ejemplo, suponga que el operador recibía un trabajo en FORTRAN, uno en COBOL y otro en
FORTRAN. Si los ejecutaba en ese orden, tenia que preparar el computador para FORTRAN, luego
para COBOL y después nuevamente para FORTRAN. Sin embargo, si ejecutaba los dos
programas de FORTRAN como un lote, podía preparar el computador una sola vez para FORTRAN
ahorrando así bastante tiempo al ordenador.
Estos cambios, separar al operador del usuario y agrupar trabajos similares, mejoraron bastante la
utilización. Los programadores dejaban sus programas con el operador, quien los clasificaba y
agrupaba en lotes con requisitos similares, y en cuanto estuviera disponible el computador,
ejecutaba cada lote. La salida de cada uno de los trabajos se devolvía al programador
correspondiente.
Pero aun persistían los problemas. Por ejemplo, cuando se detenía un trabajo, el operador debía
percatarse de la situación observando la consola, determinar por que se detuvo el programa,
efectuar un volcado si es necesario y luego cargar el lector de tarjetas o de cinta de papel con el
siguiente trabajo y volver a preparar el computador.
Durante esta transición de un trabajo a otro, la UCP permanecía inactiva. Para superar este tiempo
de inactividad se desarrollo la secuencia automática de trabajos. Con esta técnica se crearon los
sistemas operativos rudimentarios. Lo que se deseaba era un procedimiento para transferir
automáticamente el control de un trabajo al siguiente. Con este fin se creo un pequeño programa
llamado Monitor Residente, el cual, siempre reside en memoria.
Inicialmente (al encender el computador) se invocaba al monitor Residente que transfería el control
a un programa. Cuando este terminaba, devolvía el control al Monitor Residente, el cual pasaba al
siguiente programa. Así, el monitor pasaba automáticamente de un programa a otro.
Pero, ¿Cómo sabía el Monitor Residente cual programa debía ejecutar? Previamente se le había
dado al operador una breve descripción de cuales programas se debían ejecutar y con que datos.
Para proporcionar esa información directamente al monitor se crearon las tarjetas de control. La
idea es sencilla: además de los programas y los datos para un trabajo, se incluyen tarjetas
especiales que contienen instrucciones para indicar al monitor Residente cual es el programa que
se ejecutará. Por ejemplo, un programa de un usuario requeriría ejecutar uno de estos tres
programas: el compilador de FORTRAN (ftn), el ensamblador (asm) o el programa de usuario (run).
El Monitor Residente tiene varias partes identificables. Una parte principal es el intérprete de
tarjetas de control; este es responsable de leer y llevar a cabo las instrucciones de las tarjetas al
momento de la ejecución. El intérprete de tarjetas de control invoca a intervalos a un cargador para
que cargue en la memoria los programas del sistema y las aplicaciones. Por tanto, el cargador
forma parte del monitor residente. Tanto el interprete de tarjetas de control como el cargador
necesitan efectuar operaciones de E / S, por lo que el monitor Residente cuenta con un conjunto de
manejadores para los dispositivos de E / S.
Estos sistemas por lotes funcionan bastante bien. El Monitor Residente proporciona una
secuenciación automática de trabajos siguiendo las indicaciones de las tarjetas de control. Cada
una de ellas indica que debe ejecutarse un programa, el monitor lo carga en memoria y le transfiere
el control. Cuando el programa termina, devuelve el control al monitor, el cual lee la siguiente
tarjeta de control, carga el programa adecuado, etc. Este ciclo se repite hasta que se interpretan
todas las tarjetas de control del trabajo. Luego el Monitor Residente continua automáticamente con
el siguiente programa.
Operación Fuera de Línea
Todo aquel que posea una computadora, desea obtener de ésta el mayor rendimiento al menor de
los costos posibles.
El cambio a los sistemas por lotes con secuenciación automática de trabajos se efectuó para
mejorar el rendimiento. El problema es que las personas son demasiado lentas en comparación
con el computador. Por tanto es deseable sustituir la intervención humana por software de sistema
operativo. La secuenciación automática de trabajos elimina la necesidad de que las personas
establezcamos la secuencia de trabajos y dediquemos tiempo a su preparación.
Incluso con la secuenciación automática de trabajos, la UCP aun tiene periodos de inactividad. El
problema es la velocidad de los dispositivos mecánicos de E / S, los cuales son intrínsecamente
mas lentos que los dispositivos electrónicos. Esto quiere decir que la lentitud de los dispositivos de
E / S provoca que la UCP con frecuencia se encuentre esperando E / S. por ejemplo, un compilador
puede procesar 300 o mas tarjetas por segundo. Por otra parte, un lector de tarjetas rápido puede
leer solo 1200 tarjetas por minuto. Entonces, la dificultad es la siguiente: mientras se lleva a cabo
una operación de E / S, la UCP esta inactiva esperando que termine la E / S, y mientras la UCP
esta trabajando, los dispositivos de E / S están inactivos.
Por supuesto, con el paso del tiempo se obtuvieron dispositivos de E / S mas rápidos, gracias a las
mejoras tecnológicas, pero las velocidades de las UCP aumentaron un mas, por lo que el problema
no se resolvió, sino que se complico.
Una solución fue sustituir los lentos lectores de tarjetas (dispositivos de entrada) e impresoras de
línea (dispositivos de salida) con unidades de cinta magnética. La mayoría de los sistemas de
computación de finales de los años 50 y principios de los 60 eran sistemas por lotes que leían
tarjetas perforadas y escribían en impresoras de líneas o perforadores de tarjetas. Sin embargo, en
vez de que la UCP leyera directamente de las tarjetas estas primero se copiaban a una cinta
magnética. Cuando la cinta se llenaba lo suficiente, se desmontaba y llevaba al computador.
Cuando se requería una tarjeta como entrada al computador. Cuando se requería una tarjeta como
entrada para un programa se leía el registro equivalente de una cinta. En forma parecida, la salida
se escribía en la cinta y el contenido de esta se imprimía mas tarde. Los lectores de tarjetas y las
impresoras de línea se operaban fuera de línea; no lo hacia el computador personal.
Para el procesamiento fuera de línea se utilizaban dos métodos. Se desarrollaron dispositivos de
propósito especial (lectores de tarjetas, impresoras de líneas) que enviaban la salida a la cinta
magnética o recibían la entrada de ella directamente. El otro método era dedicar un pequeño
computador a la tarea de copiar de la cinta y en ella. Este pequeño computador era un satélite del
computador principal. El procesamiento satélite fue uno de los primeros casos de sistemas de
computación múltiples que trabajaban en conjunto para mejorar el rendimiento. La principal ventaja
de la Operación Fuera de Línea era que el computador principal ya no estaba restringido por la
velocidad de los lectores de tarjetas o las impresoras, sino por la velocidad mucho mayor de las
unidades de cinta magnética.
Además, no era necesario modificar los programas para pasar de una operación directa a una
operación fuera de línea. Considere un programa que se ejecuta en un sistema con un lector de
tarjetas conectado. Cuando requiere una tarjeta, llama al manejador del lector de tarjetas en el
monitor residente. Si pasamos a una operación fuera de línea del lector de tarjetas, únicamente hay
que modificar el manejador del dispositivo. Cuando el programa necesita una tarjeta de entrada,
llama a la misma rutina que antes. Sin embargo, ahora el código para la rutina no es el manejador
del lector de tarjetas, sino una llamada al manejador de la cinta magnética. En ambos casos, la
aplicación recibe el mismo contenido de la tarjeta.
Esta capacidad para ejecutar un programa con diferentes dispositivos de E / S se denomina
independencia de dispositivos, y se obtiene cuando el sistema operativo es capaz de determinar el
dispositivo que realmente usa un programa cuando solicita E / S.
La verdadera mejora al emplear la operación fuera de línea es la posibilidad de usar varios
sistemas lector – cinta y cinta – impresora con una misma UCP. No obstante ahora hay un mayor
retardo para iniciar la ejecución de un trabajo determinado, primero debe leerse la cinta, y luego
demora hasta que se lean otros trabajos que la llenen. Posteriormente hay que rebobinar la cinta,
desmontarla, llevarla hasta la UCP, y montarla en una unidad de cinta disponible.
Almacenamiento Temporal (Buffers y Spoolers)
Almacenamiento temporal con buffers
Un buffer es un método para hacer simultanea la E / S de un trabajo con su propio computo. La
idea es la siguiente: después de haber leído los datos, cuando la UCP esta lista para comenzar a
trabajar con ellos se ordena al dispositivo que inicie de manera inmediata l siguiente lectura. En
este momento tanto la UCP como el dispositivo se encuentran ocupados. Con un poco de suerte,
cuando la UCP este lista para el siguiente elemento de datos, el dispositivo de entrada habrá
terminado de leerlo. La UCP puede entonces comenzar con el tratamiento de los datos siguientes.
Esto puede hacerse de manera similar para la salida. En este caso la UCP cera datos para
colocarlos en el buffer hasta que un dispositivo de salida pueda tomarlos.
En la practica el buffer pocas veces mantiene ocupados todo el tiempo a la UCP y sus dispositivos
de E / S, ya que alguno, el dispositivo de E / S o la UCP terminara primero. Si la UCP termina antes
encontrara el buffer vacío y deberá esperar, ya que no puede continuar hasta que se lea el
siguiente registro y se encuentre en memoria listo para ser procesado. Si el dispositivo de entrada
termina antes, entonces deberá esperar o podrá proseguir con la lectura del siguiente registro. Si
además, el dispositivo de entrada es, de forma continua, mas rápido que la UCP, el buffer se
llenará y el dispositivo tendrá que esperar a vaciarse. Por tanto, los buffers pueden ser útiles, pero
rara vez bastan. La mayoría de los trabajos de los primeros de los sistemas de computación
estaban limitados por E / S, ya que los dispositivos de E / S no podían igualar el ritmo de la UCP.
Almacenamiento temporal con spoolers
Aunque la preparación de trabajos fuera de línea prosiguió durante cierto tiempo, fue rápidamente
reemplazada en la mayoría de los sistemas. Los sistemas con disco empezaron a popularizarse y
superaron de forma considerable la operación fuera de línea. El problema en los sistemas con cinta
era que el lector de tarjetas no podía escribir de un extremo a otro de la cinta magnética mientras la
UCP leía del otro. Toda la cinta se tenia que escribir antes de rebobinarla y leerla, problema que se
elimino con los sistemas con discos. Como la cabeza del disco se mueve de una área a otra de
este, se puede cambiar rápidamente de un sector utilizado por el lector de tarjetas para almacenar
nuevas tarjetas a la posición requerida por la UCP para leer la siguiente.
En un sistema con disco las tarjetas se leen directamente del lector de tarjetas al disco. La
ubicación del contenido de las tarjetas se anota en una tabla que mantiene el sistema operativo.
Cuando se ejecuta un trabajo, el sistema operativo satisface las solicitudes de entrada en el lector
de tarjetas leyendo del disco. De forma similar, cuando el trabajo solicita a la impresora que
imprima una línea, esta se copia a un buffer del sistema y se escribe en el disco. Cuando se
termina el trabajo, se lleva a cabo la impresión real.
Con este tipo de almacenamiento se utiliza al disco como un buffer de gran tamaño, para tratar de
leer lo más posible de los dispositivos de entrada y almacenar los archivos hasta que los
dispositivos de salida estén listos para recibirlos.
La ventaja del spooler sobre el buffer es que el primero hace simultanea la E / S de un trabajo con
el calculo de otros trabajos.
Multiprogramación
El aspecto más importante de la planificación de trabajos es la multiprogramación. La Operación Fuera
de Línea y el uso de Buffers y Spoolers realizados al mismo tiempo que la E / S tienen sus limitaciones.
Un solo usuario un puede, en general, mantener todo el tiempo ocupados a la UCP o los dispositivos de
E / S. la Multiprogramación aumenta la utilización de la UCP organizando los trabajos de manera que
siempre se tenga algo que ejecutar.
El concepto es el siguiente: el Sistema Operativo escoge uno de los trabajos del depósito y lo comienza
a ejecutar. En algún momento el trabajo tendrá que esperar a que se efectúe alguna tarea de E / S. En
un sistema no multiprogramado la UCP estaría inactiva. En un sistema multiprogramado, el Sistema
Operativo cambia a otro trabajo y lo ejecuta. Cuando ese trabajo tiene que esperar, la UCP cambia a
otro. Eventualmente el primer trabajo deja de esperar y recupera la UCP; mientras haya otro trabajo por
ejecutar, la UCP nunca estará inactiva.
Este tipo de sistemas operativos son bastante complejos. Para que pueda haber varios programas listos
para ejecutarse, debe conservarlos todos en memoria al mismo tiempo. Cuando esto se consigue, se
necesita alguna forma de administración de memoria. Además, si al mismo tiempo existen varios
programas listos para ejecutarse, el sistema debe elegir uno de ellos. Esta decisión se toma por medio
de la planificación de la UCP. Finalmente, si varios programas se ejecutan concurrentemente, es
necesario limitar la posibilidad de que se interfieran unos a otros.
Sistemas Distribuidos
Una tendencia de los sistemas de computación es distribuir los cálculos entre varios procesadores. A
estos sistemas se les conoce con el nombre de Sistemas Distribuidos, y en ellos los procesadores
pueden variar en cuanto a tamaño y función. Pueden incluir pequeños microprocesadores, estaciones
de trabajo, minicomputadoras y grandes sistemas de computación de propósito general. Para referirse a
estos procesadores se usan varios nombres, como instalaciones, nodos, computadores, etc., según el
contexto en que se mencionen. Por lo general, los sistemas distribuidos constituyen una colección de
computadoras físicamente separadas y posiblemente heterogéneas que están conectadas en red para
proporcionar a los usuarios acceso a los diversos recursos que el sistema mantiene.
Existen varias razones para construir sistemas distribuidos, y las principales son las siguientes:
 Compartimiento de recursos: si varias instalaciones (con distintas capacidades) están conectadas
entre si, entonces un usuario puede utilizar en una instalación los recursos disponibles en otra.
Por ejemplo, en la instalación A se puede utilizar una impresora láser solo disponible en la
instalación B. el mismo tiempo, en B es posible tener acceso a un archivo que reside en A.
 Aceleración de los calculos: Si un calculo determinado puede dividirse en varios subcalculos que
se ejecuten concurrentemente, un sistema distribuido permitirá distribuir los calculos entre las
diversas instalaciones y tambien ejecutarlos concurrentemente. Ademas, si en un momento dado
una instalación esta sobrecargada con trabajos, algunos de ellos pueden pasarse a otras
instalaciones con poca carga.
 Confiabilidad: si falla una instalación de un sistema distribuido, las restantes pueden,
potencialmente, continuar operando. Si el sistema se compone de varias instalaciones autónomas
de gran tamaño, la avería de una no debe afectar a las demás. Si por otra parte el sistema esta
compuesto por varias maquinas pequeñas, cada una responsable de una función indispensable
dentro del sistema, entonces un solo error puede detener el funcionamiento de todo el sistema.
 Comunicación: existen varias situaciones donde los programas necesitan intercambiar datos entre
si. Cuando varias instalaciones esta conectadas entre si por una red de comunicaciones, los
procesos en las distintas instalaciones tienen la oportunidad de intercambiar información.
Sistemas en Tiempo Real
Otra variante de los sistemas operativos es el sistema en Tiempo Real. Estos poseen restricciones
temporales bien definidas, por lo que el procesamiento debe llevarse a cabo dentro de los límites
definidos o el sistema fallara. Estas restricciones temporales dictaminan los recursos de los que
comúnmente se dispone en los sistemas de Tiempo Real. Por lo general, no hay ningún tipo de
almacenamiento secundario o es limitado, y en su lugar los datos se almacenan en la memoria a corto
plazo.
Sistemas Monousuario
Al reducirse los costos de hardware, cada vez se ha hecho mas factible contra con un sistema de
computación para un solo usuario. A este tipo de computadores se les conoce con el nombre de
computadores personales. Los dispositivos de E / S han cambiado, desapareciendo los tableros de
interruptores y los lectores de tarjetas y apareciendo los teclados y los ratones. Las impresoras de
líneas y perforadoras de tarjetas se han reemplazado por pantallas e impresoras pequeñas y veloces.
Los objetivos de los sistemas operativos han cambiado con el tiempo, en vez de tratar de maximizar la
utilización de la UCP y los periféricos, han optado por la comodidad y la rapidez de respuesta a los
usuarios.
Funcionamiento de la computadora
La computadora es una maquina destinada a procesar datos. Este procesamiento involucra dos flujos
de información: el de datos y el de instrucciones. Se parte del flujo de datos que han de ser
procesados. Este flujo de datos es tratado mediante un flujo de instrucciones, generado por la
ejecución de un programa, y produce el flujo de resultado. Para realizar esto, la computadora consta
de uno o más CPU’s y de una serie de controladoras de dispositivos conectadas a través de un bus
común que proporciona acceso a la memoria compartida. Antes de la ejecución del programa, este y
sus respectivos datos deben cargarse en memoria, lo cual constituye una secuencia que la
computadora realiza a una alta velocidad.
Cada controladora de dispositivo se encarga de un tipo específico de dispositivo. La CPU y las
controladoras de dispositivos pueden funcionar de forma concurrente, compitiendo por la memoria. Para
asegurar el acceso ordenado a la memoria, se proporciona una controladora de memoria, cuya
función es sincronizar el acceso a la misma.
Para que la computadora empiece a funcionar, por ejemplo, cuando se inicia o enciende, es necesario
que tenga un programa de inicio o arranque que ejecutar. Este programa de inicio o arranque se
almacena en una memoria ROM y permite la inicialización de todos los aspectos del sistema. Además,
debe saber como cargar el Sistema Operativo e iniciar su ejecución. Para conseguirlo el programa de
inicio debe localizar y cargar en memoria el núcleo del Sistema Operativo. Después, el Sistema
Operativo comienza ejecutando su primer proceso y espera a que se produzca algún suceso.
Los sistemas operativos modernos están controlados por medio de Interrupciones. Si no hay ningún
proceso que ejecutar, ningún dispositivo de E / S al que dar servicio y ningún usuario al que responder,
el Sistema Operativo debe permanecer inactivo esperando a que algo ocurra.
La ocurrencia de algún suceso normalmente se indica mediante una Interrupción, bien sea de
Hardware o de Software. El Hardware puede activar una interrupción en cualquier instante enviando una
señal a la CPU. El Software puede activar una interrupción, en este caso denominada Excepción,
solicitando un servicio del Sistema Operativo a través de la ejecución de una operación denominada
Llamadas al Sistema.
Cuando se interrumpe a la CPU, deja lo que esta haciendo e inmediatamente transfiere la ejecución a
una posición establecida, la cual posee la dirección de inicio de donde se encuentra la rutina que va a
atender la interrupción. Esta rutina, también denominada Rutina de Servicio, se ejecuta, y cuando
termina, la CPU reanuda la operación que estuviera haciendo. Además, la interrupción debe transferir el
control a la rutina de servicio apropiada a dicha instrucción. Para ello:
 Se convoca una rutina que examina la información de la interrupción.
 Esta rutina se encarga luego de llamar a otra rutina que procesa a la interrupción como tal.
Estructura de Almacenamiento
Cada sistema de almacenamiento proporciona las funciones básicas para guardar los datos y
mantenerlos hasta que sean recuperados en un instante posterior. Las principales diferencias entre los
distintos sistemas de almacenamiento están relacionadas con la velocidad, el coste, el tamaño y la
velocidad.
La amplia variedad de sistemas de almacenamiento en un sistema informático puede organizarse en
una jerarquía según la velocidad y el coste. Los niveles superiores son caros pero rápidos, y
generalmente están representados por memorias de tamaño relativamente reducido pero de alta
velocidad para almacenar la información que se esta utilizando en un momento determinado. A medida
que se desciende por la jerarquía, el coste disminuye mientras el tiempo de acceso a los datos
almacenados aumenta. En este tipo de almacenamiento, podemos encontrar dispositivos como los
discos, los cuales permiten altas cantidades de datos de forma permanente pero que son accedidos a
baja velocidad.
Además de diferenciarse en velocidad y en el coste, los distintos sistemas de almacenamiento pueden
ser o no volátiles.
Arquitectura de un Sistema Informático
Un sistema informático puede clasificarse de varias maneras. Una de estas clasificaciones se refiere a
la cantidad de procesadores de propósito general empleados:
 Sistemas con un solo procesador: la mayor parte de los sistemas operativos usan un solo
procesador. En un sistema de este tipo hay una CPU principal capaz de ejecutar un conjunto de
instrucciones de propósito general. Muchos sistemas disponen de procesadores de propósito
especial, como por ejemplo los encontrados en un disco o una tarjeta gráfica. Todos estos
procesadores de propósito especial ejecutan con conjunto limitado de instrucciones y no
ejecutan procesos de usuario. De esta forma se libera a la CPU principal del trabajo adicional
de ejecutar las tareas de estos dispositivos.
 Sistemas Multiprocesador: estos sistemas disponen de dos o más procesadores que se
comparten el acceso a memoria y dispositivos periféricos. Cada uno de ellos puede ejecutar un
programa, debiendo cada uno de ellos compartir el procesador. Estos presentan las siguientes
ventajas:

Mayor rendimiento: al aumentar el número de procesadores es de esperar que se realice
mas trabajo en menos tiempo. Cuando múltiples procesadores cooperan en una tarea,
cierta carga de trabajo se emplea en conseguir que todas las partes funcionen
correctamente. Esta carga de trabajo, mas la contienda por recursos compartidos, reducen
la ganancia de añadir procesadores adicionales. De esta forma, la mejora en velocidad
con N procesadores no es N, sino que es menor que N.

Economía de escala: estos sistemas pueden ser más baratos que los que tienen un solo
procesador, ya que pueden compartir periféricos y almacenamiento. Si varios programas
operan sobre el mismo conjunto de datos, es mas barato almacenar dichos datos en un
disco y que todos los procesadores lo compartan, que tener muchas computadoras, cada
una con un disco.

Mayor Fiabilidad: en muchas aplicaciones resulta crucial conseguir la máxima fiabilidad del
sistema informático. La capacidad de continuar proporcionando servicio proporcionalmente
al nivel de hardware sobreviviente se denomina Degradación Suave. Algunos sistemas
van más allá de esto, y se denominan sistemas tolerantes a fallos, dado que pueden sufrir
un fallo en cualquier componente y seguir operando. Para ello se requiere un mecanismo
que permita detectar, diagnosticar y posiblemente corregir el fallo.
Los sistemas multiprocesador pueden ser de dos tipos:
 Asimétrico: a cada procesador se le asigna una tarea específica. Un procesador maestro
controla el sistema y el resto espera a que este dé instrucciones. Es decir, el procesador
maestro planifica y asigna las tareas de los procesadores esclavos.
 Simétrico: bajo este régimen los procesadores operan bajo las mismas condiciones.
Operaciones del Sistema Operativo
Operación en Modo Dual
Para asegurar la correcta ejecución del Sistema Operativo, se debe distinguir entre dos niveles de
ejecución:
 Nivel de Usuario: en esta, la computadora solo ejecuta un subconjunto de las instrucciones
maquina, quedando prohibidas las demás.
 Nivel de Núcleo: es el más permisivo, ya que la computadora ejecuta todas sus instrucciones
sin ninguna restricción.
Cuando el sistema informático esta ejecutando una aplicación de usuario, el sistema se encuentra en
modo usuario. Sin embargo, cuando una aplicación de usuario ejecuta un servicio del sistema
Operativo, se debe pasar al nivel de Núcleo para atender la solicitud.
Cuando se arranca el Sistema Operativo, el hardware se inicia en modo o Nivel de Núcleo. El Sistema
Operativo se carga y se inicia las aplicaciones de usuario en el modo o Nivel de Usuario. Cuando se
produce una excepción o interrupción e hardware conmuta del modo Usuario al modo Núcleo.
En consecuencia, cuando el Sistema Operativo obtiene el control del computador, estará en modo
núcleo. El sistema cambia a modo Usuario antes de pasar el control a un programa de usuario.
Con el Modo Dual se busca proteger al Sistema Operativo de errores que pueden ser causados por el
usuario. Esta protección se consigue designando a las instrucciones de maquina como privilegiadas
para que se ejecuten solo en modo Núcleo.
Gestión de Procesos
El componente principal de un sistema operativo es el que se encarga de la gestión de Procesos. El
Proceso es el elemento central de un sistema Operativo, puesto que su función consiste en generar y
gestionar los procesos y en atender sus peticiones.
El proceso puede definirse como un programa en ejecución. De forma mas precisa, puede definirse
como la unidad de procesamiento gestionada por el Sistema Operativo. No hay que confundir Programa
con Proceso. Un programa es un conjunto de instrucciones mientras que el proceso surge cuando el
programa esta en ejecución.
El Sistema Operativo mantiene por cada proceso una serie de estructuras de información que permite
identificar las características de este así como los recursos que tiene asignados. Además, debe
encargarse de ofrecer una serie de actividades en lo que se refiere a la gestión de procesos:
 Crear y borrar los procesos
 Suspender y reanudar los procesos
 Proporcionar mecanismos para:
 La sincronización de procesos
 La comunicación de procesos
Dependiendo de la capacidad del sistema operativo para atender simultáneamente varios procesos y
usuarios, podemos encontrar:
 Sistemas Operativos Monotarea: solo permite que exista un proceso en cada instante
 Sistemas Operativos Multitarea: permite que coexistan varios procesos a la vez. Para ello, el
sistema operativo reparte el tiempo del procesador entra cada uno de ellos.
 Sistemas Operativos Monousuario: permiten un solo usuario a la vez.
 Sistemas Operativos Multiusuario: soporta varios usuarios trabajando simultáneamente desde
varios terminales. A su vez, cada usuario puede tener activos mas de un proceso
Gestión de Memoria
La memoria principal es fundamental en la operación de un sistema informático. Ésta, se encuentra
estructurada como una matriz de palabras o bytes cuyo tamaño se encuentra en el rango de cientos de
miles a miles de millones de posiciones. Cada palabra o byte tiene su propia dirección. La memoria es
un repositorio de datos rápidamente accesibles, accesibles por la CPU y los dispositivos de E / S. Como
ya se ha mencionado anteriormente, para que un programa pueda ser ejecutado por la CPU, sus datos
deben transferirse a la memoria principal. Una vez que terminado este proceso, se libera el espacio de
memoria ocupado por dichos datos y se declara disponible para que el próximo programa pueda ser
cargado y ejecutado.
Para mejorar tanto la utilización de la CPU como la velocidad de respuesta de la computadora frente a
los usuarios, las computadoras pueden mantener varios programas en memoria, lo que hace necesario
la creación de ciertos esquemas que permitan la correcta gestión de esta situación. La gestión de
memoria se encarga entonces de:
 Asignar memoria a los procesos.
 Proporcionar memoria a los procesos cuando lo soliciten y liberarla cuando así lo requieran
 Tratar los posibles errores de acceso a la memoria, evitando que unos procesos interfieran en la
memoria de otros.
 Controlar que partes de la memoria están actualmente en uso y por parte de quien.
Gestión de Almacenamiento
Para que el sistema informático sea cómodo para los usuarios, el sistema operativo proporciona una
vista lógica y uniforme del sistema de almacenamiento de la información. El sistema operativo abstrae
las propiedades físicas de los dispositivos de almacenamiento y define una unidad de almacenamiento
lógico denominada Archivo. De esta forma, se ofrece al usuario una visión lógica compuesta por una
serie de objetos (archivos y directorios) identificables por un nombre lógico sobre los que se puede
realizar una serie de operaciones, y una visión física que ha de incluir los detalles de cómo están
almacenados estos objetos en los periféricos correspondientes,
Los archivos son entonces, una colección de información relacionada entre sí bajo un mismo nombre.
Cada archivo tiene una información asociada que utilizan tano los usuarios como el sistema operativo.
Entre las informaciones mas usuales se pueden destacar las siguientes:
 Tipo de archivo
 Propietario del archivo: se refiere al identificador de usuario que creo el archivo.
 Tamaño del archivo
 Instantes importantes en la vida del archivo, tales como:
 Instante en que se creo
 Instante de la ultima modificación
 Instante del ultimo acceso
 Derechos de acceso al archivo (solo lectura, lectura – escritura, solo escritura)
Gestión del Almacenamiento Masivo
La memoria principal es demasiado pequeña para acomodar todos los datos y programas. Además, los
datos que guarda se pierden al desconectar la alimentación. Por estas razones, un sistema informático
debe proporcionar un almacenamiento secundario como apoyo a la memoria principal. El Sistema
Operativo se encarga de las siguientes actividades en lo que se refiere al almacenamiento masivo:
 Gestión del espacio libre
 Asignación del espacio de almacenamiento
 Planificación del dispositivo del almacenamiento masivo
Almacenamiento en Caché
El almacenamiento en caché es una técnica importante de los sistemas informáticos. Normalmente la
información se mantiene en algún sistema de almacenamiento, como por ejemplo la memoria principal.
Cuando se usa, esta información se copia de forma temporal en un sistema de almacenamiento mas
rápido, en este caso, la caché.
Cuando se necesita una información en especifico primero se comprueba si esta en caché. Si lo está, se
usa directamente dicha información de la caché; en caso contrario, se utiliza la información original,
colocando una copia en la caché bajo la suposición de que será utilizada nuevamente.
Protección y Seguridad
Si un sistema informático tiene múltiples usuarios y permite la ejecución concurrente de múltiples
procesos, entonces el acceso a los datos debe regularse. Para dicho propósito se emplean mecanismos
que solo puedan utilizar los recursos aquellos procesos que hayan obtenido la apropiada autorización
del sistema operativo. Por ejemplo, el hardware de direccionamiento de memoria asegura que un
proceso se pueda ejecutar dentro de su propio espacio de memoria, el temporizador asegura que
ningun proceso pueda obtener el control de la CPU sin después ceder el control. De esta forma se
evidencia que la integridad de los distintos dispositivos de hardware esta protegida.
Por tanto, protección es cualquier mecanismo que controle el acceso de procesos y usuarios a los
recursos de un sistema informático.
También se hace necesario garantizar la identidad de los usuarios y definir lo que cada uno de los
puede hacer. El primer término se denomina Autenticación, y su objetivo es determinar que un usuario
es quien dice ser. Para ello cada usuario contará con un identificador de usuario univoco y con el que
podrá iniciar una sesión en el sistema. El segundo término se refiere a los Privilegios, los cuales
especifican los recursos a los que puede acceder cada usuario. Estos privilegios, se basan en una lista
que especifica los grupos y usuarios que pueden acceder a un recurso (Información por Recurso), o en
la asociación de cada usuario a una lista de recursos a las que puede acceder (Información por Usuario)
Descargar