Un sistema concurrente consta de 3 procesos que utilizan un recurso compartido R de manera no prioritaria y mutuamente excluyente. Los procesos tienen prioridades únicas en el rango 1…..3, siendo 3 la prioridad más alta. Es necesario sincronizar los procesos de modo que el recurso siempre se asigne al solicitante de mayor prioridad. El pseudocódigo del sistema es el siguiente.
Shared Data mutex:semaphore = 1:/* initialized to 1*/ process[3]:semaphore = 0; /*all initialized to 0 */ R_requested [3]:boolean = false; /*all initialized to false */ busy: boolean = false; /*initialized to false */
Code for processes begin process my-priority:integer; my-priority:=____; /*in the range 1...3*/ repeat request_R(my-priority); P (proceed [my-priority]); {use shared resource R} release_R (my-priority); forever end process;
Procedures procedure request_R(priority); P(mutex); if busy = true then R_requested [priority]:=true; else begin V(proceed [priority]); busy:=true; end V(mutex);
Proporcione el pseudocódigo para el procedimiento release_R .
Respuesta:
Explicación:
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA