Está en la página 1de 75

Fundamentos bsicos de los Sistemas Operativos

ndice de contenido
Fundamentos bsicos de los sistemas operativos
Captulo 1. Consideraciones generales de los sistemas operativos.........................7 Objetivos..................................................................................................................7 Servicios de un sistema operativo............................................................................7 Evolucin histrica...................................................................................................7 Tipos de sistemas operativos....................................................................................8 Llamadas al sistema.................................................................................................9 Estructura del ncleo de un sistema operativo.........................................................9 Captulo 2. Descripcin y control de procesos........................................................11 Espacio de direcciones de memoria lgica o virtual de un proceso....................... Tipos de procesos............................................................................................... Estados de un proceso........................................................................................ !ontrol de los procesos.......................................................................................... " Estructuras de control del sistema operativo..................................................... " !reacin de procesos......................................................................................... " Terminacin de procesos................................................................................... # !ambio de proceso............................................................................................ # Ejecucin del sistema operativo............................................................................. # $rocesos multihilo.................................................................................................. # !ontrol de hilos................................................................................................. % Tipos de hilos..................................................................................................... % $rincipales con&iguraciones en &uncin del nmero ' tipo de hilos soportados por un sistema operativo.................................................................................... ( Captulo 3. Plani icacin de procesos......................................................................17 )iveles de plani&icacin......................................................................................... 7 $lani&icador a corto pla*o.................................................................................. 7 $lani&icador a medio pla*o................................................................................ 8 $lani&icador a largo pla*o.................................................................................. 8 !riterios generales considerados en la plani&icacin de procesos.......................... 8 !riterios considerados en la plani&icacin del procesador..................................... 8 E+propiabilidad del procesador.............................................................................. 9 ,lgoritmos de plani&icacin................................................................................... 9 $rimero en llegar - primero en ser servido - .!.S.......................................... 9 $rimero el proceso m/s corto - S0................................................................... 9 1enor tiempo restante......................................................................................."2 $lani&icacin de turno rotatorio........................................................................."2 $lani&icacin basada en prioridades.................................................................."2 $lani&icacin basada en mltiples colas de prioridad........................................" 1ltiples colas de prioridad ' realimentacin.................................................." $lani&icacin por tiempo l3mite........................................................................."" Eleccin del algoritmo de plani&icacin............................................................"" $lani&icacin de hilos............................................................................................."" Captulo !. "incroni#acin y comunicacin de procesos.......................................23 E+clusin mutua....................................................................................................."# 4nteraccin entre procesos concurrentes............................................................"#
ii

!ondiciones de carrera......................................................................................"# Secciones cr3ticas..............................................................................................."# 5escripcin de la e+clusin mutua...................................................................."# Soluciones so&t6are a la e+clusin mutua........................................................."% Soluciones a la e+clusin mutua con apo'o del hard6are................................"( Sem/&oros..............................................................................................................."( 4mplementacin................................................................................................."( 7tilidad de los sem/&oros.................................................................................."7 Sincroni*acin de procesos..............................................................................."7 $roblemas potenciales asociados a un mal uso de los sem/&oros....................."7 $roblemas cl/sicos de sincroni*acin de procesos concurrentes..........................."8 El problema de los productores ' los consumidores........................................."8 El problema de los lectores ' los escritores......................................................"8 1onitores..............................................................................................................."9 5e&inicin.........................................................................................................."9 Estructura ' declaracin de un monitor............................................................."9 7so de los monitores.........................................................................................#2 $aso de mensajes....................................................................................................#2 5e&inicin..........................................................................................................#2 Especi&icacin de la &uente ' el destino del mensaje........................................# Es8uemas de sincroni*acin..............................................................................# .ormato ' almacenamiento de los mensajes.....................................................#" 7so del paso de mensajes..................................................................................#" Captulo $. %nterblo&ueo..........................................................................................33 4ntroduccin...........................................................................................................## 5e&inicin ' condiciones del interblo8ueo............................................................## 9ra&os de asignacin de recursos...........................................................................## $revencin de interblo8ueos..................................................................................#% Eliminacin de la condicin de e+clusin mutua..............................................#% Eliminacin de la condicin de retencin ' espera...........................................#% Eliminacin de la no e+istencia de e+propiacin..............................................#% Eliminacin de la espera circular......................................................................#% Evitacin de interblo8eos.......................................................................................#% Estado de la asignacin de recursos: estados seguros ' estados inseguros.......#( 5enegacin de asignacin de recursos: el algoritmo del ban8uero...................#( 5enegacin de la iniciacin de un proceso.......................................................#( 5eteccin ' recuperacin de interblo8ueos...........................................................#; ,lgoritmos de deteccin de interblo8ueos........................................................#; .recuencia de invocacin del algoritmo de deteccin de interblo8ueos...........#; T<cnicas de recuperacin del interblo8ueo.......................................................#; =entajas e inconvenientes..................................................................................#; Otras estrategias de tratamiento de interblo8ueos..................................................#7 Captulo '. (dministracin de memoria.................................................................3) Espacio de ncleo ' espacio de usuario............................................................#8 >rea de intercambio en memoria secundaria....................................................#8 ,signacin de memoria en sistemas monoprogramados.......................................#9 $articionamiento &ijo..............................................................................................%2 $articiones de igual tama?o...............................................................................%2 $articiones de distinto tama?o...........................................................................%2 Traduccin de direcciones ' proteccin............................................................%2
iii

=entajas e inconvenientes..................................................................................% $articionamiento din/mico.....................................................................................% ,signacin de espacio de memoria principal....................................................% Traduccin de direcciones ' proteccin............................................................%" =entajas e inconvenientes..................................................................................%" $aginacin simple..................................................................................................%" Traduccin de direcciones.................................................................................%# Tablas de p/ginas paginadas..............................................................................%% Tablas de p/ginas invertidas..............................................................................%( $roteccin..........................................................................................................%; !omparticin de p/ginas...................................................................................%; =entajas e inconvenientes..................................................................................%; Segmentacin simple.............................................................................................%; Traduccin de direcciones.................................................................................%7 $roteccin..........................................................................................................%7 !omparticin de segmentos..............................................................................%7 =entajas e inconvenientes..................................................................................%7 Segmentacin con paginacin simple....................................................................%8 Captulo 7. *emoria virtual....................................................................................!+ $aginacin por demanda........................................................................................%9 @einicio de instrucciones...................................................................................(2 Locali*acin de las p/ginas en memoria secundaria.........................................(2 Alo8ueo de marcos de p/gina............................................................................(2 Tratamiento de un &allo de p/gina.....................................................................(2 !onjunto de trabajo de un proceso.........................................................................( @eempla*amiento de p/ginas.................................................................................( ,lgoritmo de reempla*amiento ptimo.............................................................(" ,lgortimo de reempla*amiento L@7................................................................(" ,lgoritmo de reempla*amiento mediente envejecimiento................................(" ,lgoritmo de reempla*amiento .4.O...............................................................(" ,lgoritmo de reempla*amiento de la segunda oportunidad Balgoritmo del relojC ...........................................................................................................................(# ,lgoritmo de reempla*amiento del reloj considerando el conjunto de trabajo.(# !onclusiones sobre los algoritmos de reempla*amiento...................................(% ,signacin de memoria principal..........................................................................(% !ontrol de carga.....................................................................................................(( !opia en memoria secundaria de p/ginas modi&icadas..........................................(( !onsideraciones adicionales sobre la paginacin por demanda.............................(( Tama?o de p/gina..............................................................................................(( $aginacin por adelantado.................................................................................(; @eserva de marcos libres...................................................................................(; Captulo ). ,estin de la -ntrada."alida...............................................................$7 $eticiones de EDS....................................................................................................(7 !apas del ncleo de un sistema operativo encargadas de la EDS...........................(7 Subsistema de EDS.............................................................................................(7 5rivers de dispositivos de EDS...........................................................................(8 1anejador de las interrupciones........................................................................(8 Au&&ering................................................................................................................(8 Estrategias..........................................................................................................(9 !ach< de bu&&ers de blo8ues de disco................................................................(9
iv

Spooling.................................................................................................................(9 5etalles de la gestin de EDS de algunos dispositivos............................................(9 @elojes...............................................................................................................(9 5iscos duros......................................................................................................;2 5ispositivos de EDS adaptados al usuario..........................................................;" Captulo +. ,estin de arc/ivos...............................................................................'! ,rchivos.................................................................................................................;% Tipos de archivos...............................................................................................;% ,tributos de un archivo.....................................................................................;% Estructura interna de un archivo........................................................................;% 1<todos de acceso a un archivo........................................................................;( Operaciones sobre archivos...............................................................................;( 5irectorios..............................................................................................................;; Estructura de los directorios..............................................................................;; Operaciones sobre directorios...........................................................................;7 Sistemas de archivos..............................................................................................;7 Estructura de un sistema de archivos.................................................................;7 1ontaje de un sistema de archivos....................................................................;8 ,signacin de espacio.......................................................................................;8 9estin del espacio libre...................................................................................;9 4mplementacin de directorios..........................................................................72 !onsistencia.......................................................................................................72 @ecuperacin de archivos......................................................................................7 !opias de seguridad...........................................................................................7 4nstant/neas.......................................................................................................7 E&iciencia................................................................................................................7"

Captulo 1.

Consideraciones generales de los sistemas operativos

7n sistema operativo es una capa de so&t6are cu'a &uncin es administrar todos los dispositivos hard6are del computador ' suministrar para usuarios ' programas una inter&a* apropiada con el hard6are.

Objetivos
9estionar e&icientemente los dispositivos hard6are Tiempo de procesador a los programas de usuario: plani&icador. OcupacinDgestin de memoria principal 9estin de memoria secundaria: /rea de intercambio B*ona donde se almacenan los programas 8ue ha' 8ue ejecutar pero 8ue an no disponen de espacio en memoria principalC ' sistema de archivos ' resto de dispositivos EDS.

O&recer una inter&a* cmoda a los usuarios. El SO proporciona una m/8uina virtual 8ue envuelve al hard6are &acilitando su programacin. !apas: Eard6are )cleo BFernelCG proporciona un conjunto de instrucciones como llamadas al sistema. 7tilidades del SO Bint<rpretes de comandosG sistemas de ventanasG compiladoresG etcC. $rogramas de aplicacin.

Servicios de un sistema operativo


Ejecucin de programas. ,cceso a los dispositivos de EDS. 1anipulacin del sistema de archivos !omunicacin ' sincroni*acin. 5eteccin ' respuesta a errores $roteccin ' seguridad. !ontabilidad.

Evolucin histrica
$rocesamiento serie $rocesamiento por lotes BbatchC 1ultiprogramacin BmultitareaC. ,provechamiento de operaciones de EDS de un proceso para ejecutar otro. 1ultiprogramacin por tiempo compartido. 5ebe gestionar los recursos asign/ndolos de manera e8uitativa.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

Tipos de sistemas operativos


En &uncin del nmero de usuarios simult/neos 1onousuario ' multiusuario. 1onoprogramado ' multiprogramado. Se denomina grado de multiprogramacin el nmero de programas cargados en memoria principal. $ara implementar multiprogramacin se precisan algoritmos de plani&icacinG mecanismos de sincroni*acin ' de asignacin ' proteccin de memoria principal ' secundaria. El hard6are tambi<n debe soportar proteccin de la memoriaG EDS por interrupciones ' 51,. 7n SO puede ser multiacceso Bacceso desde dos o m/s terminalesC pero no necesariamente multitarea Bsistema de venta de billetesG por ejemploC. 7n SO multiprocesamiento coordina la actividad de varios procesadores. Son multiprogramados por de&inicin. Sistemas por lotes o batchG plani&icacin del procesador simpleH suele utili*arse EDS por programaH gestin sencilla de la memoria principal: blo8ue del SO ' blo8ue de programas Sistemas de tiempo compartido o sistemas interactivos. Sistemas multiusuario con multiprogramacin. El plani&icador debe asegurar el reparto e8uitativo del tiempo de procesador as3 como poseer mecanismos de proteccin de 1$G 1S ' acceso concurrente a archivos. Sistemas de tiempo real. $ueden ser en tiempo real estricto o suave. Las primeras re8uieren un tiempo l3mite preestablecido de respuesta. 7tili*an un sistema de plani&icacin de tipo e+propiativoG en el 8ue el proceso con m/s prioridad toma el control. la gestin de la memoria es menos e+igente. B=+IorFsG J)KC Sistemas hbridos. Soportan tanto trabajos por lotes como aplicaciones interactivas o aplicaciones suaves en tiempo real. $rioridad de ejecucin m3nima para trabajos por lotesG media para interactivos ' m/+ima para aplicaciones en tiempo real. B7)4KG L4)7KC Sistemas para macrocomputadores. Sistemas operativos para servidores de red. Sistemas operativos para computadoras personales. Sistemas para computadoras de mano. Sistemas integrados. Sistemas paralelos o multiprocesador. !omparten busG relojG memoriaG EDS. Se les suele denominar como sistemas &uertemente acoplados. Los SO paralelos m/s comunes utili*an multiprocesamiento sim<trico. !ada procesador ejecuta su propia copia del SOG 8ue se comunican entre ellas cuando es necesario. Sistemas distribuidos. Se ejecutan en sistemas in&orm/ticos distribuidos implementados mediante redes. Se les suele denominar sistemas d<bilmente acoplados. El usuario no sabe si el proceso se ejecuta en su propio procesador o en el de otra m/8uina de la red. Segn el nmero de programas cargados en memoria principal:

En &uncin de los re8uisitos temporales de los programas a ejecutar:

En &uncin de la &inalidad del computador.

Otros tipos importantes de SO

Captulo 1. Consideraciones generales de los sistemas operativos

Sistemas operativos de red. $osibilita el acceso a contenido ' recursos entre computadoras mediante el paso de mensajes.

Llamadas al sistema
La ma'or3a de procesadores disponen de dos modos de operacin: modo ncleo ' modo usuario. Los programas de usuario deben hacer uso de llamadas al sistema para poder utili*ar los recursos hard6are a trav<s del SO. 1ediante el uso de librer3as de llamadas al sistemaG de &orma similar a como se invoca cual8uier otra &uncin. 5e &orma directaG mediante programas en lenguaje ensamblador.

La llamada al sistema provoca una trampa BtrampCG haciendo 8ue el procesador conmute a modo ncleo. $ara poder acceder a los par/metros de la llamada al sistema se utili*a: !argar los par/metros en registros. 1<todo sencilloG puede 8ue no se tengan registros su&icientes. ,lmacenamiento en un blo8ue o tabla de memoria. Slo es necesario conocer la direccin de comien*o del blo8ue. ,lmacenamiento en una pila. !ontrol de programas en ejecucin BprocesosC. ,dministracin de archivos ' directorios. !omunicaciones. 9estin de dispositivos. 9estin de in&ormacin del sistema.

Las llamadas al sistemaG atendiendo a su &uncionalidadG se pueden agrupar en:

Estructura del ncleo de un sistema operativo


La &orma m/s e&iciente de dise?ar un SO consiste en descomponerlo en varios componentes o subsistemas. La ma'or3a disponen de: Subsistema de control de procesos. Subsistema de control de la memoria principal. Subsistema de gestin de archivos. Subsistema de EDS.

El ncleo de un sistema operativo se puede considerar como un conjunto lgico de mdulos so&t6are. El nucleo puede tener Estructura monol3tica o simple. Todos los subsistemas ' las estructuras de datos del ncleo se ubican en un mismo mdulo lgico. El so&t6are del ncleo est/ escrito como un conjunto de procedimientos. 7n procedimiento es visible por todos los dem/s. B1S5OSG 7)4K tradicionalC. Estructura en mdulos. !ada mdulo con una inter&a* bien de&inida. 5e &/cil mantenimiento con una ligera merma en el rendimiento. Estructura en capas o niveles. El ncleo se organi*a en capas de so&t6are en la 8ue las capas pueden invocar a las capas in&erioresG pero nunca a las superiores. 7n es8uema t3pico en seis
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos 9

capas: capa 2G controladores hard6areH capa G controlG sincroni*acin ' comunicacin de procesosH capa "G gestin de memoriaH capa #G comunicaciones entre procesos ' el operador de consolaH capa %G gestin de EDSH capa (G programas de usuario. Estructura e+tensible. $uede considerarse como un caso particular de la estructura modular. $osee un mdulo principalG el ncleo extensible o microncleoG ' varios mdulos como extensiones del ncleo. El microncleo reali*a los servicios absolutamente esencialesG los 8ue dependen estrechamente de la ar8uitectura de la m/8uina como la gestin de interrupcionesG comunicacin entre procesosG gestin de memoria a bajo nivel ' gestin de EDS. El resto de las &unciones se reali*an en modulos de e+tensin del ncleo. Los procesos de usuarios se comunican con las e+tensiones del ncleo utili*ando un mecanismo cliente Bapplicacin de usuarioC - servidor Be+tensin del ncleoC. La comunicacin clienteDservidor se reali*a mediante el paso de mensajes. Las ventajas de un ncleo e+tensible son: 1anejabilidad. !ada e+tensin del ncleo se encarga de un servicio del sistema. E+tensibilidad. ,?adir nuevas caracter3sticas a?adiendo un nuevo mdulo. .iabilidad. Las e+tensiones se ejecutan como procesos de usuario. ,nte el &allo de un servicioG el resto puede seguir disponible. Soporte simult/neo de mltiples sistemas operativos. Sobre un mismo microncleo pueden implementarse di&erentes e+tensiones. $ortabilidad. Solo es necesario reescribir el microncleo al ser la nica parte dependiente del hard6are. Su principal desventaja es un menor rendimiento debido al paso de mensajes BcreacinG env3oG procesamientoC.

10

Captulo 1. Consideraciones generales de los sistemas operativos

Captulo 2.

escripcin ! control de procesos

7n proceso es un programa en ejecucin. Tambi<n puede de&inirse como la entidad 8ue se puede asignar ' ejecutar en un procesador: es la unidad b/sica de trabajo de un sistema in&orm/tico. Si un programa se ejecuta m/s de una ve*G cada copia tendr/ su propio proceso asignado. !uando un proceso puede interactuar con los usuarios se dice 8ue est/ en primer plano BforegroundCG en caso contrario un proceso se encuentra en segundo plano BbackgroundC.

Espacio de direcciones de memoria l"ica o virtual de un proceso.


El espacio de direcciones de memoria lgica o virtual de un proceso Bimagen del proceso o espacio de direcciones de usuarioC se divide en varias regiones: la regin de cdigo Bo regin de te+toCG la regin de datos ' la regin de pila. La regin de datos puede dividirse en regin de datos iniciali*adosG de tama?o &ijoG ' regin de datos no iniciali*adosG de tama?o variable. La regin de pila se crea autom/ticamente ' su tama?o se ajusta din/micamente en tiempo de ejecucin. El registro puntero de pila almacena la pr+ima entrada libre o la ltima utili*adaG dependiendo de la ar8uitectura del procesador. $uesto 8ue la regin de pila ' la de datos no iniciali*ados puede variar durante la ejecucin de un proceso se deben reservar regiones libres ad'acentes. , parte de las regiones del espacio de direcciones de memoria lgica a las 8ue se accede en modo usuarioG el SO ubica estructuras de datos relativas al proceso en curso 8ue le permiten controlar su ejecucin ' 8ue son accesibles en modo supervisor o ncleo.
Tipos de procesos

$rocesos de usuario. $ueden ejecutarse en primer o segundo plano. Se ejecutan en modo usuario. $rocesos demonio. $rocesos no asociados a ningn usuario. @eali*an tareas relacionadas peridicas de administracin del sistema. Se ejecutan en modo usuario generalmente en segundo plano. $rocesos del sistema operativo. @eali*an tareas de administracin Bcomo el intercambio de procesos entre memoria principal ' secundariaC del sistema en modo supervisor 'G generalmenteG en segundo plano.

Estados de un proceso

,un8ue el nmero ' el nombre depende de cada sistema operativoG algunos de los estados m/s habituales son: )uevo. $reparado. Ejecut/ndose. Alo8ueado. Terminado.

,dem/sG nos podemos encontrar con otros dos estados disponibles en algunos sistemas operativos:

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

11

$reparado en memoria secundaria. Alo8ueado en memoria secundaria.

Control de los procesos


Estructuras de control del sistema operativo

El sistema operativo debe mantener in&ormacin sobre el estado de cada proceso ' cada recurso. Esta in&ormacin se guarda en tablas en memoria Tabla de procesos. !ada entrada en la tabla almacena un $!A B$rocess !ontrol AlocFC con diversa in&ormacin: 4denti&icador del proceso. 4denti&icador del usuario. Estado del proceso. !ontenido de algunos registros del procesador. 4n&ormacin de plani&icacin del proceso. 4n&ormacin de locali*acin de la memoria principal asociada al proceso. 4n&ormacin de tipo estad3stico. 4n&ormacin de estado de EDS. 4n&ormacin sobre el evento por el 8ue el proceso ha entrado en modo blo8ueado. Tablas de memoriaG con in&ormacin sobre espacio libre ' asignado. Tablas de EDSG con in&ormacin sobre disponibilidad de dispositivos ' 8uien lo usa. Tablas de archivosG con in&ormacin sobre archivos abiertos por los procesos.

,dem/sG podemos encontrar las pilas de control del sistema o pilas del sistema operativoG as3 como pilas de interrupcionesG colas de procesos preparados y bloqueadosG etc.
Creacin de procesos

!omprobar si el proceso puede ser creado. ,signar una nueva entrada de la tabla de procesos para el nuevo proceso. @eservar espacio en memoria para el proceso. 4niciali*ar el blo8ue de control del proceso. Establecer los enlaces adecuados. El arran8ue del sistema operativo. 4nteraccin del usuario mediante int<rprete de comandos o entorno de ventanas. 4nicio de un trabajo por lotes. 7n proceso en ejecucin invoca una llamada al sistema para crear otro proceso. 7)4K ' Linu+G mediante llamada a fork. !rea una copia e+acta del proceso padre. !uando el hijo es plani&icado para ejecutarseG invoca a execveG ' lan*a el otro programa.

Las causas 8ue originan la creacin de un proceso pueden ser:

12

Captulo 2. Descripcin

control de procesos

En Iindo6sG hijo.

createprocess

utili*a otro espacio de direcciones distinto para el proceso

Terminacin de procesos

!uando se produce una e+cepcin en su ejecucin. !uando &inali*a la tarea para la 8ue ha sido creado En 7)4KG llamada al sistema exit. En Iindo6s llamada a ExitProcess. En 7)4KG llamada al sistema kill. En Iindo6sG llamada al sistema TerminateProcess.

!uando un proceso privilegiado detenga otro.

7na ve* &inali*ado el procesoG ha' 8ue liberar los recursos 8ue utili*aba. El $!A no se elimina inmediatamenteG sino despu<s de haber auditado los datos.
Cambio de proceso

7n proceso , se interrumpe para iniciar o continuar la ejecucin de otro proceso A: cambio de contexto o cambio de proceso. !ausas m/s &recuentes para un cambio de conte+to son: El proceso en ejecucin pasa al estado bloqueado. La terminacin voluntaria o &or*ada del proceso en ejecucin. El sistema operativo termina de atender una interrupcin ' e+iste un proceso A en estado preparado con ma'or prioridad 8ue el proceso actual. El proceso en ejecucin ha e+cedido el tiempo m/+imo de ejecucin ininterrumpida. Salva el conte+to del proceso , en su $!A. Se ejecuta el algoritmo de plani&icacin para seleccionar el proceso A. !argar el $!A del proceso A seleccionado.

$ara proceder a un cambio de conte+toG el sistema operativo sigue los pasos siguientes:

El tiempo de conmutacin es el tiempo 8ue se tarda en completar todo el proceso debido a las limitaciones &3sicas de los componentes.

Ejecucin del sistema operativo


