Application, Program, Process, Service, Thread; What Does it All Mean?
By Stephen Bucaro
The meaning of these terms is very confusing, especially when they are used interchangeably.
And they actually do have overlapping meanings. Lets start out by defining a program
as any code that runs on a computer. So all of the above are programs.
A program that displays a windows or an interface to a user, and probably performs a
function for the user, is called an application. A process is a unit of code that, when
it executes has its own unique ID and its own specific protected area of RAM memory
for its actively running code and where it stores its temporary data values.
A running program or application can be considered a process, but generally an application
has a user interface, while a process runs in the background without displaying a window
or user interface. An application, being a process, when it executes also has its own unique
ID and its own specific protected area of RAM memory. An application can also write its data
to a shared RAM memory area, or to a more permanent storage area such as a hard disk.
A service (called a daemon in Linux. Daemon is a Greek word for a supernatural being
working in the background) is a program that runs in the background and does not display
a window or user interface. But a service is technically similar to an application in
that they both can run multiple processes to accomplish their tasks. Actually a process
can call other processes, and the chain of processes running from the first calling
program is called its "process dependencies".
The term thread stands for "thread of execution" and is simply a program's instructions
executing. A program, be an application, service, or process, can have multiple threads
executing concurrently. With a single-core processor, there is little or no advantage to
having multiple threads executing concurrently, but with a multi-core processor, each thread
can run on its own processor, resulting in a gain in speed.
Although applications, services, and processes are all pretty much the same thing, generally
if its a program that displays a user interface, you should call it an application. A program
that doesn't displays a user interface, you should call a service. Both applications and
services can run multiple processes.
A process is like a little servant that doesn't have a user interface, but instead has
interfaces to communicate with and run at the beck and call of applications and services.
Now when someone says that an application like windows notepad is a process, and then
opens Task Manager, which lists under the services column, notepad's executable (notepad.exe),
it's hard to argue with them.
More Windows Administration Information:
• Configure Vista's Data Execution Prevention
• How to Setup DHCP (Dynamic Host Configuration Protocol) on a Windows Server
• Application, Program, Process, Service, Thread; What Does it All Mean?
• A Day in the Life of a System Administrator
• Firewall Rules
• Restrict Web Browsing With Internet Explorer
• Security Risks and Ways to Decrease Vulnerabilities in a 802.11b Wireless Environment
• Font Basics
• Video - Microsoft Remote Desktop - Part One
• Hard Disk Management