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

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_Principal&amp;diff=4035</id>
		<title>Página Principal</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_Principal&amp;diff=4035"/>
				<updated>2018-05-28T11:04:52Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Contribuciones a wiki */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenido al wiki de la asignatura de Sistemas Operativos del departamento de Lenguajes y Sistemas Informáticos de la Universidad de Sevilla. ¡Contribuye!&lt;br /&gt;
&lt;br /&gt;
= Novedades y noticias =&lt;br /&gt;
                                  C1       C2       C3&lt;br /&gt;
 Alonso Berens, Avery            10        8,75     4,25                              &lt;br /&gt;
 Alonso Gómez, Pablo              5        0        0                              &lt;br /&gt;
 Arteaga Carmona, Juan           10        8,25     9,5                                 &lt;br /&gt;
 Barragán Candil, Marina          5        5,5      5,75&lt;br /&gt;
 Barrero Olmedo, José María       -        3,75     1,25                                      &lt;br /&gt;
 Bernáldez Torres, José Eulalio   7,5      3,25     5,75                                  &lt;br /&gt;
 Bravo Llanos, Alfonso           10       10        8,75                               &lt;br /&gt;
 Camino Bueno, Roberto           10        7,5      5                                &lt;br /&gt;
 Campano Crespo, Miriam           0,75     0                                       &lt;br /&gt;
 Centeno Caballero, Juan Manuel  10        7,5      5                                 &lt;br /&gt;
 Csoka, Szilard                   7,5      5,5      3,25                                 &lt;br /&gt;
 Díaz-Ligüeri Ascaso, Álvaro      5        1,25     4,25&lt;br /&gt;
 Domínguez González, Rafael      10        5        8,75                              &lt;br /&gt;
 Fernández González, Adrián      10        7,5      8,75                                &lt;br /&gt;
 Fernández Sánchez, Pablo         2,5      -                                     &lt;br /&gt;
 García Martínez, Alberto         7,5      0        0,75                              &lt;br /&gt;
 García Pavón, José Carlos        7,5      8,25     8,75                                 &lt;br /&gt;
 González Amador, Rubén           5,75     7,5      2,5                                  &lt;br /&gt;
 González Marín, Félix            2        5        0,5                              &lt;br /&gt;
 Gutiérrez Mamani, Lizeth        10        9,25     6,25                                  &lt;br /&gt;
 Jurado Garrido, Francisco        7,5      4,25     5                                 &lt;br /&gt;
 León Galán, Alejando             7,5      3,25     7,5                                 &lt;br /&gt;
 Linares Moreno, Maximiliano      8,25     4,5      0,5                                 &lt;br /&gt;
 López Carrillo, Adrián          10        8,75     2                                 &lt;br /&gt;
 Manzano Vázquez, Jesús           8,25     5        5                             &lt;br /&gt;
 Marín Medina, Ana                7,5      6,25     4,25                               &lt;br /&gt;
 Mauri Pajares, Manuel           10        8        1,25                              &lt;br /&gt;
 Montenegro Ortíz, Juan Alberto   4,5      3,75     1,25                                  &lt;br /&gt;
 Morales Palacios, Lorenzo        3,25     2,5      2,5                                &lt;br /&gt;
 Morillo Capitán, Joaquín         5        7,5      1,75                                 &lt;br /&gt;
 Neto Sánchez, Mamerto            5        1,25     0                                 &lt;br /&gt;
 Olmedo Delgado, Fernando         6,25     3,75     3,75                                 &lt;br /&gt;
 Pardillo Castillo, Francisco     7,5     10        5,75                                &lt;br /&gt;
 Pineda Vázquez, Jesús           10        3,75     2,5                                 &lt;br /&gt;
 Ramos Fernández, Pablo Jesús     7,5      7,5      5                                 &lt;br /&gt;
 Ramos Miró, Enrique             10       10        2,5                               &lt;br /&gt;
 Recuero Morón, Marina            7,5      5        8,75                               &lt;br /&gt;
 Rodríguez Gómez, Alejandro      10        5        7.5                              &lt;br /&gt;
 Salgado Bravo, Laura             5        6,25     1,25                                 &lt;br /&gt;
 Salinas Macías, Miguel Ángel    10        2,5      4,25                                &lt;br /&gt;
 Sánchez Oliva, Pablo            10        7,5      3,75                                &lt;br /&gt;
 Suárez Fernández, Alejandro      7,5      7,5      5                                &lt;br /&gt;
 Toranzo García, Miguel Ángel     7,5      6,25     3,75                                 &lt;br /&gt;
 Torreño Calvete, Ángela          3,75     7,5      4,5                                 &lt;br /&gt;
 Torres Terrones, Alejandro      10        5        6,75                              &lt;br /&gt;
 Vázquez Rivadeneyra, Jesús       5       10        6,25                               &lt;br /&gt;
 Velázquez García, Sergio         6,75     0        2,5                              &lt;br /&gt;
 Villa Montero, Sonia             5        4,25     7,5&lt;br /&gt;
