SlideShare una empresa de Scribd logo
1 de 11
Curso: Sistemas Distribuidos
Docente: Lintol Contreras S.
Alumna: Jessica Huallpa Laguna
Abancay_Apurímac
tema: Algoritmos de Sistemas
Distribuidos
Algoritmode Elección
Algoritmode Bully
El algoritmo abusón es un método, dentro de la computación distribuida, para la
elección dinámica de un coordinador según el ID de los procesos. El proceso con el
ID mayor será seleccionado como el coordinador del sistema distribuido.
Cuando un proceso P detecta que el coordinador actual, por mensaje de tiempo de
espera o fallo, está caído o bloqueado, se encarga de iniciar unas elecciones, este
procedimiento se encargará de elegir el nuevo coordinador realizando las siguientes
acciones: (Hay que tener en cuenta que es posible que varios procesos puedan
descubrir la caída del coordinador de forma concurrente).
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<stdlib.h>
using namespace std;
struct rr
{
char name[10];
int prior;
char state[10];
}proc[10];
int i,j,k,l,m,n;
void main()
{
cout<<"n introduzca el número de procesost";
scanf("%d",&n);
for(i=0;i<n;i++)
{
cout<<"nentrar nombre del procesot";
cin>>proc[i].name;
cout<<"nentrar en la prioridad del procesot";
cin>>proc[i].prior;
strcpy(proc[i].state,"active");
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1;j++)
{
if(proc[j].prior<proc[j+1].prior)
{
char ch[5];
int t=proc[j].prior;
proc[j].prior= proc[j+1].prior;
proc[j+1].prior=t;
strcpy(ch,proc[j].name);
strcpy(proc[j].name,proc[j+1].name);
strcpy(proc[j+1].name,ch);
}}}
int min=0;
for(i=0;i<n;i++)
cout<<"n"<<proc[i].name<<"t"<<proc[i].prior;
for(i=0;i<n;i++){
for(i=0;i<n;i++){
if(min<proc[i].prior)
min=proc[i].prior;
}}
for(i=0;i<n;i++){
if(proc[i].prior==min){
cout<<"nprocess "<<proc[i].name<<" seleccione como coordinadorr";
strcpy(proc[i].state,"iactive");
break;}}
int pr;
while(1){
int ch;
cout<<"n1)electiont";
cout<<"n 2) exit t";
cin>>ch;
int max=0;
int ar[20];
k=0;
int fl=0;
switch(ch)
{
case 1: char str[5];
cout<<"n 1)intialise electiont";
cin>>str;
fl=0;
l1: for(i=0;i<n;i++)
{
if(strcmp(str,proc[i].name)==0)
{
pr=proc[i].prior;
} }
//cout<<"n"<<pr;
for(i=0;i<n;i++)
{
if(pr<proc[i].prior)
{
cout<<"nprocess "<<str<<" send message to "<<proc[i].name;
} }
for(i=0;i<n;i++){
if(pr<proc[i].prior && strcmp(proc[i].state,"active")==0 )
{
if(fl==0)
{
ar[k]= proc[i].prior;
k++;
}
cout<<"nprocess "<<proc[i].name<<" send OK message to "<<str;
if(proc[i].prior>max)
max=proc[i].prior;
} }
fl=1;
if(k!=0){
k=k-1;
for(i=0;i<n;i++){
if(ar[k]==proc[i].prior)
strcpy(str,proc[i].name); }
goto l1; }
m=0;
for(j=0;j<n;j++)
{if(proc[j].prior>m && strcmp(proc[j].state,"active")==0 ) {
cout<<"nprocess "<<proc[j].name <<" es seleccionar como nuevo coordinador";
strcpy(proc[j].state,"inactive");
break;
}}
for(i=0;i<n;i++){
if(strcmp(proc[i].state,"active")==0 && proc[j].prior>proc[i].prior){
cout<<"nprocess "<<proc[j].name<<" enviar mensaje de alerta a "<<proc[i].name}}
break;
case 2:exit(1);}}}
Pruebade AlgoritmoBully
AlgoritmoRing
Sistema síncrono [Chang & Roberts79]. Cada proceso tiene un canal con el siguiente
proceso enelanillo. Los mensajes circulan ensentido de las agujas del reloj.
• El proceso que inicia el algoritmo se marca como participante y envía su identificador en
un mensaje de elección asuvecino.
• Cuando un proceso recibe un mensaje de elección compara el identificador recibido con
el suyo.
– Si es menor el recibido y el proceso no es unparticipante, sustituye elidentificador en
el mensaje porel suyo ylo reenvía alvecino ysemarca como participante.
– Sies mayor elrecibido, reenvía elmensaje ysemarca como participante.
– Si es menor elrecibido yelproceso es unparticipante, no hace nada (no envía ningún
mensaje).
– Siel identificador coincide conel delproceso, eseproceso esel líder.
• El líder se marca como no participante yenvía un mensaje elegido al siguiente proceso.
• Cuando un proceso distinto al líder recibe este mensaje, anota qué proceso es el líder y
reenvía el mensaje.
#include<string.h>
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct rr{
int index;
int id;
int f;
char state[10];
}proc[10];
int i,j,k,m,n;
void main(){
int temp;
char str[10];
cout<<"n introduzca el número de procesot";
cin>>n;
for(i=0;i<n;i++){
proc[i].index;
cout<<"n entrar Identificación del procesot";
cin>>proc[i].id;
strcpy(proc[i].state,"active");
proc[i].f=0;
}
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1;j++)
{
if(proc[j].id>proc[j+1].id){
temp=proc[j].id;
proc[j].id=proc[j+1].id;
proc[j+1].id=temp;
}}}
for(i=0;i<n;i++)
printf("[%d] %dt",i,proc[i].id);
int init;
int ch;
int temp1;
int temp2;
int arr[10];
strcpy(proc[n-1].state,"inactive");
cout<<"nprocess "<<proc[n-1].id<<" seleccione como coordinador";
while(1)
{
cout<<"n1)election 2)quitn";
scanf("%d",&ch);
for(i=0;i<n;i++){
proc[i].f=0;}
switch(ch){
case 1:
cout<<"nintroducir el número de proceso que inilicialice elección" ;
scanf("%d",&init);
temp2=init;
temp1=init+1;
i=0;
while(temp2!=temp1) {
if(strcmp(proc[temp1].state,"active")==0 && proc[temp1].f==0 ) {
cout<<"process "<<proc[init].id<<"send message to
"<<proc[temp1].id<<"n";
proc[temp1].f=1;
init=temp1;
arr[i]=proc[temp1].id;
i++; }
if(temp1==n)
temp1=0;
else
temp1++; }
cout<<"process "<<proc[init].id<<"send message to
"<<proc[temp1].id<<"n";
arr[i]=proc[temp1].id;
i++;
int max=-1;
for(j=0;j<i;j++)
{
if(max<arr[j])
max=arr[j];
}
cout<<"nprocess "<<max<<" seleccione como coordinador";
for(i=0;i<n;i++)
{
if(proc[i].id==max){
strcpy(proc[i].state,"inactive");
// cout<<"n"<<i<<" "<<proc[i].id<<"deactivaten";
} }
break;
break;
}}}
Pruebade AlgoritmoRing
Algoritmos de Planeación
AlgoritmoFIFO
Primeroenentrar,primeroensalir(EninglésFirstin,first out,también se usan las siglas FIFO), es
un concepto utilizado en estructuras de datos, contabilidad de costes y teoría de colas. Guarda
analogía con las personas que esperan en una cola y van siendo atendidas en el orden en que
llegaron, es decir, que la primera persona que entra es la primera persona que sale.
#include <iostream>
using namespace std;
#define limite 5
void insertar(char datos[],int tiempo[],int l){
for(int i = 0; i < (l); i++){
cout << "inserte el tiempo en el proceso [" << datos[i] <<
"]: ";
cin >> tiempo[i];
system("cls");
}
}
void fifo(char datos[],int tiempo[], int l){
int tiempoTotal = 0;
float tiempoReturn = 0.0f;
insertar(datos,tiempo, l);
for(int j = 0;j < l; j++){
tiempoTotal += tiempo[j];
tiempoReturn += tiempoTotal;
cout <<"n""tiempo de retorno de["<<datos[j]<<"]:
"<<tiempoTotal<<"t";
}
tiempoReturn = tiempoReturn / l;
cout<<"nEl tiempo de las entradas son: "<<tiempoReturn;
}
int main(){
cout<<"tttSimulacion de FIFO en C++"<<endl;
cout<<"tt_______________________________________n"<<endl;
char datos[limite] = {'a','b','c','d','e'};
int tiempo[limite];
fifo(datos,tiempo,limite);
cin.get();
cin.get();
return ;
}
Algoritmo de Round Robin
El sistema de todos contra todos o sistema de liga es un sistema de competición, generalmente
deportiva, en que todos los participantes del torneo se enfrentan entre ellos en un número
constante encuentros. Este tipo de competición es también llamado liguilla o round-robin.
Para determinarel calendariodel torneo,se realiza un simple algoritmo de selección. A cada uno
de loscompetidores se le asigna un número y se van rotando los números, dejando uno fijo. Por
ejemplo, en un torneo con 10 equipos:
1ª ronda: (A contra J, B contra I,…)
A B C D E
J I H G F
2ª ronda: (A contra I, J contra H,…)
A J B C D
I H G F E
package roundrobin;
public class RoundRobin {
public static void main(String[] args) {
RoundRobin rr = new RoundRobin();
for (int i = 0; i < 9; i++) {
rr.mostrar();
rr.combinar();
}
}
private String[] equipos= new String[10];
public RoundRobin() {
this.equipos[0]="A";
this.equipos[1]="B";
this.equipos[2]="C";
this.equipos[3]="D";
this.equipos[4]="E";
this.equipos[5]="F";
this.equipos[6]="G";
this.equipos[7]="H";
this.equipos[8]="I";
this.equipos[9]="J";
}
public void combinar(){
String buffer=equipos[equipos.length-1];
for (int i = equipos.length-1; i > 1; i--) {
equipos[i]=equipos[i-1];
}
equipos[1]=buffer;
}
public void mostrar(){
for (int i = 0, j=equipos.length-1; i<j; i++, j--) {
System.out.println(equipos[i]+" vs "+ equipos[j]);
}
System.out.println("*************************************");
}
} }
AlgoritmoSJF, Short Job First
Es un algoritmode planificaciónnoapropiativaque manejalostrabajosconbase enla duraciónde
su ciclode CPU. Este tipode algoritmode planificaciónse usaparaprocesamientopor lotes en los
cualesse puede sabercuál esel tiempode duraciónde la ejecuciónde cadaprocesoyentonces se
puede seleccionar el trabajo más corto.
#include<conio.h>
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int np, sre, ses, i, b, c;
float a, pre, pes, s, nM;
float Tll[50], TS[50], TScop[50], TCo[50], TFi[50], TRe[50], TEs[50];
int main() {
cout<<"Ingrese el numero de procesos a planificar: ";
cin>>np;
cout<<endl;
a=0; sre=0; ses=0;
for (i=0;i<np;i++){
cout<<"Ingrese el Tiempo de Llegada del proceso"<<i<<": ";
cin>>Tll[i]; cout<<endl;
cout<<"Ingrese el Tiempo de Servicio del proceso"<<i<<": ";
cin>>TS[i]; cout<<endl;
}
nM=TS[0];
for (i=1;i<np;i++){
if (TS[i]>nM) nM=TS[i];
}
TCo[0]=0;
TFi[0]=TS[0];
for (i=0;i<np;i++){
TScop[i]=TS[i];
}
s=0; c=0;
do{
b=1;
for (i=1;i<np;i++){
if (TScop[b]>TScop[i]){
a=TScop[i];
b=i;
}
}
TCo[b]=TFi[c];
TFi[b]=TCo[b]+TS[b];
TScop[b]=nM+1;
c=b;
s=s+1;
}while(s<(np-1));
for (i=0;i<np;i++){
TRe[i]=TFi[i]-Tll[i];
sre=sre+TRe[i];
TEs[i]=TCo[i]-Tll[i];
ses=ses+TEs[i];
}
pre=sre/np;
pes=ses/np;
cout<<endl;
cout<<"Proceso T.Llegada T.Servicio T.Comienzo T.Finalizacion T.Retorno
T.Espera"<<endl;
for (i=0;i<np;i++){
cout<<" "<<i<<" "<<Tll[i]<<" "<<TS[i]<<" "<<TCo[i]<<" "<<TFi[i]<<"
"<<TRe[i]<<" "<<TEs[i]<<endl;
}
cout<<"Promedio de Tiempo de Retorno: "<<pre<<endl;
cout<<"Promedio de Tiempo de Espera: "<<pes<<endl;
getch();
}
} }

