You are on page 1of 78

Tema 1: Introducción a los sistemas

operativos

CURSO 2018

IMPLANTACIÓN DE SISTEMAS OPERATIVOS


Tema 1: Introducción a los sistemas
operativos
Tema 1: Introducción a los sistemas
operativos
1. Software de un sistema
informático
 Los ordenadores de antemano no pueden realizar ninguna tarea que
no les sea indicada por medio de un programa. A los programas de
ordenador se les denomina genéricamente software. Ese software se
puede clasificar por su función en:
 Sistema operativo: permite administrar los recursos de un
ordenador. Lo forman una gran variedad de programas. También
hace de interfaz entre en hardware y el resto de software que
utilizamos.
 Programas de aplicación: Es el software que se superpone al
sistema operativo y se aprovecha de él para proporcionarnos las
diferentes funcionalidades que le vamos a pedir a nuestro sistema
informático. Sin el sistema operativo proporcionando acceso a
los recursos del ordenador (pantalla, impresora, memoria,
procesador, etc.) y controlando todos los procesos, los programas
de aplicación no podrían funcionar.
2. Sistema operativo
 El sistema operativo por sí solo no tiene mucha utilidad, puesto que su
función no es otra que hacer de enlace entre el hardware de nuestra
máquina y los programas de aplicación que utilicemos.
2. Sistema operativo
 Definiciones de sistema operativo:
 Son los programas que hacen utilizable el hardware.
 Un sistema operativo es un programa que actúa como
intermediario entre el usuario y el hardware del
ordenador y su propósito es proporcionar el entorno en el cual
el usuario pueda ejecutar programas. Entonces, el objetivo
principal de un sistema operativo es, lograr que el sistema
informático se use de manera cómoda, y el objetivo
secundario es que el hardware del computador se emplee
de manera eficiente.
3. Características deseables de los
sistemas operativos
 No todos los sistemas operativos cumplen con todas las características
reseñadas, unos están más orientados a la seguridad y otros persiguen una
buena usabilidad. Las características que se deben perseguir al diseñar e
implementar un sistema operativo son:

 Eficiencia: Un sistema operativo permite que los recursos del ordenador se usen
de la manera más eficiente posible. Por ejemplo se deben optimizar los accesos a
disco para acelerar las operaciones de entrada/salida.

 Fiabilidad: Un sistema operativo no debe tener errores y debe prever todas las
posibles situaciones críticas y resolverlas si es que se producen.
3. Características deseables de los
sistemas operativos
 Robustez: El sistema operativo debe responder de forma
predecible y controlada a condiciones de error, incluidos fallos
hardware.

 Seguridad: El sistema operativo debe protegerse activamente a sí


mismo y a los usuarios de acciones accidentales o malintencionadas.
Por ejemplo se deben proteger los archivos de un usuario del uso no
autorizado por otro usuario. También es fundamental limitar el acceso de
los usuarios sin privilegios de administrador a las partes más
sensibles del sistema.

 Extensibilidad: La aparición constante de nuevo hardware y de


nuevos tipos de aplicaciones, exigen al sistema operativo la adición
de nueva funcionalidad. En lugar de construir un nuevo sistema
operativo cada vez, se pretende construir un sistema que pueda
extenderse, es decir, su funcionalidad pueda variar o crecer, de una
forma sencilla. Por ejemplo, que un sistema tradicional soporte
aplicaciones de tiempo real, nuevos periféricos..
3. Características deseables de los
sistemas operativos
 Facilitar las entradas y salidas: Un sistema operativo debe hacerle fácil al
usuario el acceso y manejo de los dispositivos de Entrada/Salida del ordenador.
Como por ejemplo facilitar la impresión de documentos, gestión de interfaces de
entrada como teclado y ratón,..etc.

 Manejar las comunicaciones en red: El sistema operativo debe permitir al


usuario manejar con alta facilidad todo lo referente a la instalación y uso de las
redes de ordenadores. Este aspecto es cada vez más importante, puesto que se ha
generalizado el uso de redes locales e Internet.

 Disponer de un entorno amigable y de fácil uso: Hoy día los sistemas


operativos, sobre todo si están dirigidos al usuario final, deben proveer de un
entorno de trabajo que facilite su uso por parte del usuario. Atrás quedaron
los tiempos en los que el sistema operativo sólo proveía de una espartana interfaz
en línea de comandos.
4. Clasificación de sistemas operativos
Según la perspectiva con la que se observen los sistemas
operativos, pueden realizarse múltiples clasificaciones.
Entre ellas se pueden incluir las siguientes:

