Está en la página 1de 17

Introduccin al Software

PROCESOS
Introduccin El presente captulo pretende ensear al estudiante algunos conceptos importantes sobre los procesos, dentro del contexto de un sistema operativo. Entre otras cosas, el lector podr comprender la definicin de proceso y su modelo de estados y transiciones de estado, aparte de comprender algunos conceptos relacionados a los procesos concurrentes. El captulo 2 culmina tratando algunos conceptos y definiciones relacionados con las secciones crticas de stos y su manejo, bloqueos mutuos y la importancia de los semforos para controlarlos. Definicin de Proceso Para poder empezar a estudiar los distintos aspectos de los procesos, primero es conveniente responder a la pregunta: Y qu es un proceso? A continuacin se citan algunas definiciones de ste trmino. Un proceso (del latn processus) es un conjunto de actividades o eventos que se realizan o suceden con un determinado fin. Este trmino tiene significados diferentes segn la rama de la ciencia o la tcnica en que se utilice. Conjunto de actividades que realiza una organizacin, mediante la transformacin de unos insumos, para crear, producir y entregar sus productos, de tal manera que satisfagan las necesidades de sus clientes. Transcurso del tiempo. Serie de fases de un fenmeno. Conjunto de recursos y actividades relacionadas entre s que transforman elementos entrantes (input) en elementos salientes (output). (ISO 8402) Llevado al campo de la informtica, se puede decir que proceso es un concepto que implica la ejecucin de un conjunto de instrucciones entregadas a la CPU para el cumplimiento de una tarea especfica sealada por algn programa en particular. Importante Un proceso es un programa que est siendo ejecutado o listo para ser ejecutado por el procesador de un sistema computacional.

Es importante destacar que se hace una ligera diferencia con el concepto de programa, el cual es una secuencia de acciones a realizar almacenadas en un archivo (de ah el concepto que un programa es un archivo ejecutable). Un proceso corresponde a las acciones que el procesador realiza para ejecutar la secuencia almacenada en el primero. En los sistemas monotarea basta con que un programa se cargue y ejecute sus instrucciones desde la primera hasta la ltima. Sin embargo, en los sistemas multitarea se hace necesario utilizar estructuras de datos que identifiquen a cada uno de los procesos que estn ejecutndose en un momento dado. Esta estructura es conocida como PCB: Process Control Block (Bloque de control de proceso). El PCB suele contener la siguiente informacin Identificador del proceso (nico) Estado del proceso Puntero (ID) hacia el proceso padre (si lo hubiese) Puntero(s) (ID) hacia el (los) proceso(s) hijo(s) (si lo(s) hubiese(n)) Prioridad del proceso Impor Punteros a las zonas de memoria asignadas al proceso tante Punteros a los recursos asignados al proceso rea de memoria asignada para almacenar el estado de los registros del proceso El procesador en el cual se est ejecutando el proceso (si es que existe ms de un procesador en el sistema)

Introduccin al Software

Estados y Transicin de Estados de un Proceso Un proceso cualquiera en un determinado momento del tiempo, puede tener uno de los siguientes 3 estados. Estado Ready (listo): El proceso est preparado para usar la CPU apenas se encuentre disponible. Estado Busy (en ejecucin): El proceso est ocupando en este momento la CPU. En los sistemas monoproceso solo puede haber un proceso en ejecucin. Estado Idle (desocupado/ocioso/bloqueado): El proceso est detenido, generalmente porque est esperando algn evento (interaccin con el usuario).

Adems, se definirn estados de transicin entre los posibles estados de un proceso. Estos estados de transicin son los siguientes (Figura 2.1). Despacho: Ready Busy Timeout: Busy Ready Bloqueo: Busy Idle Wake up: Idle Ready

Para evitar que un proceso se tome por un tiempo indeterminado la CPU u otros recursos del sistema, se define un tiempo de ejecucin mximo, llamado quantum, el cual controla procesos muy largos o infinitos. Una vez que este tiempo se ve superado el sistema desocupa la CPU para otro proceso, dejando al proceso original en estado Ready para volver a usarla. Como se dijo en prrafos anteriores, el proceso es la parte fundamental del ciclo de vida de un programa (Figura 2.2).

Clasificacin de Procesos segn el Nivel de Uso de Recursos


2

Introduccin al Software

Dentro de los procesos, una cosa muy importante a considerar es que los tiempos de uso de dispositivos E/S y la utilizacin de la CPU deben tener sincrona para que dichos ciclos no se entorpezcan entre s (Figura 2.3). De esta forma, se puede definir el nivel de uso de la CPU por un proceso con una sencilla ecuacin.

Segn el valor de este nivel de uso los procesos se clasifican en procesos I/O Bound y CPU Bound. Uso de CPU y E/S en un proceso I/O Bound

Procesos I/O bound (saltos entrada/salida) Los procesos I/O Bound son caracterizados por intervalos pequeos de uso de CPU en contraste con grandes intervalos de uso de dispositivos E/S. Esto trae como consecuencia un muy bajo nivel de uso del procesador. Ejemplos tpicos de este tipo de proceso son las tareas de impresin o el uso de editores. Uso de Cpu e E/S en un proceso I/O Bound

