DISCUSIÓN Y RESULTADOS.
4.3 APLICABILIDAD DE LA LEY 29785 Y CONFLICTOS SOCIALES 4.3.1 APLICABILIDAD DE LA LEY 2
This section explores the extra memory overhead, which is necessarily introduced in order to support the real time collection of garbage. No attempt is made to provide a quantitative analysis, since this would require many assumptions to be made to facilitate the development of a practical analytical memory model.
Section 7.5 Conclusionsn
The conventional limited-width technique requires a status word of four bits per node, to support garbage collection (see section 4.6.2, equation 4.3). The real time system would appear to require a longer status word per node, to support the flags scanned, visited and
cyclic J r e e J la g (the use of these flags is described in chapter 6).
As an optimisation to the standard method, the value of lowlink can be stored in the group pointer field, since once a node is on the Tarjan stack, the value of the group pointer is no longer required, since in these cases we know that the nodes are in the group being split. The flags, scanned, visited and cyclicJree, are also only of interest after the group descriptor number is no longer required, when the group is being split. So lowlink and these flags can also be stored in the group descriptor field, at the cost of only one further flag, indicating that this field does not contain the group descriptor number, but rather lowlink and four flags. Theoretically, lowlink could reach a maximum, equal to the total number of cells in the heap. In this case it could not be stored in the group descriptor number field, since this also contains four flags. In such an unlikely event, a form of indirection to the main heap, to store the value of lowlink, is arranged. A limited width field has to be made available for each node that is in the group being split to contain its dfsn. This is not required for nodes that are not in the group being split.
Additional to the overhead per cell, discussed above, there is also a number of stacks that has to be maintained to support the technique, the Tarjan stack, the group handle stack, the
pointer deletion stack, split_queue, group_dispose_stack and the cyclic Jree_stack. The size of these stacks will be a complex function of the relative amount of CPU resources the scheduler allocates to the four main areas in its background task pool, the rate at which the mutator calls intra-cyclic pointer deletions, the number and size of cycles within the graph and the number of nodes in large acyclic structures. An implicit stack is also maintained to control the recursion in Tarjan's algorithm. The maximum size of the stack will be in the order of the largest cycle contained in the graph.
7.5 C o n clu sio n s.
This chapter has presented an estimate of the temporal aspects of the behaviour of the collector. The theoretical predictions made will be contrasted with actual measurements made with a simulation of the system (presented in chapter 9).
Table 7.2 presented below, shows how much more expensive is the situation when local reference count data is held in the main heap, both in terms of collector activity and collector- heap communication bandwidth. This affects the efficiency of numerous collector activities, such as the simple update of local reference counts. As explained, the worst case scenario, outlined in this table, is never actually observed, since the collector may suspend a search for overflow data in the main heap, in order to service a mutator interrupt.
The scheme of implementing the parallel collector compounds the difficulty of assessing the memory required, within the collector, to deal with the incrementally formed stacks. The production of a general analytical model of the memory required for the collector, under all operating conditions, appears to be a difficult (if not intractable) task and is not attempted here.
The theoretical performance predictions have been made at a very fine level of granularity, involving low-level CPU and sub-system primitives. The results have ignored certain factors that may play a rôle in the production of final performance figures. These factors may be characterised by constant overheads for any given execution environment. Such costs include procedure call overhead and context switches etc. In a typical standard execution environment (e.g. DEC VAX) these costs range from 5 to 25 percent [ZOR-89]; a specialised real time execution environment would display much lower overheads. Since these overheads are fixed and represent only a small cost, with respect to the execution speed of the collector functions, the results obtained from the theoretical predictions made in this chapter and those given for the simulator in chapter 9, provide general guidance to the execution profile for the major collector functions.
An overall architecture has been presented for the collector. This is the culmination of the design process described in earlier parts of the thesis. A simulation of the complete architecture has been written and is presented in chapter 9.