Soporte del Sistema Operativo Sistemas Operativos y Clasificaciones

  • Slides: 29
Download presentation
Soporte del Sistema Operativo Sistemas Operativos y Clasificaciones, Scheduling (Planificación) y Memory Management (Administración

Soporte del Sistema Operativo Sistemas Operativos y Clasificaciones, Scheduling (Planificación) y Memory Management (Administración de Memoria).

Sistema Operativo Un sistema operativo (OS, del término inglés Operating System) es un programa

Sistema Operativo Un sistema operativo (OS, del término inglés Operating System) es un programa (o conjunto de programas) que administra los recursos de una computadora (CPU, memoria, discos, sistema de archivos, etc. ) y controla la ejecución de programas de aplicación y que actúa como interfaz entre el usuario de una computadora y el hardware de la computadora. Se puede decir que un sistema operativo tiene dos objetivos: • Conveniencia: Un OS hace que una computadora sea más conveniente de usar. • Eficiencia: Un OS hace que los recursos de una computadora sean usados en una manera eficiente.

Sistema Operativo – Tipos de Sistemas Operativos Para distinguir entre los distintos tipos de

Sistema Operativo – Tipos de Sistemas Operativos Para distinguir entre los distintos tipos de sistemas operativos existen ciertas característica clave. Las características se agrupan en dos dimensiones distintas. La primera dimensión especifica si se trata de un sistema de colas (batch) o interactivo: • En un sistema interactivo, el usuario/programador interactúa directamente con la computadora, usualmente a través de una pantalla y teclado, para solicitar la ejecución de un trabajo o realizar una transacción. Además, el usuario puede, según la naturaleza de la aplicación, comunicarse con la computadora durante la ejecución del trabajo. • Un sistema de colas (batch) es lo opuesto a uno interactivo. El programa de usuario se introduce en una cola junto con programas de otros usuarios. Después de que el programa haya terminado, los resultados se proporcionan al usuario. OS tipo batch ya no se usan en la actualidad. La segunda dimensión especifica si se el sistema usa multiprogramación o no: • Con la multiprogramación se intenta mantener al procesador ocupado tanto como sea posible, haciéndolo trabajar en más de un programa al mismo tiempo. Varios programas se cargan en la memoria, y el pro cesador conmuta rápidamente entre ellos. • La alternativa es un sistema de monoprogramación que trabaja solo en un programa en cada momento. OS tipo monoprogramación ya no se usan en la actualidad.

Sistema Operativo – Tipos de Sistemas Operativos – SO Batch Simple Sistemas Operativos Tipo

Sistema Operativo – Tipos de Sistemas Operativos – SO Batch Simple Sistemas Operativos Tipo Batch Simple Los primeros procesadores eran muy caros, y por ello era muy impor tantemaximizar la utilización del procesador. El tiempo perdido debido a la planificación y a la preparación de las aplicaciones a ejecutar era inaceptable. Para mejorar la utilización, se desarrollaron los sistemas batch simples. Con un sistema de este tipo, llamado monitor, el usuario ya no tiene acceso directo a la computadora. En cambio, el usuario envía el trabajo, en tarjetas o en cinta, a un operador de la computadora que pone los trabajos en fila y sitúa toda la fila en un dispositivo de entrada al que accede el monitor. Para comprender cómo trabaja el esquema, considéresele desde dos puntos de vista: el del monitor y el del procesador. Desde el punto de vista del monitor, es él el que controla la secuencia de eventos. Para que esto sea así, el monitor está siempre en la memoria principal y dispuesto para ejecutarse (ver la figura). Esta parte se denomina monitor residente. El resto del monitor consiste en uti lidadesy funciones comunes que son cargadas como subrutinas del programa de usuario al iniciarse cualquier trabajo que las necesite. El monitor introduce uno a uno los trabajos desde el dispositivo de entrada (usualmente un lector de tarjetas o de cintas magnéticas). A medida que es leído, el trabajo en cuestión se sitúa en el área de programas de usuario y se cede el control a dicho trabajo. Cuando el trabajo termina, se devuelve el control al monitor, que inmediatamente lee el siguiente trabajo. Los resultados de cada trabajo se imprimen para que el usuario pueda disponer de ellos.

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Sistemas Operativos Tipo

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Sistemas Operativos Tipo Batch Multiprogramado (Multitasking) Incluso con la sucesión automática de trabajos que proporcionan los sistemas batch simples, el procesador está inactivo a menudo. El problema surge porque los dispositivos de E/S son lentos en comparación con el procesador. La siguiente figura describe una situación típica. El cálculo se refiere a un programa que procesa un archivo de registros y ejecuta, en promedio, cien instrucciones de procesador por segundo. En este ejemplo, la computadora emplea alrededor del 96% de su tiempo esperando a que los dispositivos de E/S terminen de transfe rir datos. En el inciso (a) de la figura en la siguiente página se ilustra esta situación. El procesador consume cierto tiempo ejecutando instrucciones hasta que llega a una instrucción de E/S. Entonces debe esperar hasta que esa instrucción de E/S conclu ya para continuar.

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Esta ineficiencia se

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Esta ineficiencia se puede evitar. Se ha indicado que debe haber memoria suficiente para dar cabida al sistema operativo (monitor residente) y a un programa de usuario (b). Supóngase que hay sitio para el sistema operativo y dos programas de usuario. Ahora, cuando un trabajo necesita esperar debido a una E/S, el procesador puede conmutar al otro trabajo, que posiblemente no estará esperando una E/S. Es más, se podría expandir la memoria para disponer de tres, cuatro o más programas entre los que conmutar (c). Este proceso se conoce como multiprogramación o multita rea (multitasking). Es el tema central de los sistemas operativos modernos.

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Ejemplo: Este ejemplo

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Ejemplo: Este ejemplo ilustra el beneficio de la multiprogramación. Considérese un computador con una memoria disponible (no utilizada por el sistema operativo) de 250 Mb, un disco, un terminal y una impresora. Se envían al mismo tiempo tres programas, Trabajo 1, Trabajo 2 y Trabajo 3, para su ejecución. Sus atributos se enumeran en la siguiente tabla: Asumimos requisitos mínimos de procesador para Trabajo 2 y Trabajo 3, y un uso continuo del disco y la impresora por parte de Trabajo 3. En un entorno batch simple, estos trabajos se ejecutarían sucesivamente uno tras otro. Así, Trabajo 1 termina en cinco minutos. Trabajo 2 debe esperar a que los cinco minutos hayan pasado, y termina quince minutos después. Trabajo 3 empieza después de veinte minutos y termina treinta minutos después de que se enviara. La utilización media de los recursos, el rendimiento, y los tiempos de respuesta se muestran en la columna de monoprogramación de la siguiente tabla.

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) La utilización dispositivo

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) La utilización dispositivo por dispositivo se ilustra en el inciso (a) de la siguiente figura. Es evidente que hay una importante infrautilización de todos los recursos cuando se promedia su uso en el periodo de tiempo de 30 minutos.

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Ahora suponga que