En &uncin de la tarea o servicio reali*adoG el tiempo utili*ado por el sistema operativo puede ser contabili*ado a un determinado proceso. El tiempo de uso de las tareas ' servicios propios de la administracin del sistema no se contabili*an a ningn proceso de usuarioH este tiempo no dedicado a tareas de usuario se denomina sobrecarga del sistema BoverheadC. El tiempo de determinadas tareas del sistema operativoG como la atencin a las interrupciones hard6areG no es sencillo asignarlas a un proceso en particular dado su car/cter as3ncrono. 7)4KG por ejemploG se las anota al proceso ejecut/ndose en el momento de producirse la interrupcinG aun8ue no sea este el causante.

#rocesos multihilo
7n proceso est/ caracteri*ado por dos elementos 8ue pueden ser tratados de &orma independiente:

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

1!

!onjunto de recursos asignados: espacio de direccionesG archivos abiertosG etc. Tra*a de ejecucinG hilo de controlG hilo o hebra BthreadC. Eace re&erencia a las instrucciones 8ue ejecuta el proceso durante su tiempo de vida.

Los sistemas operativos modernos introducen el modelo de proceso multihilo: un proceso puede estar &ormado por mltiples hilos. Estos sistemas operativos utili*an los procesos como unidad de asignacin del procesador 8ue sigue una determinada tra*a de ejecucin ' tiene asignado una pila de usuarioG espacio de almacenamiento ' un blo8ue de control del hilo. Este blo8ue de control contiene el identi&icador num<rico del hiloG el estado del hiloG su prioridad de ejecucin ' los valores de los registros. , un hilo se le llama a veces proceso ligero Blight6eigth processC. !ada hilo perteneciente a un proceso comparte con los restantes hilos del mismo proceso los mismos recursos blo8ue de control del procesoG etc. =entajas de procesos multihilos respecto de mltiples procesos: ,umento del rendimiento del sistema. ,horro de recursos. !omunicacin m/s e&iciente. 1a'or aprovechamiento de las ar8uitecturas multiprocesador. Simpli&icacin de la estructura de las aplicaciones.

El principal inconveniente es la necesidad de sincroni*acin de acceso a las estructuras de datos 8ue comparten los hilos.
Control de hilos

!omo sucede con los procesosG un hilo puede encontrarse durante su tiempo de vida en di&erentes estados. En un determinado instanteG un proceso se encontrar/ en un estado determinado 8ue no tiene por 8ue coincidir con el estado de sus hilos. ObviamenteG el estado del proceso limita el estado en el 8ue pueden encontrarse sus hilos: si un proceso se encuentra en estado preparado ninguno de sus hilos puede estar ejecut/ndose. La plani&icacin de la cola de hilos se reali*a a nivel de hilos. !uando un hilo termina su ejecucin simplemente desapareceG 'a no es plani&icable. El poder reali*ar un cambio de hilo dentro de un mismo proceso cuando un hilo cambia al estado blo8ueado depende del tipo de implementacin de hilos 8ue soporte el sistema operativo. En el momento 8ue un hilo &inali*a su ejecucin sus recursos asignados son liberados. 7n proceso no puede entrar en estado terminado hasta 8ue no ha'an &inali*ado todos sus hilos.
Tipos de hilos

0ilos a nivel de usuario. OG simplementeG hilos de usuarioG son implementados por una biblioteca de hilos 8ue se ejecuta a nivel de usuario. 4nicialmenteG una aplicacin comien*a con un solo hilo. Este proceso puede iniciar otro hilo invocando a la &uncin apropiada de la biblioteca de hilos del SO. !ada proceso re8uiere una tabla de hilosG en la 8ue cada entradaG denominada bloque de control del hiloG mantiene la in&ormacin asociada al hilo Bcontador del programaG registro de pilaG etc.C Esta tabla es similar a la tabla de procesos. La reali*acin del cambio de hilo dentro de un mismo proceso se reali*a sin necesidad de reali*ar un cambio de modo ' un cambio de conte+to. Toda esta actividad tiene lugar en modo usuario dentro del proceso en ejecucinG sin intervencin del sistema operativo. Esto proporciona las siguientes ventajas:
1" Captulo 2. Descripcin control de procesos

$ortabilidad. ,l no re8uerir la intervencin del SOG slo de la biblioteca de hilos 8ue puede estar disponible para mltiples SO. 1ejora del rendimiento del sistema. ,l reali*arse toda la gestin de hilos en modo usuario. $lani&icacin independiente. !ada proceso puede emplear un algoritmo de plani&icacin distinto ' estos a su ve* distintos del 8ue emplee el sistema operativo.

La principal desventaja se da en a8uellos sistemas operativos 8ue solo soportan un hilo a nivel de ncleo: cuando un hilo de un proceso entra en estado blo8ueadoG todo el proceso se blo8uea: el sistema operativo desconoce la e+istencia de hilos de usuario. Otra desventaja es 8ue cuando un hilo se est/ ejecutando no se puede plani&icar otro hilo de usuario del mismo proceso a no ser 8ue el primero ceda voluntariamente el uso del procesador. 0ilos a nivel de n1cleo Los hilos del ncleo son implementados ' gestionados directamente por el ncleo del SO. )o precisan biblioteca de hilos. El sistema mantiene una nica tabla de hilos. Si uno se blo8uea se puede plani&icar otro del mismo o distinto proceso. En sistemas multiprocesador puede ejecutarse un hilo en cada procesador. Su gestin contribu'e a la sobrecarga del sistema. ,lgunos SOG por elloG limitan el nmero de hilos del ncleo. $ara ahorrar en tiempoG cuando un hilo se destru'e se marca como no plani&icable pero su estructura de datos no se eliminaG se reutili*a para otros hilos.

Principales con iguraciones en uncin del n!mero " tipo de hilos soportados por un sistema operativo

5ependiendo del nmero ' tipo de hilos soportados por un sistema operativoG se pueden distinguir las siguientes con&iguraciones: Mltiples hilos de usuario sin soporte de hilos del ncelo. El sistema plani&ica procesosG no hilos. La gestin de hilos la reali*a una biblioteca de hilos. !uando un hilo reali*a una llamada al sistemaG comien*a a ejecutarse el SO. Si la llamada re8uiere el blo8ueo del hiloG se blo8uea el proceso completo. )o pueden ejecutarse varios hilos al mismo tiempoG 'a 8ue slo uno puede acceder al SO. n hilo del ncleo por cada hilo de usuario. )o se precisa biblioteca de hilosG solo acceder a las utilidades de hilos del ncleo. Si un hilo de usuario se blo8uea se puede plani&icar otro del mismo proceso. La plani&icacin la reali*a el SO. 5ebido a la sobrecargaG se limita el nmero de hilos 8ue es posible crear. Menor nmero de hilos del ncleo que hilos de usuario. Se re8uiere biblioteca de hilos para gestin de hilos de usuario.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos 1#

Los hilos de usuario se asocian a un nmero LM de hilos del ncleo. Es el programador de la aplicacin 8uien se encarga de establecer el nmero de hilos del ncleo 8ue necesita. ,una las ventajas de las dos con&iguraciones anterioresG si est/ bien implementada.

1$

Captulo 2. Descripcin

control de procesos

Captulo #.

Plani icacin de procesos

En una m/8uina con multiprogramacin pueden ejecutarse concurrentemente varios procesos. Si la m/8uina dispone de un nico procesadorG en un determinado instante de tiempo slo un proceso o hilo puede usarlo. El sistema operativo debe decidir 8u< proceso es el 8ue va a ser ejecutado.

$iveles de plani%icacin
!olas de procesos para plani&icar los recursos del procesador: !ola de procesos en estado preparado. !ola de procesos en estado preparado en memoria secundaria. !ola de procesos en estado blo8ueado. !ola de procesos en estado blo8ueado en memoria secundaria. !ola de trabajos por lote o cola de entrada.

7n proceso puede pasar por varias colas. La actividad de determinar cu/ndo se entra en una cola o se pasa a otra se denomina planificacin de procesos ' al componente 8ue la reali*a planificador. Se distinguen tres niveles de plani&icacin: $lani&icacin a corto pla*oG 8ue decide 8u< proceso ser/ ejecutado a continuacin. $lani&icacin a medio pla*oG de determina 8u< proceso en cola de memoria principal pasa a cola de memoria secundaria ' viceversa. $lani&icacin a largo pla*oG determina 8u< trabajo por lotes pasa a ser ejecutado mediante la creacin de un proceso.

,dem/sG se puede distinguir un cuarto nivel de plani&icacinG la planificacin de !"S. !ada nivel de plani&icacin es implementado por su propio plani&icador.
Plani icador a corto pla$o

5esde el punto de vista lgicoG todo plani&icador se puede dividir en tres componentes o elementos: Encolador Ben8ueuerCG encargado de incluir al proceso en la cola de procesos preparados ' de asignarle una prioridad. !onmutador de conte+to Bconte+t s6itcherCG encargado de guardar el conte+to del proceso a ser desalojado ' cargar el conte+to del proceso a ser ejecutado. 5istribuidor o despachador BdispatcherCG encargado de seleccionar un proceso de la cola de procesos preparados ' cederle el control del procesador. El tiempo 8ue transcurre entre la detencin de un proceso ' la ejecucin de otro se llama tiempo de despacho. ,lgunos SO no permiten la e+propiacin de un proceso 8ue se ejecuta en modo ncleo 8ue est/ reali*ando una llamada al sistema. Estos sistemas se llaman de nucleo no expropiable. !uando se ha terminado de crear un nuevo proceso hijo. !uando un proceso entra en estado blo8ueado en espera de 8ue se produc*a algn evento. !uando se termina de atender una interrupcin. !uando un proceso &inali*a.

,lgunas circunstancias 8ue hacen necesaria una llamada al plani&icador a corto pla*o son:

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

17

Plani icador a medio pla$o

Tambi<n conocido como planificador de memoria o intercambiador. 5ecide 8u< procesos de memoria principal se pasa a memoria secundaria ' viceversa. Se ejecuta con menor &recuencia 8ue el plani&icador a corto pla*o. $uede ser invocado cuando 8ueda espacio libre en la memoria principal o por8ue el nmero de procesos en el estado preparado cae por debajo de algn l3mite pre&ijado.
Plani icador a largo pla$o

Tambi<n se denomina planificador de trabajos o planificador de admisin. 5ecide 8u< trabajo de los pendientes en la cola trabajos por lotes ser/ admitido para ser ejecutado. La admisin de un trabajo consiste en la creacin de un proceso para el procesamiento de dicho trabajo. El plani&icador a largo pla*o permite regular el nivel de multiprogramacin del sistemaG invoc/ndolo cuando se termina un trabajo o tras cierto tiempo de inactividad del procesador. , tener en cuenta es 8ue la ejecucin de un proceso comien*a con una r#faga de !$7G esto esG utili*ando el procesador de &orma continuada durante un cierto periodo de tiempo. ,s3 nos podemos encontrar con procesos limitados por $% G en los 8ue <ste se encuentra la ma'or parte del tiempo utili*ando la !$7 ' poco los recursos de EDS ' los procesos limitados por !"S. El plani&icador debe intentar seleccionar los trabajos de &orma 8ue e+ista un e8uilibrio entre procesos de un tipo ' de otro. ,lgunos sistemas operativos como 7)4K no disponen de plani&icador a largo pla*o.

Criterios "enerales considerados en la plani%icacin de procesos


E8uidad. @e8uisistos similares N tiempo de uso de los recursos similares. $revisibilidad. !aracter3sticas similares N tiempo de ejecucin similares. 7so e8uilibrado de los recursos. 1antener todos los recursos ocupados D optimi*ados. $roporcionalidad. $eticiones sencillas N mejor tiempo de respuesta 8ue peticiones complejas.

Criterios considerados en la plani%icacin del procesador


El plani&icador del procesador elige el pr+imo proceso 8ue pasar/ a ser ejecutado en el procesador en base a la optimi*acin simult/nea de alguno o alguno de los siguientes criterios: 7tili*acin del procesador o e&icacia. $orcentaje de tiempo del procesador activo. $roductividad BthroghputC o rendimiento. )mero de trabajos completados por u.t. B horaC Tiempo de entrega Bturnaround timeCG tambi<n denominado tiempo de retorno o tiempo de estancia. Tiempo desde 8ue se lan*a un proceso hasta 8ue &inali*a. Tiempo de espera. Tiempo total de estancia en las colas de espera. Tiempo de respuesta Bresponse timeC. Tiempo desde 8ue se lan*a una orden hasta 8ue se obtiene el resultado. $la*o de &inali*acin BdeadlineC. Tiempo m/+imo 8ue un proceso tiene para ser completado en un sistema de tiempo real.

La eleccin de los criterios a optimi*ar depende del tipo de sistema operativo. En un sistema por lotes debe intentar ma+imi*ar la utili*acin del procesador ' la productividadG uno de tiempo compartido el tiempo de respuesta ' uno de tiempo real el tiempo de entrega.
18 Captulo !. %lani&icacin de procesos

)ormalmenteG el plani&icador optimi*a los valores medios de los criterios 8ue considera. Es m/s importante minimi*ar la varian*a en el tiempo de respuesta 8ue minimi*ar el tiempo de respuesta promedio. !uando se intentan optimi*ar varios criterios simult/neamenteG se debe tener en cuenta 8ue pueden ser incompatibles entre s3.

E&propiabilidad del procesador


$lani&icacin del procesador no e2propiativa Bnon preemptiveC si permite 8ue un proceso pueda estar ejecut/ndose en el procesador ininterrumpidamente. 7tili*ada en sistemas por lotes. Tambi<n se utili*a en sistemas en tiempo realG en el 8ue los procesos no utili*an el procesador por largos per3odos de tiempo.

$lani&icacin del procesador e2propiativa BpreemptiveC si el proceso 8ue se est/ ejecutando puede ser interrumpido en cual8uier momento. 1a'or sobrecarga en el sistema $roporciona mejor servicio a la poblacin de procesos @e8uiere 8ue el ncleo disponga de mecanismos de sincroni*acin 7tili*ada en sistemas de tiempo compartido o interactivos. El tiempo m/+imo de ejecucin ininterrumpida se denomina quantum &cuanto'.

'l"oritmos de plani%icacin
Primero en llegar % primero en ser servido % FCFS

,breviadamente .!.S B.irst !ome .irst ServedC. !ede el uso del procesador al primer proceso 8ue lo solicite. )o e+propiativo. @e8uiere de una cola .4.O de procesos preparados. Tiempo de espera promedio bastante grande. 1ejor para procesos largos. .avorece a los procesos limitados por el procesador &rente a los limitados por EDS. Se desaconseja su uso como principal algoritmo de plani&icacin. Otil en combinacin con otros.

Primero el proceso ms corto % S&F

,breviadamente S0.G Shortest 0ob .irst o S$) Shortest 0ob )e+t. Se ejecuta primero el proceso con tiempo de procesamiento m/s corto. )o e+propiativo. Si dos o m/s procesos tienen el mismo tiempo de procesamiento se aplica .!.S. 1inimi*a el tiempo de espera promedio de un conjunto de procesos.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

19

Se suele utili*ar en SO por lotesG tanto en el plani&icador a largo como a corto pla*o. Se precisa conocer por adelantado el tiempo de procesamiento de cada proceso. En SO de tiempo compartidoG se puede estimar la duracin de las siguientes r/&agas utili*ando la duracin de las anteriores. Se suele utili*ar un preditor promedio e+ponencial. M n+ =t n+ ( )M n . donde 1nP es el promedio estimado para la pr+ima r/&agaH t n es la duracin de la ltima r/&agaG 1n el promedio estimado para la ltima r/&aga ' el peso 8ue se le asigna entre 2 ' . ,l tener 8ue calcular estimacionesG la sobrecarga se hace ma'or cuanto ma'or es la precisin del c/lculo. Los procesos largos pueden su&rir inanicin.

'enor tiempo restante

,breviadamente S@TG Shortest @emaining Time ne+tG versin e+propiativa del S.0. ,lgoritmo e+propiativo. Siempre selecciona al proceso con el menor tiempo restante de ejecucin. Suele utili*arse en sistemas de procesos por lotes. @e8uiere una estimacin de los tiempos restantes de ejecucin de la poblacin de procesos. $uede producir inanicin a los procesos largos. , igualdad de tiempo de servicio restante se aplica .!.S.

Plani icacin de turno rotatorio

Round Robin o c3clicoG similar al .!.S pero e+propiatorio. ,signa el uso ininterrumpido del procesador durante un periodo de tiempo determinado llamado cuantoG quantum o time slice. ,l &inali*ar el cuantoG se interrumpe el proceso actual ' se ejecuta el siguiente en la cola. El proceso interrumpido pasa al &inal de la cola. Si un proceso &inali*a antes 8ue su cuantoG se plani&ica el siguiente proceso preparado sin esperar a la &inali*acin del cuanto. Si &inali*a el cuanto de un proceso ' no e+isten procesos en colaG vuelve a plani&icarse el mismo proceso. Elemento clave para el rendimiento del algoritmo es la eleccin del tama?o del cuanto. Se recomienda un cuanto ligeramente ma'or 8ue el tiempo promedio de duracin de una r/&aga de procesador. ,lgoritmo dise?ado para los sistemas de uso compartido. El tiempo de respuesta promedioG el tiempo de retorno promedio ' el tiempo de espera promedio pueden ser largos.

Plani icacin basada en prioridades

,signa a cada proceso una determinada prioridad en el momento de su creacin. Siempre se plani&ica para ejecucin el proceso de ma'or prioridad.

20

Captulo !. %lani&icacin de procesos

La asignacin de prioridades a los procesos puede reali*arse en &uncin de &actores internos del sistemaG como re8uerimientos de memoriaG duracin promedio de la r/&aga.. o a &actores e+ternosG como la importancia del usuario. Si la prioridad asignada no se modi&ica durante el tiempo de vida del procesoG se denomina asignacin de prioridades est/ticaH din/mica si se modi&ica. $uede ser e+propiativo ' no e+propiativo. !uando es de tipo e+propiativo se dice 8ue est/ guiado por eventos &event(driven'. 7n proceso con baja prioridad puede su&rir inanicin. T<cnicas para evitar la inanicin: Envejecimiento de procesos BagingCG aumentando la prioridad con&orme aumenta el tiempo de espera. 5isminuir la prioridad del proceso en ejecucin en cada interrupcin de reloj. Limitar el tiempo de ejecucin.

$uede darse el &enmeno de inversin de prioridad 8ue ocurre cuando un proceso m/s prioritario debe esperar a 8ue un recurso se libere por otro proceso con menor prioridad. $uede resolverse mediante el traspaso o herencia de prioridad.

Plani icacin basada en m!ltiples colas de prioridad

Se disponen varias colas cada una de las cuales dispone nicamente de procesos con un determinado nivel de prioridad o dentro de un rango de prioridades. Siempre se ejecuta un proceso de la cola de ma'or prioridad. Slo cuando esa cola se vac3aG se ejecutan los de la siguiente cola. 7n proceso slo puede pertenecer a una cola. $ara plani&icar cada cola puede usarse .!.SG S0.G etc. $uede producirse inanicin de los procesos de las colas de menor prioridad. $ara evitarloG puede asignarse a los procesos de cada cola un porcentaje de tiempo de procesador

'!ltiples colas de prioridad " realimentacin

Se permite 8ue un proceso pueda ir cambiando de cola de prioridad durante su e+istencia. @e8uiere de&inir un mecanismo 8ue regule cmo se modi&ica la prioridad de los procesosG esto esG cmo ' cu/ndo se produce el paso de una cola a otra. 7n mecanismo puede consistir en reducir la prioridad del proceso en cada cuanto de ejecucin hasta 8ue llega a la cola de menor prioridadG donde se 8uedaG siendo entonces esta cola de turno rotatorio. !on este mecanismo se &avorecen los procesos nuevos ' cortos &rente a los viejos ' largos. $ara evitarlo puede asignarse un cuanto de ma'or tama?o con&orme disminu'e la prioridad de las colas. Esta t<cnica no evita compeltamente la inanicinG por lo 8ue puede combinarse con la de envejecimiento de procesos.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

21

Plani icacin por tiempo lmite

En los sistemas de tiempo real estricto el tiempo de servicio de algunos procesos debe completarse en un determinado pla*o o tiempo l3mite BdeadlineC. El plani&icador slo admite en la cola de procesos preparados a8uellos a los 8ue pueda garanti*ar 8ue su tiempo de servicio se atender/ dentro de su tiempo l3miteG en &uncin de los tiempos de espera e+istentes en la cola. 5ebe conocerse por adelantado el tiempo de servicio ' deadline de cada proceso

Eleccin del algoritmo de plani icacin

En primer lugar deben &ijarse los criterios de seleccin ' a continuacin evaluar los di&erentes algoritmos de plani&icacin usando algn m<todo de evaluacin. 1odelado determinista. Evalua cada algorimo candidato usando una carga de trabajo predeterminada e id<ntica para todos ellos. Es di&3cil establecer esta carga de manera realista ' manejable. 1odelo anal3tico mediante sistema de colas. Se obtiene un modelo anal3tico matem/tico. !ada recurso hard6are del sistema ' cada cola so&t6are asociada se modela como una estacin de servicio 8ue consta de un servidor ' una cola de espera. Se establece para cada estacin de servicio una determinada tasa de llegada ' una tasa de servicio de peticiones. El conjunto &ormado por las estaciones de servicio ' sus clientes Blos usuariosC &orma un sistema de colas 8ue puede ser anali*ado usando la teora de colas. Simulacin. Se constru'e un programa 8ue reproduce el comportamiento temporal del sistema bas/ndose en sus estados ' sus transiciones.

#lani%icacin de hilos
La plani&icacin de hilos depende de los tipos de hilos soportados por el SO. Si slo se soportan hilos a nivel de usuario el SO no es consciente de su e+istenciaG debiendo ser el proceso 8ue los lan*a 8uien debe encargarse de su plani&icacin. Si se soportan hilos del ncleo el sistem operativo los plani&ica utili*ando alguno de los m<todos vistos anteriormente. El plani&icador debe tener en cuenta la sobrecarga 8ue puede producir en el sistema el cambio de conte+to entre hilos de distintos procesos.

22

Captulo !. %lani&icacin de procesos

Captulo (.

Sincroni$acin " comunicacin de procesos

La ejecucin concurrente de procesos presenta varios problemasG todos ellos asociados al hecho de 8ue no es posible predecir la velocidad relativa de ejecucin de un proceso. 5icha velocidad es &uncin de la pol3tica de plani&icacin del sistema operativoG de la &orma en 8ue se tratan las interrupciones ' de la actividad de los otros procesos en el sistema. 7no de los principales problemas de la ejecucin concurrente de procesos es 8ue el acceso a recursos globales compartidos BmemoriaG dispositivos de EDSG etcC debe controlarse de alguna &orma si se desea 8ue el resultado de la ejecucin de un proceso sea independiente de la velocidad de ejecucin del proceso con respecto a los otros procesos concurrentes.

E&clusin mutua
)nteraccin entre procesos concurrentes

En un sistema con multiprogramacin se ejecutan mltiples procesos de manera concurrente. $odemos distinguir $rocesos independientesG 8ue se ejecutan sin tener en cuenta la e+istencia de otros procesos. $rocesos cooperantesG 8ue intercambian in&ormacin o colaboran entre s3 para compartir un recurso o reali*ar alguna tarea. !ooperacin directa: los procesos conocen la e+istencia e identidad de los otros procesos con los 8ue colaboran. !ooperacin indirectaG los procesos no conocen la e+istencia e identidad de los otros procesos 'G en consecuenciaG no se comunican con ellos pero deben garanti*ar 8ue los recursos 8ueden en un estado coherente.
Condiciones de carrera

El problema denominado condicin de carrera Brace conditionC surge cuando mltiples procesos independientes se ejecutan concurrentemente ' acceden para leer o escribir en un recurso compartido. En ese caso el resultado &inal de la ejecucin depende del rden en 8ue se ha'an plani&icado los procesos.
Secciones crticas

Seccin cr3tica o regin cr3tica de un proceso es una instruccin o conjunto de instrucciones secuenciales de su cdigo 8ue re8uieren manipular un recurso compartido BvariableG datoG &icheroG QC con otros procesos. 5entro del cdigo de un proceso pueden e+istir varias regiones cr3ticas.
*escripcin de la e+clusin mutua

