0% encontró este documento útil (0 votos)
52 vistas32 páginas

Introducción a Sistemas Operativos

El documento introduce los conceptos básicos de los sistemas informáticos, incluyendo definiciones de informática, hardware, software y recursos humanos. Explica que un sistema operativo es un software fundamental que sirve de intermediario entre el usuario, las aplicaciones y el hardware, proporcionando una máquina abstracta y administrando los recursos de forma eficiente. También define conceptos clave como programa, proceso, recursos y procesador.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
52 vistas32 páginas

Introducción a Sistemas Operativos

El documento introduce los conceptos básicos de los sistemas informáticos, incluyendo definiciones de informática, hardware, software y recursos humanos. Explica que un sistema operativo es un software fundamental que sirve de intermediario entre el usuario, las aplicaciones y el hardware, proporcionando una máquina abstracta y administrando los recursos de forma eficiente. También define conceptos clave como programa, proceso, recursos y procesador.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos

INFORMÁTICOS. SISTEMAS OPERATIVOS.

TEMA 1. Introducción a los


sistemas informáticos.
Sistemas operativos.
1. INFORMÁTICA. DEFINICIÓN
 La informática es la ciencia técnica aplicada al tratamiento automático de la información me-
diante ordenadores.
 Una computadora u ordenador es una máquina que lee, almacena y manipula información.
 Antes ligada al ámbito militar y científico. Hoy abierta más al ocio y el uso personal.

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.

3. COMPONENTES LÓGICOS. DATOS. SOFTWARE


Componentes lógicos: Datos, Sistema Operativo y aplicaciones.
 Datos. Para que un ordenador funcione necesita información que se representa en forma de
datos. Para manejar esos datos necesita de programas o aplicaciones informáticas.
 También un sistema informático necesita de otro software fundamental o de base, que se com-
pone de datos y programas, llamado Sistema Operativo. Se define como componente software
que sirve para que la información pueda ser procesada por las aplicaciones informáticas me-
diante el uso de los componentes físicos del Sistema Informático.
 Aplicaciones informáticas. Son los programas que maneja el usuario del 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.

o Los programas están diseñados en un lenguaje de programación y están compuestos de


instrucciones que ejecuta la máquina.
o Se clasifica en estándar (adquirido en el mercado con características predeterminadas
para solucionar un problema concreto) o personalizado (diseñado e implementado por
programadores cubriendo las necesidades específicas del usuario).

[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#

Ensamblado1 Ensamblado 2 Ensamblado 3

MSIL (Código intermedio)

MÁQUINA VIRTUAL

NET. FRAMEWORK (PPC, Pentium,..)


Es específico para cada máquina. Necesario para el entorno de ejecución.

5. SISTEMA OPERATIVO
[Link]ón
Programa o conjunto de programas que sirven de intermediario entre el usuario/programa y el hardware del
ordenador.

Tiene dos objetivos:


1. Proporcionar a los programas de usuario una máquina abstracta.
2. Administrar eficientemente los recursos del ordenador.

EL SISTEMA OPERATIVO COMO MÁQUINA ABSTRACTA


El hardware y el software del ordenador se estructuran en forma jerárquica, en niveles, de forma que cada
nivel utiliza los servicios del nivel inmediatamente inferior para prestar unos servicios mejorados al nivel
inmediatamente superior.
3
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

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).

Procesador (CPU): ente capaz de ejecutar procesos.

6. EVOLUCIÓN EN LOS SISTEMAS OPERATIVOS


La evolución de los Sistemas Operativos está íntimamente ligada a la de las generaciones de ordenadores:

[Link] generación: 1945 – 1955


Desde la construcción de los primeros computadores (1943) hasta aproximadamente el año 1955 no existen
sistemas operativos. El usuario que deseaba utilizar un ordenador debía apuntarse en un cuaderno de reser-
vas de horas. Cuando llegada su turno, el programador, que hacía también las funciones de operador, intro-
ducía su programa (con conmutadores) y esperaba a que poco a poco fuesen escribiéndose en una impresora
los resultados. El programa se daba a través de tarjeta perforada y se redactaba a mano en lenguaje máquina.
Los datos también se suministraban al computador con tarjetas perforadas.
Posteriormente, se idearon los ensambladores. Después de ensamblar el programa, el programa ob-
jeto obtenido (en lenguaje máquina) se montaba manualmente. Es decir, se juntaba con otros paquetes de
tarjetas que contenían las funciones utilizadas en el programa y no definidas en el mismo (multiplicación o
raíz cuadrada, por ejemplo). El paquete total de tarjetas, por último, se ejecutaba con los datos del programa.
En resumen, la máquina, durante su utilización, estaba totalmente bajo el control directo del usuario.

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.

[Link] etapa: 1956 – 1965


En la segunda etapa, en vez de utilizar sólo lectoras de tarjetas e impresoras, se utilizan soportes de informa-
ción intermedios, como cinta magnética. Inicialmente, en cinta magnética sólo se encontraban los traducto-
res, funciones de biblioteca, etc., necesitándose dar por tarjeta únicamente el programa y datos del usuario.
Posteriormente, se dio un paso importante. Se utilizó un ordenador periférico para gestionar las en-
tradas/salidas, y el ordenador principal (más potente) únicamente leía/escribía sobre cinta magnética. Este
era el caso del computador IBM-7090, que se utilizaba en conjunción con un IBM-1401.
El sistema era gestionado por personas especializadas u “operadores”, que eran quienes manipulaban
los computadores. El IBM-1401 contenía programas, suministrados por el fabricante, que volcaban sobre
cinta magnética los programas en tarjeta de los usuarios. En la cinta se tenían así grabadas imágenes de
tarjeta. Posteriormente, y una vez que en una cinta había una cola de trabajos, el operador desmontaba la
cinta del 1401 y la montaba en el 7090. El 7090 leía los programas de la cinta, y los resultados a imprimir los
escribía en otra cinta magnética, obteniéndose así por cada programa un archivo de impresión grabado en
cinta. El operador, con cierta regularidad, montaba la cinta de archivos de impresión en el 1401, y éste los
iba escribiendo por las impresoras.

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.

Esta segunda etapa la podríamos denominar de procesamiento de trabajos en lotes, o también de


utilización de dispositivos de E/S fuera de línea.

[Link] y cuarta etapa: 1966 – 1981


