Introducción a Sistemas Operativos
Introducción a Sistemas Operativos
2. SISTEMA INFORMÁTICO
Conjunto de partes interrelacionadas, las cuales son: hardware + software + recursos humanos:
Hardware. Son los componentes físicos de un ordenador: placa, circuitos integrados, cables,
memoria, procesador, periféricos, etc.
Software. Son los componentes lógicos de un ordenador, los datos y los programas.
Recursos humanos. Personas que participan en la dirección, diseño, desarrollo, implantación y
uso de un sistema informático.
4. SOFTWARE
[Link] software. Sistema Operativo y aplicaciones
Software básico. Sistema Operativo.
o Comunica hardware y software.
o Controla los recursos de la máquina.
o Se verá extensamente en temas posteriores.
Software de aplicación.
o Programas y datos.
o Da utilidad real a la máquina. Hacen un trabajo concreto.
1
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
[Link] de programación
Permite el desarrollo del software:
Clasificación en función de la aproximación al lenguaje máquina (el que entiende la máquina,
ceros y unos).
o Lenguaje máquina.
Las instrucciones son una sucesión de ceros y unos agrupados en una palabra que
la máquina sabe interpretar.
La palabra se compone de código de operación y operandos.
Depende de la máquina.
Es un lenguaje complicado.
o Lenguaje intermedio o ensamblador.
Nemotécnicos (fáciles de recordar) para los códigos de operación.
Etiquetas para referirse a direcciones de memoria.
Dan lugar a una instrucción en lenguaje máquina.
También depende de la máquina.
Necesita de un ensamblador.
o Lenguaje de alto nivel.
Independientes de la estructura de la máquina. Transportables.
Una instrucción genera una o varias en lenguaje máquina.
Adaptados al lenguaje natural (inglés).
Son los utilizados habitualmente para programar.
Ejemplos: Java, C, PHP, etc.
Clasificación en función del paso del programa fuente a ejecutable (lenguaje máquina). Traduc-
ción.
o Ensamblados.
Traducen lenguaje ensamblador a lenguaje máquina.
Necesitan LINKAGE para sustituir direcciones simbólicas por direcciones reales y
añadir módulos especializados al programa.
Finalmente se reubican en memoria y se ejecutan.
o Interpretados.
Traducen un lenguaje de alto nivel a lenguaje máquina pero en vez de hacerlo en
bloque lo hacen instrucción por instrucción.
Cada ejecución del programa necesita traducción previa.
Ejemplos: PHP, Java Script, Visual Basic Script, etc.
o Compilados.
Al igual que los ensambladores traducen en bloque y en dos fases:
Análisis: Examinan el código eliminando errores sintácticos y generan un mó-
dulo intermedio llamado objeto.
Síntesis: Se genera el programa ejecutable igual que con los ensambladores
que ya puede ser ejecutado y no necesita de nuevas compilaciones (si fun-
ciona, claro).
Ejemplos: C, Java, Pascal, C++, etc.
o Compilados con máquina virtual o entorno de ejecución (ver el cuadro siguiente).
2
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Aplicación
Compuesta de código escrito en uno o varios lenguajes, p.e.
Visual Basic C# J#
MÁQUINA VIRTUAL
5. SISTEMA OPERATIVO
[Link]ón
Programa o conjunto de programas que sirven de intermediario entre el usuario/programa y el hardware del
ordenador.
El Sistema Operativo proporciona al resto de aplicaciones una máquina abstracta, es decir, oculta los
detalles concretos del ordenador y las complejidades del hardware. Para ello, proporciona una API (Applica-
tion Programming Interface, Interfaz de programación de aplicaciones), que es un conjunto de funciones que
pueden utilizar los programas de usuario.
Podemos ver esto con un ejemplo: Supongamos que tenemos un programa que escribe un mensaje en pantalla.
Necesita que la pantalla (un recurso hardware) muestre una información. Los programas no envían órdenes direc-
tamente al hardware, sino que llaman a funciones que ofrece del API del sistema operativo. Estas funciones son las
que envían las órdenes al hardware, teniendo en cuenta el software específico para gestionar ese hardware (el dri-
ver).
Es el compilador el que sustituye las instrucciones en un lenguaje concreto (ej.: printf) por la llamada a una
función del API del sistema operativo.
Por este motivo, los programas sólo funcionan en el SO (o sistemas) para los que se ha desarrollado.
La ocultación del hardware a las aplicaciones de los usuarios tiene dos objetivos:
Abstracción. La tendencia actual del software es la de dar una visión global y abstracta del or-
denador haciendo fácil su uso, ocultando por completo la gestión interna.
Seguridad. Existen instrucciones en la máquina que pueden detener el ordenador, interferir pro-
cesos, etc. Por ello, es necesario restringir determinadas operaciones a los usuarios creando di-
ferentes niveles de privilegio, de forma que cada usuario tenga protegida su información y pro-
cesos.
[Link] previos
Recurso es un componente hardware necesario para llevar a cabo un trabajo. En los ordenadores existen
cuatro tipos de recursos: el procesador, la memoria principal, el almacenamiento secundario y los periféricos
de entrada/salida.
Programa: Conjunto de instrucciones + estructuras de datos. Es un concepto estático. Proceso (tra-
bajo, JOB). Programa en ejecución. Concepto dinámico. Observaciones relacionadas con los conceptos de
programa y proceso:
Un programa puede dar lugar a distintos procesos (según los datos, etc.).
El sistema operativo va a gestionar los programas en ejecución (procesos).
4
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Con esta forma de trabajar no se obtenía un aprovechamiento adecuado del computador. Cuando la
CPU estaba trabajando, los dispositivos de E/S estaban inactivos, y cuando un dispositivo de E/S estaba ac-
tuando, las demás unidades, incluyendo la CPU, no trabajaban. Las grandes posibilidades operativas de la
CPU, en cuanto a velocidad de ejecución, no se aprovechaban adecuadamente.
Como resumen de esta primera etapa (1943 a 1955) podemos decir que la introducción y control de la
ejecución de programas se hacía manualmente, uno a uno: no existían sistemas operativos. Procesamiento
en serie.
El operador organizaba el trabajo incluyendo, por ejemplo, en una misma cinta todos los trabajos con
programas en FORTRAN, en otra los trabajos con programas en COBOL, etc. Cuando se pasaban al IBM-7090
los trabajos en FORTRAN, se montaba en otra unidad la cinta con el compilador y bibliotecas de FORTRAN,
cargándose en el computador cuando fuese necesario.
El procedimiento de funcionamiento descrito, desde el punto de vista del usuario-programador, es
mucho más sencillo que el de la primera etapa. Pero es necesario un control automático del flujo o cola de
trabajos. En efecto, este tipo de funcionamiento, denominado por lotes o batch, es posible gracias a la exis-
tencia de un sistema operativo; es decir, un programa de control. Este programa de control que planifica los
trabajos se suele denominar monitor.
Poco a poco los monitores se perfeccionaron, incluyendo rutinas de control de E/S, módulos controla-
dores del tiempo máximo de CPU (para evitar que un programa se esté ejecutando por tiempo indefinido, a
causa de un error de programación), módulo de contabilidad del uso del computador por los usuarios, etc.
5
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
o Gestión de E/S.
o Gestión del sistema de archivos.
o Control de programas de usuario.
Las funciones del nivel superior sólo pueden invocar a las de nivel inferior.
Máquina virtual. Se trata de un tipo de SO que presenta una interfaz a cada proceso, mostrando
una máquina que parece idéntica a la máquina real subyacente. Estos SO separan dos conceptos
que suelen estar unidos en el resto de sistemas: la multiprogramación y la máquina extendida.
El núcleo de estos SO se denomina monitor virtual y tiene como misión llevar a cabo la multi-
programación, presentando a los niveles superiores tantas máquinas virtuales como se soliciten.
La principal ventaja de esta estructura reside en que permite implementar varios tipos de SO
sobre cada máquina virtual. No obstante, presenta el problema de que los SO implementados
son disjuntos, lo cual complica enormemente la interacción, comunicación y compartición que
necesitan.
Unix MS-DOS
Hardware virtual Hardware virtual
HARDWARE
Cliente-Servidor. Es la más difundida. El núcleo se hace cada vez más descargado de código,
dotándole solamente de funciones críticas. Ahora son los programas los que realizan las funcio-
nes del SO. Los procesos pueden ser clientes y servidores. Además, el núcleo se encargaría de
establecer la comunicación entre los clientes y los servidores.
Orientada a objetos. El SO se ve como una colección de objetos en vez de funciones. Un objeto
sería un programa, las funciones del SO, etc. El núcleo del SO es el responsable del manteni-
miento de las definiciones de los tipos de objetos soportados y del control de los privilegios de
acceso a los mismos. Un ejemplo de SO que utilizaba esta estructura es el Windows NT de Mi-
crosoft.
forma inmediata. A veces, las respuestas que se obtienen proceden de sucesos externos al pro-
pio sistema, por ejemplo, aquellos sistemas empleados para el control de instalaciones (teleco-
municaciones, tráfico aéreo, etc.). Algunos ejemplos de estos sistemas serían: Solaris, Spectra,
etc.
[Link] su disponibilidad
En esta clasificación se encuentran:
Sistemas propietarios. Son aquellos que son propiedad intelectual de alguna empresa. Esto im-
plican que se necesitan licencias de uso para que el usuario ejecute el software y no se dispone
de acceso a su código fuente o, aun teniendo acceso a él, no se tiene derecho a modificarlo ni
distribuirlo. En este grupo se encuentra Windows.
Sistemas libres. Son aquellos que garantizan las 4 libertades del software:
o La libertad de usar el programa con cualquier propósito.
o La libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a las nece-
sidades que tuviera el usuario.
o La libertad de distribuir copias del programa con lo que se puede ayudar a otros usuarios.
o La libertad de mejorar el programa y hacer públicas dichas mejoras a otros usuarios de
modo que toda la comunidad se beneficie de ello.
Las libertades 2 y 4 requieren acceso al código fuente para estudiar y modificar dicho software, por lo
que al final el software libre es también software de código abierto.
El software libre suele estar disponible gratuitamente o al precio de coste de la distribución a través
de otros medios. Sin embargo, no es obligatorio que sea así, por lo tanto, no hay que asociar software libre
a software gratuito, ya que, conservando su carácter libre, podrá ser distribuido comercialmente (software
comercial).
Del mismo modo, el software gratuito puede incluir el código fuente, pero eso no quiere decir que se
pueda considerar como libre, a no ser que se garanticen los derechos de modificación y redistribución de las
versiones modificadas del programa.
Tampoco debe confundirse software libre con software de dominio público. Este último es aquél que
no requiere de licencia pues sus derechos de explotación pertenecen a todos por igual y cualquiera puede
hacer uso de él, siempre con fines legales y consignando su autoría original.
9
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
En concordancia con estas funciones principales, es posible analizar la estructura de un sistema ope-
rativo en cinco niveles. Los primeros dos niveles entrarían dentro de la parte del sistema operativo depen-
diente del hardware, el resto de los niveles pertenecen a la parte portable del mismo (véase la figura mos-
trada a continuación).
Cada uno de estos niveles se comunica con el inmediatamente inferior y superior coordinando sus
funciones.
Nivel 1. Gestión del procesador. En este nivel se encuentra el Kernel, o núcleo, que es la parte
del sistema operativo encargada de la gestión de la CPU. Cuando arranca el ordenador se carga
en memoria y permanece allí realizando las siguientes funciones:
o Comunicación y conmutación de procesos. Controla los procesos activos, trasladando el
control de CPU de un proceso y guardando el estado de un proceso. El planificador de
procesos realiza la asignación de CPU a cada uno de los procesos.
o Control de interrupciones.
o Manejo de condiciones de error.
Nivel 2. Gestión de memoria. Es el encargado de repartir la memoria disponible entre los recur-
sos. Las acciones principales son:
o Asignación y liberación de memoria.
o Control de violación de acceso a zonas no permitidas de memoria.
Nivel 3. Gestión de procesos. Es el encargado de la creación y destrucción de procesos, inter-
cambio de mensajes y detección y arranque de los mismos.
10
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
11
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
nada a sistemas operativos, también puede afectar a otro tipo de software, aunque el software
comprado bajo este tipo de licencia implica la propiedad del mismo por parte del que lo compra,
los fabricantes pueden poner ciertas limitaciones a su uso, como el número máximo de veces
que se puede reinstalar. Los programas adquiridos bajo este tipo de licencia no se pueden ven-
der ni ceder a terceros, salvo en las mismas condiciones en las que se compraron (es decir, como
parte de un equipo).
Licencias Retail. Son las versiones de venta de software. En este caso, el programa es de la en-
tera propiedad del usuario, pudiendo éste cederlo libremente a terceros o venderlo.
Licencias por volumen. Es un tipo de licencia de software destinado a grandes usuarios (empre-
sas), normalmente bajo unas condiciones similares a las de las licencias OEM, aunque sin estar
supeditadas a equipos nuevos. Básicamente, se trata de estipular un determinado número de
equipos que pueden utilizar el mismo código de licencia, quedando el fabricante de dicho soft-
ware autorizado para hacer las comprobaciones que considere oportunas para ver que las licen-
cias que se están utilizando son las adquiridas. Normalmente, estas licencias se venden en pa-
quetes de X número de licencias (por ejemplo, en paquetes de 25 licencias como mínimo). Este
tipo de licencia no se puede ceder a terceros, ni total ni parcialmente.
Licencias Copyleft. Este tipo de licencia permite ejercer el derecho de autor permitiendo la libre
distribución de copias y versiones modificadas de una obra u otro trabajo, exigiendo que los
mismos derechos sean preservados en las versiones modificadas. Hay que hacer constar que el
titular de los derechos de autor (copyright) de un software bajo licencia Copyleft puede también
realizar una versión modificada bajo su copyright original y venderla bajo cualquier licencia que
desee, además de distribuir la versión original como software libre. Esta técnica ha sido usada
por una serie de empresas que realizan software libre (por ejemplo mySQL).
Multilicencia. Con este tipo de licencias, una obra se puede publicar bajo los términos de varias
licencias. De esta manera, terceras personas pueden reproducir, distribuir, comunicar pública-
mente, interpretar y transformar, por cualquier medio, la obra, en cualquier momento o lugar,
licenciando o multilicenciando, según sea el caso, la obra original o la obra derivada, bajo los
términos de una de las licencias o bajo los términos de un subconjunto de ellas, sujeto a las
condiciones particulares que recojan las definiciones de cada una de las licencias.
13
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Las transiciones entre cada uno de estos estados también están definidas por el sistema operativo y
se producirán:
Transición A. Ocurre cuando un programa que está en ejecución necesita algún recurso, señal,
dato, etc., para poder seguir ejecutándose.
Transición B. Cuando un programa o proceso ha utilizado el tiempo asignado por la CPU para su
ejecución y tiene que dejar paso al siguiente proceso.
Transición C. Cuando el proceso que está preparado pasa a ser el proceso en ejecución, es decir,
cuando al proceso le llega una nueva disposición del tiempo de CPU para poder ejecutarse.
Transición D. Cuando el proceso pasa de estar bloqueado a estar preparado, es decir, cuando el
proceso recibe la orden o señal o dato que estaba esperando, en ese momento ya solo le falta
que le asignen tiempo de CPU para ejecutarse. Pasa a estado preparado, a esperar el turno de
tiempo de CPU y posteriormente al estado de ejecución.
El esquema anterior de procesos es muy teórico, también se habla de modelos más simples como el
de 2 estados (en Ejecución o No Ejecución) o el de 5 estados (Nuevo, Ejecución, Listo o Preparado, Bloqueado
y Terminado). En realidad, la situación de los procesos es mucho más compleja que lo aquí explicado.
Tiempo de espera (E) = tiempo que un proceso ha permanecido en estado preparado (no está
utilizando la CPU).
Tiempo de finalización (F) = tiempo transcurrido desde que un proceso comienza a existir hasta
que finaliza. F = E + t (t = tiempo de CPU del proceso).
Penalización (P) = (E + t)/t; F / t. Es una medida adimensional que se puede aplicar homogénea-
mente a los procesos independientemente de su longitud.
En general, hay que maximizar los dos primeros parámetros y minimizar los tres últimos. Sin embargo,
estos objetivos son contradictorios. El dedicar más tiempo de CPU a los usuarios se hace a coste de llamar
menos al algoritmo de planificación (menos cambios de proceso), y de simplificarlo. Esto provoca que la CPU
se reparta menos equitativamente entre los procesos, en detrimento de los últimos tres parámetros.
Así pues, los algoritmos de planificación del SO se elegirán dependiendo de los objetivos del sistema.
En los sistemas por lotes suele primar el rendimiento del sistema, mientras que en los sistemas interactivos
es preferible minimizar, por ejemplo, el tiempo de espera.
Ejemplo:
En a), el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados.
En b), P7 se bloquea (ya sea al realizar una E/S u otra causa) y P2 pasa a ocupar la CPU.
En c), ocurre un evento (finalización de la operación de E/S, etc.) que desbloquea a P7. Esto lo vuelve listo,
pasando al final de la cola de procesos listos.
Características:
No apropiativo.
Es justo.
Los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los
importantes.
Es predecible.
No es válido para entornos interactivos, ya que no garantiza buenos tiempos de respuesta (un
proceso largo puede impedir que se ejecuten los otros durante mucho tiempo).
El rendimiento varía mucho en función de que proceso llega primero.
Características:
No apropiativo.
Se consigue el tiempo de espera óptimo.
Mejora mucho el tiempo de finalización de los procesos cortos.
La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de
finalización promedio.
Se puede demostrar que este algoritmo obtiene el mejor tiempo medio de finalización. Para ello,
consideremos el caso de cuatro ráfagas, con tiempos de ejecución de a, b, c y d. La primera ráfaga termina
en el tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalización es
(4a+3b+2c+d)/4. Es evidente que a contribuye más al promedio que los demás tiempos, por lo que debe ser
la ráfaga más corta, b la siguiente, y así sucesivamente. El mismo razonamiento se aplica a un número arbi-
trario de ráfagas.
No obstante, este algoritmo sólo es óptimo cuando se tienen simultáneamente todas las ráfagas.
16
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Ejemplo 1:
Ejemplo 2: la siguiente figura representa un ejemplo más largo de la ocupación de la CPU utilizando el
algoritmo round robin.
Ejemplo de Round-Robin
El rendimiento de este algoritmo depende del valor del Quantum. Entonces, ¿debe el Quantum ser
pequeño o grande?, ¿fijo o variable?, ¿el mismo para todos los usuarios o debe determinarse por separado
17
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
para cada uno? El ideal es aquel que acapara el 80% de un proceso corto. Si el Quantum es demasiado pe-
queño se perderá mucho tiempo, ya que la rutina de asignación empleará mucho tiempo. Si por el contrario,
el Quantum es muy alto, se convierte en FIFO.
Características:
Apropiativo.
Equitativo.
Este algoritmo tiene como finalidad el proporcionar un buen índice de respuesta tanto para los
procesos cortos como para los largos.
18
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
asignado esa prioridad. El tiempo de ejecución del procesador se irá destinando, en primer lugar, de forma
secuencial a los procesos de mayor nivel. Terminados éstos, se ejecutarán los procesos de nivel inferior, y así
sucesivamente, hasta llegar a los procesos de nivel más bajo.
Si los procesos no llegan al mismo tiempo, entonces puede ocurrir que un proceso posterior tenga una
prioridad más alta que el que se está ejecutando. En este caso el planificador actuará de una manera o de
otra dependiendo de si es apropiativo o no. Cuando las prioridades entre procesos sean iguales, se aplicará
FIFO.
Existen otros algoritmos muy conocidos, además de los citados, pero éstos son los más significativos.
En el caso de los procesos cooperantes, el SO debe estar diseñado de forma que se garantice la sincro-
nización de los procesos, de forma que los resultados sean correctos con independencia del orden en que se
ejecuten.
Para ello, en los procesos se define una sección crítica, que es una sección de código en la que se
realizan operaciones que tiene que ser ejecutada completamente antes de que se ejecute otro proceso. El
SO tiene que garantizar la exclusión mutua sobre las secciones críticas de los procesos. Además, un proceso
no puede “bloquearse” en su sección crítica porque estará bloqueando la sección crítica de otros procesos
en ejecución.
12.6. Bloqueos
La mayoría de los recursos que existen en cualquier computador sólo pueden utilizarse por un proceso a la
vez. Basta pensar, por ejemplo, en una impresora, no es posible que dos procesos hagan uso al mismo tiempo
de este dispositivo, el resultado sería catastrófico.
Sin embargo, en un sistema operativo multiprogramado, la situación anterior puede darse en multitud
de ocasiones y el sistema operativo debe encargarse de que esto no ocurra, otorgando acceso exclusivo a los
recursos del sistema susceptibles de ser accedidos por más de un proceso al mismo tiempo.
No obstante, la apropiación de un dispositivo de E/S para uso exclusivo puede provocar, a su vez, pro-
blemas graves que el sistema operativo también debe encargarse de resolver.
Imaginemos dos procesos que desean imprimir un archivo grande situado en un disco al mismo
tiempo. El proceso A solicita en uso exclusivo la impresora, mientras que el proceso B solicita el uso exclusivo
del disco. El proceso A no puede comenzar la impresión porque no tiene acceso al disco, pero no libera la
impresora. Mientras tanto, el proceso B no inicia la impresión, ya que no tiene acceso a la impresora, pero
no libera la apropiación del disco. Se dice que los procesos se han interbloqueado y permanecerán así para
siempre si el sistema operativo no se encarga de solucionarlo. A este problema también se le conoce con el
nombre de abrazo mortal.
19
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
El interbloqueo de procesos se produce cuando un proceso espera un evento que sólo puede ser pro-
vocado por otro proceso del conjunto. Los procesos seguirán esperando, y ninguno de ellos realizará ninguna
acción hasta que otro libere algún recurso, por lo que se entra en un bucle de espera infinito.
Los diseñadores de SO emplean distintas técnicas para enfrentarse al problema de los bloqueos:
Algoritmo del avestruz. Es decir, meter la cabeza bajo tierra e ignorar el problema. Si después
de estudiar la probabilidad de bloqueos en el sistema, se llega a la conclusión de que ésta es
muy baja (del orden de un bloqueo cada varios años), es posible que los programadores decidan
no perder el tiempo en implementar técnicas de detección y corrección de bloqueos.
Evitarlos. Mediante un estudio cuidadoso de la asignación de recursos, el SO puede conseguir
que nunca se produzcan.
Detección y recuperación. Los bloqueos se producen, pero el sistema operativo se encarga de
detectarlos y recuperarse del bloqueo.
Los programas y datos necesitan estar en la memoria principal para ser ejecutados. Los programas o
datos que no se necesiten de inmediato pueden guardarse en la memoria secundaria hasta que se necesiten,
y en ese momento se transfieren a la memoria principal para ser ejecutados o referenciados. Los soportes
de memoria secundaria, como cintas o discos, son en general menos caros que la memoria principal, y su
capacidad es mucho mayor. Normalmente, es mucho más rápido el acceso a la memoria principal que a la
secundaria.
En los sistemas con varios niveles de memoria hay muchas transferencias constantes de programas y
datos entre los distintos niveles. Estas transferencias consumen recursos del sistema, como tiempo de la
CPU, que de otro modo podrían utilizarse provechosamente.
un nuevo programa para colocarlo en la memoria? ¿Se coge el programa cuando el sistema lo necesita, o se
intenta anticiparse a las peticiones del sistema? ¿En qué lugar de la memoria principal se coloca el siguiente
programa por ejecutar? ¿Se colocan los programas lo más cerca posible unos de otros en los espacios dispo-
nibles de la memoria principal para reducir al mínimo el desperdicio de espacio, o se colocan lo más rápido
posible para reducir el tiempo empleado en tomar la decisión?
Los sistemas actuales son en su mayor parte sistemas con almacenamiento virtual, muchas de las for-
mas de gestión estudiadas en este tema tienen principalmente valor histórico, pero sientan las bases de los
sistemas actuales.
PROTECCIÓN
En general, los sistemas operativos monousuarios de monoprogramación (muy comunes en las microcompu-
tadoras) no tienen protección de la memoria. Por lo tanto, el único proceso de usuario que existe en la me-
moria, puede modificar posiciones de memoria pertenecientes al sistema operativo, esto provocaría errores
al ejecutarse la zona modificada. La protección se puede realizar mediante un registro de límite integrado
en la CPU. Si se tiene un esquema como el de la figura (b) el registro de límite contendrá la dirección de inicio
de carga del SO. El hardware, en tiempo de ejecución, verifica que las direcciones generadas por el proceso
de usuario no son superiores al valor del registro de límite. En caso de ser superior, el proceso de usuario
intenta acceder al SO, esto provoca una interrupción hardware que gestiona el SO, normalmente eliminando
al proceso.
21
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
En primer lugar, hay que llevar un control de las zonas de memoria ocupadas por los procesos.
Así, cuando un nuevo proceso entre en la memoria se le asignará una zona que estaba libre.
Otro problema a resolver viene dado por el hecho de que en el momento de escribir un pro-
grama no se sabe en qué zona de memoria se ubicará, siendo posible que durante la vida de un
proceso éste cambie varias veces de emplazamiento.
Habrá que tener en cuenta, también, la protección de las zonas de memoria ocupadas por los
procesos, máxime en sistemas multiusuario donde los procesos pueden pertenecer a distintos
usuarios.
En lo que resta de este apartado, y en el siguiente, se estudiarán varias formas de gestión de la memo-
ria utilizadas en sistemas de multiprogramación.
FRAGMENTACIÓN INTERNA
Una última observación: cuando un proceso se introduce en una partición, lo más probable es que su tamaño
no sea el mismo (es decir, sea algo menor) que el de la partición. Esto origina un problema de desperdicio de
memoria conocido como fragmentación interna.
22
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
La asignación de memoria cambia cuando el proceso llega o sale de la memoria. Las zonas sombreadas son
memoria libre.
proceso de crecimiento deberá ser desplazado a un hueco de la memoria lo suficientemente grande; o bien,
habrá que eliminarlo.
ESTRATEGIAS DE COLOCACIÓN
Cuando en un sistema de particiones dinámicas se debe asignar memoria principal para un nuevo proceso, y
los procesos y huecos se mantienen en una lista ordenada por direcciones, se pueden utilizar diversos algo-
ritmos para la elección del hueco de memoria donde ubicar al proceso. Supongamos que se conoce la canti-
dad de memoria por asignar:
El algoritmo más simple es el primero en ajustarse (first fit). Se revisa la lista de huecos hasta
encontrar un espacio lo suficientemente grande. El espacio se divide entonces en dos partes,
una para el proceso, y otra para la memoria no utilizada, excepto en el caso poco probable de
un ajuste perfecto. Este algoritmo es rápido, ya que busca lo menos posible.
Otro algoritmo es el mejor en ajustarse (best fit), el cual busca en toda la lista, y elige el mínimo
hueco suficientemente grande como para ubicar el proceso. Este algoritmo intenta que los hue-
cos que se creen en la memoria sean lo más pequeños posible.
Un algoritmo que enfrenta el problema de la manera contraria es el del peor ajuste (worst fit).
En este algoritmo se elige el hueco más grande disponible. De esta forma aumenta la probabili-
dad de que el nuevo hueco creado sea lo suficientemente grande como para albergar un pro-
ceso.
Aunque parezca que el algoritmo del mejor ajuste desperdicia menos memoria, en la práctica no es
así, ya que al crear huecos demasiado pequeños, éstos no pueden ser utilizados por procesos.
EL INTERCAMBIADOR DE UNIX
Algunos sistemas UNIX utilizaban el intercambio en un sistema de particiones dinámicas. El movimiento de
procesos entre la memoria principal y el disco lo realizaba el intercambiador (swapper). El intercambio de la
memoria principal al disco (swap out) se iniciaba cuando el SO necesitaba memoria libre y estaba toda ocu-
pada.
Además, cuando había que recuperar un proceso presente en el disco desde hace mucho tiempo (swap
in) con frecuencia se necesitaba sacar a otro proceso de memoria a disco para disponer de espacio para el
primero.
El intercambiador elegía una víctima al examinar los procesos bloqueados en espera de algo (por ejem-
plo, una entrada del terminal). Es mejor sacar a un proceso bloqueado que sacar a uno preparado. Si existían
varios procesos bloqueados ubicados en la memoria principal se elegía a uno cuya combinación de prioridad
24
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
y tiempo de residencia en memoria principal fuera más desfavorable. Así, un buen candidato era un proceso
que hubiera permanecido en la memoria durante mucho tiempo, aun cuando durante este tiempo hubiera
realizado E/S. Si no se dispone de procesos bloqueados, entonces se elegía a un proceso listo en base a los
mismos criterios.
Cada pocos segundos, el intercambiador examinaba la lista de procesos intercambiados para ver si
alguno estaba listo para su ejecución. En caso de que existiera alguno, se seleccionaba a aquel que hubiese
permanecido en el disco durante mucho tiempo. A continuación, el intercambiador verificaba si se podía
hacer el intercambio con la memoria principal (swap-in).
25
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Se han desarrollado varios métodos para asociar las direcciones virtuales con las reales. Los mecanis-
mos de traducción dinámica de direcciones convierten las direcciones virtuales en direcciones reales en
tiempo de ejecución. Todos estos sistemas tienen la propiedad de que las direcciones contiguas en el espacio
de direcciones virtuales de un proceso no son necesariamente contiguas en la memoria principal. Esto se
conoce como contigüidad artificial (ver la figura). Debe quedar claro que toda esta correspondencia es trans-
parente al programador, que escribe sus programas en términos de direcciones consecutivas de memoria
virtual.
[Link]. Paginación
La paginación es una técnica que consiste en dividir el espacio de direcciones virtuales en páginas del mismo
tamaño. El tamaño de las páginas será un valor potencia de dos.
La memoria principal se divide también en marcos o páginas físicas del mismo tamaño que las páginas.
MECANISMO DE PAGINACIÓN
El mecanismo de paginación cumple dos funciones:
Llevar a cabo la transformación de una dirección virtual a física, o sea, la determinación de la
página a la que corresponde una determinada dirección de un programa, así como del marco, si
lo hay, que ocupa esta página.
Cuando haga falta, transferir páginas de la memoria secundaria a la memoria principal, y de la
memoria principal a la memoria secundaria cuando ya no sean necesarias.
La primera función se aborda a continuación, y se deja para el siguiente punto la segunda función.
27
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
FALLOS DE PÁGINA
Como el número de marcos (cantidad de memoria real) asignados a un proceso será normalmente menor
que el número de páginas que éste utiliza, es muy posible que una dirección del programa haga referencia a
una página que no se encuentre en aquel momento en la memoria principal. En este caso, el elemento co-
rrespondiente de la tabla de páginas estará vacío, provocando el hardware una interrupción de “fallo de
página” si se intenta acceder a ella. Esta interrupción provoca que el control pase al software (al sistema
operativo), para que éste inicie la transferencia de la página que falta desde la memoria secundaria a la me-
moria principal, y actualice de acuerdo con ello la tabla de páginas.
Si no existe ningún marco vacío en el momento en que ocurre un fallo de página, hay que guardar en
la memoria secundaria alguna otra página con el fin de hacer sitio a la nueva. La elección de la página que
habrá que sacar es el resultado de un algoritmo de reemplazo de página.
[Link]. Segmentación
En esta técnica el programa se divide en segmentos que se diferencian de las páginas en que su tamaño no
es fijo, aunque sí existe un tamaño máximo de segmento.
Las direcciones constan de un número de segmento y un desplazamiento. Para gestionarlos, se usa
una tabla de segmentos para cada proceso, donde almacenamos la dirección de comienzo y el tamaño de
cada uno de ellos, y otra tabla de segmentos libres, para asignárselos a los procesos que entren en ejecución.
Estos segmentos no tienen por qué ser contiguos. Este sistema tiene que contar con la colaboración del pro-
gramador, que debe organizar sus programas dividiéndolos en segmentos. La traducción de direcciones de
los segmentos es más compleja que la de páginas.
28
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Los dispositivos de entrada/salida (I/O) forman junto con la CPU y la memoria los elementos más im-
portantes del ordenador. Uno de sus objetivos principales es la eficiencia en las operaciones de entrada/sa-
lida, minimizando el trabajo a realizar por la CPU. Las velocidades de los dispositivos de I/O son muy variadas:
Dispositivos lentos (ratón, teclado).
Dispositivos medios (impresora).
Dispositivos rápidos (red, disco).
Para acomodar las velocidades se usan circuitos de interfaz. Las Unidades o interfaces de Entrada/Sa-
lida se encargan de la comunicación entre la CPU y el dispositivo.
Conexión de las unidades o interfaces de entrada/salida
Conexión mapeada en memoria:
o El circuito de interfaz se conecta como si fuera memoria.
o Se accede a los registros leyendo o escribiendo una variable en una posición de memoria
concreta.
Conexión mediante puertos de entrada/salida:
29
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
En cuanto al Hardware de Entrada/Salida, los dos problemas que han de resolverse por parte del sis-
tema operativo son:
Cómo realizar el direccionamiento del periférico.
Cómo realizar la transferencia de la información.
30
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Para todo esto, después de ser procesada, la información tiene que almacenarse de forma permanente
en los soportes externos de almacenamiento. Cada sistema operativo almacena la información de una forma
estructurada utilizando su propio Sistema de Archivos (File System) y cada uno de ellos hace una gestión
diferente del espacio de almacenamiento, lo cual dependerá de si el sistema es mono o multiusuario, mono
o multitarea, etc.
Windows 95, 98 utiliza FAT16 y FAT32; Windows NT y 2000 y sus descendientes (como XP) el NTFS;
OS/2 el HTFS; UNIX el S5; LINUX el EXT2/EXT3/EXT4 y otros. Estos sistemas no son siempre compatibles entre
sí. Un Sistema de Archivos UNIX puede ver un Sistema de Archivos FAT, pero no a la inversa. Y Windows NT
es compatible con el Sistema FAT16 pero no con el FAT32.
Los Sistemas de Archivos tienen sus propias normas en la nomenclatura (por ejemplo MS-DOS 8 carac-
teres, UNIX distingue entre mayúsculas y minúsculas, etc.).
Los archivos disponen de una serie de atributos que es una información adicional al contenido del
mismo con la que el archivo queda caracterizado (como nombre, fecha de creación, fecha de modificación,
longitud, etc.).
De todos los atributos, lo más importantes son los que indican qué tipo de operaciones o qué tipo de
usuarios pueden usarlos o no. Dependiendo del tipo de sistema operativo, los atributos de protección pueden
ser de mayor o menor importancia:
Sólo Lectura.
Oculto.
Sistema.
Modificable.
Ejecutable.
Etc.
Los atributos de protección determinarán el tipo de operación que se puede realizar sobre ellos (crear,
eliminar, ejecutar, escribir, renombrar, etc.).
TIPOS DE ARCHIVOS
Se pueden clasificar en 3 tipos:
Ordinarios (Regulares, Standard). Son los que contienen información del usuario como progra-
mas, textos, gráficos, registros de datos, etc.
Directorios. Son archivos contenedores que contienen referencias a otros archivos Ordinarios o
a otros Directorios. Se usan para albergar estructuras de archivos. Todos los sistemas operativos
utilizan una estructura jerárquica para almacenar sus archivos. Para ello, crean compartimentos
(directorios) para poder tener los archivos clasificados. En casi todos los sistemas operativos
existe un directorio principal llamado Directorio Raíz, del que depende el resto de directorios y
subdirectorios y los otros archivos (en el sistema IBM OS-400 no).
Archivos Especiales (UNIX). También llamados archivos de dispositivos, contienen información
específica correspondiente a los dispositivos periféricos tales como impresoras, Discos, etc.
UNIX trata a los dispositivos de Entrada y Salida como archivos, y todos los dispositivos del Sis-
tema (impresora, disquete, terminal) tienen un archivo distinto.
31
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.
Los archivos se crean y borran frecuentemente. Como sólo hay una cantidad limitada de espacio en
disco, es necesario retomar el espacio de los archivos borrados para archivos nuevos.
Para ello, existen dos técnicas de gestión del espacio libre en disco:
1. Lista de bloques libres; es decir, una lista de los bloques del disco sin usar. Esta lista se guarda
en el disco y cada vez que un fichero requiera espacio mira la lista y se asignan los bloques libres
necesarios. Cuando un fichero se destruye, los bloques se colocan en la lista (van numerados).
2. Utilizando un mapa de bits. Cada bloque del disco tiene asociado un bit (0 si está libre, 1 si está
ocupado, o viceversa). Es el más eficaz y el más utilizado.
32