Por los servicios ofrecidos: En esta clasificación se


tiene en cuenta la visión del usuario final y puede ser la
siguiente:
4. Clasificación de sistemas operativos
4. Clasificación de sistemas operativos
 Los sistemas operativos monousuario son aquellos que únicamente soportan un
usuario a la vez, sin importar las características de la máquina sobre la que está
montado el sistema. En este sistema sólo un usuario trabaja con un ordenador. Todos
los dispositivos de hardware están a disposición de ese usuario y no pueden ser
utilizados por otros hasta que éste no finalice su uso. Soportan un único usuario a la
vez, sin importar el número de procesadores que tenga el ordenador o el número de
procesos o tareas que pueda ejecutar en un mismo instante de tiempo; como el MS-
DOS, Windows 3.1, Windows 95, Windows 98, Windows Millenium, Windows NT
Workstation, Windows 2000 Professional, Windows XP, Windows Vista, Windows 7,
Windows 8, Windows 8.1 y Windows 10.
No admiten múltiples usuarios usando el escritorio del sistema concurrentemente (y son
por lo tanto, sistemas operativos monousuario). Las versiones de servidor de Windows
proveen servicio de escritorio remoto a múltiples usuarios de forma concurrente a
través de Terminal Services.
Se puede convertir W10 en multiusuario a través de un parche:
http://profesorweb.es/2016/12/convierte-tu-windows-10-en-multiusuario/
4. Clasificación de sistemas operativos
 Los sistemas operativos multiusuario son capaces de dar servicio a más
de un usuario a la vez, también independientemente de la plataforma
hardware sobre la que esté montado el sistema. Son capaces de dar servicio
a uno o más usuarios a la vez, ya sea por medio de varias terminales
conectadas al ordenador o por medio de accesos remotos en una red
de comunicaciones. Son ejemplos: Linux, Windows NT Server, Windows
2000/2003/2008/2012/2016 Server.
4. Clasificación de sistemas operativos
 Los sistemas monotarea son aquellos que sólo permiten una tarea a la
vez por usuario. Puede darse el caso de un sistema multiusuario y monotarea,
en el cual se admiten varios usuarios al mismo tiempo, pero cada uno de ellos
puede estar haciendo sólo una tarea a la vez. De forma secuencial, cada
usuario esperará a que su proceso se ejecute después de finalizar el proceso
anterior.
4. Clasificación de sistemas operativos
 Los sistemas operativos multitarea soportan la ejecución de dos o
más trabajos activos al mismo tiempo. Esto trae como resultado que la
CPU siempre tenga alguna tarea que ejecutar, aprovechando al máximo su
utilización. Algunos ejemplos: UNIX, Linux, Windows 95, 98, NT, 2000,
Windows Vista, Windows 7,.., Windows 10.

 Los sistemas operativos monoproceso solamente son capaces de


manejar un procesador de la computadora, de manera que si la
computadora tuviese dos, uno de ellos le seria inútil. Sin embargo,
permiten simular la multitarea haciendo que el sistema realice una tarea
rotatoria con intercambio muy rápido. Como el MS-DOS y Windows 95, 98,
Millenium,..
4. Clasificación de sistemas operativos
 Los sistemas operativos multiproceso: Estos pueden ser simétricos o
asimétricos y se necesita que el hardware del ordenador tenga varios
procesadores. El sistema gestionará su utilización administrando la carga de
trabajo de cada uno. Ejemplos pueden ser UNIX, Linux o Windows 2000/2003
Server, Windows Vista, Windows 7,..,etc. La forma de utilizar los diferentes
procesadores por parte del SO puede hacerse de dos formas:

 Multiproceso Simétrico (SMP): El SO utilizará la potencia de los procesadores de


igual forma.

 Multiproceso Asimétrico (AMP): El SO reparte las tareas que está realizando a cada
procesador con los que cuenta el sistema informático. Determinados procesos los
ejecutará siempre un procesador, y el otro procesador sólo se utilizará para realizar
procesos o programas de usuario. En este caso, es posible que un procesador esté
siempre trabajando y el otro, en ocasiones, sin actividad.
4. Clasificación de sistemas operativos
Por la forma de ofrecer los servicios. En esta clasificación se encuentran:
 Sistemas centralizados. Hasta que los computadores personales no