Sistema Operativo – Tipos de Sistemas Operativos – Batch Multiprogramado (Multitasking) Ahora suponga que los trabajos se ejecutan concurrentemente bajo un sistema operati vo con multiprogramación. Puesto que hay poca competencia entre los trabajos por los recursos, los tres pueden ejecutarse en un tiempo casi mínimo al coexistir en la computadora con el resto (asumiendo que se asigna a Trabajo 2 y Trabajo 3 tiempo de procesador sufi ciente para mantener activas sus operaciones de entrada y salida). El Trabajo 1 todavía necesitará cinco minutos para terminar, pero al final de ese tiempo Trabajo 2 se habrá completado en un tercio y Trabajo 3 en la mitad. Los tres trabajos habrán terminado en un tiempo de quince minutos. La mejora es evidente si se examina la columna de multiprogra maciónde la tabla anterior (en dos páginas anteriores), obtenida a partir del histograma el inciso (b) de la figura anterior. Al igual que en un sistema batch simple, un sistema batch multiprogramado es un programa que se apoya en ciertas características del hardware de la computadora. La característica más notable de utilidad para la multiprogramación es el hardware que da soporte a las interrupciones y el DMA. Con las E/S mediante interrupciones o mediante DMA, el CPU puede lanzar una orden de E/S para un traba jo y continuar ejecutando otro trabajo mientras el controlador de dispositivo se encarga de realizar la E/S. Cuando se completa la operación de E/S, el CPU es interrumpido y el control pasa a un programa de gestión de interrupciones del sistema operativo. Entonces, el sistema operativo pasa el control a otro trabajo. Los sistemas operativos multiprogramados son bastante sofisticados en comparación con los sistemas de un solo programa o monoprogramados. Para tener varios trabajos listos para ejecutarse, éstos deben mantenerse en memoria, por lo que se requiere un sistema de administración de memoria. Además, si varios trabajos están listos para ejecutarse, el procesador debe decidir cuál de ellos se ejecuta, lo que implica utilizar algún algoritmo de planificación (scheduling).

