There are billions of desktop users in the world, it means a lot to
improve computer system for them. As a desktop user and a software
engineer, I've thought a lot regarding as desktop user experience
recently. I think there are a lot of relationship between "Real-Time"
and Desktop User Experience.
My Ph.D. thesis is about real-time operating system. From academic
view, in computer science, the term "Real-Time" has an strict
definition, it mainly means, in a real-time system, a compute task must
be completed within the expected time. In practice, especially in the
desktop area, while its academic meaning is sometimes still kept, this
term also means "quick response to user's instructions". Desktop users
always would like their computers behave in a real-time way, for
example, they would like the audio/video player always output smoothly
instead of having pauses; they would like the application window pops
up and is ready for use immediately when double clicked, instead of
having to look at the progress bar growing; they would like the
computer boot/shutdown process to be as short as a snap instead of
So, we know that one of the main aspects of desktop user experience is
"real-time". To distinguish with other kinds of real-time, I would like
to call it "Desktop Real-Time" here, this kind of real-time is mainly
about desktop user experience.
There are a couple of issues can be discussed regarding as desktop real-time:
- Multi-media applications' performance, such as audio/video play and record.
- Application start-up speed.
- GUI operations, like mouse movement, window switch, window resize/move, etc.
- System boot & shutdown time.
- Switch time between power management levels, for example, suspend to
disk from full power level, resume to full power from sleep level, etc.
All of the above issues impact desktop user experience. Users,
including me, will be very happy if the above issues can be solved.
There are mainly three ways to improve the real-time feature:
- Improve the hardware executing speed, such as CPU speed, I/O speed, etc.
- Improve the application performance by optimizing each of the application code
- Improve the resource management framework to make use of the system
hardwares as reasonable as possible. The word "reasonable" here means,
system should assign the hardware resources to the applications which
impact real-time feature most at the moment. There are several things
need to be done to reach such an aim:
- Improve the OS scheduling infrastructure, such as processor
schedulers, application virtualization mechanisms (e.g., zones), etc.
- Create configuration tools for users to conveniently configure
the applications that they want them to be real-time. For example, to
set a high scheduling priority for a most often used application.
- Pre-load some applications from disk to system memory or some
kinds of caches. This will impact the real-time feature significantly
because the disk I/O is usually the bottle neck.
The first two ways are up to the computer hardware vendors and
application vendors. The third way mainly depends on operating system
vendors, sometimes, also depends on infrastructure hardware vendors.
Apparently, people are always trying their best to improve real-time
feature in the first two ways, there are a lot of issues can be
discussed in the detail technologies. I personally am more interested
in the third way, I am now working on it for Solaris OS in my spare
time. Hope there will be any progress soon.