La tercera etapa se caracteriza fundamentalmente por el perfeccionamiento del sistema de trabajos por lo-
tes, el desarrollo de sistemas operativos en multiprogramación que permite a una máquina estar realizando
varios procesos a la vez; los usuarios pueden trabajar en forma interactiva/conversacional y se introduce el
concepto de memoria virtual.
En un sistema de tipo multiusuario, existen varios usuarios con un terminal en línea (usuarios interac-
tivos), se llama sistema de tiempo compartido. En estos sistemas, se divide el tiempo del procesador central,
y de los demás recursos del ordenador, de forma que cada usuario tiene la ilusión de que todo el ordenador
se le dedica exclusivamente a él, al recibir unos tiempos de respuesta aceptables. En un sistema de tiempo
compartido, los usuarios suelen ejecutar programas cortos (por ejemplo, compilar un programa), frente a los
programas largos (por ejemplo, ordenar una cinta de un millón de datos) que se suelen dar en los sistemas
batch.
Hay que indicar que algunos sistemas operativos permiten tanto usuarios interactivos como lotes de
trabajos batch. En estos sistemas se atiende a los usuarios interactivos con mayor prioridad, ejecutándose
los programas batch cuando no hay programas de usuario.
También aparecen las técnicas spooling gracias a las cuales se almacenan trabajos en colas de espera.

[Link] y sexta etapa: 1982 – actualidad


La quinta y sexta etapa se caracterizan por el desarrollo de sistemas operativos para computadores perso-
nales (MS-DOS, OS/2, etc.), SO con interfaces gráficos, y para estaciones de trabajo (UNIX, Windows-NT, etc.).
También se desarrollan sistemas operativos de red y sistemas operativos distribuidos. Los sistemas
operativos en red no se diferencian sustancialmente de los sistemas operativos convencionales, ya que pue-
den considerarse como una ampliación de éstos con programas de control de interfaz con la red y permiten
realizar una sesión de trabajo con un computador remoto.
Los sistemas operativos distribuidos son mucho más complejos, ya que permiten que un usuario eje-
cute, de forma transparente, uno o varios programas en varios procesadores trabajando simultáneamente y,
posiblemente, con datos distribuidos en diferentes servidores de archivos, lo cual requiere un SO adecuado.

7. CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS


Según la perspectiva con la que se observen los SO, pueden realizarse múltiples clasificaciones. Entre ellas se
pueden incluir las siguientes:

[Link] su estructura interna


Esta clasificación tiene en cuenta cómo se diseñan los sistemas a la hora de ser creados.
 Monolítica. Es la estructura utilizada en los primeros SO en la que todas las funciones se imple-
mentaban en el Kernel o núcleo. Puede decirse que su estructura consistía en que no existía una
estructura como tal. El SO estaba constituido por un único programa compuesto por multitud
de rutinas interrelacionadas entre sí, de forma que cada una de ellas podía llamar a cualquier
otra. Un ejemplo de SO de este tipo es el MS-DOS para PC.
 Por capas o jerárquica. A medida que los SO fueron creciendo, fue necesario tener una estruc-
tura más organizada. Para ello, el SO se dividió en distintos niveles, cada uno de ellos con fun-
ciones concretas y especializadas. Estos niveles dieron lugar a una jerarquía entre funciones, de
ahí que se conozcan como SO jerárquicos. Estos SO se estructuran en las siguientes capas:
o Hardware: nivel más bajo de todo el sistema.
o Gestión de procesos.
o Gestión de memoria.
6
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.

[Link] los modos de explotación


Responden a la forma en que el usuario interactúa con los procesos que se ejecutan.
 Procesamiento por lotes (batch). No hay interacción entre el usuario y los procesos que se están
ejecutando en el sistema. Se llaman así a aquellos sistemas que emplean procesos (trabajos) que
no necesitan la interacción con el usuario, se cargan, se procesas y devuelven un resultado sin
apenas intervención por parte del usuario. Lo que supone que la mayor parte del tiempo del
proceso está dedicado al procesamiento de los datos y muy poco a gestionar los lentos procesos
de entrada y salida de la información. Ejemplos de estos sistemas serían: SCOPE (procesamiento
científico) y EXEC II (procesamiento académico). Actualmente se puede llevar a cabo este tipo
de procesamiento en tareas como: procesos de actualización de base de datos, la cola de traba-
jos de impresión de una impresora, los ficheros de procesamiento por lotes de MS-DOS, etc.
 Tiempo compartido. En estos SO, durante la ejecución de los programas se pueden pedir datos
al usuario y aceptar sus respuestas. La entidad a controlar por el sistema son las sesiones y no
los trabajos. Una sesión comprende el intervalo de tiempo transcurrido desde el momento en
que un usuario se identifica en el PC hasta que lo abandona. Durante una sesión, el usuario cree
que todos los recursos del PC los tiene asignados y disponibles, a pesar de que pueda haber más
sesiones de otros usuarios activas a la vez. En estos sistemas se produce una interrogación se-
cuencial a los distintos usuarios (son conversacionales), asegurando que cada cierto intervalo de
tiempo el sistema atenderá a cada uno de ellos. Además, usan técnicas de buffering y spooling
para que las respuestas hacia los usuarios se emitan lo más rápido posible. Ejemplos de estos
sistemas serían: UNIX, Windows XP, etc.
 Tiempo real. Existe una interacción continua entre el usuario que se encarga de introducir la
información y el proceso. Además, el resultado del procesamiento de los datos se obtiene de
7
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

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] los servicios ofrecidos


En esta clasificación se tiene en cuenta la visión del usuario final y puede ser:

7.3.1. POR EL NÚMERO DE USUARIOS


Atendiendo al número de usuarios que pueden utilizar los recursos del sistema:
 Monousuario. Son aquellos que únicamente soportan un usuario a la vez. En estos sistemas
todos los recursos están a disposición de ese usuario y no pueden ser utilizados por nadie más
hasta que éste no finalice. Como ejemplos se tienen el MS-DOS, Windows XP, Vista, 7, etc.
 Multiusuario. Varios usuarios podrán utilizar simultáneamente los recursos del sistema. Pueden
compartir, sobre todo, los dispositivos externos de almacenamiento y periféricos de salida (im-
presora). También pueden compartir el acceso a una misma Base de Datos, etc. Como ejemplos
tenemos: UNIX, Windows Server, etc.

7.3.2. POR EL NÚMERO DE TAREAS O PROCESOS


Esta clasificación se hace atendiendo al número de programas que pueden ejecutarse simultáneamente en
el equipo.
 Monoprogramación o monotarea. El sistema solamente puede ejecutar un programa a la vez.