Procesos CPU bound (salto CPU) En un proceso CPU bound (figura 2.5), el tiempo de uso de los dispositivos de E/S en relacin al tiempo de uso de la CPU es muy pequeo. Esto trae como consecuencia un alto nivel de uso de la CPU. Ejemplos de este tipo de procesos son aquellos que involucren una gran cantidad de clculos matemticos. Uso de CPU en un Proceso CPU Bound
3

Introduccin al Software

Operaciones sobre Procesos Todos los procesos poseen un conjunto de operaciones asociadas a ellos, las cuales son detalladas a continuacin. Crear: Un proceso se crea cada vez que el usuario establece un requerimiento para el sistema (por ejemplo, imprimir un documento). Cada vez que se crea un proceso, se le asigna un nombre (PID, process ID), se crea su PCB y se determina su prioridad inicial, para insertarlo en la lista de procesos activos. Finalmente al nuevo proceso se le otorgan sus recursos iniciales y se inicia el consumo de dichos recursos. Destruir: Cuando se destruye un proceso (por ejemplo, al hacer un Kill desde sistemas UNIX o cerrndolo desde el administrador de tareas en Windows) se eliminan sus reas de datos y su PCB, sacndolo de la lista de procesos activos para finalmente desocupar los recursos que se encontraba usando en el momento de la eliminacin. Suspender: Esta labor permite ir trabajando con varios procesos a la par. De esta manera, cuando un proceso necesita una interaccin con el usuario, se puede suspender para que otro pueda usar la CPU. Algunos procesos tambin pueden ser suspendidos directamente por el usuario. Con esto el proceso se deja en estado IDLE hasta que se realice el proceso de resumir. Resumir: Corresponde a reactivar un proceso que se encontraba resumido. Este permite pasar de un estado IDLE a estado READY. Bloquear/Despertar por E/S: Los procesos se pueden bloquear esperando una recepcin o envo, es decir, una interaccin por medio de un dispositivo de entrada/salida. Una vez que esta respuesta es recibida o enviada, el proceso puede despertar. Un ejemplo de esto son las tpicas ventanas de confirmacin para los usuarios (figura 2.6).

Ejemplo: El proceso de borrado de archivos se bloquea a la espera de la confirmacin del usuario. Una vez que el usuario toma una decisin (clic en una de las alternativas) el proceso se resume.

Procesos Padres e Hijos Una particularidad importante de los procesos es que estos son capaces de dar origen a otros procesos, llamados procesos hijos. .
Important e Una vez que se destruye un proceso padre, todos los procesos hijos que se hayan originado por dicho proceso son eliminados. Sin embargo la situacin no es inversa, es ms, solo desde el proceso padre se podra eliminar a los procesos hijos.

En algunos sistemas operativos, existe un proceso llamado INIT que normalmente crea la actividad inicial de todos los procesos existentes en el sistema. ste es cargado en la memoria principal y como padre de todos los procesos no puede ser eliminado.
4

Introduccin al Software

Demonios Son procesos especiales que se ejecutan cuando el sistema parte y se ejecutan en forma asncrona, permanecen en estado bloqueado esperando por la ocurrencia de un evento, por tiempo, por la llegada o salida de mensajes, por trabajos para imprimir, etc. Hebras Las hebras (o threads) es una tcnica de estructuracin de procesos especial para mejorar el rendimiento de los sistemas operativos, reduciendo el recargo por conmutacin de proceso. Una hebra es un proceso ligero con un estado reducido. La reduccin de estado se logra disponiendo que un grupo de hebras relacionadas compartan otros recursos tales como memoria y archivos. En sistemas basados en hebras, las hebras asumen el papel de los procesos como unidad individual ms pequea para efectos de planificacin. En tales sistemas, el proceso sirve como entorno para la ejecucin de hebras. ste se convierte en una unidad propietaria de recursos, tales como memoria y archivo para un conjunto de hebras. En sistemas basados en hebras, tradicionalmente un proceso tiene una hebra, sin embargo es posible asociarle a un proceso ms de una hebra. Cada hebra pertenece a un solo proceso y ninguna hebra puede existir fuera de un proceso. Los procesos son estticos y slo las hebras pueden ser planificadas para ejecucin. Tpicamente, cada hebra representa un flujo separado de control y est caracterizada por su propia pila y estado hardware. Como todos los recursos aparte del procesador son gestionados por el proceso que las engloba, la conmutacin entre hebras es rpida y eficiente; sin embargo, la conmutacin entre hebras que pertenecen a diferentes procesos implica la conmutacin de proceso completa, con su recargo correspondiente. Las hebras pertenecientes a un mismo proceso se pueden comunicar a travs de la seccin de datos que almacena las variables globales. Se dice que ellas comparten el mismo espacio de direccin a travs del cual se comunican. Este tipo de mecanismo proporciona una concurrencia a nivel de proceso, que permite realizarla con menos costo asociado al sistema. La utilizacin de las Hebras se incluye en variados modelos de cooperacin. Entre los modelos ms utilizados se encuentran: Modelo Servidor/Trabajador: Este consiste en que el servidor es el encargado de analizar los requerimientos y elige a un trabajador para que realice la tarea. Modelo Equipo: Este consiste en que existe un conjunto de hebras iguales, donde cada una obtiene y procesa sus propias solicitudes, no hay servidor. En este caso, se puede utilizar una cola de trabajo, la cual contiene todos los trabajos pendientes. Con este esquema cada hebra debe verificar primero la cola de trabajo, antes de ver los requerimientos actuales. Modelo Pipeline: En este caso se tiene una cooperacin directa entre las hebras. Primero una hebra procesa ciertos datos que luego proporciona a la siguiente hebra que los requiere, esta siguiente hebra tambin procesar datos que luego pasar a una siguiente hebra. Administracin de Procesos (Algoritmos de Planificacin de CPU) El proceso de administracin de CPU (conocido como scheduling) est estrictamente relacionado con los procesos existentes en el sistema y se realiza sobre los siguientes criterios: Orden de llegada a la cola Prioridad Utilizacin de CPU Productividad
5