Sistema Operativo – Sistemas Operativos Interactivos de Tiempo Compartido (Time-Sharing) Con el uso de

Sistema Operativo – Sistemas Operativos Interactivos de Tiempo Compartido (Time-Sharing) Con el uso de la multiprogramación, el procesamiento en batch puede ser bastante eficiente. Sin embargo, para muchos trabajos es deseable disponer de un modo en el cual el usuario interactúe directamente con la computadora. De hecho, para algunos trabajos, tales como el procesamiento de transacciones, es esencial el modo interactivo. Hoy en día, los requisitos para el procesamiento interactivo pueden ser, y a menudo son, satisfechos por una microcomputadora dedicada. Esta opción no era posible en los sesenta, cuando la mayoría de las computadoras eran grandes y costosas. En su lugar, se desarrolló el tiempo compartido. Al igual que la multiprogramación permite que el procesador ejecute varios trabajos de la fila en un intervalo de tiempo, también se puede hacer que ejecute varios trabajos interactivos. En este caso, la técnica se denomina tiempo compartido, puesto que el tiempo del procesador se comparte entre varios usuarios. En un sistema de tiempo compartido, varios usuarios acceden simultáneamente al sistem a través de terminales, mientras que el sistema operativo alterna la ejecución de fragmentos o ráfagas de cómputo correspondientes a cada usuario. A sí, si hay n usuarios que solicitan servicio al mismo tiempo, cada usuario solo aprovechará, por término medio, un a fracción igual a 1/n de la velocidad efectiva del procesador, y eso sin contar el tiempo dedicado al sistema operativo. No obstante, dado el relativamente elevado tiempo de reacción humano, el tiempo de respuesta de un sistema diseñado correctamente debería ser comparable al que proporciona una computadora dedicada.

Sistema Operativo – Procesos Este término fue utilizado por primera vez por los diseñadores

Sistema Operativo – Procesos Este término fue utilizado por primera vez por los diseñadores del OS Multics en lo sesenta. En cierta forma, se trata de un término más general que un trabajo. Se han dado muchas definiciones del término proceso, entre ellas: • Un programa en ejecución. • El «espíritu animado» de un programa. • Aquella entidad a la que se asigna un procesador. Estados de Procesos Durante el tiempo de vida de un proceso, la situación en que se encuentra cambiará un cierto número de veces. Su situación en cada instante de tiempo se denomina estado. El término estado se utiliza porque tiene la connotación de que existe cierta información que define la situación en que se encuentra el proceso en ese momento. Usualmente, se definen cinco estados para un proceso (ver la figura)

Sistema Operativo – Procesos Los cinco estados de un proceso, tal como se mostraron

Sistema Operativo – Procesos Los cinco estados de un proceso, tal como se mostraron en la figura de la página anterior, son los siguientes: • Nuevo (New): el planificador (scheduler) de alto nivel del sistema operativo admite un programa pero todavía no está preparado para ejecutarse. El sistema operativo iniciará el proceso, pasándolo al estado preparado. • Preparado (Ready): el proceso está preparado para ejecutarse y se encuentra esperando acceso al procesador. • En ejecución (Running): el proceso está siendo ejecutado por el procesador. • En espera (Waiting): el proceso ha suspendido su ejecución al estar esperando algún recurso del sistema, tal como una E/S. • Parado (Halted): el proceso ha terminado y será eliminado por el sistema operativo.

Sistema Operativo – Scheduling (planificación) Scheduling (Planificación) La clave de la multiprogramación es la

