Job Scheduling Software
A job scheduler is an enterprise software application that allows execution of unattended background jobs (AKA Batch Processing) Latest job schedulers generally provide a graphical user interface (GUI) and a single point of control for definition and monitoring of background executions in a distributed network of computers.
-- Useful eBooks --
-- Sponsored Links --
The following basic features are expected in job scheduler software:
- Interfaces That Allow Defining Workflows And Or Job Dependencies
- Automatic Submission Of Jobs
- Interfaces For Job Monitoring
- Define Job Priorities
- Control The Execution Order Of Related And Unrelated Jobs

Major Architectures For Job Scheduling Software
Master/Agent Architecture - historic architecture for Job scheduling software. The Job Scheduling software is installed on a single machine (Master) while on production machines only a very light component (Agent) is installed. Agent waits for commands from the Master, executes them, and returns the exit code back to the Master.
Cooperative Architecture - a decentralized model where each machine is capable of helping with scheduling and can offload locally scheduled jobs to other cooperating machines. This enables dynamic workload balancing to maximize hardware resource utilization and high availability to ensure service delivery.

The job scheduling software decides which particular job to run basedon the following parameters.
- Availability of peripheral devices.
- Compute resource availability.
- Elapsed execution time.
- Estimated execution time.
- Execution time allocated to user.
- Job priority.
- License key if job is using licensed software.
- Number of simultaneous jobs allowed for a user.
- Occurrence of prescribed events.
- Cron - Unix and Linux
- Task Scheduler / AT command : Microsoft Windows XP
- launchd - Mac OS X, since v10.4 - Darwin
- Autosys
- Maestro
References: http://en.wikipedia.org/wiki/Job_scheduler

