You are on page 1of 7

REPUBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR

INSTITUTO UNIVERSITARIO ANTONIO JOSE DE SUCRE

Integrante

Freddy Rosales

Barquisimeto, Julio 2018


La memoria virtual permite simular una memoria RAM de mayor tamaño que
la que tienes instalada en tu equipo. Es un mecanismo del cual se encarga el
sistema operativo. Su utilidad reside en que las aplicaciones y sus datos, para poder
ser usados por el procesador, tienen que pasar del disco duro, que es donde se
encuentra almacenado todo cuando apagas al equipo, a la memoria RAM que
puede ser accedida de forma directa por el micro. La memoria virtual es una técnica
para proporcionar la simulación de un espacio de memoria mucho mayor que la
memoria física de una máquina. Esta ilusión permite que los programas se hagan
sin tener en cuenta el tamaño exacto de la memoria física. La ilusión de la memoria
virtual esta soportada por el mecanismo de traducción de memoria, junto con una
gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento
el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña
parte de él está en memoria real y el resto almacenado en el disco, y puede ser
referenciado fácilmente.

Existen diferentes técnicas de administración o de gestión de memoria como son:

Memoria Virtual. Es un método que consiste en permitir que el tamaño conjunto del
programa y sus datos sea mayor que la cantidad de memoria física disponible. El
sistema operativo deja en memoria principal las partes del programa que se están
utilizando y el resto lo almacena en disco mediante una zona de intercambio o
archivo de intercambio, es decir, como un programa que se ubica en memoria puede
ser excesivamente grande para el tamaño físico de ésta permanece en memoria la
parte del programa que se está ejecutando, mientras el resto está en el disco. Esta
zona de intercambio en algunos sistemas operativos como UNIX y LINUX se llama
swap. Mediante esta técnica podemos utilizar el disco duro como memoria principal
y almacenar solamente las instrucciones y los datos utilizados por el procesador en
la memoria RAM. Esta operación produce una disminución considerable en el
rendimiento, dado que la velocidad de la memoria RAM es muy superior a la del
disco duro.
La paginación, es un método que consiste en dividir la memoria física en
zonas de tamaño fijo llamadas frames o tramas y los programas o espacio lógico
en partes del mismo tamaño llamadas páginas. Cuando varios usuarios están
ejecutando procesos en un mismo ordenador, éste se ve obligado a cargarlos en
RAM, según el estado en el que se encuentre el proceso de cada usuario, la
memoria se irá liberando o no. La transformación de las direcciones lógicas en
físicas la realiza la unidad de administración de memoria o Management Memory
Unite (MMU). El sistema operativo MS-DOS utiliza una técnica parecida a la
paginación. Cuando el espacio que precisa un programa es mayor que el que hay
en la memoria, el sistema operativo es el encargado de mantener en la RAM las
partes del programa que se están utilizando en cada momento, dividiendo
en páginaslos procesos y cogiendo las siguientes que necesita de
la paginación realizada en disco. Concluyendo, el espacio de direcciones virtuales
se divide en unidades llamadas páginas.

Las unidades de paginación que se guardan en el disco duro se


denominan marcos de página, y son idénticos en tamaño a las páginas de memoria.
El sistema operativo y la MMU realizan diversos algoritmos para toma de decisiones
de desalojo de páginas o marcos de página, basándose en conjuntos, que se
agrupan en función del estado de sus bits, R (solicitud) o M (modificación) y teniendo
cuatro posibles valores de agrupación:

La segmentación es una técnica similar a la paginación, pero definiendo los


bloques de memoria de tamaño variable. La información lógica del proceso se divide
en distintos bloques lógicos denominados segmentos, donde cada segmento tiene
información lógica del programa (datos y código) y de pila (stack). La principal
ventaja de la segmentación es que, como de cada segmento sabemos su tamaño,
podemos controlar mejor los errores.

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. Luego, cada espacio de direcciones de programa
consiste en una colección de segmentos, que generalmente reflejan la división
lógica del programa. Con el uso de segmentación se pretende alcanzar varios
objetivos, alguno de ellos es:

 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: cada estructura tiene su propio
tamaño y este puede variar.
 Protección: se puede proteger los módulos del segmento contra accesos no
autorizados.
 Compartición: los procesos pueden compartir 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.

Algunas de las ventajas que ofrece el esquema de segmentación son:

 La segmentación es normalmente visible al programador y se proporciona


como una utilidad para organizar programas y datos.
 Es posible compilar módulos separados como segmentos; el enlace entre los
segmentos puede suponer hasta tanto se haga una referencia entre
segmentos. Como consecuencia de esto, se hace más fácil la modificación
de estos. Los cambios dentro de un módulo no afectan al resto de los
módulos.
 Facilidad para compartir segmentos
 Es posible que los segmentos crezcan dinámicamente según las
necesidades del programa en ejecución.

Existe además la segmentación con paginación, también llamada MULTICS.


Cada programa MULTICS tiene una tabla de segmentos, con un descriptor por
segmento. Un descriptor de segmento contiene una indicación de si el segmento
está en la memoria principal o no. Una dirección en MULTICS consta de dos partes:
el segmento y la dirección dentro del segmento. La dirección dentro del segmento
se subdivide en un numero de página y una palabra dentro de la página.