Sistema Operativo – Scheduling (planificación) Scheduling (Planificación) La clave de la multiprogramación es la planificación (scheduling). De hecho, cuatro tipos de planificación están involucradas (ver la siguiente tabla). • Planificación a largo plazo El planificador (scheduler) a largo plazo determina qué programas se admiten para ser procesados en el sistema. De esta manera, este planificador controla el grado de multiprogramación (número de procesos en memoria). Una vez admitido, un trabajo o programa de usuario pasa a ser un proceso y se añade a una cola asociada al planificador a corto plazo. En algunos sistemas, un proceso nuevo comienza a partir de una condición de intercambio (swapping), en cuyo caso se añade a la cola del planificador a medio plazo.

Sistema Operativo – Scheduling (planificación) En un sistema batch, o en la parte batch

Sistema Operativo – Scheduling (planificación) En un sistema batch, o en la parte batch de un sistema operativo de uso general, los trabajos nuevos que se envían pasan al disco y se mantienen en una fila. El planificador a largo plazo selec cionatrabajos de esta fila cuando puede. Esto implica tomar dos decisiones. Primera, el planificador debe decidir si el sistema operativo puede aceptar uno o más procesos adicionales. Segunda, el planificador debe decidir qué trabajo o trabajos acepta y transforma en procesos. Los criterios que se uti lizan deben incluir la prioridad, el tiempo de ejecución esperado y las E/S que se requieren. Para los programas interactivos en un sistema de tiempo compartido, se genera una solicitud de proceso cuando un usuario intenta conectarse al sistema. Los usuarios en tiempo compartido no se introducen en una fila para mantenerse esperando a que el sistema los acepte. Por el contrario, el sistema operativo aceptará todos los usuarios autorizados hasta que el sistema se sature, según un crite riode saturación predefinido. En ese momento, si se produce una solicitud de conexión se responde con un mensaje que indica que el sistema está completo y el usuario debe intentar la conexión de nuevo, pasado un cierto tiempo. • Planificación a medio plazo La planificación a medio plazo es parte de la función de intercambio. Usualmente, la decisión de intercambiar un proceso se toma en función del grado de multiprogramación que se desea mantener. En un sistema que no utilice memoria virtual, la administración de la memoria también debe considerarse por el planificador (scheduler) a medio plazo, y en las decisiones tomadas en el intercambio deben tenerse en cuenta las necesidades de memoria de los procesos intercambiados. • Planificación a corto plazo El planificador (scheduler) a largo plazo se ejecuta de manera relativamente poco frecuente y toma las decisiones más genéricas de si aceptar un nuevo proceso o no, y qué proceso aceptar. El planificador a corto plazo, conocido también como distribuidor (dispatcher), se ejecuta frecuentemente y toma la decisión más específica de qué trabajo se ejecuta a continuación.

Sistema Operativo – Scheduling (planificación) Para cada proceso del sistema, el sistema operativo debe

Sistema Operativo – Scheduling (planificación) Para cada proceso del sistema, el sistema operativo debe mantener información de su estado indicando la situación en que se encuentra el proceso y cualquier información adicional necesaria para la ejecución del mismo. Para eso, cada proceso se representa en el sistema operativo mediante un blo que de control de proceso (ver la siguiente figura) que usualmente está constituido por: • • Identificador: cada proceso en curso tiene un identificador único. Estado: el estado actual del proceso (Nuevo, Preparado , etc. ). Prioridad: el nivel de prioridad relativo. Contador de programa: la dirección de la siguiente instrucción del programa a ejecutar. Punteros a memoria: las posiciones de memoria de inicio y final del proceso. Datos de contexto: son los datos de los registros del procesador cuando el proceso se está ejecutando. Estos datos representan el «contexto» del proceso. El contexto junto con el contador de programa se guar da cuando el procesador abandona el estado Preparado. El procesador los recupera cuando reanuda la ejecución del proceso. Información de estado de las E/S: incluye las solicitudes de E/S pendientes, los dispositivos de E/S (por ejemplo, cintas) asignados al proceso, la lista de ficheros asignados al proceso, etc. Información para contabilidad: puede incluir el tiempo total y el tiempo de procesador utilizados, los límites de tiempo, los datos de las cuentas, etc. Cuando el planificador acepta un nuevo trabajo o solicitud de ejecución de un usuario, crea un bloque de control de procesos en blanco y sitúa en él al proceso asociado en el estado Nuevo. Después de que el sistema haya completado correctamente el bloque de control de proceso, el proceso se transfiere al estado Preparado.

