<?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=Davrubluc1</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=Davrubluc1"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php/Especial:Contribuciones/Davrubluc1"/>
		<updated>2026-04-15T16:46:19Z</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=2489</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=2489"/>
				<updated>2012-02-06T17:09:04Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: &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;
* Francisco Jose Perez Dominguez - fraperdom&lt;br /&gt;
* antdomflo&lt;br /&gt;
* antmorzam&lt;br /&gt;
* migoligon&lt;br /&gt;
* danplaseg&lt;br /&gt;
* peducemar&lt;br /&gt;
* danescsan&lt;br /&gt;
* sertrimur&lt;br /&gt;
* juamenmor&lt;br /&gt;
* davrubluc1&lt;br /&gt;
* tomvelber&lt;br /&gt;
* dandeben&lt;br /&gt;
* alfalclop&lt;br /&gt;
* rafvermor&lt;br /&gt;
* alelaresp&lt;br /&gt;
* fraguegon&lt;br /&gt;
* davrubluc1&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_con_listado_de_personas_que_han_contribuido&amp;diff=2488</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=2488"/>
				<updated>2012-02-06T17:08:35Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: &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;
* Francisco Jose Perez Dominguez - fraperdom&lt;br /&gt;
* antdomflo&lt;br /&gt;
* antmorzam&lt;br /&gt;
* migoligon&lt;br /&gt;
* danplaseg&lt;br /&gt;
* peducemar&lt;br /&gt;
* danescsan&lt;br /&gt;
* sertrimur&lt;br /&gt;
* juamenmor&lt;br /&gt;
* davrubluc1&lt;br /&gt;
* tomvelber&lt;br /&gt;
* dandeben&lt;br /&gt;
* alfalclop&lt;br /&gt;
* rafvermor&lt;br /&gt;
* alelaresp&lt;br /&gt;
* fraguegon&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_variables&amp;diff=2070</id>
		<title>SO multiprogramables con particiones variables</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_variables&amp;diff=2070"/>
				<updated>2011-12-07T16:33:24Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Siguiente ajuste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En este tipo de sistemas, las particiones para cada proceso se van creando a medida que son asignadas al procesador. Tiene como ventaja principal que evitamos el desperdicio de memoria dentro de cada bloque ya que cada uno está hecho a medida para el proceso que contiene. Por el contrario, una vez que un proceso ha concluido, su partición se queda en desuso y sería necesario aplicar algoritmos de desfragmentación de memoria(supone un alto coste de rendimiento) para poder unificar todas las partes que han quedado libres y así reciclar las particiones que quedaron huérfanas. Otra forma de obtener particiones de mayor tamaño es unificar dos o más huecos adyacentes en uno sólo.&lt;br /&gt;
&lt;br /&gt;
''Ejemplo:''&lt;br /&gt;
  _                                 _&lt;br /&gt;
 |_| P1 = 3KB                      |_| P1 = 3KB   &lt;br /&gt;
 |_| P2 = 1KB                      |_| P2 = 1KB&lt;br /&gt;
 |_| P3 = 6KB    =&amp;gt; Finaliza P3 =&amp;gt; |_| Libre = 6KB&lt;br /&gt;
 | |                               | |&lt;br /&gt;
 |_| P4 = 31KB                     |_| P4 = 31KB&lt;br /&gt;
 | |                               | |&lt;br /&gt;
 |_| Libre = 21KB                  |_| Libre = 21KB&lt;br /&gt;
&lt;br /&gt;
Si un nuevo proceso P5 requiriese 24KB de memoria, no podrían serle asignados, ya que los huecos no son contiguos y para disponer de los 27KB libres en total habría que realizar previamente una desfragmentación.&lt;br /&gt;
&lt;br /&gt;
== Elementos de administración ==&lt;br /&gt;
&lt;br /&gt;
* '''Mapas de bits''': Dividiendo la memoria en bloques, se utiliza un bit para representar si dicho bloque está libre o asignado.&lt;br /&gt;
&lt;br /&gt;
* '''Listas de control''': Se almacena en una lista el tamaño de los huecos y las posiciones de memoria entre las que se encuentran comprendidos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Consiste en asignar el primer hueco disponible que tenga un espacio suficiente para almacenar el programa. Las dos principales desventajas son su alto desperdicio interno, y el elevado uso de las primeras posiciones de memoria. Este último inconveniente repercute negativamente en la circuitería, debido a que se produce un mayor desgaste en dichas posiciones.&lt;br /&gt;
&lt;br /&gt;
Ejemplo: Suponiendo una memoria principal de 32 KB.&lt;br /&gt;
&lt;br /&gt;
     | H0 | t | M |&lt;br /&gt;
 -------------------&lt;br /&gt;
 P1  | 0  | 5 | 6 |&lt;br /&gt;
 P2  | 1  | 3 | 6 |&lt;br /&gt;
 P3  | 2  | 5 | 8 |&lt;br /&gt;
 P4  | 3  | 1 | 7 |&lt;br /&gt;
 P5  | 4  | 2 | 7 |&lt;br /&gt;
 P6  | 5  | 2 | 5 |&lt;br /&gt;
&lt;br /&gt;
Solución:&lt;br /&gt;
                         0-5&lt;br /&gt;
             P1  &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |    &lt;br /&gt;
                           6-11&lt;br /&gt;
             P2  |   &amp;lt;---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                 12-19&lt;br /&gt;
             P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                             20-26    &lt;br /&gt;
             P4  |   |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |      &lt;br /&gt;
                                   20-26&lt;br /&gt;
             P5  |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   &lt;br /&gt;
                                        0-4             &lt;br /&gt;
             P6  |   |   |   |   |   &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;
== Siguiente ajuste ==&lt;br /&gt;
&lt;br /&gt;
Se continúa a partir de la posición de la última asignación realizada.Es muy probable que haya un hueco a partir de esa posición, reduciendo la longitud de la búsqueda. De esta forma se resuelve el inconveniente de usar en exceso las primeras posiciones de la memoria.&lt;br /&gt;
&lt;br /&gt;
Ejemplo: Suponiendo una memoria principal de 32 KB.&lt;br /&gt;
&lt;br /&gt;
    | H0 | t | M |&lt;br /&gt;
-------------------&lt;br /&gt;
P1  | 0  | 5 | 6 |&lt;br /&gt;
P2  | 1  | 3 | 6 |&lt;br /&gt;
P3  | 2  | 5 | 8 |&lt;br /&gt;
P4  | 3  | 1 | 7 |&lt;br /&gt;
P5  | 4  | 2 | 7 |&lt;br /&gt;
P6  | 5  | 2 | 5 |&lt;br /&gt;
&lt;br /&gt;
Solución:&lt;br /&gt;
&lt;br /&gt;
                        0-5&lt;br /&gt;
            P1  &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |    &lt;br /&gt;
                          6-11&lt;br /&gt;
            P2  |   &amp;lt;---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                12-19&lt;br /&gt;
            P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                            20-26    &lt;br /&gt;
            P4  |   |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |      &lt;br /&gt;
                                  20-26&lt;br /&gt;
            P5  |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   &lt;br /&gt;
                                      27-31             &lt;br /&gt;
            P6  |   |   |   |   |   &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;
