Sunteți pe pagina 1din 15

VIRTUAL MACHINES

BY

NAME
(COM/HND/16/17/00000)

DEPARTMENT OF COMPUTER SCIENCE

DELTA STATE POLYTECHNIC, OGWASHI-UKU

SEMINAR SUPERVISOR: DR. ASHIOBA NWANZE

MAY, 2018

1
Abstract
In this seminar paper, we explore the relevance of virtual machines. Virtual Machine is a
completely separate individual operating system installation on your usual operating system.
It is implemented by software emulation and hardware virtualization. Virtual machine is a
software implementation of a physical machine - computer - that works and executes
analogically to it. Virtual machines are divided in two categories based on their use and
correspondence to real machine: system virtual machines and process virtual machines. First
category provides a complete system platform that executes complete operating system,
second one will run a single program. Frequently multiple virtual machines with their own
OS's are used in server consolidation, where different services are run in separate virtual
environments, but on the same physical machine.

2
Table of Contents
Title Page ......................................................................................................................................... 1

Abstract ............................................................................................................................................ 2

1.0 Introduction ................................................................................................................................ 4

2.0 Definition of a Virtual Machine ................................................................................................. 7

2.1 Types of Virtual Machines ......................................................................................................... 7

2.2 Applications of Virtual Machines .............................................................................................. 9

2.3 Advantages & Disadvantages of Virtual Machines ................................................................. 12

2.3.1 Advantages of Virtual Machines ........................................................................................... 12

2.3.2 Disadvantages of Virtual Machines ...................................................................................... 13

2.4 Components of Virtual Machines ............................................................................................ 13

3.0 Conclusion................................................................................................................................ 14

References ...................................................................................................................................... 15

3
1.0 Introduction

In computing, a virtual machine (VM) is an emulation of a computer system. Virtual machines

are based on computer architectures and provide functionality of a physical computer. Their

implementations may involve specialized hardware, software, or a combination.

There are different kinds of virtual machines, each with different functions:

1. System virtual machines (also termed full virtualization VMs) provide a substitute for

a real machine. They provide functionality needed to execute entire operating systems.

A hypervisor uses native execution to share and manage hardware, allowing for

multiple environments which are isolated from one another, yet exist on the same

physical machine. Modern hypervisors use hardware-assisted virtualization,

virtualization-specific hardware, primarily from the host CPUs.

2. Process virtual machines are designed to execute computer programs in a platform-

independent environment.

Some virtual machines, such as QEMU, are designed to also emulate different architectures

and allow execution of software applications and operating systems written for another CPU

or architecture. Operating-system-level virtualization allows the resources of a computer to

be partitioned via the kernel's support for multiple isolated user space instances, which are

usually called containers and may look and feel like real machines to the end users. Both

system virtual machines and process virtual machines date to the 1960s, and continue to be

areas of active development (Arnett, 2006).

System virtual machines grew out of time-sharing, as notably implemented in the Compatible

Time-Sharing System (CTSS). Time-sharing allowed multiple users to use a computer

concurrently: each program appeared to have full access to the machine, but only one program
4
was executed at the time, with the system switching between programs in time slices, saving

and restoring state each time. This evolved into virtual machines, notably via IBM's research

systems: the M44/44X, which used partial virtualization, and the CP-40 and SIMMON, which

used full virtualization and were early examples of hypervisors. The first widely available

virtual machine architecture was the CP-67/CMS; see History of CP/CMS for details. An

important distinction was between using multiple virtual machines on one host system for

time-sharing, as in M44/44X and CP-40, and using one virtual machine on a host system for

prototyping, as in SIMMON. Emulators, with hardware emulation of earlier systems for

compatibility, date back to the IBM 360 in 1963, while the software emulation (then-called

"simulation") predates it (Arnett, 2006).

Process virtual machines arose originally as abstract platforms for an intermediate language

used as the intermediate representation of a program by a compiler; early examples date to

around 1966. An early 1966 example was the O-code machine, a virtual machine which

executes O-code (object code) emitted by the front end of the BCPL compiler. This

abstraction allowed the compiler to be easily ported to a new architecture by implementing a

new back end that took the existing O-code and compiled it to machine code for the underlying