De esta forma, los recursos del sistema estarán dedicados al programa hasta que finalice su
ejecución. MS-DOS es un sistema de este tipo. El que un sistema sea monotarea no implica que
no pueda ser multiusuario. Se pueden tener varios usuarios usando el mismo equipo pero cada
uno de ellos ejecutando una sola tarea. Se controla la tarea de cada usuario de manera secuen-
cial. Cuando termina una, empieza la del siguiente.
 Multiprogramación o multitarea. El sistema permite ejecutar varios programas “simultánea-
mente”. De manera real, sólo se consigue la simultaneidad en aquellos sistemas que tienen más
de un procesador. En los casos que sólo exista un procesador, la CPU compartirá su tiempo entre
los diferentes programas a ejecutar. Ejemplos de estos sistemas serían: LINUX, Windows XP,
Vista, 7, etc.

7.3.3. POR EL NÚMERO DE PROCESADORES


Esta clasificación depende del número de procesadores que el SO es capaz de gestionar.
 Monoprocesador. El ordenador consta de un solo procesador. Todos los trabajos pasarán por
él, ya sean de uno o varios usuarios. Este procesador sólo será capaz de atender en cada mo-
mento a un único proceso, pero se podrá simular la multitarea repartiendo su tiempo entre los
distintos procesos.
 Multiprocesador. El ordenador cuenta con 2 o más procesadores. Los programas se podrán eje-
cutar sobre cualquier procesador. Además, permite el multiprocesamiento, es decir, la ejecución
de varios procesos de manera simultánea. Hay dos formas de utilizar los distintos procesadores
por parte del SO:
o Multiproceso simétrico (SMP). El SO distribuirá la carga de procesamiento por igual entre
todos los procesadores existentes.
o Multiproceso asimétrico (AMP). El SO reparte las tareas que está realizando a cada proce-
sador en función de su prioridad. En el caso de que se tenga un sistema biprocesador, se
pueden ejecutar unas tareas concretas en uno y en el otro el resto de tareas (programas
de usuario). Podría darse el caso de que un procesador este siempre trabajando y el otro,
en ocasiones, esté totalmente parado.
8
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

[Link] la forma de ofrecer los servicios


En esta clasificación se encuentran:
 Sistemas centralizados. Hasta que los computadores no tuvieron un precio accesible y suficiente
potencia, la mayoría de los sistemas utilizaban el modelo de procesamiento centralizado. Con
este tipo de modelo los computadores mainframe se encargaban de todo el procesamiento y
los usuarios manejaban únicamente terminales tontos (sin memoria ni procesador). Ejemplos
de estos sistemas serían: OS/390, Linux, etc.
 Sistemas distribuidos. Son sistemas cuasi-independientes que permiten distribuir los trabajos,
tareas o procesos entre un conjunto de procesadores. Puede ocurrir que este conjunto de pro-
cesadores se encuentren en el mismo equipo o en equipos distintos (siendo en este último caso
transparente para el usuario). Los sistemas distribuidos más extendidos son: Solaris-MC, Spring,
Taos, etc.
 Sistemas operativos en red. Son aquellos que mantienen a dos o más computadoras unidas a
través de algún medio de comunicación (físico o no), con el objetivo de primordial de poder
compartir los diferentes recursos y la información del sistema. En este entorno, cada compu-
tador mantiene su propio sistema operativo y su propio sistema de archivos local. Los sistemas
en red más usados son: Novell NetWare, Windows Server, Linux Server, etc.
 Sistemas operativos de escritorio. Estos sistemas son los que se utilizan en los equipos de so-
bremesa, estaciones de trabajo o portátiles. También se les puede denominar sistemas operati-
vos cliente. Entre ellos se encuentran: Windows XP Professional, Windows Vista, Windows 7 y
Linux.