== Mejor ajuste ==&lt;br /&gt;
&lt;br /&gt;
Consiste en asignarle al proceso el hueco con menor ajuste interno, i.e, el hueco el cual al serle asignado el proceso deja menos espacio sin utilizar. Su mayor inconveniente es su orden de complejidad (orden lineal, ''O(n)'')&lt;br /&gt;
&lt;br /&gt;
== Peor ajuste ==&lt;br /&gt;
&lt;br /&gt;
Al contrario que el criterio anterior, se asigna a cada proceso el hueco con mayor ajuste interno, i.e, el hueco el cual al serle asignado el proceso deja más espacio sin utilizar. Tiene el mismo inconveniente en cuanto a orden de complejidad que el mejor ajuste.&lt;br /&gt;
&lt;br /&gt;
== Ajuste rápido ==&lt;br /&gt;
&lt;br /&gt;
Mediante listas de control, se agrupan los huecos disponibles según su tamaño (0 &amp;lt; t &amp;lt; 10, 10 &amp;lt; t &amp;lt; 20, etc.). De esta manera, cuando se necesite un hueco, se seleccionarán los del grupo del tamaño que corresponda. En el caso de que haya varios huecos disponibles, se seleccionará uno en base a cualquiera de los criterios anteriores.&lt;br /&gt;
&lt;br /&gt;
== Método de los compañeros ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del ajuste rápido, en el que los huecos se dividen en potencias de 2: 2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, ..., 2&amp;lt;sup&amp;gt;k&amp;lt;/sup&amp;gt;. No es un método usado en la práctica, ya que al realizar redondeos a potencias de 2, se produce un elevado desperdicio interno.&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_variables&amp;diff=2069</id>
		<title>SO multiprogramables con particiones variables</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_variables&amp;diff=2069"/>
				<updated>2011-12-07T16:17:28Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Primer ajuste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En este tipo de sistemas, las particiones para cada proceso se van creando a medida que son asignadas al procesador. Tiene como ventaja principal que evitamos el desperdicio de memoria dentro de cada bloque ya que cada uno está hecho a medida para el proceso que contiene. Por el contrario, una vez que un proceso ha concluido, su partición se queda en desuso y sería necesario aplicar algoritmos de desfragmentación de memoria(supone un alto coste de rendimiento) para poder unificar todas las partes que han quedado libres y así reciclar las particiones que quedaron huérfanas. Otra forma de obtener particiones de mayor tamaño es unificar dos o más huecos adyacentes en uno sólo.&lt;br /&gt;
&lt;br /&gt;
''Ejemplo:''&lt;br /&gt;
  _                                 _&lt;br /&gt;
 |_| P1 = 3KB                      |_| P1 = 3KB   &lt;br /&gt;
 |_| P2 = 1KB                      |_| P2 = 1KB&lt;br /&gt;
 |_| P3 = 6KB    =&amp;gt; Finaliza P3 =&amp;gt; |_| Libre = 6KB&lt;br /&gt;
 | |                               | |&lt;br /&gt;
 |_| P4 = 31KB                     |_| P4 = 31KB&lt;br /&gt;
 | |                               | |&lt;br /&gt;
 |_| Libre = 21KB                  |_| Libre = 21KB&lt;br /&gt;
&lt;br /&gt;
Si un nuevo proceso P5 requiriese 24KB de memoria, no podrían serle asignados, ya que los huecos no son contiguos y para disponer de los 27KB libres en total habría que realizar previamente una desfragmentación.&lt;br /&gt;
&lt;br /&gt;
== Elementos de administración ==&lt;br /&gt;
&lt;br /&gt;
* '''Mapas de bits''': Dividiendo la memoria en bloques, se utiliza un bit para representar si dicho bloque está libre o asignado.&lt;br /&gt;
&lt;br /&gt;
* '''Listas de control''': Se almacena en una lista el tamaño de los huecos y las posiciones de memoria entre las que se encuentran comprendidos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Criterios de asignación =&lt;br /&gt;
&lt;br /&gt;
== Primer ajuste ==&lt;br /&gt;
&lt;br /&gt;
Consiste en asignar el primer hueco disponible que tenga un espacio suficiente para almacenar el programa. Las dos principales desventajas son su alto desperdicio interno, y el elevado uso de las primeras posiciones de memoria. Este último inconveniente repercute negativamente en la circuitería, debido a que se produce un mayor desgaste en dichas posiciones.&lt;br /&gt;
&lt;br /&gt;
Ejemplo: Suponiendo una memoria principal de 32 KB.&lt;br /&gt;
&lt;br /&gt;
     | H0 | t | M |&lt;br /&gt;
 -------------------&lt;br /&gt;
 P1  | 0  | 5 | 6 |&lt;br /&gt;
 P2  | 1  | 3 | 6 |&lt;br /&gt;
 P3  | 2  | 5 | 8 |&lt;br /&gt;
 P4  | 3  | 1 | 7 |&lt;br /&gt;
 P5  | 4  | 2 | 7 |&lt;br /&gt;
 P6  | 5  | 2 | 5 |&lt;br /&gt;
&lt;br /&gt;
Solución:&lt;br /&gt;
                         0-5&lt;br /&gt;
             P1  &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |    &lt;br /&gt;
                           6-11&lt;br /&gt;
             P2  |   &amp;lt;---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                                 12-19&lt;br /&gt;
             P3  |   |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       &lt;br /&gt;
                             20-26    &lt;br /&gt;
             P4  |   |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |      &lt;br /&gt;
                                   20-26&lt;br /&gt;
             P5  |   |   |   |   &amp;lt;---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   &lt;br /&gt;
                                        0-4             &lt;br /&gt;
             P6  |   |   |   |   |   &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;
== Siguiente ajuste ==&lt;br /&gt;
&lt;br /&gt;
Se continúa a partir de la posición de la última asignación realizada.Es muy probable que haya un hueco a partir de esa posición, reduciendo la longitud de la búsqueda. De esta forma se resuelve el inconveniente de usar en exceso las primeras posiciones de la memoria.&lt;br /&gt;
&lt;br /&gt;
== Mejor ajuste ==&lt;br /&gt;
&lt;br /&gt;
Consiste en asignarle al proceso el hueco con menor ajuste interno, i.e, el hueco el cual al serle asignado el proceso deja menos espacio sin utilizar. Su mayor inconveniente es su orden de complejidad (orden lineal, ''O(n)'')&lt;br /&gt;
&lt;br /&gt;
== Peor ajuste ==&lt;br /&gt;
&lt;br /&gt;
Al contrario que el criterio anterior, se asigna a cada proceso el hueco con mayor ajuste interno, i.e, el hueco el cual al serle asignado el proceso deja más espacio sin utilizar. Tiene el mismo inconveniente en cuanto a orden de complejidad que el mejor ajuste.&lt;br /&gt;
&lt;br /&gt;
== Ajuste rápido ==&lt;br /&gt;
&lt;br /&gt;
Mediante listas de control, se agrupan los huecos disponibles según su tamaño (0 &amp;lt; t &amp;lt; 10, 10 &amp;lt; t &amp;lt; 20, etc.). De esta manera, cuando se necesite un hueco, se seleccionarán los del grupo del tamaño que corresponda. En el caso de que haya varios huecos disponibles, se seleccionará uno en base a cualquiera de los criterios anteriores.&lt;br /&gt;
&lt;br /&gt;
== Método de los compañeros ==&lt;br /&gt;
&lt;br /&gt;
Es una variante del ajuste rápido, en el que los huecos se dividen en potencias de 2: 2&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, ..., 2&amp;lt;sup&amp;gt;k&amp;lt;/sup&amp;gt;. No es un método usado en la práctica, ya que al realizar redondeos a potencias de 2, se produce un elevado desperdicio interno.&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_ajuste_din%C3%A1mico&amp;diff=1996</id>
		<title>Solución ajuste dinámico</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_ajuste_din%C3%A1mico&amp;diff=1996"/>
				<updated>2011-12-01T17:51:09Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
                            M1&lt;br /&gt;
              P3  &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M1&lt;br /&gt;
                             M3&lt;br /&gt;
              P4  |   &amp;lt;---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&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;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1995</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=1995"/>
				<updated>2011-12-01T17:40:31Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Ejemplo */&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>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_primer_ajuste&amp;diff=1994</id>
		<title>Solución primer ajuste</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_primer_ajuste&amp;diff=1994"/>
				<updated>2011-12-01T17:39:18Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: Página reemplazada por ' Solución: P1-&amp;gt;H1, P2-&amp;gt;H2, P3-&amp;gt;H3, P4-&amp;gt;H4, P5-&amp;gt;H4

