When they say OS requires modification, what do they mean in Virtualization? - operating-system

I'm reading an article about Xen, a virtual machine monitor. They say that an operating system requires some modification in order to be able to act as a guest OS on top of Xen. Now, for an OS like Linux, I can understand what a "modification" might mean but in the case of an OS like say, Windows XP, what does it mean? I mean, XP is closed source proprietary OS right?

It means exactly the same thing. It's just harder because the source is not widely available. Note that the modifications are no longer required when Xen is used in conjunction with hardware virtualization.

Xen was originally a university project. As a researcher (or as a government agency tasked with infrastructure security), you can get the Windows sourcecode from Microsoft. You're just not allowed to distribute your own version of Windows.
This is exactly what they did: they had the sourcecode of Windows XP and then they ported XP to Xen, just to show that if Microsoft were ever to officially support Xen, it would be doable.

On the other hand, although para-virtualization cannot provide an end-to-end virtualization solution, it can improve performance.

Related

Is running a Windows on mac the same or very close to running windows traditionally?

It's been my understanding the OS sits on top of the hardware. Is it more or less the same to run windows from a macbook? When installing SQL on a windows partition, does this install similar to an all Windows setup?
I've heard the kernel is the main connector between hardware and basic OS, so would the mac kernel cause potential differences in operation?
Would installing the linux OS also adhere to these rules?
Thanks, and sorry for the simple question.
Generally, you are correct to say that, installing different operating systems on the same hardware would be the same. You will be able to both install Windows and Linux on the same laptop (whether that would be an Asus brand laptop, or HP, or whatever). Once you install an OS on some hardware, and the OS is able to recognize the hardware, and is able to utilize it, then you are in the clear. What's important is to install on OS that is compatible with the architecture of the computer. So if you get a Linux distro that supports x86 architecture, then you would have to install it on hardware that is with a x86 architecture.
Side note: Modern OS's are very smart and they have a wide range of architecture support (list of Linux architecture support, Windows support for ARM, Apple also has a wide range of architecture support).
Since you are asking about a macbook and Windows, then the short answer is: there won't be a problem for you to install Windows on your mac. Apple even gives you Boot Camp to easily do this (there are also quite a bit of recent tutorials on this topic as well).
So the end experience would be almost the same as having Windows on any other machine.
I've heard the kernel is the main connector between hardware and basic OS, so would the mac kernel cause potential differences in operation?
This is true. The kernel is the heart of any OS, but once you have your Windows running, it would be using its own heart and it won't touch the mac kernel. So if you remove your macOS and install only Windows, then only the Windows kernel would be taking control of the Mac hardware. But if you load your macOS, then the Mac kernel would be running and operating on the hardware.
Will Windows run faster on Mac hardware than macOS on its hardware? It's debatable and I would assume not a lot of studies have been made in that sphere. But, at least, it will run.
But what about dual-booting your macbook with Linux? Technically, it is possible (and the principle is the same), but Apple have made restrictions to their firmware, limiting the option of having both a macOS and a Linux distro at the same time. What's so different here than the case with Windows? Well mainly that the firmware of the macbook (the software embedded in the hardware of the laptop) doesn't allow for Linux to be installed. Maybe things have changed, but these are the (not so recent anymore) news I know about (I guess there are still ways of installing Linux on mac hardware).

I've heard that Smalltalk is also an OS. How can I install Smalltalk on my X86 instead of Linux or windows?

I've heard that Smalltalk is also an OS.
How can I install Smalltalk on my X86 instead of Linux or windows?
What are the steps to do that?
Any tutorials on installing Smalltalk on a bare-metal machine ?
I don't know if there is a standalone smalltalk environment, but you can try squeak, which runs above your os (linux, windows or mac). Not just an os but a complete working environment.
There was a project called SqueakNOS. That was the only post-PARC experiment to use Smalltalk directly loaded over the hardware, with no other operating system. It had even a version to work on an OLPC.
I don't know if currently someone follows that development, but it's very interesting and an excellent place to learn about hardware, in human-readable (but executable) terms. You can see and debug how a device driver works, for instance.
Smalltalk Virtual Machine is handling memory allocation, access to file systems, network connections, process (green thread)...
So viewed from Smalltalk world, it is very similar to an OS.
But how to implement the virtual machine without an underlying OS?
There is a project SqueakNOS and a fork PharoNOS meaning No Operating System, whose goal is to completely bypass the OS, and have Squeak/Pharo running on bare hardware.
So yes, it's possible.
But what you'll get with this is still a Smalltalk world, maybe not what you expect from a linux or windows distribution...

Which operating system uses the lowest amount of system ressources?