Sistema Operativo – Scheduling (planificación) Técnicas de Planificación Para entender cómo el sistema operativo

Sistema Operativo – Scheduling (planificación) Técnicas de Planificación Para entender cómo el sistema operativo realiza la planificación de los trabajos en memoria, empezaremos considerando el ejemplo de la siguiente figura. La figura muestra cómo se divide la memoria principal en un instante de tiempo dado. El núcleo (kernel) del sistema operativo siempre está residente. Además, hay un cierto número de procesos activos, por ejemplo A y B, a cada uno de los cuales se les asigna una porción de memoria.

Sistema Operativo – Scheduling (planificación) 1. 2. El proceso A genera una llamada de

Sistema Operativo – Scheduling (planificación) 1. 2. El proceso A genera una llamada de servicio o sistema (system call), por ejemplo, una solicitud de E/S, al sistema operativo. La ejecución de A se suspende hasta que el sistema operativo ha completado el servicio solicitado. El proceso A origina una interrupción. Una interrupción, en este caso, es una señal generada por el hardware que se envía al procesador. Cuando se detecta la señal, el procesador deja de ejecutar A y pasa al gestor de interrupciones incluido en el sistema operativo. Hay una diversidad de eventos de A que pueden ocasionar la interrupción. Por ejemplo, un error tal como el intento de ejecutar una instrucción privilegiada. También se genera una interrupción cuando se agota el tiempo asignado al proceso. Para evitar que monopolice al procesador, cada proceso dispone del procesador solo durante un corto periodo de tiempo. 1. Algún hecho no relacionado con el proceso A que requiere atención origina una interrupción. Por ejemplo, cuando se completa una operación de E/S. En cualquier caso, el resultado es el siguiente. El procesador guarda los datos del contexto actual y el contador de programa de A en el bloque de control del proceso A y empieza a ejecutar el sistema operativo. El sistema operativo puede realizar alguna actividad, tal como iniciar una operación de E/S. Entonces, la porción del sistema operativo correspondiente al planificador a corto plazo decide el proceso que se ejecuta a continuación. En este ejemplo, se elige B. El sistema operativo hace que se res taurenen el procesador los datos del contexto de B y se prosigue con la ejecución de B donde se dejó. Este sencillo ejemplo aclara el funcionamiento básico del planificador a corto plazo. La figura en la siguiente página muestra los elementos del sistema operativo que intervienen de manera más importante en la multiprogramación y en la planificación de procesos. El sistema operativo recibe el control del pro cesadoral ejecutarse el gestor de interrupciones si se produce una interrupción, y al ejecutarse el ges torde llamadas de sistema si se solicita un servicio. Una vez se ha servido la llamada o la interrupción, vuelve a intervenir el planificador a corto plazo que selecciona un proceso para su ejecución.

Sistema Operativo – Scheduling (planificación) Para realizar este trabajo, el sistema operativo utiliza un

Sistema Operativo – Scheduling (planificación) Para realizar este trabajo, el sistema operativo utiliza un cierto número de filas (colas). Cada fila es simplemente una lista de espera de procesos que necesitan un recurso. La cola a largo plazo es una lista de trabajos que esperan utilizar el sistema. Cuando las condiciones lo permitan, el planificador a largo plazo asignará memoria y creará un proceso para uno de los elementos que esperan en la cola.

Sistema Operativo – Scheduling (planificación) La cola a corto plazo contiene a los procesos

Sistema Operativo – Scheduling (planificación) La cola a corto plazo contiene a los procesos que se encuentran en estado Preparado. Cada uno de estos procesos podría ser el siguiente en utilizar el procesador. Depende de cuál sea el que elija el planificador a corto plazo. Generalmente, esto se hace mediante un algoritmo de turno rotatorio (round robin), cediendo el tiempo a cada proceso por turnos. También se pueden usar niveles de prioridad. Finalmente, hay una cola de E/S para cada dispositivo de E/S. Más de un proceso puede solicitar el uso del mismo dispositivo de E/S. Todos los procesos que esperan para utilizar cada dispositivo se introducen en la fila del dispositivo. La a la derecha figura sugiere la forma en que los procesos avanzan en el computador bajo el control del sistema operativo. Cada solicitud de proceso (desde los trabajos en cola, o los trabajos interactivos) se sitúa en la cola a largo plazo. A medida que los recursos están disponibles, una solicitud de proceso se convierte en proceso y pasa al estado preparado situándose en la cola de corto plazo. Alternativamente, el procesador ejecuta instrucciones del sistema operativo y de los procesos de usuario. Mientras el sistema operativo dispone del control, decide qué proceso de la cola de corto plazo debería ejecutarse a continuación. Cuando el sistema operativo ha terminado sus tareas inmediatas, devuelve el procesa dor a los procesos elegidos.

