What Humans Can Learn from CPUs About Multitasking
Nowadays, our minds and our computers are very busy, because we have more and more tasks to accomplish in the same amount of time. We are trying multitasking, but it seems human brains are simply not designed to operate that way! When you try to do two things at the same time, you know that is will not work long term, you can only focus on one thing at a time. That said, it is possible to deal with your tasks in a manner that appears simultaneous from the perspective of hours and days. This is effective multitasking, human edition.
We are now in multicore CPU era, but we can still remember the time that we had a single core CPU and yet had a multitasking environment. My old computer was able to play music, do some background calculations, and download a file from the Internet while I was writing a text at the same time. Multitasking operating system on a CPU that can do only one thing at a time: isn’t that exactly what we need? When we look how that has been achieved, there is a great lesson to be learned for humans.
Today, nearly all operating systems support preemptive multitasking, but there were early version of Microsoft Windows that were using cooperative multitasking, which didn’t work well. According to Wikipedia, “Preemptive multitasking involves the use of an interrupt mechanism which suspends the currently executing process and invokes a scheduler to determine which process should execute next.” Let us see what humans can learn about multitasking from that concept.
Lesson 1: Task switch is costly
What happens when task switch is initiated? We need to save the context with the intention of resuming the task at a later time. Save the context, resume another task, voila! However, it is not that easy for CPUs and it is even harder for humans. Saving context takes time and also CPUs have data cache, which stores recently used data for very quick access and switching the task will need to flush some of the cache entries. It will require some additional time to put that data back into cache. You know it probably all too well—a message pops up on your desktop when you are fully focused and it sidetracks your thought process; some cache entries are gone and it will take you minutes to regain your performance level. Lesson number 1 for humans is task switches are very, very costly!
If you react to pop-ups, enter your social media “just for one minute”, and look into your e-mail inbox every minute or two, you know why your performance suffers: your brain has to constantly save and restore the context and your “cache” is never efficient.
Lesson 2: Time boxes
Preemptive operating systems use a concept of a time slice, which is the period for which a process is allowed to run. An interruption, usually coming from a clock, will initiate a task switch. If you have a PC or Mac, this is how your CPU operates most of the time! This concept works great for CPUs, but it works even better for humans: the “Pomodoro technique” is a great example of that. I set my countdown timer and focus on just one thing. It is so powerful that it revolutionized the working style of many people.
I have all my data in very efficient cache, so my operation is very fast: I am avoiding task switches, but at the same I am sure that I will be able to accomplish all of my tasks, because my clock will tell me when to stop and/or switch. Every task switch is costly, and timeboxes are a great way to multitask effectively.
Lesson 3: Interval is carefully chosen
When using timeboxes, the main question is what intervals should I use? If it’s too short, we’ll use too much time on task switches, instead of the actual operation. When it’s too long, other tasks suffer. Can you imagine an operating system when task switch occurs every few seconds? That would be very unresponsive and annoying. The actual interval for our operating systems is usually several milliseconds.
With humans, the problem is more complex, because we are also getting tired. We cannot switch every minute, but three hours is also unrealistic; we would be very unresponsive, but also drained from energy at the same time. A good number to start with is “Pomodoro number”—25 minutes—but your personal style, energy level, work demands will influence that. Experiment and see what interval works best for you. For CPUs and operating systems, that single number is one of the most important to determine whether it is going to be responsive and have a feeling of smooth multitasking.
Lesson 4: Interrupt handling
We are constantly dealing with interruptions in our work and CPUs handle millions of interruptions as well. What makes us very different from operating systems is that their interruption handlers are usually very, very quick and they do not require a context switch. You received a phone call, you read an email, you read a short message, and you changed a tab in your browser “just to see one thing”. It was not an interruption; it was a context switch.
If we dealt with interruptions in a similar manner that CPUs, we would simply write down some information, acknowledge that we’ve received it and resume an operation. It’s just few seconds. If it was an interruption, you did not have to switch the context. Do we really need that many interruption sources?
Lesson 5: Priorities
In operating systems, tasks have their priorities—even interruptions have them. When handling an interruption of priority X, usually all the others with priority equal to or lower than X are blocked. It is a great lesson for us, because in many cases everything is equally important (and urgent!) and this is why we can rarely accomplish anything.
Humans are not CPUs. Our life is not about completing tasks effectively. We are spiritual beings; we have passion, emotions, relationships, and abstract thoughts. There is a great lesson that we can take from current CPUs and operating systems, however, and that is to multitask efficiently.
Try timeboxes to eliminate task switches, observe which intervals give you satisfaction and perception of effective multitasking, handle interrupts as interrupts should be handled and write down your priorities. When you think about multitasking, CPUs and operating systems are a great source of inspiration!
Love this article? Share it with your friends on Facebook