I'm using a program that is calculating things as it receives information and I need it to be running on multiple virtual machines on my PC at the same time.
Now before I was going to set this up, I was wondering which operating system would be ideal to be running on the virtual machines to run as many of them as possible on restricted ressources? The only requirement is that my program is not able to run on Linux.
I was thinking of going back to Windows XP on each virtual machine, assuming the newer operating systems are taking too much ressources for themselves, but that's just a guess.
Hope someone has more knowledge than me about this and can help me out.
Thank you!
If you are NEVER going to take these VMs online XP is a better choice. Windows 8.1 (as well as 10) is a recent design and hence is designed for high powered modern hardware, XP was designed long ago for old slower hardware. Running an older OS on newer hardware will allow it to compartively quick, certainly much faster than a new OS on old hardware. Another matter is what programs you will run, if it is old programs they will be compatible with XP, if it is new ones there is a chance XP will not be able to run them. If you are going to take these VMs online then XP is a bad idea, wonderful an operating system as it was it is now becoming insecure due microsoft stopping producing updates to patch holes in it, And do not forget also that Microsoft wouldn't support XP anymore (http://windows.microsoft.com/en-us/windows/end-support-help), so you should go back to the drawing table and fix your priorities and needs and then decide , cheers !
If you cannot run *NIX / BSD Systems you can use WFL windows xp for legacy computers it works on 128 mb RAM
Update: i386 old systems.

Virtualization solution

I am looking into playing around with virtualization and I was wondering if there is any software that acts as the host OS but operates much like virtual box or parallels? What I mean by this is basically is there an "OS" that more or less acts as a window manager for other virtualized desktops?
Thanks!!
Yes, Citrix XenClient does exactly what you're looking for (and they've got a free version, XenClient Express)
Unfortunately due to the nature of virtualization on "bare metal" (without an OS) the Hypervisor (the OS bit that hosts the VMs) needs to be compatible with your exact hardware.
For more information, checkout the XenClient Hardware Compatibility List. The best value machine you can get is probably the Dell Optiplex 780.

Virtual Machine Benchmarks

I am using VMware Server 1.0.7 on Windows XP SP3 at the moment to test software in virtual machines.
I have also tried Microsoft Virtual PC (do not remeber the version, could be 2004 or 2007) and VMware was way faster at the time.
I have heard of Parallels and VirtualBox but I did not have the time to try them out. Anybody has some benchmarks how fast is each of them (or some other)?
I searched for benchmarks on the web, but found nothing useful.
I am looking primarily for free software, but if it is really better than free ones I would pay for it.
Also, if you are using (or know of) a good virtualization software but have no benchmarks for it, please let me know.
From my experience of Parallels and VMware (on the PC and more extensively on the Mac) the difference between any 2 competing versions of the software is usually quite small and often 'reversed' in the next releases.
I never found Parallels to be much faster (or slower) than VMware - it often would be a case of the state of the VM I was running, the host machine itself and the app(s) I was running within the VM. If VMWare brought out a new release which did something faster, you could be sure that Parallels would improve their performance in that area in the next release, too.
In the end I settled on VMWare Fusion and the key reason for this was just that it played nicely with VMware Workstation on the PC. I have trouble taking Parallels VMs from the Mac to the PC and back again, and this worked fine on VMware. Finally, though this is less of a concern, I was unhappy that sometimes it felt as if Parallels would release a version without proper regression testing - you'd get the up-to-date version and find that networking was suddenly unexplicably broken until they released another patch a few days later. I doubt this is still the case but VMware always felt a little more 'in control' and professional to me.
I'd go for a solution that you can get running in a stable fashion on your PC, that is compatible with your other requirements (such as your co-workers' platforms and your overall budget). You can waste your lifetime trying to measure which one is faster at any given task!
One other thing - it's worth checking the documentation that comes with the software, and any forums etc, before making judgements about performance. For instance, in my experience throwing huge amounts of ram at your VM (at the expense of free ram in the host system) does NOT automatically make it faster; better to split the ram up evenly, and certainly keep an eye on any recommended figure. In VMware, that recommended figure is a good guide.
You'll get best performance if your hardware supports hardware virtualization, such as AMD's AMD-V or Intel's VT, and you enable this feature on the computer and in your virtualization software.
For Microsoft solutions, you need at least Virtual PC 2007 or Virtual Server 2005 R2 SP1, or Hyper-V on Windows Server 2008 (I don't expect you'll rebuild your system just to run Hyper-V, but I thought I'd mention it).
Subjectively I haven't noticed any difference between Virtual PC and VMware Workstation performance; I'm using VMware now as it supports USB virtualization, which Virtual PC doesn't.
You also generally need to install appropriate custom, virtualization-aware, drivers in the guest OS, as the standard drivers are expecting to talk to real hardware. In Virtual PC and Server these are called Additions, in VMware they are VMware Tools.
Anandtech has some great info on virtualization. Although they are not any benchmarks, it provides a great insight on why it is so difficult to do proper virtualization benchmarks. I cannot suggest you a specific product, because it depends very much on your requirements.