ALGORITMO DEL BANQUERO
Enviado por Fiorelly Zarate • 23 de Octubre de 2017 • Apuntes • 1.802 Palabras (8 Páginas) • 1.615 Visitas
UNIVERSIDAD NACIONAL DEL ALTIPLANO[pic 1][pic 2]
FACULTAD DE INGENIERÍA MECÁNICA ELÉCTRICA, ELECTRÓNICA Y SISTEMAS
ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS[pic 3]
TRABAJO ENCARGADO:
ALGORITMO DEL BANQUERO
Realizado por:
Leslie Fiorelly Zarate Tijera
Docente:
Ing. Mayenka Fernández Chambi
Semestre: VII Grupo: B
PUNO-2017
ALGORITMO DEL BANQUERO
- Descripción
Este algoritmo recibe el nombre de “banquero” debido a que su funcionamiento es similar a la gestión que hacen los bancos con las cuentas de crédito. Un banquero (s.o.) dispone de unos fondos (recursos) y tiene unos clientes (procesos). Cada cliente dispone de un crédito que corresponde al máximo que el banquero le prestará. El cliente irá solicitando fondos de ese crédito conforme los necesite. Si el banquero tuviese fondos suficientes para prestar el máximo a cada cliente, no habría inconvenientes. Sin embargo, esto no es así, los recursos del banquero son limitados, por lo que si todos reclaman todo su crédito no podrá satisfacerlos simultáneamente. Por lo tanto, la solución es que el banquero gestione sus fondos de manera que todos los clientes puedan llegar al máximo en algún momento, aunque no lo hagan todos al mismo tiempo.
El algoritmo fue desarrollado en el proceso de diseño del sistema operativo y descrito originalmente (en holandés) en EWD108. [1]
Cuando un nuevo proceso entra en un sistema, éste debe declarar el número máximo de instancias de cada tipo de recurso que puede reclamar jamás; Es evidente que ese número no podrá ser superior a la cantidad total de recursos en el sistema. Además, cuando un proceso obtiene todos sus recursos solicitados se debe devolver el producto en una cantidad finita de tiempo.
Estado seguro: El estado del sistema es seguro si existe una secuencia de asignaciones y liberaciones de recursos que permita a todos los procesos alcanzar en algún momento sus necesidades máximas de recursos.
- Recursos
Para el algoritmo del banquero de trabajo, lo que necesita saber tres cosas:
- Cantidad de recursos que puede solicitar un proceso [MAX]
- Cantidad de recursos que cada proceso tiene asignado actualmente [ASIGNADO/ALLOCATION]
- Cantidad de recursos disponibles que tiene el sistema [DISPONIBLE/NEED]
Los recursos pueden ser asignados a un proceso sólo si satisface las siguientes condiciones:
- Request ≤ max, si no se establece una condición de error mientras el proceso ha cruzado la máxima reclamación hecha por este mismo.
- Request ≤ available, si no el proceso tiene que esperar hasta que los recursos estén disponibles.
- Código del algoritmo del banquero en java
1 package banquero;
2
3 import java.util.Scanner;
4 public class Banquero{
5 private int need[][],allocate[][],max[][],available[][],np,nr;
6
7 private void input(){
8 Scanner sc=new Scanner(System.in);
9 System.out.print(" Escribir numero de procesos y recursos : ");
10 np=sc.nextInt(); //no. de procesos
11 nr=sc.nextInt(); //no. de recursos
12 need=new int[np][nr]; //Inicializar arrays
13 max=new int[np][nr];
14 allocate=new int[np][nr];
15 available=new int[1][nr];
16
17 System.out.println("Escriba la matriz de ALLOCATION -->");
18 for(int i=0;i<np;i++)
19 for(int j=0;j<nr;j++)
20 allocate[i][j]=sc.nextInt(); //matriz de allocation
21
22 System.out.println("Escriba la matriz de MAX -->");
23 for(int i=0;i<np;i++)
24 for(int j=0;j<nr;j++)
25 max[i][j]=sc.nextInt(); //matriz de max
26
27 System.out.println("Escriba la matriz de AVAILABLE -->");
28 for(int j=0;j<nr;j++)
29 available[0][j]=sc.nextInt(); //matriz de available
30 sc.close();
31 }
32
33 private int[][] calcular_need(){
34 for(int i=0;i<np;i++)
35 for(int j=0;j<nr;j++) //calculando la matriz NEED
36 need[i][j]=max[i][j]-allocate[i][j];
37
38 return need;
39 }
40
41 private boolean verificar(int i){
...