Job, tasks or batches? Or even processes? What is the difference?
Job: work to be done
Task: a piece of work to be done
Process: how the work should be done
And what about batches?
Confusing? Yes, indeed. Also because related definitions may change due to several reasons. For example, according to the software provider.
We start with the process. It is a program under execution. While a program is a passive set of instructions, a typical process includes a text section with the instructions, a stack for temporary data, a data section with global variables, a heap section with dynamic memory allocated. The process, goes through many status when executed. And many processes can run at the same time. If we have multiple processes to be run, a process scheduling, will take care to schedule them, and to allocate the so-called executable units. Execution slots where cpu resources are assigned to a process, so it can advance in the execution of its instructions. In other words, a process is an executing instance of a program.
A task is a single unit of work, or operation, that is part of a larger set of instructions. In some OS, a task is synonymous of process, in other of threads. But in the sense of unit of work, a task corresponds to a single execution step. As we can imagine at this point, especially with multitasking, or time sharing, multiple tasks may compete for the execution resources, requiring dedicated task schedulers, that, according to different policies, prioritize related execution.
We arrive at the job. It is a high-level operation, or set of activities to be performed. This can often require multiple tasks. And multiple processes. To give an example, let’s imagine we need to clean a database. That is an example of job. It will be based on a script, a program, that will call a set of commands, executed in turns, by other programs, resulting, in the execution of several tasks.
In Linux, when you schedule an action, it is called a job. And there are different types of jobs:
- One-time AT jobs, created by the user, and run at a certain time.
- One-time batch jobs, similar to previous jobs, but running only when the system has enough resources.
- Reoccurring user jobs, created and managed by the user. They are jobs that are expected to run on a schedule set by the user.
- Reocurring system jobs, created by a system administrator, not associated to specific users.
A job scheduler will be in charge for controlling unattended background execution of jobs. In case of non-interactive jobs, generally, we talk about batch processing. Jobs that can run without end user interaction, or can be scheduled to run as resources permit, are called batch jobs. Batch processing is for those frequently used programs that can be executed with minimal human interaction.
Just to add a bit of confusion, let’s see what we have on Windows side. We start with the Task manager. That is a system monitor program, providing information about applications, and processes. And, there is the Task Scheduler. That is a job scheduler. Handled tasks, just to avoid confusion, are defined and stored in binary file, with the extension .job. After all, in the glossary of the Task Scheduler Service Remoting Protocol, a task is defined as synonym for job!!!
Conclusion
There isn’t a well defined, commonly accepted definition for these terms. And indeed their meaning can change from OS to OS, as just seen. At the same time, we have seen that is possible to infer the meaning according to the context.

Leave a Reply