Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sumario:
Aspectos introductorios.
Intercambio de trabajos. Solapamiento.
Multiprogramación con particiones fijas. Fragmentación interna.
Multiprogramación con particiones variables. Fragmentación externa.
Técnicas de asignación de memoria.
Paginado.
Segmentado.
Memoria virtual.
Bibliografía:
Aspectos Introductorios.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Dado que el cambio de contexto puede ser algo largo se podría afectar el tiempo
de espera de los usuarios o la eficiencia del sistema. Una solución consistiría en
utilizar el solapamiento. En este caso, se dividiría la memoria en 3 áreas: en la
primera estaría el trabajo que ya terminó y se está transfiriendo al dispositivo, en la
segunda el que se está ejecutando y hacia la tercera se estará transfiriendo el
próximo a atender.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Por supuesto que en este esquema, con varios procesos en memoria, requiere
también de un mecanismo de protección. Una alternativa es el uso de dos
registros, uno indicando la dirección inicial y otro la dirección final del proceso que
se está ejecutando en cada momento.
Otra alternativa es tener igualmente dos registros, uno que indique la dirección
inicial del proceso corriente (el que se está ejecutando) y el otro la longitud del
espacio asignado.
Una tercera alternativa fue la usada por la IBM/360. Aquí se dividió la memoria en
bloques de 2K y a cada uno se le asociaban 4 bits de protección. Cuando un
programa se cargaba en memoria a todos sus bloques se les daba el mismo
código. Un programa sólo podía acceder los bloques que tenían su código.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Una alternativa consiste en colocar todos los trabajos en una sola cola de entrada,
entonces, siempre que una partición esté libre se escoge uno de la cola que quepa
en el espacio de memoria. En este caso se pueden utilizar numerosas políticas de
planificación para la cola las que están explicadas en detalles en el libro de
Silberschatz.
El sistema OS/MFT combinaba las dos alternativas antes explicadas. Es decir, una
partición podía tener asociadas varias colas de entrada y también una cola de
entrada podía estar asociada a más de una partición.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Generalmente esta técnica no se utiliza ya que consume mucho tiempo de uso del
CPU.
El algoritmo más simple consiste en buscar el primer hueco que tenga una
longitud igual o mayor que el bloque necesario. Si el bloque libre es mayor que el
necesario entonces es dividido en dos, uno para ser ocupado y otro que
permanecerá libre. El algoritmo antes descrito se conoce como primer acceso
(“first fit” o “first access”). Esta técnica tiende a reducir el tamaño de los bloques al
inicio de la lista y por ello, con el tiempo, demorar las búsquedas.
Una ligera variación se puede lograr utilizando el algoritmo del próximo acceso
(“next fit” o “next access”), que comienza la búsqueda en el lugar donde se quedó
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Otro algoritmo bien conocido es el del mejor acceso (“best fit” o “best access”).
Este recorre toda la lista buscando el más pequeño de todos los que puedan
utilizarse. Esta técnica es más lenta (revisa toda la lista) y está demostrado que
tiende a generar huecos muy pequeños que después no pueden ser utilizados. Al
utilizarse este algoritmo resulta más conveniente tener ordenada la lista de huecos
por longitud que por direcciones.
Para solventar la dificultad antes indicada se puede hacer uso del peor
acceso (“worse fit” o “worse access”) que consiste en buscar el hueco
mayor. Simulaciones realizadas demuestran que no es una buena idea.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Cuando un proceso termina se libera el bloque que ocupaba. Como la lista está
ordenada ascendentemente por direcciones es fácil conocer si algunos de los
bloques vecinos (el anterior, el posterior o ambos) es un hueco. Si esto ocurriera,
entonces deben unirse en un solo bloque libre.
Para aumentar la velocidad de búsqueda de los huecos se pueden tener dos listas
separadas, una de bloques en uso y otra de huecos. Sin embargo esta técnica es
más lenta cuando se va a liberar un bloque.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Los bloques se asignan en longitudes que son potencias de 2. Por ello, cuando un
proceso solicita una cantidad dada de memoria se busca la primera potencia de 2
que da un valor mayor o igual que la cantidad solicitada.
Los dos bloques que se obtienen como resultado de un corte se dice que son
camaradas. Al liberarse un bloque de una longitud determinada se coloca en su
lista correspondiente, pero si su camarada está libre, entonces se unen y pasan
como un solo bloque a la lista correspondiente. El proceso de unión antes indicado
se continúa mientras se van encontrando camaradas en forma sucesiva. Veamos
el ejemplo que aparece en el Tanenbaum.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Paginado.
En un sistema paginado, toda dirección generada está compuesta por dos partes:
un número de página y el desplazamiento dentro de ésta. Es decir, un grupo de
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
A los efectos de lo antes indicado, se mantiene, para cada proceso, una tabla (un
arreglo) indexada por el número de página, donde cada entrada contendrá la
dirección base del marco de página correspondiente. Como es lógico, si a esta
dirección se le suma el desplazamiento arribaremos a la posición física en
memoria donde está la información.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Segmentado.
Esta forma de actuar se acerca más al punto de vista del programador o usuario
que piensa en su aplicación como varias partes, por ejemplo, un segmento de
código, un segmento de datos, una pila, etc.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
En un sistema segmentado, toda dirección lógica está compuesta por dos partes:
el nombre del segmento y el desplazamiento dentro de éste. Normalmente, el
nombre del segmento se toma como un número para facilitar la instrumentación.
Al igual que en el paginado, esta conversión se tiene que realizar con cada
direccionamiento y por ello se requiere también que el sistema de cómputo brinde
el hardware necesario para su operación.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018
FIE
Departamento de Ingeniería Sistemas Operativos
Informática
Para la administración del espacio libre se utilizará una cualquiera de las técnicas
ya estudiadas: Mapa de bits, listas enlazadas o sistema camarada.
Con algunas dificultades adicionales con respecto al paginado, pero aquí también
es posible compartir segmentos entre diferentes procesos.
Memoria virtual.
Por otro lado, se ha dicho que la eficiencia en el uso del CPU se incrementa con el
grado de la multiprogramación. Pero a su vez, dicho grado está limitado por la
memoria disponible para almacenar los procesos.
Curso:
Profesor: Ing. Jose Antonio García Lorenzo
2017 - 2018