tuvieron un precio accesible y suficiente potencia, la mayoría de los sistemas
utilizaban el modelo de proceso centralizado. Con este tipo de modelo los
computadores mainframe se encargaban de todo el procesamiento y los
usuarios manejaban únicamente terminales tontos (es decir, no disponían de
memoria, ni procesador).
4. Clasificación de sistemas operativos
 Sistemas distribuidos. Los sistemas operativos distribuidos son sistemas
cuasi-independientes que permiten distribuir los trabajos, tareas o procesos
entre un conjunto de procesadores. Puede ocurrir que este conjunto de
procesadores se encuentren en el mismo equipo o en equipos distintos (siendo,
en este último caso, transparente para el usuario).
Los sistemas operativos distribuidos más extendidos son los siguientes:
Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
4. Clasificación de sistemas operativos
 Sistemas operativos en red. Estos sistemas operativos 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 primordial de poder compartir los
diferentes recursos y la información del sistema. En este entorno, cada
computador mantiene su propio sistema operativo y su propio sistema de
archivos local.
Los sistemas operativos de red usados más ampliamente son: Windows
Server, Linux Server, etc.
4. Clasificación de sistemas operativos
 Sistemas operativos de escritorio. Estos sistemas operativos son los que se
utilizan en los equipos de sobremesa, estaciones de trabajo o portátiles.
También se les puede denominar como sistemas operativos cliente. Entre
ellos se encuentran: Windows XP Professional, Windows Vista, Windows 7 ,
Linux,..,etc.
4. Clasificación de sistemas operativos
Por su disponibilidad. En esta clasificación se encuentran:
 Sistemas operativos propietarios. Son aquellos que son propiedad
intelectual de alguna empresa. Esto implica 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.
4. Clasificación de sistemas operativos
 Sistemas operativos libres. Son aquellos que garantizan las
cuatro libertades del software:

 La libertad de usar el programa con cualquier


propósito.
 La libertad de estudiar cómo funciona el programa y
modificarlo, adaptándolo a las necesidades que tuviera el
usuario.
 La libertad de distribuir copias del programa, con lo que
se puede ayudar a otros usuarios.
 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.
4. Clasificación de sistemas operativos
 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 de libre, podrá ser
distribuido comercialmente (software comercial).

 De la misma manera, 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.
5. Procesos
 Un proceso en un programa en ejecución. Una de las
tareas más importantes de un sistema operativo es la de
administrar los procesos y tareas del sistema.

 Diferencia entre un programa y un proceso:


 Un proceso es una actividad de cierto tipo que contiene un programa;
entradas, salidas y estados.
 Un programa está compuesto por procesos.
5. Procesos
 Un proceso puede estar en cualquiera de los siguientes
tres estados:

 Listo: son los que pueden pasar a estado de ejecución si el


planificador del sistema operativo los selecciona, o sea cuando
llegue su turno (según su importancia y orden de llegada).

 En ejecución: son los que se están ejecutando en el procesador


en un momento dado.

 Bloqueado: son los que están esperando la respuesta de algún


otro proceso para poder continuar con su ejecución, por ejemplo
una operación de entrada/salida.
5. Procesos
 Todos los procesos, dentro de cualquier sistema operativo,
tienen unas características que los identifican. Así cada
proceso tiene un identificador que lo discrimina de los
demás, Este identificador de proceso se denomina PID; así
para ver el identificador de cada proceso en Unix o Linux
podemos verlo con ps.

 Definidos los estados que puede tener un proceso, podemos


ver en el siguiente gráfico como pueden pasar de un estado a
otro:
5. Procesos

Cola de procesos
Solo hay un
Quantum: proceso
tiempo de
proceso(nº de
ciclos)

Cola de procesos
5. Procesos
 Cuando un proceso o hilo pasa de un estado a otro, por
ejemplo de espera a ejecución, lo que se estará
produciendo es un cambio de contexto. Los
mecanismos basados en hilos hace que los sistemas
operativos sean mucho más rápidos y eficientes.

 Un proceso contiene lo siguiente:


 Sección de texto (código del programa).
 Actividad actual representada por el valor del contador de
programa y el contenido de los registros del procesador.
5. Procesos
 Además también incluye:

 Pila (stack), que contiene datos temporales


