<?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=Josrojvid</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=Josrojvid"/>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php/Especial:Contribuciones/Josrojvid"/>
		<updated>2026-04-15T23:47:27Z</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=2906</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=2906"/>
				<updated>2013-12-19T17:05:29Z</updated>
		
		<summary type="html">&lt;p&gt;Josrojvid: &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 IS-G1&lt;br /&gt;
* Daniel Ayala Hernández IS-G1&lt;br /&gt;
* Daniel de los Reyes Leal IS-G1&lt;br /&gt;
* Olga Minerva Moreno Martín IS-G1&lt;br /&gt;
* Vanessa Chipirrás Navalón IC&lt;br /&gt;
* Alejandro Sánchez Medina IS-G1&lt;br /&gt;
* Francisco Javier Borrego Cejudo IC-G2&lt;br /&gt;
* Samuel Martin Arenas IC-G2&lt;br /&gt;
* Álvaro Fernández García IS-G1&lt;br /&gt;
* Rafael Gomez Galbarro GIC2&lt;br /&gt;
* María Pérez Reina IS-G1&lt;br /&gt;
* José Antonio Rojo Vidal IS-G1&lt;/div&gt;</summary>
		<author><name>Josrojvid</name></author>	</entry>

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

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:EstructuraES.gif&amp;diff=2904</id>
		<title>Archivo:EstructuraES.gif</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Archivo:EstructuraES.gif&amp;diff=2904"/>
				<updated>2013-12-19T17:02:16Z</updated>
		
		<summary type="html">&lt;p&gt;Josrojvid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Josrojvid</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Memoria_Virtual&amp;diff=2889</id>
		<title>Memoria Virtual</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Memoria_Virtual&amp;diff=2889"/>
				<updated>2013-12-17T22:29:21Z</updated>
		
		<summary type="html">&lt;p&gt;Josrojvid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La memoria virtual es una técnica que puede implementar el administrador de memoria con soporte de paginación para aumentar el grado de multiprogramación. Para ello se emplea una zona en disco conocida como ''zona de intercambio'' o ''swap'' para descargar en ella segmentos o páginas que se encuentran en memoria principal.&lt;br /&gt;
