<?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=Lcarlosp</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=Lcarlosp"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php/Especial:Contribuciones/Lcarlosp"/>
		<updated>2026-05-05T21:49:10Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Mejoras_de_tiempos_de_desplazamiento&amp;diff=1204</id>
		<title>Mejoras de tiempos de desplazamiento</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Mejoras_de_tiempos_de_desplazamiento&amp;diff=1204"/>
				<updated>2011-06-07T17:48:39Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;1. FCFS (por orden de llegada &amp;quot;FIFO&amp;quot;): Las peticiones se atienden en el mismo orden en que se reciben.&lt;br /&gt;
&lt;br /&gt;
;2. SSTF (por menor tiempo de búsqueda): Ordeno todo y cojo el lote de ''n'' solicitudes de pista. Si no se llega a las ''n'' peticiones tras un tiempo se pasa a la busqueda. Aplaza las peticiones lejanas indefinidamente cuando ''n'' tiende a ifinito (''n'' -&amp;gt; ∞).&lt;br /&gt;
&lt;br /&gt;
;3. N-SCAN (criterio del ascensor): Dentro de cada lote de la lista de accesos, escogemos aquellos sectores que nos permita ascender y descender en la tabla, dando de esta manera prioridad a los sectores que se encuentren en la parte central de la pista.&lt;br /&gt;
&lt;br /&gt;
      |  &lt;br /&gt;
      |   /\   |   /\&lt;br /&gt;
      |  /  \  |  /  \&lt;br /&gt;
      | /    \ | /    \&lt;br /&gt;
   ___|/______\|/______\__&lt;br /&gt;
      |&lt;br /&gt;
Nota: La gráfica resultante no tiene por qué ser simétrica, dependerá de los sectores a los que accedamos.&lt;br /&gt;
&lt;br /&gt;
Nota2: El número de sectores integrantes de cada lote será el indicado por la N, ejemplo: 3-SCAN, 4-SCAN, etc.&lt;br /&gt;
&lt;br /&gt;
;4. C-SCAN (Circular-Scan): Da preferencia al ascenso o descenso, y se mantiene. Así se elimina el trato favorable a las partes centrales.&lt;br /&gt;
&lt;br /&gt;
      |                                |   &lt;br /&gt;
      |   /|   /|    /|                |\   |\   |\   |&lt;br /&gt;
      |  / |  / |   / |      ó         | \  | \  | \  |&lt;br /&gt;
      | /  | /  |  /  |                |  \ |  \ |  \ |&lt;br /&gt;
   ___|/___|/___|_/___|_            ___|___\|__ \|___\|_ &lt;br /&gt;
      |                                |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Algún alma caritativa sube los ejemplos de clase antes del parcial??&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Otro_ejemplo&amp;diff=1196</id>
		<title>Otro ejemplo</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Otro_ejemplo&amp;diff=1196"/>
				<updated>2011-06-07T16:25:39Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Ej: tenemos los siguientes procesos: m(P1)=6KB,m(P2)=1KB,m(P3)=3KB,m(P4)=31KB,m(P5)=30KB,m(P6)=2KB,m(P7)=4KB,m(P8)=1KB;&lt;br /&gt;
     y una memoria de 64 KB divididos en 4 huecos como sigue:&lt;br /&gt;
  _____&lt;br /&gt;
 |_____| H1 = 8KB     | m(P1)=6KB  | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P1)=0 | t(P1)=8&lt;br /&gt;
 |_____| H2 = 8KB     | m(P2)=1KB  | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P2)=0 | t(P2)=8&lt;br /&gt;
 |     |              | m(P3)=3KB  | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P3)=1 | t(P3)=2&lt;br /&gt;
 |_____| H3 = 16KB    | m(P4)=31KB | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P4)=0 | t(P4)=2&lt;br /&gt;
 |     |              | m(P5)=30KB | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P5)=0 | t(P5)=2&lt;br /&gt;
 |     |              | m(P6)=2KB  | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P6)=0 | t(P6)=2&lt;br /&gt;
 |     | H4 = 32KB    | m(P7)=4KB  | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P7)=2 | t(P7)=2&lt;br /&gt;
 |_____|              | m(P8)=1KB  | H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;(P8)=0 | t(P8)=2&lt;br /&gt;
&lt;br /&gt;
 solución:&lt;br /&gt;
  &amp;gt;: fin del proceso.&lt;br /&gt;
 &lt;br /&gt;
     | P1| P1| P1| P1| P1| P1| P1| P1|   |&lt;br /&gt;
   H1|---|---|---|---|---|---|---|---&amp;gt;   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P6| P6| P7| P7| P3| P3|   |   |   |&lt;br /&gt;
   H2|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P2| P2| P2| P2| P2| P2| P2| P2|   |&lt;br /&gt;
   H3|---|---|---|---|---|---|---|---&amp;gt;   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P4| P4| P5| P5| P8| P8|   |   |   |&lt;br /&gt;
   H4|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;   |   |   |&lt;br /&gt;
     |___|___|___|___|___|___|___|___|___|__&amp;gt;&lt;br /&gt;
     0   1   2   3   4   5   6   7   8   9  t&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
