Article Preview
TopIntroduction
A distributed system is the interconnection of distributed computational and functional resources. They help in meeting the demand of executing the large-scale, high-performance computational jobs. These systems can be realized as homogenous or heterogeneous systems. They are quite useful for different scientific and business applications (Jiang & Huang, 2012; Jiang et al., 2011; Ye et al., 2013). Heterogeneous Distributed Systems (HDS) exhibits more visibility owing to the practical application of participation of various resources belonging to possibly different administrative domains to solve computational problems. Various types of distributed systems are grids (Liu et al., 2005), peer-to-peer systems (Rao et al., 2010), ad-hoc networks (Xue et al., 2006), cloud computing systems (Gkatzikis & Koutsopoulos, 2013), pervasive computing systems (Lukowicz et al., 2012) and online social network systems (Jiang & Jiang, 2014). Grid Computing (Liu et al., 2005) is build up for highly computational intensive scientific applications, but cloud computing (Gkatzikis & Koutsopoulos, 2013) goes one step ahead by providing dynamic resource provisioning and resource sharing through virtualization. Cloud computing is based on the principle of shifting the computing from traditional desktop to the Internet. Cloud computing provides cost-efficient server-based computing. The model is often being referred as “pay as you go model” i.e. the users can rent virtual resources called Virtual Machines and pay for what they actually use. Based on the abstraction level of the services, cloud delivery models can be classified into three types: Infrastructure as a Service (IaaS) Platform as a Service (PaaS), and Software as a Service (SaaS). There are four kinds of cloud deployment model: public cloud, private cloud, community cloud, and hybrid cloud.
Scheduling the jobs on the computational resources is one of the prime concerns in such systems. Scheduling the tasks over computational nodes has been established to be an NP-complete problem. Scheduling can be defined as the mapping of job or sub-jobs on a set of resources such that the application parallelism inherent in the job can be exploited over the available hardware parallelism (Vidyarthi et al., 2009; Alam & Raza, 2016; Alam & Raza, 2018; Xhafa & Abraham, 2010). There are various types of applications that are executed on these systems. These applications range from web services, the scientific computation to data storage types to name a few. In general, any application that is executed on these systems can be divided into a number of tasks. The performance of such system regarding application execution thus becomes dependent on the allocation of these tasks on the available nodes with optimization of QoS parameters (Attiya & Hamam, 2006; Jiang & Jiang, 2009; Li & Lan, 2005).