Sistema Operativo – Scheduling (planificación) Como se mencionó anteriormente, un proceso en ejecución puede

Sistema Operativo – Scheduling (planificación) Como se mencionó anteriormente, un proceso en ejecución puede suspenderse por varias razones. Si se suspende porque el proceso solicita una E/S, se sitúa en la cola de E/S apropiada. Si se suspen de porque ha transcurrido el tiempo que se le asignó o porque el sistema operativo debe atender alguna tarea urgente, se pone en estado preparado y se devuelve a la cola a corto plazo. Finalmente, se menciona que el sistema operativo también gestiona las colas de E/S. Cuando finaliza una operación de E/S, el sistema operativo suprime de la cola de E/S el proceso atendido y lo sitúa en la cola de corto plazo. Después selecciona otro proceso en estado de espera (si lo hay) y actúa sobre el dispositivo de E/S correspondiente para que satisfaga la solicitud del proceso. Se han discutido tres tipos de colas: la cola a largo plazo para solicitar pro cesosnuevos, la cola a corto plazo con los procesos preparados para utilizar el procesador y las distintas colas de E/S de los procesos que no están preparados para usar el procesador. Recuérdese que la razón última de estos mecanismos era que las actividades de E/S son mucho más lentas que el cálculo y que por consiguiente el procesador en un sistema con uniprogramación está la mayor parte del tiempo parado. Sin embargo, este esquema no resuelve el problema por completo. Es verdad que, en este caso, la memoria contiene múltiples procesos y que el procesador puede conmutar a otro proceso cuando el proceso en curso tenga que esperar. Pero el procesador es tan rápido en comparación con las E/S que puede ser frecuente que todos los procesos de la memoria estén esperando una E/S. Por eso, incluso con la multiprogramación, un procesador puede estar parado la mayor parte del tiempo.

Sistema Operativo – Administración de Memoria (Memory Management) En un sistema de monoprogramación, la

Sistema Operativo – Administración de Memoria (Memory Management) En un sistema de monoprogramación, la memoria principal se divide en dos partes: una parte para el sistema operativo (el monitor residente) y otra parte para el programa que se está ejecutando. En un sistema multiprogramado, la parte de «usuario» de la memoria además debe subdividirse para dar cabida a los distintos procesos. La tarea de subdivisión la realiza dinámicamente el sistema operativo y se conoce como administración de memoria. Una gestión eficiente de la memoria es vital en un sistema multiprogramado. Si hay pocos procesos en memoria, puede ocurrir que todos los procesos estén esperando completar una E/S y el procesador permanecerá inactivo. En consecuencia, la memoria debe asignarse eficientemente para situar en memoria tantos procesos como sea posible. Swapping (Intercambio) Se mencionó que un problema que se puede presentar en sistemas multiprogramados consiste en tener muchos procesos en espera de operaciones E/S, por lo que sería deseable poder agregar más procesos que mantengan ocupado al procesador mientras los otros proceso esperan. Para esto, la memoria principal podría ampliarse y así ser capaz de dar cabida a más procesos. Pero hay dos problemas en esta solución. Primero, incluso hoy día la memoria principal es cara. Segundo, la necesidad de memoria de los programas ha crecido tan rápido como ha caído el costo de la memoria. Por eso una memoria mayor origina procesos mayores, no más procesos.

Sistema Operativo – Administración de Memoria (Memory Management) Otra solución es el intercambio (swapping),