[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.

8. FUNCIONES DE UN SISTEMA OPERATIVO


A continuación se muestran las funciones principales que realiza todo sistema operativo:
 Control de la ejecución de los programas. Para ello, acepta los trabajos, administra la manera
en que se realizan, les asigna los recursos y los conserva hasta su finalización.
 Administración de periféricos. Coordinando y manipulando los dispositivos conectados al orde-
nador.
 Gestión de permisos y de usuarios. Adjudica los permisos de acceso a los usuarios y evita que
las acciones de uno afecten el trabajo que está realizando otro.
 Control de concurrencia. Establece prioridades cuando diferentes procesos solicitan el mismo
recurso.
 Control de errores. Gestiona los errores de hardware y la pérdida de datos.
 Administración de memoria. Asigna memoria a los procesos y gestiona su uso.
 Control de seguridad. Debe proporcionar seguridad tanto para los usuarios como para el soft-
ware y la información almacenada en los sistemas.

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.

 Nivel 4. Gestión de dispositivos. Se encarga de la función de creación de procesos de E/S, asig-


nación y liberación de dispositivos de E/S y planificación de E/S.
 Nivel 5. Gestión de la información. Gestiona el espacio de nombres lógicos, para simplificar el
acceso a los recursos y protección de la información realizando funciones de creación y elimina-
ción de ficheros, apertura y cierre de ficheros, lectura y escritura de ficheros, y protección de
acceso.

9. INTERFAZ DE COMUNICACIÓN CON EL USUARIO


Hay que destacar las interfaces como medio de comunicación entre hardware y software a través del sistema
operativo. Las interfaces se pueden clasificar en:
 Interfaz tipo texto. Si el sistema operativo tiene una interfaz de tipo texto, todas las órdenes
que el usuario introduzca y las respuestas que el sistema operativo dé, se introducirán o se vi-
sualizarán mediante cadenas de caracteres.
 Interfaz tipo gráfico. Hoy en día, la mayoría de los sistemas operativos utilizan medios de comu-
nicación entre usuario y máquina de tipo gráfico.

10. TIPOS DE APLICACIONES


En función del tipo de software, las aplicaciones pueden ser:
 Gratuitas (freeware) o comerciales. Esta clasificación es interesante en el momento de la plani-
ficación, del análisis del entorno y de la adquisición de las aplicaciones, y es fundamental para
evaluar los costes. Además, tiene fuertes repercusiones en la etapa de mantenimiento del soft-
ware.
 Libres o propietarias:
o Las licencias de software libre se basan en la distribución del código fuente junto con el
programa, así como en las 4 premisas indicadas en un apartado anterior. Hay que dejar
claro de nuevo que el que un determinado programa sea libre no implica en ningún mo-
mento que sea o deba ser gratuito (freeware). Es perfectamente compatible el que se
trate de un software libre y a su vez sea un programa comercial, en el que se pida un pago
por licencia.
o Las licencias de software propietario son aquellas en las que los usuarios tienen limitadas
las posibilidades de usarlo, modificarlo o redistribuirlo (con o sin modificaciones).
 Otra clasificación a reseñar es la que divide las aplicaciones en opensource (código abierto al
usuario) o privativas (cuyo código fuente no está disponible o el acceso a él se encuentra res-
tringido). También aquí la repercusión en las fases de la implantación es importante, ya que una
aplicación opensource va a permitir un afinamiento más adaptado, barato y simple que una pri-
vativa. La consecuencia es una mejora en el ciclo de vida de la implantación a un menor coste.
Aunque debido a contingencias en la compatibilidad e interconexión de aplicaciones, es necesa-
rio habitualmente instalar software privativo.

11. TIPOS DE LICENCIAS


Una licencia de software es una autorización formal con carácter contractual que un autor de un software da
a un interesado para ejercer actos de explotación cumpliendo una serie de términos y condiciones estable-
cidas dentro de sus cláusulas.

11.1. Tipos de licencia de software comercial


Desde el punto de vista del software comercial, existen distintos grupos de licencias:
 Licencias OEM. Se trata de un tipo de licencia que supedita su venta a que forme parte de un
equipo nuevo, estando prohibido venderlo si no es bajo esta condición. Si bien afecta más que

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.

11.2. Tipos de licencia de software libre


Desde el punto de vista del software libre, existen distintos grupos de licencias:
 Licencias BSD (Berkeley Software Distribution). Este tipo de licencias se utilizan en el software
distribuido junto a los sistemas operativos BSD (sistemas operativos derivados del sistema UNIX
desarrollados por la Universidad californiana de Berkeley). Este tipo de licencias mantienen la
protección de los derechos de autor únicamente para la renuncia de garantía y para requerir la
adecuada atribución de la autoría en trabajos derivados, pero permite la libre redistribución y
modificación, incluso si dichos trabajos tienen propietario. Son muy permisivas y son fácilmente
absorbidas al mezclarse con las licencias GNU GPL, con las cuales son compatibles.
 Licencias GNU GPL (Licencia pública general de GNU). Este tipo de licencias conservan los de-
rechos de autor y permiten la redistribución y modificación bajo términos diseñados para ase-
gurarse de que todas las versiones modificadas del software permanecen bajo los términos más
restrictivos de la propia GNU GPL. Esto hace que no se pueda crear un producto con partes no
licenciadas GPL, por lo tanto, el conjunto tiene que ser GPL. Es decir, esta licencia obliga a que
si se reutiliza en un mismo programa código “A” licenciado bajo licencia GNU GPL, y código “B”
licenciado bajo otro tipo de licencia libre, el código final “C”, independientemente de la cantidad
y calidad de cada uno de los códigos “A” y “B”, deberá estar bajo licencia GNU GPL. Aproxima-
damente el 60% del software licenciado como software libre emplea una licencia GPL.
 Licencias GNU LGPL (Licencia pública general limitada de GNU). La licencia GPL ofrece grandes
beneficios pero hay algunas veces en las que ofrece ciertas restricciones. Por ejemplo, cuando
se utilicen partes o bibliotecas de software GPL en un software propietario o distribuido bajo
otra licencia, estaría obligada a distribuir todo su software bajo GPL, lo que, seguramente, no les
interesaría. Sin embargo, con este tipo de licencias, que es una versión reducida de la licencia
GNU GPL, LGPL, no es obligatorio que el software derivado tenga que ser libre. Otras actividades
que no sean copia, distribución o modificación no están cubiertas en esta licencia y están fuera
de su alcance. Como ejemplo de este tipo de licencia se puede citar el proyecto [Link]
de Sun Microsystems.
 Licencias MPL (Licencia pública de Mozilla). Este tipo de licencia evita el efecto de la GPL (es
decir, que si se utiliza código licenciado GPL, el desarrollo final tiene que ser obligatoriamente
licenciado GPL). No obstante, la licencia MPL no es tan excesivamente permisiva como las licen-
cias BSD. Tiene un gran valor porque fue el instrumento que empleó Netscape Communications
Corp. Para liberar su Netscape Communicator 4.0 y empezar con el Proyecto Mozilla. Se utilizan
en gran cantidad de productos de software libre de uso cotidiano en todo tipo de sistemas ope-
rativos, como por ejemplo, Mozilla Firefox.
12
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

 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.

12. GESTIÓN DE PROCESOS Y DEL PROCESADOR


12.1. Qué es un proceso
Un proceso es el programa que se está ejecutando en ese momento en el ordenador. En los sistemas multita-
rea, se pueden ejecutar a la vez varios procesos.
Como la CPU no puede realizar más que un proceso a la vez, lo que hace es dedicar su tiempo en
fracciones de segundo a cada proceso. La rapidez con que la CPU dedica de forma alterna su tiempo a los
diferentes procesos, puede inducir a pensar que los procesos se ejecutan inmediatamente, pero no es así: la
CPU divide su tiempo en fracciones de segundo que son asignadas a cada proceso para ser ejecutadas, pero
por supuesto no de forma simultánea. El tiempo compartido consiste en dividir el tiempo de ejecución en
minúsculos intervalos (milisegundos) e ir asignando cada uno de esos intervalos a cada proceso que está en
ejecución.

12.2. Estados de un proceso


Cada proceso atraviesa varias fases durante su “ejecución”; en un momento dado el proceso estará ejecu-
tándose, posteriormente estará en espera, estando la CPU ejecutando otro proceso; mientras otros procesos
estarán en espera para ser lanzados o bloqueados…
Pues bien, en estos cambios de procesos en ejecución, el sistema operativo debe controlar no sólo cuál
de los procesos debe ejecutarse en la siguiente fracción de tiempo de CPU, sino que además debe saber qué
ficheros están utilizando, qué periféricos, etc. En general, en qué momento de la ejecución se encuentra cada
uno de los procesos.
Es decir, necesita almacenar las especificaciones de cada uno de los procesos que se están ejecutando,
sus tiempos y prioridades, para partir del mismo punto en el que se dejó la última vez que el proceso tuvo
asignado un intervalo de CPU. Esta información se almacena en el PCB (bloque de control de proceso), que
a su vez forma parte de la tabla de procesos.
Los estados por los que puede pasar un proceso son:
 En ejecución o listo: el procesador está ejecutando instrucciones de ese proceso en un instante
concreto.
 Preparado: un proceso está preparado para ser ejecutado, es decir, está esperando el turno
para poder utilizar su intervalo de tiempo.
 Bloqueado: el proceso en cuestión está retenido, es decir, está bloqueado debido a causas múl-
tiples. Una de esas causas puede ser que dos procesos estén utilizando el mismo fichero de datos
o que esté esperando el resultado de una operación de entrada/salida.

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.

12.3. Planificación de procesos


El SO realiza una labor de planificación, que permite determinar qué proceso hay que ejecutar en cada mo-
mento. Existen distintos algoritmos de planificación. Algunas de las características de estos algoritmos deben
ser la imparcialidad, la equidad, la eficiencia, el tiempo de respuesta y el rendimiento.

12.3.1. EVALUACIÓN DE LOS ALGORITMOS DE PLANIFICACIÓN


Existen ciertas medidas que se utilizan para evaluar los algoritmos de planificación.
 Porcentaje de utilización de la CPU por procesos de usuario. La CPU es un recurso caro que
necesita ser explotado, los valores reales suelen estar entre un 40% y un 90%.
 Rendimiento (throughput) = nº de ráfagas por unidad de tiempo. Se define una ráfaga como el
periodo de tiempo en que un proceso necesita la CPU. Un proceso, durante su vida, alterna
ráfagas con bloqueos. Por extensión, también se define como el nº de trabajos por unidad de
tiempo.
14
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

 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.

12.3.2. TIPOS DE PLANIFICACIÓN


Hay dos tipos de algoritmos: no apropiativos y apropiativos. Un algoritmo de planificación es no apropiativo
si una vez que la CPU ha sido asignada al proceso, ya no se le puede arrebatar. Y por el contrario, es apropia-
tivo, si se puede quitar la CPU a los procesos.

[Link]. Planificación no apropiativa


Un proceso nunca abandona el procesador hasta que finaliza o se bloquea por alguna razón externa al pro-
ceso. Se emplea en los procesos por lotes y no es adecuado para los procesos compartidos o de tiempo real.
En los sistemas no apropiativos, los trabajos largos retrasan a los cortos, pero el tratamiento para
todos los procesos es más justo. Los tiempos de respuesta son más predecibles porque los trabajos nuevos
de alta prioridad no pueden desplazar a los trabajos en espera.

[Link]. Planificación apropiativa


El SO puede interrumpir la ejecución de un proceso con el fin de estudiar si puede seguir siendo ejecutado o
debe ser otro el que lo haga, quedando este último bloqueado, o preparado.
La planificación apropiativa es útil en los sistemas en los cuales los procesos de alta prioridad requieren
una atención rápida. En los sistemas de tiempo compartido, la planificación apropiativa es importante para
garantizar tiempos de respuesta aceptables.
La apropiación tiene un precio. El cambio de proceso implica gasto extra. Para que la técnica de apro-
piación sea efectiva deben mantenerse muchos procesos en memoria principal de manera que el siguiente
proceso se encuentre listo cuando quede disponible la CPU. Conservar en memoria principal procesos que
no están en ejecución implica gasto extra.

12.4. Algoritmos de planificación


Dentro de los algoritmos de planificación, citaremos algunos de los más importantes.

12.4.1. ALGORITMO FIFO (FIRST INPUT, FIRST OUTPUT; PRIMERO EN


ENTRAR-PRIMERO EN SALIR)
El algoritmo FIFO (First In, First Out) es el más sencillo pero el menos eficaz. Como su nombre indica, los
procesos se ejecutan según el orden de llegada, es decir, el primero en llegar es el primero en salir o ejecu-
tarse. El procesador ejecuta cada proceso hasta que termina. Es un algoritmo no apropiativo.
La ventaja de este algoritmo es su fácil implementación. Para implementar el algoritmo sólo se nece-
sita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de
bloqueado a listo se sitúa el último de la cola.
15
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

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.

12.4.2. ALGORITMO SJF (SHORT JOB FIRST; PRIMERO EL PROCESO MÁS


CORTO)
Al igual que en algoritmo FIFO es un algoritmo no apropiativo. Su característica es que cuando se activa el
planificador, éste elige la ráfaga de menor duración. Es decir, introduce una noción de prioridad entre ráfagas.
Ejemplo: supongamos que en un momento dado existen tres ráfagas listas R1, R2 y R3, sus tiempos de
ejecución respectivos son 24, 3 y 3 ms. El tiempo medio de finalización (F) de las ráfagas aplicando FIFO y SJF:
 FIFO  F = (24 + 27 + 30) / 3 = 27 ms.
 SJF  F = (3 + 6 + 30) / 3 = 13 ms.

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.

12.4.3. ALGORITMO DE ROUND-ROBIN (RUEDA)


Es un algoritmo apropiativo. Este es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto
de la CPU entre los procesos, muy válido para entornos de tiempo compartido.
Asigna un tiempo de ejecución igual (que se denomina quantum) a los diferentes procesos de forma
rotativa.
Cuando un proceso consume su tiempo sin haber concluido su ejecución, pasa a la cola de preparados
para volver a entrar cuando llegue su turno.
Ningún proceso puede permanecer más tiempo del asignado al quantum en CPU, y si alguno termina
antes, entonces provocará una interrupción para que el sistema ceda el procesador a otro proceso.
El round robin es muy fácil de implementar. Todo lo que necesita el planificador es mantener una lista
de los procesos listos.

Ejemplo 1:

Lista de Procesos PREPARADOS en Round-Robin

En a) el proceso P7 ocupa la CPU.