physical machine. The Euler language used a similar design, with the intermediate language

named P (Lisker, 2007). This was popularized around 1970 by Pascal, notably in the Pascal-

P system (1973) and Pascal-S compiler (1975), in which it was termed p-code and the

resulting machine as a p-code machine. This has been influential, and virtual machines in this

sense have been often generally called p-code machines. In addition to being an intermediate

language, Pascal p-code was also executed directly by an interpreter implementing the virtual

machine, notably in UCSD Pascal (1978); this influenced later interpreters, notably the Java

5
virtual machine (JVM). Another early example was SNOBOL4 (1967), which was written in

the SNOBOL Implementation Language (SIL), an assembly language for a virtual machine,

which was then targeted to physical machines by transpiling to their native assembler via a

macro assembler (Lisker, 2007). Macros have since fallen out of favor, however, so this

approach has been less influential. Process virtual machines were a popular approach to

implementing early microcomputer software, including Tiny BASIC and adventure games,

from one-off implementations such as Pyramid 2000 to a general-purpose engine like

Infocom's z-machine, which Graham Nelson argues is "possibly the most portable virtual

machine ever created" (Lonabocker, 2003).

Significant advances occurred in the implementation of Smalltalk-80, (Arnett, 2006)

particularly the Deutsch/Schiffmann implementation (Lisker, 2007) which pushed just-in-

time (JIT) compilation forward as an implementation approach that uses process virtual

machine (Lonabocker, 2003). Later notable Smalltalk VMs were VisualWorks, the Squeak

Virtual Machine (Lisker, 2007) and Strongtalk (Lonabocker, 2003). A related language that

produced a lot of virtual machine innovation was the Self programming language (Thomas,

2008), which pioneered adaptive optimization (Shulman, 2002) and generational garbage

collection. These techniques proved commercially successful in 1999 in the HotSpot Java

virtual machine. (Thomas, 2008) Other innovations include having a register-based virtual

machine, to better match the underlying hardware, rather than a stack-based virtual machine,

which is a closer match for the programming language; in 1995, this was pioneered by the Dis

virtual machine for the Limbo language.

6
2.0 Definition of a Virtual Machine
A "virtual machine" was originally defined by Shulman (2002) as: "an efficient, isolated

duplicate of a real computer machine." Current use includes virtual machines which have no

direct correspondence to any real hardware.

2.1 Types of Virtual Machines

1. System Virtual Machines

The desire to run multiple operating systems was the initial motive for virtual machines, so as

to allow time-sharing among several single-tasking operating systems. In some respects, a

system virtual machine can be considered a generalization of the concept of virtual memory

that historically preceded it. IBM's CP/CMS, the first systems to allow full virtualization,

implemented time sharing by providing each user with a single-user operating system, the

Conversational Monitor System (CMS). Unlike virtual memory, a system virtual machine

entitled the user to write privileged instructions in their code. This approach had certain

advantages, such as adding input/output devices not allowed by the standard system. (Thomas,

2008)

As technology evolves virtual memory for purposes of virtualization, new systems of memory

over commitment may be applied to manage memory sharing among multiple virtual

machines on one computer operating system. It may be possible to share memory pages that

have identical contents among multiple virtual machines that run on the same physical

machine, what may result in mapping them to the same physical page by a technique termed

Kernel SamePage Merging. This is especially useful for read-only pages, such as those

holding code segments, which is the case for multiple virtual machines running the same or

similar software, software libraries, web servers, middleware components, etc. The guest

7
operating systems do not need to be compliant with the host hardware, thus making it possible

to run different operating systems on the same computer (e.g., Windows, Linux, or prior

versions of an operating system) to support future software. (Shulman, 2002)

The use of virtual machines to support separate guest operating systems is popular in regard

to embedded systems. A typical use would be to run a real-time operating system

simultaneously with a preferred complex operating system, such as Linux or Windows.

Another use would be for novel and unproven software still in the developmental stage, so it

runs inside a sandbox. Virtual machines have other advantages for operating system

development, and may include improved debugging access and faster reboots. (Lisker, 2007)

Multiple VMs running their own guest operating system are frequently engaged for server