Las condiciones de carrera se evitar3an si el uso de un recurso por parte de un proceso e+clu'e su uso para los restantes. Este mecanismo se denomina de exclusin mutua. Sin m/s re8uisitos adicionales la e+clusin mutua puede producir problemas como interblo8ueos o inanicin de procesos. El interblo8ueo o blo8ueo mutuo de dos o m/s procesos se produce cuando dos procesos , ' A necesitan dos recursos @ ' @" para reali*ar una cierta &uncin. Si , posee @ ' A posee @"G ambos se 8uedar/n esperando por el recurso 8ue necesitanH no pueden liberar el recurso 8ue poseen por8ue est/n esperando el otro recurso para reali*ar la &uncin correspondiente.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

2!

La inanicin de un proceso se produce cuando este no puede progresar al necesitar un recurso al 8ue nunca llega a acceder por8ue el sistema operativo siempre da prioridad a otros procesos. . Slo un proceso puede estar a la ve* en una seccin cr3tica asociada a un recurso @.

$ara evitar estoG los mecanismos de e+clusin mutua deben cumplir cinco re8uisitos: ". )o pueden reali*arse suposiciones sobre la velocidad relativa ' prioridad de ejecucin de los procesos concurrentes. #. 7n proceso 8ue no est/ ejecutando una seccin cr3tica asociada a un recurso @ no est/ impidiendo o blo8ueando el uso de @ a otros procesos. %. 5ebe evitarse la inanicin de procesos. 7n proceso no debe permanecer en su seccin cr3tica por tiempo ilimitado. (. Si ningn proceso est/ en una seccin cr3tica asociada a @G debe concederse r/pidamente el acceso a esa seccin cr3tica al proceso 8ue lo solicite.
Soluciones so t,are a la e+clusin mutua

)o presuponen el apo'o del sistema operativo o del hard6are del ordenador para su implementacin. Eacen uso de un bucle de comprobacin del valor de una o varias variables cerrojo BlocFC. La comprobacin del valor en un bucle se denomina cerrojo con vuelta BspinlocFC. Este tipo de espera se denomina espera activa Bbus' 6aitingC o espera cclica Bspin 6aitingC. so de cerrojo y alternancia estricta. Esta solucin considera la e+istencia de una variable global de acceso 8ue se usa como cerrojo ' 8ue puede tomar como valor el identi&icador num<rico de un proceso. Este m<todo posee dos inconvenientes: la velocidad de ejecucin se ve limitada por el proceso m/s lento. ,dem/sG si un proceso &alla antes de cambiar el valor de la variable global el otro proceso 8uedar/ blo8ueado inde&inidamente. )lgortimo de %eterson. Simpli&icado para dos procesosG se dispone de un vector donde cada proceso establece a TRUE su deseo de acceder al recurso. ,dem/sG se guarda en una variable global el identi&icador del otro proceso. 7n bucle de espera c3clica comprueba 8ue la peticin pueda ser atendida ' 8ue el recurso no est/ siendo utili*ado por el otro proceso.
!define FALSE " !define TRUE # int t rno$ int peticion_rec[%]$ void acceso_sc&int pid' ( int otro_pid$ otro_pid = # ) pid$ peticion_rec[pid] = TRUE$ t rno = otro_pid$ *+ile&t rno == otro_pid ,, peticion_rec[otro_pid == TRUE'.

!ada proceso llama a acceso_sc antes de acceder a su seccin cr3tica ' al salir llamar3a a salida_scG 8ue establece a FALSE su entrada en peticion_rec. Este algoritmo garanti*a la e+clusin mutua 'a 8ue el proceso 8ue primero ejecuta la instruccin peticion_rec[pid] = TRUE obtiene el acceso al recurso. Se evita la posibilidad de interblo8ueo al almacenarse en t rno el valor del pid del otro proceso.

2"

Captulo ". 'incroni(acin

comunicacin de procesos

Soluciones a la e+clusin mutua con apo"o del hard,are

so de instrucciones m#quina especiales 8ue blo8uean el uso del bus. Se caracteri*an por ser atmicasG es decirG se ejecutan en un nico ciclo de instruccin 8ue no puede ser interrumpido. 7na instruccin t3pica en muchos procesadores es p robar y configurar Btest and setC: ccc r#/ cerro0oG 8ue copiar3a el contenido de la posicin de memoria compartida cerro0o en el registro r# ' escibe en cerro0o un valor distinto de cero. El principal inconveniente es 8ue tambi<n ha' 8ue reali*ar una espera activa para comprobar el valor del cerrojo. Tambi<n pueden producirse interblo8ueos.

*loqueo de las interrupciones. ,ntes de entrar en una regin cr3ticaG puede ejecutarse una instruccin especial 8ue blo8uea el mecanismo de interrupciones del sistemaG restaur/ndolo al salir de la seccin cr3tica. $ero el sistema se puede degradar bastante al no permitirse atender las interrupciones mas prioritarias en el momento en 8ue lleganG ,dem/sG se deja en manos del proceso la decisin de ceder el procesadorG pudiendose 8uedar el sistema colgado si este nunca lo devuelve. Esta solucin no sirve en el caso de multiprocesadores.

Sem(%oros
Son un mecanismo de sincroni*acin de procesos concurrentes gestionados por los sistemas operativos. 7n sem/&oro es una variable 8ue almacena un valor entero sobre el 8ue se pueden reali*ar tres operaciones b/sicas: ,signar un valor inicial entero no negativo. S
P&S'. [*ait]. = 1

5isminuir en una unidad el valor del sem/&oro. S = S ) #. Si S se hace negativoG el proceso 8ue ha llamado al sem/&oro pasa a la cola de procesos blo8ueados asociada al sem/&oro.
2&S'. [si3nal].

4ncrementa en una unidad el valor del sem/&oroG S = S 4 #. Si S es menor o igual a ceroG se eliminar uno de los procesos blo8ueados la cola ' se pasa al estado preparado.

Los nombres P ' 2G se suelen encontrar como *ait ' si3nal5 En este te+to *ait_sem ' si3nal_sem. El anterior es un sem#foro general o sem#foro con contador. La versin de sem/&oro 8ue slo puede tomar los valores 2 ' se denomina sem#foro binario o mutex &uncionando de la siguiente manera:
*ait_sem&S'.

Si S M 2G el proceso pasa a cola de blo8ueadosG si S M G pone el sem/&oro a cero ' contina su ejecucin.
si3nal_sem&S'.

Si la cola de blo8ueados est/ vac3aG pone el sem/&oro a ' contina. Si no est/ vac3aG se elimina un proceso de la cola de blo8ueados ' pasa al estado preparado.

)mplementacin

El sistema operativo se encarga de asignar las estructuras de datos necesarias para los sem/&oros ' de reali*ar las operaciones sobre ellos. Las operaciones *ait_sem ' si3nal_sem son implementadas por el ncleo como primitivas o &unciones atmicasG esto esG 8ue se ejecutan como un nico ciclo de instruccin 8ue no puede ser interrumpido. En la implementacin de estas primitivas en el ncleo se ha de resolver un problema de e+clusin mutua. En sistemas monoprocesadores la e+clusin mutua se garanti*a blo8ueando las interrupciones cuando se est/ ejecutando una operacin sobre el sem/&oro.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

2#