En b) P7 se bloquea pasando P2 a ocupar la CPU.
En c) P2 agota su quantum con lo que pasa al final de la lista y P4 ocupa la CPU.

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.

12.4.4. ALGORITMO SRTF (SHORT REMAINING TIME FIRST; PRIMERO EL


PROCESO AL QUE LE QUEDA MENOS TIEMPO)
Es la versión apropiativa del algoritmo SJF, con la diferencia de que si un nuevo proceso pasa a preparado se
activa el planificador para ver si es más corto que lo que queda por ejecutar del proceso en ejecución. Si es
así, el proceso en ejecución pasa a preparado y su tiempo de estimación se decrementa con el tiempo que ha
estado ejecutándose.
Este algoritmo permite asignar el tiempo de ejecución de forma prioritaria a procesos muy cortos para
ejecutarlos en el menor tiempo posible. Si se está ejecutando un proceso más largo, el SO le quitará la eje-
cución de la CPU para asignársela al proceso más corto. De esta forma, el usuario del proceso corto obtendrá
resultados en un tiempo mínimo, y el usuario del proceso largo casi no notará esa circunstancia.
En la siguiente figura tenemos un ejemplo de funcionamiento del algoritmo en el que se observa cómo
se penalizan las ráfagas largas (como en SJF).
Un punto débil de este algoritmo se evidencia cuando una ráfaga muy corta suspende a otra un poco
más larga, siendo más larga la ejecución en este orden al ser preciso un cambio adicional de proceso y la
ejecución del código del planificador.