&lt;br /&gt;
La zona de intercambio se implementa siguiendo dos posibles estrategias:&lt;br /&gt;
&lt;br /&gt;
* Se destina una parte del disco reservada explícitamente para ello. En este caso, dicho espacio de memoria no puede ser empleado para almacenar información útil del usuario. Los sistemas operativos tipo-Unix implementan esta estrategia.&lt;br /&gt;
&lt;br /&gt;
* Se emplea un fichero oculto que puede tener un tamaño fijo(donde dicho espacio estará reservado y el usuario no podra hacer uso de el) o variable para almacenar las páginas descargadas. Los sistemas operativos de tipo-Microsoft implementan esta aproximación.&lt;br /&gt;
&lt;br /&gt;
La técnica de memoria virtual se manifiesta cuando toda la memoria principal está en uso y, por tanto, no existe espacio libre para cargar una cierta pagina que es requerida por un proceso. Ante esta situación, el mecanismo de memoria virtual permite '''seleccionar una página víctima''' que será descargada a la zona de intercambio. De esta manera se libera memoria principal para poder cargar la página que nuestro proceso en estado activo requiere. La selección de las páginas víctima se hace en base a diferentes criterios que veremos en esta unidad didáctica.&lt;br /&gt;
&lt;br /&gt;
Por tanto, en caso de que un proceso activo requiera una página o segmento que está descargado en la zona de intercambio, '''hay que seleccionar una página víctima''' de otro proceso, preferentemente en estado preparado o bloqueado, que será descargada en disco para hacer espacio a la página requerida.&lt;br /&gt;
&lt;br /&gt;
Los tiempos de descarga y recarga de páginas tienen una penalización considerable. Esto se debe a los tiempos de acceso al dispositivo disco magnético son mucho mayores que los de la memoria principal. '''En general, un buen criterio de reemplazo de páginas debe no descargar páginas que vayan a ser necesitadas en poco tiempo''', reduciendo así la cantidad de accesos a disco asociados a la descarga y recarga de páginas.&lt;br /&gt;
&lt;br /&gt;
== Elementos de análisis ==&lt;br /&gt;
Dado un criterio de sustitución, nos preguntamos si es bueno o malo, y lo comparamos con otro para saber cual es el mejor y cuanto mejor. El criterio de localidad no es una herramienta, sino una propiedad que empíricamente se comprueba que se cumple. Las herramientas para conocerlo son:&lt;br /&gt;
&lt;br /&gt;
''' Cadenas de referencia '''&lt;br /&gt;
&lt;br /&gt;
Secuencia de páginas referidas por un proceso. Suponiendo que un proceso hace los siguientes accesos a memoria (pagina/desplazamiento):&lt;br /&gt;
0, 1, 0, 0/6, 0/8, 1/0, 0/0, 0/2,2, 255, 2… 1/1, 1/4, 0/8, 2/15, 2/18, 2/15, 2/18, 255/32, 255/36, 2/15&lt;br /&gt;
&lt;br /&gt;
No nos importan ni los desplazamientos ni que se acceda varias veces consecutivas a la misma página, el fallo de página se produce en el primer acceso. En una cadena de referencia, nunca aparecerán varias referencias consecutivas a la misma página. Realizar la traza de lo programado es complicado porque no conocemos el futuro, se obtiene una simulación.&lt;br /&gt;
&lt;br /&gt;
''' Índices de valoración '''&lt;br /&gt;
&lt;br /&gt;
Sirve para medir las prestaciones de los criterios. Todos ellos están referidas a una cadena de referencia.  &lt;br /&gt;
*F(m): Número de fallos de páginas con m marcos.&lt;br /&gt;
*f= F(m) /A: Tasa de fallos de páginas.&lt;br /&gt;
*fc= (F(m) -m )/A: Tasa de fallos de páginas en caliente.&lt;br /&gt;
*F(m) -m: Número de fallos de páginas en caliente.&lt;br /&gt;
*A = Número de accesos.&lt;br /&gt;
&lt;br /&gt;
''' Curva paracorde '''&lt;br /&gt;
&lt;br /&gt;
Representación del número de fallos de páginas para una cadena de referencia, frente al número de marcos utilizados. Sea p = número de páginas (distintas) en cadena de referencia. El número característico es el área bajo la curva, y es una buena medida de la calidad del algoritmo.&lt;br /&gt;
&lt;br /&gt;
''' Principio de localidad '''&lt;br /&gt;
*Localidad espacial: Si una página es accedida es muy probable que se acceda eventualmente a una página próxima a ella.&lt;br /&gt;
&lt;br /&gt;
*Localidad temporal: Si una página es accedida en un instante de tiempo, es muy probable que en el futuro inmediato vuelva a ser accedida.&lt;br /&gt;
&lt;br /&gt;
El principio de localidad nos beneficia pues, si los accesos a memoria fuesen totalmente aleatorios, la probabilidad de producirse un fallo sería inversamente proporcional al número de marcos, con lo que la curva paracorde sería una recta de pendiente negativa. No obstante, se comprueba que las curvas paracordes típicas tienen una forma como la que presentamos, sensiblemente mejor que la probabilidad inversa al número de páginas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A continuación, nos centraremos en el estudio de los diferentes [[Criterios de reemplazo|criterios de reemplazo]] para páginas que permiten seleccionar la página víctima.&lt;/div&gt;</summary>
		<author><name>Josrojvid</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2880</id>
		<title>Ejercicios administración de memoria contigua</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Ejercicios_administraci%C3%B3n_de_memoria_contigua&amp;diff=2880"/>
				<updated>2013-12-17T17:53:57Z</updated>
		
		<summary type="html">&lt;p&gt;Josrojvid: /* Ejercicio 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Ejercicios Clase=&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 1==&lt;br /&gt;
Ejercicio visto el martes 29 de Noviembre de 2011 en clase.&lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  3  |  &lt;br /&gt;
 P2 |  1 |  4  |  1  |&lt;br /&gt;
 P3 |  2 |  5  |  2  |&lt;br /&gt;
 P4 |  3 |  2  |  9  |&lt;br /&gt;
 P5 |  4 |  1  |  15 |&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
  _____&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución Ejercicio clase Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[Solución Ejercicio clase Primer Ajuste|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución Ejercicio clase Mejor Ajuste Dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
El mejor ajuste estático y el mejor ajuste dinámico no se estudian en el presente curso (13/14)&lt;br /&gt;
&lt;br /&gt;
==Ejercicio 2==&lt;br /&gt;
Segundo ejercicio visto el martes 29 de Noviembre de 2011 en clase. &lt;br /&gt;
&lt;br /&gt;
 Dada la siguiente configuración de procesos:&lt;br /&gt;
 &lt;br /&gt;
    | H0 |  t  |  M  |&lt;br /&gt;
 ---------------------&lt;br /&gt;
 P1 |  0 |  4  |  2  |  &lt;br /&gt;
 P2 |  0 |  4  |  1  |&lt;br /&gt;
 P3 |  0 |  5  |  3  |&lt;br /&gt;
 P4 |  0 |  2  |  8  |&lt;br /&gt;
 P5 |  0 |  1  |  7  |&lt;br /&gt;
 &lt;br /&gt;
 Aunque todos llegan en el mismo instante de tiempo, suponga el siguiente orden de llegada: 1º P1, 2º P2, 3º P3, 4º P4 y 5º P5.&lt;br /&gt;
 &lt;br /&gt;
 Y la siguiente configuración de memoria:&lt;br /&gt;
  _____&lt;br /&gt;
 |_____| A = 4kB&lt;br /&gt;
 |_____| B = 4kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |_____| C = 8kB&lt;br /&gt;
 |     |&lt;br /&gt;
 |     |&lt;br /&gt;
 |     | D = 16kB&lt;br /&gt;
 |_____|&lt;br /&gt;
&lt;br /&gt;
Calcula los cronogramas tal y como se hizo en el ejercicio anterior. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a) Determina el cronograma del Mejor Ajuste Estático [[solución ejercicio2 Mejor Ajuste Estático|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
b) Determina el cronograma Primer ajuste      [[solución ejercicio2 Primer Ajuste|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
c) Determina el cronograma del Mejor Ajuste Dinámico [[solución ejercicio2Mejor Ajuste Dinámico|Ver solución]]&lt;br /&gt;
&lt;br /&gt;
Corregido --[[Usuario:Pneira|Pneira]] 15:55 22 dic 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
Los apartados a y c de los ejercicios no se imparte en el temario del año 2012-2013 --[[Usuario:jescordia|jescordia]] 11:16 17 dic 2012&lt;/div&gt;</summary>
		<author><name>Josrojvid</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Segmentaci%C3%B3n&amp;diff=2875</id>
		<title>Segmentación</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Segmentaci%C3%B3n&amp;diff=2875"/>
				<updated>2013-12-16T18:31:07Z</updated>
		
		<summary type="html">&lt;p&gt;Josrojvid: /* Crecimiento de proceso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definición=&lt;br /&gt;
Un segmento es un espacio de memoria de tamaño variable, compuesto por:&lt;br /&gt;
*Descriptor: Identificador único del segmento (dentro del espacio de memoria del proceso).&lt;br /&gt;
*Tamaño del segmento&lt;br /&gt;
&lt;br /&gt;
=Funcionamiento=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Segmentos.png|725px]]&lt;br /&gt;
&lt;br /&gt;
=Características=&lt;br /&gt;
*Cada proceso en ejecución (esté activo, bloqueado o preparado) tiene su tabla de segmentos.&lt;br /&gt;
&lt;br /&gt;
*Solapamiento: Se puede hacer que 2 segmentos se superpongan de manera que compartan direcciones de memoria física con direcciones lógicas diferentes. Para evitar problemas de concurrencia, debe de indicarse explícitamente que una porción de memoria pueda ser compartida. De esta manera, procesos diferentes pueden compartir información y código usando la memoria común.&lt;br /&gt;
&lt;br /&gt;
*Protección de memoria: añadir 3 bits a la tabla de descriptores de segmentos para los permisos ( r w x ).&lt;br /&gt;
&lt;br /&gt;
*Cuando un proceso requiere más memoria se crea un nuevo segmento.&lt;br /&gt;
&lt;br /&gt;
*Dos instancias de un mismo proceso pueden compartir segmentos de memoria de instrucciones/código, pero no para datos ya que esto complicaría la gestión.&lt;br /&gt;
&lt;br /&gt;
*Es posible la redimensión de un segmento siempre que haya posiciones libres contiguas.&lt;br /&gt;
&lt;br /&gt;
*Gestión compleja, sobretodo por su tamaño variable&lt;br /&gt;
&lt;br /&gt;
*Permite la carga de segmentos a petición, de manera que no se disponga de todos los segmentos en memoria principal, que se puedan descargar a disco (en la zona de intercambio o swap) en base a un cierto criterio (ver [[Intro | Memoria virtual]]). Esta zona de intercambio puede ser:&lt;br /&gt;
**Un lugar fijo en el disco (Linux, Unix). El administrador de memoria decide qué segmento se va a descargar&lt;br /&gt;
**Un fichero oculto de tamaño fijo o variable dependiendo de la configuración dada por el usuario (Windows).&lt;br /&gt;
&lt;br /&gt;
*La segmentación se hizo para equipos con poca memoria, no está pensada para sistemas modernos.&lt;br /&gt;
&lt;br /&gt;
=Mecanismos=&lt;br /&gt;
Los diferentes mecanismos que nos ofrece la segmentación de memoria son los siguientes.&lt;br /&gt;
==Carga de segmentos a petición==&lt;br /&gt;
Es un mecanismo que permite a un proceso no disponer de todos sus segmentos en memoria principal, se pueden descargar a disco (en la zona de intercambio o swap) segmentos en base a un cierto criterio (ver [[Intro | Memoria virtual]]). &lt;br /&gt;
&lt;br /&gt;
Esta zona de intercambio puede ser:&lt;br /&gt;
&lt;br /&gt;
* Un lugar fijo en el disco (Linux, Unix). El administrador de memoria decide qué segmento se va a descargar&lt;br /&gt;
&lt;br /&gt;
* Un fichero oculto de tamaño fijo o variable dependiendo de la configuracion dada por el usuario (Windows).&lt;br /&gt;
&lt;br /&gt;
==Formas de uso de los descriptores==&lt;br /&gt;
En cuanto a aspectos materiales, se plantea el problema de que no es habitual que la tabla de segmentos quepa en el dispositivo de traducción (MMU), por lo que se almacena la tabla en memoria, y el MMU contiene su dirección. El problema es que esta técnica hace que el tiempo de acceso se duplique, al haber un primer acceso al MMU y un segundo acceso a la dirección efectiva. Se plantean dos soluciones no excluyentes:&lt;br /&gt;
* '''Uso de registros descriptores de segmento en MMU:'''&lt;br /&gt;
&amp;lt;blockquote&amp;gt; &lt;br /&gt;
En MMU nos encontraremos varios registros que pueden contener descriptores, en los que se copiarán los que se vayan a usar en un futuro inmediato. Hay dos tipos de registros:&lt;br /&gt;
*Registros de propósito general:&lt;br /&gt;
Registros sobre los que se cargan los próximos descriptores a usar, y dos tipos de direcciones:&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que hacen referencia a un descriptor en la tabla de memoria (y necesitan más bits para hacer referencia al descriptor)&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que hacen referencia a un descriptor en MMU (y necesitan menos bits para referir al descriptor)&lt;br /&gt;
*Registros especializados:&lt;br /&gt;
Registros capaces de albergar a un descriptor concreto, como el DS (Para manejo de datos), SS (Para manipulación de pila) o el CS (Para instrucciones de salto y llamadas a rutinas). También existen dos tipos de direcciones:&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que hacen referencia a un descriptor en la tabla de memoria&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que no hacen referencia a ningún descriptor, y emplean descriptores de MMU, según el tipo de instrucción&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Uso de descriptores en memoria asociativa (Cache):'''&lt;br /&gt;
&amp;lt;blockquote&amp;gt; &lt;br /&gt;
La MMU contiene una memoria asociativa indexada por número de descriptor. Para cada acceso, se busca en la memoria asociativa el número de descriptor, y si no está, se carga a esta (Si se llena la memoria asociativa se lleva a cabo reemplazo). Este tipo de memoria es transparente, por lo que se puede usar en conjunción con registros descriptores de segmento en MMU.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Superposición de segmentos=&lt;br /&gt;
&lt;br /&gt;
El administrador de memoria puede definir segmentos superpuestos para crear áreas de memoria compartidas entre dos o más procesos del sistema. Los procesos emplean una llamada al sistema explícita para solicitar la creación del área de memoria compartida. El mecanismo de segmentos solapados es un aspecto propio del administrador de memoria, del que se puede valer para implementar la memoria compartida.&lt;br /&gt;
&lt;br /&gt;
=Crecimiento de proceso=&lt;br /&gt;
Existen dos formas de crecimiento: Asignando nuevos segmentos al proceso, y haciendo crecer algún segmento asignado. &lt;br /&gt;
Para crecer un segmento: si hay suficiente espacio libre contiguo, se actualiza el tamaño en el descriptor del segmento. Si no hay suficiente espacio: se define un nuevo segmento y se copia el contenido al nuevo segmento.&lt;/div&gt;</summary>
		<author><name>Josrojvid</name></author>	</entry>

	<entry>
		<id>https://1984.lsi.us.es/wiki-ssoo/index.php?title=Segmentaci%C3%B3n&amp;diff=2874</id>
		<title>Segmentación</title>
		<link rel="alternate" type="text/html" href="https://1984.lsi.us.es/wiki-ssoo/index.php?title=Segmentaci%C3%B3n&amp;diff=2874"/>
				<updated>2013-12-16T18:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;Josrojvid: /* Crecimiento de proceso */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definición=&lt;br /&gt;