¿A qué criterio pertenece esta solución?&lt;br /&gt;
--[[Usuario:Jorcalmar|Jorcalmar]] 16:42 31 may 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Soluciones:&lt;br /&gt;
&lt;br /&gt;
'''a) Mejor ajuste estático''': Asociamos a cada proceso la partición menor en la que cabe. En nuestro caso:&lt;br /&gt;
P1: H1&lt;br /&gt;
P2: H2&lt;br /&gt;
P3: H1/H2 el que acabe primero.&lt;br /&gt;
P4: H4&lt;br /&gt;
P5: H4&lt;br /&gt;
P6: H1/H2 el que acabe primero.&lt;br /&gt;
P7: H1/H2 el que acabe primero.&lt;br /&gt;
P8: H1/H2 el que acabe primero.&lt;br /&gt;
&lt;br /&gt;
Como vemos, usando este criterio, la partición H3 se queda siempre libre. Éste es uno de los inconvenientes del mejor ajuste estático, no aprovechamos todas las particiones.&lt;br /&gt;
&lt;br /&gt;
     | P1| P1| P1| P1| P1| P1| P1| P1| P3| P3| P7| P7&lt;br /&gt;
   H1|---|---|---|---|---|---|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P2| P2| P2| P2| P2| P2| P2| P2| P6| P6| P8| P8&lt;br /&gt;
   H2|---|---|---|---|---|---|---|---&amp;gt;---|--&amp;gt;|---|---&amp;gt;&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
   H3|   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P4| P4| P5| P5|   |   |   |   |   |   |   |   |&lt;br /&gt;
   H4|---|---&amp;gt;---|---&amp;gt;   |   |   |   |   |   |   |   |&lt;br /&gt;
     |___|___|___|___|___|___|___|___|___|__ |___|___|&lt;br /&gt;
     0   1   2   3   4   5   6   7   8   9  10   11  12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''b) Primer ajuste:''' En este criterio, elegimos el primer proceso que quepa en la partición que tengamos en la cola de procesos en espera.&lt;br /&gt;
Para este criterio, es conveniente verificar en cada instante de tiempo qué procesos tengo en espera (y en qué orden) y qué particiones se me van quedando libres en cada instante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     | P1| P1| P1| P1| P1| P1| P1| P1|   |   |   |   |&lt;br /&gt;
   H1|---|---|---|---|---|---|---|---&amp;gt;   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P2| P2| P2| P2| P2| P2| P2| P2|   |   |   |   |&lt;br /&gt;
   H2|---|---|---|---|---|---|---|---&amp;gt;   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P6| P6| P8| P8| P3| P3|   |   |   |   |   |   |&lt;br /&gt;
   H3|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;   |   |   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P4| P4| P5| P5| P7| P7|   |   |   |   |   |   |&lt;br /&gt;
   H4|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;   |   |   |   |   |   |&lt;br /&gt;
     |___|___|___|___|___|___|___|___|___|__ |___|___|&lt;br /&gt;
     0   1   2   3   4   5   6   7   8   9  10   11  12&lt;br /&gt;
&lt;br /&gt;
'''DUDAAAAAAA!!''' Porque se pone P8 antes que P3?? No esta P3 antes en la cola???&lt;br /&gt;
&lt;br /&gt;
Mi solucion sería igual pero cambiando:&lt;br /&gt;
H3: P6-P3-P7&lt;br /&gt;
H4: P4-P5-P8&lt;br /&gt;
&lt;br /&gt;
Alguien la resuelve?? --[[Usuario:Lcarlosp|Lcarlosp]] 16:25 7 jun 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''c) Mejor ajuste dinámico:'''En este criterio, hemos de seleccionar el mayor proceso que quepa en nuestra partición. Para esto debemos recorrer toda la cola de procesos en espera. Como inconveniente nos encontramos con que los procesos menores quedarán aplazados en favor de los procesos de mayor tamaño. Una vez más debemos tener cuidado verificando el estado de la cola de espera en cada instante de tiempo para la elección de los procesos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     | P1| P1| P1| P1| P1| P1| P1| P1|   |   |   |   |&lt;br /&gt;
   H1|---|---|---|---|---|---|---|---&amp;gt;   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P6| P6| P7| P7| P3| P3|   |   |   |   |   |   |&lt;br /&gt;
   H2|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;   |   |   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P2| P2| P2| P2| P2| P2| P2| P2|   |   |   |   |&lt;br /&gt;
   H3|---|---|---|---|---|---|---|---&amp;gt;   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P4| P4| P5| P5| P8| P8|   |   |   |   |   |   |&lt;br /&gt;
   H4|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;   |   |   |   |   |   |&lt;br /&gt;
     |___|___|___|___|___|___|___|___|___|__ |___|___|&lt;br /&gt;
     0   1   2   3   4   5   6   7   8   9  10   11  12&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Como podemos observar, el proceso 8, queda aplazado hasta que el resto de procesos mayores han terminado. Para solucionar este problema tenemos el siguiente criterio, mayor que quepa con aplazamiento, en el cual hacemos uso de una variable 'umbral' que selecciona aquellos procesos que han sido aplazados un número dado de veces.--[[Usuario:Jorcalmar|Jorcalmar]] 17:43 31 may 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--El c en realidad,¿no seria?:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     | P1| P1| P1| P1| P1| P1| P1| P1|   |   |   |   |&lt;br /&gt;
   H1|---|---|---|---|---|---|---|---&amp;gt;   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P7| P7| P6| P6| P8| P8|   |   |   |   |   |   |&lt;br /&gt;
   H2|---|---&amp;gt;---|---&amp;gt;---|---&amp;gt;   |   |   |   |   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P3| P3| P2| P2| P2| P2| P2| P2| P2| P2|   |   |&lt;br /&gt;
   H3|---|---&amp;gt;---|---|---|---|---|---|---|---&amp;gt;   |   |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
     | P4| P4| P5| P5|   |   |   |   |   |   |   |   |&lt;br /&gt;
   H4|---|---&amp;gt;---|---&amp;gt;   |   |   |   |   |   |   |   |&lt;br /&gt;
     |___|___|___|___|___|___|___|___|___|__ |___|___|&lt;br /&gt;
     0   1   2   3   4   5   6   7   8   9  10   11  12&lt;br /&gt;
