Windows 2000 and Dual Processors

Prometheus

Junior Member
Oct 14, 1999
11
0
0
How do I change one processor to work on forground applications and the other to background applications? Thanks in advance..
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
Processes are processes, the kernel scheduler doesn't discern between foreground and background ones, the CPU load will be distributed evenly across all processes (unless you set the priority of a certain process which will cause it to be more or less eligable for CPU time at each schedule). You can right click on a process in task manger and set it's affinity so it can only run on certain CPUs, but that's pretty much pointless.
 

Saltin

Platinum Member
Jul 21, 2001
2,175
0
0
.

<< Processes are processes, the kernel scheduler doesn't discern between foreground and background ones >>



Under system properties, Advanced Tab, Performace options, you can select wether you want to optimize performance for Background or applications. (this is win2k). Does the kernel handle this? I dunno. Can you do it on a per/processor basis? I dunno.
It can be done for one processor though, that much is certain. So somewhere, some part of the OS is making a distinction between background processes and application processes.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
I havn't read the Inside Windows book nor do I have the source so I can't say for sure, but the option you're talking about is set to "Background processes" by default on Server editions so it may make the distinction by which process has a window station associated with it, or they may have a list of hard coded names that automatically get higher priority, like they do in task manager for processes you can't kill.

But in any event, it doesn't do what the original poster was asking. And it would be a waste of a CPU anyway, since most of Windows' services are sleeping most of the time anyway unless it's extraordinarly busy.
 

Shadow07

Golden Member
Oct 3, 2000
1,200
0
0
Well, you can and you can't. You cannot set one processor to only process foreground applications and the other to do background processes. You will need to go into the NT Task Manager, click on Processes, Right-Click on a process and select PROCESS AFFINITY. You have the option of selecting which processor you want that process to take over. You can then go back to the original configuration, which is both (or how ever many processors you have) processors.

The NT Kernel uses a process called Symmetric Multiprocessing.

(CLIP from here.)

Scheduling On Multiprocessor Systems
A multiprocessing operating system is one that can run on computer systems that contain more than one processor. Windows NT is a symmetric multiprocessing (SMP) system, meaning that it assumes that all of the processors are equal and that they all have access to the same physical memory. Therefore, Windows NT can run any thread on any available processor regardless of what process, user or Executive, owns the thread.

There are also asymmetric multiprocessing (ASMP) systems in which processors are different from each other--they may address different physical memory spaces, or they may have other differences. These operating systems only run certain processes on certain processors--for instance, the kernel might always execute on a particular processor.

The design of Windows NT supports processor affinity, whereby a process or thread can specify that it is to run on a particular set of processors, but this facility isn't supported in the first release.

Windows NT uses the same rules for scheduling on a multiprocessor system as it does on a single processor system, so at any given time the threads that are ready and have the highest priorities are actually running.