<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://1984.lsi.us.es/wiki-ssoo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peducemar</id>
		<title>Wiki de Sistemas Operativos - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://1984.lsi.us.es/wiki-ssoo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peducemar"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php/Especial:Contribuciones/Peducemar"/>
		<updated>2026-04-09T23:45:15Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_con_listado_de_personas_que_han_contribuido&amp;diff=2428</id>
		<title>Página con listado de personas que han contribuido</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_con_listado_de_personas_que_han_contribuido&amp;diff=2428"/>
				<updated>2012-01-28T14:37:28Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A continuación, la lista de usuarios/as de la Universidad de Sevilla que han contribuido a la wiki. Si ponéis tu usuario/a estás solicitando al profesor que evalúe tus contribuciones a la wiki para la subida de notas de hasta 2 puntos posible:&lt;br /&gt;
&lt;br /&gt;
* luigarhor&lt;br /&gt;
* rafperper&lt;br /&gt;
* sergaralo&lt;br /&gt;
* josalgrod1&lt;br /&gt;
* felgaroje&lt;br /&gt;
* luimunlei&lt;br /&gt;
* [https://1984.lsi.us.es/wiki-ssoo/index.php/Usuario:Lorruimor Lorruimor]&lt;br /&gt;
* albsolnog&lt;br /&gt;
* framorexp&lt;br /&gt;
* javgarang&lt;br /&gt;
* FerGuaTol&lt;br /&gt;
* jesgonbel&lt;br /&gt;
* fraperdom&lt;br /&gt;
* antdomflo&lt;br /&gt;
* antmorzam&lt;br /&gt;
* migoligon&lt;br /&gt;
* danplaseg&lt;br /&gt;
* peducemar&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Estructura_t%C3%ADpica_de_dispositivo_E/S&amp;diff=2355</id>
		<title>Estructura típica de dispositivo E/S</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Estructura_t%C3%ADpica_de_dispositivo_E/S&amp;diff=2355"/>
				<updated>2012-01-21T11:23:59Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Deshecha la edición 2351 de Danplaseg (disc.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En general, la estructura típica de un dispositivo de entrada/salida está dividida en tres partes:&lt;br /&gt;
&lt;br /&gt;
* '''Adaptador de Entrada/Salida del ordenador, o interfaz del bus:''' Se encarga de traducir las señales al dialecto empleado por el bus del ordenador. Algunos ejemplos de interfaces de este tipo son los buses PCI, PCMCIA, USB, PCI-express o SATA entre muchos otros.&lt;br /&gt;
* '''Control del dispositivo, o puerto de lectura/escritura:''' Ofrece una interfaz que es empleada por el gestor de dispositivos para gobernar el dispositivo, que dispone de:&lt;br /&gt;
**Registros de órdenes&lt;br /&gt;
**Registros de estado&lt;br /&gt;
**Registros de lectura/escritura, o alternativamente una pequeña memoria propia.&lt;br /&gt;
* '''Adaptador de Entrada/Salida del dispositivo, o interfaz del dispositivo:''' Se encarga de traducir las señales al dialecto empleado por el dispositivo.&lt;br /&gt;
&lt;br /&gt;
Cuanto más elaborado sea el puerto de lectura/escritura, mayor rendimiento se puede llegar a alcanzar, puesto que el gestor de dispositivo será más sencillo (y eso implica menor número de instrucciones a ejecutar en el gestor de dispositivo).&lt;br /&gt;
&lt;br /&gt;
La conexión existente entre el procesador y el dispositivo de E/S queda resumida de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dispositivos ES.svg|Estructura del dispositivo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Gestor de dispositivos =&lt;br /&gt;
&lt;br /&gt;
El gestor de dispositivo, popularmente conocido por la palabra inglesa ''driver'', es la parte del sistema operativo que se encarga de gobernar un cierto dispositivo o una familia de dispositivos de naturaleza similar. El gestor de dispositivo se trata de una pieza de software que conoce los detalles de bajo nivel del dispositivo. De esta manera el driver hace uso del conjunto de instrucciones que ofrece el puerto de E/S, los registros de estado y de lectura&lt;br /&gt;
y escritura, para gobernar el dispositivo. Si el fabricante del dispositivo no ofrece un ''driver'' para un cierto sistema operativo, el dispositivo y los recursos que ofrece no puede ser gestionado por el sistema operativo. Por lo general el fabricante de un dispositivo desarrolla el gestor de dispositivo para los sistemas operativos mayoritarios (i.e. Windows y Linux) para asegurar que su dispositivo alcanza la mayor cuota de usuarios posibles.&lt;br /&gt;
&lt;br /&gt;
Los gestores de dispositivos representan en torno al 70% de los sistemas operativos&amp;lt;ref&amp;gt;Construction of a Highly Dependable Operating System, Proc. 6th European Dependable Computing Conference (EDCC-6), pp. 3-12, Oct. 2006&amp;lt;/ref&amp;gt;. Por lo general, en los sistemas operativos monolíticos se ejecutan en el espacio del núcleo del sistema operativo por razones de rendimiento. Por tanto, se ejecutan en modo privilegiado, así un error de programación en un ''driver'' lleve a un cuelgue completo del sistema con casi total seguridad. Se estima que en torno al 85% de cuelgues de Microsoft Windows XP &amp;lt;ref&amp;gt;Recovering Device Drivers, Proc. OSDI '04, pp. 1-16, 2004&amp;lt;/ref&amp;gt;se debe a errores de programación en ''drivers''.&lt;br /&gt;
&lt;br /&gt;
No obstante, en sistemas operativos convencionales como Windows, Linux y Mac, existen mecanismos que permiten ejecutar ''drivers'' como procesos de usuario, tal y como sucede en sistemas operativo de tipo micronúcleo. De esta manera, un error de programación no produce el cuelgue del sistema completo. No obstante, dichos gestores de dispositivos se limitan a dispositivos particularmente lentos en los que la tasa de transferencia de datos es baja y los tiempos de respuesta del dispositivo son altos, por ejemplo, los gestores de dispositivos para lectores de tarjetas inteligentes (smartcards, lo que incluye las tarjetas SIM que se emplean en telefonía móvil) en Linux funcionan en espacio de usuario.&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Est%C3%A1tico&amp;diff=2197</id>
		<title>Solución Ejercicio clase Mejor Ajuste Estático</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Est%C3%A1tico&amp;diff=2197"/>
				<updated>2011-12-19T09:04:53Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                  A&lt;br /&gt;
              P1  &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                              B&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                            A    &lt;br /&gt;
              P3  |   |   &amp;lt;   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                  D      &lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                        D            &lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- El proceso 4 que ocupa 9 unidades de memoria no cabría en la memoria C que es de 8 ¿no? Debería usarse la memoria D ¿no?&lt;br /&gt;
&lt;br /&gt;
- Yo he cambiado la C por la D porque creo que es una errata de quien lo ha subido.&lt;br /&gt;
&lt;br /&gt;
- Sí que era una errata. Gracias por corregirme.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2036</id>
		<title>Ejercicios administración de memoria contigua</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2036"/>
				<updated>2011-12-02T16:00:28Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejercicio 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Ejercicios Clase=&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 1==&lt;br /&gt;
Ejercicio visto el martes 29 de Noviembre de 2011 en clase.&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[Solución Ejercicio clase Primer Ajuste|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 2==&lt;br /&gt;
Segundo ejercicio visto el martes 29 de Noviembre de 2011 en clase. &lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  1  |&lt;br /&gt;
 P3 |  0 |  5  |  3  |&lt;br /&gt;
 P4 |  0 |  2  |  8  |&lt;br /&gt;
 P5 |  0 |  1  |  7  |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
Calcula los cronogramas tal y como se hizo en el ejercicio anterior. &lt;br /&gt;
&lt;br /&gt;
PD: Ejercicio NO resuelto en clase.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2035</id>
		<title>Ejercicios administración de memoria contigua</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2035"/>
				<updated>2011-12-02T15:57:47Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejercicios Clase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Ejercicios Clase=&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 1==&lt;br /&gt;
Ejercicio visto el martes 29 de Noviembre de 2011 en clase.&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[Solución Ejercicio clase Primer Ajuste|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 2==&lt;br /&gt;
Segundo ejercicio visto el martes 29 de Noviembre de 2011 en clase [[2º Ejercicio clase 29/11/11|Ver Ejercicio]]&lt;br /&gt;
(Por resolver).&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2034</id>
		<title>Ejercicios administración de memoria contigua</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2034"/>
				<updated>2011-12-02T15:56:54Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Página creada con '=Ejercicios Clase=  ==Ejercicio 1== Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase Ver Ejercicio, junto con las soluciones …'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Ejercicios Clase=&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 1==&lt;br /&gt;
Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase [[Ejercicio clase 291111|Ver Ejercicio]], junto con las soluciones también vistas en clase.&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 2==&lt;br /&gt;
Segundo ejercicio visto el martes 29 de Noviembre de 2011 en clase [[2º Ejercicio clase 29/11/11|Ver Ejercicio]]&lt;br /&gt;
(Por resolver).&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2033</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2033"/>
				<updated>2011-12-02T15:55:38Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Traslado de Ejercicios&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m.&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Por tanto, los procesos nunca esperan siempre que hay alguna partición libre. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m.&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Al quedar libre una partición, se asigna el mayor proceso que quepa en ella. Por tanto, no es necesario que los procesos esperen indefinidamente a que la menor partición en la que quepan quede libre. Basta que haya una partición libre para que pueda ser asignado.&lt;br /&gt;
&lt;br /&gt;
El principal inconveniente de este criterio es que los procesos que mayor desperdicio producen van a ser postergados indefinidamente. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m.&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Din%C3%A1mico&amp;diff=2026</id>
		<title>Solución Ejercicio clase Mejor Ajuste Dinámico</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Din%C3%A1mico&amp;diff=2026"/>
				<updated>2011-12-02T10:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Página blanqueada&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=2%C2%BA_Ejercicio_clase_29/11/11&amp;diff=2020</id>
		<title>2º Ejercicio clase 29/11/11</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=2%C2%BA_Ejercicio_clase_29/11/11&amp;diff=2020"/>
				<updated>2011-12-01T21:01:28Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: creacion enunciado&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  1  |&lt;br /&gt;
 P3 |  0 |  5  |  3  |&lt;br /&gt;
 P4 |  0 |  2  |  8  |&lt;br /&gt;
 P5 |  0 |  1  |  7  |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2019</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2019"/>
				<updated>2011-12-01T21:01:14Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: errata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[Solución Ejercicio clase Primer Ajuste|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2018</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2018"/>
				<updated>2011-12-01T20:59:21Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejercicios Clase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
[PENDIENTE DE REVISIÓN]&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Cuando una partición queda libre, se asigna el mayor proceso que quepa en ella, sin importar el desperdicio. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ejercicios Clase=&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 1==&lt;br /&gt;
Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase [[Ejercicio clase 291111|Ver Ejercicio]], junto con las soluciones también vistas en clase.&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 2==&lt;br /&gt;
Segundo ejercicio visto el martes 29 de Noviembre de 2011 en clase [[2º Ejercicio clase 29/11/11|Ver Ejercicio]]&lt;br /&gt;
(Por resolver).&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2017</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2017"/>
				<updated>2011-12-01T20:58:16Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejercicio 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
[PENDIENTE DE REVISIÓN]&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Cuando una partición queda libre, se asigna el mayor proceso que quepa en ella, sin importar el desperdicio. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ejercicios Clase=&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 1==&lt;br /&gt;
Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase [[Ejercicio clase 291111|Ver Ejercicio]], junto con las soluciones también vistas en clase.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2016</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2016"/>
				<updated>2011-12-01T20:57:58Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejercicios Clase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
[PENDIENTE DE REVISIÓN]&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Cuando una partición queda libre, se asigna el mayor proceso que quepa en ella, sin importar el desperdicio. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ejercicios Clase=&lt;br /&gt;
&lt;br /&gt;
=Ejercicio 1=&lt;br /&gt;
Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase [[Ejercicio clase 291111|Ver Ejercicio]], junto con las soluciones también vistas en clase.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2015</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2015"/>
				<updated>2011-12-01T20:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejercicios Clase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
[PENDIENTE DE REVISIÓN]&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Cuando una partición queda libre, se asigna el mayor proceso que quepa en ella, sin importar el desperdicio. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Ejercicios Clase===&lt;br /&gt;
&lt;br /&gt;
=Ejercicio 1=&lt;br /&gt;
Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase [[Ejercicio clase 291111|Ver Ejercicio]], junto con las soluciones también vistas en clase.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2014</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2014"/>
				<updated>2011-12-01T20:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: creación apartado Ejercicios Clase&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
[PENDIENTE DE REVISIÓN]&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Cuando una partición queda libre, se asigna el mayor proceso que quepa en ella, sin importar el desperdicio. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ejercicios Clase==&lt;br /&gt;
&lt;br /&gt;
=Ejercicio 1=&lt;br /&gt;
Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase [[Ejercicio clase 291111|Ver Ejercicio]], junto con las soluciones también vistas en clase.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2013</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=2013"/>
				<updated>2011-12-01T20:56:06Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplo 3 */ traslado a otra parte de la pagina&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
[PENDIENTE DE REVISIÓN]&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Cuando una partición queda libre, se asigna el mayor proceso que quepa en ella, sin importar el desperdicio. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2012</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2012"/>
				<updated>2011-12-01T20:55:20Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[Solución Ejercicio clase Primer Ajuste|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Primer_Ajuste&amp;diff=2010</id>
		<title>Solución Ejercicio clase Primer Ajuste</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Primer_Ajuste&amp;diff=2010"/>
				<updated>2011-12-01T20:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Solución Ejercicio clase Por Orden de LLegada trasladada a Solución Ejercicio clase Primer Ajuste&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                  A&lt;br /&gt;
              P1  &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                              B&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                   C             &lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---|   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                  D      &lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                        D            &lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Por_Orden_de_LLegada&amp;diff=2011</id>
		<title>Solución Ejercicio clase Por Orden de LLegada</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Por_Orden_de_LLegada&amp;diff=2011"/>
				<updated>2011-12-01T20:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Solución Ejercicio clase Por Orden de LLegada trasladada a Solución Ejercicio clase Primer Ajuste&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECCIÓN [[Solución Ejercicio clase Primer Ajuste]]&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2009</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2009"/>
				<updated>2011-12-01T20:54:33Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[solución Ejercicio clase Por Orden de LLegada|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Din%C3%A1mico&amp;diff=2008</id>
		<title>Solución Ejercicio clase Mejor Ajuste Dinámico</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Din%C3%A1mico&amp;diff=2008"/>
				<updated>2011-12-01T20:54:10Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Página creada con 'Mismo cronograma que Primer Ajuste'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mismo cronograma que Primer Ajuste&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2007</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2007"/>
				<updated>2011-12-01T20:53:50Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[solución Ejercicio clase Por Orden de LLegada|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Primer_Ajuste&amp;diff=2006</id>
		<title>Solución Ejercicio clase Primer Ajuste</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Primer_Ajuste&amp;diff=2006"/>
				<updated>2011-12-01T20:52:20Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Solucion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                  A&lt;br /&gt;
              P1  &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                              B&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                   C             &lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---|   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                  D      &lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                        D            &lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Est%C3%A1tico&amp;diff=2005</id>
		<title>Solución Ejercicio clase Mejor Ajuste Estático</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_Ejercicio_clase_Mejor_Ajuste_Est%C3%A1tico&amp;diff=2005"/>
				<updated>2011-12-01T20:49:37Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Solución&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                  A&lt;br /&gt;
              P1  &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                              B&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                            A    &lt;br /&gt;
              P3  |   |   &amp;lt;   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                  C      &lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                        D            &lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2004</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2004"/>
				<updated>2011-12-01T20:45:05Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma por Orden de Llegada      [[solución Ejercicio clase Por Orden de LLegada|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2003</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2003"/>
				<updated>2011-12-01T20:42:49Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático &lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma por Orden de Llegada&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2002</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2002"/>
				<updated>2011-12-01T20:40:56Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático &lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma por Orden de Llegada&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2001</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2001"/>
				<updated>2011-12-01T20:40:41Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático &lt;br /&gt;
b) Determina el cronograma por Orden de Llegada&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2000</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=2000"/>
				<updated>2011-12-01T20:39:54Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* EJERCICIO DE CLASE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Dada la siguiente configuración de procesos:&lt;br /&gt;
&lt;br /&gt;
   ------------------&lt;br /&gt;
   | H0 |  t  | m(P)|&lt;br /&gt;
---------------------&lt;br /&gt;
P1 |  0 |  4  |  3  |  &lt;br /&gt;
P2 |  1 |  4  |  1  |&lt;br /&gt;
P3 |  2 |  5  |  2  |&lt;br /&gt;
P4 |  3 |  2  |  9  |&lt;br /&gt;
P5 |  4 |  1  | 15  |&lt;br /&gt;
---------------------&lt;br /&gt;
&lt;br /&gt;
Y la siguiente configuración de memoria:&lt;br /&gt;
_______&lt;br /&gt;
|_____| a = 4KB&lt;br /&gt;
|_____| b = 4KB&lt;br /&gt;
|     |&lt;br /&gt;
|_____| c = 8KB&lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     | d = 16KB&lt;br /&gt;
|_____|&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático &lt;br /&gt;
b) Determina el cronograma por Orden de Llegada&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=1999</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=1999"/>
				<updated>2011-12-01T20:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==EJERCICIO DE CLASE==&lt;br /&gt;
Dada la siguiente configuración de procesos:&lt;br /&gt;
&lt;br /&gt;
   | H0 |  t  | m(P)|&lt;br /&gt;
---------------------&lt;br /&gt;
P1 |  0 |  4  |  3  |  &lt;br /&gt;
P2 |  1 |  4  |  1  |&lt;br /&gt;
P3 |  2 |  5  |  2  |&lt;br /&gt;
P4 |  3 |  2  |  9  |&lt;br /&gt;
P5 |  4 |  1  | 15  |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y la siguiente configuración de memoria:&lt;br /&gt;
_______&lt;br /&gt;
|_____| a = 4KB&lt;br /&gt;
|_____| b = 4KB&lt;br /&gt;
|     |&lt;br /&gt;
|_____| c = 8KB&lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     | d = 16KB&lt;br /&gt;
|_____|&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático &lt;br /&gt;
b) Determina el cronograma por Orden de Llegada&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=1998</id>
		<title>Ejercicio clase 291111</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicio_clase_291111&amp;diff=1998"/>
				<updated>2011-12-01T20:38:36Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Página creada con 'Dada la siguiente configuración de procesos:     | H0 |  t  | m(P)| --------------------- P1 |  0 |  4  |  3  |   P2 |  1 |  4  |  1  | P3 |  2 |  5  |  2  | P4 |  3 |  2  |  9…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dada la siguiente configuración de procesos:&lt;br /&gt;
&lt;br /&gt;
   | H0 |  t  | m(P)|&lt;br /&gt;
---------------------&lt;br /&gt;
P1 |  0 |  4  |  3  |  &lt;br /&gt;
P2 |  1 |  4  |  1  |&lt;br /&gt;
P3 |  2 |  5  |  2  |&lt;br /&gt;
P4 |  3 |  2  |  9  |&lt;br /&gt;
P5 |  4 |  1  | 15  |&lt;br /&gt;
&lt;br /&gt;
Y la siguiente configuración de memoria:&lt;br /&gt;
_______&lt;br /&gt;
|_____| a = 4KB&lt;br /&gt;
|_____| b = 4KB&lt;br /&gt;
|     |&lt;br /&gt;
|_____| c = 8KB&lt;br /&gt;
|     |&lt;br /&gt;
|     |&lt;br /&gt;
|     | d = 16KB&lt;br /&gt;
|_____|&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático &lt;br /&gt;
b) Determina el cronograma por Orden de Llegada&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1997</id>
		<title>SO multiprogramables con particiones fijas</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1997"/>
				<updated>2011-12-01T20:32:47Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Añadir enlace a ejercicio dado en clase&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En la administración de memoria con particiones de tamaño fijo consideramos que la memoria se encuentra dividida en porciones fijas de diferente tamaño. La división se realizaría durante la instalación del sistema operativo, y para modificar el esquema de particionamiento necesitaríamos reiniciar el sistema para que surtan efecto los cambios. Por cada partición sólo puede haber un único proceso. Por lo tanto, se pueden ejecutar tantos procesos como particiones haya.&lt;br /&gt;
&lt;br /&gt;
Esta aproximación tiene dos limitaciones importantes, que son:&lt;br /&gt;
&lt;br /&gt;
* Si un proceso necesita más memoria que la partición más grande puede ofrecer, entonces éste no se puede ejecutar.&lt;br /&gt;
* Alto desperdicio de memoria, particularmente en el caso de que un procesos ocupe una partición de tamaño mayor a lo que necesita.&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
Cuando se lanza un programa, el administrador de memoria tiene que decidir en qué partición de memoria va a cargar el proceso recién creado. Para ello se emplean diferentes criterios.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste estático ==&lt;br /&gt;
&lt;br /&gt;
Se adjudica a cada proceso a la menor partición en la que quepa. Si la menor partición en la que cabe estuviera ocupada, dicho proceso tiene que esperar a que se libere. Esta estrategia evita el desperdicio de memoria. Sin embargo, puede retrasar la ejecución de un proceso estando libre otras particiones sin usarse. Este mecanismo se puede implementar con una cola por partición. El orden de complejidad computacional sería &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                                M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
                                        M3&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
                                                   M1&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&lt;br /&gt;
                                          M4 &lt;br /&gt;
              P6  |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
[PENDIENTE DE REVISIÓN]&lt;br /&gt;
&lt;br /&gt;
=== Otro ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Tenemos los siguientes procesos: m(P1) = 6KB, m(P2) = 1KB, m(P3) = 3KB, m(P4) = 31KB, m(P5) = 30KB;&lt;br /&gt;
 suponemos que la decisión sobre la asignación de procesos a particiones se hace ordenadamente de manera&lt;br /&gt;
 consecutiva según el número del proceso y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
&lt;br /&gt;
[[solución mejor ajuste estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo 3===&lt;br /&gt;
Aquí está el ejercicio visto el martes 29 de Noviembre de 2011 en clase [[Ejercicio clase 291111|Ver Ejercicio]]&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Igual que el anterior, sólo que nuestro proceso pasa a la primera partición libre en la que menor desperdicio de memoria se produzca. Complejidad: O(1)&lt;br /&gt;
&lt;br /&gt;
[[solución primer ajuste|Ver solución]]&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  1 |  4  |  7  |&lt;br /&gt;
 P3 |  2 |  5  |  8  |&lt;br /&gt;
 P4 |  3 |  5  | 15  |&lt;br /&gt;
 P5 |  4 |  3  |  3  |&lt;br /&gt;
 P6 |  5 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
La solución sería:&lt;br /&gt;
&lt;br /&gt;
                             M1&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
                              M2&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
                                    M3&lt;br /&gt;
              P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M3&lt;br /&gt;
                                     M4&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M4&lt;br /&gt;
                                            M2&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M2&lt;br /&gt;
                                                     M4 &lt;br /&gt;
              P6  |   |   |   |   |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P6--&amp;gt;M4&lt;br /&gt;
             -----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---&amp;gt; t&lt;br /&gt;
                  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico ==&lt;br /&gt;
&lt;br /&gt;
Cuando una partición queda libre, se asigna el mayor proceso que quepa en ella, sin importar el desperdicio. Complejidad: O(n).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo ===&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  | m(P)|&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  7  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  7  |&lt;br /&gt;
 P3 |  0 |  5  |  8  |&lt;br /&gt;
 P4 |  1 |  5  | 15  |&lt;br /&gt;
 P5 |  1 |  3  |  3  |&lt;br /&gt;
 P6 |  1 |  2  | 17  |&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
 _______&lt;br /&gt;
 |_____| M1 = 8 u.m-&lt;br /&gt;
 |_____| M2 = 8 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| M3 = 16 u.m.&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | M4 = 32 u.m.&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[solución ajuste dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste dinámico con aplazamiento limitado ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del criterio anterior que evita el aplazamiento indefinido. Cuando queda una partición libre, se selecciona el mayor proceso que quepa en ella, pero se cuenta el nº de veces que un proceso se aplaza. Si se superan esas '''n''' veces (umbral), se le da paso.&lt;br /&gt;
&lt;br /&gt;
== Subparticiones ==&lt;br /&gt;
&lt;br /&gt;
No es un criterio como tal sino que viene a complementar a los anteriores. Si no hay un proceso que pueda aprovechar la partición madre: se asignan las subparticiones a procesos pequeños (para que el desperdicio interno sea lo menor posible). Si llega un proceso grande: los procesos pequeños se vuelcan a disco y se asigna partición madre.&lt;br /&gt;
&lt;br /&gt;
Partición madre: tipo especial de partición que se puede dividir en múltiples particiones menores.&lt;br /&gt;
&lt;br /&gt;
[[Otro ejemplo|Otro ejemplo]]&lt;br /&gt;
&lt;br /&gt;
= Métodos de colocación en memoria =&lt;br /&gt;
&lt;br /&gt;
En el momento de lanzamiento hay que realizar la carga del código del proceso en memoria. Hay diferentes estrategias de colocación, que son:&lt;br /&gt;
&lt;br /&gt;
*'''Montaje absoluto''': El compilador genera un ejecutable que sólo pueda ser cargado en una cierta posición de memoria. Básicamente, las instrucciones de memoria emplean direccionamiento fijo. Se asigna una dirección de memoria fija en tiempo de compilación de manera que cuando se lance el programa tiene que cargarse obligatoriamente en la posición de memoria para la que fue compilada. Por tanto, se trata de un método poco flexible pues requiere la recompilación del programa para ejecutar el proceso en una posición de memoria diferente. Se emplea para la carga del ejecutable en el que se encuentra el sistema operativo nada más comenzar el arranque.&lt;br /&gt;
&lt;br /&gt;
* '''Carga con reubicación''': Es un mecanismo más flexible al anterior. Básicamente, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Luego, en el momento de lanzamiento, se reajustan las instrucciones de acceso a memoria que hay en el código del proceso al cargarlo en una cierta partición. Este reajuste consiste en sumar a la dirección de memoria que hay en el código de cada instrucción de memoria la dirección de comienzo de la partición en la que se va a cargar el procesos. Aunque es un método es más flexible que el anterior, no permite migrar de una partición a otra una vez cargado el proceso en memoria.&lt;br /&gt;
&lt;br /&gt;
* '''Reubicación dinámica''': Es el mecanismo más flexible de los tres. De nuevo, en tiempo de compilación se genera un ejecutable que supone que la posición de memoria de comienzo del proceso va a ser la dirección 0. Se supone la existencia de un registro en la arquitectura en el que se carga la posición de memoria de comienzo de la partición. En '''tiempo de ejecución''' se va a sumar a la posición de memoria a la que se quiere acceder la dirección de memoria del registro que contiene el lugar en el que comienza la partición. A diferencia de la carga con reubicación, permite la migración de un proceso de una partición a otra, para ello lo que hay que hacer es modificar el registro y mover el código del proceso a la nueva partición en la que se quiere colocar.&lt;br /&gt;
&lt;br /&gt;
** '''Reubicación dinámica parcial''': Es una variante del anterior, en la que existe también un registro límite.&lt;br /&gt;
&lt;br /&gt;
= Mecanismos de protección de memoria =&lt;br /&gt;
&lt;br /&gt;
Es necesario proteger el SO frente a procesos; y proteger a los procesos entre sí.&lt;br /&gt;
&lt;br /&gt;
* '''Bits de protección''' : Se le asigna a cada zona/partición de la memoria principal una zona con información sobre el propietario y los permisos de lectura/escritura&lt;br /&gt;
&lt;br /&gt;
* '''Ampliación registros valla''' : De esta manera se conocen la posición inicial y final, de manera que si no está entre esas dos posiciones no se permite el acceso a memoria. Los registros de posición inicial y final sólo pueden ser modificados en modo supervisor, por tanto, es el sistema operativo en que durante la conmutación de procesos establece el valor de estos registros.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-2-otros-aspectos&amp;diff=1657</id>
		<title>Sol-ejer2-2-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-2-otros-aspectos&amp;diff=1657"/>
				<updated>2011-11-06T17:36:27Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Corrrección-lapsus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                      ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| Prioridad C&amp;lt;B&amp;lt;A&lt;br /&gt;
          Datos del ___H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t. &lt;br /&gt;
           problema ___t__|_3__|_5__|_6__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t. &lt;br /&gt;
                    _plazo|_6__|_15_|_15_| tiempo de bloqueo=2 u.t.&lt;br /&gt;
&lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                     --- = proceso ejecutándose&lt;br /&gt;
                       * = el proceso aborta&lt;br /&gt;
                       &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;---#   |   &amp;lt;---|   |   *   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;---|---|   |---#   |   &amp;lt;---|---|   |   |   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;   |   |   |---|---|   |   |---|---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;br /&gt;
&lt;br /&gt;
-Creo que hay un error en el instante de tiempo 3 debería comenzar Pa porque tiene prioridad sobre Pb y en el instante de tiempo 4 empezar Pb y ser bloqueada en el instante de tiempo 5 con lo que en el momento 5 empieza Pc hasta el momento 7 que es el tiempo de bloqueo de Pb.&lt;br /&gt;
--[[Usuario:Sertrimur|Sertrimur]] 17:23 5 nov 2011 (UTC)==Por prioridades apropiativo en tiempo real==&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Peducemar|Peducemar]] Cierto, ya está corregido. Gracias.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-2-otros-aspectos&amp;diff=1637</id>
		<title>Sol-ejer2-2-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-2-otros-aspectos&amp;diff=1637"/>
				<updated>2011-11-04T20:25:52Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Página creada con '==Por prioridades apropiativo en tiempo real==                        ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| Prioridad C&amp;lt;B&amp;lt;A           Datos del ___H0_|_0__|_1__|…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Por prioridades apropiativo en tiempo real==&lt;br /&gt;
&lt;br /&gt;
                      ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| Prioridad C&amp;lt;B&amp;lt;A&lt;br /&gt;
          Datos del ___H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t. &lt;br /&gt;
           problema ___t__|_3__|_5__|_6__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t. &lt;br /&gt;
                    _plazo|_6__|_15_|_15_| tiempo de bloqueo=2 u.t.&lt;br /&gt;
&lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                     --- = proceso ejecutándose&lt;br /&gt;
                       * = el proceso aborta&lt;br /&gt;
                       &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;---#   |   &amp;lt;   |---#   *   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;---|---|---#   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;   |   |   |---|   |   |---|---|---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1636</id>
		<title>Sol-ejer2-1-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1636"/>
				<updated>2011-11-04T20:25:27Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Por prioridades apropiativo en tiempo real */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SJF Apropiativo con  multiprocesamiento ==&lt;br /&gt;
&lt;br /&gt;
Para este caso disponemos de 2 Procesadores, y supondremos que el planificador se ejecuta en uno de ellos&lt;br /&gt;
                     ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t.&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t.&lt;br /&gt;
           problema  _t__|_3__|_5__|_6__| tiempo de bloqueo=2 u.t.&lt;br /&gt;
                     &lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                       +++ = procesador 1&lt;br /&gt;
                       --- = procesador 2&lt;br /&gt;
 &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;+++#   |   &amp;lt;+++#   |   |+++&amp;gt;   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;+++|+++|---#   |   |---|+++&amp;gt;   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;---|   |+++|+++|   |---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*En esta solución suponemos que en en el procesador 1 se ejecuta el proceso más corto preparado y en el procesador 2 se ejecuta el 2º más corto preparado.&lt;br /&gt;
&lt;br /&gt;
*Por lo anterior indicado, la solución podría variar entre la unidad de tiempo 7 y la 10, pero como no nos han dado expresamente un criterio para asignar a los procesadores los procesos, no tiene importancia.&lt;br /&gt;
&lt;br /&gt;
*'''Importante''': Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1635</id>
		<title>Sol-ejer2-1-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1635"/>
				<updated>2011-11-04T20:08:04Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Por prioridades apropiativo en tiempo real */ errata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SJF Apropiativo con  multiprocesamiento ==&lt;br /&gt;
&lt;br /&gt;
Para este caso disponemos de 2 Procesadores, y supondremos que el planificador se ejecuta en uno de ellos&lt;br /&gt;
                     ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t.&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t.&lt;br /&gt;
           problema  _t__|_3__|_5__|_6__| tiempo de bloqueo=2 u.t.&lt;br /&gt;
                     &lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                       +++ = procesador 1&lt;br /&gt;
                       --- = procesador 2&lt;br /&gt;
 &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;+++#   |   &amp;lt;+++#   |   |+++&amp;gt;   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;+++|+++|---#   |   |---|+++&amp;gt;   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;---|   |+++|+++|   |---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*En esta solución suponemos que en en el procesador 1 se ejecuta el proceso más corto preparado y en el procesador 2 se ejecuta el 2º más corto preparado.&lt;br /&gt;
&lt;br /&gt;
*Por lo anterior indicado, la solución podría variar entre la unidad de tiempo 7 y la 10, pero como no nos han dado expresamente un criterio para asignar a los procesadores los procesos, no tiene importancia.&lt;br /&gt;
&lt;br /&gt;
*'''Importante''': Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Por prioridades apropiativo en tiempo real==&lt;br /&gt;
&lt;br /&gt;
                      ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| Prioridad C&amp;lt;B&amp;lt;A&lt;br /&gt;
          Datos del ___H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t. &lt;br /&gt;
           problema ___t__|_3__|_5__|_6__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t. &lt;br /&gt;
                    _plazo|_6__|_15_|_15_| tiempo de bloqueo=2 u.t.&lt;br /&gt;
&lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                     --- = proceso ejecutándose&lt;br /&gt;
                       * = el proceso aborta&lt;br /&gt;
                       &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;---#   |   &amp;lt;   |---#   *   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;---|---|---#   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;   |   |   |---|   |   |---|---|---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1634</id>
		<title>Sol-ejer2-1-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1634"/>
				<updated>2011-11-04T20:02:19Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: Traza de Tiempo Real por Prioridades&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SJF Apropiativo con  multiprocesamiento ==&lt;br /&gt;
&lt;br /&gt;
Para este caso disponemos de 2 Procesadores, y supondremos que el planificador se ejecuta en uno de ellos&lt;br /&gt;
                     ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t.&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t.&lt;br /&gt;
           problema  _t__|_3__|_5__|_6__| tiempo de bloqueo=2 u.t.&lt;br /&gt;
                     &lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                       +++ = procesador 1&lt;br /&gt;
                       --- = procesador 2&lt;br /&gt;
 &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;+++#   |   &amp;lt;+++#   |   |+++&amp;gt;   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;+++|+++|---#   |   |---|+++&amp;gt;   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;---|   |+++|+++|   |---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*En esta solución suponemos que en en el procesador 1 se ejecuta el proceso más corto preparado y en el procesador 2 se ejecuta el 2º más corto preparado.&lt;br /&gt;
&lt;br /&gt;
*Por lo anterior indicado, la solución podría variar entre la unidad de tiempo 7 y la 10, pero como no nos han dado expresamente un criterio para asignar a los procesadores los procesos, no tiene importancia.&lt;br /&gt;
&lt;br /&gt;
*'''Importante''': Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Por prioridades apropiativo en tiempo real==&lt;br /&gt;
&lt;br /&gt;
                      ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| Prioridad C&amp;lt;B&amp;lt;A&lt;br /&gt;
          Datos del ___H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t. &lt;br /&gt;
           problema ___t__|_3__|_5__|_6__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t. &lt;br /&gt;
                    _plazo|_6__|_15_|_15_| tiempo de bloqueo=2 u.t.&lt;br /&gt;
&lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                     --- = proceso ejecutándose&lt;br /&gt;
                       * = el proceso aborta&lt;br /&gt;
                       &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;---#   |   &amp;lt;   |---#   *   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;---|---|---#   |---|---&amp;gt;   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;   |   |   |   |   |---|---|---|---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1633</id>
		<title>Sol-ejer2-1-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1633"/>
				<updated>2011-11-04T19:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: errata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SJF Apropiativo con  multiprocesamiento ==&lt;br /&gt;
&lt;br /&gt;
Para este caso disponemos de 2 Procesadores, y supondremos que el planificador se ejecuta en uno de ellos&lt;br /&gt;
                     ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t.&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t.&lt;br /&gt;
           problema  _t__|_3__|_5__|_6__| tiempo de bloqueo=2 u.t.&lt;br /&gt;
                     &lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                       +++ = procesador 1&lt;br /&gt;
                       --- = procesador 2&lt;br /&gt;
 &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;+++#   |   &amp;lt;+++#   |   |+++&amp;gt;   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;+++|+++|---#   |   |---|+++&amp;gt;   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;---|   |+++|+++|   |---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*En esta solución suponemos que en en el procesador 1 se ejecuta el proceso más corto preparado y en el procesador 2 se ejecuta el 2º más corto preparado.&lt;br /&gt;
&lt;br /&gt;
*Por lo anterior indicado, la solución podría variar entre la unidad de tiempo 7 y la 10, pero como no nos han dado expresamente un criterio para asignar a los procesadores los procesos, no tiene importancia.&lt;br /&gt;
&lt;br /&gt;
*'''Importante''': Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1632</id>
		<title>Sol-ejer2-1-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1632"/>
				<updated>2011-11-04T19:46:28Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* SJF Apropiativo con  multiprocesamiento */ Observaciones&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SJF Apropiativo con  multiprocesamiento ==&lt;br /&gt;
&lt;br /&gt;
Para este caso disponemos de 2 Procesadores, y supondremos que el planificador se ejecuta en uno de ellos&lt;br /&gt;
                     ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t.&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t.&lt;br /&gt;
           problema  _t__|_3__|_5__|_6__| tiempo de bloqueo=2 u.t.&lt;br /&gt;
                     &lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                       +++ = procesador 1&lt;br /&gt;
                       --- = procesador 2&lt;br /&gt;
 &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;+++#   |   &amp;lt;+++#   |   |+++&amp;gt;   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;+++|+++|---#   |   |   &amp;lt;---|+++&amp;gt;   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;---|   |+++|+++|   |---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''OBSERVACIONES:'''&lt;br /&gt;
&lt;br /&gt;
*En esta solución suponemos que en en el procesador 1 se ejecuta el proceso más corto preparado y en el procesador 2 se ejecuta el 2º más corto preparado.&lt;br /&gt;
&lt;br /&gt;
*Por lo anterior indicado, la solución podría variar entre la unidad de tiempo 7 y la 10, pero como no nos han dado expresamente un criterio para asignar a los procesadores los procesos, no tiene importancia.&lt;br /&gt;
&lt;br /&gt;
*'''Importante''': Este ejercicio (de momento) no ha sido corregido por Pablo Neira, es por ello que si alguien tiene una duda sobre él debería indicarlo para discutirlo hasta que dicho profesor lo revise.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1631</id>
		<title>Sol-ejer2-1-otros-aspectos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer2-1-otros-aspectos&amp;diff=1631"/>
				<updated>2011-11-04T19:38:36Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: creación traza SJF Aprop.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SJF Apropiativo con  multiprocesamiento ==&lt;br /&gt;
&lt;br /&gt;
Para este caso disponemos de 2 Procesadores, y supondremos que el planificador se ejecuta en uno de ellos&lt;br /&gt;
                     ____|_P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;_|_P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;_| P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; bloquea cada 1 u.t.&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__| P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt; bloquea cada 3 u.t.&lt;br /&gt;
           problema  _t__|_3__|_5__|_6__| tiempo de bloqueo=2 u.t.&lt;br /&gt;
                     &lt;br /&gt;
                       &amp;lt; = indica el instante de lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = indica el instante de finalización del proceso&lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
                       # = el proceso se bloquea&lt;br /&gt;
                       +++ = procesador 1&lt;br /&gt;
                       --- = procesador 2&lt;br /&gt;
 &lt;br /&gt;
                   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
    Pa             &amp;lt;+++#   |   &amp;lt;+++#   |   |+++&amp;gt;   |   |   |   |   |&lt;br /&gt;
    Pb             |   &amp;lt;+++|+++|---#   |   |   &amp;lt;---|+++&amp;gt;   |   |   |&lt;br /&gt;
    Pc             |   |   &amp;lt;---|   |+++|+++|   |---|---|---&amp;gt;   |   |&lt;br /&gt;
    Planificador   X   X   X   X   X   |   X   X   |   |   |   |   |&lt;br /&gt;
                   |___|___|___|___|___|___|___|___|___|___|___|___|___&amp;gt; t&lt;br /&gt;
                   0   1   2   3   4   5   6   7   8   9   10  11  12&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:0rCyR8Gg.svg&amp;diff=1557</id>
		<title>Archivo:0rCyR8Gg.svg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:0rCyR8Gg.svg&amp;diff=1557"/>
				<updated>2011-10-27T15:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Planificador_de_procesos&amp;diff=1455</id>
		<title>Planificador de procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Planificador_de_procesos&amp;diff=1455"/>
				<updated>2011-10-13T20:04:01Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplo dado en clase */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ¿Qué es el planificador de procesos? =&lt;br /&gt;
&lt;br /&gt;
El planificador de procesos (''process scheduler'', en inglés) es la parte del sistema operativo que se encarga seleccionar a qué proceso se asigna el recurso procesador y durante cuánto tiempo.&lt;br /&gt;
&lt;br /&gt;
= ¿Qué funciones tiene el planificador de procesos? =&lt;br /&gt;
&lt;br /&gt;
El planificador de procesos tiene como funciones principales:&lt;br /&gt;
&lt;br /&gt;
* Llevar el control del estado de cada proceso.&lt;br /&gt;
* Decidir qué proceso usará el procesador y durante cuanto tiempo, para ello empleará un cierto criterio en base al cual tomará las decisiones. Si implementa multiprogramación, deberá emplear un criterio que evite que un proceso monopolice el procesador.&lt;br /&gt;
* Asignar el procesador al proceso, restableciendo el contexto de la ejecución del proceso por donde fuere.&lt;br /&gt;
* Retirar el procesador al proceso, salvando el contexto de la ejecución del proceso, para poder restablecerlo posteriormente una vez que vuelva a ser asignado.&lt;br /&gt;
&lt;br /&gt;
El planificador de procesos es software, por tanto, requiere emplear el recurso procesador para ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ejemplo dado en clase =&lt;br /&gt;
'''&lt;br /&gt;
Teniendo en cuenta las siguientes circunstancias:'''&lt;br /&gt;
&lt;br /&gt;
*Un proceso Pa, que bloquea cada 2 unidades de tiempo.&lt;br /&gt;
&lt;br /&gt;
*Un proceso Pb.&lt;br /&gt;
&lt;br /&gt;
*Prioridad Pa&amp;gt;Pb.&lt;br /&gt;
&lt;br /&gt;
*El evento externo que verifica el fin de bloqueo de Pa llega tras 2 unidades de tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La '''representación''' obtenida sería:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Procesos.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este ejercicio podríamos decir que el proceso A ('''Pa''') es un proceso '''interactivo''', ya que bloquea mucho y que el proceso B ('''Pb''') es '''por lotes''', ya que apenas bloquea.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Planificador_de_procesos&amp;diff=1454</id>
		<title>Planificador de procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Planificador_de_procesos&amp;diff=1454"/>
				<updated>2011-10-13T19:57:39Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* ¿Qué funciones tiene el planificador de procesos? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ¿Qué es el planificador de procesos? =&lt;br /&gt;
&lt;br /&gt;
El planificador de procesos (''process scheduler'', en inglés) es la parte del sistema operativo que se encarga seleccionar a qué proceso se asigna el recurso procesador y durante cuánto tiempo.&lt;br /&gt;
&lt;br /&gt;
= ¿Qué funciones tiene el planificador de procesos? =&lt;br /&gt;
&lt;br /&gt;
El planificador de procesos tiene como funciones principales:&lt;br /&gt;
&lt;br /&gt;
* Llevar el control del estado de cada proceso.&lt;br /&gt;
* Decidir qué proceso usará el procesador y durante cuanto tiempo, para ello empleará un cierto criterio en base al cual tomará las decisiones. Si implementa multiprogramación, deberá emplear un criterio que evite que un proceso monopolice el procesador.&lt;br /&gt;
* Asignar el procesador al proceso, restableciendo el contexto de la ejecución del proceso por donde fuere.&lt;br /&gt;
* Retirar el procesador al proceso, salvando el contexto de la ejecución del proceso, para poder restablecerlo posteriormente una vez que vuelva a ser asignado.&lt;br /&gt;
&lt;br /&gt;
El planificador de procesos es software, por tanto, requiere emplear el recurso procesador para ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Ejemplo dado en clase =&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Procesos.jpg&amp;diff=1453</id>
		<title>Archivo:Procesos.jpg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Procesos.jpg&amp;diff=1453"/>
				<updated>2011-10-13T19:56:32Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1449</id>
		<title>Tipos de Sistemas Operativos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1449"/>
				<updated>2011-10-13T19:24:14Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* 1.3.1. Según cuántas aplicaciones pueda ejecutar a la vez */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 1.3. Tipos de Sistemas Operativos =&lt;br /&gt;
== 1.3.1. Según cuántas aplicaciones pueda ejecutar a la vez ==&lt;br /&gt;
&lt;br /&gt;
*a. Monoprogramables&lt;br /&gt;
**En un determinado instante de tiempo, sólo hay un único proceso en ejecución que monopoliza todos los recursos del sistema.&lt;br /&gt;
**Principal ventaja: su sencillez.&lt;br /&gt;
** Generalmente, no tienen mecanismos de protección de memoria (esta característica los hace más proclives a virus).&lt;br /&gt;
**Dos subtipos:&lt;br /&gt;
***Ofrece intérprete de órdenes.&lt;br /&gt;
***Ofrece entrada a través de cinta/switches (SSOO históricos).&lt;br /&gt;
**Ejemplo: DOS.&lt;br /&gt;
&lt;br /&gt;
*b. Multiprogramables &lt;br /&gt;
**Permiten ejecutar múltiples procesos en un único procesador. Se tienen varios programas cargados simultáneamente en la memoria, así que el SO debe controlar los accesos y los espacios de la misma.&lt;br /&gt;
**Tienen mecanismos de protección del espacio de memoria (el SO impide que una aplicación acceda al espacio de memoria de otra).&lt;br /&gt;
**b.1. Características que pueden presentar:&lt;br /&gt;
***Multiprogramación: se ejecutan varios procesos simultáneamente de manera que se reparte el uso del procesador. A esta característica también se le llama &amp;quot;Multitarea&amp;quot;.&lt;br /&gt;
***Multiusuario: admite múltiples usuarios trabajando simlutáneamente.&lt;br /&gt;
***Multiacceso: el sistema ofrece varios terminales (mecanismos) para acceso concurrente a él.&lt;br /&gt;
***Multiprocesamiento: soporta más de un procesador y hace uso de todos ellos.&lt;br /&gt;
***Tiempo real: intenta garantizar que determinadas tareas se ejecuten en un plazo de tiempo determinado. Atendiendo al nivel de exigencia, se subdividirían en dos: soft (suave) o '''flexible''' y hard(duro) o '''estricto'''.&lt;br /&gt;
***Distribuido: permite la ejecución de múltiples procesos en diferentes máquinas comunicadas por un enlace de red. El primer SO es soportar esta característica fue [http://es.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9] de ''Bell Labs''.&lt;br /&gt;
&lt;br /&gt;
== 1.3.2. Según cómo se presta el servicio ==&lt;br /&gt;
&lt;br /&gt;
*a. Por tanda&lt;br /&gt;
**Actividades que se realizan por lote y en serie (una detrás de otra).&lt;br /&gt;
&lt;br /&gt;
*b. Interactivos&lt;br /&gt;
**Varias actividades en ejecución intercalándose.&lt;br /&gt;
&lt;br /&gt;
*c. Combinados&lt;br /&gt;
**En los combinados se combinan los dos anteriores , en los que dependerá del proceso que se esté ejecutando.&lt;br /&gt;
&lt;br /&gt;
== Ejemplos de SS.OO. actuales ==&lt;br /&gt;
&lt;br /&gt;
*POSIX: Portable Operating System Interface X. Es un tipo de API. La mayoría de los SS.OO. actuales la implementan.&lt;br /&gt;
&lt;br /&gt;
*WIN32: Lo usan los SS.OO. ReactOS y Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Existe el llamado Wine, un emulador de Windows, que convierte llamadas de Win32 a POSIX.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1448</id>
		<title>Tipos de Sistemas Operativos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1448"/>
				<updated>2011-10-13T19:20:11Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplos de SS.OO. actuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 1.3. Tipos de Sistemas Operativos =&lt;br /&gt;
== 1.3.1. Según cuántas aplicaciones pueda ejecutar a la vez ==&lt;br /&gt;
&lt;br /&gt;
*a. Monoprogramables&lt;br /&gt;
**En un determinado instante de tiempo, sólo hay un único proceso en ejecución que monopoliza todos los recursos del sistema.&lt;br /&gt;
**Principal ventaja: su sencillez.&lt;br /&gt;
** Generalmente, no tienen mecanismos de protección de memoria (esta característica los hace más proclives a virus).&lt;br /&gt;
**Dos subtipos:&lt;br /&gt;
***Ofrece intérprete de órdenes.&lt;br /&gt;
***Ofrece entrada a través de cinta/switches (SSOO históricos).&lt;br /&gt;
**Ejemplo: DOS.&lt;br /&gt;
&lt;br /&gt;
*b. Multiprogramables &lt;br /&gt;
**Permiten ejecutar múltiples procesos en un único procesador. Se tienen varios programas cargados simultáneamente en la memoria, así que el SO debe controlar los accesos y los espacios de la misma.&lt;br /&gt;
**Tienen mecanismos de protección del espacio de memoria (el SO impide que una aplicación acceda al espacio de memoria de otra).&lt;br /&gt;
**b.1. Características que pueden presentar:&lt;br /&gt;
***Multiprogramación: se ejecutan varios procesos simultáneamente de manera que se reparte el uso del procesador. A esta característica también se le llama &amp;quot;Multitarea&amp;quot;.&lt;br /&gt;
***Multiusuario: admite múltiples usuarios trabajando simlutáneamente.&lt;br /&gt;
***Multiacceso: el sistema ofrece varios terminales (mecanismos) para acceso concurrente a él.&lt;br /&gt;
***Multiprocesamiento: soporta más de un procesador y hace uso de todos ellos.&lt;br /&gt;
***Tiempo real: intenta garantizar que determinadas tareas se ejecuten en un plazo de tiempo determinado. Atendiendo al nivel de exigencia, se subdividirían en dos: soft (suave) y hard (duro).&lt;br /&gt;
***Distribuido: permite la ejecución de múltiples procesos en diferentes máquinas comunicadas por un enlace de red. El primer SO es soportar esta característica fue [http://es.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9] de ''Bell Labs''.&lt;br /&gt;
&lt;br /&gt;
== 1.3.2. Según cómo se presta el servicio ==&lt;br /&gt;
&lt;br /&gt;
*a. Por tanda&lt;br /&gt;
**Actividades que se realizan por lote y en serie (una detrás de otra).&lt;br /&gt;
&lt;br /&gt;
*b. Interactivos&lt;br /&gt;
**Varias actividades en ejecución intercalándose.&lt;br /&gt;
&lt;br /&gt;
*c. Combinados&lt;br /&gt;
**En los combinados se combinan los dos anteriores , en los que dependerá del proceso que se esté ejecutando.&lt;br /&gt;
&lt;br /&gt;
== Ejemplos de SS.OO. actuales ==&lt;br /&gt;
&lt;br /&gt;
*POSIX: Portable Operating System Interface X. Es un tipo de API. La mayoría de los SS.OO. actuales la implementan.&lt;br /&gt;
&lt;br /&gt;
*WIN32: Lo usan los SS.OO. ReactOS y Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Existe el llamado Wine, un emulador de Windows, que convierte llamadas de Win32 a POSIX.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1447</id>
		<title>Tipos de Sistemas Operativos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1447"/>
				<updated>2011-10-13T19:19:56Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Ejemplos de SS.OO. actuales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 1.3. Tipos de Sistemas Operativos =&lt;br /&gt;
== 1.3.1. Según cuántas aplicaciones pueda ejecutar a la vez ==&lt;br /&gt;
&lt;br /&gt;
*a. Monoprogramables&lt;br /&gt;
**En un determinado instante de tiempo, sólo hay un único proceso en ejecución que monopoliza todos los recursos del sistema.&lt;br /&gt;
**Principal ventaja: su sencillez.&lt;br /&gt;
** Generalmente, no tienen mecanismos de protección de memoria (esta característica los hace más proclives a virus).&lt;br /&gt;
**Dos subtipos:&lt;br /&gt;
***Ofrece intérprete de órdenes.&lt;br /&gt;
***Ofrece entrada a través de cinta/switches (SSOO históricos).&lt;br /&gt;
**Ejemplo: DOS.&lt;br /&gt;
&lt;br /&gt;
*b. Multiprogramables &lt;br /&gt;
**Permiten ejecutar múltiples procesos en un único procesador. Se tienen varios programas cargados simultáneamente en la memoria, así que el SO debe controlar los accesos y los espacios de la misma.&lt;br /&gt;
**Tienen mecanismos de protección del espacio de memoria (el SO impide que una aplicación acceda al espacio de memoria de otra).&lt;br /&gt;
**b.1. Características que pueden presentar:&lt;br /&gt;
***Multiprogramación: se ejecutan varios procesos simultáneamente de manera que se reparte el uso del procesador. A esta característica también se le llama &amp;quot;Multitarea&amp;quot;.&lt;br /&gt;
***Multiusuario: admite múltiples usuarios trabajando simlutáneamente.&lt;br /&gt;
***Multiacceso: el sistema ofrece varios terminales (mecanismos) para acceso concurrente a él.&lt;br /&gt;
***Multiprocesamiento: soporta más de un procesador y hace uso de todos ellos.&lt;br /&gt;
***Tiempo real: intenta garantizar que determinadas tareas se ejecuten en un plazo de tiempo determinado. Atendiendo al nivel de exigencia, se subdividirían en dos: soft (suave) y hard (duro).&lt;br /&gt;
***Distribuido: permite la ejecución de múltiples procesos en diferentes máquinas comunicadas por un enlace de red. El primer SO es soportar esta característica fue [http://es.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9] de ''Bell Labs''.&lt;br /&gt;
&lt;br /&gt;
== 1.3.2. Según cómo se presta el servicio ==&lt;br /&gt;
&lt;br /&gt;
*a. Por tanda&lt;br /&gt;
**Actividades que se realizan por lote y en serie (una detrás de otra).&lt;br /&gt;
&lt;br /&gt;
*b. Interactivos&lt;br /&gt;
**Varias actividades en ejecución intercalándose.&lt;br /&gt;
&lt;br /&gt;
*c. Combinados&lt;br /&gt;
**En los combinados se combinan los dos anteriores , en los que dependerá del proceso que se esté ejecutando.&lt;br /&gt;
&lt;br /&gt;
== Ejemplos de SS.OO. actuales ==&lt;br /&gt;
&lt;br /&gt;
*POSIX: Portable Operating System Interface X. Es un tipo de API. La mayoría de los SS.OO. actuales la implementan.&lt;br /&gt;
&lt;br /&gt;
*WIN32: Lo usan los SS.OO. ReactOS y Windows.&lt;br /&gt;
&lt;br /&gt;
*Existe el llamado Wine, un emulador de Windows, que convierte llamadas de Win32 a POSIX.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1446</id>
		<title>Tipos de Sistemas Operativos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Tipos_de_Sistemas_Operativos&amp;diff=1446"/>
				<updated>2011-10-13T19:19:29Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* 1.3. Tipos de Sistemas Operativos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 1.3. Tipos de Sistemas Operativos =&lt;br /&gt;
== 1.3.1. Según cuántas aplicaciones pueda ejecutar a la vez ==&lt;br /&gt;
&lt;br /&gt;
*a. Monoprogramables&lt;br /&gt;
**En un determinado instante de tiempo, sólo hay un único proceso en ejecución que monopoliza todos los recursos del sistema.&lt;br /&gt;
**Principal ventaja: su sencillez.&lt;br /&gt;
** Generalmente, no tienen mecanismos de protección de memoria (esta característica los hace más proclives a virus).&lt;br /&gt;
**Dos subtipos:&lt;br /&gt;
***Ofrece intérprete de órdenes.&lt;br /&gt;
***Ofrece entrada a través de cinta/switches (SSOO históricos).&lt;br /&gt;
**Ejemplo: DOS.&lt;br /&gt;
&lt;br /&gt;
*b. Multiprogramables &lt;br /&gt;
**Permiten ejecutar múltiples procesos en un único procesador. Se tienen varios programas cargados simultáneamente en la memoria, así que el SO debe controlar los accesos y los espacios de la misma.&lt;br /&gt;
**Tienen mecanismos de protección del espacio de memoria (el SO impide que una aplicación acceda al espacio de memoria de otra).&lt;br /&gt;
**b.1. Características que pueden presentar:&lt;br /&gt;
***Multiprogramación: se ejecutan varios procesos simultáneamente de manera que se reparte el uso del procesador. A esta característica también se le llama &amp;quot;Multitarea&amp;quot;.&lt;br /&gt;
***Multiusuario: admite múltiples usuarios trabajando simlutáneamente.&lt;br /&gt;
***Multiacceso: el sistema ofrece varios terminales (mecanismos) para acceso concurrente a él.&lt;br /&gt;
***Multiprocesamiento: soporta más de un procesador y hace uso de todos ellos.&lt;br /&gt;
***Tiempo real: intenta garantizar que determinadas tareas se ejecuten en un plazo de tiempo determinado. Atendiendo al nivel de exigencia, se subdividirían en dos: soft (suave) y hard (duro).&lt;br /&gt;
***Distribuido: permite la ejecución de múltiples procesos en diferentes máquinas comunicadas por un enlace de red. El primer SO es soportar esta característica fue [http://es.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9] de ''Bell Labs''.&lt;br /&gt;
&lt;br /&gt;
== 1.3.2. Según cómo se presta el servicio ==&lt;br /&gt;
&lt;br /&gt;
*a. Por tanda&lt;br /&gt;
**Actividades que se realizan por lote y en serie (una detrás de otra).&lt;br /&gt;
&lt;br /&gt;
*b. Interactivos&lt;br /&gt;
**Varias actividades en ejecución intercalándose.&lt;br /&gt;
&lt;br /&gt;
*c. Combinados&lt;br /&gt;
**En los combinados se combinan los dos anteriores , en los que dependerá del proceso que se esté ejecutando.&lt;br /&gt;
&lt;br /&gt;
== Ejemplos de SS.OO. actuales ==&lt;br /&gt;
&lt;br /&gt;
**POSIX: Portable Operating System Interface X. Es un tipo de API. La mayoría de los SS.OO. actuales la implementan.&lt;br /&gt;
&lt;br /&gt;
**WIN32: Lo usan los SS.OO. ReactOS y Windows.&lt;br /&gt;
&lt;br /&gt;
***Existe el llamado Wine, un emulador de Windows, que convierte llamadas de Win32 a POSIX.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Estados_de_los_procesos&amp;diff=1372</id>
		<title>Estados de los procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Estados_de_los_procesos&amp;diff=1372"/>
				<updated>2011-10-11T20:57:22Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: /* Diagrama de estados simplificado */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Todo proceso en un sistema operativo presenta un estado que indica la situación de la ejecución en que se encuentra. El número de posibles estados varía de un sistema operativo a otro.&lt;br /&gt;
&lt;br /&gt;
= Diagrama de estados simplificado =&lt;br /&gt;
&lt;br /&gt;
Consideramos que todo proceso puede estar, como mínimo, en uno de los siguientes tres estados:&lt;br /&gt;
&lt;br /&gt;
* '''Activo''': el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.&lt;br /&gt;
* '''Preparado''': el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.&lt;br /&gt;
* '''Bloqueado''': el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo &amp;quot;avisa&amp;quot; al SS.OO. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el SS.OO. lo que está haciendo para atender a esta última. Tras esto, el SS.OO. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
                                            [[Archivo:SSOO2.jpg]] &lt;br /&gt;
 &lt;br /&gt;
La transición de activo a preparado y viceversa depende de decisiones tomadas por el '''planificador del sistema operativo''' en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:&lt;br /&gt;
* El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.&lt;br /&gt;
* Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.&lt;br /&gt;
* Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
Además, algunos sistemas operativos disponen de un estado terminado en el que los procesos pasan antes de terminar su ejecución.&lt;br /&gt;
&lt;br /&gt;
En el caso del núcleo de Linux, existen tres tipos de estados bloqueado y dos estados terminado: http://www.ibm.com/developerworks/linux/library/l-task-killable/&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Planificador_de_procesos&amp;diff=1371</id>
		<title>Planificador de procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Planificador_de_procesos&amp;diff=1371"/>
				<updated>2011-10-11T20:53:52Z</updated>
		
		<summary type="html">&lt;p&gt;Peducemar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El planificador de procesos (''process scheduler'', en inglés) es la parte del sistema operativo que se encarga seleccionar qué proceso emplea el procesador. Tiene como funciones principales:&lt;br /&gt;
&lt;br /&gt;
* Llevar el control del estado de cada proceso.&lt;br /&gt;
* Decidir qué proceso usará el procesador y durante cuanto tiempo, para ello empleará un cierto criterio en base al cual tomará las decisiones. Si implementa multiprogramación, deberá emplear un criterio que evite que un proceso monopolice el procesador.&lt;br /&gt;
* Asignar el procesador al proceso, restableciendo el contexto de la ejecución del proceso por donde fuere.&lt;br /&gt;
* Retirar el procesador al proceso, salvando el contexto de la ejecución del proceso, para poder restablecerlo posteriormente una vez que vuelva a ser asignado.&lt;br /&gt;
&lt;br /&gt;
El planificador de procesos es código, por tanto, requiere emplear el recurso procesador para la realizar su función.&lt;br /&gt;
&lt;br /&gt;
== Objetivos de un buen planificador de procesos ==&lt;br /&gt;
&lt;br /&gt;
Un buen planificador de procesos debe ofrecer:&lt;br /&gt;
&lt;br /&gt;
* Alto &amp;lt;nowiki&amp;gt;&amp;quot;rendimiento&amp;quot;&amp;lt;/nowiki&amp;gt; (''throughput'' (''tasa de transferencia''), en inglés) en base a la cantidad de procesos que puede soportar. A mayor cantidad, mayor rendimiento.&lt;br /&gt;
* Baja latencia (''latency'', en inglés) en referencia al tiempo de respuesta a los procesos. Si el proceso tarda mucho en ser asignado al procesador, se dice que la latencia será alta. Se considera una latencia aceptable a tiempos menores a 200 ms para garantizar una buena experiencia al usuario.&lt;/div&gt;</summary>
		<author><name>Peducemar</name></author>	</entry>

	</feed>