&lt;br /&gt;
Cambia las asignaciones de H2 ya que P7&amp;gt;P3&amp;gt;P6 y por ese mismo criterio, en H3 primero entraria P3 y P8 entraria en H2.--[[Usuario:Luidela1|Luidela1]] 14:26 7 jun 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Creo que sería como dices Jorcalmar, pero cambiando para que primero entren en H2 P6-P7-P8, recuerda que Ho(P7)=2.--[[Usuario:alvrodber|alvrodber]] 17:25 7 jun 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_reloj&amp;diff=1068</id>
		<title>Sol reloj</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_reloj&amp;diff=1068"/>
				<updated>2011-06-06T12:26:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;   _________________accesos a página____________________&lt;br /&gt;
     |_2_|_2_|_3_|_1_|_1_|_3_|_4_|_5_|_1_|_1_|_2_|_3_|_4_|&lt;br /&gt;
  ========================================================&lt;br /&gt;
   1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 5 | 5 | 5 | 5 | 5 | 5 |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
 m---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
 a 2 |   |   | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | &lt;br /&gt;
 r   |   |   |   |   |   |   |   |   |   |   |   |   |   |   &lt;br /&gt;
 c---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
 o 3 |   |   |   | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 |&lt;br /&gt;
 s   |   |   |   |   |   |   |   |   |   |   |   |   |   |  &lt;br /&gt;
  ---|---|---|---|---|---|---|---|---|---|---|---|---|---|&lt;br /&gt;
   4 |   |   |   |   |   |   | 4 | 4 | 4 | 4 | 4 | 3 | 3 |&lt;br /&gt;
     |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
  ------------------------------------------------------------&amp;gt; t&lt;br /&gt;
&lt;br /&gt;
                    7&lt;br /&gt;
  tasa fallos pág = ---- = 0,615&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creo que la tasa es de 8/13, que coincidiría con el criterio de segunda oportunidad. --[[Usuario:Lcarlosp|Lcarlosp]] 12:26 6 jun 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Criterios_de_reemplazo|Volver]]&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_6&amp;diff=1064</id>
		<title>Sol 6</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_6&amp;diff=1064"/>
				<updated>2011-06-06T11:54:58Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La lista de paginas a la que se acceden son las siguientes : &lt;br /&gt;