str ct semaforo ( int contador$ 67 8tras varia9les para implementar el sem:foro ; s 67 < e dependen del sistema operativo 76 . void init_sem&semaforo S/ int valor' S5contador = valor$ . void *ait_sem&semaforo S' ( 67 =lo< eo de interr pciones 76 S5contador = S5contador ) #$ if &S5contador > "' ( 67 A?adir el proceso a la cola del sem:foro 76 67 =lo< ear el proceso 76 67 @es9lo< ear las interr pciones 76 . else ( 67 @es9lo< ear las interr pciones 76 . .

cola 76

void si3nal_sem&semaforo S' ( 67 =lo< eo de las interr pciones 76 S5contador = S5contador 4 #$ if &contador >= "' ( 67 Eliminar n proceso P de la cola del sem:foro 76 67 A?adir el proceso P a la cola de procesos preparados 76 . 67 @es9lo< eo de las interr pciones 76 .

En sistemas multiprocesador no puede emplearse la t<cnica de blo8ueo de interrupcionesG sino 8ue se utili*an instrucciones especiales del procesador.
str ct semaforo ( int contador$ int oc pado$ 67 8tras varia9les para implementar el sem:foro ; s 67 < e dependen del sistema operativo 76 . void init_sem&semaforo S/ int valor' S5contador = valor$ . void *ait_sem&semaforo S' ( *+ile &Atest_set_ma< ina&S5oc pado'' 66 = cle de espera activa S5contador = S5contador ) #$ if &S5contador > "' ( 67 A?adir el proceso a la cola del sem:foro 76 67 =lo< ear el proceso 76 S5oc pado = "$ . void si3nal_sem&semaforo S' ( *+ile &Atest_set_ma< ina&S5oc pado'' 66 = cle de espera activa S5contador = S5contador 4 #$ if &contador >= "' ( 67 Eliminar n proceso P de la cola del sem:foro 76 67 A?adir el proceso P a la cola de procesos preparados 76 . S5oc pado = "$ .

cola 76

Si el procesador no dispone de ninguna instruccin especialG debe emplearse algn algoritmo como el de $eterson. La cola puede gestionarse con cual8uier algoritmoG siendo .4.O el m/s utili*ado.

2$

Captulo ". 'incroni(acin

comunicacin de procesos

-tilidad de los sem oros


Obtencin de e&clusin mutua

Se utili*an tantos sem/&oros como recursos distintos se compartanG protegiendo el acceso a los recursos mediante secciones cr3ticas.
!define TRUE # semaforo S void proceso_B&' ( *+ile&TRUE' ( 67 SecciCn no crDtica 76 *ait_sem&S'$ 67 SecciCn crDtica asociada al rec rso a si3nal_sem&S'$ 67 SecciCn no crDtica76 . .

tiliEar 76

Sincroni$acin de procesos

En este caso basta con 8ue el proceso 8ue espera la ocurrencia de un suceso ejecute *ait_sem para pasar al estado blo8ueado. El proceso 8ue lan*a la operacin ejecuta si3nal_sem para noti&icar 8ue el suceso se ha producidoG provocando 8ue el proceso 8ue espera prosiga su ejecucin.
!define TRUE # semaforo S void procesoA&' ( *+ile&TRUE' ( 66 5 5 5 *ait_sem&S'$ 66 Se 9lo< ea en espera de 66 5 5 5 . .

n evento

void proceso=&' ( *+ile&TRUE' ( 66 5 5 5 si3nal_sem&S'$ 66 1otifica la oc rrencia de 66 5 5 5 . . void main&' ( init_sem&S/ "'$ 66 Fnicia el sem:foro 9inario S e0ec ciCn_conc rrente&procesoA/ proceso='$ .

n evento

Problemas potenciales asociados a un mal uso de los sem oros

7na mala colocacin de las operaciones si3nal_sem ' *ait_sem puede provocar errores di&3ciles de detectar. En los siguientes ejemplos el sem/&oro acceso se utili*a para garanti*ar e+clusin mutua.
si3nal_sem&acceso'$ 66 SecciCn crDtica *ait_sem&acceso'$

En este caso se ha invertido el rden correcto de las operacionesG por lo 8ue varios procesos podr3an estar accediendo al mismo tiempo a la seccin cr3tica.
*ait_sem&acceso'$ 66 SecciCn crDtica *ait_sem&acceso'

En este ejemplo se escibe un segundo *ait_sem en lugar del correcto si3nal_sem para indicar la liberacin del recurso. $or tantoG el proceso nunca desblo8uear/ el recursoG 'a 8ue una ve*
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos 27

&inali*ada la seccin cr3tica vuelve a blo8uearse. El resto de procesos 8ue intenten acceder a su seccin cr3tica tambi<n ser/n blo8ueados 'a 8ue el recurso nunca se ha dado por liberado produci<ndose un interblo8ueo.

#roblemas cl(sicos de sincroni)acin de procesos concurrentes


El problema de los productores " los consumidores

7n proceso Bo variosC generan datos ' otro proceso Bo variosC los consumen. Se utili*a un bu&&er Bel recurso compartido a protegerCG en el 8ue los productores escribenG si no est/ llenoG ' los consumidores leenG si no est/ vac3o.
!define TRUE # !define 1 #"" 66 Tama?o del 9 ffer semaforo_9inario acceso$ semaforo oc pado/ disponi9le$ void prod ctor&' ( int dato$ *+ile &TRUE' ( dato = 3enerar_dato&'$ *ait_sem&disponi9le'$ *ait_sem&acceso'$ escri9ir_9 ffer&dato'$ si3nal_sem&acceso'$ si3nal_sem&oc pado'$ . . void cons midor&' ( int dato$ *+ile &TRUE' ( *ait_sem&oc pado'$ *ait_sem&acceso'$ leer_9 ffer&dato'$ si3nal_sem&acceso'$ si3nal_sem&disponi9le'$ . . 66 @ato a 3ra9ar en el 9 ffer 66 66 66 66 66 Espera6compr e9a < e el 9 ffer ten3a espacio li9re Espera a < e el 9 ffer estG disponi9le Entrar en secciCn crDtica- escri9ir en el 9 ffer Li9erar el 9 ffer Avisa al cons midor de la existencia de datos

66 @ato a leer del 9 ffer 66 66 66 66 66 Espera a < e +a;a datos disponi9les en el 9 ffer Espera a < e el 9 ffer estG disponi9le Leer dato del 9 ffer 6 SecciCn crDtica Li9erar el 9 ffer Fnforma < e tras la lect ra/ +a; espacio en el 9 ffer

void main&' ( init_sem&acceso/ #'$ 66 FnicialiEa el sem:foro 9inario init_sem&disponi9le/ 1'$ 66 Fndica el espacio disponi9le init_sem&oc pado/ "'$ 66 Fndica el espacio oc pado e0ec ciCn_conc rrente&prod ctor/ cons midor'$ .

Se utili*an un sem/&oro binario para acceder al bu&&er ' dos sem/&oros para indicar el espacio disponible ' el ocupado en el bu&&erG 8ue ser/n utili*ados por los consumidores ' productores.
El problema de los lectores " los escritores

7n ejemplo t3pico de acceso a bases de datos. 1ltiples lectores acceden a los registrosG un escritor slo puede acceder si no ha' ningn lector accediendo. Los lectores slo pueden acceder si no se est/ escribiendo. 1ltiples lectores pueden estar accediendo al mismo tiempo. Slo un escritor puede acceder. $ara llevar la cuenta del nmero de lectores se utili*a una variable global contador cu'o acceso se protege mediante un sem/&oro binario. Otro sem/&oro binario controla el acceso a los datos.

28

Captulo ". 'incroni(acin

comunicacin de procesos

!define TRUE # semaforo_9inario S#/ S%$ int contador = "$ void lector&' ( *+ile &TRUE' ( *ait_sem&S%'$ contador = contador 4 #$ if &contador == #' *ait_sem&S#'$ si3nal_sem&S%'$ leer_dato&'$ *ait_sem&S%'$ contador = contador ) #$ if &contador == "' si3nal_sem&S#'$ si3nal_sem&S#'$ procesar_dato&'$ . . void escritor&' ( prod cir_dato&'$ *ait_sem&S#'$ escri9ir_dato&'$ si3nal_sem&S#'$ . void main&' ( init_sem&S#/ #'$ init_sem&S%/ #'$ contador = "$ .

66 66 66 66 66 66 66 66

Fntenta acceder a la varia9le contador Ha; n lector m:s accediendo Si es el #er lector/ 9lo< ea el acceso al escritor Se li9era el acceso a la varia9le contador Solicit d de acceso a la varia9le contador Ha; n lector menos 1o +a; lectores/ se permite el acceso al escritor Li9era el acceso a la varia9le contador

66 Espera a tener acceso de escrit ra 66 Li9era el rec rso

*onitores
*e inicin

7n monitorG es un mdulo so&t6are 8ue consta de un conjunto de procedimientosG variables ' estructuras de datos 8ue posee la propiedad especial de 8ue solo permite a un nico proceso simult/neamente ejecutar alguno de sus procedimientos. Las variables contenidas en un monitor slo son accedidas por los procedimientos del monitor ' no por procedimientos e+ternos. $ara la sincroni*acin de procesosG el monitor dispone de las variables de condicinG cada una de ellas asociadas a una cola de procesos blo8ueados en espera de 8ue esa condicin se cumpla. Sobre una variable de condicin se pueden reali*ar dos operacionesG en este te+to:
*ait_mon&B'.

El proceso 8ue reali*a esta operacin 8ueda suspendido en la cola de procesos blo8ueados asociada a la condicin K. ,l contrario 8ue en los sem/&orosG esta operacin siempre produce el blo8ueo del proceso 8ue la invoca.
si3nal_mon&B'.

!omprueba si en la cola de procesos blo8ueados asociada a la variable K e+iste algn proceso. En ese casoG se desblo8uea un proceso. Esta operacin no opera sobre un contador. Si no ha' ningn proceso en colaG esta operacin no tiene ningn e&ecto ' la se?al de aviso se pierde. Segn la propuesta de A. Eansen B 97(C el proceso 8ue invoca esta operacin sale del monitor inmediatamenteG siendo por tanto la sentencia &inal del procedimiento de un monitor.

Estructura " declaracin de un monitor

7n monitor consta de + procedimientosG M variables de condicinG un conjunto de datos ' algunas rutinas de iniciali*acin del monitor. En el monitor slo puede haber a la ve* un proceso ejecutando alguno de sus procedimientos. !uando un proceso entra en el monitor permanece hasta 8ue invo8ue *ait_mon&B'. En ese momento el proceso pasa a la cola de blo8ueados B pudiendo entrar otro proceso al monitor. Si un proceso en

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

29

el monitor invoca si3nal_mon&B' un proceso de la cola de blo8ueados es desblo8ueado oG si estuviera vac3aG entrar3a un nuevo proceso al monitor en caso de 8ue hubiese procesos esperando en la cola de entrada.
-so de los monitores

Los monitores tambi<n pueden utili*arse para garanti*ar la e+clusin mutua ' la sincroni*acin entre procesos. $or la propia de&inicin del monitor la e+clusin mutua est/ garanti*ada de&ininiendo el acceso a los recursos compartidos dentro del monitor. 1ediante el uso de las variables de condicin ' las operaciones proporcionar la sincroni*acin de procesos.
*ait_mon

'

si3nal_mon

se puede

La solucin a los productores ' consumidores utili*ando monitores ser3a:


!define TRUE # !define 1 #"" 66 Iapacidad monitor mon# 66 @efiniciCn condicion lleno vacio$ int contador$ c+ar 9 ffer[1]$

del 9 ffer del monitor 66 2aria9les de condiciCn 66 2aria9les locales

void escri9ir&int dato' ( 66 Procedimiento del monitor if &contador == 1' *ait_mon&lleno'$ 66 Si 9 ffer est: lleno/ 9lo< ea escritor insertar_dato&9 ffer/ dato'$ contador = contador 4 #$ if &contador == #' si3nal_mon&vacio'$ 66 Si 9 ffer no vacDo/ des9lo< ea lector . void leer&int dato' ( if &contador == "' *ait_mon&vacio'$ 66 Si 9 ffer vacDo/ se 9lo< ea lector extraer_dato&9 ffer/ dato'$ contador = contador ) #$ if &contador == 1J#' si3nal_mon&lleno'$ 66 Si no lleno/ des9lo< ea escritor . contador = "$ . end monitor void prod ctor&' ( *+ile &TRUE' ( dato = prod cir_dato&'$ mon#5escri9ir&dato'$ . . void cons midor&' ( *+ile &TRUE' ( mon#5leer&dato'$ cons mir_dato&dato'$ . . void main&' ( e0ec cion_conc rrente&prod ctor/ cons midor' . ( 66 FnicialiEaciCn del monitor

#aso de mensajes
*e inicin

El paso de mensajes es un mecanismo de sincroni*acin ' comunicacin entre procesos soportado por los sistemas operativos tanto de sistemas centrali*ados como distribuidos. 7n mensaje es un conjunto de in&ormacin 8ue puede ser intercambiada entre un proceso emisor ' un proceso receptor. Las operaciones b/sicas son:
!0 Captulo ". 'incroni(acin comunicacin de procesos

send&destino/ mensa0e' receive&f ente/ mensa0e'

El argumento mensa0e es la direccin de memoria de la estructura de datos 8ue contiene el mensaje a enviar o donde se almacena el mensaje a recibir. Los aspectos b/sicos a considerar son La especi&icacin de la &uente ' el destino del mensaje. El es8uema de sincroni*acin. El &ormato del mensaje. El medio de almacenamiento.

Especi icacin de la uente " el destino del mensa.e


Comunicacin directa

Emisor ' receptor del mensaje especi&ican e+pl3citamente a 8u< proceso va dirigido o de 8ui<n se espera el mensaje. Otra posibilidad es 8ue el receptor especi&i8ue impl3citamente el proceso emisor del mensajeG pudiendo llegar <ste de cual8uier emisor. La comunicacin directa e+pl3cita es til para procesos concurrentes cooperantesG la comunicacin directa impl3cita cuando un proceso reali*a una operacin en &uncin del mensaje enviado por un proceso 8ue no se conoce a priori Bcola de impresin...C.
Comunicacin indirecta

El proceso emisor env3a el mensaje a una estructura de datos compartidaG el bu,nG 8ue se implementa como una cola de mensajes. 7n emisor - un receptor: para comunicacin privada entre procesos. 7n emisor - varios receptores: para di&undir determinada in&ormacin entre varios procesos. =arios emisores - un receptor: t3pico en aplicaciones cliente - servidor. =arios emisores - varios receptores: varios servidores atienden concurrentemente a varios clientes.

Es+uemas de sincroni)acin

$ueden distinguirse varios casos en &uncin de si el proceso emisor o receptor pueden pasar al estado bloqueado al reali*ar una operacin send o receive. con blo8ueo: el emisor pasa al estado blo8ueado hasta 8ue el mensaje sea recibido por el receptor o por el bu*n.
Send

sin blo8ueo: el emisor env3a el mensaje al bu*n o al destinatario ' sigue con su ejecucin. ,l no garanti*arse su recepcin deben emplearse mensajes de respuesta. El emisor tambi<n podr3a estar intentando enviar el mensaje repetidamenteG degradando el rendimiento
Send

con blo8ueo: el receptor permanece en estado blo8ueado en espera un mensaje. Si este nunca llegaG el receptor 8uedar3a inde&inidamente blo8ueado.
Receive

sin blo8ueo. El receptor obtiene un mensaje de un bu*n o un emisor ' prosigue su ejecucin. El mensaje puede ser nulo o no.
Receive

El es8uema m/s utili*ado es el env3o sin blo8ueo ' la recepcin con blo8ueo. El envio ' recepcin con blo8ueo se conoce como cita Brende*vousC entre emisor ' receptor.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos !1

,ormato ! almacenamiento de los mensajes

El mensaje est/ &ormado por una cabecera ' un cuerpo. La longitud del mensaje puede ser &ija o variable. Los mensajes de longitud &ija son m/s e&icientes para el sistema operativoG siendo los de longitud variable m/s sencillos para el programador de los procesos emisores. 5ependiendo de la capacidad de las colas de mensajes tenemos Mecanismo de mensajes sin bufferG en el 8ue los mensajes nunca pueden esperar ' el proceso emisor se blo8uea en espera de su recepcin. Mecanismo de mensajes con bufferG en el 8ue los mensajes se almacenan en un bu&&er normalmente gestionado por un algoritmo de tipo .4.O.

-so del paso de mensajes

Se pueden utili*ar para intercambiar in&ormacin entre procesos as3 como para garanti*ar la e+clusin mutua ' la sincroni*acin.
!define TRUE # !define 1 K 66 1Lmero de procesos void proceso&int i' ( mensa0e testi3o$ *+ile &TRUE' ( 66 SecciCn no crDtica receive&9 Eon#/ testi3o'$ 66 SecciCn crDtica send&9 Eon#/ testi3o'$ 66 SecciCn no crDtica . . void main&' ( mensa0e n lo$ crear_9 Eon&9 Eon#'$ send&9 Eon#/ n lo'$ e0ec cion_conc rrente&proceso&#'/555/ proceso&1''$ .

Ejemplo de e+clusin mutua utili*ando un bu*n ' send sin blo8ueo ' receive con blo8ueo. El mensaje se utili*a como paso de testigo para ir pasando la utili*acin del recurso entre procesos.

!2

Captulo ". 'incroni(acin

comunicacin de procesos

Captulo /.
.ntroduccin

)nterblo0ueo

5e &orma generalG un recurso hard6are o so&t6are se puede clasi&icar en: @ecurso reutili*ableG como archivosG sem/&orosG ' elementos hard6are. 7na instancia de un recurso reutili*able slo puede asignarse a un proceso como m/+imo. Slo cuando un proceso &inali*a el uso de de una instancia de un recurso reutili*able puede ser usada por otro. Los recursos hard6are son reutili*ables. @ecurso consumibleG como bu&&ers de entradaDsalida ' mensajes. Estos recursos pueden crearse ' posteriormente consumirse BdestruirseC.

e%inicin ! condiciones del interblo+ueo


5e &orma general puede de&inirse como a8uella situacin en la 8ue un conjunto de procesos est/ blo8ueado en espera de la liberacin de uno o varios recursos 8ue se encuentran asignados a otros procesos del mismo conjunto. $ara 8ue se produ*ca el interblo8ueo es necesario 8ue se produ*can cuatro condiciones: . !xclusin mutuaG por la 8ue cada instancia de un recurso solo puede ser asignada a un proceso como m/+imo. ". -etencin y espera. !ada proceso retiene los recursos asignados mientras espera ad8uirir otros 8ue necesita. #. +o existencia de expropiacin. Si un proceso posee un recursoG no se le puede e+propiar. %. !spera circularG en la 8ue una cadena de procesos se encuentra uno esperando la liberacin de un recurso 8ue posee el siguiente en la cadena ' el ltimo espera por el primero. Tres son las principales estrategias para el tratamiento de los interblo8ueos: . %revencin de interbloqueosG impidiendo 8ue alguna de las cuatro condiciones anteriores llegue a producirse. ". !vitacin de interbloqueosG e+aminando las consecuencias de asignar los recuros antes de hacerlo. #. .eteccin y recuperacin de interbloqueosG comprobando cada cierto tiempo la e+istencia de interblo8ueos ' actuando para eliminarlos de haberse producido.

/ra%os de asi"nacin de recursos


7n gra&o de asignacin de recursos puede utili*arse para detectar la presencia de interblo8ueosG suponiendo 8ue las condiciones de e+clusin mutua ' no e+propiacin 'a se cumplen. !on los gra&os se comprueba si e+iste condiciones de retencin ' espera ' espera circular. Si el gra&o no contiene ningn camino 8ue sea un ciclo puede garanti*arse la no e+istencia de interblo8ueos. Si aun habiendo un ciclo alguno de los recursos dispone de m/s de una instancia ' esa instancia no &orma parte de otro ciclo no e+iste interblo8ueo. !ada proceso se representa con un c3culo ' cada recurso con un cuadrado. !ada instancia de un recurso se representa con un punto dentro del cuadrado. Si un proceso ha solicitado un recurso ' se encuentra blo8ueado se representa una &lecha 8ue sale del proceso hacia el recurso. Si un proceso tiene asignada una instancia de un recurso se representa una &lecha desde la instancia del recurso hasta el proceso.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos !!

/igura 0.12 3rafo de asignacin de recursos. $on un ciclo4 pero sin interbloqueos.

#revencin de interblo+ueos
Esta estrategia persigue eliminar alguna de las cuatro condiciones necesarias para la e+istencia de interblo8ueos.
Eliminacin de la condicin de e+clusin mutua

Esta condicin no puede eliminarse en recursos compartidos si se 8uiere garanti*ar la integridad ' no corrupcin.
Eliminacin de la condicin de retencin " espera

$uede eliminarse haciendo 8ue un proceso solicite al mismo tiempo todos los recursos 8ue precisaG no concedi<ndoselos si alguno no se encuentra disponible. @e8uiere el previo conocimiento de las necesidades. $uede degradar el rendimiento del sistema o provocar inanicin si un proceso retiene un recurso ' otros esperan a obtenerlo. Los recursos pueden verse in&rautili*ados.
Eliminacin de la no e+istencia de e+propiacin

La e+propiacin solo es posible si el sistema puede salvar el estado en 8ue se encuentra antes de la e+propiacin para poder restaurarlo al mismo estado una ve* devuelto. ,umenta la sobrecarga del sistema.
Eliminacin de la espera circular

$uede eliminarse asignando un nmero a cada recurso ' obligando a 8ue los procesos slo puedan solicitar los recursos en orden ascendente. La principal desventaja es 8ue los recursos deben ser solicitados en ese orden ' no cuando realmente se necesiten.

Evitacin de interblo+eos
!onsiste en conceder slo a8uellas peticiones de recursos 8ue tengan garanti*ado 8ue no conducir/n a un estado de interblo8ueo. 7n proceso debe especi&icar por adelantado todos los recursos 8ue va a necesitar. 5espu<sG los va solicitando con&orme los va necesitando. Si la concesin es seguraG no conduce a interblo8ueoG se reali*a. El sistema operativo debe llevar la cuenta de los recursos disponiblesG el nmero de recursos asignados a cada proceso ' el nmero de recursos 8ue restan por asignar. ,dem/s comprueba 8ue la asignacin es segura.
!" Captulo #. )nter*lo+ueo

Estado de la asignacin de recursos1 estados seguros " estados inseguros.

Se dispone de: =ector de recursos e+istentesG @EH cada elemento del vector @ En indica la cantidad de instancias n e+istentes del recurso -. =ector de recursos disponiblesG @5H donde se indica el nmero de instancias disponibles del recurso -. 1atri* + de recursos m/+imos necesitados por cada proceso. !ada &ila corresponde a un proceso ' cada columna a un recurso e+istente en el sistema. 1atri* ) de recursos asignados a cada procesoG correspondiendo cada &ila a un proceso ' cada columna al nmero de recursos asignados El estado del sistema con respecto a la asignacin de sus recursos en un instante determinado 8ueda de&inido por los vectores @EG @5 ' las matrices + ' ). 7n estado se dice 8ue es seguro si posibilita al menos una secuencia de asignacin de recursos a los procesos 8ue garanti*a 8ue estos puedan &inali*ar sin producirse interblo8ueos. 7n estado inseguro no o&rece esa garant3aG aun8ue no necesariamente tiene 8ue conducir a un estado de interblo8ueo. En la pr/cticaG habr3a 8ue comprobar 8ue ( + i )i) - . G esto esG 8ue los recursos necesitados menos los asignados no superan los recursos disponibles. =er ejemplos (.# ' (.% en el libro de teor3aG p/ginas 7;R 79.
*enegacin de asignacin de recursos1 el algoritmo del ban0uero.

!onsiste en no conceder una peticin de recurso si esta concesin puede conducir a un estado inseguro. Este algoritmo asegura 8ue el nmero de recursos asignados a todos los procesos nunca puede e+ceder del nmero de recursos del sistema ' 8ue nunca se puede hacer una asignacin peligrosaG 8ue condu*ca a un estado inseguro. $ara ello: . Se parte de un estado inicial seguro SFG con k M 2: SF M S3G (G 4-G 4DT ". !uando un proceso solicita un recurso se simula su concesin ' se crea un estado &icticio SU M S35G (5G 4-G 45DT #. Se comprueba si SU es seguro. Si lo esG S FP M SUG en caso contrario se deniega la peticin ' se blo8uea el proceso hasta 8ue se le puedan conceder los recursos. %. =olver al paso ".
*enegacin de la iniciacin de un proceso

Esta t<cnica consiste en no iniciar un proceso si el nmero m/+imo de recursos 8ue va a necesitar durante su ejecucin puede conducir a un estado de interblo8ueo. Esta t<cnica no es ptimaG 'a 8ue supone 8ue todos los procesos van a solicitar simultaneamente todas las instancias de recursos 8ue van a necesitar. En la pr/ctica se trata de determinar 8ue el proceso p51 puede iniciar su ejecucin si el nmero m/+imo de instancias j 8ue necesita sumadas al nmero m/+imo de instancias de esos recursos necesitadas por los procesos e+istentes no superan el nmero de instancias e+istentes.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

!#

eteccin ! recuperacin de interblo+ueos


Esta estrategia consiste en no limitar las asignaciones de recursos a los procesos ' comprobar periodicamente si se ha producido algn interblo8ueo. En caso a&irmativoG se emplea alguna t<cnica para recuperar el sistema del interblo8ueo.
2lgoritmos de deteccin de interblo0ueos

El algoritmo de $offman emplea 4-G vector de recursos e+istentesH 4DG vector de recursos disponiblesH (G matri* de recursos asignados a cada procesoH ' *G matri* de recursos adicionales necesitados por cada proceso. 4nicialmente todos los procesos est/n sin marcar ' se van marcando a8uellos 8ue pueden ser completados. Los procesos marcados no pueden provocar interblo8ueo. Si al &inali*ar el algoritmo 8ueda m/s de un proceso sin marcar e+iste interblo8ueo. . Se marca cada proceso 8ue tenga su &ila en , a ceroG dado 8ue ese proceso no tiene ningn recurso asignado 'G por tantoG no puede producir interblo8ueo. ". Se reali*a la asignacin K M @5G donde K es un vector au+iliar. #. $ara cada proceso i no marcado se comprueba M i 6 %. Si no e+iste ningn i 8ue cumpla la condicinG el algoritmo &inali*a. Si e+iste un proceso i 8ue cumpla la condicin se marca el proceso ' se ejecuta hasta 8ue &inalice ' libere los recursosG se reali*a K M K P ,i B8ue incrementa los recursos disponibles con los liberados por el proceso iC ' se vuelve al paso #.
Frecuencia de invocacin del algoritmo de deteccin de interblo0ueos

4nvocarlo cada ve* 8ue se solicite un recurso aumenta la sobrecarga del sistema. 7na solucin ptima puede ser invocarlo cada 7 unidades de tiempo o cuando el nivel de utili*acin del procesador caiga por debajo de un l3miteG lo 8ue podr3a denotar inactividad por e+istencia de interblo8ueo.
T3cnicas de recuperacin del interblo0ueo

@ecuperacin mediante e+propiacin de recursos. 1ediante algn criterio de seleccin se van e+propiando recursos a algunos procesos ' concedi<ndoselos a otros para conseguir salir del interblo8ueo. @ecuperacin mediante el retroceso de los procesos interblo8ueados a algn punto de control previo. En cada punto de control se guarda el conte+to de cada proceso. En caso de interblo8ueo se restaura el conte+to anterior. @ecuperacin mediante aborto selectivo de procesosG estableciendo un criterio para ir abortando procesos Bblo8ueados o noC. @ecuperacin mediante el aborto de todos los procesos blo8ueados. La solucin m/s dr/stica pero la m/s utili*ada.

4enta.as e inconvenientes

La deteccin ' recuperacin de interblo8ueos permite una ma'or concurrencia de procesos 'a 8ue no limita el nmero de asignaciones. Sin embargoG la deteccin introduce sobrecarga aun8ue puede limitarse con algoritmos e&icaces. La recuperacin s3 produce elevada sobrecarga ' desaprovechamiento de recursos. Es e&ica* en sistemas con baja probabilidad de interblo8ueos.

!$

Captulo #. )nter*lo+ueo

Otras estrate"ias de tratamiento de interblo+ueos


Estrategias mi+tasG agrupando los recursos en di&erentes clasesG ordenando las clases para evitar la espera circular ' utili*ando para cada clase la estrategia m/s oportuna. 4gnorar los interblo8ueos. Sistemas como 7)4K o Iindo6s no utili*an ninguna estrategia de tratamiento de interblo8ueos.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

!7

Captulo 5.

2dministracin de memoria

$ara 8ue un programa pueda ser ejecutado por el procesador primero debe ser cargado en la memoria principal. El subsistema de administracin de la memoria principal es el encargado de administrarG junto con el hard6areG la memoria principal entre todos los procesos 8ue se ejecutan en el computador. T<cnicas de asignacin contigua. Todo el espacio de direcciones lgicas de un proceso se carga de &orma contigua en memoria principal. $articionamiento &ijo. $articionamiento din/mico. T<cnicas de asignacin no contigua. El espacio de direcciones lgicas de un proceso se divide en blo8ues de igual o distinto tama?o. Los blo8ues de un mismo proceso no tienen por 8u< estar cargados de &orma contigua en memoria principal. $aginacin simple: blo8ues del mismo tama?o. Segmentacin simple: blo8ues de distinto tama?o.
Espacio de n!cleo " espacio de usuario

,l espacio ocupado por el cdigoG las estructuras de datos ' la pila o pilas del ncleo del sistema operativo se le llama espacio del ncleo. El acceso al espacio del ncleo slo puede reali*arse en modo ncleo. ,l espacio ocupado por la imagen de un procesoG es decirG a su espacio de direcciones de memoria lgica se denomina espacio de usuario. El acceso al espacio de usuario puede reali*arse en modo ncleo o modo usuario. En de&initivaG en la memoria principal de un sistema multiprogramado pueden distinguirse el espacio del ncleoG uno o varios espacios de usuario ' espacio libre.
6rea de intercambio en memoria secundaria

7n programa es un archivo ejecutable 8ue reside en memoria secundaria dentro de algn directorio del sistema de archivos. El sistema operativo reserva espacio en memoria secundaria para almacenar las im/genes de los procesos. , dicho espacio se le denomina #rea de intercambio. Se denomina intercambio Bs6appingC a la operacin de cargar la imagen de un proceso desde el /rea de intercambio a memoria principal ' viceversa. Se habla de intercambio fuera de memoria principal Bs6apping outCG al paso de la imagen desde el /rea de memoria principal al /rea de intercambio ' de intercambio dentro de memoria principal Bs6apping inC al caso contrario. La operacin de s6apping out se suele reali*ar !uando se re8uiere espacio en memoria principal para cargar otros procesos. !uando otro proceso re8uiere de m/s espacio debido al crecimiento de su regin de datos o de pila. !uando es necesario regular el grado de multiprogramacin del sistema. !uando se desea aumentar el grado de multiprogramacin.

La operacin de s6apping in suele reali*arse

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

!9

E+iste espacio en memoria principal para cargar m/s procesos. E+iste un proceso de ma'or prioridad en el /rea de intercambio.

Si el sistema no soporta memoria virtual la imagen del proceso se intercambia al completo. La operacin de intercambio es reali*ada por un proceso del sistema denominado intercambiadorG encargado de 9estionar ' asignar el espacio de intercambio. Seleccionar procesos para ser intercambiados &uera de memoria principal. Se esogen primero a8uellos procesos blo8ueados con menor prioridad ' ma'or tiempo de residencia en memoria. , continuacin se escogen los preparados con los mismos criterios anteriores. Seleccionar procesos para ser intercambiados dentro de memoria principal. Se escogen a8uellos procesos preparados para ejecucin 8ue lleven ma'or tiempo de espera o con ma'or prioridad.

$uede considerarse 8ue el intercambiador reali*a las &unciones del plani&icador a medio pla*o. )o se trabaja directamente con el archivo ejecutable asociado al proceso ' se trabaja con una imagen en el /rea de intercambio debido a 8ue 7na operacin de lectura escritura es m/s r/pida en el /rea de intercambio 8ue en el sistema de &icheros. La imagen de un proceso es una entidad din/mica cu'o contenido suele di&erir del archivo ejecutable con&orme va ejecut/ndose el proceso.

'si"nacin de memoria en sistemas monopro"ramados


En sistemas monoprogramados la memoria principal se divide en dos particiones. 7na est/ reservada para contener permanentemente a8uellas partes del sistema operativo 8ue deben estar siempre en memoria principal. , este conjunto del sistema operativo residente en memoria se denomina monitor del sistema operativo. La memoria no ocupada con&orma otra particin en la 8ue se carga de &orma temporal un proceso de usuario o alguna parte no residente del sistema operativo. En &uncin de en 8u< parte de la memoriaG direcciones bajas o direcciones altasG se encuentra el monitor del sistema operativo podemos encontrarnos con tres posibles con&iguraciones de memoria: !on&iguracin . La memoria principal se implementa con una memoria @,1. El sistema operativo ocupa desde la direccin &3sica 2 hasta 5ir. . La parte superiorG desde 5ir.P hasta 5ir1,K est/ disponible. Esta con&iguracin no es usada actualmenteG pero s3 en los primeros micro ' macrocomputadores. !on&iguracin ". La memoria principal se implementa mediante una @,1 ' una @O1. El SO ocupa la @O1 en la parte superior de la memoria principalG desde 5ir . P hasta 5ir1,K. Sistema poco &le+ibleG pero utili*ado en sistemas integrados ' computadores de mano. !on&iguracin #. La memoria principal se implementa con una @,1 ' una @O1. La particin del sistema operativo ocupa la parte in&erior de la @,1G en la 8ue se almacena el cargador de programas ' el int<rprete de comandos. El resto de la @,1 &orma la particin de usuario ' en la @O1 se almacenan los vectores de interrupcin del hard6are ' las rutinas de servicio de interrupcin. Esta memoria es conocida como A4OSG Aasic 4nput Output S'stem. !on&iguracin utili*ada en los primeros microcomputadores. 1s5OS.

"0

Captulo $. Administracin de memoria

$ara garanti*ar la proteccin del sistema operativo ' evitar 8ue los procesos de usuario hagan re&erencia a direcciones &3sicas del espacio del sistema operativo se utili*an uno o dos registros para almacenar la direccin base de inicio de la particin 'Do el tama?o de la particin.

#articionamiento %ijo
La &orma m/s sencilla de gestionar la memoria en sistemas multiprogramados consiste en dividir la memoria principal en un nmero &ijo de ) particiones 8ue pueden ser de igual o di&erente tama?o. Esta divisin puede reali*arse manualmente al arrancar el sistema o de manera autom/tica. Esta t<cnica se conoce como particionamiento fijo. Se reserva una particin para contener el sistema operativo en un e+tremo de la memoriaG normalmente en la parte baja. Las restantes )R particiones estar/n disponibles para cargar procesos. El nmero de particiones de&ine el grado de multiprogramacin del sistema. El sistema operativo mantiene una tabla de descripcin de particiones 8ue contiene la direccin &3sica de comien*o Bdireccin baseCG el tama?o ' el estado Blibre o noC de cada particin.
Particiones de igual tama7o

La asignacin de memoria con particionamiento &ijo ' particiones de igual tama?o es bastante simpleG 'a 8ue no importa 8u< particin libre se asigne a un procesoG pero: Limita el tama?o m/+imo de los procesos 8ue se pueden cargar en memoria principal. Si un proceso tiene un espacio de direcciones lgicas ma'or 8ue el disponible en la particin no podr/ cargarse. Esta limitacin puede sosla'arse si el proceso ha sido programado con la t<cnica de overlay o superposicinG mediante la cual slo una parte del proceso precisa 8ue se encuentre en memoria. .ragmentacin interna. Si el tama?o del espacio de direcciones lgicas es in&erior al de la particin asignada e+iste un espacio libre no asignable a otros procesos.

Particiones de distinto tama7o

$ara asignar las particiones a los procesosG el sistema operativo puede mantener una cola de procesos por particin. 7n proceso ingresa a la cola asociada a la particin de menor tama?o 8ue pueda contenerlo. La plani&icacin de cada cola se reali*a de &orma independiente. Este sistema puede provocar 8ue las particiones de ma'or tama?o nunca se ocupen. $ara resolverlo puede emplearse una nica cola para todas las particiones. En el momento en 8ue una particin 8ueda libreG se locali*a un proceso 8ue pueda ser cargado segn alguno de estos criterios: $riterio del primer ajuste. !onsistente en buscar el proceso m/s cercano a la cabecera de la cola con tama?o menor o igual a la particin. As8uedas r/pidas pero no minimi*a la &ragmentacin interna. $riterio del mejor ajuste. Ausca en toda la cola el proceso de ma'or tama?o 8ue entre en la particin. 1inimi*a la &ragmentacin interna pero enlentece la bs8ueda ' discrimina a los procesos m/s pe8ue?os. $odr3a solucionarse imponiendo un nmero m/+imo de veces 8ue puede ser discriminado un proceso.

La e+istencia de &ragmentacin interna ' la limitacin del tama?o m/+imo del proceso 8ue puede ser cargado en memoria es menor en el caso de utili*ar particiones de distinto tama?o. !on&igurando una particin lo su&icientemente grande tambi<n es posible cargar procesos de ma'or tama?o.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

"1

Traduccin de direcciones " proteccin

La traduccin de direcciones lgicas a direcciones &3sicas en la t<cnica de particionamiento &ijo re8uiere el uso de dos registros: el registro base ' el registro lmite. !uando un proceso es plani&icadoG el sistema operativo carga en el registro base la direccin &3sica de comien*o de la particin donde se aloja ' en el registro l3mite la direccin lgica m/s alta del espacio de direcciones lgicas del proceso. !uando se re&erencia una direccin se compara con el registro l3mite ' si es igual o in&erior a este se suma al registro base. Este mecanismo impide 8ue se accedan a direcciones in&eriores o superiores a las asignadas a su espacio lgico. 9racias a este mecanismo de traduccin de direcciones es posible cargar el proceso en cual8uier particin de la memoria principal. Se dice entonces 8ue el sistema soporta la reubicacin din#mica en tiempo de ejecucin.
4enta.as e inconvenientes

La principal ventaja es su &acilidad de implementacinG nicamente re8uiere de una tabla de descripcin de particiones ' una o varias colasG lo 8ue produce poca sobrecarga. Los principales inconvenientes son 8ue provoca &ragmentacin internaG el tama?o m/+imo de un proceso ' la limitacin del grado de multiprogramacin en &uncin del nmero de particiones.

#articionamiento din(mico
En el particionamiento din/mico el nmero de particiones no es &ijoG sino 8ue va variando con el tiempo. La memoria principal se divide en particionesG una *ona contigua de memoria ocupadaG ' huecosG una *ona contigua de memoria libre. Esta t<cnica ha dejado de utili*arseG pero &ue usada en macrocomputadoras como el OSD1=T de 4A1. !uando un proceso debe ser cargado en memoria el sistema locali*a un hueco del mismo tama?o o ma'or 8ue el proceso. Ese espacio de&ine una particin ' el espacio sobrante de&ine un nuevo hueco. !on&orme se van cargando procesos se van generando nuevos huecos cada ve* m/s pe8ue?osG en lo 8ue se conoce como fragmentacin externa. 7na t<cnica para solucionar la &ragmentacin e+terna es la compactacin de memoriaG 8ue consiste en agrupar todos los huecos ' mover las particiones. El inconveniente es 8ue se produce alta sobrecarga. Es comn 8ue se utilice una unidad m3nima de asignacin o blo8ue de memoria m3nimo. Esto evita el tener huecos de pe8ue?o tama?o 8ue no pueden ser utili*ados. !omo contrapartidaG se produce &ragmentacin internaG aun8ue despreciable en comparacin con la t<cnica de particionamiento &ijo. El sistema mantiene una o varias estructuras de datos 8ue contengan in&ormacin sobre los huecos ' las particiones. Estas estructuras pueden ser mapas de bits o listas enla*adas simples o dobles. 1anteniendo una lista para huecos ' otra para particiones asignadas es posible acelerar el proceso de bs8ueda de hueco disponible.
'si"nacin de espacio de memoria principal

,lgunos de los algoritmos de bs8ueda m/s utili*ados para reali*ar la asignacin de espacio a un proceso con un espacio de direcciones lgicas de tama?o S son: )lgoritmo del primer ajuste &first fit': Se asigna el primer hueco con un tama?o igual o ma'or 8ue S. @/pidoG pero produce pe8ue?os huecos al comien*o de la estructura de datos.

"2

Captulo $. Administracin de memoria

)lgoritmo del siguiente ajuste &next fit': La bs8ueda de un hueco de tama?o igual o ma'or 8ue S comien*a donde se 8ued la ltima bs8ueda. ,un8ue se pens para evitar los problemas del anteriorG a la larga produce peores resultados. )lgoritmo del mejor ajuste &best fit': Se busca en toda la estructura de datos un hueco 8ue sea igual o con el m3nimo e+ceso posible del valor de S. 1/s lentoG produce pe8ue?os huecos no utili*ables 8ue obliga a compactar. )lgoritmo del peor ajuste &8orst fit': Se busca el hueco m/s grande posible para intentar 8ue los huecos 8ue se generen sean aprovechables con posterioridad. 5istintas simulaciones han demostrado 8ue no es mu' e&ectivo.