Ejemplo de SRTF y SJF

12.4.5. ALGORITMO POR PRIORIDADES O MULTINIVEL


Es uno de los más complejos y eficaces. Asigna los tiempos de ejecución de la CPU en función de unas listas
de prioridades. En cada una de estas listas, el sistema operativo incluirá aquellos procesos a los que se haya

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.

12.5. Sincronización de procesos


Los procesos de sincronización de un sistema operativo consiguen que los programas se ejecuten en el orden
adecuado y sin interferencias entre ellos.
Cuando se ejecutan varios procesos a la vez, es posible, que éstos compartan unos o varios recursos
del sistema (pantalla, memoria…). El objetivo del sistema operativo es permitir que varios procesos compar-
tan recursos sin que se produzcan problemas.
En este sentido, los procesos pueden ser independientes o cooperantes entre sí:
 Los procesos independientes van a obtener el mismo resultado con independencia del orden
en el que se ejecuten.
 Los procesos cooperantes comparten información y su resultado va a depender del orden en el
que se ejecuten. Por ejemplo, dos procesos que se ejecutan a la vez y escriben en la misma zona
de la pantalla, uno escribiendo “abc” y el otro “cba”. Según el orden de ejecución de los procesos
en la pantalla podrá verse “abccba”, “acbbca” u otras combinaciones. Situaciones similares se
pueden dar si los dos procesos intentan escribir a la vez en un fichero o imprimir.

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.

13. GESTIÓN DE MEMORIA


13.1. Introducción
13.1.1. JERARQUÍA DE LAS MEMORIAS DE UN SISTEMA INFORMÁTICO

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.

13.1.2. FUNCIONES DE GESTIÓN DE MEMORIA


Para que un proceso pueda ejecutarse, debe estar ubicado en la memoria principal del ordenador. Una parte
del SO se va a encargar de gestionar la memoria principal, de forma que los procesos puedan residir en la
memoria sin conflictos.
Existen varias formas de gestionar la memoria. En general, la forma de gestión dependerá de la má-
quina virtual que se quiera proporcionar y del hardware subyacente.
En cualquier método de gestión de memoria es necesario decidir qué estrategias se deben utilizar para
obtener un rendimiento óptimo. Las estrategias de administración de la memoria determinan el comporta-
miento de una organización de memoria determinada cuando se siguen diferentes políticas: ¿Cuándo se elige
20
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

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.

13.2. Gestión de la memoria en los sistemas monoprogramados


En los sistemas de monoprogramación sólo existía un proceso de usuario, que disfruta de todos los recursos
del ordenador. Esto simplificaba notablemente la gestión de la memoria, ya que ésta sólo debía ser compar-
tida por los programas del sistema operativo, y por el único proceso de usuario existente.
Esto se muestra en la figura. Dependiendo de detalles de diseño:
 El sistema operativo ocupará la parte baja de la memoria RAM, como se muestra en la figura en
(a).
 La parte alta de la memoria ROM, como se muestra en la figura (b).
 El PC de IBM ubica parte del sistema operativo en RAM, y los gestores de dispositivos en ROM,
esto último se ilustra en la figura (c).

Tres formas de organización de la memoria, con un sistema operativo y un proceso de usuario.

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.

13.3. Gestión de la memoria en los sistemas multiprogramados


En un sistema de multiprogramación, la memoria debe ser compartida por varios procesos de cara a obtener
una mayor utilización de los recursos del ordenador. Esto provoca que la gestión de la memoria se complique
sustancialmente:

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.

13.3.1. ASIGNACIÓN DE MEMORIA CONTIGUA


En un esquema de asignación de memoria contigua un proceso se ubica en su totalidad en posiciones conse-
cutivas de memoria. Un ejemplo de este tipo de asignación es el utilizado en los sistemas de monoprogra-
mación vistos previamente. En este apartado se estudian dos métodos de asignación contigua empleados
históricamente en sistemas multiprogramados.

[Link]. Particiones estáticas


Consiste en dividir la memoria en varias zonas, pudiendo ser cada zona de un tamaño diferente. Esto se
ilustra en la figura siguiente. El tamaño de las zonas podrá ser modificado eventualmente por algún usuario
responsable de la administración del ordenador.
Los trabajos se traducían mediante compiladores y ensambladores absolutos, para ejecutarse en una
partición específica. Una vez introducido un proceso en una partición, permanece en ella hasta su finaliza-
ción. Si un trabajo se iniciaba, y la partición para la que estaba compilado estaba ocupada, tenía que esperar,
aunque estuvieran libres otras particiones. Esto provoca una pérdida de eficiencia.

Multiprogramación con particiones estáticas, con traducción y carga absolutas.

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.

[Link]. Particiones dinámicas


En este método se va asignando la memoria dinámicamente a los procesos, conforme se introducen en la
memoria. A cada proceso se le asigna exactamente la memoria que necesita.
En la figura se ilustra cómo evoluciona la ocupación de la memoria en un sistema de este tipo. Al prin-
cipio sólo se encuentra el proceso A en la memoria. Después, se insertan los procesos B y C. En la figura (d)
A concluye. Luego, D entra y B sale. Por último E entra.

La asignación de memoria cambia cuando el proceso llega o sale de la memoria. Las zonas sombreadas son
memoria libre.

FRAGMENTACIÓN EXTERNA Y COMPACTACIÓN


Con este método de gestión de la memoria se evita el problema de la fragmentación interna. Sin embargo,
aparece el problema de la fragmentación externa entre particiones, el cual se aprecia en las figuras (e) y (f).
El problema consiste en que se creen huecos libres demasiado pequeños como para que quepan procesos,
aunque la unión de todos esos huecos produciría un hueco considerable, lo que acarrea el desperdicio de la
memoria. Una posible solución es la compactación de la memoria, que consiste en desplazar todos los pro-
cesos hacia la parte inferior de la memoria mientras sea posible. Como la compactación lleva mucho tiempo,
a veces no se realiza, o se hace por la noche, en horas de poco uso del ordenador. Hay que tener en cuenta
que el sistema debe detener todas sus actividades mientras realiza la compactación. Ello puede ocasionar
tiempos de respuesta irregulares para usuarios interactivos, y podría ser inadmisible en un sistema de
tiempo real. Además, con una combinación normal de trabajos que cambia rápidamente, es necesario com-
pactar a menudo. En este caso, los recursos del sistema que se consumen quizá no justifiquen las ventajas
de la compactación.