Un segmento es un espacio de memoria de tamaño variable, compuesto por:&lt;br /&gt;
*Descriptor: Identificador único del segmento (dentro del espacio de memoria del proceso).&lt;br /&gt;
*Tamaño del segmento&lt;br /&gt;
&lt;br /&gt;
=Funcionamiento=&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Segmentos.png|725px]]&lt;br /&gt;
&lt;br /&gt;
=Características=&lt;br /&gt;
*Cada proceso en ejecución (esté activo, bloqueado o preparado) tiene su tabla de segmentos.&lt;br /&gt;
&lt;br /&gt;
*Solapamiento: Se puede hacer que 2 segmentos se superpongan de manera que compartan direcciones de memoria física con direcciones lógicas diferentes. Para evitar problemas de concurrencia, debe de indicarse explícitamente que una porción de memoria pueda ser compartida. De esta manera, procesos diferentes pueden compartir información y código usando la memoria común.&lt;br /&gt;
&lt;br /&gt;
*Protección de memoria: añadir 3 bits a la tabla de descriptores de segmentos para los permisos ( r w x ).&lt;br /&gt;
&lt;br /&gt;
*Cuando un proceso requiere más memoria se crea un nuevo segmento.&lt;br /&gt;
&lt;br /&gt;
*Dos instancias de un mismo proceso pueden compartir segmentos de memoria de instrucciones/código, pero no para datos ya que esto complicaría la gestión.&lt;br /&gt;
&lt;br /&gt;
*Es posible la redimensión de un segmento siempre que haya posiciones libres contiguas.&lt;br /&gt;
&lt;br /&gt;
*Gestión compleja, sobretodo por su tamaño variable&lt;br /&gt;
&lt;br /&gt;
*Permite la carga de segmentos a petición, de manera que no se disponga de todos los segmentos en memoria principal, que se puedan descargar a disco (en la zona de intercambio o swap) en base a un cierto criterio (ver [[Intro | Memoria virtual]]). Esta zona de intercambio puede ser:&lt;br /&gt;
**Un lugar fijo en el disco (Linux, Unix). El administrador de memoria decide qué segmento se va a descargar&lt;br /&gt;
**Un fichero oculto de tamaño fijo o variable dependiendo de la configuración dada por el usuario (Windows).&lt;br /&gt;
&lt;br /&gt;
*La segmentación se hizo para equipos con poca memoria, no está pensada para sistemas modernos.&lt;br /&gt;
&lt;br /&gt;
=Mecanismos=&lt;br /&gt;
Los diferentes mecanismos que nos ofrece la segmentación de memoria son los siguientes.&lt;br /&gt;
==Carga de segmentos a petición==&lt;br /&gt;
Es un mecanismo que permite a un proceso no disponer de todos sus segmentos en memoria principal, se pueden descargar a disco (en la zona de intercambio o swap) segmentos en base a un cierto criterio (ver [[Intro | Memoria virtual]]). &lt;br /&gt;
&lt;br /&gt;
Esta zona de intercambio puede ser:&lt;br /&gt;
&lt;br /&gt;
* Un lugar fijo en el disco (Linux, Unix). El administrador de memoria decide qué segmento se va a descargar&lt;br /&gt;
&lt;br /&gt;
* Un fichero oculto de tamaño fijo o variable dependiendo de la configuracion dada por el usuario (Windows).&lt;br /&gt;
&lt;br /&gt;
==Formas de uso de los descriptores==&lt;br /&gt;
En cuanto a aspectos materiales, se plantea el problema de que no es habitual que la tabla de segmentos quepa en el dispositivo de traducción (MMU), por lo que se almacena la tabla en memoria, y el MMU contiene su dirección. El problema es que esta técnica hace que el tiempo de acceso se duplique, al haber un primer acceso al MMU y un segundo acceso a la dirección efectiva. Se plantean dos soluciones no excluyentes:&lt;br /&gt;
* '''Uso de registros descriptores de segmento en MMU:'''&lt;br /&gt;
&amp;lt;blockquote&amp;gt; &lt;br /&gt;
En MMU nos encontraremos varios registros que pueden contener descriptores, en los que se copiarán los que se vayan a usar en un futuro inmediato. Hay dos tipos de registros:&lt;br /&gt;
*Registros de propósito general:&lt;br /&gt;
Registros sobre los que se cargan los próximos descriptores a usar, y dos tipos de direcciones:&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que hacen referencia a un descriptor en la tabla de memoria (y necesitan más bits para hacer referencia al descriptor)&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que hacen referencia a un descriptor en MMU (y necesitan menos bits para referir al descriptor)&lt;br /&gt;
*Registros especializados:&lt;br /&gt;
Registros capaces de albergar a un descriptor concreto, como el DS (Para manejo de datos), SS (Para manipulación de pila) o el CS (Para instrucciones de salto y llamadas a rutinas). También existen dos tipos de direcciones:&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que hacen referencia a un descriptor en la tabla de memoria&lt;br /&gt;
&amp;lt;br&amp;gt;- Las que no hacen referencia a ningún descriptor, y emplean descriptores de MMU, según el tipo de instrucción&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Uso de descriptores en memoria asociativa (Cache):'''&lt;br /&gt;
&amp;lt;blockquote&amp;gt; &lt;br /&gt;
La MMU contiene una memoria asociativa indexada por número de descriptor. Para cada acceso, se busca en la memoria asociativa el número de descriptor, y si no está, se carga a esta (Si se llena la memoria asociativa se lleva a cabo reemplazo). Este tipo de memoria es transparente, por lo que se puede usar en conjunción con registros descriptores de segmento en MMU.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Superposición de segmentos=&lt;br /&gt;
&lt;br /&gt;
El administrador de memoria puede definir segmentos superpuestos para crear áreas de memoria compartidas entre dos o más procesos del sistema. Los procesos emplean una llamada al sistema explícita para solicitar la creación del área de memoria compartida. El mecanismo de segmentos solapados es un aspecto propio del administrador de memoria, del que se puede valer para implementar la memoria compartida.&lt;br /&gt;
&lt;br /&gt;
=Crecimiento de proceso=&lt;br /&gt;
Existen dos formas de crecimiento: Asignando nuevos segmentos al proceso, y haciendo crecer algún segmento asignado. &lt;br /&gt;
Para crecer un segmento: si hay suficiente espacio libre contiguO, se actualiza el tamaño en el descriptor del segmento. Si no hay suficiente espacio: se define un nuevo segmento y se copia el contenido al nuevo segmento.&lt;/div&gt;</summary>
		<author><name>Josrojvid</name></author>	</entry>

	</feed>