(parámetros de subrutinas, direcciones de retorno
y variables locales)

 Sección de datos, que contiene variables globales


y memoria dinámica.
5. Procesos
5. Procesos
5. Procesos
 Suponiendo la ejecución correcta de un Sistema Operativo,
diremos que el encargado de cargar un proceso es la parte
del sistema denominado cargador. El cargador prepara el
programa para ser lanzado a ejecución. Las funciones que
realiza son:

 Crea el BCP. Se le asigna un identificador (PID), una prioridad base


y todos los recursos a excepción de la CPU.
 Se inserta en la tabla de procesos del sistema.
 Se carga en memoria.
 Cuando ya tiene todos los recursos asignados se pone el campo de
estado del proceso del BCP a listo o preparado y se pone en cola a
disposición del planificador.
5. Procesos
 Una vez cargado el proceso y lanzado el
planificador, este realiza las funciones
necesarias para asignar nuevas
prioridades a los procesos de la cola y
escoge al de más prioridad para que pase a
ejecución.

 El estado de terminado se produce cuando


el proceso ha finalizado su ejecución, así no
ejecuta más instrucciones y el SO le retirará
todos los recursos que consume (siendo
descargado de memoria).
5.1 Planificación del procesador
 La planificación del procesador se refiere a la manera o
técnicas que se usan para decidir cuánto tiempo de
ejecución se le asigna a cada proceso del sistema y en
qué momento. Obviamente, si el sistema es monousuario y
monotarea no hay mucho que decidir, pero en el resto de los
sistemas esto es crucial para el buen funcionamiento del
sistema, pues determinará la correcta ejecución de los distintos
programas de aplicación que se estén ejecutando.

 El sistema operativo almacena en una tabla denominada tabla


de control de procesos la información relativa a cada proceso
que se esta ejecutando en el procesador. Para cada proceso se
le asigna un elemento de dicha tabla que se denomina bloque
de control de proceso (BCP) y la información que contiene para
cada proceso es la siguiente:
5.1 Planificación del procesador
 1) Identificación del proceso.
 2) Identificación del proceso padre.
 3) Información sobre el usuario y grupo que lo han
lanzado.
 4) Estado del procesador. El contenido de los
registros internos, contador de programa, etc. Es
decir el entorno volátil del proceso.
 5) Información de control de proceso
 6) Información del planificador.
 7) Segmentos de memoria asignados.
 8) Recursos asignados.
5.1 Planificación del procesador
5.2 Objetivos de la planificación
 Se buscan cuatro objetivos principales:

 Justicia: Todos los procesos son tratados de la misma forma, y en algún


momento obtienen su turno de ejecución o intervalos de tiempo de
ejecución hasta su terminación con éxito.

 Maximizar la Producción: El sistema debe finalizar el mayor número


de procesos por unidad tiempo.

 Minimizar el Tiempo de Respuesta: Cada usuario o proceso debe


observar que el sistema les responde consistentemente a sus
requerimientos. Así el usuario no percibirá tiempos de espera
demasiado largos.

 Evitar el aplazamiento indefinido: Los procesos deben terminar en


un plazo finito de tiempo. Esto es, el usuario no debe percibir que su
programa se ha parado o “colgado”.
5.3 Características a considerar de los procesos
 No todos los sistemas informáticos procesan el mismo tipo de
trabajos, y un algoritmo de planificación que en un sistema funciona
excelente puede dar un rendimiento pésimo en otro cuyos procesos tienen
características diferentes. Estas características pueden ser:

 Cantidad de Entrada/Salida: Existen procesos que realizan una gran


cantidad de operaciones de entrada y salida (por ejemplo aplicaciones de BD)

 Cantidad de Uso de CPU: Existen procesos que no realizan muchas


operaciones de entrada y salida, sino que usan intensivamente la unidad
central de procesamiento. Por ejemplo, operaciones con matrices y cálculos
matemáticos.
5.3 Características a considerar de los procesos

 Procesos en Tiempo Real: Si los procesos deben dar


respuesta en tiempo real se requiere que tengan prioridad para
los turnos de ejecución.

 Longevidad de los Procesos: Existen procesos que


típicamente requerirán varias horas para finalizar su labor,
mientras que existen otros que solo necesitan algunos
segundos.
5.4 Planificación apropiativa o no apropiativa
 La planificación apropiativa es aquélla en la cual, una vez que a un
