Diferencia entre revisiones de «SO monoprogramables»
De Wiki de Sistemas Operativos
m (→Protección de memoria:) |
|||
(No se muestran 13 ediciones intermedias de 7 usuarios) | |||
Línea 1: | Línea 1: | ||
− | + | En los sistemas operativos monoprogramables la administración de memoria es muy sencilla ya que solo hay un proceso en ejecución que puede usar todo el espacio disponible, la gestión de memoria se limita casi a comprobar si el proceso cabe en el espacio libre en la memoria. El SO se coloca como bloque al principio o al final de la memoria (memoria del sistema), y el resto para el proceso a ejecutar (memoria del proceso): | |
+ | _______________________ _______________________ | ||
+ | /| | 0 0| |\ | ||
+ | | | zona de memoria del | | zona del S.O en RAM | | | ||
+ | | | sistema operativo | |_______________________| | | ||
+ | | |_______________________| | |\| | ||
+ | |/| | | zona de memoria del | | | ||
+ | Sistema \ | | | | usuario (ejecución | | < IBM PC | ||
+ | clásico / | | zona de memoria del | | de procesos) | | | ||
+ | | | usuario | |_______________________| | | ||
+ | | | (ejecución de | | |\| | ||
+ | | | procesos) | | zona de Lectura | | | ||
+ | | | | | | | | ||
+ | \|_______________________| N N|_______________________|/ | ||
− | + | ||
+ | == Solapamiento: == | ||
+ | Si el proceso no cabe en el espacio libre en memoria puede recurrirse a 2 estrategias para ejecutarlo: | ||
+ | *'''Ejecución en cadena:''' El programa se divide en varios "subprogramas" y se ejecutan en cadena. Esto se consigue haciendo que cada programa termine su ejecución solicitando que se ejecute el siguiente. | ||
+ | *'''Fragmentar el programa en módulos de solapamiento o recubrimiento:''' Dichos módulos se van cargando en memoria según se necesite. Algunos S.O. permiten que los submodulos también se dividan, dando lugar a una estructura en árbol. | ||
+ | |||
+ | '''______''' | ||
+ | ''' | |''' | ||
+ | '''| |''' Datos permanentes: Datos globales, | ||
+ | '''| |''' programa principal y subprogramas comunes | ||
+ | '''| | | ||
+ | '''| |''' | ||
+ | ''' |______|'''_______________________________________________________ | ||
+ | | | __|__ __|__ __|__ __|__ / | ||
+ | | | ''' | | | | | | | |''' | | ||
+ | | | '''| A | | | | C | | D |''' | | ||
+ | | | '''|_____| | | | | |_____|''' < Módulos de solapamiento o recubrimiento (A, B, C, D) | ||
+ | | | '''| B | |_____|''' | | ||
+ | | | '''| |''' | | ||
+ | |______| '''|_____|''' \ | ||
+ | |||
+ | == Protección de memoria: == | ||
+ | |||
+ | Los sistemas operativos monoprogramables tienen debilidades en cuanto a protección de memoria. Para evitar que un proceso entre en el área del SO, se puede recurrir al uso de: | ||
+ | *'''Bits de protección''': se le asocia a cada palabra un bit (1 para S.O. y 0 para proceso) para comprobar si la posición de memoria es de SO o del proceso. Este sistema no exige que la región protegida sea contigua, con lo que el sistema operativo puede marcar como suyas algunas posiciones de memoria de subprocesos especiales lo que permite que los mismos accedan de forma controlada a datos y subprogramas del núcleo. | ||
+ | |||
+ | *'''Registros valla o registros límite''': En el límite entre la zona del sistema operativo y la zona para la ejecución de procesos se carga un registro con la primera posición de memoria que ocupa el proceso. Este sistema es más sencillo y barato que el anterior, pero solo protege una zona (entre la posición de memoria 0 y la posición de memoria del registro) y son necesarios circuitos comparadores rápidos para evitar retrasar la ejecución de las instrucciones. Su funcionamiento es el siguiente: al intentar acceder a una posición de memoria se comprueba si esta dirección es menor que la dirección del registro valla, si es así se lanza un mensaje de error y si no es así se accede a la posición de memoria deseada. | ||
Ejemplo práctico: | Ejemplo práctico: | ||
Pablo tiene una computadora cuya memoria principal tiene una capacidad de 640KB. El SO (MS-DOS) ocupa el principio de la memoria, dejando libre una | Pablo tiene una computadora cuya memoria principal tiene una capacidad de 640KB. El SO (MS-DOS) ocupa el principio de la memoria, dejando libre una | ||
zona de 512KB para el proceso conveniente. | zona de 512KB para el proceso conveniente. | ||
− | Esto nos impide jugar al Sensible Soccer, por ejemplo, ya que ocupa 560KB. Una posible solución | + | Esto nos impide jugar al Sensible Soccer, por ejemplo, ya que ocupa 560KB. Una posible solución sería instalar un SO menos pesado, como una version |
más antigua de MS-DOS. | más antigua de MS-DOS. |
Revisión actual del 18:06 17 dic 2017
En los sistemas operativos monoprogramables la administración de memoria es muy sencilla ya que solo hay un proceso en ejecución que puede usar todo el espacio disponible, la gestión de memoria se limita casi a comprobar si el proceso cabe en el espacio libre en la memoria. El SO se coloca como bloque al principio o al final de la memoria (memoria del sistema), y el resto para el proceso a ejecutar (memoria del proceso):
_______________________ _______________________ /| | 0 0| |\ | | zona de memoria del | | zona del S.O en RAM | | | | sistema operativo | |_______________________| | | |_______________________| | |\| |/| | | zona de memoria del | | Sistema \ | | | | usuario (ejecución | | < IBM PC clásico / | | zona de memoria del | | de procesos) | | | | usuario | |_______________________| | | | (ejecución de | | |\| | | procesos) | | zona de Lectura | | | | | | | | \|_______________________| N N|_______________________|/
Solapamiento:
Si el proceso no cabe en el espacio libre en memoria puede recurrirse a 2 estrategias para ejecutarlo:
- Ejecución en cadena: El programa se divide en varios "subprogramas" y se ejecutan en cadena. Esto se consigue haciendo que cada programa termine su ejecución solicitando que se ejecute el siguiente.
- Fragmentar el programa en módulos de solapamiento o recubrimiento: Dichos módulos se van cargando en memoria según se necesite. Algunos S.O. permiten que los submodulos también se dividan, dando lugar a una estructura en árbol.
______ | | | | Datos permanentes: Datos globales, | | programa principal y subprogramas comunes | | | | |______|_______________________________________________________ | | __|__ __|__ __|__ __|__ / | | | | | | | | | | | | | | A | | | | C | | D | | | | |_____| | | | | |_____| < Módulos de solapamiento o recubrimiento (A, B, C, D) | | | B | |_____| | | | | | | |______| |_____| \
Protección de memoria:
Los sistemas operativos monoprogramables tienen debilidades en cuanto a protección de memoria. Para evitar que un proceso entre en el área del SO, se puede recurrir al uso de:
- Bits de protección: se le asocia a cada palabra un bit (1 para S.O. y 0 para proceso) para comprobar si la posición de memoria es de SO o del proceso. Este sistema no exige que la región protegida sea contigua, con lo que el sistema operativo puede marcar como suyas algunas posiciones de memoria de subprocesos especiales lo que permite que los mismos accedan de forma controlada a datos y subprogramas del núcleo.
- Registros valla o registros límite: En el límite entre la zona del sistema operativo y la zona para la ejecución de procesos se carga un registro con la primera posición de memoria que ocupa el proceso. Este sistema es más sencillo y barato que el anterior, pero solo protege una zona (entre la posición de memoria 0 y la posición de memoria del registro) y son necesarios circuitos comparadores rápidos para evitar retrasar la ejecución de las instrucciones. Su funcionamiento es el siguiente: al intentar acceder a una posición de memoria se comprueba si esta dirección es menor que la dirección del registro valla, si es así se lanza un mensaje de error y si no es así se accede a la posición de memoria deseada.
Ejemplo práctico: Pablo tiene una computadora cuya memoria principal tiene una capacidad de 640KB. El SO (MS-DOS) ocupa el principio de la memoria, dejando libre una zona de 512KB para el proceso conveniente. Esto nos impide jugar al Sensible Soccer, por ejemplo, ya que ocupa 560KB. Una posible solución sería instalar un SO menos pesado, como una version más antigua de MS-DOS.