En resumenG el m/s r/pido es el de primer ajuste ' el de menor aprovechamiento de la memoria es el de peor ajuste.
Traduccin de direcciones " proteccin

,l igual 8ue en la t<cnica de particionamiento &ijoG se utili*an dos registros dedicados denominados registro base ' registro lmite. !uando se va a ejecutar un proceso el sistema operativo carga en el registro base la direccin &3sica de inicio de la particin de memoria asociada al proceso ' en el registro l3mite el tama?o de la particin. !uando se haga re&erencia a una direccin lgica dentro del proceso se compara con el valor del registro l3mite. Si se e+cedeG se lan*a una e+cepcin.
4enta.as e inconvenientes

1inimi*a la &ragmentacin internaG 8ue es como m/+imo cercana a una unidad de asignacin $ermite ejecutar procesos de ma'or tama?o. $ermite asignar &/cilmente m/s espacio a procesos cu'a regin de datos o pila aumenta por encima del tama?o inicialmente asignadoG reubicando el proceso o asignando un hueco cont3guo. Estructuras de datos m/s complejasG 8ue aumentan la sobrecarga del sistema. $roduce &ragmentacin e+ternaG lo 8ue reduce el aprovechamiento de la memoria.

Los inconvenientes son

#a"inacin simple
La t<cnica de paginacin consiste en dividir la memoria principal en blo8ues del mismo tama?oG S $G denominados marcos de p#gina o p#ginas fsicas. El espacio de direcciones de un proceso tambi<n se divide en blo8ues del mismo tama?o S$G denominados p#ginas o p#ginas lgicas. 7na p/gina de un proceso se carga en un marco de p/gina libre de memoria principal. Si !1$ es la capacidad de la memoria principalG el nmero ) 1$ de marcos de p/gina de tama?o S$ en 8ue se divide es + M% = floor

( )
$ M% S%
"!

!ada marco de p/gina se identi&ica de &orma un3voca mediante un nmero de marco de p/gina j. 5e esta maneraG se har/ re&erencia al marco de p#gina j o marco j de la memoria principal.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

5e otra parteG si !K es el tama?o del espacio de direcciones lgicas de un procesoG el nmero de p/ginas )$ de tama?o S$ en 8ue se descompone es: + %= ceil

( )

$6 S%

!ada p/gina de un proceso se identi&ica por un entero positivo i denominado nmero de p#gina. 5e los marcos en 8ue se descompone la memoria principalG ) 1$G un nmero determinado de ellosG 9G est/n reservados para el ncleo. 7na direccin fsica consta de dos campos: nmero de marco de p#gina de f bits ' el despla,amiento dentro del marcoG de d bits. El tama?o del campo de nmero de marco de p/gina se obtiene a partir del nmero de marcos de p/gina e+istentes ' el tama?o del campo despla*amiento a partir del tama?o de una p/gina o de un marco de p/gina e+presado en unidades direccionables. 7na direccin lgica consta de los campos de nmero de p#ginaG de p bitsG ' el despla,amiento dentro de la p/ginaG de d bits. El c/lculo del tama?o de cada uno de estos campos es min f {+ M% " f } min d {S % " d } min p {+ % " p } El tama?o de una direccin &3sica es n = f + d G ' el de una direccin lgica m= p + d . La longitud de una direccin lgica es menor o igual 8ue la longitud de la direccin &3sica. $ara implementar la paginacin generalmente se usan las siguientes estructuras: 7ablas de p#ginas. , cada proceso se le asigna una. !ada entrada i de la tabla contiene el marco j donde se encuentra almacenada la p/gina i del proceso ' los permisos de acceso. 7abla de marcos de p#gina. !on tantas entradas como marcos de p/gina tiene la memoria principal. !ada entrada j contiene su estado libre u ocupadoG punteros para crear una lista de marcos libres ' la ubicacin en memoria secundaria de la copia de la p/gina i contenida en el marco. :ista de marcos libres. !onsultada cuando ha' 8ue asignar espacio a los procesos. !uando ha' 8ue asignar un marco se selecciona el primero de la lista. Los nuevos marcos libres se a?aden por el &inal.

$ara 8ue un proceso pueda ser ejecutadoG todas sus p/ginas deben estar cargadas en memoriaG aun8ue no necesariamente en marcos contiguos. !uando un proceso de +% p/ginas de tama?o tiene 8ue ser cargadoG el sistema comprueba 8ue e+istan +% marcos libres. Si los ha'G se eliminan de la lsita de marcos libresG se marcan como ocupados en la tabla de marcos de p/gina ' se carga en ellos las p/ginas del proceso. , continuacin se crea o actuali*a la tabla de p/ginas del proceso indicando el nmero de marco donde est/ cargada cada p/gina. ,dem/sG si la tabla de p/ginas no estaba creada 'aG se almacena en el $!A del proceso un puntero a la direccin &3sica de comien*o de la tabla de p/ginas.
Traduccin de direcciones

El hard6are debe disponer de ciertos componentes donde cargar la in&ormacin necesaria para reali*ar la traduccin de instrucciones. $ueden ser: -egistro baseG donde se almacena la direccin &3sica de comien*o de la tabla de p/ginas. *anco de registrosG para almacenar una copia completa de la tabla de p/ginas.

""

Captulo $. Administracin de memoria

*uffer de traduccin de vista lateral &7ranslation :ookaside *uffer4 7:*' G una cach< de alta velocidad donde guardar algunas entradas de la tabla de p/ginas.

En &uncin de la utili*acin de uno u otro componente se emplea uno u otro m<todo.


Traduccin de direcciones con re"istro base

El sistema carga en el registro base la direccin &3sica 5ir.2 de comien*o de la tabla de p/ginas. !uando se re&erencia a una direccin lgica 5irL se suma el campo nmero de p/gina i a 5ir.2 para obtener la direccin &3sica 5ir. de la entrada i de la tabla de p/ginas. , continuacin se accede a 5ir. en memoria para obtener el marco de p/gina j donde se encuentra la p/gina i. ,?adiendo el despla*amientoG se obtiene la direccin re8uerida. Este mecanismo solo precisa 8ue se cargue el registro base con cada cambio de procesoG lo 8ue acelera estos cambios. En contraG la traduccin re8uiere de un acceso a memoria para locali*ar en la tabla de p/ginas el marco j donde se encuentra la p/gina iG lo 8ue produce un retraso en la ejecucin de la instruccin ' hace 8ue este mecanismo se utilice en raras ocasiones.
Traduccin de direcciones con banco de re"istros

!uando se produce un cambio de conte+toG el sistema operativo carga en el banco de registros una copia de la tabla de p/ginas del proceso 8ue se va a ejecutar. 5e esta &ormaG en ve* de locali*ar el nmero de marco donde se aloja la p/gina en la tabla de p/ginas en memoria se accede a su copia en el banco de registros. Esta solucin no precisa de ningn acceso a memoriaG por lo 8ue es m/s r/pidaG sin embargo slo puede utili*arse si el tama?o de la tabla de p/ginas no e+cede del tama?o del banco de registros. El cambio de proceso se ve ralenti*ado al tener 8ue cargar toda la tabla de p/ginas en el banco de registros desde la memoria.
Traduccin de direcciones con un TL0

7n TLA es una memoria cach< especial de alta velocidad con una capacidad de entre 8 ' %29; entradas. !uando el procesador hace re&erencia a una direccin lgica 5irLG primero se e+amina en paralelo todas las entradas del TLA ' se veri&ica si alguna coincide con el nmero de p/gina i a 8ue hace re&erencia. Si se produce un aciertoG se recupera el nmero de marco j de esa entrada para componer la direccin &3sica 5ir. junto con el campo despla*amiento d. Si se produce un &alloG se acude a su bs8ueda en la tabla de p/ginas en memoria como se reali*a con el m<todo de registro base ' esa entrada se copia al TLA en una posicin libre oG si est/ llenoG mediante algn algoritmo de reempla*o. !uando se produce un cambio de proceso se carga en el registro base la direccin de la tabla de p/ginas ' se limpia el TLAG 8ue se ir/ cargando a medida 8ue se va'an produciendo &allos en la bs8ueda de entradas. El uso del TLA est/ a medio camino entre la solucin de registro base ' la de banco de registros.
Tablas de pginas paginadas

$ara evitar las tablas de p/ginas de gran tama?o estas se pueden descomponerG a su ve*G en p/ginasG obteniendo una tabla de p/ginas paginada. 5e esta &orma la tabla de p/ginas se &ragmenta ' puede ubicarse en memoria principal de &orma no contigua. Se tienen as3 dos tipos de p/ginas: %#ginas ordinariasG 8ue contienen instrucciones ' datos del espacio lgico de un proceso.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

"#

%#ginas de tablas de p#ginasG 8ue contienen entradas de tablas de p/ginas.

$ara locali*ar en memoria principal a las p/ginas de una tabla de p/ginas se utili*a otra tabla de p/ginas denominada tabla de p#ginas de primer nivel o tabla de p#ginas primaria. , las entradas de la tabla de p/ginas original contenidas en una p/gina se les denomina tablas de p#ginas de segundo nivel o tabla de p#ginas secundaria. $ara cada proceso e+iste una tabla primaria ' varias de segundo nivelG tantas como p/ginas ocupe la tabla de p/ginas original del proceso. E+isten dos niveles de paginacin: el primero permite locali*ar el marco de p/gina donde se ubican las p/ginas de la tabla de p/gina originalG el segundo permite locali*ar el marco donde se ubica la p/gina ordinaria i a 8ue hace re&erencia a 8ue hace re&erencia la direccin lgica. El campo nmero de p#gina de una direccin lgica se descompone en dos campos: ;ndice de tabla primariaG 4T$G 8ue contiene el nmero de la tabla de p/ginas de primer nivel donde buscar el marco de memoria 8ue contiene a la p/gina 8ue ubica la tabla de p/ginas de segundo nivel. Si la tabla de p/ginas de primer nivel tiene ) T$ entradasG el tama?o r de ese campo ser/ min r { + 7%1 "r } ;ndice de tabla secundariaG 4TSG 8ue contiene el nmero de la entrada de la tabla de p/ginas de segundo nivel donde bucar el marco de p/gina 8ue contiene a la p/gina ordinaria re&erenciada. Si la tabla secundaria tiene )T$" entradasG el tama?o s del campo ser/ min s { + 7%< " s }

-l n1mero de entradas de la tabla de pginas de primer nivel es igual al n1mero de pginas &ue se necesitan para contener la tabla de pginas original. -l n1mero de entradas de la tabla de segundo nivel es igual al n1mero de entradas de la tabla de pginas original contenidas en una pgina. La traduccin de una direccin lgica a un direccin &3sica se reali*a . Se suma 4T$ al contenido del registro base 5ir.2 para construir la direccin &3sica 5ir. de la entrada de la tabla de p/ginas de primer nivel donde buscar el marco de memoria k 8ue contiene a la p/gina donde se ubica la tabla de segundo nivel. ". Se accede a 5ir. para leer el nmero de marco k ' se le suma al 4TS para construir la direccin &3sica 5ir." de la entrada de la tabla de p/ginas de segundo nivel donde locali*ar el marco de memoria j 8ue contiene la p/gina i re&erenciada en la direccin lgica 5irL #. Se accede a memoria principal para leer el nmero de marco j ' construir la direccin &3sica 5ir.# e8uivalente a la direccin lgica 5irL. Se re8uiere de esta &orma de dos accesos a memoria para reali*ar la traduccin. Si la tabla de p/ginas de primer nivel an resulta grandeG puede descomponerse en otras p/ginasG alcan*ando paginaciones de #V nivel BS$,@!C o %V nivel B1otorola ;82#2C.
Tablas de pginas invertidas

Otra posible solucin a las tablas de p/ginas de gran tama?o. Se utili*a una nica tabla de p/ginas invertida en ve* de una tabla de p/ginas por proceso. En la tabla invertidaG se asocia una entrada por cada marco j de la memoria principal en ve* de por cada p/gina i de un proceso. El nmero de entradas es &ijo e igual al nmero de marcos. !ada entrada j contiene el nmero de p/gina i 8ue se aloja en el marco jG identi&icador del proceso al 8ue pertenece la p/gina B%id'G ' bits de control.

"$

Captulo $. Administracin de memoria

$ara traducir una direccin lgica se compara el campo nmero de p/gina de la direccin ' el %id con los campos homnimos de cada entrada de la tabla. Si se produce una coincidencia en la entrada jG ese marco j es 8uien contiene la p/gina i re&erenciada 8ue se re8uiere para construir la direccin &3sica. La bs8ueda de una entrada en la tabla invertida puede ralenti*ar el tiempo de traduccin. $uede acelerarse utili*ando una tabla hash ' TLA.
Proteccin

En la gestin de memoria mediante paginacinG la proteccin se implementa a nivel de p/gina. !ada entrada i de la tabla de p/ginas de un proceso contiene un campo de uno o varios bits 8ue permiten determinar el tipo de acceso permitido sobre dicha p/gina: 6G r6G +G etc. En caso de intento de violacin se lan*a una e+cepcin. Tambi<n se incorpora un registro l3mite donde se carga el nmero de p/ginas de 8ue consta el proceso.
Comparticin de pginas

El espacio lgico de un proceso puede dividirse en las regiones de cdigoG datos ' pila. En paginacin simpleG todas las p/ginas deben estar cargadas en memoria. En sistemas de tiempo compartidoG multiples usuarios pueden estar ejecutando el mismo programa de manera simultanea. Si el programa posee cdigo reentranteG no modi&icableG se puede ahorrar espacio en memoria cargando slo una imagen de ese proceso ' comparti<ndola entre todos los usuarios. Se utili*a un contador de re&erencias 8ue lleva la cuenta del nmero de instancias activas. Se elimina de memoria cuando el contador se hace cero.
4enta.as e inconvenientes

La paginacin simple presenta varias ventajas )o produce &ragmentacin e+terna. $roduce una sobrecarga pe8ue?aG la gestin de las estructuras de datos no re8uiere de mucho tiempo de procesador. )o precisa de intervencin humana para la de&inicin de las particiones. $ermite comparticin de cdigo comn entre varios procesos.

La principal desventaja es 8ue produce &ragmentacin internaG de t<rmino medioG media p/gina por proceso. La paginacin es invisible al programadorG lo 8ue puede ser considerado tanto como una ventaja como un inconveniente.

Se"mentacin simple
La segmentacin simple es una t<cnica de gestin de la memoria 8ue soporta los elementos en los 8ue se descompone el cdigo de un programa. A/sicamenteG el compilador divide el programa en segmentos. !ada segmento es una entidad lgica conocida por el programador ' asociada a una determinada estructura de datos o mdulo. !ada segmentoG cdigo principalG subrutinasG datosG pila... tiene su propio espacio de direcciones lgicas. !uando el sistema operativo crea un proceso asociado a un determinado programaG asigna a cada segmento un identi&icador num<rico positivo hG el nmero del segmento.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos "7

7na direccin lgica consta de dos campos: el nmero de segmentoG de s bitsG ' el despla*amiento dentro del segmentoG de d bits. En un proceso se pueden tener direcciones lgicas de di&erente tama?oG si bien el campo nmero de segmento tendr/ siempre la misma longitudG el campo despla*amiento depende del nmero de unidades direccionables 8ue e+istan en ese segmento en concreto. En segmentacin simpleG un proceso no puede ser ejecutado si todos sus segmentos no se encuentran cargados en memoria principal. El sistema operativo debe buscar un hueco para cada segmento. Si algn segmento no pudiera ser cargado no aborta la carga del proceso. ,dem/sG en la carga el sistema crea una tabla de segmentos asociados al proceso ide+ada por nmero de segmento 8ue contiene la direccin &3sica base de cada segmento ' su longitudG adem/s de otros datos como permisosG ubicacin en memoria secundariaG etc.
Traduccin de direcciones

Si se dispone de un registro baseG en cada cambio de conte+to el sistema carga en ese registro la direccin &3sica de comien*o de la tabla de segmentosG 5ir .2G obtenida del blo8ue de control del proceso. $ara llegar a una direccin &3sica 5ir. a partir de una direccin lgica 5irL se siguen estos pasos: Se suman el campo nmero de segmento h de la direccin lgica ' 5ir .2 para obtener la direccin 5ir. de la entrada h de la tabla de segmentos. Se accede a 5ir. ' se lee la direccin &3sica base ' la longitud del segmento h. Se compara el campo despla*amiento con la longitud del segmentoG lan*ando una e+cepcin si se supera el tama?o. Si el despla*amiento es menor 8ue la longitud se suma la direccin &3sica base del segmento h al despla*amiento indicado en 5irL para obtener la direccin &3sica 5ir. e8uivalente.

El principal inconveniente es 8ue se re8uiere de un acceso a memoria para leer la tabla de segmentosG lo 8ue provoca un retardo en la ejecucin de la instruccin en curso. $ara acelerar la ejecucin puede utili*arse un banco de registros o un TLA.
Proteccin

La proteccin del espacio de direcciones se implementa a nivel de segmento. En cada entrada h de la tabla de segmentos de un proceso se almacenan los permisos de acceso sobre dicho segmento. ,dicionalmente suele haber un registro lmite donde se almacena en cada cambio de conte+to el nmero de segmentos de 8ue consta el proceso 8ue va a ser ejecutado.
Comparticin de segmentos

Esta t<cnica permite 8ue un segmento de cdigo o datos sea compartido por m/s de un proceso. $ara ello el sistema operativo mantiene una tabla con los segmentos cargados en memoria principal en la 8ue se contabili*an las re&erencias 8ue otros procesos reali*an a estos segmentos. !uando el contador de re&erencias se haga ceroG el segmento puede ser eliminador de memoria principal.
4enta.as e inconvenientes

!omo ventajas:
"8

$roduce una &ragmentacin interna despreciableG de como m/+imo cercana a una unidad de asignacin. Soporta la visin modular 8ue el programador posse del programa.
Captulo $. Administracin de memoria

$ermite manejar con &acilidad estructuras de datos 8ue crecen. Si un segmento precisa de m/s espacioG tan solo ha' 8ue asignarle un hueco contiguo o reasignarlo a un hueco de ma'or tama?o. .acilita la proteccin ' comparticin de las distintas partes de un programa al asignarse un segmento independiente a cada una de ellas. $roduce &ragmentacin e+ternaG lo 8ue reduce el aprovechamiento de la memoria ' re8uiere el uso de compactacinG aun8ue menor 8ue el producido con la t<cnica del particionamiento din/mico. ,umenta la sobrecarga del sistema debido a 8ue las estructuras de datos ' algoritmos son m/s complejos 8ue en particionamiento din/mico.

Entre los inconvenientesG destacan:

Se"mentacin con pa"inacin simple


La segmentacin ' la paginacin pueden combinarse para aprovechar las ventajas de ambos m<todos. 1ediante esta t<cnica se divide cada segmento de un proceso en un determinado nmero de p/ginas. 7na direccin lgica se descompone en tres campos: nmero de segmentoG de s bitsG nmero de p/ginaG de p bits ' despla*amientoG de d bits. !on la carga de un proceso en memoria principalG el sistema operativo crea una tabla de segmentos del proceso ' varias tablas de p/ginasG una por segmento. La entrada de la tabla de segmentos no contiene la direccin &3sica del segementoG sino la de la tabla de p/ginas asociada al segmento. ,horaG el campo longitud del segmento viene e+presado en nmero de p/ginas. Si se dispone de un registro baseG el proceso de traduccin de direcciones comien*a cargando en el registro base la direccin &3sica 5ir.2 de comien*o de la tabla de segmentos asociada al proceso. !uando se hace re&erencia a una direccin lgica 5irL se traduce a una direccin &3sica . Se suma el campo de nmero de segmento h de la direccin lgica ' 5ir.2 para obtener la direccin de comien*o de la entrada h de la tabla de segmentosG 5ir. . ". Se accede a 5ir. para obtener la direccin base de la tabla de p/ginas ' la longitud del segmento. #. Se compara el valor despla*amiento de 5irL con la longitud del segmento h. Si el despla*amiento es ma'orG se genera una e+cepcin. %. Se el despla*amiento es menorG se suma el campo nmero de p/gina de 5irL ' la direccin &3sica base de la tabla de p/ginas del segmento para obtener la direccin &3sica 5ir." de la entrada i de la tabla de p/ginas. (. Se accede a 5ir." para leer el nmero de marco j 8ue contiene la p/gina re&erenciada. ;. Se constru'e la direccin &3sica 5ir. con el nmero de marco le3do ' el campo despla*amiento de 5irL. El mecanismo precisa de dos accesos a memoria principalG pudiendo acelerarse utili*ando un banco de registros o un TLA.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

"9

Captulo 8.

'emoria virtual

La t<cnica de gestin de memoria conocida como memoria virtual consiste en tener cargadas en memoria principal solo a8uellas partes Bp/ginas o segmentosC del espacio de direcciones lgicasG ahora tambi<n llamadas direcciones virtualesG de un proceso 8ue se van necesitando durante su ejecucin. La memoria virtual permite ampliar el grado de multiprogramacinG dado 8ue en memoria principal caben m/s procesos si slo se cargan algunas partes de cada proceso. La implementacin de la memoria virtual re8uiere 8ue el hard6are soporte el reinicio de las instrucciones de su repertorio. ,dem/sG suele utili*arse un componente denominado unidad de gestin de memoria B1emor' 1anagement 7nitG 117CG encargada de reali*ar la traduccin de la direccin virtual a la direccin &3sica. La memoria virtual puede implementarse usando paginacin por demanda B7)4KG Linu+G Iindo6sCG segmentacin por demanda BOSD"C o segmentacin con paginacin por demanda B1ulticsC

#a"inacin por demanda


La t<cnica de paginacin por demanda divide el espacio de memoria principal en blo8ues de igual tama?oG marcos de p/ginaG ' el espacio de direcciones del proceso en blo8ues de igual tama?oG p/ginas. $ara 8ue un proceso se pueda ejecutar no es necesario 8ue todas sus p/ginas se encuentren cargadas en memoria principal. !uando se re&erencia una p/gina no cargada se produce un fallo de p#gina. Otras tareas a reali*ar por el Sistema Operativo son: -eempla,amiento de p#ginasG en caso de 8ue se produ*ca un &allo de p/gina ' no ha'a ningn marco libreG es necesario decidir 8u< marco ha' 8ue intercambiar a memoria secundaria. )signacin de marcos de memoria principal. El sistema debe decidir cu/ntos marcos asignar inicialmente a cada proceso. $ontrol de cargaG decidir el grado de multiprogramacin del sistema. $opia en memoria secundaria de p#ginas modificadasG en 8u< momento ' de 8u< &orma.

Se mantienen las siguentes estructuras de datos: tabla de marcos de p#ginaG listas de marcos libres ' tablas de p#ginas. !uando un proceso entra en estado preparado para ejecucin se crea una tabla de p/ginas en memoria principal en la 8ue cada entrada contieneG al menosG los siguientes campos: )mero de marco de p/gina. =alide* o presenciaG 8ue indica si la p/gina es v/lida o no. $roteccinG de uno a tres bits 8ue indican los permisos de @G I ' K. @e&erenciadaG un bit activo cuando la p/gina es re&erenciada por una direccin virtual. 1odi&icadaG un bit 8ue indica si la p/gina ha sido modi&icada ' debe ser actuali*ada en memoria secundaria.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

#1

9einicio de instrucciones

