## 3 Materials and Methods
### Description of Distributed Systems  
A DS or HPC is a collection of computers or worker nodes interconnected in a local area network (LAN) that provides services and applications to different types of users. Computers that integrate the DS may share the same software and hardware (Homogeneous Systems) or not (Heterogeneous Systems). When discussing DSs, it is important to consider the different architectures, algorithms, paradigms, and applications. To adapt to the above, it is necessary to take into account the type of computing problem that we want to solve and the results that we want to obtain. The most common architectures that actually exist are cloud computing (CC), fog computing (FC), edge computing (EC), and peer-to-peer (P2P) networks [26]. CC refers to the management of services without physical servers; to access services, users log in to remote servers through the Internet. Typically, CC is categorized into several service models: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). These service models can be deployed using public, private, and hybrid clouds [27]. FC expands the capabilities of cloud computing by focusing on the operations and processes carried out by computer networks, low latency, real-time processing, scalability, and security, which are elements that allow the proper functioning of the applications and services offered through the network. The term FC was proposed by Cisco as a new paradigm [28]. EC refers to the connection between end-users and specific applications, such as autonomous vehicles, sensors, cameras, and other devices that send data to the cloud through networks and data centers. Finally, the P2P network paradigm is not new; it is a type of distributed network in which individual users or nodes act as both servers and clients, sharing resources and data directly and bypassing central servers. Common applications include file sharing, cryptocurrencies, the Internet of Things (IoT), instant messaging, and content delivery [29]. All these architectures share the feature that they can run multiple processes together to achieve various computing tasks. These processes can be performed on different machines across the network. It is also important to mention that to run multiple tasks in a DS, algorithms, and protocols specifically designed for the aforementioned environments are required. These algorithms play a crucial role in optimizing resource allocation, data management, and task coordination across distributed architectures. They ensure efficient and reliable operation, enabling the system to maximize its distributed resources while maintaining data consistency, security, and scalability. In CC, for example, distributed algorithms are essential for load balancing, auto-scaling, and ensuring the high availability of services across data centers [27]. P2P networks rely on distributed algorithms for decentralized data retrieval and resource sharing [30]. In EC and FC, real-time data processing, low latency, and efficient task scheduling algorithms are vital for timely decision-making and responsive services [31]. These distributed algorithms enable the efficient utilization of computing power and distributed resources on the network, making DSs capable of handling various applications and use cases, from data analysis and content delivery to management IoT and edge processing. One of the most popular algorithms is MapReduce [32], a programming model and associated data processing framework developed by Google. It is designed to process and generate large datasets that can be distributed in DS. MapReduce provides a way to parallelize and distribute data processing tasks, making it suitable for big-data analysis and large-scale data processing. Additionally, this algorithm uses data parallelism as a fundamental concept to efficiently process large datasets in a DS environment [33]. Data parallelism (DP) is a parallel computing paradigm in which the same operation is applied to multiple subsets of data simultaneously [34].