P5 podrá ir a H4 cuando este quede libre.'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Solución: P1-&amp;gt;H1, P2-&amp;gt;H2, P3-&amp;gt;H3, P4-&amp;gt;H4, P5-&amp;gt;H4&lt;br /&gt;
&lt;br /&gt;
P5 podrá ir a H4 cuando este quede libre.&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1993</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=1993"/>
				<updated>2011-12-01T17:38:07Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Primer ajuste */&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;
== 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>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1992</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=1992"/>
				<updated>2011-12-01T17:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Primer ajuste */&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;
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;
== 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>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1991</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=1991"/>
				<updated>2011-12-01T17:34:59Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Ejemplo */&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;
&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>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_primer_ajuste&amp;diff=1990</id>
		<title>Solución primer ajuste</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_primer_ajuste&amp;diff=1990"/>
				<updated>2011-12-01T17:33:22Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Solución: P1-&amp;gt;H1, P2-&amp;gt;H2, P3-&amp;gt;H3, P4-&amp;gt;H4, P5-&amp;gt;H4&lt;br /&gt;
&lt;br /&gt;
P5 podrá ir a H4 cuando este quede libre.&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;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1989</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=1989"/>
				<updated>2011-12-01T17:27:28Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Ejemplo */&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;
&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>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=SO_multiprogramables_con_particiones_fijas&amp;diff=1982</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=1982"/>
				<updated>2011-12-01T16:27:50Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Ejemplo */&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;
              |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              P1  &amp;lt;---|---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P1--&amp;gt;M1&lt;br /&gt;
              P2  |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |       P2--&amp;gt;M2&lt;br /&gt;
              P3  |   |   &amp;lt;   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P3--&amp;gt;M2&lt;br /&gt;
              P4  |   |   |   &amp;lt;---|---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |       P4--&amp;gt;M3&lt;br /&gt;
              P5  |   |   |   |   &amp;lt;   |   |   |---|---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |       P5--&amp;gt;M1&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;
&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>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer6-planif-procesos&amp;diff=1824</id>
		<title>Sol-ejer6-planif-procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer6-planif-procesos&amp;diff=1824"/>
				<updated>2011-11-15T18:55:36Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Apartado b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apartado a =&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que ha consumido su cuanto&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   p---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---#   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   X   X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
-Respuesta: debido a que el quantum tiene un tamaño muy pequeño el planificador de tareas se ejecuta continuamente (tiempo del sistema alto) con lo que el rendimiento se verá afectado. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DUDA: En t=5 ¿por qué se inicia PC en vez de PD? Si entra PD en t=5 se debería ejecutar porque en RR estricto los procesos recién lanzados deben ejecutarse, similar a lo de orden de llegada. He pensado que puede ser por la prioridad pero esque aquí en la tabla no viene las prioridades, solo H0 y t. --Luisa Mª.&lt;br /&gt;
&lt;br /&gt;
- En t=4 se han ejecutado P&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt;,P&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt; y P&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;, entonces le tocaría el turno a P&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt; pero como en ese momento no está preparado se le pasa el turno a P&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt; otra vez, después de ejecutarse este se le pasa el turno a P&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt; pero como ya ha terminado de ejecutarse se salta al proceso siguiente: P&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;. ¡Aunque también es posible que me haya equivocado! --[[Usuario:jesgonbel|jesgonbel]].&lt;br /&gt;
&lt;br /&gt;
- Creo que como dice Luisa se debería ejecutar PD, porque los recien llegados tienen prioridad frente a los que ya se han iniciado.--[[Usuario:Josmorsot|Josmorsot]] 12:39 11 nov 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Mirad el enunciado, el proceso C tiene una prioridad superior a D, imagino que será por eso. --Juan Ignacio.&lt;br /&gt;
&lt;br /&gt;
= Apartado b =&lt;br /&gt;
&lt;br /&gt;
En ambos casos la solución es la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que ha consumido su cuanto&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   |   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
DUDA: No entiendo que eso de que bloquea cuando su quantum es 1 si en uno de SJF no hay quantum además dudo que ambas soluciones sean iguales ya que en uno apropiativo se le puede retirar el proceso, en cuanto haya uno mas corto en estado preparado, que alguien me corrija si me equivoco, gracias.&lt;br /&gt;
&lt;br /&gt;
Resp: Estoy contigo, esta solucion seria para el Apropiativo y sin contar con el quantum ni la prioridad, ya que se mira al que le quede menos. Para el No Apropiativo yo tengo otra solución totalmente diferente, la pongo y me decis si tengo algo mal:&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p   &amp;lt;---&amp;amp;   |   |   p   |   |   |   |   |---&amp;gt;   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;-------&amp;amp;   p-------&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |   |   |---|---|---|---|---|---&amp;gt;   |   |   |   |   |   |&lt;br /&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;
Si yo creo que es correcto, hemos hecho el ejercicio dos personas y nos ha dado el mismo resultado.&lt;br /&gt;
&lt;br /&gt;
= Apartado c =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que el planificador le retira el procesador&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   p   |   |---&amp;amp;   |   |   &amp;gt;   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---|---&amp;amp;   &amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |---|   |---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   X   X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
Indices de penalizacion: P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;=9      P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;=1    P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;=7/4    P&amp;lt;sub&amp;gt;D&amp;lt;/sub&amp;gt;=9/6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duda: ¿porqué en el instante t=8 no se le asigna el recurso procesador al proceso A, siendo su penalizacion mayor que C?&lt;br /&gt;
Yo diría que este ejercicio esta mal.A ver si el profesor nos da su opinión.&lt;br /&gt;
&lt;br /&gt;
Resp: Yo opino igual que tu, en el enunciado pone que es APROPIATIVO, en el t=8 se deberia revaluar la situación, los indices de penalización son: Pa=3, Pc=1'5 y Pd=1'33, por tanto entraria el Pa, luego iria Pc de t9 a t10 que termina y por ultimo Pd de t10 a t15.&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer6-planif-procesos&amp;diff=1802</id>
		<title>Sol-ejer6-planif-procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer6-planif-procesos&amp;diff=1802"/>
				<updated>2011-11-14T20:10:47Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Apartado c */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apartado a =&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que ha consumido su cuanto&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   p---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---#   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   X   X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
