Efficient parallel execution of the program requires
the load balancing of the work among component processes [1]. Because the
scene graph is an irregular and dynamic data structure, it cannot be partitioned
for parallel traversing by multiple processes. In parallel programming
paradigm, problems with irregular and dynamic data structure, such as the
scene graph of a synthetic environment, can be solved by the partition
of the program (also called partition in the control domain). The program
must be divided into a number of processes, and each process must perform
a sub-set of operations from the entire operations set of the program.
A balanced partitioning of the image generation program can be accomplished
by dividing the scene graph traversing operation into a sequence of traversing
operations, each of then executing a subset of the operation set needed
in each node of the graph. Every traversing operation is an execution stage
of the program and is implemented as a separate process. All processes
are connected in a simple directed graph, a linear array, which is known
as the task dependence graph of the program. The typical stages
in image generation are: update objects position in synthetic environment,
culling the objects towards the viewing frustum, draw the surfaces, etc
(Figure 3). The stages of the program are executed as corresponding processes
on available processors of the image generator, in a pipeline mode.
![]() ![]() |
Each process is activated synchronously with the update
frame rate but the actual process execution time is not constant and depends
on the current frame. The condition for real-time execution is that the
maximum execution time (worst case execution time) of processes for frame
generation, to be less then the frame duration.
4.VIRTUAL MEMORY MANAGEMENT
mapping_function () { for (i = 0; i < p; i++) { Compute the dist. D of the segm. Vi if (LSCB[i].status > 0) { if (D > switchOut) { /* Segment detachment */ Disconnect segm. Vi from the scene Delete the segment Vi LSCB[i].status = 0; } } else if (D < switchIn) { /* Segment attachment */ Load the segment Vi Connect segm. Vi in the scene LSCB[i].status = 1; } } }The program maintains a list of control blocks, for all virtual segments of the scene (the list LSCB). Every segment control block stores information needed for dynamic segment switch, which are:
|