EL PROBLEMA DEL CRECIMIENTO DE LOS PROCESOS


Otro tema a tener en cuenta es la cantidad de memoria por asignar a un proceso recién creado. Si los proce-
sos se crean con un tamaño fijo invariante, la asignación es muy sencilla, se asigna exactamente lo que se
necesite.
Si, por el contrario, los segmentos de datos de los procesos pueden crecer, como es el caso de la asig-
nación dinámica de memoria a partir de una pila, que ocurre en muchos lenguajes de programación, aparece
un problema cuando un proceso intenta crecer. Si hay un hueco adyacente al proceso, éste puede ser asig-
nado, y el proceso podrá crecer hacia el hueco. Sin embargo, si el proceso es adyacente a otro proceso, el
23
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

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.

[Link]. Intercambio (swapping)


En un sistema con particiones estáticas, el número de procesos con posibilidades de estar en estado prepa-
rado viene determinado por el número de particiones, y en uno de particiones dinámicas por el tamaño de
la memoria principal y el tamaño de los procesos, ya que en ambos métodos un proceso permanece en una
partición hasta que finaliza. Supongamos un sistema en que dicho número es cinco, es muy probable que en
un momento dado los cinco procesos que ocupan las particiones estén bloqueados (por ejemplo, porque
esperan la finalización de una operación de E/S). Mientras los cinco procesos permanezcan bloqueados se
desperdicia la CPU. Para remediar este inconveniente muchos sistemas operativos optaron por permitir eje-
cutar concurrentemente más procesos de los que pueden entrar físicamente en la memoria principal del
ordenador. Para ello se utiliza la memoria secundaria (generalmente los discos) que, aunque más lenta, tiene
mayor capacidad de almacenamiento que la principal. La solución consiste en tener en disco una copia de la
parte de la memoria que ocupa todo el proceso. En el disco se encuentran todos los procesos, en la memoria
sólo unos cuantos. Para que un proceso se pueda ejecutar debe residir en memoria principal.
La razón por la que se aumenta el número de procesos con posibilidades de tener instrucciones en
memoria principal es porque cuanto mayor sea este número, es menos probable que se dé la circunstancia
de que todos estén bloqueados y, por lo tanto, es menor la posibilidad de que la CPU permanezca inactiva.

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).

13.3.2. ASIGNACIÓN DE MEMORIA NO CONTIGUA


Hasta ahora se han estudiado esquemas de administración de la memoria en los que los procesos se alma-
cenan en posiciones contiguas (consecutivas) de memoria. Sin embargo, un proceso puede dividirse en blo-
ques, y estos bloques pueden situarse en posiciones no contiguas de memoria principal. Es más, no es preciso
que se encuentren en la memoria todos los bloques de un proceso para que se pueda ejecutar, basta con
que se encuentren los bloques que contienen código o datos actualmente referenciados, el resto puede per-
manecer en memoria secundaria.

[Link]. Memoria virtual


Hoy en día, la mayoría de los sistemas operativos hacen una gestión de memoria basada en lo que se conoce
como memoria virtual.
Esta técnica, considera el espacio en disco libre como si se tratase de memoria RAM (memoria virtual).
Así, para el usuario, el programa que se está ejecutando está en memoria cuando, en realidad, sólo se carga
en RAM la parte del programa que se está ejecutando en ese momento. Entre tanto, el resto del programa
permanece temporalmente almacenado en memoria virtual (disco duro) para su posterior utilización. Los SO
multitarea son especialistas en esta gestión.
Con esta técnica se consigue disponer casi siempre de memoria RAM libre necesaria para la ejecución
de los procesos. Sin embargo, si cargamos demasiados procesos a la vez, el sistema se ralentiza, ya que tiene
que estar pasando información continuamente de memoria a disco duro o viceversa.

25
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

ESPACIO DE DIRECCIONES VIRTUALES


La clave del concepto de memoria virtual es la asociación de las direcciones a las que hace referencia un
proceso en ejecución de las direcciones disponibles en la memoria principal.
Las direcciones a las que hace referencia un proceso de ejecución, en este esquema, se llaman direc-
ciones virtuales.
El intervalo de direcciones virtuales a las que puede hacer referencia un proceso en ejecución se llama
espacio de direcciones virtuales, V, del proceso. El intervalo de direcciones reales de la memoria principal
de un ordenador concreto se llama espacio de direcciones reales, R. El número de direcciones de V se denota
|V|, y el número de direcciones de R, |R|. En los sistemas de almacenamiento virtual, lo normal es que |V|
sea mayor que |R|.

MEMORIA VIRTUAL Y TAMAÑO DE LOS PROCESOS


La memoria virtual es una técnica de gestión de la memoria que posibilita que el espacio de direcciones
virtuales sea mayor al espacio de direcciones reales. En otras palabras, se permite hacer programas de ta-
maño mayor al de la memoria principal. Para lograr esto, el sistema operativo se encarga de mantener en la
memoria principal solamente aquellas partes del espacio de direcciones del proceso que actualmente están
siendo referenciadas, el resto permanece en disco.

MEMORIA VIRTUAL Y NÚMERO DE PROCESOS EN EJECUCIÓN


La memoria virtual se compagina con la multiprogramación. Al no tener que almacenar los procesos enteros
en la memoria, pueden entrar más en la memoria principal, con lo que es más probable que siempre exista
un proceso en estado listo. Por otro lado, cuando un proceso espera a que se cargue en la memoria principal
parte de su código o datos, se inicia una E/S con el disco. Mientras dura dicha E/S, la CPU puede ejecutar otro
proceso.
Aunque los procesos sólo hacen referencia a direcciones virtuales, deben ejecutarse en la memoria
real. Por lo tanto, durante la ejecución de un proceso es preciso establecer la correspondencia entre las di-
recciones virtuales y las reales. Como se verá más adelante, esta correspondencia debe realizarse de una
manera rápida, pues si no, se ralentizaría demasiado el tiempo de ejecución de los procesos.

Correspondencia de elementos del espacio de direcciones virtuales al espacio de direcciones reales.


26
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.

ESQUEMA GENERAL DE TRADUCCIÓN


Los mecanismos de traducción dinámica de direcciones deben mantener mapas de correspondencia de tra-
ducción de direcciones que indiquen qué localidades de la memoria virtual están en memoria principal en un
momento dado y dónde se encuentran.
Puede ocurrir que los bloques en que se dividen los procesos deben ser del mismo tamaño o de tama-
ños diferentes:
 Cuando los bloques son del mismo tamaño, se llaman páginas, y la organización de la memoria