Introduccin al Software

Tiempo de espera (tiempo que los procesos estn en la cola ready) Tiempo de respuesta

Los procesos existentes en un sistema operativo suelen agruparse en tres tipos de colas: Cola de trabajos: Procesos nuevos que todava no tienen asignado un sector en la memoria principal del sistema. Cola de procesos listos (cola ready): Procesos ya estn cargados en la memoria principal que esperan listos para su ejecucin. Esta cola generalmente es una lista doblemente enlazada, con punteros en los PCB de los procesos en los extremos de la lista. Cola de E/S: Procesos que piden ejecutar un dispositivo de Entrada/Salida. Algoritmo FCFS (First Come, First Served) El algoritmo FCFS se caracteriza por la implementacin de una cola FIFO para los procesos. De esta manera, el primer proceso que llegue a la cola de procesos ser el primero en atenderse. Este algoritmo no entrega tiempos promedio de espera pequeos, por lo que podra ser desastroso ante un proceso que use la CPU por largos perodos de tiempo. Si se tiene por ejemplo 4 procesos, con la siguiente duracin (milisegundos): Proceso P1 P2 P3 P4 Tiempo (ms) 10 2 3 1

La implementacin del algoritmo FCFS para estos procesos sera la mostrada en la figura

Algoritmo SJF (Short Job First) El algoritmo SJF busca ingresar a la CPU los procesos de menor duracin en primer lugar, por lo cual es un algoritmo ptimo para reducir los tiempos de espera promedio por parte de los procesos. Generalmente se usa en colas de planificacin de largo plazo, como colas de disco. En caso de empate en duracin de dos procesos se dirime usando FCFS.

Introduccin al Software

Usando los mismos procesos del ejemplo anterior, el orden de los procesos y su tiempo de espera promedio es el siguiente.

Planificacin con prioridades En una planificacin con prioridades, cada proceso tiene asignada una prioridad, de tal manera que los procesos con ms alta prioridad son ingresados en primer lugar a la CPU. En caso de igualdad de prioridades entre dos procesos, se dirime con FCFS. Las prioridades pueden ser asignadas basndose en criterios como lmite de tiempo, requisito de memoria, nmero de archivos en uso por el proceso, o tasa de intervalos de CPU-E/S, entre otros. Algunos sistemas asignan prioridades altas con nmeros muy grandes y otros asignan prioridad alta a nmeros muy pequeos. El nico problema de la planificacin por prioridades es que a veces el continuo bloqueo y reintento de procesos de alta prioridad evita que procesos de menor prioridad se ejecuten. Como dato anecdtico, en el ao 1973 el MIT encontr un equipo IBM con un proceso que haba sido enviado el ao 1967 y que an no se haba ejecutado. Considerando a modo de ejemplo, 5 procesos, con las siguientes prioridades:
Proceso P1 P2 P3 P4 P5 Tiempo (ms) 10 2 3 1 7 Prioridad 3 1 3 4 2

La figura muestra el orden de proceso de estos en la CPU y su tiempo de espera promedio.

Introduccin al Software

Algoritmo RR (Planificacin circular Round&Robin) Esta planificacin de CPU est diseada para sistemas de tiempo compartido. Se basa en el uso de un lmite de tiempo, llamado quantum, el cual al ser superado enva al proceso en ejecucin de vuelta a la cola Ready. sta cola ser FIFO y una vez que un proceso es devuelto a la cola vuelve al final de sta, as que si un proceso se devuelve debe esperar a que pasen al menos una vez por la CPU todos los procesos restantes. El tiempo de espera promedio va a depender del tamao del quantum. Por regla emprica, al menos el 80% de los procesos deben durar menos que este tiempo, si no este mtodo terminara siendo un FCFS. Tomando como ejemplo un quantum de 3 segundos y los siguientes procesos, La figura 2.10 muestra el orden de procesamiento de stos.
Proceso P1 P2 P3 P4 P5 Tiempo (ms) 10 2 3 1 7

