= Introduction to job processing = Most distributed processing systems let you submit jobs - you supply an executable and some input files, and the system runs the job on a remote computer and gives you the output files when it's done. You can do this type of [SingleJob single job submission] in BOINC. However, BOINC is designed for different types of situation, in particular those where: * You need to process thousands or millions of jobs, using only a few applications. * You want jobs to be '''platform-independent''', i.e. you don't have to specify what kind of computer to use. * You want job results to be validated by replication. To handle these requirements, BOINC defines an architecture in which jobs are processed in a pipeline consisting of the following programs: * A '''work generator''' creates jobs. * A '''validator''' compares replicated results and selects one of them as 'canonical', or correct. * An '''assimilator''' handles validated results, storing them in an archive or database. Typically these programs are application-specific, and you will need to develop them (usually in C++) using frameworks supplied by BOINC. In some cases you may be able to use sample versions that are part of BOINC. Each program should be listed as a [ProjectDaemons daemon] in the [ProjectConfigFile config.xml] file.