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

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Evaluame_mis_contribuciones_a_la_wiki&amp;diff=2695</id>
		<title>Evaluame mis contribuciones a la wiki</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Evaluame_mis_contribuciones_a_la_wiki&amp;diff=2695"/>
				<updated>2013-01-18T15:45:24Z</updated>
		
		<summary type="html">&lt;p&gt;Olgmormar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A continuación, indica tu nombre y apellidos:&lt;br /&gt;
&lt;br /&gt;
* Juan Carlos Roldán Salvador&lt;br /&gt;
* Daniel Ayala Hernández&lt;br /&gt;
* Daniel de los Reyes Leal&lt;br /&gt;
* Olga Minerva Moreno Martín IS-G1&lt;/div&gt;</summary>
		<author><name>Olgmormar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_Gesti%C3%B3n_L/E&amp;diff=2675</id>
		<title>Ejercicios Gestión L/E</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_Gesti%C3%B3n_L/E&amp;diff=2675"/>
				<updated>2013-01-17T14:44:37Z</updated>
		
		<summary type="html">&lt;p&gt;Olgmormar: /* Ejercicio 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
''[Este ejercicio formó parte del cuarto Control de Evaluación Contínua del Curso 2010/11, del 8 de junio de 2011]''&lt;br /&gt;
&lt;br /&gt;
''[En el temario de 2012/13 no aparece NC-SCAN por lo que se ha simplificado a C-SCAN]''&lt;br /&gt;
&lt;br /&gt;
Dados la siguiente secuencia de solicitud de accesos a sectores en disco:&lt;br /&gt;
&lt;br /&gt;
3, 80, 15, 45, 1, 79, 4, 20, 21, 67, 19, 23&lt;br /&gt;
&lt;br /&gt;
Indique el orden de accesos, considerando que inicialmente el cabezal se encuentra en la pista 0, para los siguientes criterios. Se considera un orden preferente ascendente:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| 4-scan &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;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| sstf &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;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| c-scan &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;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Las soluciones son algo confusas puesto que el cabezal empieza en la pista 0 y por esto no se puede apreciar realmente el efecto de los criterios.&lt;br /&gt;
(''[[Solución de los ejercicios de gestión de L/E#Ejercicio 1|Ver solución]]'')&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros: 17,24,20,32,12,37,8,30. Suponiendo que las cabezas lectoras se encuentran actualmente sobre el cilindro 22, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por SCAN,SCAN circular(C-SCAN), o N-SCAN con N=4. Considere como preferente el sentido ascendente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| scan &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;
| c-scan &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;
| 4-scan &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;
SOLUCIÓN(falta revisión profesor)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| scan &lt;br /&gt;
| 24&lt;br /&gt;
| 30&lt;br /&gt;
|32&lt;br /&gt;
| 37&lt;br /&gt;
| 20&lt;br /&gt;
|17&lt;br /&gt;
| 12&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| c-scan &lt;br /&gt;
| 24&lt;br /&gt;
| 30&lt;br /&gt;
|32&lt;br /&gt;
| 37&lt;br /&gt;
| 8&lt;br /&gt;
|12&lt;br /&gt;
| 17&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| 4-scan &lt;br /&gt;
|24 &lt;br /&gt;
| 32&lt;br /&gt;
|20&lt;br /&gt;
| 17&lt;br /&gt;
| 30&lt;br /&gt;
|37&lt;br /&gt;
| 12&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros: 16, 7, 23, 42, 47, 5, 21 y 49. Suponiendo que las cabezas lectoras se encuentran&lt;br /&gt;
actualmente sobre el cilindro 17, y que para los algoritmos SCAN y sus derivados, cada ciclo comienza preferiblemente en sentido ascendente, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por menor tiempo de búsqueda (SSTF), algoritmo del ascensor (SCAN), algoritmo SCAN circular (C-SCAN), o NSCAN con N=4.&lt;br /&gt;
        &lt;br /&gt;
SSTF 	16 	21 	23	 7 	5 	42	47	49&lt;br /&gt;
&lt;br /&gt;
SCAN 	21 	23 	42 	47 	49 	16 	7 	5&lt;br /&gt;
&lt;br /&gt;
C-SCAN 	21 	23 	42 	47 	49 	5 	7 	16&lt;br /&gt;
&lt;br /&gt;
4-SCAN 	23 	42 	16 	7 	21 	47 	49 	5&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 4 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros:&lt;br /&gt;
50, 47, 1, 40, 2, 52, 72, 75. Suponiendo que las cabezas lectoras se encuentran actualmente sobre el cilindro 45, y que para los algoritmos SCAN y sus derivados, cada ciclo comienza preferiblemente en sentido ascendente, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por menor tiempo de búsqueda (SSTF), algoritmo del ascensor (SCAN), algoritmo SCAN circular (C-SCAN), o N-SCAN con N=4.&lt;br /&gt;
        &lt;br /&gt;
SSTF 	47 	50 	52 	40 	72 	75 	2 	1&lt;br /&gt;
&lt;br /&gt;
SCAN 	47 	50 	52 	72 	75 	40 	2 	1&lt;br /&gt;
&lt;br /&gt;
C-SCAN 	47 	50 	52 	72 	75 	1 	2 	40&lt;br /&gt;
&lt;br /&gt;
4-SCAN 	47 	50	 40 	1 	2 	52 	72 	75&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 5 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
&lt;br /&gt;
En un momento dado, la cabeza lectora de un disco se encuentra en el cilindro 91 del disco, y el gestor tiene pendientes de atender peticiones de acceso sobre los siguientes cilindros: 90, 80, 85, 94, 5, 88, 87, 92, 93, 95, 81, 82, 83 Sin necesidad de desarrollar paso por paso el algoritmo, ¿cuál de ellas se atendería la última, si el gestor planifica los desplazamientos la cabeza lectora mediante algoritmo SSTF? ''La última en atenderse sería la petición sobre el cilindro 5, pues es el que queda más lejos de la zona en la que inicialmente se encuentra el brazo.&lt;br /&gt;
''&lt;br /&gt;
== Ejercicio 6 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
&lt;br /&gt;
En un momento dado, la cabeza lectora de un disco se encuentra en el cilindro 45 del  disco, y el gestor tiene pendientes de atender peticiones de acceso sobre las siguientes pistas: 2, 35, 46, 23, 90, 102, 3, 34 ¿En qué orden se atenderán si el gestor planifica los desplazamientos la cabeza lectora mediante algoritmo SSTF? ''En cada momento atenderá la petición que haga referencia al cilindro más cercano al actual. Por tanto, si la cabeza se encuentra inicialmente en el cilindro 45, el orden en que se atenderán las peticiones será: 46, 35, 34, 23, 3, 2, 90, 102.&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 7 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
&lt;br /&gt;
¿Es lo mismo el cargador software de un sistema operativo que el cargador hardware? En caso negativo, ¿en qué se diferencian? &lt;br /&gt;
''No es lo mismo. El cargador hardware es llamado así porque lo proporciona el fabricante del hardware (viene empotrado en la memoria no volátil del sistema) y tiene como función primordial determinar la ubicación, cargar y transferir el control al cargador software, llamado así porque es proporcionado por el fabricante del sistema operativo, que es quien tiene la responsabilidad de cargar el sistema operativo pues es quien conoce las particularidades necesarias para la carga.''&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 8 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En un sistema se dispone de un disco duro con una velocidad de rotación de 10.000 rpm y 100 sectores por pista. Se comprueba empíricamente que cuando los programas procesan información secuencialmente, transcurren aproximadamente 80 microseg entre dos peticiones de sectores consecutivos. ¿Cuántos sectores intercalaría para evitar rotaciones innecesarias?  ''Si el disco gira a una velocidad 10.000 rpm, su velocidad de rotación en rps es 10.000/60 = 166,67 rps. El tiempo que tarda en dar una revolución es por tanto 1/166,67 = 5,9*10^-3, y por tanto el tiempo que tarda en pasar un sector es 5,9*10^-3/100= 5,9*10^-5, es decir, 59 microseg. Dado que hemos de intercalar n sectores de manera que n sea el menor tal que n*59 microseg &amp;gt; 80 microseg, hemos de tomar n=2. Dicho de otra manera, un intercalado de un sector sería insuficiente, pues tarda menos tiempo en pasar de lo que se supone que tarda en realizarse la siguiente petición. Por tanto, se intercalan dos sectores&lt;br /&gt;
''&lt;/div&gt;</summary>
		<author><name>Olgmormar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_de_Entrada/Salida&amp;diff=2665</id>
		<title>Ejercicios de Entrada/Salida</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_de_Entrada/Salida&amp;diff=2665"/>
				<updated>2013-01-14T21:53:34Z</updated>
		
		<summary type="html">&lt;p&gt;Olgmormar: /* Ejercicio 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
''[Este ejercicio formó parte del cuarto control de Evaluación Continua del curso 2010/11, del 8 de junio de 2011]''&lt;br /&gt;
&lt;br /&gt;
''[Este ejercicio formó parte del cuarto control de Evaluación Continua del curso 2011/12, del 23 de Enero de 2012]''&lt;br /&gt;
&lt;br /&gt;
Suponiendo que el procesador está asignado a un proceso en ejecución, por tanto, es estado activo, qué sucede cuando un dispositivo indica al procesador mediante una interrupción que dispone de datos a ser tratados? Marque la opción pertinente.&lt;br /&gt;
&lt;br /&gt;
A) Se continúa con la ejecución del proceso activo hasta que éste pase a estado bloqueado, entonces se realizar el tratamiento de la interrupción, que consistirá en invocar al gestor de dispositivo para que realice el tratamiento oportuno.&lt;br /&gt;
&lt;br /&gt;
B) Se retira el proceso activo, que pasará a estado preparado, y se ejecutará el código del gestor de dispositivos.&lt;br /&gt;
&lt;br /&gt;
C) Se invoca al planificador de procesos para que evalúe si tiene mayor prioridad la interrupción o el proceso.&lt;br /&gt;
&lt;br /&gt;
''([[Solución de los ejercicios de Entrada/Salida#Ejercicio 1|Ver solución]])''&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
''[Este ejercicio formó parte del cuarto control de Evaluación Continua del curso 2010/11, del 8 de junio de 2011]''&lt;br /&gt;
&lt;br /&gt;
''[Este ejercicio formó parte del cuarto control de Evaluación Continua del curso 2011/12, del 23 de Enero de 2012]''&lt;br /&gt;
&lt;br /&gt;
Represente gráficamente el diseño modular basado en capas de E/S de un sistema operativo. Incluya una breve descripción de cada capa junto con flechas que reflejen el flujo de comunicación entre cada una de ellas.&lt;br /&gt;
&lt;br /&gt;
''([[Solución de los ejercicios de Entrada/Salida#Ejercicio 2|Ver solución]])''&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
(FALTA REVISIÓN DE PROFESOR)&lt;br /&gt;
¿Es lo mismo el cargador software de un sistema operativo que el cargador hardware? En caso negativo, ¿en qué se diferencian? ''No es lo mismo. El cargador hardware es llamado así porque lo proporciona el fabricante del hardware (viene empotrado en la memoria no volátil del sistema) y tiene como función primordial determinar la ubicación, cargar y transferir el control al cargador software, llamado así porque es proporcionado por el fabricante del sistema operativo, que es quien tiene la responsabilidad de cargar el sistema operativo pues es quien conoce las particularidades necesarias para la carga.''&lt;/div&gt;</summary>
		<author><name>Olgmormar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_Gesti%C3%B3n_L/E&amp;diff=2664</id>
		<title>Ejercicios Gestión L/E</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_Gesti%C3%B3n_L/E&amp;diff=2664"/>
				<updated>2013-01-14T21:51:16Z</updated>
		
		<summary type="html">&lt;p&gt;Olgmormar: /* Ejercicio 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
''[Este ejercicio formó parte del cuarto Control de Evaluación Contínua del Curso 2010/11, del 8 de junio de 2011]''&lt;br /&gt;
&lt;br /&gt;
Dados la siguiente secuencia de solicitud de accesos a sectores en disco:&lt;br /&gt;
&lt;br /&gt;
3, 80, 15, 45, 1, 79, 4, 20, 21, 67, 19, 23&lt;br /&gt;
&lt;br /&gt;
Indique el orden de accesos, considerando que inicialmente el cabezal se encuentra en la pista 0, para los siguientes criterios. Se considera un orden preferente ascendente:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| 4-scan &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;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| sstf &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;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 6c-scan &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;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(''[[Solución de los ejercicios de gestión de L/E#Ejercicio 1|Ver solución]]'')&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros: 17,24,20,32,12,37,8,30. Suponiendo que las cabezas lectoras se encuentran actualmente sobre el cilindro 22, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por SCAN,SCAN circular(C-SCAN), o N-SCAN con N=4. Considere como preferente el sentido ascendente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| scan &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;
| c-scan &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;
| 4-scan &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;
SOLUCIÓN(falta revisión profesor)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| scan &lt;br /&gt;
| 24&lt;br /&gt;
| 30&lt;br /&gt;
|32&lt;br /&gt;
| 37&lt;br /&gt;
| 20&lt;br /&gt;
|17&lt;br /&gt;
| 12&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| c-scan &lt;br /&gt;
| 24&lt;br /&gt;
| 30&lt;br /&gt;
|32&lt;br /&gt;
| 37&lt;br /&gt;
| 8&lt;br /&gt;
|12&lt;br /&gt;
| 17&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| 4-scan &lt;br /&gt;
|24 &lt;br /&gt;
| 32&lt;br /&gt;
|20&lt;br /&gt;
| 17&lt;br /&gt;
| 30&lt;br /&gt;
|37&lt;br /&gt;
| 12&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros: 16, 7, 23, 42, 47, 5, 21 y 49. Suponiendo que las cabezas lectoras se encuentran&lt;br /&gt;
actualmente sobre el cilindro 17, y que para los algoritmos SCAN y sus derivados, cada ciclo comienza preferiblemente en sentido ascendente, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por menor tiempo de búsqueda (SSTF), algoritmo del ascensor (SCAN), algoritmo SCAN circular (C-SCAN), o NSCAN con N=4.&lt;br /&gt;
        &lt;br /&gt;
SSTF 	16 	21 	23	 7 	5 	42	47	49&lt;br /&gt;
&lt;br /&gt;
SCAN 	21 	23 	42 	47 	49 	16 	7 	5&lt;br /&gt;
&lt;br /&gt;
C-SCAN 	21 	23 	42 	47 	49 	5 	7 	16&lt;br /&gt;
&lt;br /&gt;
4-SCAN 	23 	42 	16 	7 	21 	47 	49 	5&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 4 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros:&lt;br /&gt;
50, 47, 1, 40, 2, 52, 72, 75. Suponiendo que las cabezas lectoras se encuentran actualmente sobre el cilindro 45, y que para los algoritmos SCAN y sus derivados, cada ciclo comienza preferiblemente en sentido ascendente, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por menor tiempo de búsqueda (SSTF), algoritmo del ascensor (SCAN), algoritmo SCAN circular (C-SCAN), o N-SCAN con N=4.&lt;br /&gt;
        &lt;br /&gt;
SSTF 	47 	50 	52 	40 	72 	75 	2 	1&lt;br /&gt;
&lt;br /&gt;
SCAN 	47 	50 	52 	72 	75 	40 	2 	1&lt;br /&gt;
&lt;br /&gt;
C-SCAN 	47 	50 	52 	72 	75 	1 	2 	40&lt;br /&gt;
&lt;br /&gt;
4-SCAN 	47 	50	 40 	1 	2 	52 	72 	75&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 5 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
&lt;br /&gt;
En un momento dado, la cabeza lectora de un disco se encuentra en el cilindro 91 del disco, y el gestor tiene pendientes de atender peticiones de acceso sobre los siguientes cilindros: 90, 80, 85, 94, 5, 88, 87, 92, 93, 95, 81, 82, 83 Sin necesidad de desarrollar paso por paso el algoritmo, ¿cuál de ellas se atendería la última, si el gestor planifica los desplazamientos la cabeza lectora mediante algoritmo SSTF? ''La última en atenderse sería la petición sobre el cilindro 5, pues es el que queda más lejos de la zona en la que inicialmente se encuentra el brazo.&lt;br /&gt;
''&lt;br /&gt;
== Ejercicio 6 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
&lt;br /&gt;
En un momento dado, la cabeza lectora de un disco se encuentra en el cilindro 45 del  disco, y el gestor tiene pendientes de atender peticiones de acceso sobre las siguientes pistas: 2, 35, 46, 23, 90, 102, 3, 34 ¿En qué orden se atenderán si el gestor planifica los desplazamientos la cabeza lectora mediante algoritmo SSTF? ''En cada momento atenderá la petición que haga referencia al cilindro más cercano al actual. Por tanto, si la cabeza se encuentra inicialmente en el cilindro 45, el orden en que se atenderán las peticiones será: 46, 35, 34, 23, 3, 2, 90, 102.&lt;br /&gt;
''&lt;/div&gt;</summary>
		<author><name>Olgmormar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_Gesti%C3%B3n_L/E&amp;diff=2663</id>
		<title>Ejercicios Gestión L/E</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_Gesti%C3%B3n_L/E&amp;diff=2663"/>
				<updated>2013-01-14T21:47:17Z</updated>
		
		<summary type="html">&lt;p&gt;Olgmormar: /* Ejercicio 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
''[Este ejercicio formó parte del cuarto Control de Evaluación Contínua del Curso 2010/11, del 8 de junio de 2011]''&lt;br /&gt;
&lt;br /&gt;
Dados la siguiente secuencia de solicitud de accesos a sectores en disco:&lt;br /&gt;
&lt;br /&gt;
3, 80, 15, 45, 1, 79, 4, 20, 21, 67, 19, 23&lt;br /&gt;
&lt;br /&gt;
Indique el orden de accesos, considerando que inicialmente el cabezal se encuentra en la pista 0, para los siguientes criterios. Se considera un orden preferente ascendente:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| 4-scan &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;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| sstf &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;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 6c-scan &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;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(''[[Solución de los ejercicios de gestión de L/E#Ejercicio 1|Ver solución]]'')&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros: 17,24,20,32,12,37,8,30. Suponiendo que las cabezas lectoras se encuentran actualmente sobre el cilindro 22, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por SCAN,SCAN circular(C-SCAN), o N-SCAN con N=4. Considere como preferente el sentido ascendente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| scan &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;
| c-scan &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;
| 4-scan &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;
SOLUCIÓN(falta revisión profesor)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; width:800px; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;&amp;quot;&lt;br /&gt;
| scan &lt;br /&gt;
| 24&lt;br /&gt;
| 30&lt;br /&gt;
|32&lt;br /&gt;
| 37&lt;br /&gt;
| 20&lt;br /&gt;
|17&lt;br /&gt;
| 12&lt;br /&gt;
| 8&lt;br /&gt;
|-&lt;br /&gt;
| c-scan &lt;br /&gt;
| 24&lt;br /&gt;
| 30&lt;br /&gt;
|32&lt;br /&gt;
| 37&lt;br /&gt;
| 8&lt;br /&gt;
|12&lt;br /&gt;
| 17&lt;br /&gt;
| 20&lt;br /&gt;
|-&lt;br /&gt;
| 4-scan &lt;br /&gt;
|24 &lt;br /&gt;
| 32&lt;br /&gt;
|20&lt;br /&gt;
| 17&lt;br /&gt;
| 30&lt;br /&gt;
|37&lt;br /&gt;
| 12&lt;br /&gt;
| 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros: 16, 7, 23, 42, 47, 5, 21 y 49. Suponiendo que las cabezas lectoras se encuentran&lt;br /&gt;
actualmente sobre el cilindro 17, y que para los algoritmos SCAN y sus derivados, cada ciclo comienza preferiblemente en sentido ascendente, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por menor tiempo de búsqueda (SSTF), algoritmo del ascensor (SCAN), algoritmo SCAN circular (C-SCAN), o NSCAN con N=4.&lt;br /&gt;
        &lt;br /&gt;
SSTF 	16 	21 	23	 7 	5 	42	47	49&lt;br /&gt;
&lt;br /&gt;
SCAN 	21 	23 	42 	47 	49 	16 	7 	5&lt;br /&gt;
&lt;br /&gt;
C-SCAN 	21 	23 	42 	47 	49 	5 	7 	16&lt;br /&gt;
&lt;br /&gt;
4-SCAN 	23 	42 	16 	7 	21 	47 	49 	5&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 4 ==&lt;br /&gt;
(NO ESTÁN REVISADOS POR PABLO NEIRA, PERO ESTÁN PUBLICADOS COMO SOLUCIONES DE EXÁMENES ANTIGUOS, ESTÁN HECHOS POR ALGÚN OTRO PROFESOR)&lt;br /&gt;
En un momento dado, un gestor de disco tiene pendiente la siguiente lista de accesos a cilindros:&lt;br /&gt;
50, 47, 1, 40, 2, 52, 72, 75. Suponiendo que las cabezas lectoras se encuentran actualmente sobre el cilindro 45, y que para los algoritmos SCAN y sus derivados, cada ciclo comienza preferiblemente en sentido ascendente, indique en qué orden se atenderán estas peticiones si las cabezas se planifican por menor tiempo de búsqueda (SSTF), algoritmo del ascensor (SCAN), algoritmo SCAN circular (C-SCAN), o N-SCAN con N=4.&lt;br /&gt;
        &lt;br /&gt;
SSTF 	47 	50 	52 	40 	72 	75 	2 	1&lt;br /&gt;
&lt;br /&gt;
SCAN 	47 	50 	52 	72 	75 	40 	2 	1&lt;br /&gt;
&lt;br /&gt;
C-SCAN 	47 	50 	52 	72 	75 	1 	2 	40&lt;br /&gt;
&lt;br /&gt;
4-SCAN 	47 	50	 40 	1 	2 	52 	72 	75&lt;/div&gt;</summary>
		<author><name>Olgmormar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Algoritmo_para_averiguar_interbloqueo&amp;diff=2612</id>
		<title>Algoritmo para averiguar interbloqueo</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Algoritmo_para_averiguar_interbloqueo&amp;diff=2612"/>
				<updated>2012-12-03T18:55:22Z</updated>
		
		<summary type="html">&lt;p&gt;Olgmormar: /* Algoritmo del Banquero */ Se ha añadido la introducción a este apartado. (Olga M.M.M.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Algoritmo del Banquero ==&lt;br /&gt;
&lt;br /&gt;
'''Introducción:'''&lt;br /&gt;
&lt;br /&gt;
Este algoritmo recibe el nombre de banquero porque su funcionamiento es parecido a la gestión que hacen los bancos de las cuentas de crédito.&lt;br /&gt;
Necesita conocer de antemano las necesidades máximas de recursos por parte de cada proceso, esto es poco realista. Además, supone que cuando un proceso ha conseguido todos los recursos que necesita, los libera. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La idea genérica del algoritmo es:&lt;br /&gt;
&lt;br /&gt;
     1. Buscar un proceso cuya suma recAsig + recDisp &amp;gt;= recMax&lt;br /&gt;
     2. Suponemos que se asignan dichos recursos y el proceso termina su ejecución. &lt;br /&gt;
        Sumamos sus recursos al vector recDisp y añadimos el proceso a la lista de finalizados.&lt;br /&gt;
     3. Repetir primer paso hasta terminar todos los procesos (siendo un estado estable)&lt;br /&gt;
        o bien hasta el punto en el que no sea posible ninguna asignación de recursos,&lt;br /&gt;
        existiendo pues interbloqueo.&lt;br /&gt;
&lt;br /&gt;
Ejemplo:&lt;br /&gt;
&lt;br /&gt;
     Proceso  |  Asignados  |  Maximos  |  Disponibles&lt;br /&gt;
              |  A B C D E  | A B C D E |   A B C D E   &lt;br /&gt;
    __________|_____________|___________|_______________  &lt;br /&gt;
    P0        |  1 0 2 1 1  | 1 2 2 1 2 |   0 0 2 1 1    //Recursos Disponibles Iniciales&lt;br /&gt;
    P1        |  2 0 1 1 0  | 2 2 2 1 0 |   1 1 3 2 1    //P3 finalizado&lt;br /&gt;
    P2        |  1 1 0 1 0  | 2 1 3 1 0 |   2 2 3 3 1    //P2 finalizado&lt;br /&gt;
    P3        |  1 1 1 1 0  | 1 1 2 2 1 |   3 2 5 4 2    //P0 finalizado&lt;br /&gt;
                                                         //P1 finalizado&lt;br /&gt;
Pasos:&lt;br /&gt;
  1. El primer proceso que cumple el paso 1 del algoritmo en esta tabla es P3: &lt;br /&gt;
     [1 1 1 1 0]+[0 0 2 1 1] &amp;gt;= [1 1 3 2 1]&lt;br /&gt;
     Lo consideramos terminado y añadimos sus recursos a los disponibles&lt;br /&gt;
  2. Volvemos a iterar desde P0. El siguiente proceso que puede adquirir los recursos necesarios&lt;br /&gt;
     es P2. Añadimos sus recursos a la lista de disponibles&lt;br /&gt;
  3. Ahora nos es posible terminar P0 y por último P1.&lt;br /&gt;
  4. Hemos logrado terminar todos los procesos sin problemas.&lt;br /&gt;
&lt;br /&gt;
== Algoritmo en C# ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;            &lt;br /&gt;
            int nRecursos;&lt;br /&gt;
            int nProcesos;&lt;br /&gt;
            List&amp;lt;List&amp;lt;int&amp;gt;&amp;gt; asignados = new List&amp;lt;List&amp;lt;int&amp;gt;&amp;gt;();&lt;br /&gt;
            List&amp;lt;List&amp;lt;int&amp;gt;&amp;gt; maximos = new List&amp;lt;List&amp;lt;int&amp;gt;&amp;gt;();&lt;br /&gt;
            List&amp;lt;int&amp;gt; disponibles = new List&amp;lt;int&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            Random r = new Random();&lt;br /&gt;
&lt;br /&gt;
            //Generamos las matrices aleatoriamente&lt;br /&gt;
            for (int j1 = 0; j1 &amp;lt; nRecursos;j1++)&lt;br /&gt;
            {&lt;br /&gt;
                disponibles.Add(r.Next(0, nRecursos));                &lt;br /&gt;
            }&lt;br /&gt;
            for (int i = 0; i &amp;lt; nProcesos; i++)&lt;br /&gt;
            {&lt;br /&gt;
                asignados.Add(new List&amp;lt;int&amp;gt;());&lt;br /&gt;
                maximos.Add(new List&amp;lt;int&amp;gt;());&lt;br /&gt;
                for (int j = 0; j &amp;lt; nRecursos; j++)&lt;br /&gt;
                {&lt;br /&gt;
                    asignados[i].Add(r.Next(0, nRecursos));&lt;br /&gt;
                    maximos[i].Add(r.Next(0, nRecursos));&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
          &lt;br /&gt;
            bool aux = true;&lt;br /&gt;
            for (int proc = 0; proc &amp;lt; nProcesos; proc++)&lt;br /&gt;
            {&lt;br /&gt;
                aux = true;&lt;br /&gt;
                for (int recur = 0; recur &amp;lt; nRecursos; recur++)&lt;br /&gt;
                {&lt;br /&gt;
                    // comprobamos que haya recursos suficientes&lt;br /&gt;
                    aux = (maximos[proc][recur] - asignados[proc][recur] - disponibles[recur]) &amp;lt;= 0;&lt;br /&gt;
                    if (!aux)&lt;br /&gt;
                    {&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                if (aux)&lt;br /&gt;
                {&lt;br /&gt;
                    añadirYeliminar(ref disponibles, ref asignados, proc);&lt;br /&gt;
                    maximos.RemoveAt(proc);&lt;br /&gt;
                    nProcesos--;&lt;br /&gt;
                    proc = -1;&lt;br /&gt;
                    if (nProcesos == 0)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(&amp;quot;Es estado seguro&amp;quot;);&lt;br /&gt;
                        Console.ReadLine();&lt;br /&gt;
                        return;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            Console.WriteLine(&amp;quot;Es interbloqueo&amp;quot;);&lt;br /&gt;
            Console.ReadLine();&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private static void añadirYeliminar(ref List&amp;lt;int&amp;gt; disponibles, ref List&amp;lt;List&amp;lt;int&amp;gt;&amp;gt; asignados, int proc)&lt;br /&gt;
        {&lt;br /&gt;
            for (int k = 0; k &amp;lt; asignados[proc].Count; k++)&lt;br /&gt;
            {&lt;br /&gt;
                disponibles[k] += asignados[proc][k];&lt;br /&gt;
            }&lt;br /&gt;
            asignados.RemoveAt(proc);&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Faltaria solamente leer por consola el numero de procesos y de recursos que queremos testear, o introduccirlos manualmente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Algoritmo en Python ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def comprueba_configuracion(asignados, maximos, disponibles):&lt;br /&gt;
    finalizados = []&lt;br /&gt;
    i = 0&lt;br /&gt;
    while(i &amp;lt; len(asignados)):&lt;br /&gt;
        if not i in finalizados and puede_progresar(asignados[i], disponibles, maximos[i]):&lt;br /&gt;
            print('Finaliza P%s\nDisponibles: %s' % (i,disponibles))&lt;br /&gt;
            libera_recursos(asignados[i], disponibles)&lt;br /&gt;
            finalizados.append(i)   # Marca el proceso Pi como finalizado&lt;br /&gt;
            i = 0&lt;br /&gt;
        else:&lt;br /&gt;
            i += 1&lt;br /&gt;
&lt;br /&gt;
    if(len(asignados) == len(finalizados)):     # Si todos los procesos finalizan&lt;br /&gt;
        print('\nEstado seguro para la configuracion de procesos-recursos dada')&lt;br /&gt;
    else:&lt;br /&gt;
        print('\nSe produce un interbloqueo')&lt;br /&gt;
&lt;br /&gt;
# Incrementamos la lista de disponibles con los que tenia asignados&lt;br /&gt;
def libera_recursos(asignados, disponibles):&lt;br /&gt;
    for i in range(len(disponibles)):&lt;br /&gt;
        disponibles[i] += asignados[i]&lt;br /&gt;
&lt;br /&gt;
# Devuelve True si el nº de elementos asignados mas los disponibles son mayores o iguales a los requeridos para continuar&lt;br /&gt;
def puede_progresar(asignados, disponibles, maximos):&lt;br /&gt;
    resultado = True&lt;br /&gt;
    for i in range(len(maximos)):&lt;br /&gt;
        if(asignados[i] + disponibles[i] &amp;lt; maximos[i]):&lt;br /&gt;
            resultado = False&lt;br /&gt;
            break&lt;br /&gt;
    return resultado&lt;br /&gt;
&lt;br /&gt;
asignados = [&lt;br /&gt;
    [1,0,2,1,1],&lt;br /&gt;
    [2,0,1,1,0],&lt;br /&gt;
    [1,1,0,1,0],&lt;br /&gt;
    [1,1,1,1,0]&lt;br /&gt;
    ]&lt;br /&gt;
maximos = [&lt;br /&gt;
    [1,2,2,1,2],&lt;br /&gt;
    [2,2,2,1,0],&lt;br /&gt;
    [2,1,3,1,0],&lt;br /&gt;
    [1,1,2,2,1]&lt;br /&gt;
    ]&lt;br /&gt;
disponibles = [0,0,2,1,1]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para este ejemplo (visto en clase) la salida sería:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; comprueba_configuracion(asignados, maximos, disponibles)&lt;br /&gt;
Finaliza P3&lt;br /&gt;
Disponibles: [0, 0, 2, 1, 1]&lt;br /&gt;
Finaliza P2&lt;br /&gt;
Disponibles: [1, 1, 3, 2, 1]&lt;br /&gt;
Finaliza P0&lt;br /&gt;
Disponibles: [2, 2, 3, 3, 1]&lt;br /&gt;
Finaliza P1&lt;br /&gt;
Disponibles: [3, 2, 5, 4, 2]&lt;br /&gt;
&lt;br /&gt;
Estado seguro para la configuracion de procesos-recursos dada&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Algoritmo en Java ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Comprobaciones {&lt;br /&gt;
&lt;br /&gt;
	public static List&amp;lt;Proceso&amp;gt; devuelveLista(List&amp;lt;Proceso&amp;gt; asignados, List&amp;lt;Proceso&amp;gt; necesarios, Disponibles recursos){&lt;br /&gt;
		List&amp;lt;Proceso&amp;gt; terminados = new ArrayList&amp;lt;Proceso&amp;gt;();&lt;br /&gt;
		for(int i = 0; i &amp;lt; necesarios.size(); i++){&lt;br /&gt;
			if(!(terminados.contains(asignados.get(i))) &amp;amp;&amp;amp; ejecuta(asignados.get(i), necesarios.get(i), recursos)){&lt;br /&gt;
					terminados.add(asignados.get(i));&lt;br /&gt;
				System.out.println(&amp;quot;Proceso &amp;quot; + asignados.get(i).getNombre() + &amp;quot; terminado&amp;quot;);&lt;br /&gt;
				for(int j = 0; j &amp;lt; recursos.getDisponibles().size(); j++){&lt;br /&gt;
					recursos.setDisponible(recursos.getDisponibles().get(j) + asignados.get(i).getRecursosNecesarios().get(j), j);&lt;br /&gt;
				}&lt;br /&gt;
				System.out.println(&amp;quot;Recursos disponibles: &amp;quot; + recursos.getDisponibles());&lt;br /&gt;
				i = -1;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
		if(terminados.size() == asignados.size()){&lt;br /&gt;
			System.out.println(&amp;quot;Todos los procesos han sido ejecutados sin problemas.&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			System.out.println(&amp;quot;Hay un interbloqueo, no se pueden seguir ejecutando procesos...&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		return terminados;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	public static Boolean ejecuta(Proceso asignados, Proceso necesarios, Disponibles disponibles){&lt;br /&gt;
		// Devuelve True si tiene recursos suficientes...&lt;br /&gt;
		Boolean ej = true;&lt;br /&gt;
		for(int i = 0; i &amp;lt; necesarios.getRecursosNecesarios().size(); i++){&lt;br /&gt;
			if((asignados.getRecursosNecesarios().get(i) + disponibles.getDisponibles().get(i)) &amp;lt; necesarios.getRecursosNecesarios().get(i)){&lt;br /&gt;
				ej = false;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return ej;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void main(String[] args) {&lt;br /&gt;
		&lt;br /&gt;
		List&amp;lt;Proceso&amp;gt; asignados = creaAsignados();&lt;br /&gt;
		List&amp;lt;Proceso&amp;gt; necesarios = creaNecesarios();&lt;br /&gt;
		Disponibles disponibles = creaDisponibles();&lt;br /&gt;
		Comprobaciones.devuelveLista(asignados, necesarios, disponibles);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Proceso P4 terminado&lt;br /&gt;
Recursos disponibles: [1, 1, 3, 2, 1]&lt;br /&gt;
Proceso P3 terminado&lt;br /&gt;
Recursos disponibles: [2, 2, 3, 3, 1]&lt;br /&gt;
Proceso P1 terminado&lt;br /&gt;
Recursos disponibles: [3, 2, 5, 4, 2]&lt;br /&gt;
Proceso P2 terminado&lt;br /&gt;
Recursos disponibles: [5, 2, 6, 5, 2]&lt;br /&gt;
Todos los procesos han sido ejecutados sin problemas.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nota: Las clases lo único que contienen son listas de enteros, y los procesos contienen además los nombres de los mismos.&lt;/div&gt;</summary>
		<author><name>Olgmormar</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Condiciones_para_el_interbloqueo_y_estrategias_de_resoluci%C3%B3n&amp;diff=2611</id>
		<title>Condiciones para el interbloqueo y estrategias de resolución</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Condiciones_para_el_interbloqueo_y_estrategias_de_resoluci%C3%B3n&amp;diff=2611"/>
				<updated>2012-12-03T18:47:19Z</updated>
		
		<summary type="html">&lt;p&gt;Olgmormar: /* Detección y Recuperación */  Se han insertado modificaciones en el documento. Lo más significativo son los tipos de matrices de relación recursos-procesos (Olga M. M.M)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Condiciones para que se produzca interbloqueo ==&lt;br /&gt;
&lt;br /&gt;
Según [http://en.wikipedia.org/wiki/Edward_G._Coffman,_Jr. Coffman], para que se pueda producir un interbloqueo se tienen que dar las siguientes cuatro condiciones:&lt;br /&gt;
&lt;br /&gt;
* '''Exclusión mutua''': cada recurso está asignado a un único proceso de manera exclusiva.&lt;br /&gt;
* '''Retención y espera''': los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos y esperar a que se le asignen sin liberar antes alguno de los recursos que ya tenia asignados.&lt;br /&gt;
&lt;br /&gt;
* '''No apropiación''': los recursos otorgados con anterioridad no pueden ser forzados a dejar un  proceso. El proceso que los posee debe liberarlos en forma explícita. Ni siquiera el sistema operativo puede expropiárselo.&lt;br /&gt;
&lt;br /&gt;
* '''Espera circular''': debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena. Esta condición es una consecuencia potencial de las tres primeras, es decir, dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un círculo vicioso de espera irresoluble. &lt;br /&gt;
&lt;br /&gt;
Las tres primeras condiciones son necesarias, pero no suficientes para que exista interbloqueo. Sólo las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para el interbloqueo.&lt;br /&gt;
&lt;br /&gt;
== Estrategias ==&lt;br /&gt;
&lt;br /&gt;
Existen diversas estrategias frente a los interbloqueos, que se pueden agrupar en:&lt;br /&gt;
&lt;br /&gt;
* Omisión&lt;br /&gt;
* Detección y recuperación&lt;br /&gt;
* Prevención&lt;br /&gt;
* Predicción&lt;br /&gt;
&lt;br /&gt;
Que se detallan a continuación.&lt;br /&gt;
&lt;br /&gt;
=== Omisión ===&lt;br /&gt;
&lt;br /&gt;
Considera que la probabilidad de un interbloqueo es muy baja, de modo que se confía en que no se van a producir. Por sorprendente que parezca, los sistemas operativos modernos convencionales suelen aplicar esta estrategia. Por justificar la decisión de los fabricantes de sistemas operativos cabe incidir en que las estrategias de resolución y prevención de interbloqueos tienen un coste alto desde el punto de vista del consumo de recursos de procesamiento y memoria.&lt;br /&gt;
&lt;br /&gt;
=== Detección y Recuperación ===&lt;br /&gt;
&lt;br /&gt;
Esta estrategia permite la detección de una situación de interbloqueo y su consiguiente resolución. De entre las medidas de detección consideramos las siguientes:&lt;br /&gt;
&lt;br /&gt;
* ''Grafo de relación recursos-procesos'': Consiste en la representación gráfica de los recursos asignados a los procesos y los recursos que dichos procesos requieren para finalizar su ejecución.Esta técnica se basa en  recorrer el grafo yendo de un nodo a otro, por lo que si se consigue volver al nodo de partida estaremos en un recorrido circular. Para que este tipo de error sea detectado usamos algoritmos de detección,  se lanzan cuando se solicita un recurso ocupado, es decir, hay una nueva arista dentro de nuestro grafo y debemos comprobar que no da lugar a un recorrido cíclico.&lt;br /&gt;
&lt;br /&gt;
* ''Matrices de relación recursos-procesos'': Consiste en la representación matricial de los recursos asignados a los procesos y los recursos que dichos procesos requieren para finalizar su ejecución.&lt;br /&gt;
2 Tipos:&lt;br /&gt;
&lt;br /&gt;
-''Matrices binarias de relación:''&lt;br /&gt;
Una matriz binaria de relación es aquella que representa una relación R entre dos conjuntos, en la cual el primero de estos dos tiene múltiples asignaciones a elementos del segundo. &lt;br /&gt;
&lt;br /&gt;
Si aplicamos este concepto a procesos y recursos obtenemos distintos tipos de matrices:&lt;br /&gt;
&lt;br /&gt;
Matrices de espera (W): los procesos esperan uno o varios recursos.&lt;br /&gt;
&lt;br /&gt;
Matrices de asignaciones(A): los procesos  tienen asignados uno o varios recursos.&lt;br /&gt;
&lt;br /&gt;
Matrices de procesos a la espera de procesos (T= W•A): un proceso espera a otro, bien porque tiene asignados recursos que necesita, o bien, porque son procesos dependientes.&lt;br /&gt;
&lt;br /&gt;
Tras obtener W, A, y T:&lt;br /&gt;
Hemos de calcular el cierre transitivo de la matriz T: por lo que aplicamos el Algoritmo de Warshall, es un algoritmo de análisis sobre grafos para encontrar el camino mínimo  entre todos los pares de vértices en una única ejecución. Luego, debemos analizar el resultado que obtenemos, mirando la diagonal de la matriz para saber si los procesos forman parte de un ciclo de interbloqueo.&lt;br /&gt;
&lt;br /&gt;
Esta técnica es un método potente y eficiente, pero hay recursos que tienen varias instancias equivalentes, ¿qué hacemos con ellos?(Sigamos leyendo)&lt;br /&gt;
&lt;br /&gt;
-''Detección matricial'':&lt;br /&gt;
Método matricial que trata aquellos casos en los que hay múltiples instancias equivalentes de un mismo tipo de recurso. Aísla grupos de procesos que no pueden proseguir la ejecución porque no pueden ver satisfechas sus peticiones pendientes.&lt;br /&gt;
Usan un método iterativo que:&lt;br /&gt;
&lt;br /&gt;
1-Marca procesos cuyas peticiones puedan satisfacerse con el actual vector de recursos disponibles.&lt;br /&gt;
&lt;br /&gt;
2-Suma al vector de disponibles los recursos asignados a los procesos marcados.&lt;br /&gt;
&lt;br /&gt;
3-Si todos los procesos están marcados: no hay interbloqueo.&lt;br /&gt;
&lt;br /&gt;
4-Si en una iteración no se marcan procesos: los procesos que quedan están interbloqueados.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tras la detección de un interbloqueo, se pueden aplicar algunas de las siguientes estrategias para resolverlo:&lt;br /&gt;
&lt;br /&gt;
* ''Eliminación'': El sistema operativo selecciona a uno de los procesos que forma parte del interbloqueo y elimina el ciclo acabando con la ejecución de dicho proceso, si no es suficiente se eliminarán procesos hasta que se rompa el ciclo. La selección del proceso se realiza en base a un cierto criterio, por ejemplo, aquel proceso que lleve menos tiempo en ejecución o aquel que sea más voraz consumiendo recursos.Sin embargo, de una manera u otra el trabajo realizado por el proceso se pierde. Aunque parezca una medida drástica, es la empleada en sistemas operativos convencionales. Aplicar el criterio de selección y eliminar procesos cuando el número de procesos es relativamente bajo puede solucionar el interbloqueo, pero si se da un bloqueo de por ejemplo, centenares de procesos, es una situación prácticamente inmanejable.&lt;br /&gt;
&lt;br /&gt;
* ''Apropiación temporal'': Se retira la asignación de un recurso a un proceso (durante el tiempo necesario) para deshacer el interbloqueo(hemos de asegurarnos de que el proceso no se desbloquea al romperse el interbloqueo). Por ejemplo, supongamos que el recurso es una impresora: podríamos retirarle la asignación a un proceso P1 cuando este terminase de imprimir una página, asignarle la impresora a otro proceso P2 y volver a asignársela a P1 cuando P2 haya terminado su ejecución.Solo nos surge un único inconveniente, ¿y si los recursos no permiten la apropiación temporal? &lt;br /&gt;
&lt;br /&gt;
* ''Puntos de conformidad'',''sincronismo'' o ''checkpoints'': Consiste en tomar una imagen del estado del proceso, ya sea periódicamente o a instancia del propio proceso, de manera que si se produce un interbloqueo se vuelve a un estado de la ejecución anterior. Son muy poco usados ya que tienen un elevado coste en memoria y existe la posibilidad de que un proceso permanezca indefinidamente sin progresar.&lt;br /&gt;
&lt;br /&gt;
=== Prevención ===&lt;br /&gt;
&lt;br /&gt;
La prevención apunta a una serie de estrategias que eviten el interbloqueo. Concretamente, son cuatro las estrategias de prevención posibles en base a los  principios que [http://en.wikipedia.org/wiki/Edward_G._Coffman,_Jr. Coffman] estableció como interbloqueo. Dichas estrategias son:&lt;br /&gt;
&lt;br /&gt;
* ''Supresión de exclusión mutua'': un proceso no puede tener acceso exclusivo a un recurso.&lt;br /&gt;
* ''Supresión de retención y espera'' (1ª estrategia de Havender): El proceso debe tener asignado todos los recursos necesarios al inicio y no liberarlos hasta que éste finalice. Esto presenta un inconveniente: si un recurso sólo se utiliza al final, estará ocupado durante toda la ejecución, no permitiendo ser usado por otros procesos. El aprovechamiento de recursos puede mejorarse mediante una programación más elaborada, dividiendo la ejecución del proceso en distintas fases y gestionando los recursos para cada una de ellas.&lt;br /&gt;
* ''Supresión de no apropiación'' (2ª estrategia de Havender): Si un proceso está en ejecución y no puede obtener un recurso, dicho proceso libera todos los recursos que está usando y espera a que todos los que necesita estén disponibles. Problemas: se puede perder trabajo, además de presentar una carga extra la realización de peticiones &lt;br /&gt;
* ''Supresión de espera circular'' (3ª estrategia de Havender): Si todos los recursos comunes a varios procesos se solicitan siempre en el mismo orden no se producen interbloqueos.&lt;br /&gt;
&lt;br /&gt;
=== Predicción ===&lt;br /&gt;
&lt;br /&gt;
El sistema operativo observa la evolución que siguen los procesos, y predice una posible situación de interbloqueo. Si detecta una alta probabilidad de que suceda, adopta una trayectoria de ejecución nueva para los procesos involucrados de manera que se garantice que no va a suceder un interbloqueo.&lt;/div&gt;</summary>
		<author><name>Olgmormar</name></author>	</entry>

	</feed>