• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Trabajo tema 6 memoria
 

Trabajo tema 6 memoria

on

  • 802 views

 

Statistics

Views

Total Views
802
Views on SlideShare
796
Embed Views
6

Actions

Likes
0
Downloads
10
Comments
0

2 Embeds 6

http://avso.unlugar.com 4
http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Trabajo tema 6 memoria Trabajo tema 6 memoria Document Transcript

    • Presentación Sustentantes: Nombre: Matricula: Diomaris Beltre………………..100011217 Julissa Céspedes……………..AA-4369 Juan Vidal………………………CC-5863 Jhojan Abreu…………………...DC-5556 Sergio Florentino………………DC-3651 IntroducciónLa parte del sistema operativo que se encarga de facilitar los procesos ya sea enejecución o en compilación se llama memoria y su labor consiste en mantener un registrode los programas para facilitar su acceso. Estos registros son almacenados gracias alproceso de gestión de memoria el cual se encarga de asignar espacio en memoria a losprocesos cuando éstos la necesiten y liberándola cuando terminen, así como administrarel intercambio entre la memoria principal y el disco en los casos en los que la memoriaprincipal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella.Definición de MemoriaSon dispositivos que retienen datos informáticos durante algún intervalo de tiempo.Memoria ROMRead Only Memory.Almacena en forma permanente los microprogramas que realizan las funciones primariasde la PC.Memoria Principal o RAMLa memoria principal o primaria (MP), también llamada memoria central, es una unidaddividida en celdas que se identifican mediante una dirección. Está formada por bloquesde circuitos integrados o chips capaces de almacenar, retener o "memorizar" informacióndigital, es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de lacomputadora.La MP se comunica con el microprocesador de la CPU mediante el bus de direcciones. Elancho de este bus determina la capacidad que posea el microprocesador para eldireccionamiento de direcciones en memoria.En un sistema monoprogramado, la memoria principal se divide en dos partes: una partepara el sistema operativo (monitor residente, núcleo) y otra parte para el programa que seejecuta en ese instante. En un sistema multiprogramado, la parte de “usuario” de la
    • memoria debe subdividirse aun más para hacer sitio a varios procesos. La tarea desubdivisiones la lleva a cabo el sistema operativo y se conoce como gestión de memoria.  Gestión de memoriaSea cual sea la política de gestión de memoria empleada en un determinado sistema, sepueden destacar las siguientes características como objetivos deseables del sistema degestión de memoria:Espacios lógicos independientes. En un sistema operativo multiprogramado depropósito general no se puede conocer a priori la posición de memoria que ocupará unprograma cuando se cargue en memoria para proceder a su ejecución, puesto quedependerá del estado de ocupación de la memoria, pudiendo variar, por tanto, ensucesivas ejecuciones del mismo.Protección. En un sistema con monoprogramación es necesario proteger al sistemaoperativo de los accesos que realiza el programa en ejecución para evitar que, voluntariao involuntariamente, pueda interferir en el correcto funcionamiento del mismo. Todos losusuarios que han trabajado en un sistema que no cumple este requisito de protección,como por ejemplo MS-DOS, han experimentado cómo un error de programación en unaaplicación puede causar que todo el sistema se colapse durante la ejecución de la mismaal producirse una alteración imprevista del código o las estructuras de datos del sistemaoperativo.En un sistema con multiprogramación el problema se acentúa ya que no sólo hay queproteger al sistema operativo sino también a los procesos entre sí. El mecanismo deprotección en este tipo de sistemas necesita del apoyo del hardware puesto que esnecesario validar cada una de las direcciones que genera un programa en tiempo deejecución. Este mecanismo está típicamente integrado en el mecanismo de traducción: lafunción de traducción debe asegurar que los espacios lógicos de los procesos seandisjuntos entre sí y con el del propio sistema operativo.Compartimento de memoria. Para cumplir el requisito de protección, el sistemaoperativo debe crear espacios lógicos independientes y disjuntos para los procesos. Sinembargo, en ciertas situaciones, bajo la supervisión y control del sistema operativo,puede ser provechoso que los procesos puedan compartir memoria. Esto es, la posibilidadde que direcciones lógicas de dos o más procesos, posiblemente distintas entre sí, secorrespondan con la misma dirección física.Soporte de las regiones del proceso. Dado que el sistema operativo conoce qué lasregiones incluye el mapa de memoria de cada proceso, el gestor de memoria con el apoyodel hardware debería dar soporte a las características específicas de cada región.Maximizar el rendimiento. El gestor de memoria debe, por tanto, realizar un reparto dela memoria entre los procesos intentando que quepa el mayor número de ellos enmemoria y minimizando el desperdicio inherente al reparto. Para ello, debe establecerseuna política de asignación adecuada.Mapas de memoria muy grandes para los procesos. En los tiempos en los que lamemoria era muy cara y, en consecuencia, los equipos poseían una memoria bastantereducida, se producían habitualmente situaciones en las que las aplicaciones se veíanlimitadas por el tamaño de la memoria. Para solventar este problema, los programadoresusaban la técnica de los overlays (el programador divide lógicamente un programa muygrande en secciones que puedan almacenarse el las particiones de RAM). Esta técnicaconsiste en dividir el programa en una serie de fases que se ejecutan sucesivamente, pero
    • estando en cada momento residente en memoria sólo una fase. Cada fase se programa demanera que, después de realizar su labor, carga en memoria la siguiente fase y le cede elcontrol. Es evidente que esta técnica no soluciona el problema de forma general dejandoen manos del programador todo el trabajo.Gestión de memoria • Espacios lógicos independientes. • Protección. • Compartimento de memoria. • Soporte de las regiones del proceso. • Maximizar el rendimiento. • Mapas de memoria muy grandes para los procesosInstrucciones de un Proceso Cargado en Memoria 1. Referencias a datos empleados. 2. Referencias a otras instrucciones empleadasTipos de Direcciones 1. Dirección lógica o virtual. 2. Dirección física o absoluta.ReubicaciónEl termino reubicación de programa se refiere a la capacidad de cargar y ejecutar unprograma determinado en una posición arbitraria de memoria en contraposición a unconjunto fijo de posiciones especificadas durante la compilación de dicho programa. Lasinstrucciones de un proceso cargado en memoria contendrían referencias a posiciones dememoria de dos tipos:1. Referencias a datos empleados en instrucciones de carga, almacenamiento y algunasinstrucciones aritmético-lógicas.2. Referencias a otras instrucciones empleadas fundamentalmente en bifurcaciones decontrol de flujo o en instrucciones de llamadas.Ambos tipos de direcciones no serian fijas durante todo el periodo de permanencia delproceso en el sistema, sino que pueden variar si el proceso es suspendido y cargadoposteriormente en memoria o, simplemente, si es desplazado dentro de esta.Distinguiremos, pues, entre dos tipos de direcciones:1. Una dirección lógica o virtual es un identificador utilizado para referenciarinformación dentro del espacio de direcciones de un programa y, por tanto, es
    • independiente de la asignación actual de datos a memoria debiéndose realizar unatraduccion a dirección fısica antes de poder realizar un acceso a memoria.2. Una dirección fısica o absoluta designa una posición real de memoria fısica dondese almacena información en tiempo de ejecución.Dependiendo de como y cuando tenga lugar la traduccion del espacio de direccionesvirtuales al espacio de direcciones fısicas en un esquema de reubicacion determinado,pueden considerarse dos tipos básicos de estrategias: Reubicación estática y reubicaciondinámica.Reubicación estática Implica generalmente que la reubicacion es realizada antes odurante la carga del proceso en memoria. Las constantes (valores literales), losdesplazamientos relativos al PC, no dependen de esta condición y no necesitan serajustados durante la reubicación.Reubicación dinámica Implica que la correspondencia entre el espacio de direccionesvirtuales y el espacio de direcciones fısicas se efectúa en tiempo de ejecución.Usualmente con asistencia del hardware. Cuando el proceso en cuestión esta siendoejecutado, todas sus referencias a memoria son reubicadas durante la ejecución antesde acceder realmente a la memoria fısica. Este proceso se suele implementar pormedio de registros base especializados.A continuación veremos el mecanismo hardware que posibilita tanto la reubicacióndinámica como la protección. Esta ultima consiste en impedir el acceso de un proceso aun espacio de direcciones que no le corresponde.El registro base contiene la dirección de carga del proceso y el registro lımite contiene laúltima dirección correspondiente al espacio de memoria asignado al proceso.
    • Asignación de memoria con particiones fijasEn la mayorıa de los esquemas de gestión de memoria se puede suponer que el SO ocupauna parte de la memoria principal y que el resto de la memoria esta disponible para serutilizada por los procesos de usuario. El esquema mas sencillo de gestión de la memoriaes dividirla en regiones con lımites fijos. Una posibilidad es emplear particiones fijas deigual tamaño, en este caso cualquier proceso con tamaño menor o igual al tamaño de lapartición puede cargarse en cualquier partición libre, si todas las particiones estánocupadas el SO puede sacar un proceso de alguna de ellas y cargar otro. La utilización departiciones fijas plantea dos dificultades: 1. Un programa puede ser demasiado grande para caber en una partición, en ese caso el programador debe diseñar el programa mediante superposiciones para que solo una parte del programa estañe en memoria principal en cada instante. Cuando se necesita un modulo que no esa presente el programa de usuario debe cargar dicho modulo en la partición del programa superponiéndolo a los programas y datos que se encuentren en el. 2. El uso de la memoria principal es extremadamente ineficiente, ya que cualquier programa sin importar lo pequeño que sea ocuparía una partición completa. Este fenómeno donde se desperdician espacio interno de una partición porque el bloque de proceso que es más pequeño que ella se denomina fragmentación interna.Con particiones del mismo tamaño la ubicación de un proceso en memoria resulta trivial.Puesto que todas las particiones son de igual tamaño no importa que partición se utilice yse elegiría siempre la primera libre que se encuentre. Los problemas que presenta el usode particiones fijas de igual tamaño pueden reducirse aunque no solventarse por mediodel uso de particiones de distintos tamaños. El uso de estas particiones proporciona uncierto grado de flexibilidad a las particiones fijas, además ambos tipos de esquema departición fija son relativamente simples y exigen un software de SO y una sobrecarga deproceso mínimos.Con particiones de distinto tamaño hay dos maneras posibles de asignar los procesos a lasparticiones: 1. La forma más simple es asignar cada proceso a la partición más pequeña en la que quepa, en este caso hace falta una cola de planificación para cada partición. Esta cola albergaría a los procesos cuyo destino es dicha partición. La ventaja de este enfoque es que los procesos se asignan de una forma en la que se desperdicia el menor espacio de memoria posible, sin embargo aunque esta técnica parec optima desde el punto de vista de una partición individual no lo es desde el punto de vista del sistema global ya que puede darse la situación de que existan particiones sin utilizar que podrıan ser aprovechadas por procesos que esperan en las colas de planificación de las particiones a las que han sido asignados.
    • 2. Consiste en seleccionar la partición más pequeña disponible que pueda albergar al proceso.La utilización de particiones fijas ya sean de igual o distintos tamaños plantea lossiguientes problemas: • El número de particiones especificadas en el momento de la generación del sistema limita el número de procesos activos en dicho sistema. • Puesto que los tamaños de partición se programan en el momento de la generación del sistema los trabajos pequeños no hacen un uso eficiente del espacio de las particiones en un entorno en el que los requisitos básicos de almacenamiento de todos los procesos se conocen de antemano puede ser una técnica razonable, pero en la mayorıa de los casos es ineficiente.Asignación de memoria con particiones dinámicasEn este esquema las particiones van a ser variables en número y longitud. Cuando se traeun proceso a memoria se le asigna exactamente tanta memoria como necesita y no mas.Como muestra este ejemplo, a medida que pasa el tiempo, la memoria empieza a estarfragmentada y el rendimiento decae. A este fenómeno se le denomina fragmentaciónexterna y se refiere al hecho de que la memoria externa a todas las particiones sefragmenta cada vez más. Una técnica para superar esta fragmentación es lacompactación o desfragmentación que consiste en desplazar los procesos para que esténcontiguos de forma que toda la memoria libre esté junta en un bloque. La compactaciónrequiere además la capacidad de reubicación dinámica, es decir, se debe poder mover unproceso de una región a otra de memoria principal sin invalidar sus referencias amemoria.A la hora de ubicar procesos en memoria atañe al diseñador del SO decidir como se va allevar a cabo esta ubicación. Los tres algoritmos que se pueden considerar son:
    • 1. El Mejor Ajuste (Best Fit): Lo que se hace es elegir el bloque con tamaño más parecido al solicitado. 2. El Primer Ajuste (First Fit): Se recorre la memoria desde el principio y se escoge el primer bloque disponible que sea suficientemente grande. 3. El Siguiente Ajuste (Next Fit): Es similar a El Primer Ajuste pero se recorre la memoria desde el lugar de la última ubicación.La FragmentaciónLa fragmentación es la memoria que queda desperdiciada al usar los métodos de gestiónde memoria.La fragmentación es generada cuando durante el reemplazo de procesos quedan huecosentre dos o más procesos de manera no contigua y cada hueco no es capaz de soportarningún proceso de la lista de espera. Tal vez en conjunto si sea espacio suficiente, pero serequeriría de un proceso de desfragmentación de memoria o compactación para lograrlo.Esta fragmentación se denomina fragmentación externa.Existe otro tipo de fragmentación conocida como fragmentación interna, la cual esgenerada cuando se reserva más memoria de la que el proceso va realmente a usar. Sinembargo a diferencia de la externa, estos huecos no se pueden compactar para serutilizados. Se debe de esperar a la finalización del proceso para que se libere el bloquecompleto de la memoria.  Fragmentación InternaLa fragmentación interna es la pérdida de espacio en disco debido al hecho de que eltamaño de un determinado archivo sea inferior al tamaño del clúster, ya que teóricamenteel archivo estaría obligado a ser referenciado como un clúster completo. Los clúster(s)son contiguos de forma que desde el último bit del archivo situado en el clúster "a" hastael primer bit del archivo situado en el clúster contiguo (es decir "b") queda un espaciosobrante siempre teniendo la condición de que el archivo del clúster "a" fuera máspequeño que el clúster en sí.Por eso se sugiere no disponer de un gran tamaño de partición en los discos nuevos dondela capacidad es muy importante. Por ejemplo si nuestro clúster es de 18KB (18.432 bytes)por más que un archivo ocupe menos, en nuestro disco ocupara 18KB. Esto sugiere unapérdida de ese espacio que dice utilizar pero no utiliza.Por eso, en nuestro ejemplo, un archivo de 3KB ocupara en nuestro disco lo mismo queuno de 10KB, o sea 18 KB. Esa pérdida de espacio se denomina fragmentación interna, yno se corrige con el desfragmentador, sino disminuyendo el tamaño de la partición.  Fragmentación Externa
    • Este tipo de fragmentación aparece como consecuencia de las distintas políticas de ajustede bloques que tiene un sistema de ficheros, o al utilizar asignaciones dinámicas debloques en el caso de la memoria. En el sistema de ficheros, la sucesiva creación yeliminación de ficheros de distintos tamaños puede conducir al aislamiento de los bloqueslibres de un disco y, dependiendo de la política de ajuste, su no elección para futurosficheros.En la memoria del sistema la fragmentación se produce cuando los procesos asignadoshan ocupado posiciones no contiguas de memoria dejando demasiados bloques libres depequeño tamaño, en los que no "caben" nuevos procesos.En sistemas de ficheros la desfragmentación trata de resolver este problema, alineandolos bloques de datos contiguos y juntando los bloques libres, produciendo así fragmentosmayores que sí serán elegidos para futuros ficheros. En la memoria principal se solucionacompactando los procesos para que estos ocupen posiciones contiguas y dejar los bloqueslibres juntos, o también se soluciona con la paginación de memoria.DesfragmentaciónLa desfragmentación es el proceso mediante el cual se acomodan los archivos de un discode tal manera que cada uno quede en un área contigua y sin espacios sin usar entre ellos.Al irse escribiendo y borrando archivos continuamente en el disco duro, éstos tienden ano quedar en áreas contiguas, así, un archivo puede quedar "partido" en muchos pedazosa lo largo del disco, se dice entonces que el archivo está "fragmentado". Al tener losarchivos esparcidos por el disco, se vuelve ineficiente el acceso a ellos.Las técnicas utilizadas por el desfragmentador son los siguientes:
    • 1. Mover todos los índices o información del directorio a un solo lugar. Trasladar este lugar al el centro de los datos, es decir, a un tercio espacio del total, por lo que el promedio de traslado del cabezal en busca de datos se reduce a la mitad en comparación con tener la información de directorio en la parte delantera. 2. Mover los archivos poco usados lejos del área de directorio. 3. Admitir que el usuario indique qué archivos ignorar, y en cuáles hacer hincapié. 4. Hacer archivos contiguos para que puedan leerse sin búsquedas innecesarias.Memoria VirtualLa memoria virtual es una técnica que permite ejecutar procesos que no caben totalmenteen memoria RAM (memoria física). Esto propicia la creación de programas que sean másgrandes que la memoria física. Además, la memoria virtual ayuda a crear un esquema deabstracción de la memoria que la separa de la zona lógica que el usuario ve, esto facilitaenormemente la tarea a los programadores puesto que no se han de preocupar porlimitaciones de memoria.Los procedimientos de implementación de la memoria virtual se basan en que cuando seejecuta un programa, éste está parcialmente en memoria, es decir, sólo hay cargadaaquella zona de código y datos que se necesitan en ese instante de tiempo, y no elprograma completo. La memoria virtual es la separación entre la memoria lógicadisponible para el usuario y la memoria RAM, se implementa generalmente con elmétodo de paginación por demanda aunque también se puede implementar en un sistemacon segmentación.En el momento en que en el sistema empieza a escasear la memoria, se crea un ficheroSWAP (intercambio) en el disco que sirve como ampliación auxiliar de memoria. En elcaso de Windows, cuando tenemos muchas aplicaciones en funcionamiento y la memoriaRAM se agota, el sistema se apoya en el fichero SWAP para realizar movimientos desdeel disco duro a la RAM y viceversa. De ese modo crean espacios en memoria física parair ejecutando las órdenes. Esto, evidentemente, hace que el sistema vaya más lento.Todo ello permite simular la existencia de 4GB de RAM en el equipo, a pesar de quenadie dispone de 4GB en su ordenador (a excepción de algunos sistemas en empresas yuniversidades), y dar capacidad de ejecución a múltiples aplicaciones por grandes quesean.Está soportada por el mecanismo de traducción de memoria, junto con unalmacenamiento rápido en disco duro (swap).El espacio de direcciones virtual, está mapeado de tal forma que una pequeña parte de él,está en memoria real y el resto almacenado en el disco.
    • PaginaciónEl concepto de paginación aparece junto con el de memoria virtual, ¿que es eso? Estemétodo fue creado por Fotheringham y la idea básica es la siguiente.Cuando ejecutamos un programa este puede caber o no en la memoria física, si se da lasituación de que el proceso es mayor que la memoria, el SO se encarga de mantener enmemoria las partes del programa que estamos usando y el resto en el disco duro.ConclusionesAdministrar la memoria es una de las tareas más complejas que lleva a cabo el sistemaoperativo. La memoria es un recurso importante que debe ser cuidadosamente gestionado.La paginación es un esquema similar al de las particiones fija, con la ventaja de que unproceso puede ser cargado en más de una partición y en espacios de memoria nocontiguos, lo que reduce la fragmentación interna.Tanto en las particiones estáticas, como en la paginación, es necesario determinar eltamaño que tendrán los bloques de memoria.Sugerencias • Desfragmentar el disco periódicamente. • Es fundamental cerrar todas las aplicaciones abiertas antes de iniciar la desfragmentación. • Se recomienda iniciar el sistema en modo a prueba de errores a la hora de realizar la desfragmentación.ReferenciasLibro:Tanenbaum, Andrew S.(2003).Sistemas Operativos Modernos.Segunda Edici ó n.Web:SlideShareBase de Datos:Universidad de Granma