Como calcular el tiempo promedio de espera para estos procesos? Proceso 1: (0+12+18+22)/4 = 13ms Proceso 2 = 3ms Proceso 3 = 5ms Proceso 4 = 8ms
8

Introduccin al Software

Proceso 5 = (9+15+21)/3 = 15ms Tiempo de espera total: (13+3+5+8+15)/5 = 8.8ms Planificaciones con mltiples colas En este tipo de planificacin de CPU los procesos son agrupados segn algn criterio en una cola con una cierta prioridad. As por ejemplo, se podra tener una cola de procesos interactivos, una de procesos por lotes, una de procesos del sistema, etc. Cada una de estas colas tiene un algoritmo de planificacin propio. Los procesos pertenecen a una sola cola y no pueden moverse entre colas, a no ser que se use una planificacin con mltiples colas con realimentacin. Por ejemplo, si un proceso usa demasiado tiempo la CPU puede pasar a una cola con menor prioridad, y los procesos que llevan mucho tiempo esperando su ejecucin pueden ascender a colas de mayor prioridad, lo que evita casos como el del IBM que encontraron en el MIT. Procesos Concurrentes Dos procesos A y B son concurrentes cuando la primera instruccin de A ocurre antes de la ltima instruccin de B y la primera instruccin de B ocurre antes de la ltima instruccin de A.

Impor tante

Si dos procesos A y B se van ejecutando de forma alternada (tpico de la multiprogramacin) estamos en presencia de Concurrencia de procesos (1 CPU). Si dos procesos A y B se ejecutan al mismo tiempo, estamos en presencia de Paralalelismo de procesos (ms de 1 CPU). El paralelismo de procesos implica multiprocesamiento

Adems es necesario considerar que los procesos pueden ser: Sincrnicos: dependientes entre s (no requieren organizacin). Asincrnicos: independientes unos de otros (requieren organizacin) Concurrentes: simultneos, compiten y comparten el uso de una CPU Paralelos: Semejantes en tiempos de ejecucin y usan varias CPU

Existen muchos lenguajes de programacin que admiten paralelismo en su estructura, los cuales trabajan con enunciados como hilos de control (enunciado que permite indicar secuencias de

Introduccin al Software

ejecucin paralela) y Fusin/Reanudacin (indica la fusin de sentencias paralelas y la reanudacin de ejecucin secuencial).

Administracin de Dispositivos E/S Otra de las funciones importantes que cumple un sistema operativo es el control de todos los dispositivos de entrada/salida del sistema. Las funciones principales que encajan en la administracin E/S son las siguientes: Enviar comandos a los dispositivos Detectar interrupciones Controlar los errores Proporcionar una interfaz entre los dispositivos y el resto del sistema. Existen dos tipos principales de atencin de perifricos por parte del sistema operativo. Estos son: Polling: En este caso, la CPU da un comando de E/S al dispositivo, y luego se dedica a consultar el estado del dispositivo hasta que ste termina de ser usado. Este esquema es del tipo sincrnico (todos los eventos ocurren sincronizados). Interrupciones: A diferencia de Polling, una vez que la CPU da el comando E/S al dispositivo, sigue trabajando en paralelo, hasta que en un cierto momento este dispositivo avisa el trmino de su trabajo por medio de una seal de interrupcin. Este esquema es del tipo asincrnico (los eventos de E/S ocurren de forma independiente y en cualquier momento). Interrupciones Para poder operar eficientemente, un sistema computacional debe atender mientras trabaja ciertos eventos, ya sean internos o externos. Este proceso de atencin de eventos es conocido como interrupcin, ya que requiere que el procesador deje por un momento de lado la labor que estaba realizando para efectuar otra tarea. Quiz el ejemplo ms clsico de las interrupciones es lo que sucede cuando uno escribe un documento en un procesador de texto. Cada vez que el usuario presiona una tecla, se produce una interrupcin. En fraccin de segundos el procesador atiende la interrupcin que recibe desde el teclado, detectando que un nuevo carcter se ha generado y agregndolo al documento que est siendo editado. Incluso a veces, al presionar ciertas teclas o combinaciones de stas, puede realizar diversos conjuntos de instrucciones, como por ejemplo, pasara con un Control + C que copia en el portapapeles un sector del texto, y un Control + V que pega en el documento el contenido del portapapeles, etc. La capacidad de atender estas interrupciones requiere de soporte de hardware del equipo, tanto del procesador como de la electrnica que acompaa al dispositivo en cuestin. Adems el sistema operativo debe proporcionar las herramientas para que una vez emitida la solicitud de interrupcin sta reciba la atencin que le corresponda. Importante Las interrupciones son seales que van desde los dispositivos de E/S hasta la CPU. Su propsito es identificar los eventos que ocurren asincrnicamente con la CPU. Una interrupcin se divide en dos etapas: IRQ (Interruption Request), que es la solicitud de interrupcin desde el dispositivo de E/S hacia la CPU, y IACK (Interruption Acknowledment) que es el proceso en que la CPU enva su respuesta al dispositivo.