7n &allo de p/gina puede producirse tanto en la &ase de bs8uedaG al intentar traducir la siguiente instruccin a ejecutarG como de ejecucinG en la bs8ueda de operandos. La ar8uitectura del computador debe poder reiniciar la instruccin desde su inicioG &ase de bs8ueda. $ara elloG se suele disponer de un registro donde se almacena el valor del registro contador de programa !$ antes de iniciar la &ase de bs8ueda. En caso de 8ue el procesador soporte direccionamiento inde+ado tambi<n deber/ guardarse el valor del registro 3ndice por si &uera necesario restaurarlo tras un &allo de p/gina.
:ocali$acin de las pginas en memoria secundaria

!uando la re&erencia a una p/gina produce un &allo de p/gina el sistema operativo debe leer esa p/gina desde la memoria secundaria ' copiarla a la memoria principal. 5e igual modoG si no ha' marcos libres en la memoria principal el sistema operativo debe seleccionar una p/gina para ser reempla*ada 'G si esta ha sido modi&icada o no e+iste en el /rea de intercambioG debe ser copiada all3. El sistema operativo puede buscar en dos posibles locali*aciones de memoria secundaria: *loque de disco de un archivo ejecutable. $arte de las p/ginas en 8ue se divide el espacio de direccionesG cdigo ' datosG son creadas por el sistema operativo a partir del archivo ejecutable del 8ue es instancia el proceso. *loque de disco del #rea de intercambio G utili*ada para el almacenamiento de las p/ginas de un proceso cuando se intercambia &uera ' para el almacenamiento de las p/ginas 8ue han sido seleccionadas para ser reempla*adas tras un &allo de p/gina.

!ada blo8ue del /rea de intercambio se identi&ica por un nmero de bloque o direccin de disco. El sistema mantiene ciertas estructuras de datos para locali*ar los blo8ues donde se encuentran almacenadas las p/ginas. ,lgunos sistemas copian por adelantado al /rea de intercambio todas las p/ginas de un proceso cuando es creado con el &in de acelerar el tratamiento de los &allos de p/gina. $ero si el espacio de direcciones del proceso crece es necesario aumentar el tama?o en disco por lo 8ue ha' 8ue mover todo el espacio del proceso. $ara evitar estoG se copia el proceso por partesG datosG cdigoG etc. de manera 8ue si slo es preciso crecer la parte de datos el trabajo es menor. Otros sistemas no copian el espacio de direcciones completo a memoria de intercambioG slo las p/ginas 8ue son necesarias. En ese casoG se utili*a una estructura de datos denominada tabla de disco donde se relaciona cada p/gina con el blo8ue de disco donde se encuentra alojada.
;lo0ueo de marcos de pgina

Se dice 8ue un marco de memoria est/ bloqueado o pinchado BpinningC si su contenido no puede ser reempla*ado. Este blo8ueo resulta til si el marco contiene in&ormacin 8ue conviene 8ue no sea borradaG por ejemplo los marcos reservados para alojar el espacio del ncleo.
Tratamiento de un allo de pgina

!uando durante el ciclo de ejecucin de una instruccin se hace re&erencia a una determinada posicin de memoriaG la direccin de memoria virtual es pasada a la 117 para traducirla a una direccin &3sica. Wsta comprueba 8ue la direccin est/ dentro del rango de direcciones permitido. Si lo est/ accede a la tabla de p/ginas ' comprueba el bit de valide* o presencia. Si est/ activadoG la p/gina se encuentra en memoria principalG con lo 8ue la 117 toma el valor del campo de marco de p/gina para construir la direccin &3sica junto al despla*amiento de la direccin virtual.

#2

Captulo 7. ,emoria virtual

Si el bit de valide* est/ desactivado se produce un fallo de p#gina ' se guarda en la pila el contenido del contador del programa ' de los registros especiales ' pasa el control al sistema operativo. El sistema operativo guarda el conte+to del proceso cu'a ejecucin produjo la e+cepcin ' comprueba 8ueG en e&ectoG se debe a un &allo de p/gina. , continuacin intenta averiguar la direccin 8ue produjo el &alloG bien consultado registros internos del procesador o simulando su ejecucin. 5eterminada la direccin se comprueba 8ue <sta sea legalG si no lo es se aborta el proceso. Si la direccin s3 es legalG se consulta la lista de marcos libres ' si no ha ' ninguno se invoca a un algoritmo de reemplado para seleccionar un marco donde cargar la p/gina 8ue produjo el &allo. Si la p/gina contenida en el marco elegido ha sido modi&icadaG se plani&ica para ser copiada a disco duro ' mientras tanto se blo8uea el proceso ' el marco para evitar 8ue pueda ser seleccionado por otro proceso. 7na ve* 8ue el marco est/ limpioG esto esG 8ue la p/gina 8ue conten3a se ha pasado a discoG se plani&ica la p/gina a ser copiada de memoria al marcoG se actuali*an las tablas de p/gina ' se restaura el contador de programa ' los registros para 8ue una ve* 8ue se pase el proceso al estado preparado para ejecucin se carge su conte+to ' contine la ejecucin desde el punto en 8ue se interrumpi.

Conjunto de trabajo de un proceso


Los programas 8ue se ejecutan en un computador cumplen el principio de localidad de re&erenciasG tambi<n denominado principio de pro+imidadG 8ue a&irma 8ue durante un determinado intervalo de tiempo de ejecucin de un proceso <ste re&erencia direcciones virtuales pr+imas entre s3G esto esG p/ginas cercanas. Este conjunto de p/ginas &orma una *ona de localidad del proceso. ,s3G el conjunto de trabajo de un proceso en el instante ti de tiempo virtual es el conjunto de p/ginas distintas 8ue el proceso ha re&erenciado en sus ltimas X re&erencias a memoria principal. El tiempo virtual es el tiempo 8ue un proceso est/ siendo ejecutado en el procesador. Si se elige un valor de X mu' pe8ue?o el conjunto de trabajo no cubrir/ toda la *ona de localidad actual si se elije mu' grande se cubrir/ m/s de una *ona de localidad. En la pr/cticaG para reducir la sobrecarga se constru'e el conjunto de trabajo periodicamente cada cierto tiempo virtual Y. $ara ello se revisa el campo re&erenciada Bbit rC de cada entrada de la tabla de p/ginas del proceso. El conjunto de trabajo est/ &ormado por todas a8uellas p/ginas 8ue tengan el bit r activado. 7na ve* construidoG se pone r a cero. ,s3 puede de&inirse el conjunto de trabajo de un proceso como el conjunto de p/ginas distintas 8ue el proceso en ejecucin ha re&erenciado en el intervalo de tiempo virtual. 5os conclusiones interesantes son: 7na p/gina miembro de un conjunto de trabajo no debe ser seleccionada como p/gina v3ctima para ser reempla*ada 'a 8ue provocar3a un nuevo &allo de p/gina. 7n proceso debe tener asignados el su&iciente nmero de marcos para poder tener cargado en memoria su conjunto de trabajo. En otro caso estar/ provocando continuamente &allso de p/gina produciendo el &enmeno de sobrepaginacin o trasiego BthrashingC

4eempla#amiento de pginas
El reempla*amiento de p/ginas consiste en seleccionar una p/gina k cargada en un marco j de memoria principal para ser reemple*ada por la p/gina i a la 8ue hac3a re&erencia la direccin virtual 8ue produjo el &allo de p/gina. La p/gina seleccionada para ser reempla*ada se denomina p#gina

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

#!

vctima. El conjunto de marcos candidatos hace re&erencia a los marcos de memoria principal donde se encuentran almacenadas las p/ginas candidatas a ser reempla*adas. !strategia de reempla,amiento de p#ginas localG cuando el conjunto de p/ginas candidatas a ser reempla*adas pertenecen al mismo proceso 8ue provoc el &allo. !strategia de reempla,amiento de p#ginas globalG cuando el conjunto de p/ginas candidatas est/ &ormado por todas las p/ginas cargadas en memoria principal en marcos no blo8ueados.

La estrategia de reempla*amiento local es m/s &/cil de anali*arG pero su implementacin es m/s complicada ' produce ma'or sobrecarga. Es deseable 8ue el algoritmo de reempla*amiento disminu'a el nmero de &allos de p/gina a medida 8ue aumenta el nmero de marcos de p/gina de la memoria principal. Si esto no sucede se dice 8ue el algortimo pacede la anomala de *elady. El alogirtmo .4.O su&re de esta anomal3a.
2lgoritmo de reempla$amiento ptimo

Selecciona para ser reempla*ada la p/gina del conjunto de p/ginas candidatas a ser reempla*ada 8ue tardar/ m/s en volver a ser re&erenciada. Esto obliga a conocer con antelacin 8u< direcciones virtuales van a ser re&erenciadasG pero esto no es posible ' de ah3 8ue este algoritmo no pueda ser implementador en la pr/ctica pero s3 sirve como re&erencia para comparar con otros algoritmos.
2lgortimo de reempla$amiento :9-

El algoritmo de reempla*amiento de la p/gina usada menos recientemente o algoritmo L@7 BLeast @ecentl' 7sedC selecciona para ser reempla*ada la p/gina del conjunto de p/ginas candidatas 8ue lleva m/s tiempo sin ser re&erenciada. Este algoritmo es bastante bueno pero de implementacin compleja. $roduce bastante sobrecarga. Suele implementarse mediante una lista en la 8ue cada entrada contiene el nmero de p/gina del conjunto de p/ginas a ser reempla*ada. !ada ve* 8ue una p/gina es re&erenciada se coloca al principio de la lista ' al &inal la p/gina menos re&erenciadaG esto esG la candidata a ser sustituida. !ada ve* 8ue se re&erencia una direccin virtual la lista debe ser reordenada. Otra implementacin se basa en un contador hard6are 8ue se incrementa cada ve* 8ue se re&erencia una direccin. En la tabla de p/ginas se a?ade un campo 8ue almacena ese valor cuando una p/gina es re&erenciada. 5e este modoG se selecciona para reempla*ar la p/gina 8ue contenga el menor valor en ese campo.
2lgoritmo de reempla$amiento mediente enve.ecimiento

El algoritmo de reempla*amiento mediante envejecimiento BagingC es una apro+imacin al algoritmo L@7 pero 8ue introduce menor sobrecarga 'a 8ue puede impelmentarse de &orma m/s e&iciente. Se utili*a un registro de despla*amiento de n bitsG inicialmente a cero. !ada cierto tiempo 7 el contenido del registro se despla*a a la derecha ' se carga en el bit m/s signi&icativo el bit referenciadaG rG despu<s este bit se pone a cero. 5e este modoG la p/gina a ser reempla*ada es la 8ue tenga un menor valor en el registro. El tama?o del registro determina la edad m/+ima 8ue puede registrarseG 'a 8ue en un registro de 8 bitsG todos a ceroG no se puede determinar si la p/gina no se ha re&erenciado en un tiempo Z =7 o se acaba de cargar.
2lgoritmo de reempla$amiento F)FO

El algoritmo de reempla*amiento .4.O selecciona para ser reempla*ada a8uella p/gina del conjunto de p/ginas candidatas a ser reempla*adas 8ue lleva m/s tiempo cargada en memoria principal.
#" Captulo 7. ,emoria virtual

$ara elloG el sistema mantiene una lista enla*ada o cola .4.O en la 8ue cada entrada contiene el nmero de p/gina de una p/gina del conjunto de p/ginas candidatas a ser reempla*adas. !uando una p/gina se carga en memoria se coloca al &inal de la lista. ,s3G la p/gina 8ue se encuentre en la cabe*a de la lista indica la p/gina 8ue lleva m/s tiempo cargada en memoria ' ser/ la elegida para ser reempla*ada. La gestin de este algoritmo re8uiere mu' poco tiempo de proceso. Es el m/s sencillo de programar ' de implementarG pero no tiene una buena tasa de aciertos ' adem/s pacede la anomal3ua de Aelad'.
2lgoritmo de reempla$amiento de la segunda oportunidad <algoritmo del relo.=

Es una variante del algortimo .4.O 8ue busca la p/gina 8ue lleva m/s tiempo cargada en memoria ' no ha sido re&erenciada recientemente. A/sicamente se consulta el bit re&erenciadaG rG de la p/gina 8ue se encuentra al principio de la cola .4.OG si r es ceroG entonces es seleccionada para ser reempla*ada. Si r es G se pone a cero ' se env3a la p/gina al &inal de la cola. Se obtiene un mejor rendimiento 8ue con .4.O pero a costa de ma'or sobrecargaG 'a 8ue ha' 8ue estar moviendo elementos en la cola. 7na &orma de disminuir la sobrecarga es utili*ar una lista o cola circularG as3 el puntero 3ndice de cola es 8uien se mueve ' no los elementos de la cola. En este caso el algoritmo recibe el nombre de algoritmo del reloj. Si adem/s del bit re&erenciada se tiene en cuenta el bit modi&icadaG mG se mejora sustancialmente la e&ectividad. En este caso nos encontramos con varias posibilidades. r M 2 ' m M 2. $/gina no re&erenciada recientemente ' no modi&icadaG candidata ideal para ser reempla*ada. r M 2 ' m M . $/gina no re&erenciada recientemente pero modi&icada. 5e ser elegida es preciso actuali*ar la p/gina en la memoria de intercambio. rM ' m M 2. Ea sido re&erenciada recientementeG por lo 8ue no es buena candidata. r M ' m M . Ea sido re&erenciada ' modi&icada recientementeG por lo 8ue es probable 8ue vuelva a ser re&erenciada 'G adem/sG es preciso actuali*arla en memoria de intercambio.

!on estas premisasG el algoritmo del reloj busca en primer lugarG a partir de la posicin del punteroG una p/gina se busca una p/gina con r M 2 ' m M 2G si no se encuentra se busca entonces alguna con r M 2 ' m M G pero actuali*a todos los r M ' los pone a cero. Si no encuentra ninguna vuelve a buscar r M 2 ' m M 2G de no encontrarla por cuarta ve* busca una p/gina con r M 2 ' m M G con la seguridad de 8ue ahora s3 tendr/ <+ito 'a 8ue en la segunda ronda todos los r se pusieron a cero.
2lgoritmo de reempla$amiento del relo. considerando el con.unto de traba.o

El algoritmo del reloj puede ser mejorado si se considera el conjunto de trabao de un proceso. , este algoritmo resultante se le conoce con el nombre de algoritmo >S$lock. En este casoG cada entrada i de la p/gina de un proceso debe tener un campo denominado tiempo de ltimo usoG 8ue contiene el tiempo virtual de ltimo uso de la p/gina. !uando se produce un &allo de p/gina se e+amina el bit r ' si est/ a G se escribe en ese campo el tiempo virtual del proceso. La di&erencia del tiempo virtual del proceso con el tiempo almacenado nos da la edad del proceso. Siendo Y el intervalo del conjunto de trabajoG si la edad de la p/gina es ma'or 8ue YG no pertenece al conjunto de trabajo.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

##

El algoritmo IS!locF busca p/ginas con r M 2 ' m M 2 ' 8ue no pertene*can al conjunto de trabajo del proceso. Si durante una vuelta completa se da la situacin de 8ue todas las p/ginas pertenecen al conjunto de trabajo del procesoG entonces seleccionar/ la primera p/gina 8ue encuentre con r M 2 ' m M 2G aun8ue pertene*ca al conjunto de trabajo.
Conclusiones sobre los algoritmos de reempla$amiento

Los algoritmos m/s utili*ados por los sistemas operativos modernos son el de envejecimiento ' el IS!locF. La estragegia de reempla*o limita los algoritmos de reempla*amiento a utili*ar. ,s3G algoritmos como .4.OG L@7 ' envejecimiento pueden utili*arse tanto con estrategia de reempla*o global o local. El algoritmo IS!locF slo puede utili*arse con estrategia de reempla*o local.

'si"nacin de memoria principal


Esta tarea consiste b/sicamente en decidir cu/ntos marcos de p/gina de la memoria principal se reserva para un proceso 8ue se tiene 8ue ejecutar. Se deben reservar como m3nimo los marcos su&icientes para contener todas las p/ginas a las 8ue pueda re&erenciar cual8uier instruccin del repertorio de la m/8uina. !omo m/+imoG en teor3aG se pueden asignar a un proceso todos a8uellos 8ue no estuvieran blo8ueadosG pero esto anula los bene&icios de la multiprogramacin. 5os estrategias de asignacin son: )signacin fija. !onsistente en asignar a cada proceso un nmero &ijo de marcos. El principal inconveniente es 8ue si el conjunto de trabajo del proceso crece por encima del nmero de marcos asignados se producir/ sobrepaginacin aun8ue e+istan marcos libres en memoria. Si el conjunto de trabajo disminu'eG por debajo del nmero de marcos asignadosG se estar3a desperdiciando memoria. Si el sistema operativo utili*a estrategia de asignacin &ijaG es obligado 8ue la estrategia de reempla*o sea local. )signacin variable. 1odi&ica a lo largo del tiempo el nmero de marcos 8ue un proceso tiene asignados. 1inimi*a la memoria desperdiciada ' la sobrepaginacin a costa de aumentar la sobrecarga 'a 8ue el sistema debe decidir continuamente cu/ntos marcos reservar a cada proceso.

$ara implementar la asignacin variableG 8ue proporciona mejores resultadosG se debe utili*ar un algoritmo de asignacin de marcosG siendo los m/s conocidos: )lgoritmo de asignacin equitativa. !ada cierto tiempo se comprueba el nmero de procesos en ejecucin ' se asigna a cada uno el mismo nmero de marcos. )lgortimo de asignacin proporcional. Se asigna a cada proceso un nmero de marcos proporcional a su tama?o 'Do su prioridad. )lgoritmo de asignacin por la frecuencia de fallos de p#gina o algoritmo %//. Se basa en 8ue cuanto ma'or sea el nmero de marcos asignado a un proceso menor ser/ su tasa de &allosG siempre 8ue el algoritmo de reempla*amiento no su&ra la anomal3a de Aelad'. Si la tasa de &allos se encuentra por encima de cierto l3miteG se asignan m/s marcos al proceso. Si la tasa de &allos cae por debajo de un l3mite in&erior se le 8uitan marcos. Si la tasa de &allos est/ por encima del l3mite pero no e+isten marcos libres ser/ necesario intercambiar algn proceso al /rea de intercambio

#$

Captulo 7. ,emoria virtual

Control de car"a
En un sistema multiprogramado con memoria virtual mediante demanda de p/ginaG el sistema operativo debe controlar el nmero de procesos 8ue tienen p/ginas cargadas en memoria principalG esto esG debe controlar el grado de multiprogramacin 91. 5ebe encontrarse un valor ptimo de 91 con el &in de 8ue se optimice al m/+imo el tiempo de utili*acin del procesador. Si el grado de multiprogramacin es bajoG el procesador se ver/ in&autili*ado por ausencia de procesosH si el 9 1 es alto puede 8ue no se puedan contener en la memoria principal los conjuntos de trabajo de los procesosG produci<ndose sobrepaginacin ' por tanto in&rautili*acin del procesadorG 8ue debe esperar a 8ue se realicen los intercambios con la memoria secundaria. Si se detecta sobrepaginacin es necesario reducir 91 intercambiando algunos procesos a memoria secundaria ' repartir los marcos libres entre los procesos 8ue la estaban provocando.

Copia en memoria secundaria de p("inas modi%icadas


La estrategia seguida para reali*ar la copia a memoria secundaria de las p/ginas modi&icadasG conocida como poltica de limpie,a Bcleaning polic'C puede ser: :impie,a por demanda. La p/gina no se escribe hasta 8ue es seleccionada para ser reempla*ada. Se apla*a la escritura hasta 8ue no sea estrictamente necesario pero cuando se produce un &allo de p/gina ha' 8ue reali*ar dos operaciones de EDS: una para actuali*ar la p/gina modi&icada ' otra para leer la nueva p/gina. :impie,a por adelantado. Las p/ginas modi&icadas se agrupan en lotes ' se plani&ica su escritura cada cierto tiempo. $ermite atender m/s r/pidamente los &allos de p/ginaG al reali*ar el volcado de la p/gina antes de 8ue se soliciteG pero puede darse el caso de 8ue una p/gina ha'a sido grabada ' vuelva a ser modi&icadaG debiendo reali*arse de nuevo su copia. Este problema puede solucionarse grabando solo las candidatas a ser reempla*adas.

Consideraciones adicionales sobre la pa"inacin por demanda


,spectos a tener en cuenta al dise?ar la memoria virtual de un sistema con paginacin por demanda son el tama?o de p/ginaG la paginacin por adelantado ' la reserva de marcos libres Bbu&&eringC.
Tama7o de pgina

El tama?o de p/gina viene determinado por la ar8uitectura del computadorG siempre potencia de dos. ,lgunos computadores permiten seleccionar el tama?o dentro de un rango de valores. $ara seleccionar el tama?o adecuado ha' 8ue tener en cuenta: /ragmentacin interna. 5e promedio es de media p/gina por proceso. !uanto ma'or sea el tama?o de p/ginaG ma'or ser/ la cantidad de memoria no utili*ada. 7ama?o de la tabla de p#ginas. !uanto menor sea el tama?o de p/gina en m/s p/ginas se descompondr/ el proceso ' en consecuencia el tama?o de la tabla de p/ginas ser/ ma'or. ,dem/s el tiempo de cambio de proceso aumenta al tener 8ue cargar o vaciar m/s registrosG con 117G o banco de registrosG si se dispone de TLA. +mero de fallos de p#gina. Si el tama?o de p/gina es pe8ue?o el espacio de direcciones virtual constar/ de m/s p/ginasG aumentando la probabilidad de 8ue se produ*ca un &allo de p/gina. 7iempo de uso de !"S. Se tarda menos tiempo en trans&erir una p/gina de tama?o grande 8ue varias de tama?o m/s pe8ue?o. Si el espacio de direcciones virtuales se descompone en

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

#7

ma'or nmero de p/ginas aumenta la probabilidad de reali*ar operaciones de EDSG tiempo 8ue no puede ser utili*ado para la ejecucin de procesos. El aumento del tama?o de la memoria principal de los computadores provoca 8ue se de menos importancia a la e+istencia de &ragmentacin internaG escogi<ndose tama?os de p/gina cada ve* ma'ores.
Paginacin por adelantado

!uando comien*a la ejecucin de un proceso o se contina con uno 8ue estaba blo8ueado se produce un conjunto de &allos de p/gina iniciales hasta 8ue se carga el conjunto de trabajo. $ara evitar esto se puede usar la estrategia de paginacin por adelantado BprepagingCG 8ue consiste en cargar un cierto nmero de p/ginas ) $, antes de iniciar o continuar su ejecucin o cada ve* 8ue se produce un &allo de p/gina. En generalG si se cargan )$, p/ginas se re&erenciar/n )$@ p/ginas ' no se re&erenciar/n )$, R )$@. !ada p/gina re&erenciada cargada por adelantado evita un &allo de p/gina. Si el tiempo 8ue se ahorra en tratar )$@ &allos de p/gina es superior al empleado en cargar las )$, R )$@ 8ue no son re&erenciadas s3 compensa utili*ar paginacin por adelantado. Si se decide utili*arlaG la seleccin del conjunto )$, puede hacerse: $argar el conjunto de trabajo del procesoG 8ue debe ser mantenido por el sistema operativo. Opcin empleada cuando se va continuar con la ejecucin de un proceso interrumpido o blo8ueado. $argar un conjunto de p#ginas contiguas en el #rea de intercambioG 'a 8ue el tiempo es menor si se traen de una ve* 8ue si se recuperan una a una cuando sean re&erenciadas.

9eserva de marcos libres

Si se dispone de una lista de marcos libres donde cargar una p/gina re&erenciada por una direccin virtual 8ue ha producido un &alloG el tiempo de tratamiento del &allo se reduceG 'a 8ue slo ha' 8ue hacer uso de esa reserva de marcos libres. Si la reserva de marcos libres cae por debajo de un l3mite se utili*a un algoritmo de reempla*amiento para seleccionar marcos reempla*ables. 1ientras una p/gina siga cargada en un marcoG aun8ue est< entre los marcos libresG podr/ ser utili*ada. $ara ello cuando se produce un &allo de p/gina primero se comprueba si est/ en la lista de marcos libres antes de acudir a memoria secundaria. 5e este modoG esta lista de marcos libres se utili*a como cach@ soft8are de p#ginas. Esta estrategia en ocasiones se denomina buffering de p#ginas.