-Respuesta: debido a que el quantum tiene un tamaño muy pequeño el planificador de tareas se ejecuta continuamente (tiempo del sistema alto) con lo que el rendimiento se verá afectado. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DUDA: En t=5 ¿por qué se inicia PC en vez de PD? Si entra PD en t=5 se debería ejecutar porque en RR estricto los procesos recién lanzados deben ejecutarse, similar a lo de orden de llegada. He pensado que puede ser por la prioridad pero esque aquí en la tabla no viene las prioridades, solo H0 y t. --Luisa Mª.&lt;br /&gt;
&lt;br /&gt;
- En t=4 se han ejecutado P&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt;,P&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt; y P&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;, entonces le tocaría el turno a P&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt; pero como en ese momento no está preparado se le pasa el turno a P&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt; otra vez, después de ejecutarse este se le pasa el turno a P&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt; pero como ya ha terminado de ejecutarse se salta al proceso siguiente: P&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;. ¡Aunque también es posible que me haya equivocado! --[[Usuario:jesgonbel|jesgonbel]].&lt;br /&gt;
&lt;br /&gt;
- Creo que como dice Luisa se debería ejecutar PD, porque los recien llegados tienen prioridad frente a los que ya se han iniciado.--[[Usuario:Josmorsot|Josmorsot]] 12:39 11 nov 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Mirad el enunciado, el proceso C tiene una prioridad superior a D, imagino que será por eso. --Juan Ignacio.&lt;br /&gt;
&lt;br /&gt;
= Apartado b =&lt;br /&gt;
&lt;br /&gt;
En ambos casos la solución es la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que ha consumido su cuanto&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   |   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
DUDA: No entiendo que eso de que bloquea cuando su quantum es 1 si en uno de SJF no hay quantum además dudo que ambas soluciones sean iguales ya que en uno apropiativo se le puede retirar el proceso, en cuanto haya uno mas corto en estado preparado, que alguien me corrija si me equivoco, gracias.&lt;br /&gt;
&lt;br /&gt;
= Apartado c =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que el planificador le retira el procesador&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   p   |   |---&amp;amp;   |   |   &amp;gt;   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---|---&amp;amp;   &amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |---|   |---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   X   X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
Indices de penalizacion: P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;=9      P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;=1    P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;=7/4    P&amp;lt;sub&amp;gt;D&amp;lt;/sub&amp;gt;=9/6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duda: ¿porqué en el instante t=8 no se le asigna el recurso procesador al proceso A, siendo su penalizacion mayor que C?&lt;br /&gt;
Yo diría que este ejercicio esta mal.A ver si el profesor nos da su opinión.&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer6-planif-procesos&amp;diff=1791</id>
		<title>Sol-ejer6-planif-procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer6-planif-procesos&amp;diff=1791"/>
				<updated>2011-11-12T17:54:21Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Apartado b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Apartado a =&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que ha consumido su cuanto&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   p---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---#   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   X   X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
-Respuesta: debido a que el quantum tiene un tamaño muy pequeño el planificador de tareas se ejecuta continuamente (tiempo del sistema alto) con lo que el rendimiento se verá afectado. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DUDA: En t=5 ¿por qué se inicia PC en vez de PD? Si entra PD en t=5 se debería ejecutar porque en RR estricto los procesos recién lanzados deben ejecutarse, similar a lo de orden de llegada. He pensado que puede ser por la prioridad pero esque aquí en la tabla no viene las prioridades, solo H0 y t. --Luisa Mª.&lt;br /&gt;
&lt;br /&gt;
- En t=4 se han ejecutado P&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt;,P&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt; y P&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;, entonces le tocaría el turno a P&amp;lt;sub&amp;gt;d&amp;lt;/sub&amp;gt; pero como en ese momento no está preparado se le pasa el turno a P&amp;lt;sub&amp;gt;a&amp;lt;/sub&amp;gt; otra vez, después de ejecutarse este se le pasa el turno a P&amp;lt;sub&amp;gt;b&amp;lt;/sub&amp;gt; pero como ya ha terminado de ejecutarse se salta al proceso siguiente: P&amp;lt;sub&amp;gt;c&amp;lt;/sub&amp;gt;. ¡Aunque también es posible que me haya equivocado! --[[Usuario:jesgonbel|jesgonbel]].&lt;br /&gt;
&lt;br /&gt;
- Creo que como dice Luisa se debería ejecutar PD, porque los recien llegados tienen prioridad frente a los que ya se han iniciado.--[[Usuario:Josmorsot|Josmorsot]] 12:39 11 nov 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Mirad el enunciado, el proceso C tiene una prioridad superior a D. Juan Ignacio.&lt;br /&gt;
&lt;br /&gt;
= Apartado b =&lt;br /&gt;
&lt;br /&gt;
En ambos casos la solución es la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que ha consumido su cuanto&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   |   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---|---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |   |---|---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
DUDA: No entiendo que eso de que bloquea cuando su quantum es 1 si en uno de SJF no hay quantum además dudo que ambas soluciones sean iguales ya que en uno apropiativo se le puede retirar el proceso, en cuanto haya uno mas corto en estado preparado, que alguien me corrija si me equivoco, gracias.&lt;br /&gt;
&lt;br /&gt;
= Apartado c =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                    ____|_PA_|_PB_|_PC_|_PD_|&lt;br /&gt;
         Datos del  _H0_|_0__|_2__|_3__|_5__|&lt;br /&gt;
          problema  _t__|_3__|_1__|_4__|_6__|&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;
                      &amp;amp; = el proceso bloquea debido a una llamada bloqueante&lt;br /&gt;
                      # = el proceso bloquea debido a que el planificador le retira el procesador&lt;br /&gt;
                      X = se ejecuta el código del planificador&lt;br /&gt;
                      p = el proceso pasa a estado preparado&lt;br /&gt;
&lt;br /&gt;
                  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PA  &amp;lt;---&amp;amp;   |   |   p---&amp;amp;   |   |   p   |   |---&amp;amp;   |   |   &amp;gt;   |   |   |   |   |   |&lt;br /&gt;
              PB  |   |   &amp;lt;---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PC  |   |   |   &amp;lt;---#   |---&amp;amp;   p---|---&amp;amp;   &amp;gt;   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
              PD  |   |   |   |   |   &amp;lt;   |---#   |   |---|   |---|---|---|---&amp;gt;   |   |   |   |   |&lt;br /&gt;
     Planificador X   X   X   X   X   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  16  17  18  19  20&lt;br /&gt;
&lt;br /&gt;
Indices de penalizacion: P&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt;=9      P&amp;lt;sub&amp;gt;B&amp;lt;/sub&amp;gt;=1    P&amp;lt;sub&amp;gt;C&amp;lt;/sub&amp;gt;=7/4    P&amp;lt;sub&amp;gt;D&amp;lt;/sub&amp;gt;=9/6&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer4-planif-procesos&amp;diff=1787</id>
		<title>Sol-ejer4-planif-procesos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol-ejer4-planif-procesos&amp;diff=1787"/>
				<updated>2011-11-12T15:05:39Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Explicacion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datos del problema:&lt;br /&gt;
                         | Pa | Pb | Pc  |&lt;br /&gt;
                     --------------------&lt;br /&gt;
                      H0 | 0  | 1  |  2  |&lt;br /&gt;
                     --------------------&lt;br /&gt;
                      t  | 3  | 5  |  6  |&lt;br /&gt;
                     --------------------&lt;br /&gt;
 &lt;br /&gt;
                  Pa bloquea por operación de E/S tras 1 unidad de ejecución&lt;br /&gt;
                  Pb bloquea por operación de E/S tras 3 unidad de ejecución&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;
                       &amp;amp; = El proceso se bloquea por una operacion de E/S &lt;br /&gt;
                       X = se ejecuta el código del planificador&lt;br /&gt;
 &lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   &lt;br /&gt;
 Pa    &amp;lt;---&amp;amp;   |   |---&amp;amp;   |   |---&amp;gt;   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
 Pb    |   &amp;lt;---|---|   |   |   |   |---&amp;amp;   |   |---|---&amp;gt;   |   |   |   |   |   |   |   &lt;br /&gt;
 Pc    |   |   &amp;lt;   |   |---|---|   |   |---|---|   |   |---|---&amp;gt;   |   |   |   |   |   &lt;br /&gt;
 Plnf  X   X   |   X   X   |   X   X   X   |   X   |   X   |   |   |   |   |   |   |   &lt;br /&gt;
       |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|&lt;br /&gt;
       0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Cálculo de índices:&lt;br /&gt;
 &lt;br /&gt;
                         | Pa | Pb |  Pc |&lt;br /&gt;
                     --------------------&lt;br /&gt;
                      t  | 3  | 5  |  6  |&lt;br /&gt;
                     --------------------&lt;br /&gt;
                      T  | 8  | 11 |  12 |&lt;br /&gt;
                     --------------------&lt;br /&gt;
                    T/t  |2.6 | 2.2|  2  |&lt;br /&gt;
                     --------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Explicacion ==&lt;br /&gt;
