20
ASIR-ISO 1-2 1 1 GESTIÓN DE PROCESOS Y DEL PROCESADOR 1.1 QUÉ ES UN PROCESO Un proceso es el programa que se está ejecutando en ese momento en el ordenador. En los sistemas multitarea, se pueden ejecutar a la vez varios procesos. Como la CPU no puede realizar más que un proceso a la vez, lo que hace es dedicar su tiempo en fracciones de segundo a cada proceso. La rapidez con que la CPU dedica de forma alterna su tiempo a los diferentes procesos, puede inducir a pensar que los procesos se ejecutan simultáneamente, pero no es así: la CPU divide su tiempo en fracciones de segundo que son asignadas a cada proceso para ser ejecutadas, pero por supuesto no de forma simultánea. El tiempo compartido consiste en dividir el tiempo de ejecución en minúsculos intervalos (milisegundos) e ir asignando cada uno de esos intervalos a cada proceso que esta en ejecución. 1.2 ESTADOS DE UN PROCESO Cada proceso atraviesa varias fases durante su “ejecución”, en un momento dado el proceso estará ejecutándose, posteriormente estará en espera, estando la CPU ejecutando otro proceso; mientras otros procesos estarán en espera para ser lanzados o bloqueados... Pues bien, en estos cambios de procesos en ejecución, el sistema operativo debe controlar no solo cuál de los procesos debe ejecutarse en la siguiente fracción de tiempo de CPU, sino que además debe saber que ficheros están utilizando, qué periféricos, etc., en general en qué momento de la ejecución se encuentra cada uno de los procesos. Es decir, necesita almacenar las especificaciones de cada uno de los procesos que se están ejecutando, sus tiempos y prioridades, para partir del mismo punto en el que se dejó la última vez que el proceso tuvo asignado un intervalo de CPU. Esta información se almacena en el PCB (bloque de control de proceso), que a su vez forma parte de la tabla de procesos. Los estados por los que puede pasar un proceso son: En ejecución o listo: el procesador está ejecutando instrucciones de ese proceso en un instante concreto. Preparado: un proceso está preparado para ser ejecutado, es decir, está esperando el turno para poder utilizar su intervalo de tiempo. Bloqueado: el proceso en cuestión está retenido, es decir, está bloqueado debido a causas múltiples. Una de esas causas puede ser que dos procesos estén utilizando el mismo fichero de datos o que esté esperando el resultado de una operación de entrada/salida. Las transiciones entre cada uno de estos estados también están definidas por el sistema operativo y se producirán: Transición A: ocurre cuando un programa que está en ejecución necesita algún recurso, señal, dato, etc, para poder seguir ejecutándose. Transición B: cuando un programa o proceso ha utilizado el tiempo asignado por la CPU para su ejecución y tiene que dejar paso al siguiente proceso.

TEMA1b virtualizacion

Embed Size (px)

DESCRIPTION

iso asir virtualizacion vmware