Sistema Operativo – Administración de Memoria (Memory Management) Otra solución es el intercambio (swapping), representado en la siguiente figura. Tenemos una cola a largo plazo de solicitudes de proceso, usualmente almacenada en disco. Estas solicitudes se traen a memoria, una a una, a medida que hay espacio disponible. Conforme terminan, los procesos se sacan de la memoria principal. Ahora, podría ocurrir que ninguno de los procesos en la memoria principal esté en el estado preparado (por ejemplo, todos están esperando una operación de E/S). En lugar de permanecer parado, el procesador intercambia uno de esos procesos situándolo en el disco en una cola intermedia. Esta es una cola de procesos existentes que se han sacado temporalmente de memoria. El sistema operativo entonces trae otro proceso de la cola intermedia, o acepta una nueva petición de proceso de la cola de largo plazo. La ejecución continúa con el proceso recientemente activado.

Sistema Operativo – Administración de Memoria (Memory Management) El intercambio (swapping) es de hecho

Sistema Operativo – Administración de Memoria (Memory Management) El intercambio (swapping) es de hecho una operación de E/S, y por consiguiente existe la posibilidad de empeorar el problema más que de solucionarlo. No obstante, puesto que la E/S en disco es generalmente la operación de E/S más rápida (comparada con la E/S en cinta o mediante impresora), usualmente el intercambio mejora las prestaciones. Un esquema más sofisticado, que implica el uso de la memoria virtual, mejora las prestaciones con respecto al intercambio simple. Esto se discutirá en breve. Pero primero, se deben proporcionar los fundamentos explicando la definición de particio nesy la paginación. Definición de Particiones (Partitioning) El esquema más simple para definir particiones en la memoria disponible es utilizar particiones de tamaño fijo, como muestra la figura de a continuación. Observe que, aunque las particiones son de tamaño fijo, no todas tienen igual tamaño. Cuando un proceso se introduce en memoria, se sitúa en la partición dis poniblemás pequeña que puede incluirlo. Incluso con el uso de particiones de distintos tamaños, se desperdiciará memoria. En la mayoría de los casos, un proceso no necesitará exactamente la memoria que proporciona una partición. Por ejemplo, un proceso que precise 3 MB de memoria se podría situar en la partición de 4 M del inciso (b) de la figura, desperdiciando 1 MB que podrían utilizarse para otro proceso.

Sistema Operativo – Administración de Memoria (Memory Management)

Sistema Operativo – Administración de Memoria (Memory Management)

Sistema Operativo – Administración de Memoria (Memory Management) Una posibilidad más eficiente consiste en

Sistema Operativo – Administración de Memoria (Memory Management) Una posibilidad más eficiente consiste en utilizar particiones de tamaño variable. Cuando un proceso se introduce en memoria, se le asigna exactamente la memoria que necesita y no más. Ejemplo: En la figura se muestra un ejemplo utilizando 64 MB de memoria princi pal. Inicialmente, salvo por el sistema operativo, la memoria principal está vacía (a). Los primeros tres procesos se cargan, empezando por donde termina el sistema operativo y ocupando justo el espacio necesario para cada proceso (b, c, d). Esto deja un «hueco» al final de la memoria que es demasiado pequeño para un cuarto proceso. En cierto instante, ninguno de los procesos de memoria está preparado. El sistema operativo saca de memoria el proceso 2 (e), dejando espacio suficiente para cargar un nuevo proceso, el proceso 4 (f). Puesto que el proceso 4 es más pequeño que el proceso 2, se crea otro hueco pequeño. Posteriormente, se produce la situación en la que ninguno de los procesos que están en la memoria está preparado, excepto el proceso 2, que está disponible puesto que se encuentra en el estado Preparado Suspendido. Como hay un espacio de memoria insuficiente para el proceso 2, el sistema operativo retira de memoria al proceso 1 (g) y vuelve a introducir al proceso 2 (h).

Sistema Operativo – Administración de Memoria (Memory Management) Como muestra este ejemplo, el método