proceso le toca su turno de ejecución ya no puede ser suspendido, ya no
se le puede arrebatar el uso de la CPU, hasta que el proceso no lo
determina no se le pasa el turno ejecución a otro proceso. Este esquema
puede ser peligroso, ya que si el proceso contiene accidental o
deliberadamente ciclos infinitos, el resto de los procesos pueden quedar
aplazados indefinidamente.

 La planificación no apropiativa es aquélla en que existe un reloj que


lanza interrupciones periódicas en las cuales el planificador toma el control y
se decide si el mismo proceso seguirá ejecutándose o se le da su turno a
otro proceso.
5.4 Planificación apropiativa o no apropiativa
 En la planificación no apropiativa, se pueden establecer
distintos algoritmos de planificación de ejecución de procesos.
Son algoritmos para determinar el orden de ejecución de
los procesos en el sistema:

 Algoritmo de operación por rondas (Round Robin).


Asigna por rondas tiempo de ejecución a los diferentes
procesos. Este algoritmo también se denomina Algoritmo de
Round-Robin, y la asignación de tiempos de ejecución a los
diferentes procesos es la misma y se realiza de forma
secuencial. A cada proceso se le asigna el mismo quantum,
es decir, el mismo intervalo de tiempo de ejecución. La
selección de entre los procesos se realiza mediante una cola
FIFO (First in, First Out, El primero en entrar es el primero
en salir).
5.4 Planificación apropiativa o no apropiativa
 Algoritmo FCFS. El primero en llegar, primero en
ejecutarse (First Come, First Serve). Los ciclos de CPU
de cada proceso se asignan en función de una cola FIFO. En
este caso, al primer proceso que llega se le asignan tiempos
o ciclos de CPU hasta que termina completamente. A
continuación, se ejecuta completo el siguiente proceso que
hay en la cola FIFO, y así sucesivamente hasta finalizar la
ejecución del ultimo proceso.
5.4 Planificación apropiativa o no apropiativa

 Algoritmo STR (Short Time Remainder, Resto de


tiempo breve).
Este algoritmo permite asignar el tiempo de ejecución de
forma prioritaria a procesos muy cortos para ejecutarlos en
el menor tiempo posible. Si está ejecutando un proceso y
llega otro, independientemente de la duración del nuevo, el
proceso que está en ejecución finalizará. Una vez finalizado,
el siguiente proceso a consumir ciclos de CPU será el más
corto de los que haya en la cola de espera.
5.4 Planificación apropiativa o no apropiativa
 Algoritmo SRTF (Shortest Remaining Time First, Primero el de
tiempo restante más breve).
Es una variedad del STR, pero en este caso la asignación de ciclos de
CPU se hace en función del proceso al que le queden menos ciclos
para terminar. De esta forma, cuando llega un proceso nuevo, se
estiman los ciclos que le quedan tanto al proceso que hay en ejecución
como al que ha llegado. De los que hay en ese momento en la cola de
procesos a ejecutar, se terminará aquel al que le queden menos ciclos
para su finalización, y así sucesivamente hasta terminar con todos los
procesos planificados.
5.5 Tipos de planificadores
 Se denomina planificador a aquella parte del sistema
operativo encargada de asignar los recursos del sistema de
manera que se consigan los objetivos de comportamiento
especificados. Hay tres tipos de planificadores que pueden
coexistir en un sistema operativo, planificador a largo,
medio y corto plazo.

 El planificador de largo plazo (PLP) o de alto nivel, que


suministra procesos a la cola de preparados.

 El planificador de corto plazo o de bajo nivel es el que


asigna y desasigna la CPU.
5.5 Tipos de planificadores
 El planificador de medio plazo: envía al disco
procesos de poco interés, para abrir memoria
principal para nuevos procesos -> Intercambio
(swapping).
5.6 Sincronización
 Cuando se ejecutan varios procesos a la vez, es posible que
éstos compartan uno o varios recursos del sistema (monitor,
memoria, etc...). El objetivo del S.O. es permitir que varios
procesos compartan recursos sin que se produzcan problemas.
Los procesos pueden ser:
 Cooperantes.

 Independientes.
5.6 Sincronización
 En el primer caso se entiende que los procesos interactúan
entre sí y pertenecen a una misma aplicación. En el caso de
procesos independientes en general se debe a que no
interactúan y un proceso no requiere información de otros.

 En el caso de los procesos cooperantes es posible que se