Más contenido relacionado

La actualidad más candente

1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladoresJoOsee Kette
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)Yadith Miranda Silva
 
Comunicacion entre procesos SSDD
Comunicacion entre procesos SSDDComunicacion entre procesos SSDD
Comunicacion entre procesos SSDDJorge Guerra
 
Técnicas de administración del planificador
Técnicas de administración del planificadorTécnicas de administración del planificador
Técnicas de administración del planificadorCristian Izquierdo
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socketRene Guaman-Quinche
 
Algoritmo de servidor centralizado
Algoritmo de servidor centralizadoAlgoritmo de servidor centralizado
Algoritmo de servidor centralizadostevencueva3
 
El kernel en los sistemas operativos
El kernel en los sistemas operativosEl kernel en los sistemas operativos
El kernel en los sistemas operativosKaren Serrano
 
Planificación de la CPU
Planificación de la CPUPlanificación de la CPU
Planificación de la CPUFernanda Soto
 
Algoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosAlgoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosFernando Morales
 
Funciones de administracion de memoria
Funciones de administracion de memoriaFunciones de administracion de memoria
Funciones de administracion de memoriaMiguel Magaña
 

La actualidad más candente (20)

Modelo paso de mensajes
Modelo paso de mensajesModelo paso de mensajes
Modelo paso de mensajes
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
 
