Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proteccin
Cada proceso debe protegerse contra interferencias no deseadas por parte de
otros procesos, sean accidentales o intencionadas. Por tanto, los programas de
otros procesos no deben ser capaces de referenciar sin permiso posiciones de
memoria de un proceso, tanto en modo lectura como escritura. Por un lado, lograr
los requisitos de la reubicacin incrementa la dificultad de satisfacer los requisitos
de proteccin.
Ms an, la mayora de los lenguajes de programacin permite el clculo dinmico
de direcciones en tiempo de ejecucin (por ejemplo, calculando un ndice de
posicin en un vector o un puntero a una estructura de datos). Por tanto, todas las
referencias de memoria generadas por un proceso deben comprobarse en tiempo
de ejecucin para poder asegurar que se refieren slo al espacio de memoria
asignado a dicho proceso. Sin un trato especial, un programa de un proceso no
puede acceder al rea de datos de otro proceso. El procesador debe ser capaz de
abortar tales instrucciones en el punto de ejecucin.
Comparticin
Cualquier mecanismo de proteccin debe tener la flexibilidad de permitir a varios
procesos acceder a la misma porcin de memoria principal. Por ejemplo, si varios
programas estn ejecutando el mismo programa, es ventajoso permitir que cada
proceso pueda acceder a la misma copia del programa en lugar de tener su propia
Existen dos dificultades con el uso de las particiones fijas del mismo
tamao:
Un programa podra ser demasiado grande para caber en una particin.
En este caso, el programador debe disear el programa con el uso de
overlays, de forma que slo se necesite una porcin del programa en
memoria principal en un momento determinado.
La utilizacin de la memoria principal es extremadamente ineficiente.
Cualquier programa, sin importar lo pequeo que sea, ocupa una
particin entera
b) nica
Cola
B) Particionamiento Dinmico
Con particionamiento dinmico, las particiones son de longitud y nmero variable.
Cuando se lleva un proceso a la memoria principal, se le asigna exactamente
tanta memoria como requiera y noms.
Un ejemplo, que utiliza 64 Mbytes de memoria principal, se muestra en la Figura
7.4. Inicialmente, la memoria principal est vaca, excepto por el sistema operativo
(a). Los primeros tres procesos se cargan justo donde el sistema operativo finaliza
y ocupando el espacio justo para cada proceso (b, c, d). Esto deja un hueco al
final de la memoria que es demasiado pequeo para un cuarto proceso.
En algn momento, ninguno de los procesos que se encuentran en memoria est
disponible. El sistema operativo lleva el proceso 2 al disco (e), que deja suficiente
espacio para cargar un nuevo proceso, el proceso 4 (f). Debido a que el proceso 4
es ms pequeo que el proceso 2, se crea otro pequeo hueco. Posteriormente,
se alcanza un punto en el cual ninguno de los procesos de la memoria principal
est listo, pero el proceso 2, en estado Listo-Suspendido, est disponible. Porque
no hay espacio suficiente en la memoria para el proceso 2, el sistema operativo
lleva a disco el proceso 1 (g) y lleva a la memoria el proceso 2 (h).Como muestra
este ejemplo, el mtodo comienza correctamente, pero finalmente lleva a una
situacin en la cual existen muchos huecos pequeos en la memoria. A medida
que pasa el tiempo, la memoria se fragmenta cada vez ms y la utilizacin de la
memoria se decrementa. Este fenmeno se conoce como fragmentacin externa
D) Reubicacin
La Figura 7.8 muestra la forma en la que se realiza normalmente esta traduccin
de direcciones.
Cuando un proceso se asigna al estado Ejecutando, un registro especial del
procesador, algunas veces llamado registro base, carga la direccin inicial del
programa en la memoria principal. Existe tambin un registro valla, que indica el
final de la ubicacin del programa; estos valores se establecen cuando el
programa se carga en la memoria o cuando la imagen del proceso se lleva a la
memoria. A largo de la ejecucin del proceso, se encuentran direcciones relativas.
stas incluyen los contenidos del registro de las instrucciones, las direcciones de
instrucciones que ocurren en los saltos e instrucciones call, y direcciones de datos
existentes en instrucciones de carga y almacenamiento. El procesador manipula
cada direccin relativa, a travs de dos pasos. Primero, el valor del registro base
se suma a la direccin relativa para producir una direccin absoluta. Segundo, la
direccin resultante se compara con el valor del registro valla. Si la direccin se
encuentra dentro de los lmites, entonces se puede llevar a cabo la ejecucin de la
instruccin. En otro caso, se genera una interrupcin, que debe manejar el sistema
operativo de algn modo.
El esquema de la Figura 7.8 permite que se traigan a memoria los programas y
que se lleven a disco, a lo largo de la ejecucin. Tambin proporciona una medida
de proteccin: cada imagen del proceso est aislada mediante los contenidos de
los registros base y valla. Adems, evita accesos no autorizados por parte de otros
procesos.
E) Paginacin
Tanto las particiones de tamao fijo como variable son ineficientes en el uso de la
memoria; los primeros provocan fragmentacin interna, los ltimos fragmentacin
externa. Supngase, sin embargo, que la memoria principal se divide en porciones
de tamao fijo relativamente pequeos, y que cada proceso tambin se divide en
porciones pequeas del mismo tamao fijo. A dichas porciones del proceso,
conocidas como pginas, se les asigna porciones disponibles de memoria,
conocidas como marcos, o marcos de pginas. Esta seccin muestra que el
espacio de memoria malgastado por cada proceso debido a la fragmentacin
interna corresponde slo a una fraccin de la ltima pgina de un proceso. No
existe fragmentacin externa.
La Figura 7.9 ilustra el uso de pginas y marcos. En un momento dado, algunos
de los marcos de la memoria estn en uso y algunos estn libres. El sistema
operativo mantiene una lista de marcos libres. El proceso A, almacenado en disco,
est formado por cuatro pginas. En el momento de cargar este proceso, el
sistema operativo encuentra cuatro marcos libres y carga las cuatro pginas del
proceso A en dichos marcos (Figura 7.9b). El proceso B, formado por tres pginas,
y el proceso C, formado por cuatro pginas, se cargan a continuacin. En ese
momento, el proceso B se suspende y deja la memoria principal. Posteriormente,
todos los procesos de la memoria principal se bloquean, y el sistema operativo
necesita traer un nuevo proceso, el proceso D, que est formado por cinco
pginas.
Ahora supngase, como en este ejemplo, que no hay suficientes marcos contiguos
sin utilizar para ubicar un proceso. Esto evitara que el sistema operativo cargara
el proceso D? La respuesta es no, porque una vez ms se puede utilizar el
concepto de direccin lgica. Un registro base sencillo de direcciones no basta en
esta ocasin. En su lugar, el sistema operativo mantiene una tabla de pginas por
cada proceso. La tabla de pginas muestra la ubicacin del marco por cada
pgina del proceso. Dentro del programa, cada direccin lgica est formada por
un nmero de pgina y un desplazamiento dentro de la pgina. Es importante
recordar que en el caso de una particin simple, una direccin lgica es la
ubicacin de una palabra relativa al comienzo del programa; el procesador la
traduce en una direccin fsica
F) Segmentacin
Un programa de usuario se puede subdividir utilizando segmentacin, en la cual el
programa y sus datos asociados se dividen en un nmero de segmentos. No se
requiere que todos los programas sean de la misma longitud, aunque hay una
longitud mxima de segmento. Como en el caso de la paginacin, una direccin
lgica utilizando segmentacin est compuesta por dos partes, en este caso un
nmero de segmento y un desplazamiento.
Debido al uso de segmentos de distinto tamao, la segmentacin es similar al
particionamiento dinmico. En la ausencia de un esquema de overlays o el uso de
la memoria virtual, se necesitara que todos los segmentos de un programa se
cargaran en la memoria para su ejecucin. La diferencia, comparada con el
particionamiento dinmico, es que con la segmentacin un programa podra
ocupar ms de una particin, y estas particiones no necesitan ser contiguas. La
segmentacin elimina la fragmentacin interna pero, al igual que el
particionamiento dinmico, sufre de fragmentacin externa.
Sin embargo, debido a que el proceso se divide en varias piezas ms pequeas, la
fragmentacin externa debera ser menor.
DESFRAGMENTACION
Fragmentacin[editar]
Fragmentacin interna[editar]
La fragmentacin interna es la prdida de espacio en disco debido al hecho de que el tamao
de un determinado archivo sea inferior al tamao del clster, ya que tericamente el archivo
estara obligado a ser referenciado como un clster completo. Los clsteres son contiguos de
forma que desde el ltimo bit del archivo situado en el clster "a" hasta el primer bit del archivo
situado en el clster contiguo (es decir "b") queda un espacio sobrante siempre teniendo la
condicin de que el archivo del clster "a" fuera ms pequeo que el clster en s.
Por eso se sugiere no disponer de un gran tamao de particin en los discos nuevos donde la
capacidad es muy importante. Por ejemplo si nuestro clster es de 18KB (18.432 bytes) por
ms que un archivo ocupe menos, en nuestro disco ocupara 18KB. Esto sugiere una prdida
de ese espacio que dice utilizar pero no utiliza.
Por eso, en nuestro ejemplo, un archivo de 3KB ocupara en nuestro disco lo mismo que uno
de 10KB, o sea 18 KB. Esa prdida de espacio se denomina fragmentacin interna, y no se
corrige con el desfragmentador, sino disminuyendo el tamao del clster, algo que
habitualmente los usuarios solo pueden conseguir creando particiones ms pequeas.
Fragmentacin externa[editar]
Este tipo de fragmentacin aparece como consecuencia de las distintas polticas de ajuste de
bloques que tiene un sistema de ficheros, o al utilizar asignaciones dinmicas de bloques en el
caso de la memoria. En el sistema de ficheros, la sucesiva creacin y eliminacin de ficheros
de distintos tamaos puede conducir al aislamiento de los bloques libres de un disco y,
dependiendo de la poltica de ajuste, su no eleccin para futuros ficheros.
En la memoria del sistema la fragmentacin se produce cuando los procesos asignados han
ocupado posiciones no contiguas de memoria dejando demasiados bloques libres de pequeo
tamao, en los que no "caben" nuevos procesos.
En sistemas de ficheros la desfragmentacin trata de resolver este problema, alineando los
bloques de datos contiguos y juntando los bloques libres, produciendo as fragmentos
mayores que s sern elegidos para futuros ficheros. En la memoria principal se soluciona
compactando los procesos para que estos ocupen posiciones contiguas y dejar los bloques
libres juntos, o tambin se soluciona con la paginacin de memoria.
Desfragmentacin[editar]
Este proceso consiste en ordenar los trozos de informacin distribuida a travs de todo el
disco, para mejorar la velocidad de acceso y distribuir de mejor forma el espacio libre del
dispositivo. Como este proceso consiste en la reorganizacin de partes de archivos, requiere
de suficiente memoria para realizar los movimientos de los trozos de informacin. Al mover en
forma fsica la informacin, la estructura lgica no sufre alteraciones.
Aspectos de la desfragmentacin[editar]
En Windows la presencia de archivos inamovibles del sistema, o que el desfragmentador no
mover para simplificar su tarea (sobre todo con el archivo de intercambio, o swap file), puede
impedir un buen porcentaje de desfragmentacin en el disco.
Ciertos sistemas de archivos son ms susceptibles a cambios por desfragmentacin que
otros. Por ejemplo, una particin del tipo FAT se fragmenta ms rpido que una de particin
del tipo NTFS (Windows), EXT 4 (Linux) o HFS + (MacOSX).[cita requerida]
Contramedidas comunes[editar]
Particionado
Una estrategia comn para optimizar la desfragmentacin y reducir el impacto de la
fragmentacin es particionar el/los disco(s) duro(s) para separar las particiones del sistema de
archivos que experimentan muchas ms lecturas y escrituras, de las zonas ms voltiles,
donde se crean y borran frecuentemente los archivos. En Windows de Microsoft, el contenido
de directorios tales como "\Archivos de programas" o "\Windows" se modifica con mucha
menor frecuencia que la de sus lecturas. Los directorios que contienen los perfiles de los
usuarios se modifican constantemente (especialmente el directorio Temp y
el cache del Explorador de Internet, que crea miles de archivos que se borran en unos cuantos
das). Si los archivos de los perfiles de los usuarios se mantienen en una particin dedicada
(como se hace comnmente en los sistemas UNIX), el desfragmentador funciona mejor, pues
no tiene que tratar con todos los archivos estticos de los otros directorios. En las particiones
con relativamente poca actividad, el rendimiento de la desfragmentacin mejora grandemente
despus de la primera de ellas, pues en el futuro el desfragmentador slo tendr que
desfragmentar un pequeo nmero de nuevos archivos.
Problemas[editar]
Archivos inamovibles[editar]
La presencia de archivos de sistema inamovibles, especialmente un archivo de intercambio,
puede dificultar la desfragmentacin. Estos archivos se pueden mover con seguridad cuando
el sistema operativo no est funcionando. Por ejemplo, ntfsresize mueve estos archivos para
cambiar el tamao de una particin NTFS.
Crecimiento de la fragmentacin[editar]
En sistemas sin resistencia a la fragmentacin, sta crece por s misma si no se hace nada,
as que es necesaria la desfragmentacin peridica para mantener el rendimiento del disco al
mximo y evitar la sobrecarga de desfragmentaciones menos frecuentes.