produzcan situaciones peligrosas en las que se pierda el
control, así es necesario que exista una forma de prohibir que
algún proceso lea o escriba datos compartidos a la vez.
5.6 Sincronización
 Debemos conseguir:

 Exclusión mutua: Es un mecanismo por el que se asegura que sólo una


persona o proceso está haciendo algo en un instante determinado y los
otros están excluidos (por ejemplo dos procesos que comparten una
sección de memoria).

 Sección Crítica: Es una sección de código en la que se realizan


operaciones que pueden dar lugar a interferencias con otros procesos.
Cuando un proceso está ejecutando su sección crítica, ningún otro proceso
puede estar en ella, es decir, la sección crítica debe ejecutarse en exclusión
mutua. Hay que tener en cuenta que un proceso no puede dormirse en su
sección crítica porque estará bloqueando la sección crítica de otros procesos
en ejecución.
5.6 Sincronización
 La sincronización implicará que dos o más procesos
concurrentes no podrán utilizar los mismos recursos en el
mismo instante de tiempo. Por esta razón habrá procesos en
ejecución y otros que estén bloqueados.
6. Gestión de la memoria
 Si se pretende que un proceso pueda ejecutarse es
necesario que éste sea cargado en memoria principal,
ya que ningún proceso se puede activar antes de que
se le asigne el espacio de memoria que requiere. Por
lo tanto, la memoria será otro recurso que el sistema
operativo tendrá que gestionar y el elemento que se
encargará de ello recibe el nombre de gestor de
memoria.

 La misión del gestor de memoria es la de asignar


memoria principal a los procesos que la
soliciten. Entre otras cosas tendrá que:
6. Gestión de la memoria
 Llevar el control de las zonas que están en uso y las que no
lo están.

 Asignar memoria a los procesos cuando la necesiten y


retirársela cuando terminen.

 Establecer mecanismos para que un proceso no invada la


memoria asignada a otro proceso.

 Administrar el intercambio entre memoria principal y


memoria secundaria cuando la memoria central sea
insuficiente, etc.
6. Gestión de la memoria
Por tanto, podemos decir que los principales objetivos de la gestión de
la memoria son:

 Reubicación: Consiste en decidir en qué zona de la memoria se


ubicará un proceso y cómo se gestionará la posibilidad de que un
proceso cambie de zona de memoria asignada.

 Control de memoria: El sistema operativo tiene que llevar un


control de las zonas de memoria libres y de las zonas de
memoria asignadas, así como conocer a qué proceso pertenece
cada una de las zonas de memoria asignadas. Además, tiene que ser
capaz de gestionar esta asignación de memoria, de tal manera que
proporcionen memoria a los procesos que lo necesiten y se la
retire cuando éstos hayan terminado.
6. Gestión de la memoria
 Protección: Cuando hay varios procesos en memoria simultáneamente, cada
uno estará ubicado en una posición de memoria distinta. El sistema
operativo tiene que conseguir que la zona de memoria asignada a un
proceso no sea accedida ni alterada por los demás. Para conseguir
esto, cada vez que un proceso vaya a realizar una operación tendrá que
chequear que ésta no acceda a una zona prohibida de la memoria; es decir, a
una zona de memoria ya asignada a otro proceso.

 Utilización de dos niveles de memoria: En muchas ocasiones la memoria


principal no es suficiente para proporcionar toda la memoria que necesita un
proceso o para almacenar todos los procesos que se pueden ejecutar. En
esos casos el sistema operativo puede apoyarse en la memoria secundaria
para saciar todas las necesidades de memoria que tienen los procesos. Por
tanto, tendrá que proporcionar los medios para que esto sea posible y tendrá
que encargarse de gestionar la transferencia de información entre la
memoria principal y la secundaria.
6. Gestión de la memoria
El sistema de gestión de la memoria que se use dependerá
del ordenador y sistema operativo en particular que se
tenga. Si el sistema es monotarea se pueden considerar
técnicas sencillas de gestión de la memoria, puesto que sólo
se tiene un proceso cargado en la memoria. Para sistemas
multitarea la gestión se complica, ya que se necesitan tener
varios procesos cargados en la memoria simultáneamente,
con sus propias estructuras de datos.
7. Gestión de memoria en sistemas
operativos monotarea
 En los comienzos de los sistemas operativos, éstos