Una dirección en MULTICS consiste en dos partes: el segmento y la dirección


dentro del segmento. (Tanenbaum, 2009) La dirección dentro del segmento se
divide aún más en un número de página y en una palabra dentro de la página.
Cuando ocurre una referencia memoria, se lleva a cabo el siguiente
algoritmo. (Tanenbaum, 2009)

Una memoria principal se compone de un conjunto de celdas básicas dotadas


de una determinada organización. Cada celda soporta un bit de información. Los
bits se agrupan en unidades direccionables denominadas palabras. La longitud de
palabra la determina el número de bits que la componen y constituye la resolución
de la memoria (mínima cantidad de información direccionable). La longitud de
palabra suele oscilar desde 8 bits (byte) hasta 64 bits. Desde un punto de vista
conceptual y con independencia de la tecnología, consideraremos la celda básica
de memoria como un bloque con tres líneas de entrada (entrada dato, selección y
lectura/escritura) y una de salida (salida dato). La celda sólo opera (lectura o
escritura) cuando la selección está activa.

El sistema operativo UNIX dispone de un conjunto de llamadas al sistema que


definen una poderosa interfaz para la programación de aplicaciones (API) que
involucren múltiples procesos; abriendo las puertas a la programación concurrente.
Este interfaz suministra al desarrollador de software herramientas tanto para la
creación, sincronización y comunicación de nuevos procesos, como la capacidad
de ejecutar nuevos programas. El kernel crea un nuevo proceso, proceso hijo,
realizando una copia (clonación) del proceso que realiza la llamada al
sistema fork (proceso padre). Así, salvo el PID y el PPID los dos procesos serán
inicialmente idénticos. De esta forma los nuevos procesos obtienen una copia de
los recursos del padre (heredan el entorno). Sin embargo, no se ejecuta ningún
nuevo programa, para conseguir esto, uno de los procesos ha de realizar otra
llamada al sistema, exec, para reinicializar (recubrir) sus segmentos de datos de
usuario e instrucciones a partir de un programa en disco. En este caso no aparece
ningún proceso nuevo. Por su parte la llamada al sistema exec permite remplazar
los segmentos de instrucciones y de datos de usuario por otros nuevos a partir de
un archivo ejecutable en disco, con lo que se consigue que un proceso deje de
ejecutar instrucciones de un programa y comience a ejecutar instrucciones de un
nuevo programa. exec no crea ningún proceso nuevo.

Se define una señal, como un mensaje enviado a un proceso determinado.


Este mensaje no es más que un número entero. Un proceso cuando recibe una
señal puede optar por tres posibles alternativas para procesarla:

 Ignorar la señal recibida.


 Ejecutar una acción por defecto.
 Ejecutar una acción determinada, especificada por el usuario en el propio
proceso.

Todas las señales tienen la misma prioridad. A diferencia de las


interrupciones Hardware, las señales se procesan siguiendo la filosofía FIFO (First
In First Out). Cuando una señal se envía a un proceso, se ejecuta el manejador
correspondiente, y mientras este manejador no termine su ejecución, ninguna otra
señal podrá ser recibida por el proceso anterior.

Algunas de las señales más comunes, utilizadas en UNIX son:

 SIGINT => Señal de interrupción: Enviada desde el terminal (teclado) por


medio de Ctrl+c.
 SIGQUIT => Enviada desde el terminal por el carácter quit (Ctrl+\). El
proceso activo termina produciendo un archivo core.
 SIGKILL => Mata un proceso.

El resto de señales están definidas en el archivo de cabecera /usr/include/signal.h

Para poder enviar una señal a otro proceso, es necesario realizar la llamada al
sistema kill(). Su formato o sintaxis es, (para una información más detallada
consultar el manual):

ret = kill (pid, sig)


donde:

 pid => Identificador del proceso al cual va dirigida la señal.


 sig => Señal enviada.
 ret => 0 (Éxito) 1 (Error)

La llamada al sistema pause(), provoca la suspensión de la ejecución del proceso,


hasta que se recibe una señal. Siempre retorna -1.

Se puede concluir entonces que en la memoria principal son ejecutados los


programas y procesos de una computadora y es el espacio real que existe en
memoria para que se ejecuten los procesos. La memoria virtual es aquella que les
ofrece a las aplicaciones la ilusión de que están solas en el sistema y que pueden
usar el espacio de direcciones completo.

Las direcciones de memoria son de tres tipos: físicas, lógicas y lineales.

El objetivo del intercambio es dar cabida a la ejecución de más aplicaciones de las


que pueden residir simultáneamente en la memoria del sistema. Las asignaciones
consisten en determinar cuál espacio vacío en la memoria principal es el más
indicado para ser asignado a un proceso.

Las estrategias más comunes para asignar espacios vacíos (huecos) son: primer
ajuste, mejor ajuste, peor ajuste.

La fragmentación es la memoria que queda desperdiciada al usar los métodos de


gestión de memoria tal como la asignación. Esta puede ser interna o externa.

La paginación es una técnica de gestión de memoria en la cual el espacio de


memoria se divide en secciones físicas de igual tamaño llamadas marcos de página,
las cuales sirven como unidad de almacenamiento de información.

La segmentación 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.

You might also like