''' 2(R)--2(W)--3(R)--1(R)--1(W)--3(R)--4(W)--5(R)--1(R)--1(W)--2(R)--3(W)--4(R)'''&lt;br /&gt;
&lt;br /&gt;
El bit R se pone a 0 cada 4 accesos&lt;br /&gt;
                               ___1__ __ 2__ __3___ __4___&lt;br /&gt;
                  1º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |      |      |      | Nª de fallos: 1&lt;br /&gt;
                   Pagina 2   |R=1M=0|R=0M=0|R=0M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  2º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |      |      |      | Nª de fallos: 1&lt;br /&gt;
                   Pagina 2   |R=1M=1|R=0M=0|R=0M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  3º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |      |      | Nª de fallos: 2&lt;br /&gt;
                   Pagina 3   |R=1M=1|R=1M=0|R=0M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  4º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |      | Nª de fallos: 3&lt;br /&gt;
                   Pagina 1   |R=1M=1|R=1M=0|R=1M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&amp;lt;------------------- EL BIT R SE PONE A 0&lt;br /&gt;
                  5º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |      | Nª de fallos: 3&lt;br /&gt;
                   Pagina 1   |R=0M=1|R=0M=0|R=1M=1|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  6º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |      | Nª de fallos: 3&lt;br /&gt;
                   Pagina 3   |R=0M=1|R=1M=0|R=1M=1|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  7º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |  4   | Nª de fallos: 4&lt;br /&gt;
                   Pagina 4   |R=0M=1|R=1M=0|R=1M=1|R=1M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  8º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  3   |  1   |  4   | Nª de fallos: 5&lt;br /&gt;
                   Pagina 5   |R=1M=0|R=1M=0|R=1M=1|R=1M=1|&lt;br /&gt;
                              |______|______|______|______|&amp;lt;------------------- EL BIT R SE PONE A 0&lt;br /&gt;
                  9º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  3   |  1   |  4   | Nª de fallos: 5&lt;br /&gt;
                   Pagina 1   |R=0M=0|R=0M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                 10º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  3   |  1   |  4   | Nª de fallos: 6&lt;br /&gt;
                   Pagina 1   |R=0M=0|R=0M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                 11º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  2   |  1   |  4   | Nª de fallos: 7&lt;br /&gt;
                   Pagina 2   |R=0M=0|R=1M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                 12º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  3   |  2   |  1   |  4   | Nª de fallos: 8&lt;br /&gt;
                   Pagina 3   |R=1M=1|R=1M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&amp;lt;------------------- EL BIT R SE PONE A 0&lt;br /&gt;
                 13º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  3   |  2   |  1   |  4   | Nª de fallos: 8&lt;br /&gt;
                   Pagina 4   |R=0M=1|R=0M=0|R=0M=1|R=1M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Fcoramlop|Fcoramlop]] 22:17 4 jun 2011 (UTC)&lt;br /&gt;
                    8&lt;br /&gt;
  tasa fallos pág = ---- = 0,615&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
[[Criterios_de_reemplazo|Volver]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El acceso 10 no debería de ser fallo, no?&lt;br /&gt;
Y el acceso 11 podria elegir el marco 1 y quitar la pagina 5?? Es que de esa forma también bajaría la tasa de fallos a 6/13... Con los bits R y M no sabes que la página 5 llego despues de la 3...&lt;br /&gt;
Alguien responde?? --[[Usuario:Lcarlosp|Lcarlosp]] 11:54 6 jun 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_10&amp;diff=1055</id>
		<title>Sol 10</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_10&amp;diff=1055"/>
				<updated>2011-06-06T11:32:55Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: /* Sustitución por envejecimiento */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Sustitución por envejecimiento==&lt;br /&gt;
  Periodo de 4, registro R de 3 bits.&lt;br /&gt;
     _________________accesos a página_______________________&lt;br /&gt;
     |_2_|_2_|_3_|_1_||_1_|_3_|_4_|_5_||_1_|_1_|_2_|_3_||_4_|&lt;br /&gt;
  ===========================================================&lt;br /&gt;
   1 | 2 | = | = | = || 2 | = | = | 5 || 5 | = | = | = || 4 |&lt;br /&gt;
     |100| = | = | = ||010| = | = |100||010| = | = | = ||100|&lt;br /&gt;
 m---|---|---|---|---||---|---|---|---||---|---|---|---||---|&lt;br /&gt;
 a 2 |   |   | 3 | = || 3 | 3 | = | = || 3 | = | = | 3 || 3 |&lt;br /&gt;
 r   |   |   |100| = ||010|110| = | = ||011| = | = |111||011|&lt;br /&gt;
 c---|---|---|---|---||---|---|---|---||---|---|---|---||---|&lt;br /&gt;
 o 3 |   |   |   | 1 || 1 | = | = | = || 1 | = | = | = || 1 |&lt;br /&gt;
 s   |   |   |   |100||110| = | = | = ||111| = | = | = ||011|&lt;br /&gt;
  ---|---|---|---|---||---|---|---|---||---|---|---|---||---|&lt;br /&gt;
   4 |   |   |   |   ||   |   | 4 | = || 4 | = | 2 | = || 2 |&lt;br /&gt;
     |   |   |   |   ||   |   |100| = ||010| = |100| = ||010|&lt;br /&gt;
  ------------------------------------------------------------&amp;gt; t&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
                     7&lt;br /&gt;
  tasa fallos pág = ---- = 0,615&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Una pregunta: En el acceso número 11 podriamos elegir el marco 1 que contiene al 5 si queremos, no? Es que entonces la tasa de error será menor. 6/13. ¿ES POSIBLE?&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Lcarlosp|Lcarlosp]] 11:32 6 jun 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Criterios_de_reemplazo|Volver]]&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_6&amp;diff=1043</id>
		<title>Sol 6</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_6&amp;diff=1043"/>
				<updated>2011-06-06T07:53:55Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La lista de paginas a la que se acceden son las siguientes : &lt;br /&gt;
