Share via


Why does DOS use 100% CPU under Virtual PC?

From time to time someone notices that when they run DOS under Virtual PC it uses 100% of the host CPU to do absolutely nothing, and wonder why this is the case. The answer is relatively simple - and it is: 'DOS is never actually doing nothing'.

Most modern operating systems are designed with the concept of being able to 'do nothing'. That is - if the user is not actively providing input, and no programs are demanding attention - most operating systems will tell the CPU to 'do nothing' (usually through a HLT command - or through some more advanced power state commands).

DOS does not do this.

So when DOS is sitting at the command prompt 'doing nothing' it is actually in a very tight loop of code which is responsible for blinking the cursor and checking for new user input. As we operate at a very low level - there is no way for us to tell if DOS is actually doing something productive with the CPU or just 'running around in circles'. To help deal with this - there is a utility called 'IDLE.COM' that is part of the Virtual Machine Additions for DOS - which is able to send 'HLT' commands when it detects that DOS is 'doing nothing'. However if you start any program (like EDIT) then your CPU usage will go up to 100% again.

So at the end of the day - if you are using DOS under Virtual PC you are pretty much going to have to learn to live with the fact that it will try to use as much CPU as possible at all times.

Cheers,
Ben

Comments

  • Anonymous
    December 28, 2004
    How can I install does on Virtual PC, I have the trial and I want DOS installed and I can't figure anything out at all it keeps saying something about needing to select a boot device or insert proper boot device, what the heck does that mean??

  • Anonymous
    December 28, 2004
    You will need install DOS off of install media like you would for a blank physical computer.

    Cheers,
    Ben

  • Anonymous
    December 31, 2004
    I don't have any DOS install media, if I make a Virtual PC with Windows 98 SE and put in my Windows 98 SE disc, will that allow me to run DOS programs like when I ran 98 or do I have to make the virtual machine DOS specific to run DOS programs?

  • Anonymous
    January 05, 2005
    That's an interesting blog entry. Thanks.

  • Anonymous
    January 06, 2005
    The comment has been removed

  • Anonymous
    January 15, 2005
    What does the CPU do? When there is no program to run..
    reply me at mohsinswl@gmail.com

  • Anonymous
    January 16, 2005
    It waits for you to hit a key.

    Cheers,
    Ben

  • Anonymous
    September 01, 2015
    In the "old times" nobody used multitasking. Only if you ran a BBS :) Anyway, Quarterdeck's DESQview 386 was my multitasking solution of choice and they published a utility to solve this problem. It's called TAME and you can still find it on the web e.g. here www.filewatcher.com/.../tame320.zip.106436-0.html Cheerz, Kiro

  • Anonymous
    September 26, 2015
    You can also use POWER.EXE support.microsoft.com/.../96560 "POWER.EXE and Advanced Power Management (APM) Support", applies to Microsoft MS-DOS 6.x. You can install the Power program (POWER.EXE) even if your BIOS does not support the Advanced Power Management (APM) specification. When POWER.EXE detects that your system is idle, it saves power by issuing a CPU HALT instruction.

  • Anonymous
    October 02, 2015
    Other tool is FDAPM running e.g. from AUTOEXEC.BAT -> LH FDAPM APMDOS www.ibiblio.org/.../fdapm