PG Cloud Computing Unit II
PG Cloud Computing Unit II
UNIT II
1. It saves time and money because many resources working together cut
down on time and costs.
2. It may be difficult to resolve larger problems on Serial Computing.
3. You can do many things at once using many computing resources.
4. Parallel computing is much better than serial computing for modeling,
simulating, and comprehending complicated real-world events.
Disadvantages
Advantages
Disadvantages
1. Data security and sharing are the main issues in distributed systems due
to the features of open systems
2. Because of the distribution across multiple servers, troubleshooting and
diagnostics are more challenging.
3. The main disadvantage of distributed computer systems is the lack of
software support.
Here, you will learn the various key differences between parallel computing and
distributed computation. Some of the key differences between parallel
computing and distributed computing are as follows:
Levels of Parallelism
There are different level of parallelism which are as follows −
Instruction Level − At instruction level, a grain is consist of less than 20
instruction called fine grain. Fine-grain parallelism at this level may range
from two thousand depending on an individual program single instruction
stream parallelism is greater than two but the average parallelism at
instruction level is around fine rarely exceeding seven in an ordinary
program.
For scientific applications, the average parallel is in the range of 500 to
300 Fortran statements executing concurrently in an idealized
environment.
Loop Level − It embraces iterative loop operations. A loop may contain
fewer than 500 instructions. Some loop independent operations can be
vectorized for pipelined execution or look step execution of SIMD
machines.
Loop level parallelism is the most optimized program generate to
implement on a parallel or vector computer. But recursive loops are
different to parallelize. Vector processing is mostly exploited at the loop
level by vectorizing compiler.
Procedural Level − It communicates to medium grain size at the task,
procedure, subroutine levels. Grain at this level has less than 2000
instructions. Detection of parallelism at this level is much more difficult
than a finer grain level.
Communication obligation is much less as compared with that MIMD
execution model. But here major efforts are requisite by the programmer
to reorganize a program at this level.
Subprogram Level − Subprogram level communicates to job steps and
related subprograms. Grain size here has less than 1000 instructions. Job
steps can overlap across diverse jobs. Multiprogramming a uniprocessor
or multiprocessor is conducted at this level.
Job Level − It corresponds to parallel executions of independent tasks on
a parallel computer. Grain size here can be tens of thousands of
instructions. It is managed by the program loader and by the operating
framework. Time-sharing & space-sharing multiprocessors analyze this
level of parallelism.
What Is Distributed Computing?
Distributed computing is the method of making multiple computers work
together to solve a common problem. It makes a computer network appear as a
powerful single computer that provides large-scale resources to deal with
complex challenges.
For example, distributed computing can encrypt large volumes of data; solve
physics and chemical equations with many variables; and render high-quality,
three-dimensional video animation. Distributed systems, distributed
programming, and distributed algorithms are some other terms that all refer to
distributed computing.
What are the advantages of distributed computing?
Distributed systems bring many advantages over single system computing. The
following are some of them.
Scalability
Distributed systems can grow with your workload and requirements. You can
add new nodes, that is, more computing devices, to the distributed computing
network when they are needed.
Availability
Your distributed computing system will not crash if one of the computers goes
down. The design shows fault tolerance because it can continue to operate even
if individual computers fail.
Consistency
Computers in a distributed system share information and duplicate data between
them, but the system automatically manages data consistency across all the
different computers. Thus, you get the benefit of fault tolerance without
compromising data consistency.
Transparency
Distributed computing systems provide logical separation between the user and
the physical devices. You can interact with the system as if it is a single
computer without worrying about the setup and configuration of individual
machines. You can have different hardware, middleware, software, and
operating systems that work together to make your system function smoothly.
Efficiency
Distributed systems offer faster performance with optimum resource use of the
underlying hardware. As a result, you can manage any workload without
worrying about system failure due to volume spikes or underuse of expensive
hardware.
What are some distributed computing use cases?
Distributed computing is everywhere today. Mobile and web applications are
examples of distributed computing because several machines work together in
the backend for the application to give you the correct information. However,
when distributed systems are scaled up, they can solve more complex
challenges. Let’s explore some ways in which different industries use high-
performing distributed applications.
Healthcare and life sciences
Healthcare and life sciences use distributed computing to model and simulate
complex life science data. Image analysis, medical drug research, and gene
structure analysis all become faster with distributed systems. These are some
examples:
1. Layered Architecture:
2. Object-Oriented Architecture:
4. Event-Based Architecture:
Distributed Computing:
Distributed computing is a model in which components of a software system are
shared among multiple computers to improve efficiency and performance. It is a
field of computer science that studies distributed systems. In distributed
system components are located on different networked computers.
Mainframes:
Mainframes were the first example of large computing facilities which leverage
multiple processing units. They are powerful, highly reliable computers
specialized for large data movement and large I/O operations. Mainframes are
mostly used by large organizations for bulk data processing such as online
transactions, enterprise resource planning and other big data operations. They
are not considered as a distributed system; however they can perform big data
processing and operations due to their high computational power by multiple
processors. One of the most attractive features of mainframe was the ability to
be highly reliable computers that were always on and capable of tolerating
failures transparently. Furthermore, system shutdown is not required to change
its component. Batch processing is the important application of mainframes.
Their popularity has been reduced nowadays.
Mainfra
me
Clusters:
Clusters have started as the low-cost alternative to the mainframes and
supercomputer. Due to advancement of technology in mainframes and
supercomputers, other hardware’s and machines have become cheap which are
connected by high bandwidth networks controlled by specific software tools
that manage the messaging system. Since the 1980s cluster has become standard
technology for parallel and high-performance computing. Due to their low
investment cost different research institutions, companies, universities now a
day use clusters. This technology contributed to the evolution of tools and
framework for distributed computing like Condor, PVM, MP. One of the
attractive features of clusters is the cheap machines with high computational
power to solve the problem. And clusters are scalable. Example of a cluster is
amazon EC2 clusters to process data using Hadoop which has multiple
nodes(machines) with master nodes and data nodes and we can scale it if we
have a big volume of data.
Cluster
Grids:
They appeared in the early 1990’s as the evolution of cluster computing. Grid
computing can have an analogy with electric power grid which is an approach
to use high computational power, storage services and other variety of services.
Users can consume resources in the same way as use of utilities such as power,
gas and water. Grids initially developed aggregation of geographically dispersed
clusters by means of internet connections and clusters belonging to different
organizations and arrangement is made to share computational power between
those organizations. Grid is dynamic aggregation of heterogeneous computing
nodes which can be both nationwide and worldwide. Different development in
technology has made possible in diffusion of computing grids which are:
Grid
Distributing technology has led to the development of cloud computing.
What is RPC
Remote Procedure Call (RPC) is a communication technology that is used by
one program to make a request to another program for utilizing its service on a
network without even knowing the network’s details. A function call or a
subroutine call are other terms for a procedure call.
It is based on the client-server concept. The client is the program that makes
the request, and the server is the program that gives the service. An RPC, like
a local procedure call, is based on the synchronous operation that requires the
requesting application to be stopped until the remote process returns its results.
Multiple RPCs can be executed concurrently by utilizing lightweight processes
or threads that share the same address space. Remote Procedure Call program
as often as possible utilizes the Interface Definition Language (IDL), a
determination language for describing a computer program component’s
Application Programming Interface (API). In this circumstance, IDL acts as an
interface between machines at either end of the connection, which may be
running different operating systems and programming languages.
Working Procedure for RPC Model:
The process arguments are placed in a precise location by the caller when
the procedure needs to be called.
Control at that point passed to the body of the method, which is having a
series of instructions.
The procedure body is run in a recently created execution environment that
has duplicates of the calling instruction’s arguments.
At the end, after the completion of the operation, the calling point gets back
the control, which returns a result.
The call to a procedure is possible only for those procedures that
are not within the caller’s address space because both processes
(caller and callee) have distinct address space and the access is
restricted to the caller’s environment’s data and variables from the
remote procedure.
The caller and callee processes in the RPC communicate to
exchange information via the message-passing scheme.
The first task from the server-side is to extract the procedure’s
parameters when a request message arrives, then the result, send a
reply message, and finally wait for the next call message.
Only one process is enabled at a certain point in time.
The caller is not always required to be blocked.
The asynchronous mechanism could be employed in the RPC that
permits the client to work even if the server has not responded
yet.
In order to handle incoming requests, the server might create a
thread that frees the server for handling consequent requests.
Types of RPC:
Callback RPC: In a Callback RPC, a P2P (Peer-to-Peer)paradigm opts
between participating processes. In this way, a process provides both client
and server functions which are quite helpful. Callback RPC’s features include:
The problems encountered with interactive applications that are handled
remotely
It provides a server for clients to use.
Due to the callback mechanism, the client process is delayed.
Deadlocks need to be managed in callbacks.
It promotes a Peer-to-Peer (P2P) paradigm among the processes involved.
RPC for Broadcast: A client’s request that is broadcast all through the
network and handled by all servers that possess the method for handling that
request is known as a broadcast RPC. Broadcast RPC’s features include:
You have an option of selecting whether or not the client’s request message
ought to be broadcast.
It also gives you the option of declaring broadcast ports.
It helps in diminishing physical network load.
Batch-mode RPC: Batch-mode RPC enables the client to line and separate
RPC inquiries in a transmission buffer before sending them to the server in a
single batch over the network. Batch-mode RPC’s features include:
It diminishes the overhead of requesting the server by sending them all at
once using the network.
It is used for applications that require low call rates.
It necessitates the use of a reliable transmission protocol.
Local Procedure Call Vs Remote Procedure Call:
Remote Procedure Calls have disjoint address space i.e. different address
space, unlike Local Procedure Calls.
Remote Procedure Calls are more prone to failures due to possible
processor failure or communication issues of a network than Local
Procedure Calls.
Because of the communication network, remote procedure calls take longer
than local procedure calls.
Advantages of Remote Procedure Calls:
Service-Oriented Architecture
Service-Oriented Architecture (SOA) is a stage in the evolution of application
development and/or integration. It defines a way to make software components
reusable using the interfaces.
Formally, SOA is an architectural approach in which applications make use of
services available in the network. In this architecture, services are provided to
form applications, through a network call over the internet. It uses common
communication standards to speed up and streamline the service integrations
in applications. Each service in SOA is a complete business function in itself.
The services are published in such a way that it makes it easy for the
developers to assemble their apps using those services. Note that SOA is
different from microservice architecture.
SOA allows users to combine a large number of facilities from existing
services to form applications.
SOA encompasses a set of design principles that structure system
development and provide means for integrating components into a coherent
and decentralized system.
SOA-based computing packages functionalities into a set of interoperable
services, which can be integrated into different software systems belonging
to separate business domains.
The different characteristics of SOA are as follows :
Provides interoperability between the services.
Provides methods for service encapsulation, service discovery, service
composition,
service reusability and service integration.
Facilitates QoS (Quality of Services) through service contract based on
Service Level
Agreement (SLA).
Provides loosely couples services.
Provides location transparency with better scalability and availability.
Ease of maintenance with reduced cost of application development and
deployment.
There are two major roles within Service-oriented Architecture:
1. Service provider: The service provider is the maintainer of the service and
the organization that makes available one or more services for others to
use. To advertise services, the provider can publish them in a registry,
together with a service contract that specifies the nature of the service, how
to use it, the requirements for the service, and the fees charged.
2. Service consumer: The service consumer can locate the service metadata
in the registry and develop the required client components to bind and use
the service.
Services might aggregate information and data retrieved from other services or
create workflows of services to satisfy the request of a given service
consumer. This practice is known as service orchestration Another important
interaction pattern is service choreography, which is the coordinated
interaction of services without a single point of control.
Components of SOA:
Guiding Principles of SOA:
1. Standardized service contract: Specified through one or more service
description documents.
2. Loose coupling: Services are designed as self-contained components,
maintain relationships that minimize dependencies on other services.
3. Abstraction: A service is completely defined by service contracts and
description documents. They hide their logic, which is encapsulated within
their implementation.
4. Reusability: Designed as components, services can be reused more
effectively, thus reducing development time and the associated costs.
5. Autonomy: Services have control over the logic they encapsulate and,
from a service consumer point of view, there is no need to know about their
implementation.
6. Discoverability: Services are defined by description documents that
constitute supplemental metadata through which they can be effectively
discovered. Service discovery provides an effective means for utilizing
third-party resources.
7. Composability: Using services as building blocks, sophisticated and
complex operations can be implemented. Service orchestration and
choreography provide a solid support for composing services and achieving
business goals.
Advantages of SOA:
Service reusability: In SOA, applications are made from existing services.
Thus, services can be reused to make many applications.
Easy maintenance: As services are independent of each other they can be
updated and modified easily without affecting other services.
Platform independent: SOA allows making a complex application by
combining services picked from different sources, independent of the
platform.
Availability: SOA facilities are easily available to anyone on request.
Reliability: SOA applications are more reliable because it is easy to debug
small services rather than huge codes
Scalability: Services can run on different servers within an environment,
this increases scalability
Disadvantages of SOA:
High overhead: A validation of input parameters of services is done
whenever services interact this decreases performance as it increases load
and response time.
High investment: A huge initial investment is required for SOA.
Complex service management: When services interact they exchange
messages to tasks. the number of messages may go in millions. It becomes
a cumbersome task to handle a large number of messages.
Virtualization in Cloud Computing
Virtualization is the "creation of a virtual (rather than actual) version of
something, such as a server, a desktop, a storage device, an operating system or
network resources".
Characteristics of Virtualization
1. Increased Security –
The ability to control the execution of a guest program in a completely
transparent manner opens new possibilities for delivering a secure, controlled
execution environment. All the operations of the guest programs are generally
performed against the virtual machine, which then translates and applies them to
the host programs.
A virtual machine manager can control and filter the activity of the guest
programs, thus preventing some harmful operations from being performed.
Resources exposed by the host can then be hidden or simply protected from the
guest. Increased security is a requirement when dealing with untrusted code.
Example-1: Untrusted code can be analyzed in Cuckoo sandboxes
environment.
The term sandbox identifies an isolated execution environment where
instructions can be filtered and blocked before being translated and executed in
the real execution environment.
2. Managed Execution –
In particular, sharing, aggregation, emulation, and isolation are the most
relevant features.
Functions enabled by a managed execution
3. Sharing –
Virtualization allows the creation of a separate computing environment within
the same host. This basic feature is used to reduce the number of active servers
and limit power consumption.
4. Aggregation –
It is possible to share physical resources among several guests, but virtualization
also allows aggregation, which is the opposite process. A group of separate
hosts can be tied together and represented to guests as a single virtual host. This
functionality is implemented with cluster management software, which
harnesses the physical resources of a homogeneous group of machines and
represents them as a single resource.
5. Emulation –
Guest programs are executed within an environment that is controlled by the
virtualization layer, which ultimately is a program. Also, a completely different
environment with respect to the host can be emulated, thus allowing the
execution of guest programs requiring specific characteristics that are not
present in the physical host.
6. Isolation –
Virtualization allows providing guests—whether they are operating systems,
applications, or other entities—with a completely separate environment, in
which they are executed. The guest program performs its activity by interacting
with an abstraction layer, which provides access to the underlying resources.
The virtual machine can filter the activity of the guest and prevent harmful
operations against the host.
Besides these characteristics, another important capability enabled by
virtualization is performance tuning. This feature is a reality at present, given
the considerable advances in hardware and software supporting virtualization. It
becomes easier to control the performance of the guest by finely tuning the
properties of the resources exposed through the virtual environment. This
capability provides a means to effectively implement a quality-of-service (QoS)
infrastructure.
7. Portability –
The concept of portability applies in different ways according to the specific
type of virtualization considered.
In the case of a hardware virtualization solution, the guest is packaged into a
virtual image that, in most cases, can be safely moved and executed on top of
different virtual machines.
Taxonomy of virtualization
Virtual machines are broadly classified into two types: System Virtual
Machines (also known as Virtual Machines) and Process Virtual
Machines (also known as Application Virtual Machines). The
classification is based on their usage and degree of similarity to the linked
physical machine. The system VM mimics the whole system hardware
stack and allows for the execution of the whole operating system Process
VM, on the other hand, provides a layer to an operating system that is
used to replicate the programming environment for the execution of
specific processes.
Java Virtual Machine (JVM) and Common Language Runtime are two
popular examples of Process VMs that are used to virtualize the Java
programming language and the.NET Framework programming
environment, respectively.
Execution Virtualization
When an execution environment is virtualized at unlike levels of the stack of
computation then it requires a reference model which defines the interfaces
within the level of abstractions, and this level of abstraction hides the details of
implementations.
This projects an idea that, virtualization techniques can substitute any one layer
and can intercept the calls which are directed to it. That’s why a clear separation
within the layers can simplify their implementations, which only need an
emulation of the interfaces and a proper response with the underlying layer.
At the base layer, the model for the hardware is declared or manifested on terms
of an architecture i.e. Instruction Set Architecture (ISA).
Figure- A machine reference model
Instruction Set Architecture (ISA) defines the instruction set for the
processor, registers, memory, and interrupt management. It is an interface
between software and hardware and It is mandatory for the operating system
(OS) developer (system ISA) developers of applications who directly manages
core hardware (user ISA). The operating system layer is separated by the
application binary interface (ABI) from the application and libraries, which are
managed by operating system.
Application Binary Interface (ABI) covers facts such as low-level data types
and call conventions and it also defines a format for many programs. Mainly,
system calls are defined at this level. Moreover, this type of interface enables
portability of various applications and libraries across OS which employ the
same ABI. Application programming interface (API) is represented by the
highest level of abstraction. This API interfaces applications to libraries and/or
the core OS. For an action is to be performed in the application level API, ABI
and the two which are responsible to make it done. Mainly, CPU runs on two
privilege levels:
1. User Mode: In this mode, memory access is restricted up to some limit
whereas access to peripherals is denied.
2. Kernel Mode: In this mode, CPU has instructions which manage memory
and how to be accessed and it also has instructions which enable access of
the peripherals like disks and network cards. From one running program to
another running program, CPU switches automatically. The expansions and
applications of computing system are simplified by this layered approach.
Application of multitasking and co-existence of multiple executing is
simplified by this layered approach.
The first can be made within privileged and non-privileged instructions. Those
instructions which can be used with interrupting with another task are known as
Non- privileged instruction. They are also called so because shared resources
are not accessed. Ex- contains all the fixed points, floating and arithmetic
instructions. The instructions which are executed under particular restrictions
and which are frequently used for sensitive operations (which expose behavior-
sensitive or modify control sensitive) are known as privileged instructions.
Types of Virtualization: virtualization.
1. Application Virtualization:
Application virtualization helps a user to have remote access of an application
from a server. The server stores all personal information and other
characteristics of the application but can still run on a local workstation
through the internet. Example of this would be a user who needs to run two
different versions of the same software. Technologies that use application
virtualization are hosted applications and packaged applications.
2. Network Virtualization:
The ability to run multiple virtual networks with each has a separate control
and data plan. It co-exists together on top of one physical network. It can be
managed by individual parties that potentially confidential to each other.
Network virtualization provides a facility to create and provision virtual
networks—logical switches, routers, firewalls, load balancer, Virtual Private
Network (VPN), and workload security within days or even in weeks.
3. Desktop Virtualization:
Desktop virtualization allows the users’ OS to be remotely stored on a server
in the data centre. It allows the user to access their desktop virtually, from any
location by a different machine. Users who want specific operating systems
other than Windows Server will need to have a virtual desktop. Main benefits
of desktop virtualization are user mobility, portability, easy management of
software installation, updates, and patches.
4. Storage Virtualization:
Storage virtualization is an array of servers that are managed by a virtual
storage system. The servers aren’t aware of exactly where their data is stored,
and instead function more like worker bees in a hive. It makes managing
storage from multiple sources to be managed and utilized as a single
repository. storage virtualization software maintains smooth operations,
consistent performance and a continuous suite of advanced functions despite
changes, break down and differences in the underlying equipment.
5. Server Virtualization:
This is a kind of virtualization in which masking of server resources takes
place. Here, the central-server(physical server) is divided into multiple
different virtual servers by changing the identity number, processors. So, each
system can operate its own operating systems in isolate manner. Where each
sub-server knows the identity of the central server. It causes an increase in the
performance and reduces the operating cost by the deployment of main server
resources into a sub-server resource. It’s beneficial in virtual migration, reduce
energy consumption, reduce infrastructural cost, etc.
6. Data virtualization:
This is the kind of virtualization in which the data is collected from various
sources and managed that at a single place without knowing more about the
technical information like how data is collected, stored & formatted then
arranged that data logically so that its virtual view can be accessed by its
interested people and stakeholders, and users through the various cloud
services remotely. Many big giant companies are providing their services like
Oracle, IBM, At scale, Cdata, etc.
Cloud Computing and Virtualization
1. Cloud Computing :
Cloud computing is a client-server computing architecture. In cloud
computing, resources are used in centralized pattern and cloud computing is a
high accessible service. Cloud computing is a payment and useful business
tool, users pay for usage.
2. Virtualization:
Virtualization is the establishment of cloud computing. It is this novelty that
empowers a continuous asset age from certain eccentric conditions or a
singular physical device framework. Here the job of hypervisor is essential,
which is legitimately associated with the equipment to make a few virtual
machines from it. These virtual machines working is unmistakable,
independent and doesn’t meddle with one another.In the condition of disaster
recovery, it relies on single peripheral device as single dedicated hardware do
a great job in it.
Virtualization exists in different classes which are:-
virtualization.
Ring 0,
Ring 1,
Ring 2,
Ring 3
Here, Ring 0 represents the level having most privilege and Ring 3 represents
the level having least privilege. Almost all the frequently used Operating
system, except for OS/2, uses only two levels i.e. Ring 0 for the Kernel code
and Ring 3 for user application and non-privilege OS program. This provides a
chance to the Xen to implement paravirtualization. This enables Xen to control
unchanged the Application Binary Interface (ABI) thus allowing a simple shift
to Xen-virtualized solutions, from an application perspective.
Due to the structure of x86 instruction set, some instructions allow code
execution in Ring 3 to switch to Ring 0 (Kernel mode). Such an operation is
done at hardware level, and hence between a virtualized environment, it will
lead to a TRAP or a silent fault, thus preventing the general operation of the
guest OS as it is now running in Ring 1.
This condition is basically occurred by a subset of system calls. To eliminate
this situation, implementation in operating system requires a modification and
all the sensitive system calls needs re-implementation with hypercalls. Here,
hypercalls are the particular calls revealed by the virtual machine (VM)
interface of Xen and by use of it, Xen hypervisor tends to catch the execution
of all the sensitive instructions, manage them, and return the control to the
guest OS with the help of a supplied handler.
Paravirtualization demands the OS codebase be changed, and hence all
operating systems can not be referred to as guest OS in a Xen-based
environment. This condition holds where hardware-assisted virtualization can
not be free, which enables to run the hypervisor in Ring 1 and the guest OS in
Ring 0. Hence, Xen shows some limitations in terms of legacy hardware and in
terms of legacy OS.
In fact, these are not possible to modify to be run in Ring 1 safely as their
codebase is not reachable, and concurrently, the primary hardware hasn’t any
support to execute them in a more privileged mode than Ring 0. Open source
OS like Linux can be simply modified as its code is openly available, and Xen
delivers full support to virtualization, while components of Windows are
basically not compatible with Xen, unless hardware-assisted virtualization is
available. As new releases of OS are designed to be virtualized, the problem is
getting resolved and new hardware supports x86 virtualization.
Pros:
a) Xen server is developed over open-source Xen hypervisor and it uses a
combination of hardware-based virtualization and paravirtualization. This
tightly coupled collaboration between the operating system and virtualized
platform enables the system to develop lighter and flexible hypervisor that
delivers their functionalities in an optimized manner.
b) Xen supports balancing of large workload efficiently that capture CPU,
Memory, disk input-output and network input-output of data. It offers two
modes to handle this workload: Performance enhancement, and For
handling data density.
c) It also comes equipped with a special storage feature that we call Citrix
storage link. Which allows a system administrator to uses the features of
arrays from Giant companies- Hp, Netapp, Dell Equal logic etc.
d) It also supports multiple processor, Iive migration one machine to
another, physical server to virtual machine or virtual server to virtual
machine conversion tools, centralized multiserver management, real time
performance monitoring over window and linux.
Cons:
a) Xen is more reliable over linux rather than on window.
b) Xen relies on 3rd-party component to manage the resources like drivers,
storage, backup, recovery & fault tolerance.
c) Xen deployment could be a burden some on your Linux kernel system as
time passes.
d) Xen sometimes may cause increase in load on your resources by high
input-output rate and and may cause starvation of other Vm’s.
VMware: Full Virtualization
In full virtualization primary hardware is replicated and made available to the
guest operating system, which executes unaware of such abstraction and no
requirements to modify. Technology of VMware is based on the key concept of
Full Virtualization. Either in desktop environment, with the help of type-II
hypervisor, or in server environment, through type-I hypervisor, VMware
implements full virtualization. In both the cases, full virtualization is possible
through the direct execution for non-sensitive instructions and binary translation
for sensitive instructions or hardware traps, thus enabling the virtualization of
architecture like x86.
Full Virtualization and Binary Translation –
VMware is widely used as it tends to virtualize x86 architectures, which
executes unmodified on-top of their hypervisors. With the introduction
of hardware-assisted virtualization, full virtualization is possible to achieve by
support of hardware. But earlier, x86 guest operating systems unmodified in a
virtualized environment could be executed only with the use of dynamic binary
translation.
Since the set of sensitive instruction is not a subset of privileged instruction, x86
architecture design is not satisfy the first theorem of virtualization. Due to this
different behaviour occurs while such instructions are not run in the Ring 0,
which is normal in a virtualization environment where the guest OS is run in
Ring 1. Basically, a trap is created, and the method in which it manages
differentiation of the solution in which virtualization is applied for x86. In
dynamic binary translation, the trap encounters the translation of interrupts or
offending instructions into a corresponding set of instructions that establishes
the same target without making exceptions. In addition, to expand performance,
the corresponding set of instruction is cached, so the translation is not important
anymore for further encounters of the same instructions. Below is the figure
which demonstrates it.
Virtualization Benefits