''' 2(R)--2(W)--3(R)--1(R)--1(W)--3(R)--4(W)--5(R)--1(R)--1(W)--2(R)--3(W)--4(R)'''&lt;br /&gt;
&lt;br /&gt;
El bit R se pone a 0 cada 4 accesos&lt;br /&gt;
                               ___1__ __ 2__ __3___ __4___&lt;br /&gt;
                  1º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |      |      |      | Nª de fallos: 1&lt;br /&gt;
                   Pagina 2   |R=1M=0|R=0M=0|R=0M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  2º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |      |      |      | Nª de fallos: 1&lt;br /&gt;
                   Pagina 2   |R=1M=1|R=0M=0|R=0M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  3º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |      |      | Nª de fallos: 2&lt;br /&gt;
                   Pagina 3   |R=1M=1|R=1M=0|R=0M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  4º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |      | Nª de fallos: 3&lt;br /&gt;
                   Pagina 1   |R=1M=1|R=1M=0|R=1M=0|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&amp;lt;------------------- EL BIT R SE PONE A 0&lt;br /&gt;
                  5º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |      | Nª de fallos: 3&lt;br /&gt;
                   Pagina 1   |R=0M=1|R=0M=0|R=1M=1|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  6º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |      | Nª de fallos: 3&lt;br /&gt;
                   Pagina 3   |R=0M=1|R=1M=0|R=1M=1|R=0M=0|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  7º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  2   |  3   |  1   |  4   | Nª de fallos: 4&lt;br /&gt;
                   Pagina 4   |R=0M=1|R=1M=0|R=1M=1|R=1M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                  8º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  3   |  1   |  4   | Nª de fallos: 5&lt;br /&gt;
                   Pagina 5   |R=1M=0|R=1M=0|R=1M=1|R=1M=1|&lt;br /&gt;
                              |______|______|______|______|&amp;lt;------------------- EL BIT R SE PONE A 0&lt;br /&gt;
                  9º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  3   |  1   |  4   | Nª de fallos: 5&lt;br /&gt;
                   Pagina 1   |R=0M=0|R=0M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                 10º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  3   |  1   |  4   | Nª de fallos: 6&lt;br /&gt;
                   Pagina 1   |R=0M=0|R=0M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                 11º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  5   |  2   |  1   |  4   | Nª de fallos: 7&lt;br /&gt;
                   Pagina 2   |R=0M=0|R=1M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
                 12º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  3   |  2   |  1   |  4   | Nª de fallos: 8&lt;br /&gt;
                   Pagina 3   |R=1M=1|R=1M=0|R=1M=1|R=0M=1|&lt;br /&gt;
                              |______|______|______|______|&amp;lt;------------------- EL BIT R SE PONE A 0&lt;br /&gt;
                 13º Acceso   |      |      |      |      |&lt;br /&gt;
                  Acceso a:   |  3   |  2   |  1   |  4   | Nª de fallos: 8&lt;br /&gt;
                   Pagina 4   |R=0M=1|R=0M=0|R=0M=1|R=1M=1|&lt;br /&gt;
                              |______|______|______|______|&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Fcoramlop|Fcoramlop]] 22:17 4 jun 2011 (UTC)&lt;br /&gt;
                    8&lt;br /&gt;
  tasa fallos pág = ---- = 0,615&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
