SISTEMASOPERATIVOS PREGUNTASFRECUENTES 1. ¿ Qué es un sistema operativo ?

Anuncio
SISTEMASOPERATIVOS PREGUNTASFRECUENTES
1. ¿ Qué es un sistema operativo ?
Un sistema operativo es un programa que actúa como interfaz entre el usuario del ordenador y los
componentes físicos (hardware) del mismo. Su objetivo principal es facilitar el uso del sistema informático
empleando el hardware en forma eficiente.
2. ¿ Qué es un sistema informático ?
Un sistema informático se define como las relaciones entre los medios (equipo, hardware), los datos y la
información necesaria en la toma de decisiones desde el punto de vista de un sistema integrado.
3. ¿ Qué relación encuentra entre las dos preguntas anteriores ?
El sistema operativo forma parte del sistema informático que está compuesto por: Hardware (C.P.U. memoria,
E/S), Sistema operativo, Programas de aplicación y usuarios y actúa como gestor de los recursos del sistema
informático.
4. ¿ Qué puede comentar acerca de un interfaz entre hardware y usuario, como por ejemplo
ventajas/desventajas ?
Un sistema operativo actúa como interfaz entre hard y usuario. Este interfaz será más eficiente cuanto más
fácil sea de manejar y viceversa.
El rango y la extensión de los servicios proporcionados por un S.O. depende de varios factores. Entre otras
cosas: las funciones visibles al usuario de un S.O. están en gran medida determinadas por las necesidades y
características del entorno objetivo que el S.O. está destinado a soportar. Por ejemplo, un S.O. destinado al
desarrollo de programas en un entorno interactivo puede tener un conjunto diferente de llamadas y ordenes
que el S.O. diseñado para soporte en tiempo de ejecución de una aplicación de tiempo real dedicada, tal como
el control del motor de un coche.
Cuanto más eficiente sea el interfaz más recursos necesitará y viceversa.
5. A este nivel, ¿ puede contestar nuevamente la pregunta 1 indicando que hace un Sistema Operativo y
como lo hace ?
El sistema operativo es una especie de gobierno. Los recursos básicos de un sistema informático son el
hardware, el software y los datos. El S.O. facilita los medios para el uso adecuado de estos recursos durante la
operación del sistema creando un entorno en el que otros programas puedan realizar un trabajo útil. Es posible
también considerar el sistema operativo como un asignador de recursos (gestor) de forma tal que los asigna a
los usuarios y a los programas para que estos realicen su tarea evitando conflictos entre recursos compartidos
y haciendo un control eficiente en la compartición de los mismos.
6. ¿ Que elementos componen el hardware y que características poseen cada uno de ellos ?
El hardware es un conjunto de dispositivos eléctricos y algunos mecánicos. Se compone principalmente de:
* C.P.U. : microprocesador. Sus funciones principales son:
1
a) Controlar y supervisar el sistema integral del ordenador en base a un programa almacenado en la memoria
principal.
b) Desarrollar operaciones lógicas que sean necesarias para procesar las demás y controlar la secuencia. La
ejecución de las instrucciones.
c) Controlar el envío y recepción de datos de todas las unidades periféricas a la unidad de memoria.
En función de la cantidad de instrucciones que puede descodificar la C.P.U. se dividen en:
a) CISC: tiene un gran conjunto de instrucciones.
b) RISC: tiene un conjunto regular de instrucciones.
* MEMORIA: dispositivos que permiten almacenar un conjunto de instrucciones. Dos clases principales:
a) RAM memoria de lectura/escritura. Son de acceso aleatorio, lentas y volátil.
b) ROM solo lectura. De acceso aleatorio y permanentes
* Dispositivos de E/S: Son una serie de dispositivos que permiten al ordenador comunicarse con el exterior.
Los principales son:
a) Teclados.
b) Displays.
c) Discos: flexibles, duros...
d) Impresoras.
e) Comunicaciones.
7. Indique las diferencias que existen entre cada uno de los siguientes programas, qué soporte del
sistema informático necesitan y cuál es su objetivo: compiladores, assemblers, sistema operativo,
comandos de sistema operativo, editores, controladores de dispositivos, rutinas de entrada salida
dependientes del hardware (p.e. BIOS), prácticas de Sistemas Operativos.
Compiladores: son lenguajes de alto nivel, a diferencia de los assemblers que son lenguajes intermedios. Se
usa un lenguaje inteligible orientado al problema en vez de orientado a la máquina. Permite pasar un lenguaje
escrito en lenguaje de alto nivel, a lenguaje máquina. Los compiladores requieren que el programa sea
introducido de una vez en su totalidad y producen el diagnóstico de errores, si los hay, al finalizar el proceso
de traducción, la modificación de una sola instrucción requiere reiniciar de nuevo toda la traducción ( proceso
batch ). El compilador traduce una instrucción a muchas.
Assemblers: es el nivel más bajo de los lenguajes simbólicos. El programador utiliza códigos o nombres
simbólicos para designar las operaciones que ha de realizar el ordenador. El traductor ensambla los códigos
simbólicos y los traduce al lenguaje máquina, su codificación está muy ligada a la estructura de la C.P.U. El
ensamblador traduce una instrucción a otra.
Sistema operativo: es un programa que permite que podamos trabajar de forma eficiente con un sistema
informático. Es un programa como cualquier otro pero con funciones específicas.
2
Editores: programa que permite que podamos escribir y modificar de forma interactiva otros programas.
Controladores de dispositivos: las unidades de entrada / salida, por lo general, consta de una componente
mecánica y de otra electrónica. A menudo es posible separar las dos porciones para ofrecer un diseño más
modular y general. La componente electrónica se denomina controlador del dispositivo o adaptador. El
sistema operativo casi siempre habla con el controlador, no con el dispositivo. El interfaz entre el controlador
y el dispositivo es con frecuencia un interfaz de muy bajo nivel.
Rutina de E / S dependientes del hardware ( p. e. BIOS): Son pequeños programas que están en la ROM.BIOS
(sistema básico de E / S ). El usuario teclea un comando en el terminal y el S.O. carga el programa solicitado
del disco en la memoria y lo ejecuta. Cuando el proceso termina, el S.O. teclea un carácter la solicitud de
entrada en un terminal y después espera un comando del terminal para cargar otro proceso escribiendo encima
del primero.
8. ¿ Puede dar una analogía entre Sistema operativo y Gobierno ?
La función del Sistema operativo es la de preparar y organizar un entorno para que el uso del hardware sea lo
más eficiente posible, si sustituimos el Sistema Operativo por el Gobierno y el hardware por la sociedad
obtendremos que el gobierno se encarga de crear un entorno para que cada uno de nosotros nos encontremos
lo mejor posible, es decir, tienen una finalidad semejante aplicada a campos diferentes.
9. ¿ En base a qué idea se puede considerar el Sistema Operativo como un Administrador de recursos ?
El Sistema operativo se dice que actúa como un asignador de Recursos porque se encarga de asignar a cada
uno de los recursos (hardware y software) cada uno de los programas y usuarios específicos, según las
necesidades para que realicen sus tareas lo mejor posible el Sistema Operativo se encarga de recoger cada una
de las solicitudes de recursos y asignar cada solicitud a cada recurso de manera que el Sistema Informático
funcione de manera eficiente.
10. ¿ En base a que idea se puede considerar el Sistema Operativo como un Programa de Control ?
Además de ser (Sistema Operativo) un Asignador de Recursos es también un programa de control porque el
Sistema Operativo no sólo se tiene que encargar del propio ordenador sino también de los dispositivos de E/S,
es decir, el Sistema tiene que controlar la ejecución de los programas de usuario para evitar errores y el uso
inadecuado del ordenador, principalmente las operaciones y dispositivos de E/S.
11. ¿ Defina un Sistema Operativo por el trabajo que realiza ?
El trabajo principal de un Sistema Operativo es ejecutar los programas de usuario y resolver todas sus dudas,
para ello utiliza el hardware y el software.
12. ¿ Defina un Sistema Operativo por lo que es ?
Es un programa que actúa como una interfaz entre el usuario de un ordenador y el hardware del mismo,
ofreciendo el entorno necesario para que el usuario pueda ejecutar programas.
13. ¿ Donde aplicaría el termino eficiencia en las respuestas de las preguntas anteriores ?
En el trabajo que realiza un Sistema Operativo.
14. En 2 minutos realice una descripción de los primeros sistemas hasta llegar a un sistema con
programa Monitor.
3
Inicialmente, lo único que existía era el hardware del ordenador. El programador escribía un programa y lo
ejecutaba directamente desde la consola. A medida que se ejecutaba el programa, el programador / operador
seguía su ejecución por medio de los pilotos de la consola. Un aspecto importante de este entorno era su
naturaleza directamente interactiva. El programador era el operador. La mayoría de los sistemas utilizaban un
método de reservas por solicitud. Con el tiempo el hardware y el software se fueron perfeccionando.
Aparecieron los primeros lectores de tarjeta, impresoras de línea y cintas magnéticas. Se diseñaron
ensambladores, cargadores y enlazadores para facilitar la tarea de programación . Se crearon librerías de
funciones corrientes que podían ser copiadas en programas nuevos sin tener que volver a ser escritas. Las
rutinas que realizaban entradas y salidas eran especialmente importantes esta se llama controlador del
dispositivo. Un controlador de dispositivo sabe cómo utilizar los buffers, indicadores, registros, bits de control
y bits de estado de un dispositivo dado. Más tarde aparecieron compiladores para Fortran, Cobol y otros
lenguajes, haciendo mucho más sencilla la programación, pero más compleja la operación del ordenador. La
ejecución de un trabajo podía implicar un tiempo de preparación considerable. Cada trabajo estaba formado
por muchos pasos independientes: carga de la cinta con el compilador de Fortran, ejecución del compilador,
descarga de la cinta con el compilador, carga de la cinta con el ensamblador, ejecución del ensamblador,
descarga de la cinta del ensamblador, carga del programa objeto y ejecución del programa objeto. Si se
producía un error en cualquiera de los pasos quizá había que empezar de nuevo desde el principio. Cada paso
podía implicar la carga y descarga de cintas magnéticas, cintas de papel y/o tarjetas. El tiempo de preparación
de la tarea era un problema real. La solución fue doble. En primer lugar, se contrataron operadores de
ordenador profesionales. Tan pronto como se acababa un trabajo, un operador podía iniciar el siguiente. Como
un operador tenía más experiencia en el montaje de cintas que un programador, el tiempo de preparación se
redujo.
El segundo ahorro de tiempo fue debido a la reducción del tiempo de preparación. Los trabajos con
necesidades similares se incluyeron en lotes y se ejecutaban en el ordenador como un grupo.
Estos cambios, que llevaron al operador a clasificar a los usuarios y a agruparlos en lotes de trabajos similares,
mejoraron bastante la productividad. Pero aún había problemas. Por ejemplo cuando un trabajo se detenía, los
operadores tenían que darse cuenta observando la consola, determinar por qué se había detenido la ejecución
del programa, realizar un volcado si era necesario, cargar la lectora de tarjetas o de cinta de papel con el
trabajo siguiente y poner de nuevo en marcha el ordenador. Durante esta transición de un trabajo al siguiente,
la C.P.U. permanecía inactiva. Para eliminar este tiempo de inactividad se introdujo el secuenciamiento
automático de trabajos y con él se crearon los primeros y rudimentarios sistemas operativos. Lo que se
deseaba era un procedimiento para la transferencia automática del control de un trabajo al siguiente. Con este
propósito se creó un pequeño programa, llamado monitor residente. El monitor residente secuenciaba
automáticamente en programa tras otro y un trabajo tras otro.
15. ¿ Cuándo no existía el programa Monitor cuáles eran los problemas a solucionar ?
El tiempo de preparación de una tarea era un problema a solucionar. En una máquina con un costo muy
elevado y en el cual pasaba cerca del 87 % de tiempo desocupada no era rentable, por lo que se debía
maximizar la cuota de empleo. Esto implicó una doble solución: contar con operadores profesionales y
agrupar los trabajos por lotes. Si bien esto solucionaba en parte los problemas no era suficiente.
16. ¿ Qué es un secuenciador automático de trabajos y cual es su función ?
En el caso anterior los trabajos divididos por lotes existía un tiempo entre dos trabajos consecutivos que podía
ser utilizado. Con el objetivo de aprovechar este tiempo se crearon los primeros 'tiempo de las cavernas'
sistemas operativos cuya función principal era secuenciar sin intervención del operador los programas de un
lote. La forma de hacerlo era un pequeño programa llamado 'monitor residente' porque residía en memoria.
Inicialmente, el control pasaba al monitor quien lo transfería al programa de usuario. Cuando el programa
acababa, devolvía el control al monitor, que continuaba con el siguiente, y así sucesivamente el monitor
4
'secuenciaba' los trabajos.
17. ¿ Encuentra relación entre la pregunta anterior y el termino de Monitor Residente ?
El secuenciamiento de trabajos automático y el Monitor Residente es lo mismo, el Monitor Residente es una
especie de Sistema Operativo que estaba siempre en memoria, cuando encendíamos el ordenador el control de
este lo tenía el Monitor que se encargaba de buscar el primer trabajo y ejecutarlo, una vez terminado el trabajo
se le volvía a pasar el control y otra vez se volvía a ejecutar el siguiente trabajo; antes de ejecutar cualquier
trabajo el Monitor recibía una breve descripción de los programas que tenía que ejecutar y los datos que le
acompañaban, esto y además una tarjeta de control que le indicaban que programa tenía que ejecutar.
18. ¿ Qué partes puede enumerar de las que componen un Monitor Residente ?
Una de las partes más importantes del Monitor es el interprete de tarjetas, sin este interprete no existiría orden
al ejecutarse un programa, otra parte importante es el cargador ya que se encarga de cargar el trabajo que le
viene a continuación en la memoria para poder ejecutarlo, y tanto como el cargador como el interprete
necesitan realizar llamadas a E / S por lo tanto el Monitor también necesitará un conjunto de controladores
para los dispositivos de E / S.
19. ¿ Qué problemas seguían existiendo a pesar del Monitor Residente ?
El problema que seguia existiendo es que la C.P.U. permanecia inactiva demasiado tiempo debido a que los
dispositivos de E/S son muy lento en comparación con los dispositivos electronicos.
20. ¿ Qué implica la operación off−line, que ventajas y que desventajas incluye ?
En lugar de que la C.P.U. leyera directamente de las tarjetas estas primero se copiaban a una cinta magnética
(la cinta magnética era ás rápida que las tarjetas ), cuando la cinta se llenaba lo suficiente, se desmontaba y se
llevaba al computador. De forma parecida, la salida se escribia en la cinta y el contenido de esta se imprimía
más tarde, los lectores de tarjetas y las impresoras de líneas se operaban fuera de línea off−line, no lo hacía el
computador principal.
La principal ventaja era que el computador ya no estaba restringido a la velocidad de los lectores de taretas o
las impresoras de líneas mucho más lentos que las unidades de cinta magnética, la verdadera mejora fue la
posibilidad de usar varios sistemas lector−cinta y cinta−impresora con una misma C.P.U.
La desventaja es que hay un mayor retardo, es razonable para los sistemas de procesamiento por lotes, pues se
pueden agrupar varios trabajos semejantes.
21. ¿ En este momento puede definir que es independencia de dispositivos de Entrada / Salida ? ¿ Puede
mencionar un S.O. que cumpla esta premisa ?
La capacidad para ejecutar un programa con dispositivos de entrada salida diferentes se llama
INDEPENDENCIA DE DISPOSITIVOS.
La independencia de dispositivos es posible haciendo que el S.O. determine que dispositivo utiliza un
programa cuando necesita E / S. Los programas se escriben para utilizar dispositivos de Entrada / Salida
lógicas. Las tarjetas de control u otros comandos indican como deben asignarse los dispositivos lógicos a los
dispositivos físicos.
22. ¿ Qué implica el Buffering, que ventajas y qué desventajas presenta ?
5
Es una solución a la lentitud de los dispositivos de Entrada / Salida. Este trata de mantener permanentemente
ocupados tanto la C.P.U. como los dispositivos de E / S. La idea es sencilla, una vez se han leído los datos y
que la C.P.U. ha de iniciar la operación con ellos, el dispositivo de entrada es instruido para iniciar
inmediatamente la siguiente lectura. La C.P.U. y el dispositivo de entrada permanecen ocupados. Con suerte,
cuando la C.P.U. esté libre para el siguiente grupo de datos, el dispositivo de entrada habrá acabado de leerlos.
En la práctica pocas veces el buffering mantiene ocupados todo el tiempo la C.P.U. y los dispositivos de
Entrada / Salida.
Desventajas: El Buffering es complicado y resulta difícil de programar. Uno de los problemas reside en
detectar tan pronto como sea posible que un dispositivo de E/ S ha acabado una operación.
23. ¿ El Buffering reemplaza a la operación off−line o pueden coexistir ? ¿ Como ?
No no la reemplaza y pueden coexistir aplicando el Buffering a la cinta en lugar de al lector de tarjetas o la
impresora de líneas, puesto que las unidades de cinta, pese a ser más rápidas que éstos, siguen siendo mucho
más lentas que la C.P.U.
24. ¿ Para que sirve una interrupción ? ¿Es un método hardware o software ? ¿ Puede controlarlas el
usuario ? ¿ Cómo ? ¿ Qué tipo de interrupciones conoce ? ...
Sirve para que las operaciones de E/S y de la C.P.U. puedan superponerse es un mecanismo que permite la
desincronización y la resincronización de la operación y así evitar que la C.P.U. permanezca inactiva
demasiado tiempo, o omitamos parte de la entrada.
Cuando se interrumpe la C.P.U. esta abandona lo que estaba haciendo y transfiere de inmediato la ejecución a
una posición fija, la cual generalmente contiene la dirección de inicio donde se encuentra la rutina de
procesamiento de la interrupción, esta transfiere los datos del buffer local del controlador del dispositivo a la
memoría principal, una vez lograda la transferencia la C.P.U. puede continuar.
25. Sea una C.P.U. y una impresora, ¿como traducirias los siguientes dialogos?.
A: C.P.U.: imprimeme estos 10 caracteres.
imp: bueno, esperate...
C.P.U.: ¿terminaste?..¿terminaste?...¿terminaste?
Interrupcion por encuesta sin numero de interrupcion(la C.P.U. pregunta y pierdetiempo preguntando si
termino el dispositivo de E/S la tarea recomendada).
B: C.P.U.: imprimeme estos 10 caracteres y avisame..
imp: bueno. Te acordaras que soy 007?
C.P.U.: si, me voy a hacer un calculo super extra.
mientras la C.P.U. esta haciendo el cse suena el
timbre de interupcion...
Sit i: C.P.U. por el nivel de timbre int es la improra
6
Que ha terminado.....
Interrupcion autovectorizada: la direccion de la rutina de atencion la saca del nivel de interrupcion con la cual
la impresora ha interrumpido (por ejemplo: tres lineas fisicas de int. −>8 niveles, existe una tabla con 8
vectores (0..7) y en cada vector existe la direccion de la rutina de atencion para la int. De este nivel donde la
C.P.U. obtiene sgun el nivel de direc. De la rutina de atencion).
Sit ii: C.P.U. : hola, quien es?
imp: soy 007!
C.P.U.: super, ya te atiendo −y se va a en...
Interupcion vectorizada: el dispositivo de e/s le comunica a la C.P.U. cual es el vector de su rutina de
atencion. Ventajas contra las anteriores: todos los disp. Entran por solo una linea de int. Desventajas:
dispositivos pseudo−inteligentes (establecen dialogo con la C.P.U. y le comunica el nº de vector.
27. ¿ Qué diferencia hay entre las interrupciones que son enmascarales y las que no lo son ?
Las interrupciones no enmascarables se realizan justo en el momento en que se declaran y las enmascarables
no.
28. ¿Puede definir que es un controlador DMA, que hace y como lo hace ?.
Un ctr. DMA es un coprocesador que realiza transferencias a memoria no por unidades de informacion (b,w
lw) sino por bloques de estas sin intervencion de la C.P.U. Solo se genera una interupcon por bloque en lugar
de una int. Por unidad. An te una transferencia el dispositivo interrumpe a la C.P.U. que controla los errores
de las transferencias anteriores selecciona un buffer vacio, carga los registros del disp. DMA e instruye al
controlador que realice la e/s desde/hacia el buffer indicado. La siguiente int. Indica que bloque se ha
tranferido o que se ha producido un error.
29. Hablando de buffering, ¿ En qué casos realmente presenta sólo una mejora en la eficiencia del
sistema informático ?
Si las velocidades de promedio de la UCP y los dispositivos de E/S son las mismas, el almacenamiento
temporal con buffers permite a la C.P.U. adelantarse o retrasarse ligeramente respecto a los dispositivos de
E/S, funcionando ambos a toda vekocidad. Si la C.P.U. fuese mucho más rápida el uso de buffers tiene poca
utilidad.
30. ¿Qué implica el Spooling, qué ventajas y qué desventajas presenta ?
Con la aparición de los discos las tarjetas se leen directamente del lector de tarjetas al disco. La ubicación del
contenido de las tarjetas se anota en una tabla que mantiene el sistema operativo. Cuando se ejecuta un
trabajo, el sistema operativo satisface las solicitudes de entrada en el lector de tarjetas leyendo del disco, lo
mismo ocurre con la impresora, de esta manera usamos el disco como un enorme buffer.
Tiene un efecto beneficioso sobre el rendimiento del sistema. A cambio de cambio del costo de unas cuantas
tablas y de espacio en disco.
31. ¿ El Spooling tiene algo que ver con el Buffering ? ¿ Lo reemplaza ? ¿ Y con la operación off−line ?
¿ O pueden coexistir ? ¿ Cómo ?
7
Si ambos son buffers el Spooler más grande, el buffer hace simultanea la E/S de un trabajo con los propios
calculos del trabajo, en cambio el spooler puede superponer la E/S y los calculos de varios trabajos diferentes.
Reemplaza al buffer, en cambio puede coexistir con la operación off−line.
33. ¿ Por qué se dice que aparece aquí una cola de trabajos (job pool)? En operación Off−Line los
trabajos también estaban en cola en la cinta pero no se hablaba de esto, ¿por qué?
El spooling generalmente hará que varios trabajos ya leídos permanezcan esperando en un disco, dispuestos a
ser ejecutados. Un grupo de trabajos en disco permite que el sistema operativo seleccione que trabajo
ejecutará a continuación, con vistas a incrementar la utilización de la C.P.U.. Cuando los trabajos entran
directamente desde tarjetas o incluso desde cinta magnética, no es posible saltar y ejecutar trabajos en un
orden diferente. Cuando hay varios trabajos en un dispositivo de acceso directo ce posible la planificación de
trabajos.
35. ¿ Qué es la multiprogramación ? ¿ Qué ventajas desventajas tiene ? ¿ Con que la compararía ? ¿
conoce algún sistema operativo que la posea ?
La multiprogramación aumenta la utilización de la C.P.U. organizando los trabajos de manera que esta
siempre tenga algo que hacer. El concepto es el siguiente el S.O: coge uno de los trabajos cuando este tenga
que esperar (montar una cinta, imprimir...) este coge otro trabajo de la cola de trabajos. Ventaja la C.P.U.
nunca inactiva, desventajas estos S.O. son más complejos. Se puede comparar con un abogado que no tiene
solamente un cliente, cuando tenga que esperar la recepción de algún documento p.e. el abogado puede
trabajar en otro caso.
37. ¿Que opinion tiene sobre un sist. en tiempo compartido?. En que se basa? ¿para que sirve?. ¿cual es
lo opuesto a interactivo?. ¿se usa lo opuesto?
Los sist. en tiempo compartido son son el resultado de la tentativa de obtener un funcionamiento interactivo
de un sistema informatico a un coste razonable.un sistema operativo en tiempo compartido utiliza la
Planificacion de la C.P.U. y la multiprogramacion para dotar a cada usuario de una pequeña parte del
ordenador. Lo opuesto a interractivo es batch (generalmente vax durante las noches los trabajos se ejecutan
En modo batch). Aqui el usuario envia a ejecutar un programa con sus datos y cuando el so. Tiene tiempo lo
hace pero el usuario no espera la respuesta. Este modo de ejecucion es indicado para los programas con
mucha carga de C.P.U, i poca interactividad.
39. ¿ Qué opinión le merece un sistema de tiempo real (RT) ? ¿ En que se basa ? ¿ Para qué sirve ? ¿ Un
sistema RT puede ser de tiempo compartido ? ¿Por qué ?
Un sistema RT se utiliza como sistema de control de una aplicación especializada. Unos sensores
proporcionan los datos a la C.P.U.. La C.P.U. analiza los datos. La C.P.U. analiza los datos y ajusta en lo
posible los controles para modificar las entradas del sensor. El procesamiento tiene que realizarse dentro de
los límites definidos, si no el sistema fallará. Compárese este requerimiento con un sistema en tiempo
compartido donde es deseable (pero no obligatorio) responder rápidamente, o con un sistema en batch donde
puede no haber limitaciones de tiempo en absoluto.
48. ¿ Qué significa concurrencia ? ¿ Puedes dar un ejemplo ?
Dos o más procesos son concurrentes cuando se ejecutan al mismo tiempo. Por ejemplo tenemos las
siguientes operaciones sencillas.
a:=x+y
8
b:=z+1
c:=a−b
w:=c+1
Supongamos que deseamos ejecutar alguna de estas instrucciones concurrentemente para reducir el tiempo de
ejecución. El calculo de a y b se puede realizar concurrente, mientras que c no se puede calcular hasta que
halla acabado la operación anterior.
ab
c
w
49. ¿ Como hará un dibujo para mostrar la concurrencia ?
Poniéndolas al mismo nivel en el dibujo se ejecutarán de manera concurrente.
50. ¿ Que es un grafo de precedencia ?
Es un grafo aciclico orientado cuyos nodos corresponden a sentencias individuales. Un arco que une el nodo
Si al nodo Sj significa que a sentencia Sj puede ejecutarse después de que la instrucción Si haya sido
completada.. También es una herramienta útil para definir las restricciones de proceso entre puntos de una
computación.
51. ¿ Qué son restricciones de precedencia ?
Dentro de un programa hay restricciones de precedencia, con las distintas instrucciones. El resultado de una
sentencia no podrá ejecutarse si depende del resultado de una sentencia anterior.
52. ¿ Que significa que el grafo de precedencia es aciclico y porque debe serlo ?
Pues que no puede meterse en un ciclo ya que los procesos dependen el uno del otro nunca se podrán
satisfacer. Por ejemplo imaginemos el grafo siguiente:
S1
S2
S3
S3 puede ejecutarse solamente después de que S2 haya terminado y S2 puede ejecutarse solamente después
que S2 acabe. Estas restricciones no se pueden satisfacer simultáneamente..
53. ¿ Cuales son las condiciones que se deben dar para que los procesos sean concurrentes ?
Antes definamos algunas condiciones:
R(Si)={ a1, a2, a3...an }, conjunto de lectura de Si.
9
W(Si)={ b1, b2, b3...bn }, conjunto de escritura de Si.
Para que las instrucciones sucesivas S1, S2 sean ejecutables concurrentemente sin variación de resultados
tienen que satisfacer las siguientes condiciones:
1. R(S1)"W(S2)= { }
2. W(S1)"R(S2)= { }
3. W(S1)"W(S2)= { }
Por ejemplo consideremos S1: a= x + y, S2: b=z+1. estas instrucciones pueden ejecutarse concurrentemente
por que:
R(S1)={ x, y }
R(S2)={ z }
W(S1)={ a }
W(S2)={ b }
Sin embargo S2 no puede ejecutarse concurrentemente con S3: c=a−b puesto que W(S2)"R(S3)={ b }
54. ¿ Qué es y como se utiliza la instrucción fork ?
La instrucción fork L genera las ejecuciones concurrentes en un programa, Una ejecución se inicia han la
instrucción etiquetada con L, mientras que la otra es la continuación de la ejecución en la instrucción siguiente
a la instrucción fork. Por ejemplo:
S1 S1
Fork L Fork
S2
. S2 S3
.
.
L: S3
55. ¿ Qué es y como se utiliza la instrucción Join ? ¿ Puede ir sin la variable asociada a ella count ? ¿
Escriba con la sentencia If esta instrucción ?
La instrucción join ofrece los motivos para reunir dos computaciones concurrentes en una tenemos que saber
el numero de computaciones que hay que unir, de modo que podemos terminarlas todas excepto la última. La
instrucción join tiene un parámetro para especificar el numero de computaciones a reunir ( count ). Para dos
computaciones la variable se tendrá que inicializar a 2.
10
Count:=2 S1 S2 CON LA INST. IF
Fork L1 Joint count:= count−1
. S3 if count"0 then quit
S1
goto L2
L1: S2
L2: joint count
S3
56. ¿ Siempre que hay fork existe en alguna parte el join ? ¿ Debe haber tantos join como fork en un
código ?
Si. No debe haber el mismo nº de forks y joins necesariamente.
57. ¿ Cualquier grafo de precedencia se puede representar por fork−join ? ¿ Porqué ? ¿ El siguiente
grafo se puede representar por fork−join: S1!S2, S2!S3, S3!S1 ? ¿ Porqué ?
Si, si se puede representar con fork−join. Por que la instrucción fork es similar a la instrucción goto y resulta
una estructura de difícil uso.
S1 S2 S3
No se puede representar por que es un grafo cíclico, no aciclico.
58. Escriba el código con fork− join de un proceso que lee en un archivo, dos procesos que escriben en
dos archivos diferentes en forma concurrente.
var
f,g,h, file of T;
r,s,q: T
begin
reset(f)
read(f,r)
while not eof(f) do
begin
count:=2;
11
s:=r;
q:=r;
fork L1;
write (g,s)
write(h,q)
goto L2
L1: read (f,r)
L2: join count
end
write (g,r)
write(h,r)
end;
59. ¿ Cómo se utiliza y se define la instrucción parbegin−parend ?
forma: Parbegin S1, S2; ..; Sn Parend
Cada Si es una instrucción . Todas las instrucciones insertadas entre parbegin y parend. El grafo de
precedencia sería.
Si
S1 S2 Sn
Sj
La instrucción concurrente se añade con facilidad a un lenguaje moderno de alto nivel estructurado, tiene
mucha de las ventajas de otras instrucciones de control estructuradas.
60. ¿ Que ventajas y desventajas con respecto a la instrucción fork−join ?
VENTAJAS: Que se añade con facilidad a un lenguaje moderno de alto nivel estructurado y tiene muchas de
las ventajas de otras instrucciones de control estructuradas.
DESVENTAJAS: No es lo suficientemente poderosa para como para representar todos los grafos de
precedencia posibles.
61. Escriba el código con parbegin/parent de un proceso que lee de un archivo y dos procesos que
escriben en dos archivos diferentes en forma concurrente.
var
12
f, g, h: file of T
q, r, s: T
begin
reset (F)
read(f,r)
while not eof(f) do
begin
s=r
q=r
for begin
write(g,s);
write(h,q);
read(f,r)
parent;
end;
write(g,r);
write(h,r);
end;
62. ¿Cuantos estados conoce en los que puede estar un proceso?
¿Puede estar mas de uno a la vez? ¿Como pasa de uno a otro?
¿Quien los pasa?
−Ejecución. Las instrucciones están siendo ejecutadas.
−Bloqueado: El proceso espera que se produzcan algún suceso.
−Preparado: El proceso esta esperando para ser asignado a un procesador.
−Interbloqueado(en abrazo mortal). El proceso esta esperando a que se produzcan algún suceso que nunca
tendrá lugar.
−Solo puede estar en un solo estado.
13
−Pasa de un estado a otro mediante intercepciones.
63. Relaciona estos dos conceptos: grafos de procedencia y procesos.
La computación concurrente hecho de un solo programa puede representarse por un grupo de procedencia los
procesos aparecen y desaparecen dinámicamente durante la ejecución de un único programa. Aquellos
aciclicos que se realizan secuencialmente se puede minimizar, si los contenemos en un solo proceso. Cada
nodo de un grafo de procedencia es un proceso.
64. A todo esto: ¿ qué significa proceso ? ¿cómo lo definiría?.
Un proceso es un programa en ejecucion. Un programa no es un proceso en si mismo; un programa es una
entidad pasiva mientras que un proceso es una entidad activa. La ejecucion de un proceso debe progresar de
manera secuencial. Típicamente un trabajo bach es un proceso, etc. Se puede considerar como un proceso un
programa o un trabajo en ejecución en tiempo computado.
65. ¿Por que es necesaria una jerarquía de procesos? ¿Quienes se benefician con esta jerarquía?
Cuando un proceso Pi ejecuta la instrucción FORK L, se crea un nuevo proceso Pj Pi y Pj comparten el
mismo programa. La principal diferencia es que el contador de instrucciones de Pj se ajusta a L y sus registros
de hardware interno se inicializan apropiadamente. La jerarquía de procesos muestra las relaciones entre los
distintos procesos y que clases de relaciones pueden invocarse sobre un proceso (grafo de proceso).
Un grafo de proceso es un árbol con raíz, orientado cuyos nodos corresponden a procesos. Un arco desde el
nodo Pi al nodo Pj significa que Pi creo a Pj . En este caso diremos que Pj es hijo de Pi.El grafo tiene que ser
un árbol con raíz puesto que cada proceso puede tener un padre como máximo, pero tantos hijos como cree.
66. ¿Que operaciones se pueden realizar sobre un proceso?
a) Creación de un proceso: cuando un proceso crea un nuevo proceso por medio de alguna operación la
creación (fork), son posibles varias implementaciones.
1. Ejecución;
Concurrente: El padre continua ejecutando concurrentemente con sus hijos.
Secuencial: El padre espera a que todos sus hijos han acabado.
2.Comparticion:
Completo: El padre y el hijo comparten todos las variables.
Parcial: El hijo comparte un subconjunto de variable.
b)Terminación de un proceso: Un proceso termina cuando acaba la ejecución de su ultima instrucción. Pero
hay otras circunstancias que provocan la terminación, por ejemplo un proceso puede ocasionar la terminación
de otro proceso emitiendo el comando Kill id;
Un padre puede terminar la ejecución de uno de sus hijos por divirsas razones.
1. El hijo ha excedido el uso de los recursos que le han sido asignados.
14
2.La tarea asignada al hijo ya no es precisa.
67. ¿ Respecto a la ejecución que formas conoce y que operativos adoptan cada una de estas formas ?
( ver pregunta anterior. )
68. ¿ Respecto a la computación de variables que formas conoce y que operativos conoce que utilicen
estas formas ?
COMPLETA: FORK−JOIN
PARCIAL: UNIX ( VER PREG. 66 )
69. ¿ Qué implica la terminación de un proceso ? ( ver preg. 66 )
Para determinar si un proceso ha excedido el uso de algunos de los recursos se ha de disponer de un
mecanismo que haga posible que el padre inspeccione el estado de su hijo. Muchos sistemas no permiten que
un hijo exista si su padre ha terminado.
70. ¿ Indique la diferencia entre proceso estático y dinámico ? Un proceso que no termina mientras el
sistema operativo este funcionando se llama estático; un proceso que puede terminar se llama dinámico.
71. ¿ Qué significa el problema de la sección crítica ? ¿Cuál es la analogía que puede hacer con un cruce
de calles y la sección crítica ?
Un entorno de multiprogramación y varios procesos pueden competir por un nº finito de recursos. Un proceso
solicita recurso; si estos no se encuentran disponibles en ese momento el proceso entra en un estado de espera.
Puede suceder que el proceso en espera nunca vuelva a cambiar de estado debido a que los recursos que ha
solicitado están retenidos por otros procesos.
Cada proceso tiene un segmento de código, denominado sección crítica, en que el proceso puede estar leyendo
variables comunes actualizando una tabla, escribiendo sobre un fichero, etc. La característica relevante del
sistema es que cuando un proceso está ejecutándose en su sección crítica, ningún otro proceso puede
ejecutarse en su sección crítica.
72. De la idea de procesos concurrentes productores y consumidores escriba el código de un proceso
productor y uno consumidor con buffer limitado. ¿Cómo controla el buffer ? ¿ Són necesarios los
punteros ? ¿ Cómo detecta si el buffer está vacio o lleno ? De una forma alternativa de controlar el
buffer.
Un proceso productor genera información que es utilizada por un proceso consumidor. Para que 2 procesos
productores y consumidores se ejecuten concurrentemente, tenemos que crear un pool de buffers que pueden
ser alimentados por el productor y vaciados por el consumidor. Un productor puede producir sobre un buffer
mientras que el consumidor está extrayendo del otro. El productor y el consumidor tienen que estar
sincronizados.
El problema de productor−consumidor con buffer limitado supone que hay un fijo de buffers n. En este caso
el consumidor tiene que esperar si todos los buffers se encuentran vacios, y el productor tiene que esperar si
todos los bufares se encuentran llenos. En la siguiente solución el poll de buffers compartidos se implementa
con una tabla circular con dos punteros lógicos in y out. La variable in apunta al siguiente buffer libre,
mientras que out apunta al primer buffer lleno. El pool (deposito) se encuentra vacío cuando in = out y el pool
está lleno cuando in+1 mod n = out.
15
type item=.....;
var buffer: array (0...n−1) of item
in, out: 0.. n−1
nextp, nextc: item;
in:=0;
out:=0;
parbegin
productor: begin
repeat
...
produce un item en nextp
...
while (in+1 mod n)= out do skip
buffer(in):=nextp
in:=in + 1 mod n
until false
end
Consumidor: : begin
repeat
while in=out do skip
next c:= bufer(out)
out=out + 1 mod n
....
consumo el item en nextc
until false
end
16
parend
Eliminando los punteros será así:
Declaraciones
Paregin
Productor: begin
repetir
...
produce un item en nextp
...
while counter = n do skip
buffer(in):= nextp
in:= in + 1 mod n;
counter:= counter + 1
until false
end
Consumidor: begin
repetir
while counter = 0 do skip
next:= buffer (out)
out:= out + 1 mod n
counter:= counter − 1
...
consume el item en nextc
until false
end;
parend
17
Estos si nos aseguramos que cada proceso manipula al mismo tiempo la variable counter.
73. ¿ Como mejora en código anterior para aprovechar todos los elementos del buffer ? ¿ Que
problemas adicionales trae ?
−Estableciendo un contador, para que se queden n buffers y no n−1.
− Pueden aparecer problemas, si permitimos que ambos procesos manipulen al mismo tiempo la variable
contador
74. Define el problema de la sección crítica nuevamente.
Consideramos un sistema que consta de n procesos en cooperación, cada proceso tiene un segmento de código
denominado sección crítica, en el que el proceso puede estar leyendo variables comunes, actualizando la tabla
y escribiendo un fichero, etc. La característica relevante del sistema es que cuando un proceso se está
ejecutando en su sección crítica, ningún otro proceso está autorizado a ejecutarse en su sección crítica. Así la
ejecución de secciones críticas por procesos es mutuamente excluyente en el tiempo. El problema de la
sección crítica consiste en diseñar un protocolo, que puedan utilizar los procesos para cooperar. Cada proceso
tiene que solicitar permiso para entrar en su S.C.
75. Defina que es la exclusión mutua.
Si un procedo Pi esta ejecutándose en su S.C. entonces ningún otro proceso puede estar ejecutándose en esta.
− Si en un cruce de calles esta alguien cruzando la calle nadie más podrá cruzarla hasta que el otro haya
acabado de cruzar.
76. Defina que es progresión y realice una analogía con un cruce de calles.
Si no hay ningún proceso ejecutándose en su S.C. y hay algunos procesos que desearían entrar en su S.C.
entonces solamente aquellos procesos que no están ejecutando su S.Residual pueden participar en la decisión
de cual entrará en la sección crítica acto seguido y esta selección no puede posponerse indefinidamente.
Supongamos que hay varios coches que están esperando para cruzar y tienen los intermitentes puestos y los
hay que no, sólo aquellos que tienen los intermitentes puestos tienen opción a cruzar, los otros tienen que
esperar, poner los intermitentes y luego cruzar.
77. Defina que es la espera limitada y haz una analogía con lads calles.
Tiene que haber un límite al nº de veces que otros procesos reciben autorización para entrar en sus S.C.
después de que un proceso haya realizado una solicitud para entrar en su S.C. y antes de que esa solicitud sea
satisfecha.
Si hay 4 coches en el cruce uno en cada calle no puede ser que uno cruce de izquierda a derecha y luego otra
vez de derecha a izquierda. Tiene que esperar a que los otros acaben.
78. ¿ Para tratar el problema de la S.C. como define los dos procesos intervinientes mediante
parbegin−parend y su entrada salida de la S.C. ?
−begin
declaración de variables comunes
18
parbegin
P0
P1
parend
end
repeat
entry section
S.C.
exit section
sección residual
until false
79. ¿ Que desventajas tiene el algoritmo 1 de detección de Peterson ?
Deja que dos procesos compartan una variable, Turn inicializada a a 0 (01). Si Turn= y, entonces el proceso Pi
tiene permiso para ejecutar su SC.
repeat
while turn= y do skip
S.C.
turn:= j
S. Residual
until false
No satisface el requerimiento de programación, puesto que requiere una alternancia estricta de procesos en la
ejecución de la S.C. Por ejemplo si Turn= 0 y P1 quiere entrar en su S.C, o puede hacerlo, aunque P0 pueda
encontrarse en su S.R.
80. ¿ Qué desventajas tiene el algoritmo II de Peterson ?
El problema del algoritmo Y es que no guarda el estado de cada proceso, sino solo que proceso está
autorizado para entrar a su S.C. Para remediar esto reemplazamos la variable Turn por Matriz:
var flag: array (0,1) of boolean
Los elementos de la tabla se inicializan a false. Si flag(i) es true, entonces el proceso está ejecutandose en su
S.C::
19
repeat
flag(i):= true
while flag(i) do skip
S.C:
flag(i):= false
S.R:
until false
Primero fijamos nuestro flag(i) en true, señalando que queremos entrar en nuestra S.C: comprobamos que el
otro proceso no quiere entrar en su S.C. también. En otro caso esperamos . Entonces entramos en nuestra S.C.,
al salir de la S.C: fijamos nuestro flag en false, permitiendo que otro proceso entre en su S.C. si está
esperando.
DESVENTAJAS: satisface el requerimiento de exclusión mutua, pero no se da el requerimiento de
progresión.
T0: P0 fija flag(0): true
T1: P1 fija flag(1): true
Ahora P0 y P1 se encuentran en un bucle indefinido en sus while.
81. ¿ Funciona el algoritmo IV Indique donde se satisface la exclusión mutua, la progresión y la espera
limitada ?
Si, funciona correctamente.
Los procesos comparten 2 variables:
var flag: array (0..1) of boolean
turn: 0..1
Inicialmente play (0)= flag (1)= false y el valor de TURN es indiferente (0,1).
repeat
flag(i) := true
turn := j
while (flag(j) and turn =j do skip
S.C.
flag(i):=false
20
S.R.
until false
EXCLUSION MUTUA: Cada Pi entra en su S.C. solamente si flag(j)=false o bien turn=i.
PROGRESIÓN DE ESPERA LIMITADA: Observamos que a un proceso Pi se le puede impedir solamente
entrar en la S.C. si permanece atrapado en el bucle while con la condición flag(j)=true y turn = j; este es el
único bucle si Pj no está interesado en entrar en la S.C. , entonces flag(j)= false y Pi puede entrar en la S.C. Si
PJ ha fijado flas(j)=true y también está ejecutando su instrucción while entonces o bien turn=i o bien turn=j.
Si turn=i Pi entrará en la S.C., si turn=j Pj entrará en la S.C.. No obstante una vez Pj salga de su S.C.
restaurará flag(j)=false permitiendo a Pi entrar en su S.C.
Si Pj tuviera que restaurar su flag(j) a true, también tendrá que fijar turn=i. Así puesto que Pi no cambie el
valor de la variable turn mientra esté ejecutando la instrucción while, Pi entrará en la S.C. (progresión) como
máximo una entrada después de Pj (espera limitada).
82. ¿ Cuál es la idea del algoritmo de la panadería ? ¿ Para cuantos procesos sirve? Sirve para n
procesos.
Los procesos reciben un nº de llegada. El nº más bajo pide primero. Si Pi y Pj reciben el mismo nº pasa al del
nº más bajo.
La estructura de datos más común es:
var choosing : array [ 0, n−1 ) of boolean
number: array [ 0, n−1 ) of integer
Inicialmente estas estructuras de datos están inicializadas a false y a 0 respectivamente. Por conveniencia
definimos la siguiente notación:
.(a, b ) < (c, d) si a < c o si a = y b < a
.max (A0,...An−1) es un nº K, t q K"Ai para y 0 0...n−1
repeat
choosing[i]:= true
number[i]:= max(number[0], number[1]...number[n−1]+1);
choosing[i]:=false
for j:=0 to n−1
do begin
while choosing[j] do skip
while number[j]"0 and (number[j], j )<(number[i], i) do skip
21
endL;
S.C.
number[i]:=0
S.R.
until false
83. ¿ Cuantas soluciones hardware conoce y porque son más utilizadas ? ¿ Que desventajas posee ? ¿
Que significa que son indivisibles ?
Muchas veces las maquinas ofrecen instrucciones de hardware especiales que permiten o bien modificar y
verificar el contenido de una palabra o bien intercambiar automáticamente el contenido de dos palabras. Sirve
también para resolver el problema de la S.C.
84. ¿ Cómo se utiliza el Test&Set para entrar en una S.C. ?
var
waiting: array [0..n−1] of boolean
lock: boolean
j: 0..n−1
key: boolean
repeat
waiting(i)= true ;
key:= true
while waiting[i] and key do key:= test & set (locks)
wating[i]: false
S.C.
j:= y +1 mod n
while (j "1) and (not wraiting [j]= do j:=j+1 mod n
if j=i then lock:=false
else waiting [j]:= false
S.R.
until false
22
85. ¿ Cómo utilizaría el Swap para entrar en una S.C. ?
Igual que la anterior pero con Swap.
86. ¿Qué es un semáforo ? ¿Puede ser binario o cualquier otro tipo de datos ? De las primitivas para él .
¿El semáforo es indivisible ? ¿ Porqué ?
Un semáforo S es una variable entera que aparte de la inicialización, puede ser accedida por medio de dos
operaciones indivisibles estandar P y V. Las definiciones clásicas son:
P(S): while S"0 do skip
s:=s−1
V(S): s:=s+1
La modificación del calor entero de un semáforo se ejecuta indivisiblemente y este es cuando un proceso
modifica el valor de un semáforo, ningún otro proceso puede modificar simultáneamente el valor de ese
mismo semáforo. Se utilizan en el tratamiento de la S.C. para n procesos.
87. ¿Cómo se utiliza para sincronizar procesos? ¿ Cómo soluciona los problemas del parbegin−parend ?
Consideremos dos procesos en ejecución concurrente: P1 con la instrucción S1, y P2 con la instrucción S2.
Supongamos que requerimos que S2 ejecutado únicamente después de que S1 haya terminado. Debemos de
dejar que P1 y P2 compartan un semáforo, inicializado a 0 e insertar las instrucciones
S1
V(synch)!( en el proceso P1)
P(synch)!(en el proceso P2)
S2
Puesto que synch está inicializado a cero, P2 ejecutará S1 solo después que P1 haya invocado V(synch) lo que
será después de P1.
−La instrucción parbegin−parend es tan poderosa como FORK_JOIN si le añadimos semáforos.
88. ¿ Qué problema tienen los semáforos ? ¿ Cómo lo soluciona ?
¿ En qué estado están los procesos que se duermen cuando el semáforo está en rojo?
Los procesos con semáforos sufren una espera improductiva. Esto ocurre mientras un proceso se encuentra en
su S.C. . Cualquier otro proceso que trate de entrar en su S.C. tiene que mantenerse en un bucle en el código
de entrada.
Para evitar la necesidad de espera improductiva, podemos modificar la definición de las operaciones P y V
sobre semáforos. Cuando un proceso ejecuta la operación P y encuentra que el color del semáforo no es
positivo tiene que esperar. No obstante en lugar de esperar improductivamente , el suceso puede bloquearse a
sí mismo. La operación sitúa el proceso en un estado de espera. Entonces transfiere el control al planificador
de la C.P.U., que selecciona otro proceso para ejecutar de la cola para ejecución.
23
89. ¿Qué problemas tienen los semáforos? ¿Cómo los soluciona ?
Los procesos con semáforos sufren una espera improductiva. Esto es que mientras un proceso se encuentra en
su sección critica, cualquier otro proceso que trate de entrar en su sección critica, tiene que mantenerse en el
bucle del código de entrada.
Para evitar la espera improductiva, podemos modificar la definición de las operaciones de P y V sobre
semáforos.
Cuando un proceso ejecuta la operación P y encuentra que el valor del semáforo no es positivo tiene que
esperar.
No obstante en lugar de esperar improductivamente, el proceso puede bloquearse a si mismo. La operación
sitúa al proceso en un estado de espera. Entonces transfiere el control al planificador de la C.P.U., que
selecciona otro proceso para ejecutar de la cola de ejecución.
90. De el código con semáforos para un productor y tres consumidores. ¿porque no utilizan punteros
para manejar el buffer? ¿Aquí el buffer es circular o lineal?
Type item=...;
var buffer =...;
full,empty,mutex:semaphore;
nextp,nextc,item;
turn:0..3
begin
full:=0;
empty :=n;
mutex:=1
turn=1
parbegin
producer: repeat consumer1:repeat
... While turn#1 do skip;
produce un item P(full)
.. P(mutex)
P(empty) ...
P(mutex) Seccion Critica
24
.... Turn:=turn+1
Seccion Critica ...
.... V(mutex)
V(mutex) V(full)
V(full) ...
until false consume un item
...
until false
91. De el código con semáforos para dos lectores y tres escritores.
Mutex,wrt: semáforo
Nro_lec:integer (cuenta el nº de lectores)
(si nro_lec=1 o 2 entecos wrt=0 (rojo))
(si nro_lec=0 entonces wrt=1)
ESCRITOR LECTOR
P(mutex) P(mutex)
N_esc:=nro_esc+1 nro_lec=nrolec+1
V(mutex) if nro_lec=1 or
P(wrt) nro_esc=1 then P(wrt)
excribe V(mutex)
V(wrt) leer
P(mutex) P(mutex)
n_esc:=nr_esc−1 nro_lec=nro_lec−1
V(mutex) if nro_lec=0 and
nro_esc=0 then V(wrt)
V(mutex)
92. De el código con semáforos para 3 fil.
25
#define n 3 COGER
" i (i−1) mod n until
" d (1+1) mod n p(mutex)
" pe 0 estado[i]=ha;
" ha 1 comprobar(i);
" co 2 v(mutex)
Typedef int semaf; p(s[i])
semaf mutex =1 DEJAR
semaf s[n] p(mutex)
int estado[n] estado[i]=pe
FILOSOFO I comprobar[i]
Until comprobar[d]
while(t) { v(mutex)
pensar() COMPROBAR
coger(i) if (estado[i]==ha &&
comer() estado[i]!=co &&
dejar(i) estado[d]!=co)
estado[i]=co
v(s[i])
Buffer−limitado
Lleno=0;
Vacio=n;
Mutex=1 (verde)
parbegin
productor
consumidor
26
parend
End;
Productor: cuando consumidor
Repeat vacio=0 repeat
Produce item lleno=n P(lleno)
P(vacio) ! !debe parar P(mutex)
P(mutex) sc(quito item)
Sc(añade item) V(mutex)
V(mutex) V(vacio)
V(lleno) consumo item
Until false until false
EVITACION DEL ABRAZO MORTAL
ALGORISMO DEL BANQUERO
1. Si Solicitud(i)<= Necesidad, entonces pasar a paso 2. En otro caso tenemos un error, puesto que el proceso
ha excedido de la solicitud máxima.
2. Si solicitud(i)<=Disponible, entonces pasar a paso 3. En otro caso los recursos no están disponibles y p(i)
tiene que esperar.
3. El sistema trata de asignar los recursos solicitados al proceso p(i), modificando el estado del modo
siguiente:
Disponible:=disponible−solicitud(i)
Asignado(i):=Asignado(i)+Solicitud(i);
Necesidad(i):=Necesidad(i)−Solicitud(i);
Si el estado de asignación de recursos resultante es seguro la transacción es completa y se asignan los recursos
al proceso p(i). No obstante, si le nuevo estado es inseguro, entonces p(i) tiene que esperar a Solicitud(i) y se
restaura el estado de asignación de recursos anterior.
ALGORITMO DE SEGURIDAD
1. Sean Trabajo y Acabar vectores de longitud m y n resp. Inicializamos Trabajo a Disponible y
Acabar[i]=falso.
2. Hallar un i tal que:
27
a. Acabar[ì]=falso, y
b. Necesidad(i)<=Trabajo
si no existe tal y, ir a paso 4.
3. Trabajo:=Trabajo+Asignacion(i)
Acabar[i]=cierto
ir a paso 2.
4. Si acabar[i]= cierto para toda i , entonces el sistema se encuentra en estado seguro.
DETECCIÓN DEL ABRAZO MORTAL
ALGORITMO DE DETECCIÓN
1. Sean Trabajo y Acabar vectores de longitud m y n resp. Inicializamos Trabajo a Disponible. Si
Assignacio"0 entonces Acabar[i]=falso, en otro caso Acabar[i]=cierto.
2. Hallar un índice i tal que:
a. Acabar[ì]=falso, y
b. Solicitud<=Trabajo
si no existe tal y, ir a paso 4.
3. Trabajo:=Trabajo+Asignacion(i)
Acabar[i]=cierto
ir a paso 2.
4. Si acabar[i]=falso para alguna i, entonces el sistema se encuentra en estado de abrazo mortal. Además, si
Acabar[i]=falso entonces p(i) esta en abrazo mortal.
28
Descargar