Omega Up
Omega UpOmega Up
Omega Up
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)
 
Recursividad
RecursividadRecursividad
Recursividad
 
Comunicacion entre procesos SSDD
Comunicacion entre procesos SSDDComunicacion entre procesos SSDD
Comunicacion entre procesos SSDD
 
Técnicas de administración del planificador
Técnicas de administración del planificadorTécnicas de administración del planificador
Técnicas de administración del planificador
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
 
Multicomputadoras
MulticomputadorasMulticomputadoras
Multicomputadoras
 
Recuperación de-datos-en-my sql
Recuperación de-datos-en-my sqlRecuperación de-datos-en-my sql
Recuperación de-datos-en-my sql
 
Comunicacion intra procesos con socket
Comunicacion intra procesos con socketComunicacion intra procesos con socket
Comunicacion intra procesos con socket
 
Algoritmo de dekker
Algoritmo de dekker Algoritmo de dekker
Algoritmo de dekker
 
Curso recursividad
Curso   recursividadCurso   recursividad
Curso recursividad
 
Algoritmo de servidor centralizado
Algoritmo de servidor centralizadoAlgoritmo de servidor centralizado
Algoritmo de servidor centralizado
 
El kernel en los sistemas operativos
El kernel en los sistemas operativosEl kernel en los sistemas operativos
El kernel en los sistemas operativos
 