[[Criterios_de_reemplazo|Volver]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El acceso 10 no debería de ser fallo, no?&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_5&amp;diff=971</id>
		<title>Sol 5</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_5&amp;diff=971"/>
				<updated>2011-06-04T10:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                     7&lt;br /&gt;
  tasa fallos pág = ---- = 0,538&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
'''2--2--3--1--1--3--4--5--1--1--2--3--4'''&lt;br /&gt;
&lt;br /&gt;
2--2--3--1--1--1--4--5--5--5--2--3--4&lt;br /&gt;
&lt;br /&gt;
X--X--2--3--3--3--1--4--4--4--5--2--3&lt;br /&gt;
&lt;br /&gt;
X--X--X--2--2--2--3--1--1--1--4--5--2&lt;br /&gt;
&lt;br /&gt;
F--A--F--F--A--A--F--F--A--A--F--F--F&lt;br /&gt;
&lt;br /&gt;
LA TASA DE FALLOS ME SALE 8/13=0'61&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_3&amp;diff=970</id>
		<title>Sol 3</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_3&amp;diff=970"/>
				<updated>2011-06-04T10:41:16Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Solución:&lt;br /&gt;
6/13 = 0'4615&lt;br /&gt;
--[[Usuario:Jorcalmar|Jorcalmar]] 16:52 2 jun 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
'''2--2--3--1--1--3--4--5--1--1--2--3--4'''&lt;br /&gt;
&lt;br /&gt;
2--2--3--1--1--3--4--5--1--1--2--3--4&lt;br /&gt;
&lt;br /&gt;
X--X--2--3--3--1--1--1--4--4--1--1--3&lt;br /&gt;
&lt;br /&gt;
X--X--X--2--2--2--2--2--2--2--4--4--1&lt;br /&gt;
&lt;br /&gt;
F--A--F--F--A--A--F--F--F--A--A--F--A&lt;br /&gt;
&lt;br /&gt;
MI TASA DE FALLOS ES 7/13=0'53&lt;br /&gt;
&lt;br /&gt;
Usuario: lcarlosp (jejeje, que no se como se pone el enlace)&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_1&amp;diff=969</id>
		<title>Sol 1</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_1&amp;diff=969"/>
				<updated>2011-06-04T10:35:50Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                     6&lt;br /&gt;
  tasa fallos pág = ---- = 0,46&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
'''2--2--3--1--1--3--4--5--1--1--2--3--4'''&lt;br /&gt;
&lt;br /&gt;
2--2--3--1--1--1--4--5--5--5--5--3--4&lt;br /&gt;
&lt;br /&gt;
X--X--2--3--3--3--1--1--1--1--1--5--3&lt;br /&gt;
&lt;br /&gt;
X--X--X--2--2--2--2--2--2--2--2--1--5&lt;br /&gt;
&lt;br /&gt;
F--A--F--F--A--A--F--F--A--A--A--F--F&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MI TASA DE FALLOS ME SALE 7/13= 0'53&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_2&amp;diff=968</id>
		<title>Sol 2</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_2&amp;diff=968"/>
				<updated>2011-06-04T10:32:55Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                     9&lt;br /&gt;
  tasa fallos pág = ---- = 0,69&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
'''2--2--3--1--1--3--4--5--1--1--2--3--4'''&lt;br /&gt;
&lt;br /&gt;
2--2--3--1--1--1--4--5--1--1--2--3--4&lt;br /&gt;
&lt;br /&gt;
X--X--2--3--3--3--3--4--5--5--1--2--3&lt;br /&gt;
&lt;br /&gt;
X--X--X--2--2--2--2--3--4--4--5--1--2&lt;br /&gt;
&lt;br /&gt;
F--A--F--F--A--A--F--F--F--A--F--F--F&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_1&amp;diff=967</id>
		<title>Sol 1</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Sol_1&amp;diff=967"/>
				<updated>2011-06-04T10:27:26Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;                     6&lt;br /&gt;
  tasa fallos pág = ---- = 0,46&lt;br /&gt;
                     13&lt;br /&gt;
&lt;br /&gt;
'''2--2--3--1--1--3--4--5--1--1--2--3--4'''&lt;br /&gt;
&lt;br /&gt;
2--2--3--1--1--1--4--5--5--5--5--3--4&lt;br /&gt;
&lt;br /&gt;
X--X--2--3--3--3--1--1--1--1--1--5--3&lt;br /&gt;
&lt;br /&gt;
X--X--X--2--2--2--2--2--2--2--2--1--5&lt;br /&gt;
&lt;br /&gt;
F--A--F--F--A--A--F--F--A--A--A--F--F&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Cerrojos&amp;diff=800</id>
		<title>Cerrojos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Cerrojos&amp;diff=800"/>
				<updated>2011-05-10T10:33:51Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: /* Ejemplo de implementación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ejemplo de implementación =&lt;br /&gt;
&lt;br /&gt;
El siguiente código sería un posible ejemplo del uso de control de concurrencia mediante cerrojos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int cerrojo = 1;      /* Inicializamos la variable cerrojo. Esto sería sólo válido para&lt;br /&gt;
                         hilos, ya que los procesos no comparten espacio de memoria */&lt;br /&gt;
&lt;br /&gt;
while(cerrojo == 0);  // Protocolo de               &lt;br /&gt;
cerrojo = 0;          // entrada&lt;br /&gt;
&lt;br /&gt;
...                   // Sección crítica&lt;br /&gt;
&lt;br /&gt;
cerrojo = 1;          // Protocolo de salida&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sin embargo, esto es problemático: Supongamos que tenemos únicamente un proceso con dos hilos (Hx y Hy) y el planificador retire al hilo Hx justo antes de ejecutarse la instrucción ''cerrojo = 0;''. El hilo Hy ejecuta su código, entra en la sección crítica (Esto puede ocurrir ya que cerrojo sigue a 1) y el planificador le retira el uso del procesador dentro de ésta. A continuación, se le vuelve a asignar el procesador a Hx.&lt;br /&gt;
&lt;br /&gt;
De esta forma, tenemos a dos hilos ejecutando código de la sección crítica. Para evitar este problema, debemos implementar los protocolos de entrada y salida de forma que se ejecuten en una sola instrucción, con lo cual o el planificador retira el uso del procesador antes de esta instrucción, o sino lo retira después de haberla ejecutado.&lt;br /&gt;
&lt;br /&gt;
= Cerrojos mediante instrucciones atómicas =&lt;br /&gt;
&lt;br /&gt;
Podemos implementar cerrojos mediante instrucciones especiales de comprobación y puesta a 0 y 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int cerrojo = 0;&lt;br /&gt;
&lt;br /&gt;
void lock() {&lt;br /&gt;
    while (__sync_lock_test_and_set(&amp;amp;cerrojo, 1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void unlock() {&lt;br /&gt;
    __sync_lock_release(&amp;amp;cerrojo);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El método lock comprueba mediante __sync_locktest_and_set(&amp;amp;cerrojo,1) el valor del cerrojo: si es 0, cambia el valor del cerrojo a 1 y devuelve 0, por tanto, se sale del while y entra en sección crítica; si es 1, devuelve 1 y continúa comprobando el valor, por tanto, no entra en situación crítica hasta que cambie el valor del cerrojo.&lt;br /&gt;
&lt;br /&gt;
El método unlock, mediante _sync_lock_release(&amp;amp;cerrojo), cambia el valor del cerrojo a 0.&lt;br /&gt;
&lt;br /&gt;
* http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html&lt;br /&gt;
* http://stackoverflow.com/questions/1383363/is-my-spin-lock-implementation-correct-and-optimal&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Cerrojos&amp;diff=799</id>
		<title>Cerrojos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Cerrojos&amp;diff=799"/>
				<updated>2011-05-10T10:31:52Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: /* Ejemplo de implementación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Ejemplo de implementación =&lt;br /&gt;
&lt;br /&gt;
El siguiente código sería un posible ejemplo del uso de control de concurrencia mediante cerrojos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int cerrojo = 1;      /* Inicializamos la variable cerrojo. Esto sería sólo válido para&lt;br /&gt;
                         hilos, ya que los procesos no comparten espacio de memoria */&lt;br /&gt;
&lt;br /&gt;
while(cerrojo == 0);  // Protocolo de               ¿Pablo, no sería while (cerrojo != 0)?&lt;br /&gt;
cerrojo = 0;          // entrada&lt;br /&gt;
&lt;br /&gt;
...                   // Sección crítica&lt;br /&gt;
&lt;br /&gt;
cerrojo = 1;          // Protocolo de salida&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sin embargo, esto es problemático: Supongamos que tenemos únicamente un proceso con dos hilos (Hx y Hy) y el planificador retire al hilo Hx justo antes de ejecutarse la instrucción ''cerrojo = 0;''. El hilo Hy ejecuta su código, entra en la sección crítica (Esto puede ocurrir ya que cerrojo sigue a 1) y el planificador le retira el uso del procesador dentro de ésta. A continuación, se le vuelve a asignar el procesador a Hx.&lt;br /&gt;
&lt;br /&gt;
De esta forma, tenemos a dos hilos ejecutando código de la sección crítica. Para evitar este problema, debemos implementar los protocolos de entrada y salida de forma que se ejecuten en una sola instrucción, con lo cual o el planificador retira el uso del procesador antes de esta instrucción, o sino lo retira después de haberla ejecutado.&lt;br /&gt;
&lt;br /&gt;
= Cerrojos mediante instrucciones atómicas =&lt;br /&gt;
&lt;br /&gt;
Podemos implementar cerrojos mediante instrucciones especiales de comprobación y puesta a 0 y 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int cerrojo = 0;&lt;br /&gt;
&lt;br /&gt;
void lock() {&lt;br /&gt;
    while (__sync_lock_test_and_set(&amp;amp;cerrojo, 1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void unlock() {&lt;br /&gt;
    __sync_lock_release(&amp;amp;cerrojo);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El método lock comprueba mediante __sync_locktest_and_set(&amp;amp;cerrojo,1) el valor del cerrojo: si es 0, cambia el valor del cerrojo a 1 y devuelve 0, por tanto, se sale del while y entra en sección crítica; si es 1, devuelve 1 y continúa comprobando el valor, por tanto, no entra en situación crítica hasta que cambie el valor del cerrojo.&lt;br /&gt;
&lt;br /&gt;
El método unlock, mediante _sync_lock_release(&amp;amp;cerrojo), cambia el valor del cerrojo a 0.&lt;br /&gt;
&lt;br /&gt;
* http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html&lt;br /&gt;
* http://stackoverflow.com/questions/1383363/is-my-spin-lock-implementation-correct-and-optimal&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_ejercicio_3&amp;diff=760</id>
		<title>Solución ejercicio 3</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_ejercicio_3&amp;diff=760"/>
				<updated>2011-05-09T16:01:20Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La solución no es correcta, ya que se bloquearía el proceso que ejecuta el while del productor y también el del consumidor, y no se avanzaría en la ejecución.&lt;br /&gt;
Sería correcto si el semáforo del productor se inicializara a 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También habría que asegurar que el proceso P1 comenzará antes que P2, no??&lt;br /&gt;
Por lo que seguro que funcionaria con el contador de P1 igual a 1, y contador de P2 igual a 0, no??&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_ejercicio_3&amp;diff=759</id>
		<title>Solución ejercicio 3</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_ejercicio_3&amp;diff=759"/>
				<updated>2011-05-09T15:59:54Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La solución no es correcta, ya que se bloquearía el proceso que ejecuta el while del productor y también el del consumidor, y no se avanzaría en la ejecución.&lt;br /&gt;
Sería correcto si el semáforo del productor se inicializara a 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
También habría que asegurar que el proceso P1 comenzará antes que P2, no??&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_de_los_ejercicios_de_concurrencia&amp;diff=743</id>
		<title>Solución de los ejercicios de concurrencia</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_de_los_ejercicios_de_concurrencia&amp;diff=743"/>
				<updated>2011-05-09T14:59:23Z</updated>
		
		<summary type="html">&lt;p&gt;Lcarlosp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &lt;br /&gt;
       | #1| #2| #3|   |   |   | #4| #1| #2|   |   |   | #3| #4|#1-El programa ya termina &lt;br /&gt;
 H1    |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |   |   |&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
       |   |   |   | #1| #2| #2|   |   |   | #2| #2| #2|   |   |   | #2| #3| #4| #1| #2| #3| #4| El programa termina.&lt;br /&gt;
 H2    |   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|---|   |&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&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  20&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En este ejercicio, el hilo 2 se queda esperando continuamente a que el hilo 1 libere el cerrojo para poder acceder a la función.&lt;br /&gt;
El programa finaliza en el hilo 1 cuando llega dos veces a la instrucción 4 (bucle for).&lt;br /&gt;
&lt;br /&gt;
Modificación:&lt;br /&gt;
&lt;br /&gt;
Solución:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
       | #1| #2| #3|   |   |   | #4| #1| #2|   |   |   | #3| #4| &amp;gt; |   |   |   |   |   |   |   |&lt;br /&gt;
 H1    |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |   |   |   |   |&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
       |   |   |   | #1| __| __|   |   |   | __| __| __|   |   |   | #2| #3| #4| #1| #2| #3| #4|&lt;br /&gt;
 H2    |   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|---|---|---|---|&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&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  20 21  22&lt;br /&gt;
&lt;br /&gt;
Posible solución:&lt;br /&gt;
&lt;br /&gt;
Los hilos comparten variables por lo que la variable i está siendo compartida por ambos hilos. Además, al ser los cerrojos un control de concurrencia de espera activa, tiene que comprobar continuamente la condición que me permite acceder a la sección crítica. En un bucle for, el incremento se hace una vez realizada la iteración, por lo que tendrá que comprobar en la instrucción 1 si el contador cumple la condición o no. Dicho esto y si no me equivoco la solución sería la siguiente:&lt;br /&gt;
&lt;br /&gt;
       | #1| #2| #3|   |   |   | #4| #1| #2|   |   |   | #3| #4| #1|   |   |   |   |   |&lt;br /&gt;
 H1    |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |   |   |&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
       |   |   |   | #1| #2| #2|   |   |   | #2| #2| #2|   |   |   | #2| #3| #4| #1|   |&lt;br /&gt;
 H2    |   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|---|   |&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&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  20&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Posible solución2: Lo que explicas esta muy bien, pero creo que la condición que expones en tu apartado es i=&amp;lt;2, cuando el ejercicio pide i&amp;lt;2. Por lo que habria que cortar un trozo, ¿no?&lt;br /&gt;
&lt;br /&gt;
       | #1| #2| #3|   |   |   | #4| #1| #1|   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
 H1    |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |   |   |&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
       |   |   |   | #1| #2| #2|   |   |   | #2| #3| #4|   |   |   |   |   |   |   |   |&lt;br /&gt;
 H2    |   |   |   |---|---|---|   |   |   |---|---|---|   |   |   |---|---|---|---|   |&lt;br /&gt;
       |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&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  20&lt;/div&gt;</summary>
		<author><name>Lcarlosp</name></author>	</entry>

	</feed>