10

Introduccin al Software

Procesamiento de interrupciones Cuando en un sistema operativo ocurre un evento de interrupcin, se altera la secuencia normal de los programas que estn siendo ejecutados. En el momento mismo de la interrupcin, el sistema operativo debe tomar el control de sta, guardando el estado del proceso que estaba ejecutando en el momento que esto ocurre, para posteriormente analizar la interrupcin y pasar el control a la rutina apropiada para la manipulacin de la interrupcin. Esta rutina de atencin de interrupciones debe guardar todos los registros que existan antes de la interrupcin, atender al dispositivo que la origina, envindole a ste la seal IACK para evitar que ste siga enviando interrupciones al sistema, para que finalmente una vez atendido dicho dispositivo se restauren todos los registros del programa que se estaba ejecutando, normalizando el funcionamiento del sistema. Importante es destacar que no todas las interrupciones tienen el mismo nivel de importancia. Por ejemplo, una interrupcin por un aviso de bajo nivel de batera, una interrupcin por un formato imposible de un disquete, y una interrupcin por apretar suprimir para eliminar uno o ms archivos no tienen el mismo nivel de importancia. Por lo tanto se hace necesario establecer un sistema de prioridades para las interrupciones, de tal manera de que entre otras cosas se pueda deshabilitar selectivamente algunas interrupciones, enviar las interrupciones a rutinas de atencin distintas, y variar en algn momento la prioridad que tenga una interrupcin. Para eso se usa un Vector de Interrupciones (VI). Tipos de interrupciones No solo existen interrupciones de E/S. En total son 6 tipos de Interrupciones que pueden ocurrir en un sistema Operativo. Interrupciones SVC: Se produce cuando un proceso en estado de ejecucin que ejecuta la instruccin SVC. Esta ess una peticin generada por el usuario para un servicio en particular del sistema. No puede detenerse: la CPU debe darle una atencin inmediata. La consola es el perifrico que tiene mayor prioridad dentro del sistema. Interrupciones de E/S: Son iniciadas por dispositivos de E/S. Cuando ocurren, se avisa a la CPU, a travs del envo de seales indicando que el estado de un canal ha cambiado. Pueden ocurrir en cualquier momento, por ejemplo, debido al trmino de operacin, cuando falta de papel para impresora, o un dispositivo est listo, etc. Interrupciones de reinicio: Ocurren cuando el operador presiona el botn restart o la combinacin de teclas de reinicio en la consola del sistema. Interrupciones externas: Estas seales son causadas por varios eventos (agentes externos al sistema). Las interrupciones externas pueden ser eliminadas por el. Ejemplos: contador de tiempo, tecla de interrupcin, unidades externas, etc. Estas interrupciones pueden ocurrir en cualquier momento y de forma simultnea. Interrupciones por programa (verificacin): Interrupciones causadas por errores en los programas, o labores de mantenimiento de stos. Por ejemplo: Overflow, excepcin de direccionamiento, excepcin de proteccin y de divisin por cero. Interrupciones de maquina (o error de maquina): Son causadas por un mal funcionamiento del hardware. Se derivan a una rutina de diagnostico (testing del hardware). Prioridad de interrupciones
11

Introduccin al Software

El orden en el cual son atendidas las interrupciones depende de la prioridad que ellas tengan. Generalmente este orden es: Error de mquina / Reinicio de mquina Interrupcin de programa / SVC (Supervisor Call) Interrupciones Externas Interrupciones de E/S