consolidation. (Lonabocker, 2003)

2. Process Virtual Machines

A process VM, sometimes called an application virtual machine, or Managed Runtime

Environment (MRE), runs as a normal application inside a host OS and supports a single

process. It is created when that process is started and destroyed when it exits. Its purpose is to

provide a platform-independent programming environment that abstracts away details of the

underlying hardware or operating system, and allows a program to execute in the same way

on any platform.

A process VM provides a high-level abstraction – that of a high-level programming language

(compared to the low-level ISA abstraction of the system VM). Process VMs are implemented

using an interpreter; performance comparable to compiled programming languages can be

achieved by the use of just-in-time compilation. (Thomas, 2008)

8
This type of VM has become popular with the Java programming language, which is

implemented using the Java virtual machine. Other examples include the Parrot virtual

machine, and the .NET Framework, which runs on a VM called the Common Language

Runtime. All of them can serve as an abstraction layer for any computer language.

A special case of process VMs are systems that abstract over the communication mechanisms

of a (potentially heterogeneous) computer cluster. Such a VM does not consist of a single

process, but one process per physical machine in the cluster. They are designed to ease the

task of programming concurrent applications by letting the programmer focus on algorithms

rather than the communication mechanisms provided by the interconnect and the OS. They

do not hide the fact that communication takes place, and as such do not attempt to present the

cluster as a single machine. (Thomas, 2008)

Unlike other process VMs, these systems do not provide a specific programming language,

but are embedded in an existing language; typically such a system provides bindings for

several languages (e.g., C and Fortran).[citation needed] Examples are Parallel Virtual

Machine (PVM) and Message Passing Interface (MPI). They are not strictly virtual machines,

as the applications running on top still have access to all OS services, and are therefore not

confined to the system model.

2.2 Applications of Virtual Machines


Virtual machines have a great array of uses that would certainly come in handy for you. Here

are the top 10 reasons for using virtual machines:

9
1) Take a spin on newer versions of operating systems:

With Virtual Machines, you can adopt a safe method in running the development version of

Windows 10 on your Windows 8 computer. This method allows you to run a trial with

Windows 10 without installing an unstable version of Windows on your computer.

2) Virtualization from your own desktop:

There is an emerging trend among the IT community where users store their desktop's

applications and operating systems in a separate virtual machine in the server and use their

PC as a "thin client" to the server. Each user is isolated from all other users with the help of

virtual machine technology, and the maintenance of the applications is shifted from each user's

desktop to the datacenter.

3) Test with different operating systems:

You can also install different distributions of Linux or other lesser known operating systems

in a virtual machine to experiment with them and to understand how they work. Multiple

operating systems can run in the same server, eliminating the need to dedicate a single

machine to one application. In fact, if you have a sudden fascination or inclination in Ubuntu,

you can install it in a virtual machine and dabble with it in a window on your normal desktop.

4) Utilizing software that requests an outdated operating system:

In a situation where you have an important application that only runs on Windows XP, you

can install XP in a virtual machine and run that rather prehistoric application in the virtual

machine where compatibility isn't an issue. The best part is that virtual machines allow you

to use an application that only works with Windows XP without actually installing Windows

XP on your computer which is definitely handy since not many hardware fully support

Windows XP.

10
5) Run software formatted for other operating systems:

Mac and Linux users can also run Windows in a virtual machine to run Windows software on

their computers without the compatibility headaches of Wine and Crossover.

6) Moving and Mimicking:

Virtual machines are like transferrable self-contained packages. It is relatively easy to move

a Virtual Machine from one server to another to balance the workload, to migrate to faster

hardware, as well as to recover from hardware failure. Furthermore, Virtual Machines can be

easily mimicked and deployed.

7) Test software on many different platforms:

In an event where you need to test whether an application works on multiple operating systems

' or just for the many different versions of Windows ' you can install each in a virtual machine

instead of having many different computers around for each.

8) Consolidation:

With virtual machines, it eliminates the need to dedicate a single machine to one application.

Old and new applications can run simultaneously with their respective operating systems in

multicore servers with many threads of execution, saving space and power consumption in

the datacenter. Latest Operating system versions and new applications can be deployed

