Programación: Procesos y Semáforos

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,56 KB

Ejecucion: El proceso se esta ejecutado en la cpu
listo o preparado : El proceso dispone de todos los recursos para su ejecución, solo falta la cpu
bloqueado : Al proceso le falta algún recurso para poder seguir ejecutándose

·define n 5 /* numero de filosofos
void philosopher (int i) /* numero de filosofos de 0 a 4 */
{
while (true) {
think () /* el filosofo esta pensando*/
take_ stick (i) /* tomar palillo izqquierdo*/
take stick ((i+1) % n ) /tomar palillo , % operador residuo*/

eat () i /* delicioso arroz*/
put_stick (i) /*poner stick izq otra ves en la mesa*/
put _stick ((i+1 % n) /* poner stick derecho eotra ves ebla mesa*/

Un semáforo es una variable especial
protegida (o tipo abstracto de datos) que constituye el
método clásico para restringir o permitir el acceso a
recursos compartidos (por ejemplo, un recurso de
almacenamiento) en un entorno de multiprocesamiento. Fueron
inventados por Edsger Dijkstra y se usaron por primera vez
en el sistema operativo THEOS.


los dispositivos de E/S se pueden clasificar
en dos grandes categorías:

* Dispositivos de bloque.
* Dispositivos de caracter.

Las principales características de los dispositivos de
bloque son:

* La información se almacena en bloques de tamaño fijo.
* Cada bloque tiene su propia dirección.
* Los tamaños más comunes de los bloques van desde los
128 bytes hasta los 1.024 bytes.
* Se puede leer o escribir en un bloque de forma
independiente de los demás, en cualquier momento.
* Un ejemplo típico de dispositivos de bloque son los
discos.

Las principales características de los dispositivos de
caracter son:

* La información se transfiere como un flujo de
caracteres, sin sujetarse a una estructura de bloques.
* No se pueden utilizar direcciones.
* No tienen una operación de búsqueda.
* Un ejemplos típico de dispositivos de caracter son
las impresoras de línea, terminales, interfaces de una red,
ratones, etc


Productor


Consumidor

producir(mensajeP);

P(vacío);

P(mutexprod);

buffer[cabeza] = mensajeP;

cabeza = (cabeza + 1) mod n;

V(mutexprod);

V(lleno);


P(lleno);

P(mutexcons);

mensajeC = buffer[cola];

cola = (cola + 1) mod n;

V(mutexcons);

V(vacío);

consumir(mensajeC);
Volver al índice .

Entradas relacionadas: