It's not up to Windows to actually use resources at 100% but rather your workflow determines which resources get used the most. For example: If you code for mobile platforms it may be common to have your main IDE open, along with a browser with 50+ tabs and a couple emulators, that kind of workflow may consume A LOT of ram, possibly 90-100% most of the time, but it may be a little bit ligther on CPU (50-70% across all cores) and even less on network and I/O. Another scenario may be archiving and compressing a lot of files which may easily use up 100% of your cores but probably not all RAM (depending on the algortihm, and the amount of RAM, of course). The OS is in charge of orchestrating the whole mess that is your everyday and allocate resources accordingly, so yes, Windows and other OSes will try to use resources at their fullest.
But here disk is also used for 2% so CPU is not waiting for data. – codemirror – 2017-09-24T06:23:00.097
@codemirror As mentioned, the CPU could be waiting for some operation that doesn't necessarily cause the drive (or any other component) to be under full load. For example, the CPU could wait for the disk to confirm a file being written completely. At the same time the disk is still ready to receive other commands, so it is not considered to run at 100% while processing this request. Imagine ordering something at a restaurant. While you wait for your meal this doesn't necessarily mean that someone else can't order (the waiter isn't at 100% load), but you can't progress with your visit (thread). – Mario – 2017-09-24T06:31:03.777
Got it thanks, so it means that we have gone very far in hardware parallelisms but a lot of softwares are still not properly multithreaded. – codemirror – 2017-09-24T06:33:24.867
1And there are many things which can't be parallelized at all fullstop. – codemirror – 2017-09-24T06:34:31.487
@codemirror Yes, basically. Modern GPUs run thousands of threads on parallel (e.g. one per pixel), because the task can be parallelized. But there are things you can only do step by step, so it's not necessarily the author's fault. – Mario – 2017-09-24T06:35:23.230
For the record: I can have a 16 core CPU and can easily spawn 16 single-threaded processes spinning on sqrt() and the CPU will run them all in parallel using up 100% of CPU across all cores. The point is: it's up to the OS and not entirely on the app. – arielnmz – 2017-09-24T06:41:04.127