Citation preview

  • ASIR-ISO 1-2

    1

    1 GESTIN DE PROCESOS Y DEL PROCESADOR 1.1 QU ES UN PROCESO

    Un proceso es el programa que se est ejecutando en ese momento en el ordenador.

    En los sistemas multitarea, se pueden ejecutar a la vez varios procesos.

    Como la CPU no puede realizar ms que un proceso a la vez, lo que hace es dedicar su tiempo en fracciones de segundo a cada proceso. La rapidez con que la CPU dedica de forma alterna su tiempo a los diferentes procesos, puede inducir a pensar que los procesos se ejecutan simultneamente, pero no es as: la CPU divide su tiempo en fracciones de segundo que son asignadas a cada proceso para ser ejecutadas, pero por supuesto no de forma simultnea. El tiempo compartido consiste en dividir el tiempo de ejecucin en minsculos intervalos (milisegundos) e ir asignando cada uno de esos intervalos a cada proceso que esta en ejecucin.

    1.2 ESTADOS DE UN PROCESO Cada proceso atraviesa varias fases durante su ejecucin, en un momento dado el proceso

    estar ejecutndose, posteriormente estar en espera, estando la CPU ejecutando otro proceso; mientras otros procesos estarn en espera para ser lanzados o bloqueados...

    Pues bien, en estos cambios de procesos en ejecucin, el sistema operativo debe controlar no solo cul de los procesos debe ejecutarse en la siguiente fraccin de tiempo de CPU, sino que adems debe saber que ficheros estn utilizando, qu perifricos, etc., en general en qu momento de la ejecucin se encuentra cada uno de los procesos.

    Es decir, necesita almacenar las especificaciones de cada uno de los procesos que se estn ejecutando, sus tiempos y prioridades, para partir del mismo punto en el que se dej la ltima vez que el proceso tuvo asignado un intervalo de CPU. Esta informacin se almacena en el PCB (bloque de control de proceso), que a su vez forma parte de la tabla de procesos.

    Los estados por los que puede pasar un proceso son:

    En ejecucin o listo: el procesador est ejecutando instrucciones de ese proceso en un instante concreto.

    Preparado: un proceso est preparado para ser ejecutado, es decir, est esperando el turno para poder utilizar su intervalo de tiempo.

    Bloqueado: el proceso en cuestin est retenido, es decir, est bloqueado debido a causas mltiples. Una de esas causas puede ser que dos procesos estn utilizando el mismo fichero de datos o que est esperando el resultado de una operacin de entrada/salida.

    Las transiciones entre cada uno de estos estados tambin estn definidas por el sistema

    operativo y se producirn:

    Transicin A: ocurre cuando un programa que est en ejecucin necesita algn recurso, seal, dato, etc, para poder seguir ejecutndose.

    Transicin B: cuando un programa o proceso ha utilizado el tiempo asignado por la CPU para su ejecucin y tiene que dejar paso al siguiente proceso.

  • ASIR-ISO 1-2

    2

    Transicin C: cuando el proceso que est preparado pasa a ser el proceso en ejecucin, es decir, cuando al proceso le llega una nueva disposicin del tiempo de CPU para poder ejecutarse.

    Transicin D: cuando el proceso pasa de estar bloqueado a estar preparado, es decir, cuando el proceso recibe la orden o seal o dato que estaba esperando, en ese momento ya solo le falta que le asignen tiempo de CPU para ejecutarse. Pasa a estado preparado, a esperar el turno de tiempo de CPU y posteriormente al estado de ejecucin.

    El esquema anterior de procesos es muy terico, tambin se habla de modelos mas simples como el de 2 estados (En ejecucin o No Ejecucin) o el de 5 estados (Nuevo, Ejecucin, Listo o Preparado, Bloqueado y Terminado). En realidad la situacin de los procesos es mucho mas compleja que lo aqu explicado.

    1.3 PLANIFICACIN DE PROCESOS El SO realiza una labor de planificacin, que permite determinar qu proceso hay que ejecutar en

    cada momento. Existen distintos algoritmos de planificacin. Algunas de las caractersticas de estos algoritmos deben ser la imparcialidad, la equidad, la eficiencia, el tiempo de respuesta y el rendimiento.

    1.3.1 EVALUACIN DE LOS ALGORITMOS DE PLANIFICACIN

    Existen ciertas medidas que se utilizan para evaluar los algoritmos de planificacin.

    Porcentaje de Utilizacin de la CPU por procesos de usuario. La CPU es un recurso caro que necesita ser explotado, los valores reales suelen estar entre un 40% y un 90%.

    Rendimiento (throughput) = n de rfagas por unidad de tiempo. Se define una rfaga como el perodo de tiempo en que un proceso necesita la CPU; un proceso, durante su vida, alterna rfagas con bloqueos. Por extensin, tambin se define como el n de trabajos por unidad de tiempo.

    Tiempo de espera (E) = tiempo que una rfaga ha permanecido en estado preparado (no est utilizando la CPU).

    Tiempo de finalizacin (F) = tiempo transcurrido desde que una rfaga comienza a existir hasta que finaliza. F = E + t (t = tiempo de CPU de la rfaga).

    Penalizacin (P) = ( E + t ) / t = F / t, es una medida adimensional que se puede aplicar homogneamente a las rfagas independientemente de su longitud.

    En general, hay que maximizar los dos primeros parmetros y minimizar los tres ltimos. Sin embargo, estos objetivos son contradictorios, el dedicar ms tiempo de CPU a los usuarios se hace a costa de llamar menos al algoritmo de planificacin (menos cambios de proceso), y de simplificarlo. Esto provoca que la CPU se reparta menos equitativamente entre los procesos, en detrimento de los ltimos tres parmetros.

    As pues, los algoritmos de planificacin del SO se elegirn dependiendo de los objetivos del sistema. En los sistemas por lotes suele primar el rendimiento del sistema, mientras que en los sistemas interactivos es preferible minimizar, por ejemplo, el tiempo de espera.

    1.3.2 TIPOS DE PLANIFICACIN

    Hay dos tipos de algoritmos: no apropiativos y apropiativos. Un algoritmo de planificacin es no apropiativo si una vez que la CPU ha sido asignada al proceso, ya no se le puede arrebatar. Y por el contrario, es apropiativo, si se puede quitar la CPU a los procesos.

    Planificacin no apropiativa

    Un proceso nunca abandona el procesador hasta que finaliza o se bloquea por alguna razn externa al proceso. Se emplea en los procesos por lotes y no es adecuado para los procesos compartidos o de tiempo real.

    En los sistemas no apropiativos, los trabajos largos retrasan a los cortos, pero el tratamiento para todos los procesos es ms justo. Los tiempos de respuesta son ms predecibles porque los trabajos nuevos de alta prioridad no pueden desplazar a los trabajos en espera.

    Planificacin apropiativa

  • ASIR-ISO 1-2

    3

    El SO puede interrumpir la ejecucin de un proceso con el fin de estudiar si puede seguir siendo ejecutado o debe ser otro el que lo haga, quedando este ltimo bloqueado, o preparado.

    La planificacin apropiativa es til en los sistemas en los cuales los procesos de alta prioridad requieren una atencin rpida. En los sistemas de tiempo compartido, la planificacin apropiativa es importante para garantizar tiempos de respuesta aceptables.

    La apropiacin tiene un precio. El cambio de proceso implica gasto extra. Para que la tcnica de apropiacin sea efectiva deben mantenerse muchos procesos en memoria principal de manera que el siguiente proceso se encuentre listo cuando quede disponible la CPU. Conservar en memoria principal procesos que no estn en ejecucin implica gasto extra.

    1.4 ALGORITMOS DE PLANIFICACIN Dentro de los algoritmos de planificacin, citaremos algunos de los ms importantes.

    1.4.1 ALGORITMO FIFO (First Input, First Output, Primero en Entrar-Primero en Salir):

    El algoritmo FIFO (First In First Out) es el ms sencillo pero el menos eficaz. Como su nombre indica, los procesos se ejecutan segn el orden de llegada, es decir, el primero en llegar es el primero en salir o ejecutarse. El procesador ejecuta cada proceso hasta que termina. Es un algoritmo no apropiativo.

    La ventaja de este algoritmo es su fcil implementacin. Para implementar el algoritmo slo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sita el ltimo de la cola.

    Ejemplo:

    En a) el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados.

    En b) P7 se bloquea (ya sea al realizar una E/S u otra causa) y P2 pasa a ocupar la CPU.

    En c) ocurre un evento (finalizacin de la operacin de E/S,...) que desbloquea a P7, esto lo vuelve listo, pasando al final de la cola de procesos listos.

    Caractersticas

    No apropiativo

    Es justo

    Los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los importantes

    Es predecible

    No es vlido para entornos interactivos, ya que no garantiza buenos tiempos de respuesta (un proceso largo puede impedir que se ejecuten los otros durante mucho tiempo).

    El rendimiento vara mucho en funcin de que proceso llega primero.

    Veamos un ejemplo:

    Supongamos que en un momento dado existen tres rfagas listas R1, R2 y R3, sus tiempos de ejecucin respectivos son 24, 3 y 3 ms. El tiempo medio de finalizacin (F) de las rfagas aplicando FIFO

    R1 tR1=24ms

  • ASIR-ISO 1-2

    4

    R2 tR2=3ms

    R3 tR3=3ms

    Primero planteamos el esquema temporal del algoritmo.

    Calculamos los tiempos de espera:

    ER1=0ms

    ER2=24ms

    ER3=27ms

    Calculamos ahora el Tiempo de Finalizacin para cada proceso:

    FR1=0+24= 24ms

    FR1=24+3= 27ms

    FR1=27+3= 30ms

    De estos valores deducimos el tiempo medio de finalizacin:

    F=FRi/i=[24+27+30]/3=27ms

    Por ultimo calculamos las penalizaciones.

    PR1= 24/24=1

    PR2=27/3=9

    PR3=30/3=10

    1.4.2 ALGORITMO SJF (Short Job First, primero el proceso ms corto):

    Al igual que en el algoritmo FIFO es un algoritmo no apropiativo.

    Su caracterstica es que cuando se activa el planificador, ste elige la rfaga de menor duracin. Es decir, introduce una nocin de prioridad entre rfagas.

    Ejemplo:

    Supongamos que en un momento dado existen tres rfagas listas R1, R2 y R3, sus tiempos de ejecucin respectivos son 24, 3 y 3 ms. El tiempo medio de finalizacin (F) de las rfagas aplicando SJF:

    R1 tR1=24ms

    R2 tR2=3ms

    R3 tR3=3ms

    Primero planteamos el esquema temporal del algoritmo.

  • ASIR-ISO 1-2

    5

    Calculamos los tiempos de espera:

    ER1=6ms

    ER2=0ms

    ER3=3ms

    Calculamos ahora el Tiempo de Finalizacin para cada proceso:

    FR1=0+24= 30ms

    FR1=24+3= 3ms

    FR1=27+3= 6ms

    De estos valores deducimos el tiempo medio de finalizacin:

    F=FRi/i=[30+3+6]/3=13ms

    Por ultimo calculamos las penalizaciones.

    PR1= 30/24=1,25

    PR2=3/3=3

    PR3=6/3=2

    Caractersticas:

    No apropiativo

    Se consigue el tiempo de espera ptimo

    Mejora mucho el tiempo de finalizacin de los procesos cortos.

    La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalizacin promedio.

    Se puede demostrar que este algoritmo obtiene el mejor tiempo medio de finalizacin. Para ello, consideremos el caso de cuatro rfagas, con tiempos de ejecucin de a, b, c y d. La primera rfaga termina en el tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalizacin es (4a+3b+2c+d)/4. Es evidente que a contribuye ms al promedio que los dems tiempos, por lo que debe ser la rfaga ms corta, b la siguiente, y as sucesivamente. El mismo razonamiento se aplica a un nmero arbitrario de rfagas.

    No obstante, este algoritmo slo es ptimo cuando se tienen simultneamente todas las rfagas.

    1.4.3 ALGORITMO DE ROUND-ROBIN (RUEDA)

    Es un algoritmo apropiativo.

    Este es uno de los algoritmos ms antiguos, sencillos y equitativos en el reparto de la CPU entre los procesos, muy vlido para entornos de tiempo compartido.

    Asigna un tiempo de ejecucin igual (que se denomina quantum) a los diferentes procesos de forma rotativa.

    Cuando un proceso consume su tiempo sin haber concluido su ejecucin, pasa a la cola de preparados para volver a entrar cuando llegue su turno.

    Ningn proceso puede permanecer ms tiempo del asignado al quantum en CPU, y si alguno termina antes entonces provocar una interrupcin para que el sistema ceda el procesador a otro proceso.

    El round robin es muy fcil de implementar. Todo lo que necesita el planificador es mantener una lista de los procesos listos.

    Ejemplo 1:

  • ASIR-ISO 1-2

    6

    Lista de Procesos PREPARADOS en Round-Robin

    En a) el proceso P7 ocupa la CPU.

    En b) P7 se bloquea pasando P2 a ocupar la CPU.

    En c) P2 agota su quantum con lo que pasa al final de la lista y P4 ocupa la CPU.

    Ejemplo 2:

    La siguiente figura representa un ejemplo ms largo de la ocupacin de la CPU utilizando el algoritmo round robin.

    Ejemplo de Round-Robin

    El rendimiento de este algoritmo depende del valor del Quantum. Entonces, Debe el Quantum ser pequeo o grande?, fijo o variable?, el mismo para todos los usuarios o debe determinarse por separado para cada uno? El ideal es aquel que acapara el 80% de un proceso corto. Si el Quantum es demasiado pequeo se perder mucho tiempo ya que la rutina de asignacin emplear mucho tiempo. Si por el contrario, el Quantum es muy alto, se convierte en FIFO.

    Caractersticas

    Apropiativo

    Equitativo

    Este algoritmo tiene como finalidad el proporcionar un buen ndice de respuesta tanto para los procesos cortos como para los largos.

    1.4.4 ALGORITMO SRTF (Short Remaining Time First, primero el proceso al que le queda menos tiempo):

    Es la versin apropiativa del algoritmo SJF, con la diferencia de que si un nuevo proceso pasa a preparado se activa el planificador para ver si es ms corto que lo que queda por ejecutar del proceso en ejecucin. Si es as el proceso en ejecucin pasa a preparado y su tiempo de estimacin se decrementa con el tiempo que ha estado ejecutndose.

    Este algoritmo permite asignar el tiempo de ejecucin de forma prioritaria a procesos muy cortos para ejecutarlos en el menor tiempo posible. Si se est ejecutando un proceso ms largo, el SO le quitar la ejecucin de la CPU para asignrsela al proceso mas corto. De esta forma, el usuario del proceso corto obtendr resultados en un tiempo mnimo, y el usuario del proceso largo casi no notar esa circunstancia.

    En la siguiente figura tenemos un ejemplo de funcionamiento del algoritmo en el que se observa cmo se penalizan las rfagas largas (como en SJF).

  • ASIR-ISO 1-2

    7

    Un punto dbil de este algoritmo se evidencia cuando una rfaga muy corta suspende a otra un poco ms larga, siendo ms larga la ejecucin en este orden al ser preciso un cambio adicional de proceso y la ejecucin del cdigo del planificador.

    Ejemplo de SRTF y SJF

    1.4.5 ALGORITMO POR PRIORIDADES O MULTINIVEL

    Es uno de los ms complejos y eficaces.

    Asigna los tiempos de ejecucin de la CPU en funcin de unas listas de prioridades. En cada una de estas listas, el sistema operativo incluir aquellos procesos a los que se haya asignado esa prioridad. El tiempo de ejecucin del procesador se ir destinando, en primer lugar, de forma secuencial a los procesos de mayor nivel. Terminados estos, se ejecutarn los procesos de nivel inferior, y as sucesivamente, hasta llegar a los procesos de nivel ms bajo.

    Si los procesos no llegan al mismo tiempo, entonces puede ocurrir que un proceso posterior tenga una prioridad ms alta que el que se est ejecutando. En este caso el planificador actuar de una manera o de otra dependiendo de si es apropiativo o no. Cuando las prioridades entre procesos sean iguales, se aplicar FIFO.

    Existen otros algoritmos muy conocidos, adems de los citados, pero stos son los ms significativos.

    1.5 SINCRONIZACIN DE PROCESOS Los procesos de sincronizacin de un sistema operativo consiguen que los programas se ejecuten

    en el orden adecuado y sin interferencias entre ellos.

    Cuando se ejecutan varios procesos a la vez, es posible, que stos compartan unos o varios recursos del sistema (pantalla, memoria...). El objetivo del sistema operativo es permitir que varios procesos compartan recursos sin que se produzcan problemas.

    En este sentido, los procesos pueden ser independientes o cooperantes entre s:

    Los procesos independientes van a obtener el mismo resultado con independencia del orden en el que se ejecuten.

    Los procesos cooperantes comparten informacin y su resultado va a depender del orden en el que se ejecuten. Por ejemplo, dos procesos que se ejecutan a la vez y escriben en la misma zona de la pantalla, uno escribiendo abc y el otro cba. Segn el orden de ejecucin de los procesos en la pantalla podr verse abccba, acbbca u otras combinaciones. Situaciones similares se pueden dar si los dos procesos intentan escribir a la vez en un fichero o imprimir.

  • ASIR-ISO 1-2

    8

    En el caso de los procesos cooperantes, el SO debe estar diseado de forma que se garantice la sincronizacin de los procesos, de forma que los resultados sean correctos con independencia del orden en que se ejecuten.

    Para ello, en los procesos se define una seccin crtica, que es una seccin de cdigo en la que se realizan operaciones que tiene que ser ejecutada completamente antes de que se ejecute otro proceso. El SO tiene que garantizar la exclusin mutua sobre las secciones crticas de los procesos. Adems, un proceso no puede bloquearse en su seccin crtica porque estar bloqueando la seccin crtica de otros procesos en ejecucin.

    1.6 BLOQUEOS La mayora de los recursos que existen en cualquier computador slo pueden utilizarse por un

    proceso a la vez. Basta pensar, por ejemplo, en una impresora, no es posible que dos procesos hagan uso al mismo tiempo de este dispositivo, el resultado sera catastrfico.

    Sin embargo en un sistema operativo multiprogramado, la situacin anterior puede darse en multitud de ocasiones y el sistema operativo debe encargarse de que esto no ocurra, otorgando acceso exclusivo a los recursos del sistema susceptibles de ser accedidos por ms de un proceso al mismo tiempo.

    No obstante, la apropiacin de un dispositivo de E/S para uso exclusivo puede provocar, a su vez problemas graves que el sistema operativo tambin debe encargarse de resolver.

    Imaginemos dos procesos que desean imprimir un archivo grande situado en un disco al mismo tiempo. El proceso A solicita en uso exclusivo la impresora, mientras que el proceso B solicita el uso exclusivo del disco. El proceso A no puede comenzar la impresin porque no tiene acceso al disco, pero no libera la impresora. Mientras tanto, el proceso B no inicia la impresin ya que no tiene acceso a la impresora, pero no libera la apropiacin del disco. Se dice que los procesos se han interbloqueado y permanecern as para siempre si el sistema operativo no se encarga de solucionarlo. A este problema tambin se le conoce con el nombre de abrazo mortal.

    El interbloqueo de procesos se produce cuando un proceso espera un evento que solo puede ser provocado por otro proceso del conjunto. Los procesos seguirn esperando, y ninguno de ellos realizar ninguna accin hasta que otro libere algn recurso, por lo que se entra en un bucle de espera infinito.

    Los diseadores de SO emplean distintas tcnicas para enfrentarse al problema de los bloqueos:

    Algoritmo del avestruz: es decir, meter la cabeza bajo tierra e ignorar el problema. Si, despus de estudiar la probabilidad de bloqueos en el sistema, se llega a la conclusin de que sta es muy baja (del orden de un bloqueo cada varios aos), es posible que los programadores decidan no perder el tiempo en implementar tcnicas de deteccin y correccin de bloqueos.

    Evitarlos: mediante un estudio cuidadoso de la asignacin de recursos, el SO puede conseguir que nunca se produzcan.

    Deteccin y recuperacin: los bloqueos se producen, pero el sistema operativo se encarga de detectarlos y recuperarse del bloqueo.

  • ASIR-ISO 1-2

    9

    2 GESTIN DE MEMORIA. 2.1 INTRODUCCIN

    Jerarqua de las memorias de un sistema informtico

    Los programas y datos necesitan estar en la memoria principal para ser ejecutados. Los

    programas o datos que no se necesitan de inmediato pueden guardarse en la memoria secundaria hasta que se necesiten, y en ese momento se transfieren a la memoria principal para ser ejecutados o referenciados. Los soportes de memoria secundaria, como cintas o discos, son en general menos caros que la memoria principal, y su capacidad es mucho mayor. Normalmente, es mucho ms rpido el acceso a la memoria principal que a la secundaria.

    En los sistemas con varios niveles de memoria hay muchas transferencias constantes de programas y datos entre los distintos niveles. Estas transferencias consumen recursos del sistema, como tiempo de la CPU, que de otro modo podran utilizarse provechosamente.

    Funciones de gestin de memoria

    Para que un proceso pueda ejecutarse, debe estar ubicado en la memoria principal del ordenador. Una parte del SO se va a encargar de gestionar la memoria principal, de forma que los procesos puedan residir en la memoria sin conflictos.

    Existen varias formas de gestionar la memoria. En general, la forma de gestin depender de la mquina virtual que se quiera proporcionar y del hardware subyacente.

    En cualquier mtodo de gestin de memoria es necesario decidir qu estrategias se deben utilizar para obtener un rendimiento ptimo. Las estrategias de administracin de la memoria determinan el comportamiento de una organizacin de memoria determinada cuando se siguen diferentes polticas: Cundo se elige un nuevo programa para colocarlo en la memoria? Se coge el programa cuando el sistema lo necesita, o se intenta anticiparse a las peticiones del sistema? En qu lugar de la memoria principal se coloca el siguiente programa por ejecutar? Se colocan los programas lo ms cerca posible unos de otros en los espacios disponibles de la memoria principal para reducir al mnimo el desperdicio de espacio, o se colocan lo ms rpido posible para reducir el tiempo empleado en tomar la decisin?

    Los sistemas actuales son en su mayor parte sistemas con almacenamiento virtual, muchas de las formas de gestin estudiadas en este tema tienen principalmente valor histrico, pero sientan las bases de los sistemas actuales.

    2.2 GESTIN DE LA MEMORIA EN LOS SISTEMAS MONOPROGRAMADOS En los sistemas de monoprogramacin slo exista un proceso de usuario, que disfruta de todos

    los recursos del ordenador. Esto simplificaba notablemente la gestin de la memoria, ya que sta slo deba ser compartida por los programas del sistema operativo, y por el nico proceso de usuario existente.

    Esto se muestra en la figura. Dependiendo de detalles de diseo:

  • ASIR-ISO 1-2

    10

    el sistema operativo ocupar la parte baja de la memoria RAM, como se muestra en la figura en (a);

    la parte alta de la memoria ROM, como se muestra en la figura en (b);

    el PC de IBM ubica parte del sistema operativo en RAM, y los gestores de dispositivos en ROM, esto ltimo se ilustra en la figura en (c).

    Tres formas de organizacin de la memoria, con un sistema operativo y un proceso de usuario.

    Proteccin

    En general, los sistemas operativos monousuario de monoprogramacin (muy comunes en las microcomputadoras) no tienen proteccin de la memoria. Por lo tanto, el nico proceso de usuario que existe en la memoria, puede modificar posiciones de memoria pertenecientes al sistema operativo, esto provocara errores al ejecutarse la zona modificada. La proteccin se puede realizar mediante un registro de lmite integrado en la CPU. Si se tiene un esquema como el de la figura en (b) el registro de lmite contendr la direccin de inicio de carga del SO. El hardware, en tiempo de ejecucin, verifica que las direcciones generadas por el proceso de usuario no son superiores al valor del registro de lmite. En caso de ser superior, el proceso de usuario intenta acceder al SO, esto provoca una interrupcin hardware que gestiona el SO, normalmente eliminando al proceso.

    2.3 GESTIN DE LA MEMORIA EN LOS SISTEMAS MULTIPROGRAMADOS. En un sistema de multiprogramacin la memoria debe ser compartida por varios procesos de cara

    a obtener una mayor utilizacin de los recursos del ordenador. Esto provoca que la gestin de la memoria se complique sustancialmente:

    En primer lugar, hay que llevar un control de las zonas de memoria ocupadas por los procesos. As, cuando un nuevo proceso entre en la memoria se le asignar una zona que estaba libre.

    Otro problema a resolver viene dado por el hecho de que en el momento de escribir un programa no se sabe en qu zona de memoria se ubicar, siendo posible que durante la vida de un proceso ste cambie varias veces de emplazamiento.

    Habr que tener en cuenta, tambin, la proteccin de las zonas de memoria ocupadas por los procesos, mxime en sistemas multiusuario donde los procesos pueden pertenecer a distintos usuarios.

    En lo que resta de este apartado, y en el siguiente, se estudiarn varias formas de gestin de la memoria utilizadas en sistemas de multiprogramacin. 2.3.1 ASIGNACIN DE MEMORIA CONTIGUA

    En un esquema de asignacin de memoria contigua un proceso se ubica en su totalidad en posiciones consecutivas de memoria. Un ejemplo de este tipo de asignacin es el utilizado en los sistemas de monoprogramacin vistos previamente. En este apartado se estudian dos mtodos de asignacin contigua empleados histricamente en sistemas multiprogramados.

    2.3.1.1. Particiones estticas

    Consiste en dividir la memoria en varias zonas, pudiendo ser cada zona de un tamao diferente. Esto se ilustra en la figura siguiente. El tamao de las zonas podr ser modificado eventualmente por algn usuario responsable de la administracin del ordenador.

  • ASIR-ISO 1-2

    11

    Los trabajos se traducan mediante compiladores y ensambladores absolutos, para ejecutarse en una particin especfica. Una vez introducido un proceso en una particin, permanece en ella hasta su finalizacin. Si un trabajo se iniciaba, y la particin para la que estaba compilado estaba ocupada, tena que esperar, aunque estuvieran libres otras particiones. Esto provoca una prdida de eficiencia.

    Multiprogramacin con particiones estticas, con traduccin y carga absolutas.

    Fragmentacin interna

    Una ltima observacin: cuando un proceso se introduce en una particin, lo ms probable es que su tamao no sea el mismo (es decir, sea algo menor) que el de la particin. Esto origina un problema de desperdicio de memoria conocido como fragmentacin interna.

    2.3.1.2. Particiones dinmicas

    En este mtodo se va asignando la memoria dinmicamente a los procesos, conforme se introducen en la memoria. A cada proceso se le asigna exactamente la memoria que necesita.

    En la figura se ilustra cmo evoluciona la ocupacin de la memoria en un sistema de este tipo. Al principio slo se encuentra el proceso A en la memoria. Despus, se insertan los procesos B y C. En la figura en d) A concluye. Luego, D entra y B sale. Por ltimo E entra.

    La asignacin de memoria cambia cuando el proceso llega o sale de la memoria. Las zonas sombreadas son

    memoria libre.

    Fragmentacin externa y compactacin

    Con este mtodo de gestin de la memoria se evita el problema de la fragmentacin interna. Sin embargo, aparece el problema de la fragmentacin externa entre particiones, el cual se aprecia en las figuras e) y f). El problema consiste en que se creen huecos libres demasiado pequeos como para que quepan procesos, aunque la unin de todos esos huecos producira un hueco considerable, lo que acarrea el desperdicio de la memoria. Una posible solucin es la compactacin de la memoria, que consiste en desplazar todos los procesos hacia la parte inferior de la memoria mientras sea posible. Como la compactacin lleva mucho tiempo, a veces no se realiza, o se hace por la noche, en horas de poco uso del ordenador. Hay que tener en cuenta que el sistema debe detener todas sus actividades mientras realiza la compactacin. Ello puede ocasionar tiempos de respuesta irregulares para usuarios interactivos, y podra ser inadmisible en un sistema de tiempo real. Adems, con una combinacin normal de trabajos que cambia rpidamente, es necesario compactar a menudo. En este caso, los recursos del sistema que se consumen quiz no justifiquen las ventajas de la compactacin.

  • ASIR-ISO 1-2

    12

    El problema del crecimiento de los procesos

    Otro tema a tener en cuenta es la cantidad de memoria por asignar a un proceso recin creado. Si los procesos se crean con un tamao fijo invariante, la asignacin es muy sencilla, se asigna exactamente lo que se necesite.

    Si, por el contrario, los segmentos de datos de los procesos pueden crecer, como es el caso de la asignacin dinmica de memoria a partir de una pila, que ocurre en muchos lenguajes de programacin, aparece un problema cuando un proceso intenta crecer. Si hay un hueco adyacente al proceso, ste puede ser asignado, y el proceso podr crecer hacia el hueco. Sin embargo, si el proceso es adyacente a otro proceso, el proceso de crecimiento deber ser desplazado a un hueco de la memoria lo suficientemente grande; o bien, habr que eliminarlo.

    Estrategias de colocacin

    Cuando en un sistema de particiones dinmicas se debe asignar memoria principal para un nuevo proceso, y los procesos y huecos se mantienen en una lista ordenada por direcciones, se pueden utilizar diversos algoritmos para la eleccin del hueco de memoria donde ubicar al proceso. Supongamos que se conoce la cantidad de memoria por asignar.

    El algoritmo ms simple es el primero en ajustarse (first fit). Se revisa la lista de huecos hasta encontrar un espacio lo suficientemente grande. El espacio se divide entonces en dos partes, una para el proceso, y otra para la memoria no utilizada, excepto en el caso poco probable de un ajuste perfecto. Este algoritmo es rpido, ya que busca lo menos posible.

    Otro algoritmo es el mejor en ajustarse (best fit), el cual busca en toda la lista, y elige el mnimo hueco suficientemente grande como para ubicar al proceso. Este algoritmo intenta que los huecos que se creen en la memoria sean lo ms pequeos posible.

    Un algoritmo que enfrenta el problema de la manera contraria es el del peor ajuste (worst fit). En este algoritmo se elige el hueco ms grande disponible. De esta forma aumenta la probabilidad de que el nuevo hueco creado sea lo suficientemente grande como para albergar un proceso.

    Aunque parezca que el algoritmo del mejor ajuste desperdicia menos memoria, en la prctica no es as, ya que al crear huecos demasiado pequeos, stos no pueden ser utilizados por procesos.

    2.3.1.3. Intercambio (swapping)

    En un sistema con particiones estticas el nmero de procesos con posibilidades de estar en estado preparado viene determinado por el nmero de particiones, y en uno de particiones dinmicas por el tamao de la memoria principal y el tamao de los procesos, ya que en ambos mtodos un proceso permanece en una particin hasta que finaliza. Supongamos un sistema en que dicho nmero es cinco, es muy probable que en un momento dado los cinco procesos que ocupan las particiones estn bloqueados (por ejemplo, porque esperan la finalizacin de una operacin de E/S). Mientras los cinco procesos permanezcan bloqueados se desperdicia la CPU. Para remediar este inconveniente muchos sistemas operativos optaron por permitir ejecutar concurrentemente ms procesos de los que pueden entrar fsicamente en la memoria principal del ordenador. Para ello se utiliza la memoria secundaria (generalmente los discos) que, aunque ms lenta, tiene mayor capacidad de almacenamiento que la principal. La solucin consiste en tener en disco una copia de la parte de la memoria que ocupa todo proceso. En el disco se encuentran todos los procesos, en la memoria slo unos cuantos. Para que un proceso se pueda ejecutar debe residir en memoria principal.

    La razn por la que se aumenta el nmero de procesos con posibilidades de tener instrucciones en memoria principal es porque cuanto mayor sea este nmero, es menos probable que se d la circunstancia de que todos estn bloqueados y, por lo tanto, es menor la posibilidad de que la CPU permanezca inactiva.

    El intercambiador de UNIX

    Algunos sistemas UNIX utilizaban el intercambio en un sistema de particiones dinmicas. El movimiento de procesos entre la memoria principal y el disco lo realizaba el intercambiador (swapper). El intercambio de la memoria principal al disco (swap out) se iniciaba cuando el SO necesitaba memoria libre y estaba toda ocupada.

  • ASIR-ISO 1-2

    13

    Adems, cuando haba que recuperar un proceso presente en el disco desde hace mucho tiempo (swap in) con frecuencia se necesitaba sacar a otro proceso de memoria a disco para disponer de espacio para el primero.

    El intercambiador elega una vctima al examinar los procesos bloqueados en espera de algo (por

    ejemplo, una entrada del terminal). Es mejor sacar a un proceso bloqueado que sacar a uno preparado. Si existan varios procesos bloqueados ubicados en la memoria principal se elega a uno cuya combinacin de prioridad y tiempo de residencia en memoria principal fuera ms desfavorable. As, un buen candidato era un proceso que hubiera consumido mucho tiempo de CPU recientemente, al igual que uno que hubiera permanecido en la memoria durante mucho tiempo, aun cuando durante este tiempo hubiera realizado E/S. Si no se dispone de procesos bloqueados, entonces se elega a un proceso listo en base a los mismos criterios.

    Cada pocos segundos el intercambiador examinaba la lista de procesos intercambiados para ver si alguno estaba listo para su ejecucin. En caso de que existiera alguno, se seleccionaba a aquel que hubiese permanecido en el disco durante mucho tiempo. A continuacin el intercambiador verificaba si se poda hacer el intercambio con la memoria principal (swap-in).

    2.3.2 ASIGNACIN DE MEMORIA NO CONTIGUA.

    Hasta ahora se han estudiado esquemas de administracin de la memoria en los que los procesos se almacenan en posiciones contiguas (consecutivas) de memoria. Sin embargo, un proceso puede dividirse en bloques, y estos bloques pueden situarse en posiciones no contiguas de memoria principal. Es ms, no es preciso que se encuentren en la memoria todos los bloques de un proceso para que se pueda ejecutar, basta con que se encuentren los bloques que contienen cdigo o datos actualmente referenciados, el resto puede permanecer en memoria secundaria.

    2.3.2.1. MEMORIA VIRTUAL

    Hoy en da, la mayora de los sistemas operativos hacen una gestin de memoria basada en lo que se conoce como memoria virtual.

    Esta tcnica, considera el espacio en disco libre como si se tratase de memoria RAM (memoria virtual). As, para el usuario el programa que se est ejecutando est en memoria cuando, en realidad, solo se carga en RAM la parte del programa que se est ejecutando en ese momento. Entre tanto, el resto del programa permanece temporalmente almacenado en memoria virtual (disco duro) para su posterior utilizacin. Los SO multitarea son especialistas en esta gestin.

    Con esta tcnica se consigue disponer casi siempre de memoria RAM libre necesaria para la ejecucin de los procesos. Sin embargo, si cargamos demasiados procesos a la vez, el sistema se ralentiza, ya que tiene que estar pasando informacin continuamente de memoria a disco duro o viceversa.

    Espacio de direcciones virtuales

  • ASIR-ISO 1-2

    14

    La clave del concepto de memoria virtual es la asociacin de las direcciones a las que hace referencia un proceso en ejecucin de las direcciones disponibles en la memoria principal.

    Las direcciones a las que hace referencia un proceso en ejecucin, en este esquema, se llaman direcciones virtuales.

    El intervalo de direcciones virtuales a las que puede hacer referencia un proceso en ejecucin se llama espacio de direcciones virtuales, V, del proceso. El intervalo de direcciones reales de la memoria principal de un ordenador concreto se llama espacio de direcciones reales, R. El nmero de direcciones de V se denota |V|, y el nmero de direcciones de R, |R|. En los sistemas de almacenamiento virtual, lo normal es que |V| >> |R|.

    Memoria virtual y tamao de los procesos

    La memoria virtual es una tcnica de gestin de la memoria que posibilita que el espacio de direcciones virtuales sea mayor al espacio de direcciones reales. En otras palabras, se permite hacer programas de tamao mayor al de la memoria principal. Para lograr esto, el sistema operativo se encarga de mantener en la memoria principal solamente aquellas partes del espacio de direcciones del proceso que actualmente estn siendo referenciadas, el resto permanece en disco.

    Memoria virtual y nmero de procesos en ejecucin

    La memoria virtual se compagina con la multiprogramacin. Al no tener que almacenar los procesos enteros en la memoria, pueden entrar ms en la memoria principal, con lo que es ms probable que siempre exista un proceso en estado listo. Por otro lado, cuando un proceso espera a que se cargue en la memoria principal parte de su cdigo o datos, se inicia una E/S con el disco. Mientras dura dicha E/S la CPU puede ejecutar otro proceso.

    Aunque los procesos slo hacen referencia a direcciones virtuales, deben ejecutarse en la memoria real. Por lo tanto, durante la ejecucin de un proceso es preciso establecer la correspondencia entre las direcciones virtuales y las reales. Como se ver ms adelante, esta correspondencia debe realizarse de una manera rpida, pues si no, se ralentizara demasiado el tiempo de ejecucin de los procesos.

    Correspondencia de elementos del espacio de direcciones virtuales al espacio de direcciones reales.

    Se han desarrollado varios mtodos para asociar las direcciones virtuales con las reales. Los mecanismos de traduccin dinmica de direcciones convierten las direcciones virtuales en direcciones reales en tiempo de ejecucin. Todos estos sistemas tienen la propiedad de que las direcciones contiguas en el espacio de direcciones virtuales de un proceso no son necesariamente contiguas en la memoria principal. Esto se conoce como contigidad artificial (ver la figura). Debe quedar claro que toda esta correspondencia es transparente al programador, que escribe sus programas en trminos de direcciones consecutivas de memoria virtual.

    Esquema general de traduccin

    Los mecanismos de traduccin dinmica de direcciones deben mantener mapas de correspondencia de traduccin de direcciones que indiquen qu localidades de la memoria virtual estn en memoria principal en un momento dado y dnde se encuentran.

  • ASIR-ISO 1-2

    15

    Puede ocurrir que los bloques en que se dividen los procesos deben ser del mismo tamao o de tamaos diferentes:

    Cuando los bloques son del mismo tamao, se llaman pginas, y la organizacin de la memoria virtual correspondiente se conoce como paginacin.

    Cuando los bloques pueden tener tamaos diferentes se llaman segmentos, y la organizacin de la memoria virtual correspondiente se llama segmentacin.

    Algunos sistemas combinan ambas tcnicas, con segmentos, que son entidades de tamao variable, compuestas de pginas de tamao fijo (segmentacin paginada).

    2.3.2.2. PAGINACIN La paginacin es una tcnica que consiste en dividir el espacio de direcciones virtuales en

    pginas del mismo tamao. El tamao de las pginas ser un valor potencia de dos.

    La memoria principal se divide tambin en marcos o pginas fsicas del mismo tamao que las pginas.

    Pginas activas y pginas inactivas

    Los marcos son compartidos entre los distintos procesos que haya en el sistema, de forma que en cualquier momento un proceso dado tendr unas cuantas pginas residentes en la memoria principal (sus pginas activas) y el resto en la memoria secundaria (sus pginas inactivas).

    Mecanismo de paginacin

    El mecanismo de paginacin cumple dos funciones:

    Llevar a cabo la transformacin de una direccin virtual a fsica, o sea, la determinacin de la pgina a la que corresponde una determinada direccin de un programa, as como del marco, si lo hay, que ocupa esta pgina;

    Cuando haga falta, transferir pginas de la memoria secundaria a la memoria principal, y de la memoria principal a la memoria secundaria cuando ya no sean necesarias.

    La primera funcin se aborda a continuacin, y se deja para el siguiente punto la segunda funcin.

    Transformacin de una direccin virtual a fsica

    Con el fin de determinar la pgina a la que hace referencia un programa, los bits de mayor peso de la direccin se interpretan como el nmero de pgina, y los bits de menor peso como el nmero de palabra dentro de esta pgina.

    Es de destacar el hecho de que la divisin de la direccin en nmero de palabra y nmero de pgina, es tarea del hardware, y es transparente al programador.

    La transformacin de nmero de pgina y de palabra en la direccin fsica de memoria se realiza a travs de una tabla de pginas, cuyo p-simo elemento contiene la posicin p' del marco que contiene a la pgina p (la posibilidad de que la p-sima pgina no se encuentre en la memoria principal se abordar dentro de un momento). El nmero de palabra, w, se suma a p' para obtener la direccin buscada.

    Transformacin de direcciones para llevar a cabo la paginacin.

  • ASIR-ISO 1-2

    16

    Fallos de pgina

    Como el nmero de marcos (cantidad de memoria real) asignados a un proceso ser normalmente menor que el nmero de pginas que ste utiliza, es muy posible que una direccin del programa haga referencia a una pgina que no se encuentre en aquel momento en la memoria principal. En este caso el elemento correspondiente de la tabla de pginas estar vaco, provocando el hardware una interrupcin de "fallo de pgina" si se intenta acceder a ella. Esta interrupcin provoca que el control pase al software (al sistema operativo), para que ste inicie la transferencia de la pgina que falta desde la memoria secundaria a la memoria principal, y actualice de acuerdo con ello la tabla de pginas.

    Si no existe ningn marco vaco en el momento en que ocurre un fallo de pgina, hay que guardar en la memoria secundaria alguna otra pgina con el fin de hacer sitio a la nueva. La eleccin de la pgina que habr que sacar es el resultado de un algoritmo de reemplazo de pgina.

    Algoritmos de reemplazo de pgina

    LRU (Least recently used), usado menos recientemente: se reemplaza la pgina que se uso hace ms tiempo (no tiene porque ser la que lleve mas tiempo en memoria).

    FIFO (first in, first out): la primera pgina que llega es la primera que se reemplaza. La pgina que lleva mas tiempo en memoria, se haya o no usado.

    ptimo: es un algoritmo terico que prev cuales sern las siguientes peticiones de pgina.

    2.3.2.3. SEGMENTACIN

    En esta tcnica el programa se divide en segmentos que se diferencian de las pginas en que su tamao no es fijo, aunque s existe un tamao mximo de segmento.

    Las direcciones constan de un nmero de segmento y un desplazamiento.

    Para gestionarlos, se usa una tabla de segmentos para cada proceso, donde almacenamos la direccin de comienzo y el tamao de cada uno de ellos, y otra tabla de segmentos libres, para asignrselos a los procesos que entren en ejecucin. Estos segmentos no tienen porque ser contiguos. Este sistema tiene que contar con la colaboracin del programador, que debe organizar sus programas dividindolos en segmentos. La traduccin de direcciones de los segmentos es ms compleja que la de pginas.

    3 GESTIN DE ENTRADA/SALIDA Una de las funciones principales de un sistema operativo es el control de los perifricos de

    entrada/salida del ordenador. El sistema operativo se encarga de enviar rdenes, determinar el dispositivo que necesita la atencin del procesador, eliminar posibles errores, etc.

    Tipos de perifricos

    En primer lugar, tenemos que hacer una clasificacin de los perifricos segn gestionen la informacin por bloques o por caracteres:

    Perifricos tipo bloque: son aquellos en los que la informacin que se maneja es en forma de bloque. Un ejemplo son los discos, donde la informacin se almacena en bloques de 512 bytes. Son direccionables.

    Perifricos tipo carcter: son aquellos en los que la informacin se maneja de forma secuencial, carcter a carcter. Un ejemplo sera el teclado.

    Controladora hardware del perifrico o interfase

    Cada perifrico est compuesto por un componente mecnico y otro u otros componentes electrnicos. Por ejemplo, un disco duro est compuesto por los propios discos, las cabezas de lectura-escritura, el motor que los hace girar, etc., y por la denominada controladora, encargada de conectar el dispositivo fsico al ordenador.

    Funcin del sistema operativo

    El sistema operativo se encarga de acceder a la informacin de la memoria principal, extraerla en forma de impulsos elctricos y enviarla a los diferentes dispositivos perifricos. El perifrico interpretar

  • ASIR-ISO 1-2

    17

    los impulsos elctricos recibidos: si es un disco duro, los impulsos se transformarn en seales de tipo magntico, si es una impresora, se transformarn en caracteres, etc.

    Los dispositivos fsicos que el sistema operativo tiene que gestionar para que la informacin pase de un sitio a otro se clasifican segn la funcin que realizan:

    Soportes de almacenamiento: es la memoria auxiliar del ordenador o memoria externa. Pueden ser discos duros, disquetes, CD-ROM, DVD, cintas DAT, etc.

    Interfaces: permiten la comunicacin entre el usuario y el sistema operativo. Son el monitor, el teclado, ratn,etc.

    Soportes de transmisin: son los buses y canales encargados de transmitir la informacin entre los diferentes componentes que integran el ordenador.

    Los dispositivos de entrada/salida (I/O) forman junto con la CPU y la memoria los elementos ms importantes del ordenador. Uno de sus objetivos principales es la eficiencia en las operaciones de entrada/salida, minimizando el trabajo a realizar por la CPU. Las velocidades de los dispositivos de I/O son muy variadas:

    o dispositivos lentos (p.e., ratn, teclado). o dispositivos medios (p.e., impresora). o dispositivos rpidos (p.e., red, disco).

    Para acomodar las velocidades se usan circuitos de interfaz.

    Las Unidades o interfaces de Entrada/Salida se encargan de la comunicacin entre la CPU y el dispositivo.

    Conexin de las unidades o interfaces de entrada/salida:

    o Conexin mapeada en memoria: o el circuito de interfaz se conecta como si fuera memoria. o se accede a los registros leyendo o escribiendo una variable en una posicin de memoria

    concreta.

    o Conexin mediante puertos de entrada/salida. o el circuito de interfaz se conecta mediante lneas especiales. o se accede a los registros mediante instrucciones especiales (in, out), especificando un

    nmero de puerto.

    En cuanto al Hardware de Entrada/Salida, los dos problemas que han de resolverse por parte del sistema operativo son:

    Cmo realizar el direccionamiento del perifrico.

    Cmo realizar la transferencia de la informacin

  • ASIR-ISO 1-2

    18

    El direccionamiento: la entrada/salida se direcciona de modo idntico a como se direcciona la memoria principal. Es decir, direccionar un dispositivo concreto es igual que direccionar una celda de memoria.

    El puerto se direcciona como una celda de memoria. La CPU manda la direccin de ese puerto, y el controlador advierte que por el bus de direcciones va su direccin se activa el puerto.

    Las direcciones de los puertos han de ser nicas (no pueden corresponder tambin a una celda de memoria principal).

    Tras el direccionamiento, ha de realizarse la transferencia de datos (de entrada o de salida). Hay tres formas bsicas para realizar las operaciones de E/S.

    Transferencia de la informacin

    Existen tres mtodos para realizar la transferencia de la informacin:

    o Entrada/salida por consulta o programada: la CPU accede a los registros desde programa.

    para saber si el dispositivo est listo, se hace una consulta peridica.

    o Entrada/salida por interrupciones: el dispositivo avisa a la CPU cuando est listo.

    la entrada/salida se hace mediante una rutina de servicio de interrupcin.

    o Entrada/salida por acceso directo a memoria: el dispositivo accede directamente a la memoria.

    avisa a la CPU del inicio o final de la operacin.

    4 GESTIN DE ARCHIVOS Cuando trabajamos con sistemas operativos multiusuario, la gestin de datos que se hace en el

    ordenador y su ubicacin en memoria y los soportes de almacenamiento externo puede plantear algunos problemas.

    Ya hemos visto que, para la ubicacin en memoria es el gestor de memoria del sistema operativo el que se encarga. En cuanto al almacenamiento en soportes externos, la gestin que haga el sistema operativo tiene que responder a varias caractersticas:

    Se podr almacenar gran cantidad de informacin.

    Se almacenar de forma correcta una vez terminado el procesamiento.

    Existir la posibilidad de que varios procesos o programas accedan a la misma informacin sin interferencias.

    Para todo esto, despus de ser procesada, la informacin tiene que almacenarse de forma permanente en los soportes externos de almacenamiento. Cada sistema operativo almacena la informacin de una forma estructurada utilizando su propio Sistema de Archivos (File System) y cada uno de ellos hace una gestin diferente del espacio de almacenamiento, lo cual depender de si el sistema es mono o multiusuario, mono o multitarea, etc.

    Windows 95, 98 utiliza FAT16 y FAT32, Windows NT y 2000 y sus descendientes (como XP) el NTFS, OS/2 el HTFS, UNIX el S5, LINUX el EXT2/EXT3, EXT4 y otros. Estos sistemas no son siempre compatibles entre si. Un Sistema de Archivos UNIX puede ver un Sistema de Archivos FAT pero no a la inversa. Y Windows NT es compatible con el Sistema FAT16 pero no con el FAT32.

    Los Sistema de Archivos tienen sus propias normas en la nomenclatura (por ejemplo MS-DOS 8 caracteres, UNIX distingue entre maysculas y minsculas, etc).

    Los archivos disponen de una serie de atributos que es una informacin adicional al contenido del mismo con la que el archivo queda caracterizado (como nombre, fecha de creacin, fecha de modificacin, longitud, etc.).

  • ASIR-ISO 1-2

    19

    De todos los atributos, los ms importantes son los que indican qu tipo de operaciones o que tipo de usuarios pueden usarlos o no. Dependiendo del tipo de sistema operativo, los atributos de proteccin pueden ser de mayor o menor importancia:

    Solo Lectura.

    Oculto.

    Sistema.

    Modificable.

    Ejecutable.

    ...............

    Los atributos de proteccin determinaran el tipo de operacin que se puede realizar sobre ellos (Crear, eliminar, ejecutar, escribir, renombrar, etc).

    TIPOS DE ARCHIVOS:

    Se pueden clasificar en 3 tipos:

    Ordinarios (Regulares, Standard): Son los que contienen informacin del usuario como programas, textos, grficos, registros de datos, etc.

    Directorios: Son archivos contenedores que contienen referencias a otros archivos Ordinarios o a otros Directorios. Se usan para albergar estructuras de archivos. Todos los S. Operativos utilizan una estructura jerrquica para almacenar sus archivos. Para ello crean compartimentos (directorios) para poder tener los archivos clasificados.

    En casi todos los S. Operativos existe un directorio principal llamado directorio raz, del que depende el resto de directorios y subdirectorios y los otros archivos (En el Sistema de IBM OS-400 no).

    Archivos Especiales (UNIX): Tambin llamados archivos de dispositivos, contienen informacin especfica correspondiente a los dispositivos perifricos tales como impresoras, Discos, etc. UNIX trata a los dispositivos de Entrada y Salida como archivos, y todos los dispositivos del Sistema (impresora, disquete, terminal) tienen un archivo distinto.

    Ejemplo de Sistema jerrquico de Directorios:

  • ASIR-ISO 1-2

    20

    Los archivos se crean y borran frecuentemente. Como slo hay una cantidad limitada

    de espacio en disco, es necesario retomar el espacio de los archivos borrados para archivos nuevos.

    Para ello existen dos tcnicas de gestin del espacio libre en disco:

    1. Lista de bloques libres: es decir, una lista de los bloques del disco sin usar. Esta lista se guarda en el disco y cada vez que un fichero requiera espacio mira la lista y se asignan los bloques libres necesarios. Cuando un fichero se destruye los bloques se colocan en la lista (van numerados).

    2. Utilizando un mapa de bits: cada bloque del disco tiene asociado un bit (0 si est libre, 1 si est ocupado, o viceversa). Es el ms eficaz y el ms utilizado.