&lt;br /&gt;
Revisión:  Viernes 1 de junio de 12,00 a 12,40, I0.66&lt;br /&gt;
&lt;br /&gt;
-Cuarto control: Viernes 1 de junio de 2018&lt;br /&gt;
&lt;br /&gt;
= Contribuciones a wiki =&lt;br /&gt;
&lt;br /&gt;
Para que se te evalúen las contribuciones, deja a continuación tu usuario UVUS:&lt;br /&gt;
&lt;br /&gt;
* angtorcal&lt;br /&gt;
* migsalmac&lt;br /&gt;
* marbarcan&lt;br /&gt;
&lt;br /&gt;
= Unidades didácticas =&lt;br /&gt;
&lt;br /&gt;
A continuación encontrarás las unidades didácticas que forman parte de la asignatura.&lt;br /&gt;
&lt;br /&gt;
== Introducción a los Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 1.1. [[Qué es un  Sistema operativo|Qué es un Sistema Operativo]]&lt;br /&gt;
* 1.2. [[Introducción histórica|Breve introducción histórica a los Sistemas Operativos]]&lt;br /&gt;
* 1.3. [[Tipos de Sistemas Operativos|Tipos de Sistemas Operativos]]&lt;br /&gt;
&lt;br /&gt;
== Fundamentos de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 2.1. [[Organización básica de un ordenador]]&lt;br /&gt;
* 2.2. [[Modos de operación de la CPU|Modos de operación de la CPU]]&lt;br /&gt;
* 2.3. [[Interrupciones y excepciones|Interrupciones y excepciones]]&lt;br /&gt;
* 2.4. [[Conceptos básicos|Conceptos básicos]]&lt;br /&gt;
* 2.5. [[Arranque del sistema|Arranque del sistema]]&lt;br /&gt;
* 2.6. [[Componentes básicos de un sistema operativo|Componentes básicos de un sistema operativo]]&lt;br /&gt;
* 2.7. [[Llamadas al sistema|Llamadas al sistema]]&lt;br /&gt;
* 2.8. [[Ejercicios fundamentos Sistemas Operativos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Modelos de diseño de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 3.1. [[Modelos de Diseño de Sistemas Operativos|Modelos de diseño de sistemas operativos]]&lt;br /&gt;
* 3.2. [[Virtualización]]&lt;br /&gt;
* 3.3. [[Ejercicios 3|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Procesos ==&lt;br /&gt;
* 4.1. [[Multiprogramación|La multiprogramación]]&lt;br /&gt;
* 4.2. [[Estados de los procesos|Estados de los procesos]]&lt;br /&gt;
* 4.3. [[Planificador de procesos|El planificador de procesos]]&lt;br /&gt;
* 4.4. [[Comportamiento de los procesos|El comportamiento de los procesos según el planificador]]&lt;br /&gt;
* 4.5. [[Bloque de control de procesos|El bloque de control del proceso]]&lt;br /&gt;
* 4.6. [[Conmutación de procesos|La conmutación de procesos]]&lt;br /&gt;
* 4.7. [[Hilos|Hilos]]&lt;br /&gt;
* 4.8. [[Ejercicios Procesos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Planificación de Procesos ==&lt;br /&gt;
* 5.1. [[Planificación de procesos|La planificación de procesos]]&lt;br /&gt;
* 5.2. [[Índices de evaluación|Índices de evaluación de la planificación de procesos]]&lt;br /&gt;
* 5.3. [[Criterios de planificación|Criterios de planificación]]&lt;br /&gt;
* 5.4. [[Planificadores de sistemas operativos existentes|Planificadores de sistemas operativos existentes]]&lt;br /&gt;
* 5.5. [[Planificación de procesos de tiempo real|La planificación de procesos de tiempo real]]&lt;br /&gt;
* 5.6. [[Planificación en sistemas multiprocesadores|La planificación de procesos en sistemas multiprocesadores]]&lt;br /&gt;
* 5.7. [[Ejercicios otros aspectos de la planificación|Ejercicios]]&lt;br /&gt;
* 5.8. [[Ejercicios planificación de procesos|Ejercicios]]&lt;br /&gt;
* 5.9. [[Ejercicios_simples_de_planificación_de_procesos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Concurrencia de procesos ==&lt;br /&gt;
&lt;br /&gt;
* 6.1. [[Concurrencia de procesos|Concurrencia de procesos]]&lt;br /&gt;
* 6.2. [[Mecanismos de sincronización|Control optimista y pesimista de la concurrencia]]&lt;br /&gt;
* 6.3. [[Cerrojos|Cerrojos]]&lt;br /&gt;
* 6.4. [[Ejercicio de concurrencia de procesos|Ejercicios]]&lt;br /&gt;
* 6.5. [[Semáforos|Semáforos]]&lt;br /&gt;
* 6.6. [[Monitores|Monitores]]&lt;br /&gt;
* 6.7. [[Mensajería|Mensajería]]&lt;br /&gt;
* 6.8. [[Ejercicios sincronización y comunicación|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Interbloqueo ==&lt;br /&gt;
&lt;br /&gt;
* 7.1. [[Definición de interbloqueo|Definición]]&lt;br /&gt;
* 7.2. [[Condiciones para el interbloqueo y estrategias de resolución|Modelado y Estrategias]]&lt;br /&gt;
* 7.3. [[Algoritmo para averiguar interbloqueo|Algoritmo del banquero]]&lt;br /&gt;
* 7.4. [[Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Administración de memoria ==&lt;br /&gt;
&lt;br /&gt;
* 8.1. [[Introducción|Introducción]]&lt;br /&gt;
* 8.2. [[SO multiprogramables con particiones variables|SO multiprogramables con particiones variables]]&lt;br /&gt;
* 8.3. [[Segmentación|Segmentación]]&lt;br /&gt;
* 8.4. [[Paginación|Paginación]]&lt;br /&gt;
* 8.5. [[Sistema combinado|Sistema combinado]]&lt;br /&gt;
* 8.6. [[Ejercicios administración de memoria contigua|Ejercicios (Administración de memoria contigua)]]&lt;br /&gt;
* 8.7. [[Ejemplo de segmentación, paginación y combinado|Ejercicios (Segmentación, paginación y sistemas combinados)]]&lt;br /&gt;
&lt;br /&gt;
== Memoria virtual ==&lt;br /&gt;
&lt;br /&gt;
* 9.1. [[Memoria Virtual|Introducción]]&lt;br /&gt;
* 9.2. [[Criterios de reemplazo|Criterios de reemplazo]]&lt;br /&gt;
* 9.3. [[Memoria virtual con multiprogramacion|Otros aspectos relacionados con la memoria virtual]]&lt;br /&gt;
* 9.4. [[Ejercicios memoria virtual|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Entrada/Salida ==&lt;br /&gt;
&lt;br /&gt;
* 10.1. [[EstructuraES|Estructura dispositivo E/S]]&lt;br /&gt;
* 10.2. [[GestionES|Modos de gestionar dispositivos E/S]]&lt;br /&gt;
* 10.3. [[Diseño modular E/S|Diseño modular E/S]]&lt;br /&gt;
* 10.4. [[Ejercicios de Entrada/Salida|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Gestión E/S ==&lt;br /&gt;
&lt;br /&gt;
* 11.1. [[Discos Magnéticos|Discos Magnéticos]]&lt;br /&gt;
* 11.2. [[Mejoras de tiempos de desplazamiento|Mejoras de tiempos de desplazamiento]]&lt;br /&gt;
* 11.3. [[Mejoras en la demora de rotación|Mejoras en la demora de rotación]]&lt;br /&gt;
* 11.4. [[Tipos de errores en discos magnéticos|Tipos de errores en discos magnéticos]]&lt;br /&gt;
* 11.5. [[Unidades SSD|Unidades SSD]]&lt;br /&gt;
* 11.6. [[Reloj hardware: Intel 8253]]&lt;br /&gt;
* 11.7. [[Ejercicios Gestión L/E|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Administración de archivos ==&lt;br /&gt;
&lt;br /&gt;
* 12.1. [[Introducción en la administración de archivos|Introducción en la administración de archivos]]&lt;br /&gt;
* 12.2. [[FAT|FAT]]&lt;br /&gt;
* 12.3. [[EXT2 |EXT2]]&lt;br /&gt;
* 12.4. [[Ejercicios Administración Ficheros|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Anexo ==&lt;br /&gt;
&lt;br /&gt;
Esta sección contiene información interesante pero que no pertenece al temario de la asignatura.&lt;br /&gt;
&lt;br /&gt;
* Todo lo que siempre has querido saber sobre el protocolo SSH está [[SSH|aquí]].&lt;br /&gt;
* Instrucciones para emular BATHOS usando QEMU [[bathos_QEMU|aquí]].&lt;br /&gt;
* Instrucciones para emular XV6 usando QEMU [[xv6|aquí]].&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_Principal&amp;diff=4034</id>
		<title>Página Principal</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_Principal&amp;diff=4034"/>
				<updated>2018-05-28T11:04:23Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Novedades y noticias */ Fecha del 4º control&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenido al wiki de la asignatura de Sistemas Operativos del departamento de Lenguajes y Sistemas Informáticos de la Universidad de Sevilla. ¡Contribuye!&lt;br /&gt;
&lt;br /&gt;
= Novedades y noticias =&lt;br /&gt;
                                  C1       C2       C3&lt;br /&gt;
 Alonso Berens, Avery            10        8,75     4,25                              &lt;br /&gt;
 Alonso Gómez, Pablo              5        0        0                              &lt;br /&gt;
 Arteaga Carmona, Juan           10        8,25     9,5                                 &lt;br /&gt;
 Barragán Candil, Marina          5        5,5      5,75&lt;br /&gt;
 Barrero Olmedo, José María       -        3,75     1,25                                      &lt;br /&gt;
 Bernáldez Torres, José Eulalio   7,5      3,25     5,75                                  &lt;br /&gt;
 Bravo Llanos, Alfonso           10       10        8,75                               &lt;br /&gt;
 Camino Bueno, Roberto           10        7,5      5                                &lt;br /&gt;
 Campano Crespo, Miriam           0,75     0                                       &lt;br /&gt;
 Centeno Caballero, Juan Manuel  10        7,5      5                                 &lt;br /&gt;
 Csoka, Szilard                   7,5      5,5      3,25                                 &lt;br /&gt;
 Díaz-Ligüeri Ascaso, Álvaro      5        1,25     4,25&lt;br /&gt;
 Domínguez González, Rafael      10        5        8,75                              &lt;br /&gt;
 Fernández González, Adrián      10        7,5      8,75                                &lt;br /&gt;
 Fernández Sánchez, Pablo         2,5      -                                     &lt;br /&gt;
 García Martínez, Alberto         7,5      0        0,75                              &lt;br /&gt;
 García Pavón, José Carlos        7,5      8,25     8,75                                 &lt;br /&gt;
 González Amador, Rubén           5,75     7,5      2,5                                  &lt;br /&gt;
 González Marín, Félix            2        5        0,5                              &lt;br /&gt;
 Gutiérrez Mamani, Lizeth        10        9,25     6,25                                  &lt;br /&gt;
 Jurado Garrido, Francisco        7,5      4,25     5                                 &lt;br /&gt;
 León Galán, Alejando             7,5      3,25     7,5                                 &lt;br /&gt;
 Linares Moreno, Maximiliano      8,25     4,5      0,5                                 &lt;br /&gt;
 López Carrillo, Adrián          10        8,75     2                                 &lt;br /&gt;
 Manzano Vázquez, Jesús           8,25     5        5                             &lt;br /&gt;
 Marín Medina, Ana                7,5      6,25     4,25                               &lt;br /&gt;
 Mauri Pajares, Manuel           10        8        1,25                              &lt;br /&gt;
 Montenegro Ortíz, Juan Alberto   4,5      3,75     1,25                                  &lt;br /&gt;
 Morales Palacios, Lorenzo        3,25     2,5      2,5                                &lt;br /&gt;
 Morillo Capitán, Joaquín         5        7,5      1,75                                 &lt;br /&gt;
 Neto Sánchez, Mamerto            5        1,25     0                                 &lt;br /&gt;
 Olmedo Delgado, Fernando         6,25     3,75     3,75                                 &lt;br /&gt;
 Pardillo Castillo, Francisco     7,5     10        5,75                                &lt;br /&gt;
 Pineda Vázquez, Jesús           10        3,75     2,5                                 &lt;br /&gt;
 Ramos Fernández, Pablo Jesús     7,5      7,5      5                                 &lt;br /&gt;
 Ramos Miró, Enrique             10       10        2,5                               &lt;br /&gt;
 Recuero Morón, Marina            7,5      5        8,75                               &lt;br /&gt;
 Rodríguez Gómez, Alejandro      10        5        7.5                              &lt;br /&gt;
 Salgado Bravo, Laura             5        6,25     1,25                                 &lt;br /&gt;
 Salinas Macías, Miguel Ángel    10        2,5      4,25                                &lt;br /&gt;
 Sánchez Oliva, Pablo            10        7,5      3,75                                &lt;br /&gt;
 Suárez Fernández, Alejandro      7,5      7,5      5                                &lt;br /&gt;
 Toranzo García, Miguel Ángel     7,5      6,25     3,75                                 &lt;br /&gt;
 Torreño Calvete, Ángela          3,75     7,5      4,5                                 &lt;br /&gt;
 Torres Terrones, Alejandro      10        5        6,75                              &lt;br /&gt;
 Vázquez Rivadeneyra, Jesús       5       10        6,25                               &lt;br /&gt;
 Velázquez García, Sergio         6,75     0        2,5                              &lt;br /&gt;
 Villa Montero, Sonia             5        4,25     7,5&lt;br /&gt;
&lt;br /&gt;
Revisión:  Viernes 1 de junio de 12,00 a 12,40, I0.66&lt;br /&gt;
&lt;br /&gt;
-Cuarto control: Viernes 1 de junio de 2018&lt;br /&gt;
&lt;br /&gt;
= Contribuciones a wiki =&lt;br /&gt;
&lt;br /&gt;
Para que se te evalúen las contribuciones, deja a continuación tu usuario UVUS:&lt;br /&gt;
&lt;br /&gt;
* angtorcal&lt;br /&gt;
* migsalmac&lt;br /&gt;
&lt;br /&gt;
= Unidades didácticas =&lt;br /&gt;
&lt;br /&gt;
A continuación encontrarás las unidades didácticas que forman parte de la asignatura.&lt;br /&gt;
&lt;br /&gt;
== Introducción a los Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 1.1. [[Qué es un  Sistema operativo|Qué es un Sistema Operativo]]&lt;br /&gt;
* 1.2. [[Introducción histórica|Breve introducción histórica a los Sistemas Operativos]]&lt;br /&gt;
* 1.3. [[Tipos de Sistemas Operativos|Tipos de Sistemas Operativos]]&lt;br /&gt;
&lt;br /&gt;
== Fundamentos de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 2.1. [[Organización básica de un ordenador]]&lt;br /&gt;
* 2.2. [[Modos de operación de la CPU|Modos de operación de la CPU]]&lt;br /&gt;
* 2.3. [[Interrupciones y excepciones|Interrupciones y excepciones]]&lt;br /&gt;
* 2.4. [[Conceptos básicos|Conceptos básicos]]&lt;br /&gt;
* 2.5. [[Arranque del sistema|Arranque del sistema]]&lt;br /&gt;
* 2.6. [[Componentes básicos de un sistema operativo|Componentes básicos de un sistema operativo]]&lt;br /&gt;
* 2.7. [[Llamadas al sistema|Llamadas al sistema]]&lt;br /&gt;
* 2.8. [[Ejercicios fundamentos Sistemas Operativos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Modelos de diseño de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 3.1. [[Modelos de Diseño de Sistemas Operativos|Modelos de diseño de sistemas operativos]]&lt;br /&gt;
* 3.2. [[Virtualización]]&lt;br /&gt;
* 3.3. [[Ejercicios 3|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Procesos ==&lt;br /&gt;
* 4.1. [[Multiprogramación|La multiprogramación]]&lt;br /&gt;
* 4.2. [[Estados de los procesos|Estados de los procesos]]&lt;br /&gt;
* 4.3. [[Planificador de procesos|El planificador de procesos]]&lt;br /&gt;
* 4.4. [[Comportamiento de los procesos|El comportamiento de los procesos según el planificador]]&lt;br /&gt;
* 4.5. [[Bloque de control de procesos|El bloque de control del proceso]]&lt;br /&gt;
* 4.6. [[Conmutación de procesos|La conmutación de procesos]]&lt;br /&gt;
* 4.7. [[Hilos|Hilos]]&lt;br /&gt;
* 4.8. [[Ejercicios Procesos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Planificación de Procesos ==&lt;br /&gt;
* 5.1. [[Planificación de procesos|La planificación de procesos]]&lt;br /&gt;
* 5.2. [[Índices de evaluación|Índices de evaluación de la planificación de procesos]]&lt;br /&gt;
* 5.3. [[Criterios de planificación|Criterios de planificación]]&lt;br /&gt;
* 5.4. [[Planificadores de sistemas operativos existentes|Planificadores de sistemas operativos existentes]]&lt;br /&gt;
* 5.5. [[Planificación de procesos de tiempo real|La planificación de procesos de tiempo real]]&lt;br /&gt;
* 5.6. [[Planificación en sistemas multiprocesadores|La planificación de procesos en sistemas multiprocesadores]]&lt;br /&gt;
* 5.7. [[Ejercicios otros aspectos de la planificación|Ejercicios]]&lt;br /&gt;
* 5.8. [[Ejercicios planificación de procesos|Ejercicios]]&lt;br /&gt;
* 5.9. [[Ejercicios_simples_de_planificación_de_procesos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Concurrencia de procesos ==&lt;br /&gt;
&lt;br /&gt;
* 6.1. [[Concurrencia de procesos|Concurrencia de procesos]]&lt;br /&gt;
* 6.2. [[Mecanismos de sincronización|Control optimista y pesimista de la concurrencia]]&lt;br /&gt;
* 6.3. [[Cerrojos|Cerrojos]]&lt;br /&gt;
* 6.4. [[Ejercicio de concurrencia de procesos|Ejercicios]]&lt;br /&gt;
* 6.5. [[Semáforos|Semáforos]]&lt;br /&gt;
* 6.6. [[Monitores|Monitores]]&lt;br /&gt;
* 6.7. [[Mensajería|Mensajería]]&lt;br /&gt;
* 6.8. [[Ejercicios sincronización y comunicación|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Interbloqueo ==&lt;br /&gt;
&lt;br /&gt;
* 7.1. [[Definición de interbloqueo|Definición]]&lt;br /&gt;
* 7.2. [[Condiciones para el interbloqueo y estrategias de resolución|Modelado y Estrategias]]&lt;br /&gt;
* 7.3. [[Algoritmo para averiguar interbloqueo|Algoritmo del banquero]]&lt;br /&gt;
* 7.4. [[Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Administración de memoria ==&lt;br /&gt;
&lt;br /&gt;
* 8.1. [[Introducción|Introducción]]&lt;br /&gt;
* 8.2. [[SO multiprogramables con particiones variables|SO multiprogramables con particiones variables]]&lt;br /&gt;
* 8.3. [[Segmentación|Segmentación]]&lt;br /&gt;
* 8.4. [[Paginación|Paginación]]&lt;br /&gt;
* 8.5. [[Sistema combinado|Sistema combinado]]&lt;br /&gt;
* 8.6. [[Ejercicios administración de memoria contigua|Ejercicios (Administración de memoria contigua)]]&lt;br /&gt;
* 8.7. [[Ejemplo de segmentación, paginación y combinado|Ejercicios (Segmentación, paginación y sistemas combinados)]]&lt;br /&gt;
&lt;br /&gt;
== Memoria virtual ==&lt;br /&gt;
&lt;br /&gt;
* 9.1. [[Memoria Virtual|Introducción]]&lt;br /&gt;
* 9.2. [[Criterios de reemplazo|Criterios de reemplazo]]&lt;br /&gt;
* 9.3. [[Memoria virtual con multiprogramacion|Otros aspectos relacionados con la memoria virtual]]&lt;br /&gt;
* 9.4. [[Ejercicios memoria virtual|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Entrada/Salida ==&lt;br /&gt;
&lt;br /&gt;
* 10.1. [[EstructuraES|Estructura dispositivo E/S]]&lt;br /&gt;
* 10.2. [[GestionES|Modos de gestionar dispositivos E/S]]&lt;br /&gt;
* 10.3. [[Diseño modular E/S|Diseño modular E/S]]&lt;br /&gt;
* 10.4. [[Ejercicios de Entrada/Salida|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Gestión E/S ==&lt;br /&gt;
&lt;br /&gt;
* 11.1. [[Discos Magnéticos|Discos Magnéticos]]&lt;br /&gt;
* 11.2. [[Mejoras de tiempos de desplazamiento|Mejoras de tiempos de desplazamiento]]&lt;br /&gt;
* 11.3. [[Mejoras en la demora de rotación|Mejoras en la demora de rotación]]&lt;br /&gt;
* 11.4. [[Tipos de errores en discos magnéticos|Tipos de errores en discos magnéticos]]&lt;br /&gt;
* 11.5. [[Unidades SSD|Unidades SSD]]&lt;br /&gt;
* 11.6. [[Reloj hardware: Intel 8253]]&lt;br /&gt;
* 11.7. [[Ejercicios Gestión L/E|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Administración de archivos ==&lt;br /&gt;
&lt;br /&gt;
* 12.1. [[Introducción en la administración de archivos|Introducción en la administración de archivos]]&lt;br /&gt;
* 12.2. [[FAT|FAT]]&lt;br /&gt;
* 12.3. [[EXT2 |EXT2]]&lt;br /&gt;
* 12.4. [[Ejercicios Administración Ficheros|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Anexo ==&lt;br /&gt;
&lt;br /&gt;
Esta sección contiene información interesante pero que no pertenece al temario de la asignatura.&lt;br /&gt;
&lt;br /&gt;
* Todo lo que siempre has querido saber sobre el protocolo SSH está [[SSH|aquí]].&lt;br /&gt;
* Instrucciones para emular BATHOS usando QEMU [[bathos_QEMU|aquí]].&lt;br /&gt;
* Instrucciones para emular XV6 usando QEMU [[xv6|aquí]].&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_Principal&amp;diff=3966</id>
		<title>Página Principal</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=P%C3%A1gina_Principal&amp;diff=3966"/>
				<updated>2018-04-10T19:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Novedades y noticias */ Fecha del segundo examen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenido al wiki de la asignatura de Sistemas Operativos del departamento de Lenguajes y Sistemas Informáticos de la Universidad de Sevilla. ¡Contribuye!&lt;br /&gt;
&lt;br /&gt;
= Novedades y noticias =&lt;br /&gt;
&lt;br /&gt;
* Primer control: Viernes 23 de marzo de 2018.&lt;br /&gt;
* Segundo control: Viernes 13 de abril de 2018.&lt;br /&gt;
&lt;br /&gt;
= Unidades didácticas =&lt;br /&gt;
&lt;br /&gt;
A continuación encontrarás las unidades didácticas que forman parte de la asignatura.&lt;br /&gt;
&lt;br /&gt;
== Introducción a los Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 1.1. [[Qué es un  Sistema operativo|Qué es un Sistema Operativo]]&lt;br /&gt;
* 1.2. [[Introducción histórica|Breve introducción histórica a los Sistemas Operativos]]&lt;br /&gt;
* 1.3. [[Tipos de Sistemas Operativos|Tipos de Sistemas Operativos]]&lt;br /&gt;
&lt;br /&gt;
== Fundamentos de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 2.1. [[Organización básica de un ordenador]]&lt;br /&gt;
* 2.2. [[Modos de operación de la CPU|Modos de operación de la CPU]]&lt;br /&gt;
* 2.3. [[Interrupciones y excepciones|Interrupciones y excepciones]]&lt;br /&gt;
* 2.4. [[Conceptos básicos|Conceptos básicos]]&lt;br /&gt;
* 2.5. [[Arranque del sistema|Arranque del sistema]]&lt;br /&gt;
* 2.6. [[Componentes básicos de un sistema operativo|Componentes básicos de un sistema operativo]]&lt;br /&gt;
* 2.7. [[Llamadas al sistema|Llamadas al sistema]]&lt;br /&gt;
* 2.8. [[Ejercicios fundamentos Sistemas Operativos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Modelos de diseño de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
* 3.1. [[Modelos de Diseño de Sistemas Operativos|Modelos de diseño de sistemas operativos]]&lt;br /&gt;
* 3.2. [[Virtualización]]&lt;br /&gt;
* 3.3. [[Ejercicios 3|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Procesos ==&lt;br /&gt;
* 4.1. [[Multiprogramación|La multiprogramación]]&lt;br /&gt;
* 4.2. [[Estados de los procesos|Estados de los procesos]]&lt;br /&gt;
* 4.3. [[Planificador de procesos|El planificador de procesos]]&lt;br /&gt;
* 4.4. [[Comportamiento de los procesos|El comportamiento de los procesos según el planificador]]&lt;br /&gt;
* 4.5. [[Bloque de control de procesos|El bloque de control del proceso]]&lt;br /&gt;
* 4.6. [[Conmutación de procesos|La conmutación de procesos]]&lt;br /&gt;
* 4.7. [[Hilos|Hilos]]&lt;br /&gt;
* 4.8. [[Ejercicios Procesos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Planificación de Procesos ==&lt;br /&gt;
* 5.1. [[Planificación de procesos|La planificación de procesos]]&lt;br /&gt;
* 5.2. [[Índices de evaluación|Índices de evaluación de la planificación de procesos]]&lt;br /&gt;
* 5.3. [[Criterios de planificación|Criterios de planificación]]&lt;br /&gt;
* 5.4. [[Planificadores de sistemas operativos existentes|Planificadores de sistemas operativos existentes]]&lt;br /&gt;
* 5.5. [[Planificación de procesos de tiempo real|La planificación de procesos de tiempo real]]&lt;br /&gt;
* 5.6. [[Planificación en sistemas multiprocesadores|La planificación de procesos en sistemas multiprocesadores]]&lt;br /&gt;
* 5.7. [[Ejercicios otros aspectos de la planificación|Ejercicios]]&lt;br /&gt;
* 5.8. [[Ejercicios planificación de procesos|Ejercicios]]&lt;br /&gt;
* 5.9. [[Ejercicios_simples_de_planificación_de_procesos|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Concurrencia de procesos ==&lt;br /&gt;
&lt;br /&gt;
* 6.1. [[Concurrencia de procesos|Concurrencia de procesos]]&lt;br /&gt;
* 6.2. [[Mecanismos de sincronización|Control optimista y pesimista de la concurrencia]]&lt;br /&gt;
* 6.3. [[Cerrojos|Cerrojos]]&lt;br /&gt;
* 6.4. [[Ejercicio de concurrencia de procesos|Ejercicios]]&lt;br /&gt;
* 6.5. [[Semáforos|Semáforos]]&lt;br /&gt;
* 6.6. [[Monitores|Monitores]]&lt;br /&gt;
* 6.7. [[Mensajería|Mensajería]]&lt;br /&gt;
* 6.8. [[Ejercicios sincronización y comunicación|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Interbloqueo ==&lt;br /&gt;
&lt;br /&gt;
* 7.1. [[Definición de interbloqueo|Definición]]&lt;br /&gt;
* 7.2. [[Condiciones para el interbloqueo y estrategias de resolución|Modelado y Estrategias]]&lt;br /&gt;
* 7.3. [[Algoritmo para averiguar interbloqueo|Algoritmo del banquero]]&lt;br /&gt;
* 7.4. [[Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Administración de memoria ==&lt;br /&gt;
&lt;br /&gt;
* 8.1. [[Introducción|Introducción]]&lt;br /&gt;
* 8.2. [[SO multiprogramables con particiones variables|SO multiprogramables con particiones variables]]&lt;br /&gt;
* 8.3. [[Segmentación|Segmentación]]&lt;br /&gt;
* 8.4. [[Paginación|Paginación]]&lt;br /&gt;
* 8.5. [[Sistema combinado|Sistema combinado]]&lt;br /&gt;
* 8.6. [[Ejercicios administración de memoria contigua|Ejercicios (Administración de memoria contigua)]]&lt;br /&gt;
* 8.7. [[Ejemplo de segmentación, paginación y combinado|Ejercicios (Segmentación, paginación y sistemas combinados)]]&lt;br /&gt;
&lt;br /&gt;
== Memoria virtual ==&lt;br /&gt;
&lt;br /&gt;
* 9.1. [[Memoria Virtual|Introducción]]&lt;br /&gt;
* 9.2. [[Criterios de reemplazo|Criterios de reemplazo]]&lt;br /&gt;
* 9.3. [[Memoria virtual con multiprogramacion|Otros aspectos relacionados con la memoria virtual]]&lt;br /&gt;
* 9.4. [[Ejercicios memoria virtual|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Entrada/Salida ==&lt;br /&gt;
&lt;br /&gt;
* 10.1. [[EstructuraES|Estructura dispositivo E/S]]&lt;br /&gt;
* 10.2. [[GestionES|Modos de gestionar dispositivos E/S]]&lt;br /&gt;
* 10.3. [[Diseño modular E/S|Diseño modular E/S]]&lt;br /&gt;
* 10.4. [[Ejercicios de Entrada/Salida|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Gestión E/S ==&lt;br /&gt;
&lt;br /&gt;
* 11.1. [[Discos Magnéticos|Discos Magnéticos]]&lt;br /&gt;
* 11.2. [[Mejoras de tiempos de desplazamiento|Mejoras de tiempos de desplazamiento]]&lt;br /&gt;
* 11.3. [[Mejoras en la demora de rotación|Mejoras en la demora de rotación]]&lt;br /&gt;
* 11.4. [[Tipos de errores en discos magnéticos|Tipos de errores en discos magnéticos]]&lt;br /&gt;
* 11.5. [[Reloj hardware: Intel 8253]]&lt;br /&gt;
* 11.6. [[Ejercicios Gestión L/E|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Administración de archivos ==&lt;br /&gt;
&lt;br /&gt;
* 12.1. [[Introducción en la administración de archivos|Introducción en la administración de archivos]]&lt;br /&gt;
* 12.2. [[FAT|FAT]]&lt;br /&gt;
* 12.3. [[EXT2 |EXT2]]&lt;br /&gt;
* 12.4. [[Ejercicios Administración Ficheros|Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
== Anexo ==&lt;br /&gt;
&lt;br /&gt;
Esta sección contiene información interesante pero que no pertenece al temario de la asignatura.&lt;br /&gt;
&lt;br /&gt;
* Todo lo que siempre has querido saber sobre el protocolo SSH está [[SSH|aquí]].&lt;br /&gt;
* Instrucciones para emular BATHOS usando QEMU [[bathos_QEMU|aquí]].&lt;br /&gt;
* Instrucciones para emular XV6 usando QEMU [[xv6|aquí]].&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=%C3%8Dndices_de_evaluaci%C3%B3n&amp;diff=3957</id>
		<title>Índices de evaluación</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=%C3%8Dndices_de_evaluaci%C3%B3n&amp;diff=3957"/>
				<updated>2018-03-14T15:54:57Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* ¿Cómo se evalúa un criterio de planificación? */ He editado una frase para que sea más entendible&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= ¿Cómo se evalúa un criterio de planificación? =&lt;br /&gt;
&lt;br /&gt;
Los siguientes índices que nos permiten evaluar el planificador:&lt;br /&gt;
&lt;br /&gt;
* '''Instante de lanzamiento''' (H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;): Instante de lanzamiento del proceso.&lt;br /&gt;
* '''Instante de finalización''' (H&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;): Instante de finalización del proceso.&lt;br /&gt;
* '''Tiempo de ejecución''' (t&amp;lt;sub&amp;gt;ejecución&amp;lt;/sub&amp;gt;): Unidades de tiempo que requiere el proceso para finalizar su ejecución.&lt;br /&gt;
* '''Tiempo de terminación''' (T = H&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt; - H&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;): Diferencia entre el instante de lanzamiento y el instante de terminación del proceso.&lt;br /&gt;
* '''Tiempo perdido''' (T-t): Es el tiempo durante el cual un proceso no está asignado al procesador, es decir, el tiempo en el que un proceso está en estado preparado o bloqueado.&lt;br /&gt;
* '''Índice de penalización''' (I&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; = T / t): Indica que un proceso ha tardado x-1 veces más en ejecutarse que si hubiera tenido el procesador en exclusividad y sin que se hubiese producido ningún bloqueo. Nótese que el índice de penalización crece rápidamente para procesos cuyo tiempo de ejecución es pequeño, mientras que, para procesos con tiempo de ejecución mayores, lo hace de manera más suave.&lt;br /&gt;
&lt;br /&gt;
Otros tiempos a tener en cuenta:&lt;br /&gt;
&lt;br /&gt;
* '''Tiempo de inactividad''': Es un tiempo específico del procesador. Tiempo durante el cual el procesador está ocioso (''idle'', en inglés), es decir, que no tienen ningún proceso asignado. Un procesador está ocioso cuando no hay procesos en estado preparado.&lt;br /&gt;
* '''Tiempo del sistema''': Tiempo empleado por el [[planificador de procesos|planificador]] para la conmutación de procesos. Un buen planificador debe tomar muy poco tiempo en tomar la decisión de planificación y realizar la conmutación.&lt;br /&gt;
* '''Tiempo de espera''': Tiempo desde el instante de lanzamiento hasta que el proceso pasa a estado preparado.&lt;br /&gt;
&lt;br /&gt;
Suponga el siguiente ejemplo, en el que hay dos procesos P&amp;lt;sub&amp;gt;x&amp;lt;/sub&amp;gt; y P&amp;lt;sub&amp;gt;y&amp;lt;/sub&amp;gt;, para ilustrar los índices definidos:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;     indica que el proceso está preparado&lt;br /&gt;
  &amp;gt;     indica que el proceso ha finalizado su ejecución &lt;br /&gt;
  $     indica que al proceso se le ha retirado el procesador&lt;br /&gt;
  X     indica la ejecución del planificador para la conmutación&lt;br /&gt;
 &lt;br /&gt;
                |   |   |   |   |   |   |&lt;br /&gt;
 Px             &amp;lt;---|---$   |---&amp;gt;   |   |&lt;br /&gt;
 Py             |   |   &amp;lt;---&amp;gt;   |   |   |&lt;br /&gt;
 planificador   |   |   X   X   |   |   |&lt;br /&gt;
                |___|___|___|___|___|___|___&lt;br /&gt;
                0   1   2   3   4   5   6&lt;br /&gt;
 &lt;br /&gt;
                                      tiempo -&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el proceso Px:&lt;br /&gt;
&lt;br /&gt;
* t   = 3 : Indica que el proceso Px requiere 3 unidades de tiempo para ejecutarse.&lt;br /&gt;
* T   = 4 : unidades de tiempo desde que se lanza hasta que se finaliza el proceso Px&lt;br /&gt;
* T-t = 1 : unidades de tiempo durante la cual el proceso Px no está asignado al procesador, por tanto, no progresa en su actividad.&lt;br /&gt;
* I&amp;lt;sub&amp;gt;p&amp;lt;/sub&amp;gt; = 4/3 = 1.34 : el proceso Px ha tardado un 34% de tiempo más en ejecutarse que si lo hubiera tenido en exclusividad (al haber tenido que compartir el procesador con Py).&lt;br /&gt;
&lt;br /&gt;
En el ejemplo anterior, los tiempos de espera y del sistema se suponen despreciables (en la práctica no lo son, aunque son muy pequeños con respecto a los ilustrados).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.3. [[Criterios_de_planificación | Criterios de planificación]]&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_de_los_ejercicios_de_procesos&amp;diff=3956</id>
		<title>Solución de los ejercicios de procesos</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_procesos&amp;diff=3956"/>
				<updated>2018-03-14T10:03:46Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Ejercicio 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
Los procesos A y C presentan un comportamiento con cierta tendencia bloqueante, por lo que se les puede clasificar como interactivos.&lt;br /&gt;
&lt;br /&gt;
El proceso B en cambio, no presenta bloqueos, por lo que se le puede considerar un proceso con comportamiento por lotes.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Ferguatol|fernandoenzo]] 17:33 27 oct 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ejemplo.svg]]&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Marbarcan|marinabarragancandel]] 11:05 14 mar 2018&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
&lt;br /&gt;
'''Posible solución:''' &lt;br /&gt;
&lt;br /&gt;
Un hilo es una línea de ejecución o &amp;quot;proceso ligero&amp;quot;. El sistema operativo ofrece llamadas al sistema para crear/destruir hilos. Desde el código del programa, puedo hacer uso de estas llamadas al sistema. Además, dos o más hilos, de un mismo proceso, comparten espacio de memoria. Mencionar también que la conmutación de hilos es menos costosa que la conmutación de procesos.&lt;br /&gt;
&lt;br /&gt;
Las ventajas principales son:&lt;br /&gt;
&lt;br /&gt;
- Menor penalización en cuanto a conmutación. &lt;br /&gt;
&lt;br /&gt;
- Dos hilos de un mismo proceso pueden compartir memoria aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos. &lt;br /&gt;
&lt;br /&gt;
- Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Raflopseg|Rafael López Segura]] 10:21 16 nov 2011 (UTC).&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
* '''Activo''': el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.&lt;br /&gt;
* '''Preparado''': el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.&lt;br /&gt;
* '''Bloqueado''': el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo &amp;quot;avisa&amp;quot; al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.&lt;br /&gt;
&lt;br /&gt;
La transición de activo a preparado y viceversa depende de decisiones tomadas por el '''planificador del sistema operativo''' en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                            [[Archivo:SSOO2.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:&lt;br /&gt;
* El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.&lt;br /&gt;
* Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.&lt;br /&gt;
* Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Jescrerui|JCR]] 22:16 9 nov 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Ejemplo.svg&amp;diff=3955</id>
		<title>Archivo:Ejemplo.svg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Ejemplo.svg&amp;diff=3955"/>
				<updated>2018-03-14T09:58:10Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_de_los_ejercicios_de_procesos&amp;diff=3954</id>
		<title>Solución de los ejercicios de procesos</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_procesos&amp;diff=3954"/>
				<updated>2018-03-14T09:57:39Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Ejercicio 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
Los procesos A y C presentan un comportamiento con cierta tendencia bloqueante, por lo que se les puede clasificar como interactivos.&lt;br /&gt;
&lt;br /&gt;
El proceso B en cambio, no presenta bloqueos, por lo que se le puede considerar un proceso con comportamiento por lotes.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Ferguatol|fernandoenzo]] 17:33 27 oct 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Ejemplo.jpg]]&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Marbarcan|marinabarragancandel]] 10:58 14 mar 2018&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
&lt;br /&gt;
'''Posible solución:''' &lt;br /&gt;
&lt;br /&gt;
Un hilo es una línea de ejecución o &amp;quot;proceso ligero&amp;quot;. El sistema operativo ofrece llamadas al sistema para crear/destruir hilos. Desde el código del programa, puedo hacer uso de estas llamadas al sistema. Además, dos o más hilos, de un mismo proceso, comparten espacio de memoria. Mencionar también que la conmutación de hilos es menos costosa que la conmutación de procesos.&lt;br /&gt;
&lt;br /&gt;
Las ventajas principales son:&lt;br /&gt;
&lt;br /&gt;
- Menor penalización en cuanto a conmutación. &lt;br /&gt;
&lt;br /&gt;
- Dos hilos de un mismo proceso pueden compartir memoria aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos. &lt;br /&gt;
&lt;br /&gt;
- Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Raflopseg|Rafael López Segura]] 10:21 16 nov 2011 (UTC).&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
* '''Activo''': el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.&lt;br /&gt;
* '''Preparado''': el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.&lt;br /&gt;
* '''Bloqueado''': el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo &amp;quot;avisa&amp;quot; al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.&lt;br /&gt;
&lt;br /&gt;
La transición de activo a preparado y viceversa depende de decisiones tomadas por el '''planificador del sistema operativo''' en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                            [[Archivo:SSOO2.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:&lt;br /&gt;
* El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.&lt;br /&gt;
* Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.&lt;br /&gt;
* Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Jescrerui|JCR]] 22:16 9 nov 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_de_los_ejercicios_de_procesos&amp;diff=3953</id>
		<title>Solución de los ejercicios de procesos</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_procesos&amp;diff=3953"/>
				<updated>2018-03-14T09:56:27Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Ejercicio 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
Los procesos A y C presentan un comportamiento con cierta tendencia bloqueante, por lo que se les puede clasificar como interactivos.&lt;br /&gt;
&lt;br /&gt;
El proceso B en cambio, no presenta bloqueos, por lo que se le puede considerar un proceso con comportamiento por lotes.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Ferguatol|fernandoenzo]] 17:33 27 oct 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafica.jpg]]&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Marbarcan|marinabarragancandel]] 10:58 14 mar 2018&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
&lt;br /&gt;
'''Posible solución:''' &lt;br /&gt;
&lt;br /&gt;
Un hilo es una línea de ejecución o &amp;quot;proceso ligero&amp;quot;. El sistema operativo ofrece llamadas al sistema para crear/destruir hilos. Desde el código del programa, puedo hacer uso de estas llamadas al sistema. Además, dos o más hilos, de un mismo proceso, comparten espacio de memoria. Mencionar también que la conmutación de hilos es menos costosa que la conmutación de procesos.&lt;br /&gt;
&lt;br /&gt;
Las ventajas principales son:&lt;br /&gt;
&lt;br /&gt;
- Menor penalización en cuanto a conmutación. &lt;br /&gt;
&lt;br /&gt;
- Dos hilos de un mismo proceso pueden compartir memoria aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos. &lt;br /&gt;
&lt;br /&gt;
- Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Raflopseg|Rafael López Segura]] 10:21 16 nov 2011 (UTC).&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
* '''Activo''': el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.&lt;br /&gt;
* '''Preparado''': el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.&lt;br /&gt;
* '''Bloqueado''': el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo &amp;quot;avisa&amp;quot; al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.&lt;br /&gt;
&lt;br /&gt;
La transición de activo a preparado y viceversa depende de decisiones tomadas por el '''planificador del sistema operativo''' en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                            [[Archivo:SSOO2.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:&lt;br /&gt;
* El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.&lt;br /&gt;
* Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.&lt;br /&gt;
* Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Jescrerui|JCR]] 22:16 9 nov 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3952</id>
		<title>Archivo:Grafica.svg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3952"/>
				<updated>2018-03-14T09:54:16Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: Marbarcan subió una nueva versión de Archivo:Grafica.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3951</id>
		<title>Archivo:Grafica.svg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3951"/>
				<updated>2018-03-14T09:51:26Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: Marbarcan subió una nueva versión de Archivo:Grafica.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Hilos&amp;diff=3950</id>
		<title>Hilos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Hilos&amp;diff=3950"/>
				<updated>2018-03-12T19:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: Se repetían varias palabras.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Un hilo es una línea de ejecución de un proceso. Todo procesos inicialmente parte con un único hilo principal, aunque el sistema operativo ofrece llamadas al sistema que permiten al programador crear y destruir hilos. Por tanto, un proceso está compuesto por uno o más hilos.&lt;br /&gt;
&lt;br /&gt;
Los estados de un hilo son iguales a los de un proceso, por tanto, un hilo puede estar en estado preparado, bloqueado o activo en un cierto instante de tiempo. La conmutación entre hilos de un proceso es menos costosa que la conmutación de procesos, por tanto, el planificador tiende a conmutar entre hilos de un proceso siempre que el proceso en su conjunto no haya agotado el tiempo máximo de asignación del procesador.&lt;br /&gt;
&lt;br /&gt;
Los hilos nos permiten aprovechar la existencia de más de un procesador en el sistema, puesto que podemos asignar un hilo a cada uno de los procesadores que haya disponibles. Si hay más de un procesador, dos hilos de un mismo proceso pueden estar en estado activo simultáneamente. Por tanto, la programación con hilos me permite sacar partido de las arquitecturas de multiprocesador que predominan en la actualidad.&lt;br /&gt;
&lt;br /&gt;
Cuando se crea un hilo, el programador indica qué código ejecuta. Los hilos de un mismo proceso comparten el mismo espacio de memoria, por tanto, dos hilos del mismo proceso pueden compartir estructura de datos y variables.&lt;br /&gt;
&lt;br /&gt;
Veamos un ejemplo diseñado para un solo procesador:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Uso_del_procesador_hilos.svg]]&lt;br /&gt;
&lt;br /&gt;
Con multiprocesamiento podemos ejecutar diferentes procesos a la vez. Si tenemos uno solo podemos desdoblarlo en hilos, usando técnicas de programación apoyadas en APIS (como POSIX threads).&lt;br /&gt;
&lt;br /&gt;
Para aumentar su eficiencia, un programa en ejecución debe crear tantos hilos como el doble del número de procesadores de los que disponga el sistema. Por ejemplo: 4 hilos para un programa ejecutado con 2 procesadores.&lt;br /&gt;
&lt;br /&gt;
Las principales ventajas del uso de hilos son:&lt;br /&gt;
&lt;br /&gt;
*'''Menor penalización''' en cuanto a conmutación. Ya que sólo se produce un salto en la ejecución de código del proceso, no interviene el planificador de procesos.&lt;br /&gt;
&lt;br /&gt;
*Dos hilos de un mismo proceso '''comparten memoria''' aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos.&lt;br /&gt;
&lt;br /&gt;
*Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos.&lt;br /&gt;
&lt;br /&gt;
= Ejemplo =&lt;br /&gt;
&lt;br /&gt;
El siguiente es un código en C de ejemplo en el que se muestra la creación de dos hilos. Se hace uso de la llamada al sistema ''sleep'' que hace que el proceso pase a estado bloqueado durante N segundos. Nótese que al compartir la variable ''a'', ambos hilos modifican su valor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;pthread.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int a = 10;&lt;br /&gt;
&lt;br /&gt;
void *codigo_hilo1(void *arg)&lt;br /&gt;
{&lt;br /&gt;
	sleep(10);&lt;br /&gt;
	a = a - 2;&lt;br /&gt;
	printf(&amp;quot;Soy el hilo 1 y la variable a vale %d\n&amp;quot;, a);&lt;br /&gt;
	return NULL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void *codigo_hilo2(void *arg)&lt;br /&gt;
{&lt;br /&gt;
	sleep(5);&lt;br /&gt;
	a++;&lt;br /&gt;
	printf(&amp;quot;Soy el hilo 2 y la variable a vale %d\n&amp;quot;, a);&lt;br /&gt;
	return NULL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	pthread_t hilo1, hilo2;&lt;br /&gt;
&lt;br /&gt;
	pthread_create(&amp;amp;hilo1, NULL, codigo_hilo1, NULL);&lt;br /&gt;
	pthread_create(&amp;amp;hilo2, NULL, codigo_hilo2, NULL);&lt;br /&gt;
&lt;br /&gt;
	pthread_join(hilo1, NULL);&lt;br /&gt;
	pthread_join(hilo2, NULL);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este ejemplo se compila en un terminal escribiendo: '''gcc archivo.c  -lpthread'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ejercicios_Procesos | Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5.1.[[Planificación de procesos| La planificación de procesos]]&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3949</id>
		<title>Archivo:Grafica.svg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3949"/>
				<updated>2018-03-12T17:14:52Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: Marbarcan subió una nueva versión de Archivo:Grafica.svg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3948</id>
		<title>Archivo:Grafica.svg</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:Grafica.svg&amp;diff=3948"/>
				<updated>2018-03-12T16:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_de_los_ejercicios_de_procesos&amp;diff=3947</id>
		<title>Solución de los ejercicios de procesos</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_procesos&amp;diff=3947"/>
				<updated>2018-03-12T12:22:45Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Ejercicio 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
Los procesos A y C presentan un comportamiento con cierta tendencia bloqueante, por lo que se les puede clasificar como interactivos.&lt;br /&gt;
&lt;br /&gt;
El proceso B en cambio, no presenta bloqueos, por lo que se le puede considerar un proceso con comportamiento por lotes.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Ferguatol|fernandoenzo]] 17:33 27 oct 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
&lt;br /&gt;
'''Posible solución:''' &lt;br /&gt;
&lt;br /&gt;
Un hilo es una línea de ejecución o &amp;quot;proceso ligero&amp;quot;. El sistema operativo ofrece llamadas al sistema para crear/destruir hilos. Desde el código del programa, puedo hacer uso de estas llamadas al sistema. Además, dos o más hilos, de un mismo proceso, comparten espacio de memoria. Mencionar también que la conmutación de hilos es menos costosa que la conmutación de procesos.&lt;br /&gt;
&lt;br /&gt;
Las ventajas principales son:&lt;br /&gt;
&lt;br /&gt;
- Menor penalización en cuanto a conmutación. &lt;br /&gt;
&lt;br /&gt;
- Dos hilos de un mismo proceso pueden compartir memoria aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos. &lt;br /&gt;
&lt;br /&gt;
- Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Raflopseg|Rafael López Segura]] 10:21 16 nov 2011 (UTC).&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
* '''Activo''': el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.&lt;br /&gt;
* '''Preparado''': el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.&lt;br /&gt;
* '''Bloqueado''': el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo &amp;quot;avisa&amp;quot; al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.&lt;br /&gt;
&lt;br /&gt;
La transición de activo a preparado y viceversa depende de decisiones tomadas por el '''planificador del sistema operativo''' en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                            [[Archivo:SSOO2.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:&lt;br /&gt;
* El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.&lt;br /&gt;
* Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.&lt;br /&gt;
* Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Jescrerui|JCR]] 22:16 9 nov 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Soluci%C3%B3n_de_los_ejercicios_de_procesos&amp;diff=3946</id>
		<title>Solución de los ejercicios de procesos</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_procesos&amp;diff=3946"/>
				<updated>2018-03-12T12:21:19Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Ejercicio 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicio 1 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
Los procesos A y C presentan un comportamiento con cierta tendencia bloqueante, por lo que se les puede clasificar como interactivos.&lt;br /&gt;
&lt;br /&gt;
El proceso B en cambio, no presenta bloqueos, por lo que se le puede considerar un proceso con comportamiento por lotes.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Ferguatol|fernandoenzo]] 17:33 27 oct 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafica.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 2 ==&lt;br /&gt;
&lt;br /&gt;
'''Posible solución:''' &lt;br /&gt;
&lt;br /&gt;
Un hilo es una línea de ejecución o &amp;quot;proceso ligero&amp;quot;. El sistema operativo ofrece llamadas al sistema para crear/destruir hilos. Desde el código del programa, puedo hacer uso de estas llamadas al sistema. Además, dos o más hilos, de un mismo proceso, comparten espacio de memoria. Mencionar también que la conmutación de hilos es menos costosa que la conmutación de procesos.&lt;br /&gt;
&lt;br /&gt;
Las ventajas principales son:&lt;br /&gt;
&lt;br /&gt;
- Menor penalización en cuanto a conmutación. &lt;br /&gt;
&lt;br /&gt;
- Dos hilos de un mismo proceso pueden compartir memoria aprovechando mejor los recursos y eliminando los mecanismos de comunicación necesarios para soluciones implementadas en varios procesos. &lt;br /&gt;
&lt;br /&gt;
- Con un solo procesador es posible que una línea de proceso haga uso de una llamada al sistema bloqueante. En este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso externo, ahorrando así tiempo de conmutación asociado a la ejecución del planificador de procesos.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Raflopseg|Rafael López Segura]] 10:21 16 nov 2011 (UTC).&lt;br /&gt;
&lt;br /&gt;
== Ejercicio 3 ==&lt;br /&gt;
'''Propuesta de solución:'''&lt;br /&gt;
* '''Activo''': el proceso está empleando la CPU, por tanto, está ejecutándose. Pueden haber tantos procesos activos como procesadores haya disponibles. Por tanto, si el sistema dispone de un único procesador, únicamente puede haber un proceso activo a la vez.&lt;br /&gt;
* '''Preparado''': el proceso no está ejecutándose pero es candidato a pasar a estado activo. Es el planificador el que, en base a un criterio de planificación, decide qué proceso selecciona de la lista de procesos preparados para pasar a estado activo.&lt;br /&gt;
* '''Bloqueado''': el proceso está pendiente de un evento externo que le ha hecho bloquear, tales como una operación de lectura/escritura, la espera de finalización de un proceso hijo, una señal o una operación sobre un semáforo. El dispositivo/hecho externo &amp;quot;avisa&amp;quot; al S.O. cuando ha terminado la acción que realizaba mediante una INTERRUPCIÓN, dejando el S.O. lo que está haciendo para atender a esta última. Tras esto, el S.O. comprueba cuales son los procesos que fueron bloqueados por ese evento externo, cambiándolos al estado de preparado.&lt;br /&gt;
&lt;br /&gt;
La transición de activo a preparado y viceversa depende de decisiones tomadas por el '''planificador del sistema operativo''' en base a un cierto criterio. La transición de activo a bloqueado, y de bloqueado a preparado puede inducirlas el programador mediante llamadas al sistema.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                            [[Archivo:SSOO2.jpg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay tres posibles situaciones en las que se ejecutará el planificador del sistema operativo:&lt;br /&gt;
* El proceso que se encuentra en el estado activo hace una llamada al sistema que, por su naturaleza, resulta en una transición al estado bloqueado. Este es el caso de las llamadas read(), write(), wait(), pause(), entre muchas otras. Al pasar a estado bloqueado, se invoca al planificador para que decida que otro proceso se asignará al procesador.&lt;br /&gt;
* Si el proceso que se encuentra en el estado activo excede el tiempo máximo de asignación, en caso de que lo hubiere.&lt;br /&gt;
* Si el proceso que hasta ese momento se encontraba en estado activo termina de ejecutar su código.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Jescrerui|JCR]] 22:16 9 nov 2012 (UTC)&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Modelos_de_Dise%C3%B1o_de_Sistemas_Operativos&amp;diff=3943</id>
		<title>Modelos de Diseño de Sistemas Operativos</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Modelos_de_Dise%C3%B1o_de_Sistemas_Operativos&amp;diff=3943"/>
				<updated>2018-03-07T16:49:26Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Sistemas operativos Monolíticos */  Errata en el segundo ejemplo de sistemas operativos monolíticos.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 3.1. Modelos de Diseño de SSOO =&lt;br /&gt;
&lt;br /&gt;
== Modos de operación del procesador ==&lt;br /&gt;
&lt;br /&gt;
Para entender los diseños de sistemas operativos existentes, tenemos que hacer referencia a los modos de ejecución del procesador. El modo de ejecución del procesador determina qué conjunto de instrucciones y a qué recursos del procesador se puede acceder.&lt;br /&gt;
&lt;br /&gt;
Los procesadores ofrecen, como mínimo, dos modos de funcionamiento del procesador:&lt;br /&gt;
&lt;br /&gt;
* '''Modo privilegiado''', que permite la ejecución de todo el conjunto de instrucciones que ofrece el procesador. Es el modo en el que se ejecuta el núcleo de un sistema operativo.&lt;br /&gt;
&lt;br /&gt;
* '''Modo no privilegiado''', que permite acceder a un subconjunto de las instrucciones que ofrece el procesador, es el modo en el que se ejecutan los procesos.&lt;br /&gt;
&lt;br /&gt;
== Núcleo del sistema operativo ==&lt;br /&gt;
&lt;br /&gt;
El núcleo del sistema operativo, también conocido por la terminología inglesa ''kernel'', es la parte más esencial del sistema operativo. Es la parte del código del sistema operativo que se ejecuta en modo privilegiado del procesador.&lt;br /&gt;
&lt;br /&gt;
Al operar en dicho modo, un error de programación en el núcleo del sistema operativo resulta en un error fatal del cual el sistema sólo puede recuperarse mediante el reinicio del sistema. A tal error fatal también se le conoce en los sistemas operativos UNIX por la locución inglesa ''[http://es.wikipedia.org/wiki/Kernel_panic kernel panic]'' y en los sistemas operativos Windows por el nombre de ''[http://www.google.es/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CCwQFjAA&amp;amp;url=http%3A%2F%2Fes.wikipedia.org%2Fwiki%2FPantalla_azul_de_la_muerte&amp;amp;ei=s02WTqvCCMjHtAaxuJyBBA&amp;amp;usg=AFQjCNE2tZra15VdohxjrhSogTQZOVedKg Pantallazo azul o BSOD]''.&lt;br /&gt;
&lt;br /&gt;
== Tipos de Sistemas Operativos ==&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos se pueden clasificar en base a la cantidad de funcionalidades propias del sistemas operativo que se implementan en su núcleo. En general distinguimos dos tipos de sistemas operativos:&lt;br /&gt;
&lt;br /&gt;
* '''Monolíticos:''' gestionan los cuatro componentes fundamentales del sistema operativo en modo supervisor, esto incluye, la planificación de procesos, la administración de la memoria principal, la gestión de E/S y el administrador de ficheros.&lt;br /&gt;
&lt;br /&gt;
* '''Micronúcleos:''' implementan en su núcleo únicamente la planificación de procesos, la gestión de interrupciones (la parte básica fundamental de la gestión de E/S que necesariamente se tiene que realizar en modo privilegiado) y la comunicación entre procesos. Por tanto, la administración de memoria principal, la gestión de la E/S y la gestión de ficheros se realiza en modo usuario. En este tipo de sistema operativo hay procesos especiales propios del sistema operativo que implementan dichas funcionalidades en modo usuario y se denominan ''proceso servidor''.&lt;br /&gt;
&lt;br /&gt;
Además, contamos con una clasificación intermedia:&lt;br /&gt;
&lt;br /&gt;
* '''Híbrido:''' a mitad de camino entre monolítico y micronúcleo, incluyen la gestión de dispositivos de E/S en modo supervisor con el fin de mejorar el rendimiento del sistema.&lt;br /&gt;
&lt;br /&gt;
En número de líneas de código, el núcleo monolítico es mayor que el micronúcleo, al implementar más componentes del sistema operativo que permiten la gestión del computador en el espacio del núcleo, es decir, en modo privilegiado.&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativo monolíticos ofrecen mejor rendimiento que los micronúcleos, pero los micronúcleos son más fiables, pues un fallo de programación en el núcleo lleva al traste con la ejecución del sistema.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Hay que reparar esto [[Archivo:OS-structure2b(EDITADO).svg‎ |880px| Comparativa de distribución de funcionalidades entre distintos tipos de SO]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sistemas operativos Monolíticos ===&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos monolíticos se caracterizan por implementar en el núcleo los cuatro componentes fundamentales del sistema operativo, que son la planificación de procesos, la administración de la memoria principal, la administración de ficheros y la gestión de los dispositivos de entrada/salida.&lt;br /&gt;
&lt;br /&gt;
Los sistemas operativos de propósito general son predominantemente monolíticos hoy día, algunos ejemplos son:&lt;br /&gt;
&lt;br /&gt;
* Sistemas operativos UNIX, tales como FreeBSD, NetBSD y OpenBSD. &lt;br /&gt;
* Sistemas operativos GNU/Linux, y por tanto, Android también.&lt;br /&gt;
* DOS, tales como MS-DOS y DR-DOS.&lt;br /&gt;
&lt;br /&gt;
Como inconveniente, este tipo de sistemas de operativo dispone de un alto número de líneas de código ejecutándose en modo privilegiado. Por ello, un error de programación en el núcleo puede provocar un ''kernel panic''. Además, el hecho de añadir nuevas funcionalidades provocaría una nueva recompilación del núcleo llevando a reiniciar el sistema para que se apliquen los nuevos cambios. Por ejemplo, un bug en núcleo de un sistema operativo monolítico obliga a tener que reiniciar el sistema el sistema. En un sistema operativo monolítico, el código del núcleo se incluye en un único fichero binario que se carga en memoria principal en tiempo de arranque, por tanto, si se instala una nueva imagen, es necesario reiniciar el sistema operativo para que se inicie con la nueva versión que incluye la imagen actualizada.&lt;br /&gt;
&lt;br /&gt;
Como principal ventaja, los sistemas operativos monolíticos ofrecen un alto rendimiento puesto que las peticiones entre los diferentes componentes se reducen a invocaciones de funciones.&lt;br /&gt;
&lt;br /&gt;
=== Sistemas operativos Micronúcleo ===&lt;br /&gt;
&lt;br /&gt;
Se caracterizan por disponer de un núcleo que implementa únicamente:&lt;br /&gt;
&lt;br /&gt;
* Planificación de procesos&lt;br /&gt;
* Mecanismo de comunicación entre procesos&lt;br /&gt;
* Gestión de interrupciones&lt;br /&gt;
&lt;br /&gt;
Además, existen procesos servidores que se ejecutan en modo no privilegiado del procesador - que, por supuesto, se ejecutan fuera del espacio del núcleo del sistema operativo - y que implementan los siguientes componentes:&lt;br /&gt;
&lt;br /&gt;
* Administración de memoria principal&lt;br /&gt;
* Administración de ficheros&lt;br /&gt;
* Gestión de dispositivos de entrada/salida.&lt;br /&gt;
&lt;br /&gt;
Siguiendo este esquema, cuando un proceso cualquiera solicita un servicio a través de una llamada al sistema, el micronúcleo canaliza la petición al proceso servidor correspondiente. Dicha comunicación se realiza mediante mensajería.&lt;br /&gt;
&lt;br /&gt;
La principal ventaja de los sistemas operativos micronúcleo es que, al ejecutar menos líneas de código en modo privilegiado, de manera intuitiva son más fiables. Otras ventajas son que se garantiza el aislamiento de las partes que están fuera del núcleo. Generalmente, si un proceso servidor tiene un bug en su código que hace que entre en una condición de error, se puede relanzar sin tener que reiniciar el sistema por completo.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, el principal problema que presentan es el rendimiento, puesto que cualquier petición requiere mensajería, que lleva consigo un coste extra debido a la construcción de los mensajes, el reparto y la interpretación. Son estos problemas relacionados con el rendimiento los que hacen que no existan sistemas operativos micronúcleo, y que generalmente únicamente tiene propósitos educativos y/o propósitos muy específicos.&lt;br /&gt;
&lt;br /&gt;
Algunos ejemplos de sistemas operativos micronúcleos son:&lt;br /&gt;
&lt;br /&gt;
* Symbian OS, hoy día en desuso.&lt;br /&gt;
* Minix, en sus versiones 2 y 3.&lt;br /&gt;
&lt;br /&gt;
=== Sistemas operativos Híbridos ===&lt;br /&gt;
&lt;br /&gt;
«Híbrido» implica que el núcleo en cuestión usa conceptos de arquitectura tanto del diseño monolítico como del micronúcleo, específicamente el paso de mensajes y la ejecución de ciertos componentes del sistema operativo en espacio de usuario.&lt;br /&gt;
&lt;br /&gt;
Algunos ejemplos de núcleos híbridos:&lt;br /&gt;
&lt;br /&gt;
* Microsoft Windows NT, usado en todos los sistemas que usan el código base de Windows NT.&lt;br /&gt;
* XNU (usado en Mac OS X), es un micronúcleo modificado, debido a la inclusión de código del núcleo de FreeBSD en el núcleo basado en Mach.&lt;br /&gt;
* DragonFlyBSD, es el primer sistema BSD que adopta una arquitectura de núcleo híbrido sin basarse en Mach.&lt;br /&gt;
* ReactOS.&lt;br /&gt;
&lt;br /&gt;
No hay que confundir el concepto «núcleo híbrido» con el soporte de módulos cargables después del arranque que está disponible en núcleos monolíticos.&lt;br /&gt;
&lt;br /&gt;
=== Unikernel ===&lt;br /&gt;
&lt;br /&gt;
Las aplicaciones se ejecutan en modo supervisor, dentro del espacio del núcleo del Sistema Operativo. Por tanto, la totalidad del código se ejecuta en modo privilegiado. Los procesos no invocan llamadas al sistema pues tienen acceso directo a los recursos del computador. El argumento para este diseño es el rendimiento a cambio de sacrificar la fiabilidad. Sólo es aplicable a sistemas de propósito muy específico.&lt;br /&gt;
&lt;br /&gt;
== Otro material a consultar ==&lt;br /&gt;
&lt;br /&gt;
El estudiante puede encontrar el siguiente material de interés para complementar sus conocimientos:&lt;br /&gt;
&lt;br /&gt;
* Debate entre Linus Torvalds, creador del núcleo Linux, que sigue el paradigma monolítico y Andrew S. Tanembaum, creador de Minux, que sigue el modelo micronúcleo: http://oreilly.com/catalog/opensources/book/appa.html (en inglés).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.2.[[Virtualización | Virtualización]]&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Llamadas_al_sistema&amp;diff=3942</id>
		<title>Llamadas al sistema</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Llamadas_al_sistema&amp;diff=3942"/>
				<updated>2018-03-07T10:41:16Z</updated>
		
		<summary type="html">&lt;p&gt;Marbarcan: /* Implementación de llamadas al sistema */ Faltaban algunos pronombres personales en la frase que da pie al código de 32 bits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 2.7. Llamadas al sistema =&lt;br /&gt;
&lt;br /&gt;
== Definición de llamada al sistema ==&lt;br /&gt;
&lt;br /&gt;
Una llamada al sistema es un método o función que puede invocar un proceso para solicitar un cierto servicio al sistema operativo. Dado que el acceso a ciertos recursos del sistema requiere la ejecución de código en modo privilegiado, el sistema operativo ofrece un conjunto de métodos o funciones que el programa puede emplear para acceder a dichos recursos. En otras palabras, el sistema operativo actúa como intermediario, ofreciendo una interfaz de programación (API) que el programa puede usar en cualquier momento para solicitar recursos gestionados por el sistema operativo.&lt;br /&gt;
&lt;br /&gt;
Algunos ejemplos de llamadas al sistema son las siguientes:&lt;br /&gt;
&lt;br /&gt;
* '''write''', que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una pantalla o un disco magnético.&lt;br /&gt;
* '''read''', que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco magnético.&lt;br /&gt;
* '''open''', que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele pasarse a write.&lt;br /&gt;
* '''close''', que se emplea para cerrar un descriptor de fichero.&lt;br /&gt;
&lt;br /&gt;
Todo sistema operativo ofrece un conjunto de llamadas al sistema. En el caso de Linux 3.0, se ofrecen un total de [http://syscalls.kernelgrok.com/ 345 llamadas al sistema]. El sistema operativo xv6 ofrece también una lista de llamadas al sistema [https://github.com/mit-pdos/xv6-public/blob/master/syscall.c#L107 mucho menor] al ser un sistema operativo muy sencillo.&lt;br /&gt;
&lt;br /&gt;
Toda llamada al sistema se identifica de manera unívoca mediante un valor numérico que no debe ser modificado a lo largo de la vida del sistema operativo para evitar que se rompa la compatibilidad hacia atrás.&lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo muestra en C la invocación de las llamadas al sistema '''write''', '''read''', '''open''' y '''close'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	char buf[1024];&lt;br /&gt;
	int fd, ret;&lt;br /&gt;
&lt;br /&gt;
	fd = open(&amp;quot;f123&amp;quot;, O_RDONLY);&lt;br /&gt;
	if (fd &amp;lt; 0) {&lt;br /&gt;
		perror(&amp;quot;open&amp;quot;);&lt;br /&gt;
		exit(EXIT_FAILURE);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	ret = read(fd, buf, sizeof(buf));&lt;br /&gt;
	if (ret &amp;lt; 0) {&lt;br /&gt;
		perror(&amp;quot;read&amp;quot;);&lt;br /&gt;
		exit(EXIT_FAILURE);&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
&lt;br /&gt;
	write(1, buf, ret);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Familias de llamadas al sistema operativo: POSIX y WIN32/64 ===&lt;br /&gt;
&lt;br /&gt;
Las dos familias de APIs estandarizas más importantes son:&lt;br /&gt;
&lt;br /&gt;
* [http://es.wikipedia.org/wiki/POSIX POSIX].&lt;br /&gt;
* WIN32/64, empleada en los sistemas operativos de tipo-Windows. Además, existen emuladores como '''Wine''' ''(permite instalar y ejecutar aplicaciones de Windows en distribuciones de Linux)'' que también las implementan.&lt;br /&gt;
&lt;br /&gt;
== Implementación de llamadas al sistema ==&lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo muestra el código en ensamblador de x86 para invocar a la llamada al sistema '''write''' que permite escribir un dato en cualquier dispositivo. En concreto, se va a escribir una cadena por el dispositivo de salida '''pantalla''', que se identifica mediante el descriptor de fichero número 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
section .text&lt;br /&gt;
    global _start&lt;br /&gt;
_start:&lt;br /&gt;
    mov eax, 4         ;cargamos el número de la llamada al sistema en el regitro eax&lt;br /&gt;
    mov ebx, 1         ;cargamos el descriptor de fichero sobre el que queremos escribir&lt;br /&gt;
    mov ecx, string    ;cargamos en ecx la dirección de la cadena a imprimir&lt;br /&gt;
    mov edx, lenght    ;cargamos en edx el tamaño de la cadena a imprimir&lt;br /&gt;
    int 80h            ;se invoca a interrupción por software número 80&lt;br /&gt;
                       ;que invoca al dispatcher de llamadas al sistema&lt;br /&gt;
&lt;br /&gt;
    mov eax, 1&lt;br /&gt;
    mov ebx, 0&lt;br /&gt;
    int 80h&lt;br /&gt;
&lt;br /&gt;
section .data&lt;br /&gt;
    string: db &amp;quot;Hola Mundo&amp;quot;, 0x0A&lt;br /&gt;
    lenght: equ 13&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La instrucción ''int'' forma parte del conjunto de instrucciones de procesadores x86. Esta instrucción emite una [[Gestión_de_Entrada/Salida|interrupción]] por software cuyo tratamiento es realizado por la rutina ''dispatcher''. Dicha rutina se encarga del tratamiento de la interrupción por software número 80.&lt;br /&gt;
&lt;br /&gt;
En el siguiente segmento de código se muestra una llamada a sistema en un procesador de 32 bits:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
_start:&lt;br /&gt;
    movl $4, %eax   ; use the write syscall&lt;br /&gt;
    movl $1, %ebx   ; write to stdout&lt;br /&gt;
    movl $msg, %ecx ; use string &amp;quot;Hello World&amp;quot;&lt;br /&gt;
    movl $12, %edx  ; write 12 characters&lt;br /&gt;
    int $0x80       ; make syscall&lt;br /&gt;
    &lt;br /&gt;
    movl $1, %eax   ; use the _exit syscall&lt;br /&gt;
    movl $0, %ebx   ; error code 0&lt;br /&gt;
    int $0x80       ; make syscall&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Análogamente en un procesador de 64 bits:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
_start:&lt;br /&gt;
    movq $4, %rax   ; use the write syscall&lt;br /&gt;
    movq $1, %rdi   ; write to stdout&lt;br /&gt;
    movq $msg, %rsi ; use string &amp;quot;Hello World&amp;quot;&lt;br /&gt;
    movq $12, %rdx  ; write 12 characters&lt;br /&gt;
    syscall         ; make syscall&lt;br /&gt;
    &lt;br /&gt;
    movq $60, %rax  ; use the _exit syscall&lt;br /&gt;
    movq $0, %rdi   ; error code 0&lt;br /&gt;
    syscall         ; make syscall&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Ejemplo de llamadas al sistema de Linux (64 bits):''' http://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/&lt;br /&gt;
&lt;br /&gt;
[http://cs.lmu.edu/~ray/notes/linuxsyscalls/ Implementación de llamadas al sistema en Linux (32 y 64 bit)]&lt;br /&gt;
&lt;br /&gt;
== El ''dispatcher'' ==&lt;br /&gt;
&lt;br /&gt;
El dispatcher, que forma parte del SO, se ejecuta cuando se invoca una llamada al sistema. &lt;br /&gt;
Cuando un proceso hace una llamada al sistema, el dispatcher, se encarga de invocar la llamada que el proceso ha solicitado.&lt;br /&gt;
 &lt;br /&gt;
Tiene un comportamiento sincronizado, cuando recibe una llamada se la pasa al sistema operativo y hasta que no recibe respuesta no atiende otra llamada. &lt;br /&gt;
&lt;br /&gt;
En el caso de x86, el dispatcher consulta el registro eax e invoca a la llamada al sistema identificada con dicha numeración.&lt;br /&gt;
&lt;br /&gt;
El sistema xv6 ofrece un dispatcher muy sencillo, que se puede consultar [https://github.com/mit-pdos/xv6-public/blob/master/syscall.c#L132 aquí].&lt;br /&gt;
&lt;br /&gt;
2.8. [[Ejercicios_fundamentos_Sistemas_Operativos | Ejercicios]]&lt;br /&gt;
&lt;br /&gt;
3.1. [[Modelos_de_Diseño_de_Sistemas_Operativos | Modelos de Diseño de SSOO]]&lt;/div&gt;</summary>
		<author><name>Marbarcan</name></author>	</entry>

	</feed>