Importante Listado de nmeros de IRQ Tpicos IRQ - Dispositivo 1 - Timer del Sistema 2 - Teclado 3 - Interrupciones en Cascada para IRQs 8-15 4 - Puerto Serie (COM2) 5 - Puerto Serie (COM1) 6 - Tarjeta de Sonido 7 - Controlador Floppy 8 - Reloj de sistema 9 - Interrupcin disponible para perifricos extra 10 - Interrupcin disponible para perifricos extra 11 - Interrupcin disponible para perifricos extra 12 - Mouse PS/2 o Tarjeta de Red 13 - Coprocesador Matemtico (Operaciones de punto Flotante 14 - Canal IDE Primario 15 - Canal IDE Secundario

DMA (Direct Access Memory)


El mtodo de control de dispositivos de E/S va interrupciones ocupa tiempos de CPU muy pequeos en comparacin a los que podran ser usados si estos dispositivos se controlaran directamente desde los programas que los necesiten. Sin embargo, estos mtodos obligan a realizar la transferencia de los datos por la CPU, por lo que las operaciones E/S se veran limitadas a la velocidad con la que el procesador las pueda atender. Esto trae como consecuencia una limitacin en la velocidad de transferencia de estos procesos y un aumento no deseable en la actividad de la CPU. Por lo tanto, cuando se tienen que transferir grandes cantidades de datos a una velocidad muy elevada, es necesario disponer de una tcnica que realice de forma ms directa las transferencias entre la memoria y el dispositivo E/S, limitando al mximo la intervencin de la CPU en el sistema. Esta tcnica se conoce como DMA, acceso directo a memoria. DMA (figura 3.7) se trata bsicamente de un mdulo con capacidad para escribir o leer directamente en la memoria los datos en trnsito de los dispositivos E/S. Para ello, debe solicitarlo a la CPU. Antes que la CPU conceda acceso a memoria al DMA, se pone en alto grado de impedancia su conexin a los buses de sistema (como el bus de datos, el bus de direcciones y el bus de lectura/escritura), lo que es equivalente a desconectarse de la memoria durante el tiempo que es gestionado por el DMA. Cuando finaliza la gestin de E/S el DMA genera una interrupcin y la CPU vuelve a tomar control de la memoria. Esto trae como consecuencia una velocidad de transferencia de datos solo limitada por el ancho de banda de la memoria.

12

Introduccin al Software

Figura 3.7 Esquema de funcionamiento de DMA Para gestionar las transferencias de informacin, un controlador de DMA dispone de 3 registros: datos, direccin y contador de palabras. El registro de direccin almacena la direccin de la siguiente palabra a transmitir, incrementndose de forma automticamente despus de cada transferencia. El contador de palabras almacena el nmero de palabras que quedan por transmitir, por lo que se decrementa cada vez que termina una transferencia. Finalmente la lgica de control comprueba el contenido del contador de palabras y finaliza la operacin cuando su valor llega a cero. Un decodificador se encargar de identificar la direccin de memoria asignada al DMA; por lo tanto, la CPU debe enviar la siguiente informacin al DMA cada vez que se quiera ejecutar una accin de E/S. Sentido de la operacin E/S (Lectura o escritura) Direccin del dispositivo E/S Posicin de memoria donde comienza el bloque que se va a leer o escribir Nmero de palabras que componen el bloque a modificar

Transmitida esta informacin, la CPU se dedica a realizar cualquier otra tarea que tenga pendiente, dejando al DMA como responsable de toda la operacin E/S. ste ltimo transfiere completamente y palabra por palabra el bloque de trabajo a la memoria, sin pasar por la CPU. Al terminar esta operacin se enva una interrupcin a esta ltima. Para poder transferir desde o hacia la memoria, el DMA debe controlar el bus de datos o el de direcciones por un perodo determinado. Este proceso no tiene que ser obligatoriamente continuo, por lo que este trabajo puede ser dividido en pequeos intervalos que alternan con la CPU. Entre las alternativas de control del bus se encuentran las siguientes: Rfagas: El DMA toma el control del BUS y no lo libera hasta haber transmitido un ciclo de datos completo. Este mtodo obtiene la mayor velocidad de transferencia pero puede tener a la CPU durante un largo perodo de tiempo ociosa. Robo de ciclos: El DMA toma el control del BUS durante un solo ciclo, y luego lo devuelve. Es la forma ms usual de transferencia. Transparencia: El DMA slo toma control del BUS cuando la CPU no lo est utilizando. Este mtodo es natural y no afecta el rendimiento de la CPU, pero podra reducir el tiempo de transferencia E/S si es que la CPU requiere los buses durante largos perodos de tiempo. En resumen, los pasos que se siguen en la transferencia de DMA son los siguientes: 1. La CPU ejecuta las instrucciones de E/S que son necesarias para activar DMA (Registro de direccin y contador de palabras).

13

Introduccin al Software

2. Cuando el DMA est listo para transmitir los datos, activa una lnea de peticin directa hacia la CPU. La CPU concede entonces el control de los buses de datos y de direcciones al DMA y activa su lnea de reconocimiento. 3. DMA empieza a transmitir la informacin desde o hacia el dispositivo de E/S. Despus de transmitir una palabra, se aumenta el registro de direccin y se disminuye el contador de palabras restantes. 4. Si por alguna razn un dispositivo que est usando DMA no ha terminado su operacin pero no est preparado para enviar o recibir nuevos datos, el DMA devuelve el control de los buses a la CPU, para que vuelva a su trabajo normal, esperando un evento que despierte al proceso para volver a enviarlo a DMA en algn momento posterior. 5. Cuando el contenido del contador de palabras llega a cero, el proceso de transmisin ha terminado, por lo que el controlador DMA libera los buses y retorna su control a la CPU.

Administracin de Memoria
Para poder optimizar el uso de la CPU y la velocidad que esta tenga al atender a los usuarios, sistema operativo debe cargar varios procesos en memoria, administrando esta ltima de manera ms eficiente posible. En los siguientes apartados, se estudiarn conceptos asociados a administracin de memoria, como Memoria Virtual, Swapping, Segmentacin, Paginacin, Fragmentacin. el la la y

Memoria Virtual
Como su nombre lo indica, la Memoria Virtual es una memoria que no existe fsicamente. La memoria virtual es generada por medio de una combinacin de capacidades del hardware del sistema y el propio sistema operativo. Generalmente es una forma de almacenamiento en el disco duro, administrado de forma muy especial para tratar de acelerar al mximo la velocidad de acceso y flujo de datos hacia la memoria RAM verdadera. Al residir en el disco duro, su gran limitante radica en el hecho que los tiempos de acceso a la informacin estn limitados por ste, lo que lo hace mucho ms lenta que la memoria convencional. La memoria virtual es, ms que una memoria que reemplace a la memoria RAM, una ayudante de sta; cuando el sistema est sobrecargado de procesos, los cuales en su totalidad de tamao superan a la capacidad de la RAM total del sistema, la memoria virtual puede guardar momentneamente la informacin de importancia que no alcanza a cargarse en la memoria fsica. La memoria virtual generalmente es manejada por el sistema operativo sin operacin intermedia por parte del usuario. Sin embargo el usuario puede fijar la cantidad mxima y mnima de la memoria virtual del sistema.

Swapping
Como se ha nombrado anteriormente, el planificador de mediano plazo, est relacionado al concepto de Swapping, es decir, el proceso de intercambio de informacin entre la memoria fsica y la memoria virtual. Por lo general, los tiempos de E/S de los procesos son superiores a los tiempos de CPU de stos, por lo que durante importantes intervalos de tiempo la memoria no est siendo realmente utilizada. Esto permitira perfectamente despejar estos sectores de memoria para ser utilizados por otros programas que si lo requieran. La idea principal del Swapping consiste en mantener, en la memoria virtual, una copia de cada programa que est cargado en la memoria principal, de tal manera de traspasar dicha copia a memoria principal cada vez que se requiera. Como cada programa tendr su correspondiente copia en la memoria virtual, en caso de sobrecarga, no ser necesario traspasar los programas de menor uso o prioridad a la memoria virtual solo ser necesario borrarlos de la memoria RAM del sistema. Para usar la tcnica del Swapping se recomienda dividir la memoria RAM en tres sectores principales: Sector de almacenamiento de datos: Implican intercambio de datos de entrada y salida. Sector de almacenamiento de programas: Implica intercambio de datos slo de salida. Sector de almacenamiento compartido: No implica intercambio de datos.

Segmentacin
Como se acaba de nombrar en el apartado anterior, lo ideal sera poder dividir la memoria RAM en tantos segmentos de longitud variable como sea posible. Esto traera muchas ventajas desde el punto de la administracin de la memoria. En primer lugar se hace ms fcil trabajar con sectores
14

Introduccin al Software

pequeos de memoria. Adems, no es necesario tener todo el programa cargado en sta a la vez; basta solo tener los segmentos que verdaderamente estn formando parte de la ejecucin del proceso. El procedimiento de dividir la memoria en pequeos sectores de largo variable es conocido como segmentacin. Al considerar que estos segmentos tienen largo variable, existe la posibilidad de que exista overhead, por lo que es conveniente minimizar las transacciones de las secciones que presenten este problema. Esto puede lograrse haciendo que las palabras que son referenciadas en forma cercana pertenezcan a un mismo segmento. Tpicamente, una rutina debera corresponder a un mismo segmento; un arreglo, o una estructura de datos tambin deberan ser almacenadas ordenadamente en un mismo segmento. Un segmento es descrito por un descriptor que, entre otras cosas, apunta a la base del segmento en memoria. Todos los descriptores de segmentos se almacenan en una tabla de segmentos. Hay una tabla de segmentos para cada proceso y la base y el tamao de cada segmento se anotan en el descriptor mismo de cada segmento. Una direccin virtual es un par ordenado (s, d), donde s es el ndice dentro de la tabla de segmentos (no es directamente el apuntador al bloque) y d es un desplazamiento hacia el segmento (celda inicial dentro del segmento, no del bloque). Por lo tanto: Direccin_Real Tabla_segmento s = base + d; Direccin_Virtual (s, d) Luego, un mecanismo de planificacin de segmentos busca el segmento s dentro de la tabla de segmentos y determina si el segmento se encuentra dentro de la memoria real. Algunos de los problemas tpicos que se pueden producir, son: 1. s est fuera del rango lmite de la tabla de segmentos 2. d es mayor que el desplazamiento mximo del segmento s. 3. El segmento referenciado por la tabla de segmentos no aparece en la memoria principal. Un descriptor de segmentos se compone de tres campos de atributos y tres campos de datos.

Index

Type

State

Lenght

Base

Limit

Index: ndice del descriptor dentro de la tabla de segmentos Type: Programa, dato o descriptor compartido State: Indica el tipo de memoria en el que est alojado (principal, secundaria o de intercambio) Length: Largo del segmento Base: Direccin de memoria inicial del segmento Limit: Direccin de memoria mxima del segmento

Figura 3.9 Procesos corriendo en un sistema con 16 MB de RAM.

15

Introduccin al Software

Paginacin
Cuando los trozos de memoria son de tamao fijo se denominan pginas. La memoria entonces es particionada en trozos del mismo tamao que las pginas. De esta manera para la paginacin el direccionamiento virtual es de la siguiente manera: Direccin_Virtual (p, d) Donde p es el indicador de la pgina y d es el desplazamiento dentro de ella. De manera anloga, se utiliza una tabla de pginas en la cual sern almacenadas todas las referencias a la pgina. El descriptor de pginas, que tambin de forma anloga al descriptor de segmentos, slo se diferencia en que no tiene el campo de largo de pgina. En un rgimen permanente, todos los marcos van a tender a estar ocupados, luego ser necesario ir desalojando marcos no utilizados para almacenar all las pginas faltantes de otro proceso que sea demandado. El mtodo de paginacin permite tener pginas compartidas entre varios programas. Normalmente tambin existe un BIT que indica si una determinada pgina ha sido modificada o no, lo cual es utilizado para determinar si el contenido de una pgina almacenada en un marco debe ser copiado a memoria secundaria o no. Resulta conveniente tener informacin, asociada a cada marco, que permita decidir que pgina desalojar y cual traer a memoria principal. Esta informacin es almacenada en una tabla de marcos y los distintos procesos (esquemas) de decisin de paginacin se llaman algoritmos de reemplazo. Existe un gran nmero de algoritmos de reemplazo de entre los cuales se har mencin a cuatro: Aleatorio: Es el algoritmo ms sencillo; supone que es imposible adivinar que pgina ser requerida en el futuro. Cuando es necesario traer alguna pgina a memoria principal selecciona aleatoriamente un marco y lo desaloja para dejar el espacio requerido. Cclico: Es un mtodo bastante simple, el cual consiste en ir trayendo pginas, no necesariamente en orden, a memoria principal y cada vez que sea requerido un espacio se desaloja el marco siguiente al ltimo utilizado. En otras palabras, se va buscando cclicamente en la tabla de marcos, de modo que una pgina debe esperar todo un ciclo para ser desalojada. Este mtodo supone que el tiempo de utilizacin de una pgina es muy cercano al tiempo promedio de utilizacin. FIFO: Supone que la probabilidad de la utilizacin de una determinada pgina es una funcin decreciente en el tiempo. Requiere de una cola FIFO, en la que se van anotando las pginas a medida que van siendo tradas a memoria principal. LRU: El mtodo de el ltimo recientemente usado (Last Recently Used). Se basa en el hecho de que algunas pginas son mucho ms utilizadas que otras. La suposicin es que la probabilidad de que una pgina sea utilizada depende del intervalo de tiempo transcurrido desde su ltima utilizacin. A menor intervalo mayor probabilidad de seguir utilizando la pgina. Por lo tanto se desalojan las de mayor intervalo de tiempo transcurrido. Los mtodos mencionados anteriormente son slo de desalojo de marcos. El ideal de todos estos mtodos es nunca llegar a desalojar una pgina que ser referenciada muy prximamente. As mismo, existen tcnicas de paginacin para realizar el intercambio desde memoria secundaria a principal. El ms simple de ellos es paginar slo cuando sea necesario. Una forma ms eficiente y ms compleja es utilizar algn medio de paginacin anticipada, el cual consiste en adivinar que pgina del almacenamiento secundario ser requerida en el futuro prximo y cuando la CPU disponga de un quantum de tiempo ocioso calcular que pgina es posible desalojar y, entonces, realizar la paginacin anticipada. Si el nmero de marcos asignados a un proceso de baja prioridad desciende por debajo del nmero mnimo requerido por la arquitectura del computador, se debe suspender la ejecucin de ese proceso. Luego se deben descargar sus pginas restantes, liberando todos los marcos asignados. Si un proceso no posee suficientes marcos asignados, provocar errores de pgina frecuentes; sin embargo como todas sus pginas estn activas, deber descargar una pgina que muy probablemente se volver utilizar dentro de un breve lapso de tiempo. Por consiguiente vuelve a efectuar un error de pgina una y otra vez. A esta altsima actividad de paginacin se le conoce como hiperpaginacin; anlogamente existe la hipersegmentacin. Se dice que un proceso se encuentra en fase de hiperpaginacin cuando emplea ms tiempo paginando que procesando (ejecutando).

16

Introduccin al Software

Fragmentacin
Tanto para el caso de la paginacin, como para el de la segmentacin (y en general en todos los sistemas de cmputo, sea cual sea la organizacin de su almacenamiento), se presenta un fenmeno de fragmentacin de los dispositivos de almacenamiento. En los sistemas de multiprogramacin y particiones fijas, la fragmentacin se presenta porque los trabajos de los usuarios (pginas) no llenan por completo las particiones designadas (marcos) o porque una particin se queda sin utilizar por ser demasiado pequea para almacenar una tarea en espera. La fragmentacin se presenta en todas las formas de almacenamiento y a todo nivel de informacin. En el caso de la paginacin, cuanto menor sea el tamao de las pginas, ms pginas y marcos de pgina habr y mayores tendrn que ser las tablas de marcos. El desperdicio de almacenamiento primario debido a tablas excesivamente grandes se denomina fragmentacin de tablas. Para el caso de particiones variables y fijas, tambin existe una forma de fragmentacin de la informacin en el sentido que, a pesar de estar ocupadas todas las particiones, la informacin corresponde a una misma tarea se encuentra dispersa en una serie de particiones no contiguas y ni siquiera en un orden ascendente o descendente.

17

También podría gustarte