Planificación de la CPU
Planificación de la CPUPlanificación de la CPU
Planificación de la CPU
 
Hilos con Posix
Hilos con PosixHilos con Posix
Hilos con Posix
 
Analisis Semantico
Analisis Semantico Analisis Semantico
Analisis Semantico
 
Algoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosAlgoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativos
 
Funciones de administracion de memoria
Funciones de administracion de memoriaFunciones de administracion de memoria
Funciones de administracion de memoria
 

Similar a algoritmos distribuidos

Portafolio segundo parcial
Portafolio segundo parcialPortafolio segundo parcial
Portafolio segundo parcialHugo Arechiga
 
Ejercisos condicionales
Ejercisos condicionalesEjercisos condicionales
Ejercisos condicionalesJoshe Varillas
 
Tdd y clean code SG campus
Tdd y clean code SG campusTdd y clean code SG campus
Tdd y clean code SG campusSoftware Guru
 
Java Basico-Ficheros
Java Basico-FicherosJava Basico-Ficheros
Java Basico-Ficherosflromero_s
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOLuiS YmAY
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición UVM
 

Similar a algoritmos distribuidos (20)

Portafolio segundo parcial
Portafolio segundo parcialPortafolio segundo parcial
Portafolio segundo parcial
 
Cap0 2
Cap0 2Cap0 2
Cap0 2
 