no incluían ningún gestor de memoria y el
programador tenía un control completo sobre el
espacio total de memoria. Pero, como puede
suponerse, esto era una tarea extremadamente
complicada.
7. Gestión de memoria en sistemas
operativos monotarea
 El esquema más sencillo de gestión de memoria es
aquél en el que, en cada instante, sólo se tiene un
proceso en memoria.

 En este esquema hace falta un mecanismo de


protección para que resulte imposible el acceso a
la zona de memoria destinada al sistema operativo
por parte del proceso de usuario que se esté
ejecutando.
8. Gestión de memoria en sistemas
operativos multitarea
 Actualmente la mayoría de los sistemas operativos
son sistemas multitarea, en los que va a haber
varios procesos simultáneamente en ejecución.
Para que esto sea posible, todos estos procesos
deberán estar también simultáneamente en
memoria.

 Por tanto, deberá haber mecanismos de gestión


para distribuir la memoria principal entre
todos estos procesos que quieren ejecutarse.
8. Gestión de memoria en sistemas
operativos multitarea
8.1 Intercambio o swapping
 En los sistemas multitarea habrá varios procesos en
memoria principal, sin embargo, puede suceder que
haya más procesos de los que caben en memoria y
no haya memoria principal disponible para todos. En
esos casos algunos de esos procesos se almacenan en
disco, para posteriormente recuperarlos.

 El intercambio o swapping hace referencia a las


operaciones de eliminar de la memoria principal procesos
suspendidos, llevarlos al disco y cargar del disco a memoria
principal procesos para su ejecución.
8.1 Intercambio o swapping
 La memoria en disco que el sistema operativo
reserva para almacenar estos procesos suspendidos
recibe el nombre de espacio de intercambio o
espacio de swapping y siempre va a almacenar
procesos completos que se han retirado
completamente de memoria.
8.2 Asignación con particiones fijas
 Una manera de gestionar la memoria principal cuando hay
varios procesos, y quizás la más fácil, consiste en dividir
lógicamente la memoria física en varias particiones de igual
o diferente tamaño y asignar cada una de ellas a un
proceso.

 La gestión de la memoria con particiones fijas supone que la


división de ésta se ha realizado con anterioridad al comienzo
de la ejecución de los procesos. Las particiones, una vez
hechas por el sistema operativo, se mantienen fijas tanto en
número como en tamaño.
8.2 Asignación con particiones fijas
La forma de gestión y asignación de la memoria se puede
resumir de la siguiente forma:

 Cuando llega una tarea, ésta se pone en una cola de tareas.

 El intercambiador tiene en cuenta los requerimientos de


memoria de cada una de ellas y las particiones disponibles.

 Si una tarea tiene espacio disponible en memoria, se ubica (o


reubica) en una partición y puede competir por el uso de
la CPU.

 Cuando se termina una tarea, se libera la partición de


memoria que ocupa, pudiendo el intercambiador asignar esta
partición a otra tarea de la cola de tareas.
8.2 Asignación con particiones fijas
La gestión y asignación de particiones a los
procesos se puede hacer siguiendo dos tipos de
organización:
 Tener una cola por partición. Se tiene una cola por
cada partición y se coloca cada trabajo en la cola de la
partición más pequeña en que quepa dicho trabajo, a fin
de desperdiciar el menor espacio posible. La
planificación de cada cola se hace por separado y,
como cada cola tiene su propia partición, no hay
competencia entre las colas por la memoria. La
desventaja de este método se hace evidente cuando la
cola de una partición grande está vacía y la cola de una
partición pequeña está llena.
8.2 Asignación con particiones fijas
8.2 Asignación con particiones fijas
 Tener una única cola común a todas las
particiones. Se tiene una única cola común para
todas las particiones. El sistema operativo decidirá
en que partición se ubica cada proceso en función
de la disponibilidad de particiones y las
necesidades del proceso en cuestión.
8.2 Asignación con particiones fijas
 Tanto si se adopta la estrategia de tener una cola por
partición como si se adopta la estrategia de tener una
cola común para todas las particiones, tendrá que haber
mecanismos para proteger a un proceso de los
demás; es decir, impedir que un proceso pueda acceder
a una zona de memoria que está fuera de la memoria
correspondiente a la partición en la que se encuentra.

 Otro problema que aparece cuando se gestiona la