DUDA: No veo claro porque no entra en H0=3 el proceso C ya que según vimos en clase es necesario dar oportunidad a los procesos nuevos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En el instante Ho = 0 llega el proceso A que es el primero que se ejecuta , a la unidad de tiempo bloquea por operacion de E/S. En el instante Ho = 1 llega el proceso el proceso B y al ser el unico que esta en la cola de preparados se le asigna al procesador y gasta su quantum de 2 unidades de tiempo. En el instante Ho = 2 llega a la cola de preparado el proceso C siendo el unico que se encuentra en la cola de preparado en ese momento ya que el proceso B esta activo. En el instante Ho = 3 , estaria en la cola de preparados C y despues B pero el proceso al no gastar su cuantum de tiempo se le da una nueva oportunidad y se le asigna de nuevo al procesado con 2 unidades de tiempo de quantum, de nuevo se ejecuta solamente una unidad de tiempo y se bloquea el proceso A por operacion de E/S. En el instante Ho = 4 , en la cola de preparados queda el proceso C y B , en ese orden , por lo tanto se le asignara al procesador el proceso C y gasta sus 2 unidades de tiempo de quantum. En el instante Ho = 6 sucede lo mismo que en el instante Ho=3 el proceso A al no haber gastado su 2 unidade tiempo de quantum, se le da una nueva oportunidad y se le asigna al procesador , el proceso A termina. En el instante Ho= 7 en la cola esta primero B y luego C con lo que se le asignara B al procesador y la unidad de tiempo bloqueara por operacion de E/S. En el Ho = 8 se le asigna al procesador el proceso C ya que es el unico en la cola de preparados. En el instante Ho=10 llegan a estado preparado B y C pero siguiendo el 2º punto del enunciado dice que llega antes B que C por lo tanto se le asigna al procesador el proceso B y el proceso B agota sus 2 cuantum y tambien terminaria su proceso al ya tener sus 5 unidades de tiempo. Solo queda el proceso C que acaba en Ho = 14&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Criterios_de_planificaci%C3%B3n&amp;diff=1780</id>
		<title>Criterios de planificación</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Criterios_de_planificaci%C3%B3n&amp;diff=1780"/>
				<updated>2011-11-11T18:16:50Z</updated>
		
		<summary type="html">&lt;p&gt;Davrubluc1: /* Turno rotatorio con compensación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=4.3.1 Métodos no apropiativos =&lt;br /&gt;
&lt;br /&gt;
El procesador es asignado al proceso hasta fin de ejecución. Suele darse en sistemas operativos monoprogramables y sistemas de tiempo real.&lt;br /&gt;
En los métodos no apropiativos, si el proceso se bloquea  o entra en estado bloqueado, el procesador quedará sin uso durante todo ese tiempo, pues estaba dedicado/reservado para ése proceso.&lt;br /&gt;
&lt;br /&gt;
== Estocástico ==&lt;br /&gt;
&lt;br /&gt;
Se selecciona aleatoriamente el proceso a ser asignado al procesador. No cumple varios [[Planificación de procesos#Aspectos para diseñar un buen planificador|aspectos de diseño de un buen planificador]], como repetitividad o predecibilidad. Es un criterio de planificación teórico que sirve de referencia, si se emplea un criterio de planificación que ofrece resultados peores que la planificación de procesos estocástica, entonces es que no se trata de un buen criterio de planificación.&lt;br /&gt;
&lt;br /&gt;
No se ofrece un ejemplo, puesto que para un conjunto de procesos existen tantas trazas de ejecución como posible combinaciones aleatorias.&lt;br /&gt;
&lt;br /&gt;
== Con conocimiento del futuro ==&lt;br /&gt;
&lt;br /&gt;
En base al conocimiento del futuro se asignan los procesos. Se trata también de un criterio de planificación teórico. Si un criterio de planificación se acerca al criterio de planificación con conocimiento de futuro, entonces es que se trata de un buen planificador.&lt;br /&gt;
&lt;br /&gt;
     Ejemplo:&lt;br /&gt;
 &lt;br /&gt;
                      ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
           Datos del  _H0_|_0__|_1__|_3__|_6__|_7__|&lt;br /&gt;
            problema  _t__|_3__|_5__|_2__|_3__|_1__|&lt;br /&gt;
 &lt;br /&gt;
                        &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                        &amp;gt; = finalización del proceso                                                                       &lt;br /&gt;
                        x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
         |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pa  &amp;lt;xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pb  |---&amp;lt;---|---|---|---|xxx|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pc  |---|---|---&amp;lt;xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pd  |---|---|---|---|---|---&amp;lt;---|---|---|---|---|xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|&lt;br /&gt;
     Pe  |---|---|---|---|---|---|---&amp;lt;---|---|---|xxx&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;
                    ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
        Cálculos    _t__|_3__|_5__|_2__|_3__|_1__|&lt;br /&gt;
       de tiempos   _T__|_3__|_9__|_2__|_8__|_4__|      z = índice de penalización&lt;br /&gt;
                    _z__|_1__|_9/5|_1__|_8/3|_4/1|&lt;br /&gt;
&lt;br /&gt;
En este ejemplo, al conocer los tiempos en los que llegará cada proceso, y el tiempo de proceso, podemos buscar la forma de asignarlos de forma que, por ejemplo, consigamos la mínima penalización.&lt;br /&gt;
&lt;br /&gt;
== Por orden de llegada (First In, First Out: FIFO) ==&lt;br /&gt;
&lt;br /&gt;
Se selecciona el proceso por orden de llegada al sistema, cuando un proceso está preparado se añade al final de la cola y se ejecuta según el orden de incorporacion. Su principales ventajas son su facilidad de implementación, consume muy poco tiempo de procesador (casi ninguno) y su orden de complejidad, O(1). Su desventaja es que los procesos de corta duración pueden quedar a la espera de procesos muy prolongados, así que presentarán un alto índice de penalización.&lt;br /&gt;
&lt;br /&gt;
     Ejemplo:&lt;br /&gt;
 &lt;br /&gt;
                      ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
           Datos del  _H0_|_0__|_1__|_3__|_9__|_12_|&lt;br /&gt;
            problema  _t__|_3__|_5__|_2__|_5__|_5__|&lt;br /&gt;
 &lt;br /&gt;
                        &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                        &amp;gt; = finalización del proceso&lt;br /&gt;
                        x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
        |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pa  &amp;lt;xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pb  |---&amp;lt;---|---|xxx|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pc  |---|---|---&amp;lt;---|---|---|---|---|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pd  |---|---|---|---|---|---|---|---|---&amp;lt;---|xxx|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|&lt;br /&gt;
    Pe  |---|---|---|---|---|---|---|---|---|---|---|---&amp;lt;---|---|---|xxx|xxx|xxx|xxx|xxx&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;
                    ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|        t = tiempo de ejecución&lt;br /&gt;
        Cálculos    _t__|_3__|_5__|_2__|_5__|_5__|        T = tiempo de terminación (Instante de&lt;br /&gt;
       de tiempos   _T__|_3__|_7__|_7__|_6__|_8__|        terminación - Instante de lanzamiento)&lt;br /&gt;
                    _z__|_1__|_7/5|_7/2|_6/5|_8/5|        z = índice de penalización&lt;br /&gt;
&lt;br /&gt;
== El siguiente, el más corto (Shortest Job First: SJF) ==&lt;br /&gt;
&lt;br /&gt;
Se selecciona el proceso que requiera menos tiempo de ejecución de entre todos los que están listos para ejecutarse. Se necesita conocer con antelación el tiempo de ejecucion de cada proceso, algo que es muy dificil en muchas ocasiones.&lt;br /&gt;
Para procesos largos puede presentar un índice de penalización elevado: Si se tienen muchos procesos cortos, el de mayor duración puede quedar en espera indefinidamente. Otro inconveniente es que todo trabajo corto que llegue cuando ya ha comenzado un trabajo largo tiene un gran retraso. Su orden de complejidad es O(n).&lt;br /&gt;
&lt;br /&gt;
    Ejemplo:&lt;br /&gt;
 &lt;br /&gt;
                     ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_3__|_9__|_12_|&lt;br /&gt;
           problema  _t__|_3__|_5__|_2__|_5__|_5__|&lt;br /&gt;
 &lt;br /&gt;
                       &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = finalización del proceso&lt;br /&gt;
                       x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
                       &amp;amp; = se ejecuta el planficador&lt;br /&gt;
         |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pa  &amp;lt;xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pb  |---&amp;lt;---|---|---|---|xxx|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pc  |---|---|---&amp;lt;xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pd  |---|---|---|---|---|---|---|---|---&amp;lt;---|xxx|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|&lt;br /&gt;
     Pe  |---|---|---|---|---|---|---|---|---|---|---|---&amp;lt;---|---|---|xxx|xxx|xxx|xxx|xxx&amp;gt;&lt;br /&gt;
 planif. &amp;amp;---|---|---&amp;amp;---|---&amp;amp;---|---|---|---|---&amp;amp;---|---|---|---|---&amp;amp;---|---|---|---|---&amp;amp;&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;
                    ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
        Cálculos    _t__|_3__|_5__|_2__|_5__|_5__|&lt;br /&gt;
       de tiempos   _T__|_3__|_9__|_2__|_6__|_8__|      z = índice de penalización&lt;br /&gt;
                    _z__|_1__|_9/5|_1__|_6/5|_8/5|&lt;br /&gt;
&lt;br /&gt;
== Basado en índice de penalización ==&lt;br /&gt;
&lt;br /&gt;
Se selecciona el proceso que tendrá el índice de penalización &amp;lt;math&amp;gt;I_p=\frac{T}{t}=\frac{H_f-H_0}{t}&amp;lt;/math&amp;gt; de mayor valor. Este método puede producir aplazamientos de ejecución de procesos,pero no son indefinidos. Su orden de complejidad es &amp;lt;math&amp;gt;O(n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
     Ejemplo:&lt;br /&gt;
 &lt;br /&gt;
                      ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
           Datos del  _H0_|_0__|_1__|_3__|_7__|_6__|&lt;br /&gt;
            problema  _t__|_3__|_5__|_4__|_3__|_5__|&lt;br /&gt;
 &lt;br /&gt;
                        &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                        &amp;gt; = finalización del proceso&lt;br /&gt;
                        x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
                        &amp;amp; = se ejecuta el planficador&lt;br /&gt;
   &lt;br /&gt;
        |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pa  &amp;lt;xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pb  |---&amp;lt;---|---|xxx|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pc  |---|---|---&amp;lt;---|---|---|---|---|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pd  |---|---|---|---|---|---|---&amp;lt;---|---|---|---|---|xxx|xxx|xxx&amp;gt;---|---|---|---|---|&lt;br /&gt;
    Pe  |---|---|---|---|---|---&amp;lt;---|---|---|---|---|---|---|---|---|xxx|xxx|xxx|xxx|xxx&amp;gt;&lt;br /&gt;
 planif.&amp;amp;---|---|---&amp;amp;---|---|---|---|---&amp;amp;---|---|---|---&amp;amp;---|---|---&amp;amp;---|---|---|---|---&amp;amp;&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;
                    ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
        Cálculos    _t__|_3__|_5__|_4__|_3__|_5__|&lt;br /&gt;
       de tiempos   _T__|_3__|_7__|_9__|_13_|_11_|&lt;br /&gt;
                    z(3)|_1__|_'''7/5'''|_1__|____|____|&lt;br /&gt;
                    z(8)|_1__|_7/5|_'''9/4'''|_4/3|_7/5|&lt;br /&gt;
                   z(12)|_1__|_7/5|_9/4|_'''8/3'''|11/5|      z = índice de penalización&lt;br /&gt;
                   z(15)|_1__|_7/5|_9/4|_8/3|'''14/5'''|&lt;br /&gt;
                   z(20)|_1__|_7/5|_9/4|_8/3|14/5|&lt;br /&gt;
&lt;br /&gt;
=4.3.2 Métodos apropiativos =&lt;br /&gt;
&lt;br /&gt;
El planificador puede retirar el procesador en cualquier momento al proceso activo. Se emplea fundamentalmente en sistemas operativos [[Multiprogramación|multiprogramables]].&lt;br /&gt;
&lt;br /&gt;
Con métodos apropiativos, la decisión de planificación tiene lugar si:&lt;br /&gt;
&lt;br /&gt;
* El proceso activo pasa a estado bloqueado.&lt;br /&gt;
* El proceso activo termina su ejecución.&lt;br /&gt;
* Se lanza un nuevo proceso.&lt;br /&gt;
* El proceso activo agota el tiempo máximo de asignación del procesador (veáse ''Turno Rotatorio'').&lt;br /&gt;
&lt;br /&gt;
== El siguiente, el más corto (Shortest Job First: SJF) ==&lt;br /&gt;
&lt;br /&gt;
Se selecciona el proceso que requiera menos tiempo de ejecución. Si hay un proceso en estado preparado que requiere menos tiempo de ejecución del que le falta al actual, se le retira el procesador al actual proceso y se le asigna al nuevo. Su orden de complejidad es O(n), pero, a diferencia del no apropiativo, cuando entra un proceso en la lista de procesos, se ejecuta código de planificador.Con este método los procesos más largos se ven perjudicados, pues se puede retrasar tanto su tiempo de inicio, como el de finalización.&lt;br /&gt;
&lt;br /&gt;
     Ejemplo:&lt;br /&gt;
 &lt;br /&gt;
                      ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
           Datos del  _H0_|_0__|_1__|_4__|_6__|_12_|&lt;br /&gt;
            problema  _t__|_3__|_5__|_1__|_8__|_3__|&lt;br /&gt;
 &lt;br /&gt;
                        &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                        &amp;gt; = finalización del proceso&lt;br /&gt;
                        x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
                        $ = indica la ejecución del planificador para retirar un&lt;br /&gt;
                            proceso y establecer otro según el criterio&lt;br /&gt;
                        &amp;amp; = se ejecuta el código del planificador&lt;br /&gt;
        |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pa  &amp;lt;xxx|xxx|xxx&amp;gt;---$---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pb  |---&amp;lt;---|---|xxx|---|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pc  |---|---|---|---&amp;lt;xxx&amp;gt;---|---|---|---|---|---|---$---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pd  |---|---|---|---|---|---&amp;lt;---|---|---|xxx|xxx|xxx|---|---|---|xxx|xxx|xxx|xxx|xxx&amp;gt;&lt;br /&gt;
    Pe  |---|---|---|---|---|---|---|---|---|---|---|---&amp;lt;xxx|xxx|xxx&amp;gt;---|---|---|---|---|&lt;br /&gt;
 Planif.|---&amp;amp;---|---&amp;amp;---&amp;amp;---&amp;amp;---&amp;amp;---|---|---&amp;amp;---|---|---&amp;amp;---|---|---&amp;amp;---|---|---|---|---&amp;amp;&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;
                    ____|_Pa_|_Pb_|_Pc_|_Pd_|_Pe_|&lt;br /&gt;
        Cálculos    _t__|_3__|_5__|_1__|_8__|_3__|&lt;br /&gt;
       de tiempos   _T__|_3__|_8__|_1__|_14_|_3__|        z = índice de penalización&lt;br /&gt;
                    _z__|_1__|_8/5|_1__|14/8|_1__|&lt;br /&gt;
&lt;br /&gt;
== Por prioridades ==&lt;br /&gt;
&lt;br /&gt;
Se establecen índices de prioridad a cada proceso:&lt;br /&gt;
&lt;br /&gt;
* '''Índice estático''': Establecido por el usuario. En el caso de sistemas operativos tipo Unix, se dispone de una índice denominado ''nice value'' cuyos valores están entre -20 (máxima prioridad) y 19 (mínima prioridad).&lt;br /&gt;
* '''Índice dinámico''': Establecido por el planificador, inicialmente basado en el índice estático, después se va recalculando en base a las observaciones que realiza el planificador sobre el comportamiento de los procesos, aumentándola cuando un proceso está a la espera o disminuyéndola cuando tiene adjudicado el procesador.&lt;br /&gt;
&lt;br /&gt;
El método funciona de la siguiente manera: El planificador mantiene ordenada la cola de procesos preparados, según prioridades decrecientes. Si el proceso en ejecución se bloquea, el planificador selecciona el primero de la lista. Cuando un proceso pasa a la situación de preparado, comprueba si su prioridad es mayor que la del proceso activo. En tal caso, suspende la ejecución de éste, colocándolo al principio de la cola de preparados, y elige al recién llegado; si no, lo inserta en la cola según su prioridad.&lt;br /&gt;
Cuando hay varios procesos con la misma prioridad se pueden aplicar diversos criterios, como seguir el orden de llegada a la cola de preparados, o el que necesite menos tiempo para acabar entre otros.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El orden es siempre O(n).&lt;br /&gt;
&lt;br /&gt;
    Ejemplo:&lt;br /&gt;
                                                                                         &lt;br /&gt;
                     ____|_Pa_|_Pb_|_Pc_|_Pd_|&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__|_3__|&lt;br /&gt;
           problema  _t__|_2__|_4__|_2__|_7__|    p = prioridad estática&lt;br /&gt;
                     _p__|_0__|-20_|_4__|_10_|&lt;br /&gt;
                                                       &lt;br /&gt;
                       &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = finalización del proceso&lt;br /&gt;
                       x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
                       $ = indica la ejecución del planificador para retirar un&lt;br /&gt;
                           proceso y establecer otro según el criterio&lt;br /&gt;
                       &amp;amp; = se ejecuta el código del planificador&lt;br /&gt;
         |---$---|---|---|---$---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pa  &amp;lt;xxx|---|---|---|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pb  |---&amp;lt;xxx|xxx|xxx|xxx&amp;gt;---$---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pc  |---|---&amp;lt;---|---|---|---|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
     Pd  |---|---|---&amp;lt;---|---|---|---|---|xxx|xxx|xxx|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|&lt;br /&gt;
 Planif. |---&amp;amp;---&amp;amp;---&amp;amp;---|---&amp;amp;---&amp;amp;---|---&amp;amp;---|---|---|---|---|---|---&amp;amp;---|---|---|---|---|&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;
                   ____|_Pa_|_Pb_|_Pc_|_Pd_|&lt;br /&gt;
       Cálculos    _t__|_2__|_4__|_2__|_7__|&lt;br /&gt;
      de tiempos   _T__|_6__|_4__|_6__|_12_|        z = índice de penalización&lt;br /&gt;
                   _z__|_3__|_1__|_3__|12/7|&lt;br /&gt;
&lt;br /&gt;
== Turno rotatorio ==&lt;br /&gt;
&lt;br /&gt;
=== Turno rotatorio estricto (Round Robin: RR) ===&lt;br /&gt;
&lt;br /&gt;
En este criterio, todo proceso es asignado al procesador durante un tiempo establecido denominado ''quantum'', tras el cual se le retira y se asigna a otro proceso rotatoriamente. De esta manera, los procesos acceden al procesador por turnos.&lt;br /&gt;
&lt;br /&gt;
El tamaño del ''quantum'' es fundamental para determinar el comportamiento de este criterio de planificación. &lt;br /&gt;
Si el ''quantum'' empleado es pequeño, por ejemplo de 10 ms, suponiendo que la conmutación de procesos requiere 10ms, el 50% del tiempo se empleará el procesador para ejecutar el código que permite conmutar entre procesos. Sin embargo, si el ''quantum'' empleado es grande, por ejemplo de 5 s, la latencia será mayor, degradando la experiencia del usuario que notará como sus procesos progresan ''a saltos'', puesto que, en el peor de los casos, hasta pasados 5 s no se le asignará el procesador a otro proceso .&lt;br /&gt;
&lt;br /&gt;
Si un proceso bloquea antes de consumir su ''quantum'' '''se le retira el procesador''' y se añade al final de la cola. Esto beneficia a los procesos por lotes, cuyo comportamiento está limitado por el procesador, pues se pasan más tiempo asignados al procesador.&lt;br /&gt;
&lt;br /&gt;
Puesto que el reparto del procesador es estricto, los procesos recién lanzados deben acceder al procesador lo antes posible, por tanto, se les da oportunidad de ejecución por orden de llegada por delante de los procesos en la cola de procesos preparados. De esta manera, se evita que los procesos recién lanzados queden postergados indefinidamente.&lt;br /&gt;
&lt;br /&gt;
Este criterio se puede implementar con una cola, de manera que el orden de complejidad en la selección del proceso que pasa a estado activo es &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;. Nótese que a mayor número de procesos preparados, mayor tiempo tardará un proceso en volver a pasar a estado activo.&lt;br /&gt;
&lt;br /&gt;
    Ejemplo:&lt;br /&gt;
                                                                                         &lt;br /&gt;
                     ____|_Pa_|_Pb_|_Pc_|_Pd_|&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__|_3__|&lt;br /&gt;
           problema  _t__|_2__|_4__|_2__|_7__|    quantum = 1 unidad de tiempo&lt;br /&gt;
                                                       &lt;br /&gt;
                       &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = finalización del proceso&lt;br /&gt;
                       x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
                       $ = indica la ejecución del planificador para retirar un&lt;br /&gt;
                           proceso y establecer otro según el criterio&lt;br /&gt;
        |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pa  &amp;lt;xxx|---|---|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pb  |---&amp;lt;xxx|---|---|---|xxx|---|---|xxx|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pc  |---|---&amp;lt;xxx|---|---|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pd  |---|---|---&amp;lt;xxx|---|---|---|xxx|---|xxx|---|xxx|xxx|xxx|xxx&amp;gt;---|---|---|---|---|&lt;br /&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;
                   ____|_Pa_|_Pb_|_Pc_|_Pd_|&lt;br /&gt;
       Cálculos    _t__|_2__|_4__|_2__|_7__|&lt;br /&gt;
      de tiempos   _T__|_5__|_10_|_5__|_12_|        z = índice de penalización&lt;br /&gt;
                   _z__|_5/2|10/4|_5/2|12/7|&lt;br /&gt;
&lt;br /&gt;
=== Turno rotatorio con compensación ===&lt;br /&gt;
&lt;br /&gt;
Es una variante del anterior. Para no perjudicar a los procesos cuyo comportamiento está limitado por operaciones de entrada/salida, se reinsertan en la cola en proporción al tiempo consumido. Es decir, que si un cierto proceso ha consumido el 25% de su '''quantum''', se reinserta en el 25% de la cola, contando desde el principio (dispondrá de otro quantum completo).&lt;br /&gt;
Este tipo de criterio tiene un problema y es que se pueden posponer indefinidamente algunos procesos si hay varios procesos que bloqueen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Ejemplo:&lt;br /&gt;
                                                                                         &lt;br /&gt;
                     ____|_Pa_|_Pb_|_Pc_|_Pd_|    Pa y Pc bloquean cada 1 unidad de tiempo&lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__|_3__|    El bloqueo se resuelve tras 2 unidades de tiempo&lt;br /&gt;
           problema  _t__|_2__|_4__|_2__|_7__|    quantum = 2 unidad de tiempo&lt;br /&gt;
                                                       &lt;br /&gt;
                       &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = finalización del proceso&lt;br /&gt;
                       x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
                       $ = indica la ejecución del planificador para retirar un&lt;br /&gt;
                           proceso y establecer otro según el criterio&lt;br /&gt;
        |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pa  &amp;lt;xxx|---|---|---|---|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pb  |---&amp;lt;xxxxxxx|---|---|---|---|---|xxx|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pc  |---|---&amp;lt;---|xxx|---|---|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pd  |---|---|---&amp;lt;---|xxx|xxx|---|---|---|---|xxxxxxxxxxxxxxxxxxx&amp;gt;---|---|---|---|---|&lt;br /&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;
                   ____|_Pa_|_Pb_|_Pc_|_Pd_|&lt;br /&gt;
       Cálculos    _t__|_2__|_4__|_2__|_7__|&lt;br /&gt;
      de tiempos   _T__|_5__|_9__|_6__|_12_|        z = índice de penalización&lt;br /&gt;
                   _z__|_5/2|_9/4|_6/2|12/7|&lt;br /&gt;
&lt;br /&gt;
=== Turno rotatorio con quantum dependiente del número de procesos ===&lt;br /&gt;
&lt;br /&gt;
Otra variante se trata de emplear un '''quantum''' proporcional al número de procesos que haya en estado preparado. De esta forma se obtiene una progresión más uniforme, y por tanto una mejor experiencia para el usuario. Sin embargo, esto aumenta el número de conmutaciones entre procesos. Para evitar la degradación del rendimiento por un exceso de conmutaciones, se establece un mínimo de manera que el quantum no puede ser menor a éste.&lt;br /&gt;
&lt;br /&gt;
== Colas multinivel ==&lt;br /&gt;
&lt;br /&gt;
En este tipo de criterio se mantienen múltiples colas con los procesos en estado preparado. Los procesos se clasifican en las colas según sus características, cada cola recibe un tratamiento distinto.&lt;br /&gt;
&lt;br /&gt;
Un ejemplo sería el siguiente, compuesto de cuatro colas:&lt;br /&gt;
&lt;br /&gt;
# Esta primera cola es para procesos que poseen menor tiempo de ejecución, son los gestores de interrupción y los gestores de dispositivos (drivers). Hay que tomar los datos y almacenarlos en memoria lo antes posible para poder recoger más, aunque se posponga el procesamiento de dichos datos.&lt;br /&gt;
# En esta cola se almacenan los procesos del servidor, tales como : proceso administrador de memoria, administrador de ficheros, administrador de red, etc.&lt;br /&gt;
# Esta cola esta reservada a los procesos de usuario (procesos útiles para el usuario). Esta se divide a su vez en dos colas:&lt;br /&gt;
## Cola de procesos interactivos, limitados por E/S.&lt;br /&gt;
## Cola de procesos por lotes, limitados por el procesador.&lt;br /&gt;
&lt;br /&gt;
Las colas tienen prioridad según su número, por ejemplo mientras que haya procesos preparados en la primera cola, no se mira la segunda. Esto puede dar lugar a que si hay muchos procesos de gestión de dispositivos se degrade la eficiencia del sistema.&lt;br /&gt;
&lt;br /&gt;
La primera cola esta implementada con una FIFO(no apropiativo), mientras que las colas 2 y 3 se basan en un sistema de RR (turno rotatorio).&lt;br /&gt;
&lt;br /&gt;
=== Colas multinivel con realimentación (feedback)===&lt;br /&gt;
&lt;br /&gt;
Es una variante de las colas multinivel en las que los procesos pasan de una cola a otra según su comportamiento, de manera que:&lt;br /&gt;
&lt;br /&gt;
* Los procesos interactivos tienen más oportunidades de emplear el procesador.&lt;br /&gt;
* Los procesos por lotes disponen del procesador durante más tiempo.&lt;br /&gt;
&lt;br /&gt;
Los procesos se asignan al procesador por turnos rotatorios, empleando un ''quantum'' dependiente de la cola en la que se encuentren. Los procesos que consumen el ''quantum'' asignado completamente un número determinado de veces pasan a colas en las que se asignan ''quantum'' mayores. Nótese que los procesos que no consumen su ''quantum'' muestran un comportamiento interactivo. Para no discriminar a los procesos que se encuentran en las colas con ''quantum'' menores, se les dan más oportunidades de ejecución. &lt;br /&gt;
&lt;br /&gt;
Por ejemplo, en un sencillo planificador de colas multinivel con realimentación compuesto por dos colas:&lt;br /&gt;
&lt;br /&gt;
* En la primera cola se le asignan un ''quantum'' de 2 unidades de tiempo a los procesos.&lt;br /&gt;
* En la segunda cola se le asignan un ''quantum'' de 1 unidad de tiempo a los procesos.&lt;br /&gt;
&lt;br /&gt;
Si un proceso no consume el ''quantum'' asignado dos veces, pasa a la cola en la que en la se le asignan ''quantum'' de 1 unidad de tiempo.&lt;br /&gt;
&lt;br /&gt;
Para que los procesos interactivos no salgan perjudicados, en aras de hacer un reparto del procesador más equitativo, se le dan dos oportunidades de ejecución a los procesos situados en la cola con ''quantum'' de 1 unidad de tiempo. De esta manera, los procesos de la primera cola reciben una oportunidad de ejecución con un ''quantum'' de 2 unidades de tiempo y los de la segunda reciben dos oportunidades de ejecución con un ''quantum'' de 1 unidad de tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    Ejemplo:&lt;br /&gt;
&lt;br /&gt;
 Pa y Pc bloquean cada 1 unidad de tiempo&lt;br /&gt;
 El bloqueo se resuelve tras 2 unidades de tiempo&lt;br /&gt;
 Colas multinivel:  1. Procesos interactivos (quantum = 1 unidad de tiempo)&lt;br /&gt;
                    2. Procesos por lotes    (quantum = 2 unidad de tiempo)    &lt;br /&gt;
 Inicialmente todos los procesos van a la cola 2&lt;br /&gt;
 Los procesos que no consuman su quantum al menos una vez pasan a la cola 1&lt;br /&gt;
 Las colas implementan turno rotatorio estricto.&lt;br /&gt;
 Siempre que haya procesos en la cola 1, debe ser atendidos de manera preferente frente a la cola 2.&lt;br /&gt;
                                                                                         &lt;br /&gt;
                     ____|_Pa_|_Pb_|_Pc_|_Pd_|   &lt;br /&gt;
          Datos del  _H0_|_0__|_1__|_2__|_3__|   &lt;br /&gt;
           problema  _t__|_2__|_4__|_2__|_7__|                      &lt;br /&gt;
                                               &lt;br /&gt;
                                                       &lt;br /&gt;
                       &amp;lt; = lanzamiento del proceso&lt;br /&gt;
                       &amp;gt; = finalización del proceso&lt;br /&gt;
                       x = indica que el proceso está asignado al procesador en ese momento&lt;br /&gt;
                       $ = indica la ejecución del planificador para retirar un&lt;br /&gt;
                           proceso y establecer otro según el criterio&lt;br /&gt;
        |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pa  &amp;lt;xxx|---|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pb  |---&amp;lt;xxxxxxx|---|---|---|---|---|xxxxxxx&amp;gt;---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pc  |---|---&amp;lt;---|---|xxx|---|---|xxx&amp;gt;---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
    Pd  |---|---|---&amp;lt;---|---|xxxxxxx|---|---|---|xxxxxxxxxxxxxxxxxxx&amp;gt;---|---|---|---|---|&lt;br /&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;
                   ____|_Pa_|_Pb_|_Pc_|_Pd_|&lt;br /&gt;
       Cálculos    _t__|_2__|_4__|_2__|_7__|&lt;br /&gt;
      de tiempos   _T__|_4__|_9__|_6__|_12_|        z = índice de penalización&lt;br /&gt;
                   _z__|_4/2|_9/4|_6/2|12/7|&lt;/div&gt;</summary>
		<author><name>Davrubluc1</name></author>	</entry>

	</feed>