Virtualization

= VIRTUALIZATION = The imitation or abstraction of a physical device with software.
 * Introduction
 * Current Uses
 * How It Works
 * Where We Are
 * Where We Are Going
 * How We Get There (Degree Focus)
 * Interviews
 * [|PowerPoint Presentation]
 * [|Video Presentation] (m4v)

Introduction
Virtualization is not new; we can trace virtualization back to the late 1960's or early 1970's. In 1972, IBM introduced their virtualization environment for their System/370, called VM 370 or VM-CP. VM370 ran a number of different guest operation systems, including CP/M (similar to DOS), another VM, Linux or other operating systems. For all intents and purposes, old-school terminals are simple virtual machines. In those environments, a local boot system loads only enough software to connect to a host server, a mainframe. The mainframe creates an environment within its own system to manage the remote terminal, and it delivers only enough information to create a display with which the user can interact. The only process running on the user end provides keyboard input and display output. Over the years these systems have waxed and waned. Specific niches within information technology hold onto these systems and demonstrate advantageous environments for these to be applied successfully.

Current Uses
Virtualization can used for servers or desktops, or operate as hardware or software. Using a layer of software to interface between the physical device and core operating system, the virtualization software allows the host computer to respond to its perceived requests from the virtual machine (VM). Likewise, the VM receives responses to its hardware requests from the virtualization software, where the virtualization software purports to be the needed hardware. This process occurs in near-realtime, and can resemble nearly any operating system, from Windows XP or Windows 7, to Linux or Mac OS X, or even XBox.

How It Works
The abstraction can be analogize to a water supply network. Computers use electrical current to trigger responses from other parts of the computer. Take for example a keyboard; when the key is depressed, a connection is made to allow current to pass through a specific circuit. This circuit composes a series of electrical pulses or bits. When these bits reach the processor, it triggers a specific response or series of responses based on condition of other bits already present. The processor does not really care if this series of bits came from the keyboard, mouse or just appeared out of thin air; its response to the bits will be the same. In a water supply network, water comes from melted snow in Flagstaff, feeds various canals to reach Phoenix metro; it is then processed and passed on to feed your garden through a hose. You desire to water your plants; you do not need to know anything about the processing or melting snow. The water could have come from a reservoir adjacent to the canal. The same is true for your computer's processor. It receives the data on its circuit and reacts. The data may or may not have originated at the keyboard, but the processor reacts the same. Let us look at how virtualization occurs. The key to virtualization is the replacement of three pieces: 1) the user interface (keyboard and screen); 2) the computer memory; and 3) the data storage. The virtualization software cordons off a piece of memory that it will utilize. At each of the three pieces of virtualized hardware, the software supplants the perceived hardware with software that reacts as the virtualized operating system expects. For example, in piece one, the virtualized operating system expects a specific keyboard layout. However, the physical keyboard may not produce the same signal for an Enter-key (just for this example). To accommodate for this, the virtualization software captures the physical keyboard input, then translates it to a signal that will be understood by the virtualized operation system. This receives a signal it understands as an Enter-key and executes the appropriate response in its virtual environment. To reflect back on the analogy to water supply, the water (keyboard input) coming from the reservoir (physical device) passes through a pre-filter or barrier to protect downstream environments (virtualization interpreting keyboard input) then delivered to city water system (virtualized environment) used by you (central processor) to water the begonias (desired action).

Where We Are
In todays computer rooms, virtualization has become a critical technology to help reduce costs of growth and overhead. By adding software to existing hardware, network administrators can initiate new virtual servers on existing server hardware. This provides savings in many areas; reduced space requirement, fewer hardware purchases, and simplified maintenance – to name a few. The virtualization has extended onto the desktop. For example, with a single PC, a developer can startup any number of other platforms to test how his software will perform. With consumer level products, such as VMWare Fusion and Microsoft Virtual PC, end-users can now gain access to multiple platforms and advanced security. Here the Apple Mac has gained tremendous advantage. In decades past, software had to be purchased for a specific platform. However, with the introduction of virtualization, a Mac owner can instantiate an instance of Microsoft Windows, running on his Mac OS X platform, within a VM. This greatly opens the availability of software. To relate a personal story of applying this technology, the State of Arizona Human Resources department had special software developed to allow users to record their timesheets and submit them into the payroll system. The software design required the use of Internet Explorer 8 or later, only available on Windows. With a Windows VM on my Mac desktop, I can still take the appropriate steps to receive compensation for my work. I am sure, if I did not have this tool, I would find another way to get paid; but this does make it much simpler.

Where We Are Going
With the improved performance of processors over the past ten years and the ongoing growth in Moore's law, the abstracted layer of the VM displays less hesitation. This near-immediate response from the VM gives the users less distraction, allowing them to perform the job or desired task without waiting on the hardware to catch up. With cloud computing, these processes are now moving away from the physical hardware even further. Both public and private cloud computing gives the ability to perform processor actions much closer to remote stored data, reducing lag time for remote execution.

How We Get There
Suggested approach to the focus area, including pre-requisites. I found a specific program for Virtualization at Harrison College. Here are the courses in their program: Based partially on this, here are the courses and prerequisites I see as a good guide to focus on Virtualization at ASU. Prerequisite courses: However, to narrow this to only twelve credit hours, the CSE430, along with its prerequisites, would be a sufficient start. The prerequisites would more than fulfill the additional nine credit hours. References: Kotsovinos, E. (2011). Virtualization: Blessing or Curse?. //Communications of the ACM//, 54(1), 61-65. doi: 10.1145/1866739.1866754 Kroeker, K. (2009). The evolution of virtualization. //Communications of the ACM//, 52(3), doi: 10.1145/1467247.1467253
 * Virtual Technologies Major Focus
 * Virtual Technologies - VMware
 * Virtual Technologies - Hyper-V
 * Virtual Technologies - Citrix XenServer
 * Convergence Technologies
 * Mass Data Storage
 * Linux, Apache, MYSQL, PHP
 * SQL Server Administration
 * ACO330 Computer Networks: Network architecture and protocols, flow and congestion control, switching and routing, link-layer technologies, medium access control, physical layer basics, quality-of-service, security. (3 credit hours; prerequisite, ACO102)
 * ACO431 Network Security: Digital threats and attacks, cryptography, confidentiality, authentication protocols, message integrity, security in network applications, intrusion detection, malicious software countermeasures, firewalls. (3 credit hours; prerequisites ACO210, ACO330, and MAT243)
 * ACO432 Distributed Systems: Distributed system models, distributed programming technique, clock synchronization, distributed snapshot, distributed mutual exclusion, concurrency control, fault tolerance, security, recent advances. (3 credit hours; prerequisites ACO210 and ACO330)
 * CSE430 Operating Systems: Operating system structure and services, processor scheduling, concurrent processes, synchronization techniques, memory management, virtual memory, input/output, storage management, and file systems. (3 credit hours; prerequisites, Computer Systems Engineering BSE or Computer Science BS student; CSE 320, 325, 360; and Credit for CSE 423, 461 or 485)
 * ACO201 Data Structures and Algorithms (3 credit hours; prerequisite ACO102 and MAT210)
 * ACO210 Intro to Sys Programming: Introduces operating systems as resource managers, processes, threads, memory allocation, file systems, protection, system calls, application program interfaces. (3 credit hours; prerequisite ACO201)