
Sections 3 through 11 discuss the functional areas provided by the runtime system in terms of requirements, problems and solutions. Section 2 describes the overall architecture of the runtime system. This paper describes the problems and design decisions we encountered in developing the BOINC runtime system, and our solutions to these problems.

In cases where the developer needs to be involved, this is done via a BOINC Application Programming Interface (API). Most of this interaction is hidden from the application developer. This interaction is implemented by a runtime system implemented by the core client and a runtime library linked with applications. The core client interacts with applications in various ways. If the limits are exceeded, the core client aborts the application. The runtime system periodically measures these quantities and reports them to the core client. Each task has project-specified limits on memory usage, disk usage, and computation (number of floating-point operations). The core client also guards against certain types of application misbehavior. Applications that are preempted may be suspended or forced to exit, depending on volunteer preferences.

It does preemptive round robin scheduling among applications, so that volunteers who participate in multiple projects see periodic change. On a multiprocessor with n CPUs, it attempts (if user preferences allow it) to run n applications at once. It doesn’t generate screensaver graphics itself, but rather communicates with the core client, requesting that one of the running applications display full-screen graphics.

For each task, it shows the fraction done and the estimated time to completion, and lets the user open a window showing the application’s graphics. The BOINC Manager provides a graphical interface allowing users to view and control computation status (see Figure 2).The BOINC core client program communicates with schedulers, uploads and downloads files, and executes and coordinates applications.They may consist of a single process or a dynamic set of multiple processes (see Section 2.3). Applications are typically long-running scientific programs.