Ejercisos condicionales
Ejercisos condicionalesEjercisos condicionales
Ejercisos condicionales
 
Tdd y clean code SG campus
Tdd y clean code SG campusTdd y clean code SG campus
Tdd y clean code SG campus
 
Ejercisos condicionales 1
Ejercisos condicionales 1Ejercisos condicionales 1
Ejercisos condicionales 1
 
0.2 Conceptos Basicos C++ II
0.2  Conceptos Basicos C++ II0.2  Conceptos Basicos C++ II
0.2 Conceptos Basicos C++ II
 
Java Basico-Ficheros
Java Basico-FicherosJava Basico-Ficheros
Java Basico-Ficheros
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
curso_programacion_python3.pdf
curso_programacion_python3.pdfcurso_programacion_python3.pdf
curso_programacion_python3.pdf
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
Viernes Tecnicos DTrace
Viernes Tecnicos DTraceViernes Tecnicos DTrace
Viernes Tecnicos DTrace
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Tipos basicos de java
Tipos basicos de javaTipos basicos de java
Tipos basicos de java
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Explicacion
ExplicacionExplicacion
Explicacion
 
Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición Una solución para agregar estructura de repetición
Una solución para agregar estructura de repetición
 
Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01Desarrollo De Programas Ejemplos 01
Desarrollo De Programas Ejemplos 01
 
Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01Desarrollo de programas_ejemplos_01
Desarrollo de programas_ejemplos_01
 

Último

Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 

Último (20)

Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 

