Soas

Solo disponible en BuenasTareas
  • Páginas : 5 (1166 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de septiembre de 2012
Leer documento completo
Vista previa del texto
Un sistema operativo multiprogramado es un caso particular de sistema
concurrente2 donde los procesos compiten por el acceso a los recursos compartidos
o cooperan dentro de una misma aplicación para comunicar información. Ambas
situaciones son tratadas por el sistema operativo mediante mecanismos de
sincronización que permiten el acceso exclusivo de forma coordinada a los recursos
y a loselementos de comunicación compartidos.
Según el modelo de sistema operativo descrito anteriormente, basado en colas de procesos y transiciones de estados, los procesos abandonan la CPU para pasar a estado bloqueado cuando requieren el acceso a algún dispositivo, generalmente en una operación de E/S, pasando a estado preparado cuando la operación ha concluido y eventualmente volver a ejecución. Lagestión de estos cambios de estado, es decir, los cambios de contexto, es un ejemplo de sección crítica de código dentro del sistema operativo que debe ser ejecutada por éste en exclusión mutua. Otros ejemplos de código que debe protegerse como sección crítica incluyen la programación de los dispositivos de E/S y el acceso a estructuras de datos y buffers compartidos.
El concepto de comunicaciónes algo más general y supone la existencia de algún mecanismo de sincronización subyacente. Dentro del sistema operativo3, el espacio de direcciones es único, por lo que la comunicación se puede resolver mediante el uso de variables en memoria compartida. Como contrapartida a la agilidad de este esquema, es necesario utilizar mecanismos de sincronización explícitos para garantizar acceso exclusivoa las variables compartidas y evitar condiciones de carrera. Puede producirse una condición de carrera sobre una variable cuando varios procesos acceden concurrentemente a la variable para actualizarla. Considérese por ejemplo una variable contador, cuenta, que controla el número de elementos en un buffer FIFO compartido. Los procesos incrementan cuenta cuando añaden un
elemento al buffer, deacuerdo al código de la Figura 2.4. Si dos procesos accediesen a
la variable cuenta concurrentemente, ambos podrían obtener un mismo valor i, y
ambos calcularían i+1 como nuevo valor a asignar a cuenta. Obsérvese que uno de los
elementos añadidos al buffer se pierde. En general, toda secuencia de código que
implica operaciones de consulta y modificación sobre elementos compartidos, como
es elcaso del código de la Figura 2.4, es susceptible de provocar condiciones de
carrera y debe ser protegida como sección crítica. …
R <- cuenta;
buffer[R] <- elemento;
R <- R+1;
cuenta <- R;

Figura 2.4. Código para añadir un elemento a un buffer FIFO (en términos de instrucciones
de lenguaje máquina).
El ejemplo anterior de acceso a un buffer compartido se puede generalizar pormedio
de un esquema de comunicación más elaborado, como es el caso del productor consumidor.
En el esquema productor-consumidor, los procesos productores
producen elementos de información que se almacenan en un buffer compartido
hasta ser retirados por los procesos consumidores. Si el buffer está vacío, los
consumidores esperan; si está lleno, esperan los productores hasta que se libereespacio. Debe garantizarse la gestión consistente de los elementos, como en el
ejemplo de la Figura 2.4, y de las condiciones de buffer vacío y buffer lleno. El
esquema productor-consumidor es muy habitual en un sistema operativo. El
esquema cliente-servidor es un caso particular del productor-consumidor donde los
procesos clientes producen peticiones que son consumidas por un proceso servidor.
Unsistema operativo con estructura cliente-servidor resulta atractivo por la claridad
de su diseño. Cuando los procesos que se comunican mediante estos esquemas no
comparten el espacio de direcciones, lo que sucede en particular en sistemas basados
en micronúcleo, se habla de un modelo de comunicación por paso de mensajes, que,
al gestionar implícitamente la sincronización, simplifica la...
tracking img