#8

Captulo 7. ,emoria virtual

Captulo >.

?estin de la Entrada@Salida

5e &orma general los dispositivos de EDS se pueden clasi&icar en dispositivos modo blo8ue ' dispositivos en modo car/cter. 7n dispositivo en modo blo8ue almacena la in&ormacin en blo8ues de tama?o &ijoG ( " b'tes normalmente. 7n dispositivo en modo car/cter env3a o recibe in&ormacin como una secuencia o &lujo lineal de b'tes.

7n dispositivo debe ser conectado a un mdulo hard6are denominado controlador de !"S para 8ue pueda ser utili*ado por el computador. 7n controlador puede manejar uno o varios dispositivos del mismo tipo. El sistema operativo se encarga de la gestin del acceso de los procesos a los dispositivos de EDSG gestiona el bu&&ering o el spooling.

#eticiones de E1S
7na operacin de EDS puede ser solicitada por un proceso o por el propio sistema operativo mediante una llamada al sistema indicando la direccin lgica del dispositivoG la direccin lgica del espacio del proceso donde se almacenar/n los datos ' la cantidad de datos a trans&erir.

Capas del ncleo de un sistema operativo encar"adas de la E1S


El so&t6are del ncleo encargado de la gestin de EDS se puede organi*ar en tres capas: susbsistema de EDSG drivers de los dispositivos ' manejadores de interrupciones. !ada capa posee una inter&a* bien de&inida para comunicarse con las capas ad'acentes ' reali*a unos servicios determinados.
Subsistema de E1S

Es el componente 8ue se encarga de e&ectuar todas las tareas necesarias para la reali*acin de las operaciones de EDS comunies a todos los dispositivos e independiente de estos. Entre sus tareas se encuentran: )signacin y liberacin de dispositivos dedicados. Los dispositivos dedicados son a8uellos 8ue slo pueden ser utili*ados por un proceso cada ve*G como impresoras o unidades de cinta. El subsistema de EDS determina si la peticin de un proceso sobre un dispositivo dedicado puede ser aceptada o recha*ada. *loqueo de procesos que solicitan una operacin de !"S. El susbistema puede decidir pasar al estado blo8ueado al proceso 8ue reali*a la peticin de EDSG dependiendo del tipo de llamada ' del estado del dispositivo. %lanificacin de la !"S. El sistema debe plani&icar el usao de los dispositivos con el &in de optimi*ar su usoG disminuir el tiempo de espera promedio ' distribuir e8uitativamente el uso de los recursosG atendiendo a las prioridades de las peticiones. Anvocacin del driver de dispositivo apropiado. $ara el subsistema de EDSG un dispositivo es una caja negra 8ue soporta un conjunto est/ndar de operaciones. @ealmente cada dispositivo implementa estas operaciones de &orma di&erente ' son los drivers los 8ue conocen estas particularidades. )lmacenamiento temporal de datos o buffering.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

#9

%roporcionar un tama?o uniforme de bloque a los niveles superiores de soft8are. 3estin de errores producidos en una operacin de !"S. Estos errores pueden ser errores de dispositivos o errores de programacin

El subsistema de EDS debe proporcionar una inter&a* para los drivers de los dispositivosG tanto de llamadas del subsistema al driver como del driver al susbsistema. En los sistemas operativos modernos esta inter&a* es uni&orme.
rivers de dispositivos de E1S

7n driver de dispositivo contiene el cdigo 8ue permite a un sistema operativo controlar a un determinado tipo de dispositivo. Se dise?a teniendo en cuenta las caracter3sticas del dispositivo ' las especi&icaciones del inter&a* de drivers del subsistema de EDS. 7n driver suministra al subsistema de EDS el conjunto de &unciones 8ue se pueden reali*ar sobre el dispositivo. ,dem/s puede invocar ciertas rutinas o procedimientos del ncleoG segn est<n de&inidos en la inter&a*. El driver interacta con el dispositivo cargando las rdenes en sus registros. 7n driver debe reali*ar un conjunto de acciones cuando el subsistema de EDS invoca una &uncin. En general son: !omprobar 8ue los par/metros son correctos ' 8ue la &uncin se puede reali*ar. Traducir los par/metros de la &uncin en par/metros espec3&icos del dispositivo. !omprobar su el dispositivo est/ ocupadoG encolando la peticinG o libre ' preparado o si es necesario iniciali*arlo. 9enerar un conjunto de rdenes en &uncin de la peticin ' cargarla en los registros del controlador. Si el tiempo de espera de la ejecucin de la rden es elevadoG se blo8uea utili*ando algn mecanismo de sincroni*acin. !omprobar 8ue no se ha'an producido errores en la operacin de EDSG tomando las medidas para resolverlo o abortar la operacin. E+aminar la cola de peticiones pendientes de EDS ' atenderla o 8uedar a la espera en estado blo8ueado.

El cdigo de los drivers es reentranteG es decirG 8ue no se modi&icaG por lo 8ue es posible ejecutar varias instancias del mismo driver simult/neamente.
*anejador de las interrupciones

!uando una operacin de EDS &inali*a ' el dispositivo se encuentra preparado para gestionar otraG su controlador genera una interrupcin. !ada interrupcin suministra un nmero denominado nmero del vector de interrupcin 8ue se utili*a de 3ndice en una tabla denominada tabla de vectores de interrupcinG normalmente almacenada en las posiciones m/s bajas de memoria ' en la 8ue cada entradaG vector de interrupcinG contiene entre otras in&ormaciones la direccin de comien*o del manejadorG handler4 de la interrupcin. Estos &orman parte del ncleo ' son e+tremadamente dependientes del hard6are.

0u%%erin"
Si la trans&erencia de datos desde un dispositivo al proceso 8ue reali*a la peticin se reali*ara de &orma directa a su espacio de direccionesG el proceso deber3a estar cargado en un marco de memoria durante todo el tiempo desde la peticin hasta la obtencin de resultados. El marco debe ser blo8ueado para evitar 8ue la p/gina del proceso &uera reempla*ada. !uanto ma'or sea el nmero de
$0 Captulo 8. -estin de la .ntrada/'alida

marcos blo8ueados menor ser/ el nmero de marcos candidatos a ser reempla*ados lo 8ue puede dar lugar a la sobrepaginacin. ,dem/sG el proceso no puede ser intercambiado hasta 8ue no &inalice la operacin de EDS. $ara evitar estos problemas se utili*an los buffersG /rea de la memoria principal a la 8ue nicamente tiene acceso el sistema operativo. El subsistema de EDS asigna bu&&ers para las operaciones de EDS ' los drivers de dispositivo o rutinas de servicio de interrupcin trans&ieren los datos entre los dispositivos ' bu&&ers o viceversa. ,dem/sG los bu&&ers sirven para adaptar las distintas velocidades ' tama?o de unidad de trans&erencia por parte de los dispositivos.
Estrategias

*uffering con buffer nico. Los datos se trans&ieren desde el dispositivo hasta el bu&&er ' del bu&&er al espacio del proceso en una operacin de lectura. 5esde el espacio del proceso al bu&&er ' del bu&&er al dispositivo en una operacin de escritura. )o se puede volver a utili*ar el bu&&er hasta 8ue no &inalice la operacin completa ' se vac3e el bu&&er. *uffering con dos buffers o buffering doble. !uando se llena un bu&&er se utili*a el siguiente. 1ientras se llena el segundo se vac3a el primero. En esta estrategia se desacopla el productor del consumidorG 'a 8ue mientras uno escribe en un bu&&er se lee del otro. ,dem/s se reduce el tiempo de espera de productor o consumidor. *uffering circular. !uando un proceso reali*a r/&agas largas de EDS es m/s conveniente el empleo del bu&&er&ng circularG consistente en disponer de varios bu&&eres utili*ados de &orma consecutivaG volviendo a emplear el primeroG si est/ vac3oG &inali*ado el ciclo.

Cach3 de bu ers de blo0ues de disco

$ara reducir el nmero de operaciones de EDS a disco muchos sistemas operativos implementan v3a so&t6are un cach@ de buffers de bloques de disco G un /rea de la memoria principal del espacio del ncleo reservada para bu&&ers ' 8ue contiene los blo8ues de disco recientemente trans&eridos. La gestin de la cach< es similar a las cach< hard6areG debiend utili*arse algn algoritmo de reempla*amiento B.4.OG L@7G etcC para seleccionar los bu&&ers cu'o contenido deba ser reempla*ado.

Spoolin"
7na t<cnica mu' utili*ada para la asignacin ' control de los dispositivos de EDS dedicadosG como una impresoraG suele utili*arse la t<cnica del spooling. Se implementa mediante un proceso demonio ' un directorio especiaG directorio de spool o spooling. El proceso demonio es el nico autori*ado para acceder al dispositivo. Si un proceso 8uiere hacerloG env3a los archivos deseados al directorio de spooling desde donde el demonio los ir/ cogiendo para enviarlos al dispositivo.

etalles de la "estin de E1S de al"unos dispositivos


9elo.es

7na &orma de generar una se?al peridicaG relojG es mediante un chip denominado reloj programable 8ueG entre otrosG contiene un contadorG un registro ' un cristal de cuar*o. 7n reloj programable dispone de varios modos de operacinG como el de disparo nico o el de onda cuadrada. En el modo disparo nico cuando el contador alcan*a el valor cero se genera una interrupcin ' se detiene hasta 8ue vuelva a ser iniciali*ado. En modo onda cuadrada el reloj se rearma autom/ticamente volviendo a cargar en el contador el valor del registro ' comen*ando de nuevo la cuenta.
Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos $1

El tiempo transcurrido entre dos interrupciones de reloj se denomina tic de reloj oG simplementeG tic. El valor del tic puede ajustarse dependiendo del valor del registro. Se denomina frecuencia de reloj al nmero de tics por segundo. $ara relojes en tiempo real es til 8ue el contador se incrementeG en ve* de decrementarse. Los relojes programables sirven para diversas tareas como: %lanificacin de procesos. $ara controlar los cuantos asignados a los procesos en @ound @obinG por ejemplo. En algoritmos basados en prioridadesG para adaptarla en &uncin del tiempo de uso del procesador 8ue lleve acumulado. Mantenimiento del tiempo real. En 1S el punto de re&erencia son las 22:22:22 7T! del de enero de 982 ' en 7)4K la misma hora ' d3a de 972. $ara llevar el conteo de la hora es necesario un contador de ;% bits. $ara &acilitar la gestin se utili*an dos contadores de #" bitsG uno con el conteo en segundos ' otro para el nmero de tics del segundo actual. Tambi<n se utili*a un contador de tics desde el tiempo de arran8ueG 8ue se suma al valor de alguna posicin de memoria donde se almacena el valor del tiempo real en el momento del arran8ue. .isparo de alarmas. El sistema puede avisar a los procesos cuando ha'a transcurrido determinado intervalo de tiempo. Si m/s de un proceso re8uiere una alarmaG ser3a necesario tener tantos relojes como procesos. $ara evitarlo se utili*a la t<cnica de lista de alarmasG en la 8ue se almacenan las peticiones ordenadas por tiempo de disparo. !ada entrada almacena la di&erencia entre el tiempo de disparo de todas las entradas precedentes ' el tiempo de disparo 8ue re8uiere. Slo se decrementa un contador 8ueG cuando llega a cero dispara la alarma del primer proceso de la lista ' elimina la entrada. Anvocacin de tareas peridicas del sistema. El sistema operativo mantiene una lista de tareas peridicasG generalmente de adminstracinG 8ue son lan*adas de &orma similar al disparo de alarmas.

$uesto 8ue a lo largo de un segundo se producen muchas interrupciones de relojG las tareas 8ue reali*a el driver de reloj deben reali*arse lo m/s r/pidamente posible para 8ue no se resienta. Las interrupciones de relojG por elloG tienen una prioridad mu' elevada. 5ependiendo del sistema operativoG algunas de las tareas 8ue reali*a el driver Bdecrementar cuantos de ejecucinG incrementar el tiempo de uso del procesoG incrementar el contador del reloj de tiempo realG decrementar el contador de alarmas ' tareas peridicas..C son delegadas al manipulador de la interrupcin de reloj.
*iscos duros
Estructura %sica

Est/ &ormado por varios platos circulares de aleaciones de metal o pl/stico recubiertas de material magneti*able 8ue giran en torno a un eje vertical comn a velocidades t3picas de (%22G 7"22 o 2822 rpm. !ada superficie se divide en anillos conc<ntricos llamados pistas. Las pistas se dividen en sectores donde se almacena la in&ormacin. El sector es la unidad b/sica de trans&erencia de in&ormacin de un disco. Sobre cada super&ice e+iste un bra*o en cu'o e+tremo se monta una cabe,a de lecturaDescritura. El conjunto &ormado por las pistas de todas las super&icies de todos los platos situadas a la misma distancia del eje de rotacin se denomina cilindro.

$2

Captulo 8. -estin de la .ntrada/'alida

,ormateo a bajo nivel del disco

El &ormateo a bajo nivel o &ormateo &3sico es reali*ado por el &abricante del disco mediante el uso de un so&t6are ' el controlador del disco. !onsiste en dividir cada super&icie de los platos en pistas ' cada pista en sectores. !ada sector consta de: $abecera o pre#mbulo. $atrn de bits 8ue permite al controlador reconocer el comien*o del sectorG el nmero del sector ' el nmero del cilindro. Brea de datos. !on un tama?o t3pico de ( " b'tes. $digo de correccin de errores4 E!!. Suele ocupar ; b'tes.

La capacidad del disco &ormateado a bajo nivel es in&erior a la del disco sin &ormatear debido a los huecos entre pistas ' sectores ' a una reserva de sectores para sustituir a sectores de&ectuosos. 5entro de una pista los sectores se numeran desde 2 pero de manera intercalada en &uncin de un &actor de intercalado o entrela*ado. 5el mismo modoG en una determinada *ona de cilindrosG la numeracin de los sectores de una pista est/ despla*ada respecto de la pista ad'acenteG sesgo de cilindro Bc'linder sFe6CG para mejorar el rendimiento ' evitar tener 8ue esperar una vuelta completa para leer el primer sector. La direccin &3sica de un sector 8ueda de&inida por la tripleta cilindroRcabe*aRsector B!ESG !'linderREeadRSectorC. Los discos m/s modernos soportan el m<todo de acceso de direccionamiento de blo8ues lgicosG BLogical AlocF ,ddressG LA,C. !ada blo8ue se hace corresponder con un sector durante el &ormateo &3sicoG haciendo corresponder de &orma consecutiva todos los sectores con blo8ues comen*ado desde 2.
#articionamiento ! %ormateo a alto nivel del disco

El particionamiento del disco consiste en establecer por so&t6are una o m/s particiones en el disco. 7na particin es un conjunto de cilindros contiguos. 5esde un punto de vista lgicoG cada particin se considera como un disco distinto. En el sector 2 del disco se crea el registro de arranque maestro B1aster Aoot @ecordG 1A@CG ' a continuacin una estructura denominad tabla de particionesG 8ue de&ine el cilindro de comien*o de cada particin ' su tama?o. 7na ve* particionado se debe reali*ar un formateo de alto nivel o formateo lgicoG 8ue establece el sector de aran8ue del sistema operativoG si es una particin activaG ' las estructuras de datos del sistema de archivos. Es posible no establecer ningn sistema de archivos ' trabajar directamente como si &uera un arra' de blo8ues lgicosG !"S en bruto. El /rea de intercambio de los sistemas 7)4K utili*an este m<todo.
#lani%icacin del disco

El tiempo de lectura o escritura de un blo8ue del disco duro dependeG entre otros &actoresG del tiempo de posicionamiento de la cabe*a de lecturaDescritura ' del tiempo de transferencia del blo8ue desde el disco al controlador. El tiempo de posicionamientoG o tiempo de accesoG es la suma del tiempo de bsquedaG tiempo re8uerido para mover las cabe*as hasta el cilindroG ' la latencia rotacional o retardo rotacionalG tiempo necesario para 8ue el principio del sector se posicione por el giro del disco debajo de la cabe*a. Si las peticiones a disco se plani&ican adecuadamente es posible reducir el tiempo de bs8ueda promedio. ,lgunas estrategias son: %lanificacin de primero el del tiempo de bsqueda m#s corto BShortest Search Time .irstG SST.C. Se selecciona la peticin 8ue re8uieraG desde la posicin actualG el tiempo de

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

$!

bs8ueda m/s pe8ue?o. $uede producir inanicin de las peticiones de bs8ueda m/s alejadas si llegan continuamente peticiones a *onas m/s cercanas. %lanificacin :CCD. Las cabe*as se despla*an en cierto sentido atendiendo las peticiones 8ue se encuentran en el camino ' retorna hacia el sentido contrario. Si llega una peticin cercana pero en sentido contrario deber/ esperar el regreso del cabe*al.

En los discos 8ue soportan LA, el algoritmo de plani&icacin se implementa necesariamente en el controlador del discoG el nico 8ue conoce los detalles de su organi*acin &3sica.
Tratamiento de los errores del disco

El error m/s &recuente es un error de lectura o escritura de un sector debido a 8ue est/ da?ado o de&ectuoso. El controlador mantiene una lista de los sectores de&ectuosos para no utili*arlos. 7n sector de&ectuoso se identi&ica comprobando el E!! del sector. El controlador utili*a los sectores de reserva mediante dos &ormas posibles: Sustitucin directa. Si el sector j est/ da?adoG se utili*a un sector de reserva como sector j. Se presenta el problema de alterar la organi*acin del entrela*ado. .espla,amiento de sectores. Se despla*a una posicin cada sector situado entre el sector de reserva ' el da?ado. El sector de reserva se utili*a para contener el primer sector despla*ado ' el ltimo sector despla*ado alberga el nmero de sector 8ue estaba de&ectuoso. 1antiene la organi*acin de la pistaG pero re8uiere m/s tiempo para reali*arla.

Si el controlador no implementa ningn m<todo de reempla*oG debe hacerlo el sistema operativo. $ara resolver los problemas provocados por &allos en los discos se desarrollan soluciones basadas en mltiples discosG en la 8ue los datos son distribuidos por m/s de uno ' 8ueG adem/sG mejoran el rendimiento al poder atender en paralelo peticiones de EDS independientes. El sistema m/s conocido se denomina arra' redundante de discos independientes B@edundant ,rra' o& 4ndependent 5isFsG @,45C.
*ispositivos de E@S adaptados al usuario
/estin de la salida por pantalla

La pantalla de un computador es un dispositivo de salida de gr/&icos de trama Braster graphicsC o de mapa de bits BbitmapsC. !ada punto de la pantallaG pixelG tiene asociado un nmero binario 8ue representa el color con 8ue se representa en la pantalla. La pantalla se conecta a trav<s de un adaptador gr/&ico 8ue posee aun memoria de video B=@,1C en la 8ue se almacenan los pi+els de la imagen 8ue se mostrar/ en pantalla. El tama?o de la =@,1 vendr/ determinado por el nmero de bits necesarios para representar un pi+el ' por el tama?o de la pantalla. Las rutinas de manipulacin ' creacin de gr/&icos pueden &ormar parte del sistema operativo ' ejecutarse en modo ncleoG como en Iindo6sG o ser e+ternas al sistema ' ejecutarse en modo usuarioG como en 7)4KDLinu+.
/estin de la entrada del teclado

7n teclado es un dispositivo modo car/cter de entrada. !ada pulsacin ' liberacin de tecla env3an un nmero a un registro del controlador EDS 8ue lo supervisa. Wste genera una interrupcin 8ueG atendida por el manejador correspondienteG despierta el driver de teclado. El driver utili*a un mapa de teclas o mapa de cdigo 8ue resuelve la tecla pulsada en &uncin de la con&iguracin de idioma ' tipo de teclado. El bit m/s signi&icativo del b'te con 8ue se in&orma de la tecla pulsada indica si la tecla ha sido presionada o liberada. Tambi<n lleva la cuenta de las teclas 8ue han sido pulsadas ' no liberadas con el &in de poder capturar combinaciones de m/s de una
$" Captulo 8. -estin de la .ntrada/'alida

tecla. El driver almacena la in&ormacin en un pe8ue?o bu&&er para 8ue sea le3da por el proceso adecuado.
/estin de la entrada del ratn

7n ratn es un dispositivo modo car/cter de entrada. El despla*amiento del ratn provoca la transmisin de un mesaje al registro del controlador de EDSG de unos # b'tesG 8ue contiene el despla*amiento verticalG eje 'G despla*amiento hori*ontalG eje + ' estado de los botonesG pulsado o no pulsado. Los despla*amientos son relativos a la ltima posicin registrada. El controlador lan*a una interrupcin cada ve* 8ue recibe un mensaje ' el manejador de la interrupcin despierta al driverG 8ue lee el mensaje ' lo coloca en una cola para 8ue sea le3do ' procesado por el proceso adecuado.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

$#

Captulo A.
'rchivos

?estin de archivos

5esde el punto de vista de los usuarios de los computadoresG la unidad de trabajo es la abstraccin de almacenamiento en memoria secundaria conocida como archivo o fichero.
Tipos de archivos

7n archivo inform#ticose puede de&inir como un conjunto de in&ormacin relacionada 8ue se almacena en memoria secundaria ' 8ue se identi&ica mediante un nombreG como una cadena de caracteres. En generalG un archivo contiene programas o datos. 5os de los tipos de archivos comunmente soportados por los sistemas operativos son los directorios ' los archivos regulares u ordinarios. 7n directorio es un archivo 8ue almacena una lista de los archivos ' otros directorios 8ue contiene. 7n archivo regular puede ser un archivo ,S!44 o un archivo binario. 7n archivo binario contiene in&ormacin de cual8uier tipo codi&icado en binario con una estructura determinada 8ue solo puede ser interpretada por los programas 8ue los utili*an. 7n archivo )S$AA est/ compuesto de l3neas de caracteres ,S!44 codi&icados en binario 8ue no re8uiere de un programa 8ue las interprete.

El nombre de un archivo es una cadena de caracteres. !ada sistema de archivos soportado por el sistema operativo especi&ica la longitud m/+ima ' el tipo de caracteres 8ue puede tener. La extensin del archivo proporciona in&ormacin sobre el tipo de archivo. Sistemas como 7)4K ignoran las e+tensiones ' otros como Iindo6s las reconoce e interpretan asoci/ndolas con el programa 8ue los genera.
2tributos de un archivo

La lista de atributos var3a en &uncin del sistema de archivos pero en general se tiene: 7ipo de archivo. 7ama?oG en b'tesG palabras o blo8ues. :ocali,acinG ubicacin en memoria secundaria. $reador y propietario. 4denti&ica al usuario 8ue lo cre ' su actual propietario. %ermisos de acceso. $ara determinar 8ui<n puede acceder ' 8u< puede hacer con el archivo. Anformacin asociada al tiempo. !omo &echa ' hora de creacinG modi&icacinG ltimo accesoG etc.

Estructura interna de un archivo

La in&ormacin contenida en un archivo se puede estructurar de tres &ormas posibles: Secuencia de bytes. Las operaciones de lectura ' escrituras se reali*an a nivel de b'te. El sistema operativo no tiene 8ue interpretar la in&ormacin contenida en cada b'teH esa responsabilidad recae en los programas de aplicacin 8ue se ejecutan a nivel de usuario. Secuencia de registros. !ada registroG de igual longitudG posee su propia estructura interna. Las operaciones de lectura ' escritura tambi<n se reali*an a nivel de registros.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

$7

-egistros indexados. !ada registroG de longitud variableG contiene un campo 3ndice 8ue permite identi&icarlo. Se organi*a en &uncin de la clave de los registros 8ue lo componen. En una operacin de lectura o escritura debe especi&icarse la clave de registro 8ue se desea leer o escribir. ,l a?adir un nuevo registro es necesario indicar su clave.