memoria con particiones fijas es el de la
fragmentación, la cual se produce, cuando en la
memoria hay áreas ocupadas intercaladas con áreas
libres; es decir, cuando no hay una única área ocupada ni
una única área libre.
8.3 Asignación con particiones variables
 La asignación de memoria con particiones fijas tiene el
inconveniente de que hay que determinar muy bien el
tamaño de las particiones. La solución a este problema
está en permitir que los tamaños de las particiones
varíen dinámicamente.

 Este método de gestión de memoria se conoce con el


nombre de asignación de la memoria con particiones
variables.

 Este mecanismo se ajusta a la realidad de que el número y


tamaño de los procesos varía dinámicamente y, por tanto,
lo lógico es que el número, posición y tamaño de las
particiones también lo haga.
8.3 Asignación con particiones variables
 No se está sujeto a un número fijo de particiones que
pudieran ser muy grandes o demasiado pequeñas, con lo
que se consigue un mejor uso de la memoria
aunque a costa de una mayor complejidad.

 Para poder manejar correctamente la asignación de


memoria con particiones variables, el sistema operativo
tiene que llevar el control de qué partes de la memoria
están disponibles o libres (huecos) y qué partes están
ocupadas. Inicialmente, toda la memoria está disponible
y se considera como un gran bloque libre.
8.3 Asignación con particiones variables
 El procedimiento que se sigue para
manejar y gestionar la memoria es el
siguiente:

 Cuando llega un proceso y precisa memoria


se busca un hueco libre suficientemente grande
para él. Si se encuentra uno, se le asigna sólo la
memoria que sea necesaria, manteniendo el
resto disponible para satisfacer futuras solicitudes.
Es decir, si el bloque que se le va a asignar es
mayor de lo que necesita el proceso, se parte en
dos: uno se asigna al proceso que llega y el otro
se devuelve al conjunto de bloques libres.
8.3 Asignación con particiones variables
 Cuando un proceso acaba, libera su bloque de
memoria, que se devuelve entonces al conjunto
de huecos. Si el nuevo hueco es adyacente a otros,
se fusionan para formar un hueco mayor.
8.3 Asignación con particiones variables
9. Paginación
 El problema más grave que se produce en los sistemas de gestión de
memoria anteriores es la fragmentación externa, presente en
ambos. Generalmente, esta situación se produce cuando la memoria
disponible no es contigua, sino que está fragmentada en muchos
bloques repartidos a lo largo del espacio de direcciones. Como la
memoria asignada a un proceso en particular tiene que ser contigua,
esta memoria que está libre, pero al mismo tiempo dispersa, no se
puede usar.

 Este problema tiene como solución la paginación, que es un


mecanismo de organización y asignación de la memoria que
permite que la memoria asignada a un proceso no tenga por qué ser
contigua, de forma que siempre que se disponga de espacio, aunque
éste no sea adyacente, se pueda asignar al proceso.
9. Paginación
 Básicamente, en un sistema de memoria con paginación, la
memoria física se divide conceptualmente en un número
de bloques de tamaños fijos, denominados marcos de
página.

 Por otra parte, el espacio de direcciones lógico de un proceso


(es decir, todas las posibles direcciones que puede
generar el proceso) también se divide en bloques de
tamaño fijo, llamados páginas, que son del mismo tamaño
que los marcos de página.
9. Paginación
 Entonces, la asignación de memoria consiste en
encontrar un número suficiente de marcos de
página sin usar para cargar las páginas del
proceso que está solicitando cargarse en
memoria.

 Como cada página se asigna a un marco por


separado, no es necesario que estos marcos de
página asignados a un proceso se encuentren
situados en zonas contiguas de la memoria física.
9. Paginación
Resumiendo:
 Cuando se quiere cargar un proceso en memoria, se
examina su tamaño, el cual se expresa en páginas.
 Entonces se examina la memoria disponible, que se
mantiene en forma de lista de marcos de páginas libres.
 Si el trabajo requiere x páginas, tiene que haber x marcos
de página disponibles en memoria para poder almacenar
el proceso.
 Si las hay, se cargará el proceso en esos marcos de
página, se marcarán los marcos como ocupados y se
creará la tabla de páginas para ese proceso.
 Si no había marcos suficientes para el proceso,
éste tendrá que esperar a que los haya.
9. Paginación
9. Paginación