Sistema Operativo – Administración de Memoria (Memory Management) Como muestra este ejemplo, el método empieza bien, pero eventualmente puede llegar a situaciones en las que hay muchos huecos pequeños en memoria. A medida que pasa el tiempo, la memo riase fragmenta más y más, y empeora su utilización. Una técnica para solucionar este problema es la compactación: de vez en cuando, el sistema operativo desplaza los procesos en memoria para jun tar toda la memoria libre en un bloque. Este es un procedimiento que consume parte del tiempo del procesador. Antes de considerar formas de solucionar los problemas de la definición de particiones, debemos aclarar cierto extremo. Si el lector presta atención a la siguiente figura por un momento, resulta obvio que un proceso difícilmente se cargará en el mismo lugar de la memoria principal cada vez que se inter cambia. Es más, si se utiliza compactación, un proceso puede desplazarse mientras se encuentra en memoria principal. Un proceso en memoria consiste de instrucciones y datos (en algunos sistemas, también de un stack). Las instrucciones contendrán direcciones de localidades de memoria de dos ti pos: • Direcciones de datos. • Direcciones de instrucciones, usadas para instrucciones de salto. Pero estas direcciones no son fijas. Cambiarán cada vez que el proceso se intercambie. Para resol ver este problema, se distingue entre direcciones lógicas (virtuales) y direcciones físicas. Una dirección lógica indica una posición relativa al comienzo del programa. Las instrucciones del programa contienen solo direcciones lógicas. Una dirección física es, por supuesto, la posición actual en la memoria principal. Cuando el procesador ejecuta un proceso, automáticamente convierte las direcciones lógicas en físicas sumando a cada dirección lógica la posición de comienzo actual del proceso, llamada dirección base. Este es otro ejemplo de un elemento hardware del CPU diseñado para satisfacer las necesidades del sistema operativo. Las características exactas de este hardware dependen de la estrategia de gestión de memoria utilizada.

Sistema Operativo – Administración de Memoria (Memory Management) Paginación (Pagging) Tanto las particiones de

Sistema Operativo – Administración de Memoria (Memory Management) Paginación (Pagging) Tanto las particiones de tamaño fijo como las de tamaño variable son ineficaces en el aprovechamiento de la memoria. Supóngase, no obstante, que la memoria se divide en trozos iguales de tama ñofijo y relativamente pequeño, y que cada proceso también se divide en pequeños trozos de tamaño fijo. Después los trozos de un programa, conocidos como páginas, se podrían asignar a los trozos de memoria disponibles, conocidos como marcos (frames), o marcos de página. Entonces , el espacio de memoria desperdiciado por un proceso es, cuando mucho, una fracción de la última página. La siguiente figura muestra un ejemplo del uso de las páginas y los marcos. En un instante dado, algunos de los marcos de memoria están ocupados y otros están libres. La lista de marcos libres es administrada por el sistema operativo. El Proceso A, almacenado en disco, consta de cuatro páginas. Cuando llega el momento de cargar este proceso, el sistema operativo encuentra cuatro marcos libres y carga las cuatro páginas del proceso A en cuatro marcos.

Sistema Operativo – Administración de Memoria (Memory Management) Supóngase ahora, como en este ejemplo,

Sistema Operativo – Administración de Memoria (Memory Management) Supóngase ahora, como en este ejemplo, que no hay suficientes marcos contiguos sin utilizar para el proceso. ¿Hará esto que el sistema operativo no cargue el proceso A? La respuesta es no, porque de nuevamente se utiliza el concepto de dirección lógica. Ya no es suficiente una única dirección de base. En cambio, el sistema operativo mantiene una tabla de páginas para cada proceso. La tabla de páginas indica el marco que aloja a cada página del proceso. Dentro del programa, cada dirección lógica está constituida por un número de página y una dirección relativa dentro de la página. Recuérdese que en el caso de particiones simples, una dirección lógica era la posición de una palabra en relación con el comienzo del programa; el procesador la traduce a una dirección física. Con la paginación, la traducción de dirección lógica a dirección física también la realiza el hardware del procesador. El procesador debe saber cómo acceder a la tabla de páginas del proceso en curso. A partir de la dirección lógica (número de página y dirección relativa), el procesador utiliza la tabla de páginas para generar la dirección física (número de marco y dirección relativa ). Un ejemplo se muestra figura a la izquierda.

Sistema Operativo – Administración de Memoria (Memory Management) Esta aproximación resuelve el problema anteriormente

Sistema Operativo – Administración de Memoria (Memory Management) Esta aproximación resuelve el problema anteriormente indicado. La memoria principal se divide en muchos marcos pequeños de igual tamaño. Cada proceso se divide en páginas del tamaño de los marcos: los procesos más pequeños necesitan menos páginas, los procesos mayores necesitan más. Cuando un proceso se lleva a memoria, sus páginas se cargan en los marcos disponibles y la tabla de páginas se actualiza.