# Resource Scheduling in Cloud Computing Based on a Hybridized Whale Optimization Algorithm
## 2 Cloud Computing Paradigm, Scheduling and Literature Review
### Cloud Computing Principles and Architecture  
The permanent and continual improvements in computing and networking technologies have led to the rapid growth of requirements for accessing the data and software services from an efficient networking environment that provides elasticity, scalability, security, and reliability. This environment that enables the usage of resources with enough processing power to meet all end-user's demands over high-speed broadband networks, is cloud computing. Due to its adaptability and versatility, the cloud computing paradigm has been extensively implemented in many industries, and it has also been adopted by the academic and scientific communities.  
Many definitions of cloud computing are available, but one of the most important is provided by the National Institute of Standards and Technology (NIST), which states that \"cloud computing can be depicted as a model for enabling ubiquitous and convenient on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort, or service provider interaction\" [34]. One other definition defines cloud computing as an \"elastic and distributed system in which computing resources, such as processing power and storage space, information and software, are propagated through the network and delivered in the distributed location in the cloud where, it can be shared and obtained\" [35]. The third definition, that we selected from the computer science literature, states that the \"cloud represents a collection of heterogeneous hardware and software resources which provides services and fast processing resources with high availability to the cloud users in a way that it is not necessary that the end-users have their own hardware and software infrastructure\" [30].  
In order to successfully execute submitted tasks, the cloud computing environment is supported by virtualization technology and hyper-converged infrastructure (HCL). Moreover, these two technologies are enabling cloud computing services due to the fact that they make cloud computing feasible. Without virtualization and HCL, cloud computing as a service delivery model would not be economically justified for cloud clients (end-users), as well as for cloud service providers (CSPs).  
The concept of virtualization, as an abstraction of computing resources, is used along with the scheduling, where simultaneously submitted diverse tasks are being executed by different VMs, that are disjointed from the physical hardware infrastructure. The basic component of virtualization, which is responsible for controlling and synchronizing VM execution is the hypervisor, also known as the virtual machine monitor (VMM). In cloud environments, type 1 hypervisors are used. The type 1 VMM (bare-metal hypervisor) executes directly above the physical hardware and it is much faster than the type 2 hypervisor (hosted VMM) that runs above the host operating system.