virtual correspondiente se conoce como paginación.
 Cuando los bloques pueden tener tamaños diferentes se llaman segmentos, y la organización
de la memoria virtual correspondiente se llama segmentación.
 Algunos sistemas combinan ambas técnicas, con segmentos, que son entidades de tamaño va-
riable, compuestas de páginas de tamaño fijo (segmentación paginada).

[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.

PÁGINAS ACTIVAS Y PÁGINAS INACTIVAS


Los marcos son compartidos entre los distintos procesos que haya en el sistema, de forma que en cualquier
momento un proceso dado tendrá unas cuantas páginas residentes en la memoria principal (sus páginas
activas) y el resto en la memoria secundaria (sus páginas inactivas).

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.

TRANSFORMACIÓN DE UNA DIRECCIÓN VIRTUAL A FÍSICA


Con el fin de determinar la página a la que hace referencia un programa, los bits de mayor peso de la direc-
ción se interpretan como el número de página, y los bits de menor peso como el número de palabra dentro
de esta página.
Es de destacar el hecho de que la división de la dirección en número de palabra y número de página,
es tarea del hardware, y es transparente al programador.
La transformación de número de páginas y de palabra en la dirección física de memoria se realiza a
través de una tabla de páginas, cuyo p-ésimo elemento contiene la posición p’ del marco que contiene a la
página p (la posibilidad de que la p-ésima página no se encuentre en la memoria principal se abordará dentro
de un momento). El número de palabra, w, se suma a p’ para obtener la dirección buscada.

27
TEMA 1: INTRODUCCIÓN A LOS SISTEMAS Implantación de Sistemas Operativos
INFORMÁTICOS. SISTEMAS OPERATIVOS.

Transformación de direcciones para llevar a cabo la paginación

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.

ALGORITMOS DE REEMPLAZO DE PÁGINA


 LRU (Least recently used), usado menos recientemente. Se reemplaza la página que se usó hace
más tiempo (no tiene porqué ser la que lleve más tiempo en memoria).
 FIFO (first in, first out). La primera página que llega es la primera que se reemplaza. La página
que lleva más tiempo en memoria, se haya o no usado.
 Óptimo. Es un algoritmo teórico que prevé cuáles serán las siguientes peticiones 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.

14. GESTIÓN DE ENTRADA/SALIDA


Una de las funciones principales de un sistema operativo es el control de los periféricos de entrada/salida del
ordenador. El sistema operativo se encarga de enviar órdenes, determinar el dispositivo que necesita la aten-
ción del procesador, eliminar posibles errores, etc.

14.1. Tipos de periféricos


En primer lugar, tenemos que hacer una clasificación de los periféricos según gestionen la información por
bloques o por caracteres:
 Periféricos tipo bloque. Son aquellos en los que la información que se maneja es en forma de
bloque. Un ejemplo son los discos, donde la información se almacena en bloques de 512 bytes.
Son direccionables.
 Periféricos tipo carácter. Son aquellos en los que la información se maneja de forma secuencial,
carácter a carácter. Un ejemplo sería el teclado.

14.2. Controladora hardware del periférico o interfase


Cada periférico está compuesto por un componente mecánico y otro u otros componentes electrónicos. Por
ejemplo, un disco duro está compuesto por los propios discos, las cabezas de lectura-escritura, el motor que
los hace girar, etc., y por la denominada controladora, encargada de conectar el dispositivo físico al ordena-
dor.

14.3. Función del sistema operativo


El sistema operativo se encarga de acceder a la información de la memoria principal, extraerla en forma de
impulsos eléctricos y enviarla a los diferentes dispositivos periféricos. El periférico interpretará los impulsos
eléctricos recibidos: si es un disco duro, los impulsos se transformarán en señales de tipo magnético, si es
una impresora, se transformarán en caracteres, etc.
Los dispositivos físicos que el sistema operativo tiene que gestionar para que la información pase de
un sitio a otro se clasifican según la función que realizan:
 Soportes de almacenamiento. Es la memoria auxiliar del ordenador o memoria externa. Pueden
ser discos duros, disquetes, CD-ROM, DVD, cintas DAT, etc.
 Interfaces. Permiten la comunicación entre el usuario y el sistema operativo. Son el monitor, el
teclado, ratón, etc.
 Soportes de transmisión. Son los buses y canales encargados de transmitir la información entre
los diferentes componentes que integran el ordenador.

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.

o El circuito de interfaz se conecta mediante líneas especiales.


o Se accede a los registros mediante instrucciones especiales (in, out), especificando un nú-
mero de puerto.

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.

El direccionamiento: la entrada/salida se direcciona de modo idéntico a como se direcciona la memo-


ria principal. Es decir, direccionar un dispositivo concreto es igual que direccionar una celda de memoria.
El puerto se direcciona como una celda de memoria. La CPU manda la dirección de ese puerto, y el
controlador advierte que por el bus de direcciones va su dirección  se activa el puerto.
Las direcciones de los puertos han de ser únicas (no pueden corresponder también a una celda de
memoria principal).
Tras el direccionamiento, ha de realizarse la transferencia de datos (de entrada o de salida). Hay tres
formas básicas para realizar las operaciones de E/S:
 Entrada/salida por consulta o programada:
o La CPU accede a los registros desde programa.
o Para saber si el dispositivo está listo, se hace una consulta periódica.
 Entrada/salida por interrupciones:
o El dispositivo avisa a la CPU cuando está listo.
o La entrada/salida se hace mediante una rutina de servicio de interrupción.
 Entrada/salida por acceso directo a memoria:
o El dispositivo accede directamente a la memoria.
o Avisa a la CPU del inicio o final de la operación.

15. GESTIÓN DE ARCHIVOS


Cuando trabajamos con sistemas operativos multiusuario, la gestión de datos que se hace en el ordenador y
su ubicación en memoria y los soportes de almacenamiento externo puede plantear algunos problemas.
Ya hemos visto que, para la ubicación en memoria, es el gestor de memoria del sistema operativo el
que se encarga. En cuanto al almacenamiento en soportes externos, la gestión que haga el sistema operativo
tiene que responder a varias características:
 Se podrá almacenar gran cantidad de información.
 Se almacenará de forma correcta una vez terminado el procesamiento.
 Existirá la posibilidad de que varios procesos o programas accedan a la misma información sin
interferencias.

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.

Ejemplo de Sistema Jerárquico de Directorios:

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

También podría gustarte