El problema principal en el particionamiento fijo es que el tamaño de un proceso debe estar limitado por el tamaño máximo de la partición, lo que significa que un proceso nunca puede abarcar a otro. Para resolver este problema, las personas anteriores han utilizado alguna solución que es llamado como superposiciones.
El concepto de las superposiciones es que cada vez que se ejecuta un proceso, no usará el programa completo al mismo tiempo, solo usará una parte de él. Luego, el concepto de superposición dice que cualquier parte que necesite, la carga y una vez que la parte está lista, simplemente la descarga, lo que significa que simplemente la retira y obtiene la nueva parte que necesita y la ejecuta.
Formalmente,
“El proceso de transferir un bloque de código de programa u otros datos a la memoria interna, reemplazando lo que ya está almacenado”.
A veces sucede que, en comparación con el tamaño de la partición más grande, el tamaño del programa será aún mayor, entonces, en ese caso, debe optar por superposiciones.
Por lo tanto, la superposición es una técnica para ejecutar un programa que es más grande que el tamaño de la memoria física al mantener solo las instrucciones y los datos que se necesitan en un momento dado. Divida el programa en módulos de tal manera que no todos los módulos necesitan ser en la memoria al mismo tiempo.
Ventaja –
- Reducir el requisito de memoria
- Reducir el requisito de tiempo
Desventaja –
- El programador debe especificar el mapa de superposición
- El programador debe conocer los requisitos de memoria
- El módulo superpuesto debe ser completamente disjunto
- El diseño de programación de la estructura de superposiciones es complejo y no es posible en todos los casos
Ejemplo:
el mejor ejemplo de superposiciones es el ensamblador. Considere que el ensamblador tiene 2 pases, 2 pases significa que en cualquier momento estará haciendo solo una cosa, ya sea el primer pase o el segundo pase. Esto significa que terminará primero el primer paso y luego el segundo. Supongamos que el tamaño de la memoria principal disponible es de 150 KB y el tamaño total del código es de 200 KB
Pass 1.......................70KB Pass 2.......................80KB Symbol table.................30KB Common routine...............20KB
Como el tamaño total del código es de 200 KB y el tamaño de la memoria principal es de 150 KB, no es posible usar 2 pases juntos. Entonces, en este caso, deberíamos usar la técnica de superposición. De acuerdo con el concepto de superposición, en cualquier momento solo se realizará un pase y ambos pases siempre necesitan una tabla de símbolos y una rutina común. Ahora la pregunta es si el controlador de superposición* es de 10 KB, ¿cuál es el tamaño mínimo de partición requerido? Para el pase 1, la memoria total necesaria es = (70 KB + 30 KB + 20 KB + 10 KB) = 130 KB y para el pase 2, la memoria total necesaria es = (80 KB + 30 KB + 20 KB + 10 KB) = 140 KB. Entonces, si tenemos una partición de tamaño mínimo de 140 KB, podemos ejecutar este código muy fácilmente.
*Controlador de superposiciones: es responsabilidad del usuario encargarse de la superposición, el sistema operativo no proporcionará nada. escriba el código para extraer el pase 1 y cargar el pase 2. Esa es la responsabilidad del usuario, que se conoce como controlador de superposiciones. código.
Pregunta:
el árbol superpuesto de un programa es el que se muestra a continuación:
¿Cuál será el tamaño de la partición (en memoria física) necesaria para cargar (y
ejecutar) este programa?
(a) 12 KB (b) 14 KB (c) 10 KB (d) 8 KB
Explicación:
al usar el concepto de superposición, no necesitamos tener todo el programa dentro de la memoria principal. Solo necesitamos tener la parte que se requiere en ese momento, ya sea que necesitemos Root-AD o Root-AE o Root-BF o Parte raíz-CG.
Root+A+D = 2KB + 4KB + 6KB = 12KB Root+A+E = 2KB + 4KB + 8KB = 14KB Root+B+F = 2KB + 6KB + 2KB = 10KB Root+C+G = 2KB + 8KB + 4KB = 14KB
Entonces, si tenemos un tamaño de partición de 14 KB, podemos ejecutar cualquiera de ellos.
Respuesta -(b) 14KB
Este artículo es una contribución de Samit Mandal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA