¿Que son Particiones?
Es el nombre genérico que recibe cada división presente en una sola unidad física de almacenamiento de datos. Toda partición tiene su propio sistemas de archivos (formato); generalmente, casi cualquier sistema operativo interpreta, utiliza y manipula cada partición como un disco físico independiente, a pesar de que dichas particiones estén en un solo disco físico.
Vale aclarar entonces que cuando hablamos de formatear un disco se esta hablando de crear una partición que ocupe todo el espacio disponible de una unidad física de almacenamiento.
Las particiones pueden ser utilizadas para permitir a un equipo en particular tener instalado varios sistemas operativos en un mismo disco físico; de hecho algunos sistemas operativos necesitan mas de una partición para funcionar, o bien , para aprovechar el rendimiento del equipo. Una partición también puede ser útil para proporcionar al usuario un espacio para almacenar copias de seguridad de tal manera que los archivos puedan quedar protegidos de un sistema de archivos roto e irrecuperable o de un formateo accidental hecho a la partición donde esta el archivo original.
PARTICIONES FIJAS
El primer intento para
posibilitar la multiprogramación fue la creación de particiones fijas o
estáticas, en la memoria principal, una partición para cada tarea. El tamaño de
la partición se especificaba al encender el sistema, cada partición podía re-configurarse
al volver a encender el sistema o reiniciar el sistema.
Este
esquema introdujo un factor esencial, la protección del espacio de memoria para
la tarea. Una vez asignada una partición a una tarea, no se permitía que
ninguna otra tarea entrara en sus fronteras. Este esquema de
partición es mas flexible que la de usuario único, por que permite que varios
programas estén en memoria al mismo tiempo.
Ventajas:
- Simplicidad
- Resolución de direcciones en tiempo de carga
- Registro base (no requiere siquiera de un registro limite)
- Puede limitarse simplemente con un espacio de direccionamiento acorde en el compilador.
Desventajas
- Rigidez
- Grado de multiprocesamiento limitado
- Si hay menos de 7 procesos, se desperdician recursos.
- Si hay mas de 7, tienen que esperar a que se les abra espacio.
- Desperdicio de espacio (Fragmentación interna)
- Al asignarse la memoria en bloques fijos, un proceso pequeño podría desperdiciar mucho espacio
Asignación de las particiones fijas
La asignación de las particiones fijas consiste en darle un espacio de memoria es decir una partición a un proceso que necesite ejecutarse es decir:
Ahora bien se necesitan ejecutar estos procesos o tareas, lo que se hace es empezar por la primera partición que va de 30 a 50, esta partición tiene un espacio de 20 (50-30=20), como se asignan las tareas por orden de llegada entonces la primera que se debe asignar es la tarea 1 que pesa 50, por lo tanto se busca en la memoria una partición con esa capacidad.
En este ejemplo seria la partición que hay entre 80 a 200, donde tiene un espacio de 120, a esta particion se le asignara la tarea 1 (t1). Quedaría de la siguiente manera:
Al ingresar la tarea 1 en la partición vemos que queda un espacio de sobra en esa partición la cual es 70 (120-50=70) a esto se le llama fragmentación. La fragmentación es la memoria que se desperdicia, es un espacio que se esta usando pero no se esta ocupando del todo.
La fragmentación es la memoria
que queda desperdiciada al usar los métodos de gestión de memoria que se vieron
en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor
producen fragmentación externa. La fragmentación es generada cuando durante el
reemplazo de procesos quedan huecos entre dos o más procesos de manera no
contigua y cada hueco no es capaz de soportar ningún proceso de la lista de
espera. La fragmentación puede ser:
Fragmentación Externa: Existe
el espacio total de memoria para satisfacer un requerimiento, pero no es
contigua.
Fragmentación Interna: La
memoria asignada puede ser ligeramente mayor que la requerida; esta referencia
es interna a la partición, pero no se utiliza.
La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero esta sólo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.
La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero esta sólo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.
Se hace el mismo proceso con la tarea 2:
Ahora con la t3,la tarea 3 pesa 80 y si observamos la imagen nos daremos cuenta de que no hay ninguna partición que tenga un espacio en la memoria de 80, por lo que se dice que esta tarea queda en cola es decir que queda en espera mientras se desocupa una partición que tenga ese espacio.
lo siguiente es terminar la tarea 4 y la tarea 5 que quedarían así:
Desasignación para particiones fijas:
Las tareas salen de la memoria por el tiempo de ejecución, es fácil de comprender ya que si una tarea termino lo único que hace es salir y dejar la partición libre es decir:
Vamos a utilizar el ejemplo anterior y supondremos que la tarea 4 ya se ejecuto lo que se hace es quitarla y queda el espacio libre, para poder asignar otra tarea.
PARTICIONES DINÁMICAS
Las
particiones dinámicas son variables en número y longitud, esto quiere
decir que cuando se carga un proceso a memorial principal se le asigna el
espacio que necesita en memoria y no más. Esta partición comienza siendo muy
buena pero en el trascurso de uso deja un gran número de huecos pequeños en la
memoria lo cual se le denomina fragmentación externa. Se debe usar la compactación
para evitar esta fragmentación, el sistema operativo desplaza los procesos para
que estén contiguos de forma que todos los espacios de memoria
libre se agrupen en un bloque, es decir:
Ventajas
No existe fragmentación interna
Desventajas
fragmentación externa, se debe compactar la memoria. El compactado toma tiempo.
Asignación de las
particiones dinámicas
Al cabo de un tiempo las particiones dinámicas se empiezan a comportar como particiones fijas, así que en las particiones dinámicas también hay fragmentación, pero esta fragmentación es externa. Para esto existen tres algoritmos: mejor ajuste,
primer ajuste o próximo ajuste
- Mejor ajuste: Consiste en ubicar el proceso en el espacio de memoria que mas se ajuste a su tamaño
Ejemplo: se quiere ingresar la tarea 3, pero si nos fijamos no hay una partición con un espacio lo suficientemente grande para esta tarea, por lo cual, al igual que las particiones fijas esta tarea quedaría en cola.
Ahora vamos a ingresar la tarea 4 que pesa 10, entonces si miramos en la imagen la partición que mas se ajusta al tamaño de la tarea es la de (240 a 250), ya que si se asigna la tarea allí, no se va a gastar espacio de memoria entonces quedaría:
Lo siguiente es ingresar la tarea 5 que pesa 20, pero hay dos particiones que están disponibles y son adecuados para esta tarea que son la partición de (30 a 50) y de (160 a 180), como el mejor ajuste dice que es la partición mas se ajuste a su tamaño, por consiguiente se podria asignar a cualquiera de los dos espacios, en esta ocasión lo pondremos en la partición de (30 a 50). Quedaría:
- Primer ajuste: Consiste en ubicar el proceso en el primer hueco disponible, recorriendo desde el inicio de la memoria, cuyo tamaño sea suficiente para el proceso.
Utilizaremos el ejemplo anterior para una mayor comprensión, vamos a ingresar la tarea 5 de nuevo, pero esta vez como es primer ajuste obligatoriamente debe de ir en la partición de (30 a 50) ya que el primer ajuste indica que se debe de asignar el proceso en la primera partición que sea mas ajustada a su tamaño. Quedaría como la imagen anterior.
- Siguiente ajuste: Consiste en ubicar el siguiente hueco disponible, que sea suficientemente grande, a partir de la última asignación de memoria.
Ejemplo: En este ejemplo asignamos la tarea 4, pero el punto de partida es la tarea 2 ya que fue la ultima en asignarse, por consiguiente la siguiente casilla se asignara, pero en el siguiente ajuste hay que tener en cuenta, que también es la partición que mas se ajuste al tamaño de la tarea, así este algoritmo pasara a la siguiente partición hasta que encuentre una partición del mismo tamaño que la tarea o un poco mas grande para poder optimizar memoria. Quedaría:
Desasignación en las particiones dinámicas:
consiste en sacar las tareas de la memoria, las tareas salen por tiempo de ejecución, pero para que salgan de dan 3 casos:
- Particiones ocupadas
- Particiones entre una libre y una ocupada
- Particiones entre dos libres
Particiones ocupadas:
Vamos a eliminar la tarea 4, como se aprecia en la imagen esta entre dos particiones ocupadas, entonces el algoritmo lo que hace es preguntar si al lado izquierdo esta ocupado y al lado derecho esta ocupado, si es así entonces la tarea 4 se puede liberar y quedaría:
Particiones entre una libre y una ocupada:
Vamos a eliminar la tarea 1, antes de eliminar el algoritmo pregunta si a la izquierda de la tarea 1 esta libre y a la derecha esta ocupado, o viceversa, si estas condiciones se cumplen entonces se puede liberar la tarea 1, pero ademas la partición que esta libre se fusiona con la partición en la que se libero la tarea quedando así una partición mas grande, es decir:
Particiones entre dos libres:
En este ejemplo vamos a sacar la tarea 3 o termino de ejecutar y va a salir, entonces vemos que la tarea 3 esta entre dos particiones libres. El algoritmo pregunta si a la izquierda y a la derecha de la tarea 3 esta libre, si es así, libera la tarea 3 y une las tres particiones para que quede una mas grande, es decir:
RELOCALIZACIÓN
La relocalización solamente existe en las particiones dinámicas.
Con
este esquema de asignación de memoria, el administrador de memoria relocaliza
los programas para reunir los bloques vacíos y compactarlos, para hacer un
bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en
espera de entrar
La relocalización sucede por 3 instancias:
- Tiempo
- Cantidad de tareas en cola
- Porcentaje de como este ocupada la memoria
Ejemplo:
Como se puede apreciar en la imagen, la relocalización consiste en agrupar las particiones libres en un solo bloque para que así cuando vuelva a ingresar una tarea, esta se ingrese normalmente en la parte final de la memoria.
PAGINACIÓN
La paginación consiste en dividir la memoria en un conjunto de marcos de igual tamaño, cada proceso se divide en una serie de paginas del tamaño de los marcos, incluso el espacio para el sistema operativo también esta paginado, un proceso se carga en los marcos que requiera(todas las paginas), no necesariamente contiguas es decir seguidas.
Ejemplo:
En la imagen podemos ver como se paginan los procesos y la memoria, al paginar los procesos se pueden llevar a la memoria aleatoriamente es así entonces como funciona la paginación.
nosotros podemos saber cuantas paginas salieron al dividir un proceso, y también la fragmentación a partir de una sencilla división y una resta
ejemplo:
Se divide el tamaño de la tarea entre la división de los marcos, el (cociente + 1) va a ser la paginación, después para saber la fragmentación se toma la división de marcos y se le resta el residuo(10 - 5 = 5 ), esta sera la fragmentación.
De
esta forma se puede cargar una página de información en cualquier marco de
página. Las páginas sirven como unidad de almacenamiento de información y
transferencia en la memoria principal y memoria secundaria
Las páginas de un programa necesitan estar contiguamente
en memoria.
Los
mecanismos de paginación permiten la correspondencia correcta entre las
direcciones virtuales (dadas por los programas) y las direcciones reales de la
memoria que se reverencien.
Cada
página consiste en z palabras contiguas; un espacio de direcciones N de un
programa consiste de n paginas (0,1,2,3…n-1) (n*z direcciones virtuales) y el
espacio de memoria consiste de m marcos de páginas (0,z,2z,…,(m-1)z)(m*z
posiciones).
PARA
TENER EL CONTROL DE LAS PÁGINAS: Debe mantenerse una tabla en memoria que se
denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos.
Tabla de páginas
Cada
página tiene un número que se utiliza como índice en la tabla de páginas, lo
que da por resultado el número del marco correspondiente a esa página virtual.
Si el bit presente / ausente es 0, se provoca un señalamiento (trap) hacia el
sistema operativo. Si el bit es 1, el número de marco que aparece en la tabla
de páginas se copia en los bits de mayor orden del registro de salida. La
finalidad de las tablas es asociar las páginas virtuales con los marcos.
Características de la
paginación
•
El espacio de direcciones lógico de un proceso puede ser no contiguo.
•
Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).
•
Se divide la memoria en bloques de tamaño llamados páginas.
•
Se mantiene información en los marcos libres.
•
Para correr un programa de n páginas de tamaño, se necesitan encontrara n
marcos y cargar el programa.
•
Se establece una tabla de páginas para trasladar las direcciones lógicas a
físicas.
•
Se produce fragmentación interna.
Ventajas:
Es posible comenzar a ejecutar
un programa, cargando solo una parte del mismo en memoria, y el resto se
cargara bajo la solicitud. No es necesario que las paginas estén contiguas en
memoria, por lo que no se necesitan procesos de compactación cuando existen
marcos de páginas libres dispersos en la memoria. Es fácil controlar todas las
páginas, ya que tienen el mismo tamaño.
Desventajas
El costo de hardware y
software se incrementa, por la nueva información que debe manejarse y el
mecanismo de traducción de direcciones necesario. Se consume mucho más recursos
de memoria, tiempo en el CPU para su implantación. Se deben reservar áreas de
memoria para las PMT de los procesos. Al no ser fija el tamaño de estas, se
crea un problema semejante al de los programas (como asignar un tamaño óptimo
sin desperdicio de memoria, u "ovearhead" del procesador).
La dirección generada por la
CPU se divide en:
Numero de página (p): utilizado como índice en la
tabla de páginas que contiene la dirección base de cada página en la memoria física.
De la página (d): combinado con la dirección base
define la dirección física que será enviada a la unidad de memoria.
Existen dos funciones
1- Llevar
a cabo la transformación de una dirección virtual a física, o sea, la
determinación de la página a la que corresponde una determinada dirección de un
programa.
2- Transferir,
cuando haga falta, páginas de la memoria secundaria a la memoria principal, y
de la memoria principal a la memoria secundaria cuando ya no sean necesarias.
SEGMENTACIÓN
Divide la memoria en
segmentos, cada uno de los cuales tiene una longitud variable, que está
definida intrínsecamente por el tamaño de ese segmento del programa.
Los elementos dentro de un
segmento se identifican por su desplazamiento, esto con respecto al inicio del
segmento.
Definición y aspectos generales
La segmentación de memoria es
un esquema de manejo de memoria mediante el cual la estructura del programa
refleja su división lógica. Llevándose a cabo una agrupación lógica de la
información en bloques de tamaño variable denominados segmentos, cada uno de
ellos tienen información lógica del programa:
Subrutina, arreglo, etc.
Después cada espacio de
direcciones de programa consiste de una colección de segmentos, que
generalmente reflejan la división lógica del programa, este sistema de gestión
de memoria es utilizado en sistemas operativos avanzados, pero ya existían
muestras de su actividad desde los S.O. UNIX y D.O.S
Objetivos alcanzados con la segmentación de memoria
Modularidad de programas: Cada rutina del programa puede ser
un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.
Estructuras
de datos de largo variable: Donde cada estructura tiene su propio
tamaño y este puede variar.
(stack)
Protección: Se puede proteger los módulos del segmento contra
accesos no autorizados.
Compartición: Dos o más procesos pueden ser un mismo segmento,
bajo reglas de protección; aunque no sean propietarios de los mismos.
Enlace
dinámico entre segmentos: Puede evitarse realizar todo el proceso de
enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán
solo cuando sea necesario.
La segmentación paginada ayuda
al proceso de gestión de memoria, puede hacerse una combinación de segmentación
y paginación para obtener las ventajas de ambas.
Cada segmento puede ser
descrito por su propia tabla de páginas.
Los
segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que
todas las páginas se encuentren en memoria principal a la vez; además las
páginas de un mismo segmento, aunque se encuentren contiguas en memoria
virtual, no necesitan estarlo en memoria real.
La
segmentación paginada tiene su propio esquema, las páginas de almacenamiento
virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas
en el almacenamiento real.
El
direccionamiento es tridimensional con una dirección de almacenamiento virtual
“v=(s,p,d)”. S= núm.. segmento , P= num.pag.
D= desplazamiento
Compartición de
segmentos
En
un sistema de segmentación, una vez que un segmento ha sido declarado como
compartido, entonces las estructuras que lo integran pueden cambiar de tamaño. Dos
procesos pueden compartir un segmento con solo tener entradas en sus tablas
generales que apunten al mismo segmento del almacenamiento primario.
LAS VENTAJAS DE LA
SEGMENTACIÓN
-
El
programador puede conocer las unidades lógicas de su programa, dándoles un
tratamiento particular.
-
Es
posible compilar módulos separados como segmentos, el enlace entre los
segmentos puede suponer hasta tanto se haga una referencia entre segmentos.
-
Es
fácil el compartir segmentos.
-
Es
posible que los segmentos crezcan dinámicamente según las necesidades del
programa en ejecución.
LAS DESVENTAJAS DE
LA SEGMENTACIÓN
-
Hay un incremento en los costos de hardware y de
software para llevar a cabo la implantación, así como un mayor consumo de
recursos: memoria, tiempo de CPU, etc.
-
Debido a que los segmentos tienen un tamaño
variable se pueden presentar problemas de fragmentación externas, lo que puede
ameritar un plan de reubicación de segmentos en memoria principal.
SEGMENTOS
DE MEMORIA
El segmento de
código (tiene
como base el contenido del registro CS).En este segmento se encuentran las
instrucciones que forman el programa. Para acceder a los datos contenidos en
él, se usa el registro IP como desplazamiento.
El segmento de
datos (que tiene
como base el registro DS). Contiene los datos que utiliza el programa
(variables, etc.) para acceder a los datos contenidos en él, se suele utilizar
los registros SI y DI como desplazamiento.
El segmento de pila (con SS como base). En él se
desarrolla la pila del programa, utilizada para almacén temporal de datos, llamadas
a funciones, etc. Debe estar presente en todos los programas EXE de forma
obligada. Se utiliza el registro SP para acceder a los datos de este segmento.
El segmento extra (con ES como base). Su uso es
opcional, y en él se encuentra un segmento definido por el usuario y que,
regularmente, contiene datos adicionales. Al igual que ocurre con el segmento
de datos, para acceder a los datos contenidos en él, se suelen utilizar los
registros SI y DI.
Links de ayuda...
http://es.slideshare.net/veronikam/presentacion-fso
http://labvirtual.webs.upv.es/Applets/GAndreu/Objeto_Fijas_Multiples_colas/memoria_particiones1.jpg
http://sistemasoperativos-memoria.blogspot.com.co/2013/05/particiones-fijas-y-dinamicas.html
https://noridappr89.wordpress.com/2013/05/21/segunda-exposicion-particiones-fijas-y-dinamicas/
http://es.slideshare.net/veronikam/presentacion-fso
http://sistop.gwolf.org/laminas/11-asignacion-memoria.pdf
http://www3.uji.es/~redondo/so/capitulo4_IS11.pdf
http://gmpri.blogspot.com.co/p/fragmentacion.html
http://es.slideshare.net/fer100690/aignacin-de-memoria-con-particiones-dinmicas
http://sistemasoperativos-memoria.blogspot.com.co/2013/05/particiones-fijas-y-dinamicas.html
https://www.youtube.com/watch?v=XiDZ21-KHWA
http://es.scribd.com/doc/58833109/particion-dinamica#scribd
http://www.itlalaguna.edu.mx/academico/carreras/sistemas/sitemasoperativos2/Admin_memoria.html
http://es.slideshare.net/natalialuva/paginacin-segmentacin-y-fragmentacin
http://www.dc.fi.udc.es/~so-grado/SO-Memoria.pdf
http://es.slideshare.net/menes21/paginacion-y-segmentacion-de-memoria