algoritmos distribuidos

  • 1. Curso: Sistemas Distribuidos Docente: Lintol Contreras S. Alumna: Jessica Huallpa Laguna Abancay_Apurímac tema: Algoritmos de Sistemas Distribuidos
  • 2. Algoritmode Elección Algoritmode Bully El algoritmo abusón es un método, dentro de la computación distribuida, para la elección dinámica de un coordinador según el ID de los procesos. El proceso con el ID mayor será seleccionado como el coordinador del sistema distribuido. Cuando un proceso P detecta que el coordinador actual, por mensaje de tiempo de espera o fallo, está caído o bloqueado, se encarga de iniciar unas elecciones, este procedimiento se encargará de elegir el nuevo coordinador realizando las siguientes acciones: (Hay que tener en cuenta que es posible que varios procesos puedan descubrir la caída del coordinador de forma concurrente). #include<stdio.h> #include<string.h> #include<iostream> #include<stdlib.h> using namespace std; struct rr { char name[10]; int prior; char state[10]; }proc[10]; int i,j,k,l,m,n; void main() { cout<<"n introduzca el número de procesost"; scanf("%d",&n); for(i=0;i<n;i++) { cout<<"nentrar nombre del procesot"; cin>>proc[i].name; cout<<"nentrar en la prioridad del procesot"; cin>>proc[i].prior; strcpy(proc[i].state,"active"); } for(i=0;i<n-1;i++) { for(j=0;j<n-1;j++) { if(proc[j].prior<proc[j+1].prior) { char ch[5]; int t=proc[j].prior; proc[j].prior= proc[j+1].prior; proc[j+1].prior=t; strcpy(ch,proc[j].name); strcpy(proc[j].name,proc[j+1].name); strcpy(proc[j+1].name,ch); }}} int min=0; for(i=0;i<n;i++) cout<<"n"<<proc[i].name<<"t"<<proc[i].prior; for(i=0;i<n;i++){ for(i=0;i<n;i++){ if(min<proc[i].prior) min=proc[i].prior; }}
  • 3. for(i=0;i<n;i++){ if(proc[i].prior==min){ cout<<"nprocess "<<proc[i].name<<" seleccione como coordinadorr"; strcpy(proc[i].state,"iactive"); break;}} int pr; while(1){ int ch; cout<<"n1)electiont"; cout<<"n 2) exit t"; cin>>ch; int max=0; int ar[20]; k=0; int fl=0; switch(ch) { case 1: char str[5]; cout<<"n 1)intialise electiont"; cin>>str; fl=0; l1: for(i=0;i<n;i++) { if(strcmp(str,proc[i].name)==0) { pr=proc[i].prior; } } //cout<<"n"<<pr; for(i=0;i<n;i++) { if(pr<proc[i].prior) { cout<<"nprocess "<<str<<" send message to "<<proc[i].name; } } for(i=0;i<n;i++){ if(pr<proc[i].prior && strcmp(proc[i].state,"active")==0 ) { if(fl==0) { ar[k]= proc[i].prior; k++; } cout<<"nprocess "<<proc[i].name<<" send OK message to "<<str; if(proc[i].prior>max) max=proc[i].prior; } } fl=1; if(k!=0){ k=k-1; for(i=0;i<n;i++){ if(ar[k]==proc[i].prior) strcpy(str,proc[i].name); } goto l1; } m=0; for(j=0;j<n;j++) {if(proc[j].prior>m && strcmp(proc[j].state,"active")==0 ) { cout<<"nprocess "<<proc[j].name <<" es seleccionar como nuevo coordinador"; strcpy(proc[j].state,"inactive"); break; }} for(i=0;i<n;i++){ if(strcmp(proc[i].state,"active")==0 && proc[j].prior>proc[i].prior){ cout<<"nprocess "<<proc[j].name<<" enviar mensaje de alerta a "<<proc[i].name}} break; case 2:exit(1);}}}
  • 5. AlgoritmoRing Sistema síncrono [Chang & Roberts79]. Cada proceso tiene un canal con el siguiente proceso enelanillo. Los mensajes circulan ensentido de las agujas del reloj. • El proceso que inicia el algoritmo se marca como participante y envía su identificador en un mensaje de elección asuvecino. • Cuando un proceso recibe un mensaje de elección compara el identificador recibido con el suyo. – Si es menor el recibido y el proceso no es unparticipante, sustituye elidentificador en el mensaje porel suyo ylo reenvía alvecino ysemarca como participante. – Sies mayor elrecibido, reenvía elmensaje ysemarca como participante. – Si es menor elrecibido yelproceso es unparticipante, no hace nada (no envía ningún mensaje). – Siel identificador coincide conel delproceso, eseproceso esel líder. • El líder se marca como no participante yenvía un mensaje elegido al siguiente proceso. • Cuando un proceso distinto al líder recibe este mensaje, anota qué proceso es el líder y reenvía el mensaje. #include<string.h> #include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; struct rr{ int index; int id; int f; char state[10]; }proc[10]; int i,j,k,m,n; void main(){ int temp; char str[10]; cout<<"n introduzca el número de procesot"; cin>>n; for(i=0;i<n;i++){ proc[i].index; cout<<"n entrar Identificación del procesot"; cin>>proc[i].id; strcpy(proc[i].state,"active"); proc[i].f=0; } for(i=0;i<n-1;i++) { for(j=0;j<n-1;j++) {
  • 6. if(proc[j].id>proc[j+1].id){ temp=proc[j].id; proc[j].id=proc[j+1].id; proc[j+1].id=temp; }}} for(i=0;i<n;i++) printf("[%d] %dt",i,proc[i].id); int init; int ch; int temp1; int temp2; int arr[10]; strcpy(proc[n-1].state,"inactive"); cout<<"nprocess "<<proc[n-1].id<<" seleccione como coordinador"; while(1) { cout<<"n1)election 2)quitn"; scanf("%d",&ch); for(i=0;i<n;i++){ proc[i].f=0;} switch(ch){ case 1: cout<<"nintroducir el número de proceso que inilicialice elección" ; scanf("%d",&init); temp2=init; temp1=init+1; i=0; while(temp2!=temp1) { if(strcmp(proc[temp1].state,"active")==0 && proc[temp1].f==0 ) { cout<<"process "<<proc[init].id<<"send message to "<<proc[temp1].id<<"n"; proc[temp1].f=1; init=temp1; arr[i]=proc[temp1].id; i++; } if(temp1==n) temp1=0; else temp1++; } cout<<"process "<<proc[init].id<<"send message to "<<proc[temp1].id<<"n"; arr[i]=proc[temp1].id; i++; int max=-1; for(j=0;j<i;j++) { if(max<arr[j]) max=arr[j]; } cout<<"nprocess "<<max<<" seleccione como coordinador"; for(i=0;i<n;i++) { if(proc[i].id==max){ strcpy(proc[i].state,"inactive"); // cout<<"n"<<i<<" "<<proc[i].id<<"deactivaten"; } } break; break; }}}
  • 8. Algoritmos de Planeación AlgoritmoFIFO Primeroenentrar,primeroensalir(EninglésFirstin,first out,también se usan las siglas FIFO), es un concepto utilizado en estructuras de datos, contabilidad de costes y teoría de colas. Guarda analogía con las personas que esperan en una cola y van siendo atendidas en el orden en que llegaron, es decir, que la primera persona que entra es la primera persona que sale. #include <iostream> using namespace std; #define limite 5 void insertar(char datos[],int tiempo[],int l){ for(int i = 0; i < (l); i++){ cout << "inserte el tiempo en el proceso [" << datos[i] << "]: "; cin >> tiempo[i]; system("cls"); } } void fifo(char datos[],int tiempo[], int l){ int tiempoTotal = 0; float tiempoReturn = 0.0f; insertar(datos,tiempo, l); for(int j = 0;j < l; j++){ tiempoTotal += tiempo[j]; tiempoReturn += tiempoTotal; cout <<"n""tiempo de retorno de["<<datos[j]<<"]: "<<tiempoTotal<<"t"; } tiempoReturn = tiempoReturn / l; cout<<"nEl tiempo de las entradas son: "<<tiempoReturn; } int main(){ cout<<"tttSimulacion de FIFO en C++"<<endl; cout<<"tt_______________________________________n"<<endl; char datos[limite] = {'a','b','c','d','e'}; int tiempo[limite]; fifo(datos,tiempo,limite); cin.get(); cin.get(); return ; }
  • 9. Algoritmo de Round Robin El sistema de todos contra todos o sistema de liga es un sistema de competición, generalmente deportiva, en que todos los participantes del torneo se enfrentan entre ellos en un número constante encuentros. Este tipo de competición es también llamado liguilla o round-robin. Para determinarel calendariodel torneo,se realiza un simple algoritmo de selección. A cada uno de loscompetidores se le asigna un número y se van rotando los números, dejando uno fijo. Por ejemplo, en un torneo con 10 equipos: 1ª ronda: (A contra J, B contra I,…) A B C D E J I H G F 2ª ronda: (A contra I, J contra H,…) A J B C D I H G F E package roundrobin; public class RoundRobin { public static void main(String[] args) { RoundRobin rr = new RoundRobin(); for (int i = 0; i < 9; i++) { rr.mostrar(); rr.combinar(); } } private String[] equipos= new String[10]; public RoundRobin() { this.equipos[0]="A"; this.equipos[1]="B"; this.equipos[2]="C"; this.equipos[3]="D"; this.equipos[4]="E"; this.equipos[5]="F"; this.equipos[6]="G"; this.equipos[7]="H"; this.equipos[8]="I"; this.equipos[9]="J"; } public void combinar(){ String buffer=equipos[equipos.length-1]; for (int i = equipos.length-1; i > 1; i--) { equipos[i]=equipos[i-1]; } equipos[1]=buffer; } public void mostrar(){ for (int i = 0, j=equipos.length-1; i<j; i++, j--) { System.out.println(equipos[i]+" vs "+ equipos[j]); } System.out.println("*************************************"); } } }
  • 10. AlgoritmoSJF, Short Job First Es un algoritmode planificaciónnoapropiativaque manejalostrabajosconbase enla duraciónde su ciclode CPU. Este tipode algoritmode planificaciónse usaparaprocesamientopor lotes en los cualesse puede sabercuál esel tiempode duraciónde la ejecuciónde cadaprocesoyentonces se puede seleccionar el trabajo más corto. #include<conio.h> #include <iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> using namespace std; int np, sre, ses, i, b, c; float a, pre, pes, s, nM; float Tll[50], TS[50], TScop[50], TCo[50], TFi[50], TRe[50], TEs[50]; int main() { cout<<"Ingrese el numero de procesos a planificar: "; cin>>np; cout<<endl; a=0; sre=0; ses=0; for (i=0;i<np;i++){ cout<<"Ingrese el Tiempo de Llegada del proceso"<<i<<": "; cin>>Tll[i]; cout<<endl; cout<<"Ingrese el Tiempo de Servicio del proceso"<<i<<": "; cin>>TS[i]; cout<<endl; } nM=TS[0]; for (i=1;i<np;i++){ if (TS[i]>nM) nM=TS[i]; } TCo[0]=0; TFi[0]=TS[0]; for (i=0;i<np;i++){ TScop[i]=TS[i]; } s=0; c=0; do{ b=1; for (i=1;i<np;i++){ if (TScop[b]>TScop[i]){ a=TScop[i]; b=i; } } TCo[b]=TFi[c]; TFi[b]=TCo[b]+TS[b]; TScop[b]=nM+1; c=b; s=s+1;
  • 11. }while(s<(np-1)); for (i=0;i<np;i++){ TRe[i]=TFi[i]-Tll[i]; sre=sre+TRe[i]; TEs[i]=TCo[i]-Tll[i]; ses=ses+TEs[i]; } pre=sre/np; pes=ses/np; cout<<endl; cout<<"Proceso T.Llegada T.Servicio T.Comienzo T.Finalizacion T.Retorno T.Espera"<<endl; for (i=0;i<np;i++){ cout<<" "<<i<<" "<<Tll[i]<<" "<<TS[i]<<" "<<TCo[i]<<" "<<TFi[i]<<" "<<TRe[i]<<" "<<TEs[i]<<endl; } cout<<"Promedio de Tiempo de Retorno: "<<pre<<endl; cout<<"Promedio de Tiempo de Espera: "<<pes<<endl; getch(); } } }