5e &orma generalG un archivo est/ &ormado por bloques lgicos o registros de igual o distinto tama?o. En el caso de secuencia de b'tes el tama?o del blo8ue es de un b'te. 4dependientemente de la estructuraG las operaciones de EDS en memoria secundaria se reali*an en unidades de blo8ues &3sicos de igual tama?o. 7n bloque fsicoG 8ue comprende varios sectoresG tiene asignada una direccin &3sica A. o nmero de blo8ue. 7n archivo ocupar/ ) blo8ues lgicosG e+isitendo &ragmentacin interna 'a 8ue el ltimo blo8ue probablemente no sea ocupado al completo.
'3todos de acceso a un archivo

)cceso secuencial. Los b'tes o registros se leen o escriben en orden comen*ando desde el principio. El sistema mantiene un puntero de lectura"escritura 8ue indica la posicin donde debe comen*ar la siguiente operacin. !ompiladores ' procesadores de te+to la utili*an. )cceso aleatorio. Tambi<n llamado acceso directo. Los b'tes o registros pueden ser leidos en cual8uier orden. Las operaciones de lecturaDescritura pueden implementarse especi&icando el nmero de b'te o registro al 8ue se desea acceder en la misma instruccin o bien reali*ando primero una bs8ueda ' posteriormente reali*ar la operacin de manera secuencial.

Operaciones sobre archivos

$rear archivo. !rea un archivo sin datosG vac3oG en la estructura de directorios ' crea las entradas necesarias en el directorio correspondiente. ,brir archivo. Se busca en un directorio la entrada asociada al archivo ' se carga en memoria principal toda la in&ormacin 8ue necesite sobre el archivo: atributosG posiciones de memoria secundaria donde se alojaG etc. Si la operacin se reali*a con <+ito se devuelve un entero positivo denominado identificador de archivoG 8ue lo identi&ica en el conjunto de archivos abiertos por el proceso o por el conjunto de procesos. %osicionamiento o bsqueda4 seek. $ermite con&igurar el puntero de lecturaDescritura para 8ue apunte al comien*o del b'te o registro donde se desea leer o escribir. :eer archivo. $ermite la lectura del archivo desde la posicin actual del puntero. La llamada al sistema inclu'e como argumentos el identi&icador del archivoG el nmero de b'tes o registros 8ue se desean leer ' la direccin de memoria del espacio de usuario del proceso donde colocar los datos le3dos. !scribir archivo. $ermite la escritura del archivo desde la posicin actual del puntero.La llamada debe incluir el identi&icador de archivoG el nmero de b'tes o registros a escribir ' la direccin de memoria del espacio de usuario del proceso desde el 8ue tomar los datos. Si los datos se escriben al &inal del archivo se provoca su aumento de tama?o. -enombrar archivo. !ambia el nombre del arhivo. $errar archivo. La in&ormacin 8ue se mantiene en memoria principal asociada al archivo se descarta. Si el archivo ha sido abierto por varios procesos no se cierrra hasta 8ue lo hace el ltimo de los procesos. *orrar archivo. Libera el espacio en memoria secundaria ' elimina su entrada en el directorio.
Captulo 9. -estin de arc0ivos

$8

irectorios
Estructura de los directorios

7n directorio almacena una lista de archivos ' subdirectorios. En cada entrada se almacena el nombre ' otras in&ormaciones. Las estructuras de directorios m/s comunes son: !structura de directorios de un nico nivel. !onsta de un nico directorio donde se almacena una lista con todos los archivos e+istentesG tanto de usuario como del sistema. Todos los archivos deben tener nombres distintos. !structura de directorios de dos niveles. !onsiste en un directorio ra,G o directorio de archivos maestroG 8ue almacena una lista de directoriosG uno por usuario. En su implementacin m/s sencillaG un usuario slo tiene acceso al contenido de su directorio. $ara poder utili*ar archivos de otros usuariosG adem/s de 8ue el usuario posea los permisos necesariosG el sistema debe manejar nombres de ruta. ,s3G un archivo 8ueda de&inido por la ruta del directorio donde se encuentra ' su propio nombre. Este m<todo tambi<n permite evitar la duplicidad de los archivos del sistema ' de aplicacin. El sistema crea un usuario &icticio especial ' en su directorio almacena todos esos archivos. !uando un usuario invoca un archivo primero se busca en su directorio de usuario ' si no se encuentra se acude al directorio especial. !structura de #rbol de directorios. La lista almacenada en cada directorio puede contener entradas de otros directorios ' archivosG pudiendo crearse mltiples niveles de directorios. $ara acceder a un determinado archivo debe especi&icarse su ruta completa. La ruta puede ser absolutaG indicando el camino desde el directorio ra3*G o relativaG desde el directorio actual o directorio de trabajo. Los sistemas 8ue soportan una estructura de /rbol crean dos entradas de directorio especiales: la entrada punto [.\G 8ue hace re&erencia al directorio actualG ' la entrada dos puntos [..\G 8ue hace re&erencia al directorio padre. !structura de directorios de gr#fica acclica. !on el &in de implementar la comparticin de archivos ' directorios se emplea la estructura de directorios de gr/&ica ac3clicaG 8ue permite 8ue el mismo directorio o archivo pueda ser re&erenciado por dos o m/s directorios di&erentesG siempre 8ue no se produ*can ciclos. )ormalmente se reali*a mediante el uso de enlacesG linFs. 7n enlace puede implementarse creando en el directorio origen una entrada 8ue sea copia de la entrada del directorio destino asociada al archivo compartido. Esta nueva entrada tendr/ un atributo especial 8ue indi8ue 8ue es un enlace. Este tipo de implementacin se conoce como enlace duro. Si la entrada original se modi&icaG todas las entradas [copia\ deben ser modi&icadasH el sistema debe mantener una lista con los enlaces de cada archivo. $ara evitar esto algunos sistemas utili*an un nodo ndiceG o nodoRiG para almacenar las estructuras de datos con los atributos del archivo ' en la entrada del directorio se hace re&erencia a este nodoRi. Otra &orma de implementar un enlace es con un tipo especial de archivo 8ue contiene la ruta absoluta o relativa del archivo o subdirectorio compartido. Estos enlaces se denominan enlaces simblicos. Los enlaces simblicos permiten enla*ar con cual8uier archivo de la estructura de directorios local o remota. El uso de enlaces simblicos consumen m/s espacio 8ue los enlaces durosG 'a 8ue ocupan una entrada de datos. Su utili*acin aumenta el nmero de operaciones de EDS ' la sobrecarga del sistema 'a 8ue es necesario buscar la entrada del enlace en el directorio correspondiente para conocer su ubicacin en discoG leer del disoc el archivo del enlace para conocer la ruta del elemento compartido ' despu<s

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

$9

seguir esa ruta para encontrar la entrada del directorio 8ue le permita conocer la ubicacin del elemento compartido.
Operaciones sobre directorios

$rear directorio. !uando se crea no contiene ninguna entradaG salvo [.\ ' [..\G si el sistema operativo las soporta. *orrar directorio. En algunos casos slo se permite si el directorio se encuentra vac3o. Si se permiteG se eliminan tambi<n todos los elementos 8ue contiene. )brir directorio. !onsiste en encontrar en el directorio padre la entrada 8ue se desea abrir ' cargarla en memoria principal. $errar directorio. Se libera la memoria principal 8ue almacenaba la in&ormacin del directorio. :eer directorio. $ermite leer el contenido de una entrada del directorioG necesario para operaciones de bs8ueda ' listado de contenido del directorio. -enombrar directorio. $ermite modi&icar su nombre. !nla,ar. $ermite crear una entrada para enlace duro o simblico. .esenla,ar. $ermite eliminar un enlace.

Sistemas de archivos
Estructura de un sistema de archivos

7n sistema de archivos de&ine un es8uema de almacenamiento de la in&ormacin relativa a los archivos en un dispositivo de almacenamiento secundario. En un disco puede haber tantos sistemas de archivos distintos como particiones tenga. 5e &orma general se pueden distinguir las siguientes /reas: *loque de arranque. Se sita al comien*o de la particin ' puede contener el cdigo necesario para arrancar el sistema operativo. !structura de datos con metadatos del sistema de archivos . !ontiene in&ormacin administrativa ' estad3stica del sistema de archivosG como por ejemplo el identi&icador del tipo de sistema de archivosG nmero de blo8uesG nmero de blo8ues libresG etc. En algunos sistemas se denomina superbloque. Es copiado a memoria principal cuando se accede por ve* primera al sistema de archivos. !structura de datos con informacin sobre los bloques libres en el sistema de archivos . 9eneralmente denominada lista de bloques libres. $uede implementarse como mapa de bits o como lista enla*ada. !structura de datos con informacin sobre bloques asignados a los archivos . ,lgunas de las m/s utili*adas son: :ista de nodos ndice. O nodoRiG estructura de datos utili*ada para almacenar los atributos de un archivo ' su ubicacin en disco. 7na entrada del nodoRi contiene la direccin &3sica o el nmero de blo8ue donde se encuentra el nodoRi asociado a un determinado archivo. 7abla de asignacin de archivos. B.ile ,llocation TableG .,TC. Tiene una entrada por cada blo8ue &3sico e+istente en la particin del sistema de archivos. La entrada j de la tabla hace re&erencia al blo8ue &3sico j. Si el blo8ue &3sico j est/ asignado a un archivoG la
70 Captulo 9. -estin de arc0ivos

entrada j en la .,T contiene la direccin &3sica del siguiente blo8ue del archivo. En este caso no es necesario mantener in&ormacin sobre blo8ues libres. Brea de datos. !ontiene los blo8ues libres ' blo8ues asignados a los archivos ' directorios.

'onta.e de un sistema de archivos

$ara poder acceder a los contenidos de un determinado sistema de archivos ubicado en memoria secundaria este debe ser montado en algn punto dentro de la estructura de directorios. , dicho punto se le denomina punto de montaje. El sistema operativo reali*a el montaje de los sistemas de archivos en el arran8ue o cuando se detecta un nuevo dispositivo de memoria secundaria conectado al computador. En sistemas Iindo6s se trata cada sistema de archivos como un volmen o unidad lgicaG cada una de las cuales tiene su propia estructura de directorios. Se asigna una letra a cada unidad. En sistemas Linu+ cada sistema de archivos se monta como un directorio del sistema de archivos principalG luego todos los sistemas de archivos 8uedan integrados dentro de la misma estructura de directorios.
2signacin de espacio

7n aspecto importante es la &orma en 8ue se asignan los blo8ues &3sicos del /rea de datos del sistema. Los m<todos m/s utili*ados son la asignacin contiguaG la asignacin enla,ada ' la asignacin indexada.
'si"nacin conti"ua

Se asigna a un archivo un conjunto de blo8ues &3sicos contiguos. ,s3G si un archivo consta de + blo8ues ' el primer blo8ue se almacena en */EG el segundo lo har/ en */E 5 1G ' el ltimo ocupar/ el blo8ue &3sico */E 5 + ( 1. Este m<todo minimi*a las operaciones de bs8ueda en disco ' soporta tanto archivos de acceso secuencial como aleatorio. $resenta la desventaja de producir &ragmentacin e+terna. Sucesicos procesos de creacin ' borrado de archivos provocar/ la aparicin de huecos cada ve* m/s pe8ue?osG siendo necesario compactar el discoG esto esG trasladar todos los archivos a un lado de la particin ' todos los huecos al otro. Otro inconveniente es 8ue el sistema operativo debe conocer de antemano el espacio 8ue va a ocupar el archivo. Si se le asigna un hueco de tama?o superior al necesario se producir/ &ragmentacin interna. Si se le asigna un espacio in&erior al 8ue podr3a alcan*ar tendr/ 8ue recurrirse a alguna estrategia cuando necesite m/s espacio.
'si"nacin enla)ada

El m<todo de asignacin enla*ada consiste en almacenar al principio de cada blo8ue &3sico asignado a un archivo la direccin &3sica del siguiente blo8ue &3sico del archivo. ,s3G se organi*a como una lista enla*ada de blo8ues &3sicos. $ermite usar cual8uier blo8ueG por lo 8ue no produce &ragmentacin e+terna ' evita conocer por adelantado el tama?o del archivo. @esulta mu' lento para su utili*acin con archivos de acceso aleatorio 'a 8ue para locali*ar un blo8ue ha' 8ue pasar por todos los anteriores. ,dem/sG la utili*acin de algunos b'tes del blo8ue para almacenar la direccin del blo8ue siguiente provoca 8ue ha'a menos espacio disponible para datos ' 8ue este espacio no sea potencia de dosG di&icultando el procesamiento ' la e&iciencia.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

71

7na solucin bastante utili*ada es asignar el espacio en agrupamientos &clusters' de blo8ues &3sicos cont3guosG almacen/ndose al comien*o la direccin del siguiente agrupamiento. Esta solucin aumenta la &ragmentacin interna ' produce &ragmentacin e+ternaG dado 8ue huecos de tama?o in&erior al del cluster no pueden ser asignados. Otra desventaja es 8ue si se da?a o pierde uno de los punteros de la cadena el resto de los blo8ues no estar3an accesibles. $ara eliminar todas las desventajas del m<tido de asignacin enla*ada se puede utili*ar una .,TG ubicada en sectores contiguos despu<s del sector de arran8ue. La .,T tiene una entrada por cada blo8ue &3sico de la particicin. La entrada j de la tabla hace re&erencia al blo8ue j del disco. Si el blo8ue &3sico j est/ asignado a un archivoG la entrada j de la .,T contiene la direccin del siguiente blo8ue. Si el blo8ue es el ltimo del archivoG la entrada de la .,T contendr/ un valor especial para indicarlo. Lo mismo ocurre en caso de 8ue el blo8ue est< libre. 7na copia de la .,T debe estar en memoria principal para optimi*ar su uso. Este espacio puede llegar a ser mu' grande si la particin del disco tambi<n lo es.
'si"nacin inde&ada

En este m<todo se almacena en un nodoRi los atributos de un archivo ' las direcciones &3sicas de los primeros ocho o die* blo8ues de un archivo. Tambi<n se almacenan las direcciones &3sicas de uno o varios blo8ues de indicreccin simpleG doble o triple. 7n bloque de indireccin simple almacena direcciones &3sicas de blo8ues de archivo. 7n bloque de indireccin doble almacena direcciones &3sicas de blo8ues de indireccin simple. 7n bloque de indireccin triple almacena direcciones &3sicas de blo8ues de indireccin doble. !ada archivo tiene asociado un nmero entero positivo denominado nmero de nodo( i. ,l principio de la particin se mantiene una lista con todos los nodosRi e+istentes. El nmero de nodoRi asociado a un archivo se almacena en la entrada de directorio 8ue contiene al archivo. Este m<todo se puede usar tanto para archivos de acceso secuencial como aleatorio. )o produce &ragmentacin e+terna ' permite 8ue el espacio de los blo8ues &3sicos 8ue contienen datos puedan ser utili*ados totalmente. Su implementacin re8uiere de menos memoria principal 8ue la .,TG 'a 8ue solo es necesario mantener en memoria los nodosRi de los archivos abiertos. La principal desventaja es 8ue el tiempode acceso a un blo8ue de archivo depende de la estructura interna del nodoRi. En el mejor de los casos ' suponiendo 8ue el nodoRi del archivo 'a ha sido cargado en memoria principalG si se desea acceder a uno de los primeros blo8ues del disco slo ha' 8ue hacer una lectura para acceder a dicho blo8ueG pero si se trata de blo8ues a los 8ue se accede a trav<s de blo8ues de indireccin simpleG doble o tripleG habr/ 8ue hacer unaG dos o tres lecturas adicionales en disco.
?estin del espacio libre

$ara esta &uncin se suele utili*ar una estructura de datos denominada lista de bloques libresG aun8ue a veces no se implementa como una lista.
*apa de bits

!ada blo8ue de disco tiene asignado un bit. Si el blo8ue est/ ocupado se marca con un 2 ' si est/ libre con un Bo viceversaC. Si la particin ocupa ) blo8uesG ser/n necesarios ) bits. Su principal ventaja es la sencille* para encontrar el primer blo8ue libre o el primer conjunto de k blo8ues libres consecutivos. El principal inconveniente es 8ue se precisa tener el mapa completo en memoria principal.

72

Captulo 9. -estin de arc0ivos

Lista enla)ada

Si un blo8ue de disco puede almacenar )5 direcciones de blo8ueG en cada blo8ue de la lista contendr/ la direccin del siguiente blo8ue ' )5 R direcciones de blo8ues libres. La principal ventaja es 8ue slo es necesario mantener en memoria un blo8ue de la lista enla*ada.
)mplementacin de directorios

7n directorio es un archivo 8ue almacena una lista de los archivos ' subdirectorios 8ue contiene. ,lgunos sistemasG como .,TR#"G almacena en cada entrada de un directorio el nombre del archivo o subdirectorio ' sus atributosG entre los 8ue se encuentra la in&ormacin para locali*ar los blo8ues de datos 8ue lo contiene. En 7.S B7)4KC o e+t" de Linu+G se almacena en cada entrada el nombre del archivo o subdirectorio ' un puntero Bnmero de nodoRiC a la estructura de datos BnodoRiC donde se almacenan los atributos del archivo. Esta organi*acin precisa de un acceso m/s a disco para copiar el nodoRi a memoria principal. Entre las implementaciones m/s comunes de directorios se encuentran: .irectorios con entradas de igual tama?o. En cada entrada se almacenan las in&ormaciones asociadas al archivo ' a continuacin el nombre del archivo. Es sencilla de gestionar pero para dar soporte de nombres largos cada entrada debe tener ese m/+imoG lo 8ue supone un derroche de espacio. .irectorios con entradas de tama?o variable. $rimero se almacena el tama?o 8ue ocupa la entradaG a continuacin la in&ormacin asociada a la entrada Batributos o nodoRi ' &inalmente el nombre de archivo Bhasta un cierto tama?oC al 8ue se le a?ade un car/cter especial para marcar el &inal del nombre. !ada entrada se rellena para 8ue coincida con un entero positivo de palabras de memoria principal. !omo m/+imo se despercicia casi una palabra. !uando se eliminan entradas 8uedan huecos de longitud variableG generando &ragmentacin e+terna 8ue puede precisar de una compactacin del directorio. .irectorios con entradas de igual tama?o y montculo &heap' para almacenar los nombres de los archivos. Se almacena un puntero al comien*o del nombre de archivo dentro de l mont3culo ' sus atributos o nodoRi. Elimina la &ragmentacin e+terna ' no es necesario incluir caracteres de rellenoG pero es de administracin m/s complicada al tener 8ue gestionarse el mont3culo.

Otro aspecto a considerar est/ relacionado con la &orma en 8ue se reali*a la bs8ueda de un archivo en un directorioG por ejemploG buscando las entradas una a una. $ara ahorrar tiempo se puede mantener una cache de directorios con las entradas recientemente accedidas o implementar cada directorio con una tabla hash ' su lista de archvos ' subdirectorios. !uando se desea reali*ar una bs8ueda se introduce el nombre en la &uncin hash 8ue devolver/ 8u< entrada de la tabla ha' 8ue leer. Si la entrada est/ vac3aG el archivo no e+iste. $ara evitar las colisiones cada entrada se puede implementar como una lista enla*ada.
Consistencia

$ara veri&icar la consistencia del sistema de archivos se suele incluir en los sistemas operativos un verificador de consistencia. las inconsistencias m/s &recuentes 8ue pueden presentarse en el sistema de archivos son: 7n blo8ue no aparece en la lista de blo8ues libres ni est/ asignado a ningn archivo. Se soluciona a?adiendo el blo8ue a la lista de blo8ues libres.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

7!

7n blo8ue &igura en la lista de blo8ues libres ' tambi<n est/ asignado a un archivo. Se elimina el blo8ue de la lista de blo8ues libres. 7n blo8ue &igura varias veces en la lista de blo8ues libres. Solo aparece si se implementa mediante lista enla*ada de blo8ues libres ' se soluciona reconstru'endo la lista. 7n blo8ue est/ asignado a ) archivosG siendo ) ] . Es la peor situacin ' puede solucionarse copiado ese blo8ue a ) R blo8ues libres. Se recupera la consistenciaG pero probablemente despu<s e+istan ) R archivos con errores.

$ara evitar el uso de veri&icadores los sistemas de archivos modernos B)T.SG e+t%G E.SPC implementan la t<cnica del registro diario o journalingG 8ue consiste en almacenar un in&orme de las operaciones a reali*ar antes de hacerlas ' eliminar el in&orme una ve* reali*adas con <+ito. Si al reiniciar el sistema el in&orme sigue e+isistendo signi&ica 8ue ha e+isitido un error ' vuelve a repetirse las operaciones pendientes para dejar el sistema de archivos en un estado consistente.

2ecuperacin de archivos
Copias de seguridad

E+isten dos tipos de copias de seguridad: $opia de seguridad lgica. Onicamente contiene los directorios ' archivos 8ue el administrador o el usuario desea copiar al medio de respaldo. $ermite acceder a los contenidos de &orma individuali*ada. Estas copias pueden ser de tres tipos: $opia completaG con todos los archivos seleccionados. $opia diferencialG nicamente los archivos nuevos o modi&icados desde la ltima completa determinada. $opia incrementalG nicamente los archivos creados o modi&icados desde la ltima completa o incremental. $opia de seguridad fsica. Tambi<n conocida como imagen de disco. !onsiste en copiar blo8ue a blo8ue la particin de disco. Son m/s simples de reali*ar pero re8uieren montar la imagen para iniciar la recuperacin.

)nstantneas

^.SG de SolarisG utili*a la t<cnica de copiar al escribirG cop'RonR6rite. En esta t<cnica si el sistema operativo precisa modi&icar el contenido de un blo8ue en el disco se locali*a un blo8ue libre ' se copia el contenido modi&icado en ese blo8ueG modi&icando los punteros para 8ue apunten a ese nuevo blo8ue. El sistema agrupa las modi&icaciones ' las reali*a cada cierto tiempo Bvalor t3pico #2 segundosC. !ada modi&icacin se eti8ueta con un nmero de versin di&erente. La vers3n actual coe+iste con versiones anteriores del sistema de archivos. !ada nueva versin se denomina instant#nea &snapshot'. !ada instantanea puede montarse como un archivo de solo lectura para reacuperar datos individualmente o en modo de escritura para restaurar el sistema completo a un estado anterior. Las instant/neas no son una copia de seguridad. Las di&erencias &undamentales son: Las instant/neas se toman de &orma pr/cticamente inmediata ' no ocupan espacio en el momento de su creacin. Slo se re8uiere cambiar el nmero de versin actual. Las instant/neas pueden ser restauradas con gran rapide*. Tan solo es necesario volver a montar el sistema de archivos a partir de la versin anterior.

7"

Captulo 9. -estin de arc0ivos

Las instant/neas residen en el mismo disco &3sico 8ue los datos 8ue respaldanG por lo 8ue no son e&icaces &rente a da?os &3sicos en el disco ' deben complementarse con algn m<todo de copia de seguridad.

E%iciencia
La e&iciencia del sistema aumenta notablemente si se reduce al m3nimo imprescindible el nmero de accesos de EDS a disco. $ara lograr ese objetivo algunos sistemas operativos implementan en memoria principal una cach< de blo8ues de disco. $ara mejorar la tasa de aciertos de cach< se utili*a la estrategia de lectura por adelantado de blo8uesG 8ue consiste en copiar en la cach< no solo el blo8ue 8ue ha dado el &allo sino varios blo8ues cont3guos a <ste. Tambi<n puede intentarse 8ue los accesos a disco consuman poco tiempoG por ejemplo almacenando en el mismo cilindro los blo8ues a los 8ue se espera acceder de &orma secuencial. En sistemas con nodoRi ser3a conveniente 8ue <stos estuvieran lo m/s cerca posible de los blo8ues de datos del archivoG por lo 8ue el mejor sitio para almacenarlos ser3a la *ona central del disco. Otro aspecto a considerar es el tama?o de blo8ue de discoG en un compromiso entre un blo8ue pe8ue?o 8ue reduce la &ragmentacin interna pero aumenta el nmero de accesos o un blo8ue grande 8ue desaprovecha espacio pero con menor nmero de accesos. 5istintas pruebas demuestran 8ue un tama?o ptimo de blo8ue est/ en unos pocos _iA.

Apuntes por Demetrio Quirs Fundamentos bsicos de los Sistemas Operativos

7#