without purchasing new hardware.

9) Compile different servers for business use:

For businesses running multiple servers, your existing servers can be inserted into virtual

machines and run on a single PC. Each virtual machine is isolated, so this doesn't cause

security issues involved with running different servers on the same operating system. The

virtual machines can also be moved between physical servers.


11
10) Safety and Security:

As mentioned earlier, due to the isolation of virtual machines, an attack or a hack breach in

one does not affect the others. The fault tolerance and security brought about by the isolation

of each virtual machine is a major benefit of virtualization. This means, virtual machines can

save you time and effort in troubleshooting and fixing. The blog would have given you a basic

idea on how Virtual Machines work and its popular uses. To add additional uses to the list,

please share your comments below. The concept of virtual machines and virtualization have

evolved over the period with concentrated efforts from organizations like VMware, Citrix,

Windows etc. to optimize infrastructure challenges faced by the industry. IT Professionals can

look forward to a career in Virtualization itself with great opportunities available across the

world. The demand for professionals with virtualization skills have been constantly on the

rise. To see who's actively hiring and what virtualization technologies are they hiring for, you

may click here. At the same time, there are some good Online IT Courses on Virtualization,

with which you can learn from basics to advanced implementations.

2.3 Advantages & Disadvantages of Virtual Machines


2.3.1 Advantages of Virtual Machines
Here are some advantages of virtual machines. The advantages of using a virtual machines

include:

1. Multiple OS environments can exist simultaneously on the same machine, isolated

from each other;

2. Virtual machine can offer an instruction set architecture that differs from real

computer's;

3. Easy maintenance, application provisioning, availability and convenient recovery.

12
2.3.2 Disadvantages of Virtual Machines
1. When multiple virtual machines are simultaneously running on a host computer, each

virtual machine may introduce an unstable performance, which depends on the

workload on the system by other running virtual machines;

2. Virtual machine is not that efficient as a real one when accessing the hardware.

2.4 Components of Virtual Machines


Virtual machines are built to furnish users with their own virtual hardware, including a virtual

CPU, memory, hard drive, network interface, and other devices. The virtual hardware devices

provided by the virtual machine are pasted to real functioning hardware on your physical

machine. For instance, a virtual computer's virtual hard disk is stored in a file that is found on

your hard drive.

Moreover, you can have a few virtual machines installed on your system where you're only

constrained by the amount of storage you have available. After installing operating systems

into your virtual machines, you can open your virtual computer program and choose which

virtual machine you want to boot only when the guest operating system is activated and runs

in a window on your host operating system.

13
3.0 Conclusion

In the digital world of computing, a virtual machine (VM) is an emulation of a particular

computer system. Virtual PC machines runs on computer architecture and makes use of

functions from real or hypothetical computer where their executions may involve specialized

hardware, software, or a combination of both. Meaning to say, a virtual machine is a program

that acts as a virtual computer whereby it runs on your current operating system ' the host

operating system ' and provides virtual hardware to guest operating systems. The guest

operating system would then be running, as if it were running on a real physical computer,

and from the guest operating system perspective, the virtual machine appears to be a real,

physical computer. The guest operating systems that run in windows can be termed as

Microsoft Virtual Machines, on your host operating system, just like any other program on

your computer and there are other types of virtual machines you may know of such as Linux

Virtual Machine, Java Virtual Machine and vmware Virtual Machine. Virtualization brings

you a number of advantages – centralizing network management, reducing dependency on

additional hardware and software, etc. But as it is always the case, it has certain shortcomings

too.

14
References
ARNETT, K. et al. (2006), A strategy for the successful implementation of online

GIS applications. The Journal of the American Association of Collegiate Registrars,

Chicago.

LISKER, P. (2007), Online GIS Implementation in Ohio State.

PC Week, USA.

LONABOCKER, L. et al. (2003), GIRS at Boston College: A Successful Online Approach.

College and University, USA

THOMAS, P. et al (2008). A Systemic Approach to Digitizing Geospatial Data.

British Journal of Educational Technology, UK.

SHULMAN, R. (2002), Thinking Ahead: Geographic Information Systems.

Prime Petters Printing Press, UK

15

S-ar putea să vă placă și