当前位置:文档之家› Precise executable interprocedural slices

Precise executable interprocedural slices

Precise executable interprocedural slices
Precise executable interprocedural slices

Precise Executable Interprocedural Slices

DAVID BINKLEY

Loyola College in Maryland

The notion of a program slice,originally introduced by Mark Weiser,is useful in program debugging, automatic parallelization,program integration,and software maintenance.A slice of a program is taken with respect to a program point p and a variable x;the slice consists of all statements of the program that might affect the value of x at point p.An interprocedural slice is a slice of an entire program,where the slice crosses the boundaries of procedure calls.

Weiser’s original interprocedural slicing algorithm produces imprecise slices that are executable pro-grams.A recent algorithm developed by Horwitz,Reps,and Binkley produces more precise(smaller) slices by more accurately identifying those statements that might affect the values of x at point p.These slices,however,are not executable.An extension to their algorithm that produces more precise executable interprocedural slices is described together with.a proof of correctness for the new algorithm.

CR Categories and Subject Descriptors:D.3.3[Programming Languages]:Language Constructs?control structures,procedures,functions,and subroutines;D.3.4[Programming Languages]:Processors?com-pilers,optimization

General Terms:Algorithms,Design

Additional Key Words and Phrases:control dependence,data dependence,program dependence graph, program slicing

1.INTRODUCTION

The slice of a program with respect to program point p and variable x consists of all statements and predi-cates of the program that might affect the value of x at point p.This concept,originally discussed by Mark Weiser in[17],can be used to isolate individual computation threads within a program.Slicing can help a programmer understand complicated code[17],can aid in debugging and software maintenance[7,8,12], and can be used for automatic parallelization[2,16].

Horwitz,Reps,and Binkley identify two different but related“slicing problems”[9].It is important to understand the distinction between them(the names come from[15]).

This work was supported in part by a summer research grant from Loyola College.

Author’s address:Computer Science Department,Loyola College,4501North Charles Street,Baltimore Maryland21210-2699.binkley@https://www.doczj.com/doc/698341161.html,

Version(1)(Closure Slice)

The slice of a program with respect to program point p and variable x consists of components(e.g., statements and predicates)of the program that might affect the value of x at point p.

Version(2)(Executable Slice)

The slice of a program with respect to program point p and variable x consists of a reduced program that computes the same sequence of values for x at p.That is,at point p the behavior of the reduced program with respect to variable x is indistinguishable from that of the original program.

For in tra procedural slicing—slicing within a single procedure where the slice does not extend across pro-cedure boundaries—a solution to Version(1)provides a solution to Version(2),since the“reduced pro-gram”required in Version(2)can be obtained by restricting the original program to just the components found in the solution for Version(1)[13].

For in ter procedural slicing—generating a slice of an entire program where the slice extends across the boundaries of procedure calls—restricting the original program to just the components found for Version (1)may yield a program that is syntactically incorrect(and thus certainly not a solution to Version(2)). The reason behind this phenomenon has to do with multiple calls to the same procedure:it is possible that the program elements found by an algorithm for Version(1)will include multiple calls on a procedure that have different subsets of the procedure’s parameters.

Weiser’s original interprocedural slicing algorithm provides a solution to Version(2)[17];however,this algorithm potentially includes large portions of the program that do not affect the value for x at p because (a)it fails to account for the calling context of a procedure:if a slice includes one call-site on a procedure then the slice includes all call-sites on the procedure,and(b)call-sites are treated as indivisible com-ponents:if a slice includes one parameter,it must include all parameters.

Horwitz et.al.[9]compute the interprocedural slice on variables x at point p using the system depen-dence graph,which extends previous dependence representations to incorporate collections of procedures (with procedure calls)rather than just monolithic programs.Their algorithm,hereafter referred to as the HRB algorithm,identi?es a subgraph of the system dependence graph whose components potentially affect the sequence of values for x at p.The HRB algorithm provides a solution to Version(1)that correctly accounts for procedure calling context and treats call statement as divisible components.Thus,it produces slices that are more precise(smaller)than those determined by Weiser’s algorithm.1These slices,however, are not executable.

The algorithm discussed in this paper produces executable slices that are more precise than those pro-duces by Weiser.Here the term“precise”means that the algorithm correctly handles calling context and that it may selectively choose parameters from call statements.Precise does not mean it produces the smal-lest possible slice,which would require solving unsolvable data-?ow problems.As a consequence,the algorithm must make safe approximations:although it may include unnecessary statements,it does include all necessary statements.

1The HRB algorithm has a restriction not present in Weiser’s algorithm:a slice can only be taken with respect to program point p and variable x if x is de?ned or used at p.

Executable slices are useful as they are required in a variety of applications.For example,the software maintenance technique discussed in[7]and algorithm for reducing the cost of regression testing presented in[6],both rely on being able to execute a slice.Executable slices can also be used to provide coarse grain parallelism from sequential programs by running separate slices on different processors.Finally,produc-ing executable programs permits the execution behaviors of a program and its slices to be compared.

After providing a brief summary of the system dependence graph and the HRB slicing algorithm in Sec-tion2,Section3?rst illustrates how a slice produced by the HRB algorithm may not correspond to a syn-tactically correct program.It then describes the steps necessary to extend the HRB algorithm to produce precise executable interprocedural slices.Section4proves that this new algorithm produces slices that satisfy in Version(2).Finally,Section5provides a brief summary.

2.THE HRB ALGORITHM

2.1.The System Dependence Graph

The HRB slicing algorithm makes use of the system dependence graph2(SDG)[9],which is summarized in this section.The SDG models a language with the following properties(the addition of input and output represents a slight extension to the de?nition given in[9]):

(1)A complete system consists of a single main procedure and a collection of auxiliary procedures.

(2)Parameters are passed by value-result.3

(3)Input and output are modeled as streams;thus,for example,the statement print(x)is treated as if it

were the assignment statement“output_stream=concatenate(output_stream,x).”

The SDG for system S,denoted by G S,contains a collection of procedure dependence graphs(PDGs), one for each procedure in the system,connected by interprocedural control-and?ow-dependence edges. Procedure dependence graphs are similar to“program dependence graphs”[1,10,11].

The PDG for procedure P,denoted by G P,contains vertices,which represent the components of P,and edges,which represent dependences between them.With the exception of call statements,a single vertex represents assignment statements,input statements and output statements,and the predicates of conditional (if)and while-loop statements.In addition,there is a distinguished vertex called the entry vertex,and an initial-de?nition vertex for each variable that may be used before being de?ned.Initial-de?nitions vertices represent the assignment of the value0to each variable that may be used before being de?ned.

A call statement is represented using a call vertex and four kinds of parameter vertices that represent parameter passing:on the calling side,parameter passing is represented by actual-in and actual-out ver-tices,which are control dependent(see below)on the call vertex;in the called procedure parameter passing

2Because the term“program dependence graph”is associated with graphs that represent single procedure programs,the term“system dependence graph”was chosen for the dependence graphs that represents multi-procedure programs[9].Similarly,the term“system”—rather than“program”—is used to mean a program with multiple procedures.

3Techniques for handling parameter passing by reference and for dealing with aliasing are discussed in[9].

is represented by formal-in and formal-out vertices,which are control dependent on the procedure’s entry vertex.Actual-in and formal-in vertices are included for every parameter and global variable that may be used or modi?ed as a result of the call;formal-out and actual-out vertices are included for every parameter and global variable that may be modi?ed as a result of the call.(Interprocedural data-?ow analysis is used to determine which parameters and globals may be used and/or modi?ed as a result of a procedure call [3,4].)

Procedure dependence graphs include three kinds of intraprocedural edges:control dependence edges, data dependence edges,and summary edges.The source of a control dependence edge is either the entry vertex,a predicate vertex,or a call vertex.Each edge is labeled either true or false.A control dependence edge from vertex v to vertex u means that during execution,whenever the predicate represented by v is evaluated and its value matches the label on the edge to u,then the program component represented by u will eventually be executed provided the system terminates normally4(edges from entry and call vertices are always labeled true;these vertices are assumed to always evaluate to true).

A data dependence edge from vertex v to vertex u means that the system’s behavior might change if the relative order of the components represented by v and u were reversed.There are two kinds of data depen-dence edges,?ow dependence edges and def-order dependence edges:a?ow dependence edge connects a vertex v that represents an assignment to a variable x to a vertex u that represents a use of x reached by that assignment.A def-order edge runs between two vertices,v and u that both represent assignments to vari-able x where both assignment reach a common use,and v lexically precedes u(i.e.,v is to the left of u in the program’s abstract syntax tree).

The chief dif?culty in interprocedural slicing is correctly accounting for the calling context of a called procedure.To address the calling-context problem,the system dependence graph includes summary edges: edges that represent transitive dependences due to the effects of procedure calls.A summary edge con-nects actual-in vertex v to actual-out vertex u if there is a path in the SDG from v to u that respects calling context by matching calls with returns.

Connecting procedure dependence graphs to form an SDG is straightforward,involving the addition of three kinds of interprocedural edges:(1)a call edge connects each call vertex to the corresponding procedure-entry vertex;(2)a parameter-in edge connects each actual-in vertex at a call-site to the corresponding formal-in vertex in the called procedure;(3)a parameter-out edge connects each formal-out vertex to the corresponding actual-out vertex at each call site on the procedure.

<>

Example.Figure1shows an example system and the corresponding SDG.

4There are two ways in which a system may fail to terminate normally:(1)the system contains a non-terminating loop,or(2)a fault occurs,such as division by zero.

2.2.The HRB Slicing Algorithm

Interprocedural slicing can be de?ned as a reachability problem using the SDG,just as intraprocedural slic-ing is de?ned as a reachability problem using the program dependence graph[8].The slices obtained using this approach are similar to those obtained using Weiser’s interprocedural-slicing method[17].However, this approach does not produce slices that are as precise as possible,because it considers paths in the graph that are not possible execution paths.For example,there is a path in the graph shown in Figure1from the vertex of procedure Main labeled“a in:=sum”to the vertex of Main labeled“i:=z out.”However,this path corresponds to procedure Add being called by the?rst call in Main,but returning to the second call in Main,which is not possible.The value of i after the?rst call in Main is independent of the value of sum before the call,and so the vertex labeled“a in:=sum”should not be included in the slice with respect to the vertex labeled“i:=z out.”

To achieve more precise interprocedural slices,an interprocedural slice of an SDG G with respect to a set of vertices V is computed using two passes over the graph.Summary edges are used in the algorithm to permit“moving across”a call site without having to descend into the called procedure;thus,there is no need to keep track of calling context explicitly to ensure that only legal execution paths are traversed.Both passes operate on the SDG,traversing edges to?nd the set of vertices that can reach a given set of vertices along certain kinds of edges.The traversal in Pass1starts from all vertices in V and goes backwards(from target to source)along?ow edges,control edges,call edges,summary edges,and parameter-in edges,but not along def-order or parameter-out edges.The traversal in Pass2starts from all vertices reached in Pass 1and goes backwards along?ow edges,control edges,summary edges,and parameter-out edges,but not along def-order,call,or parameter-in edges.The result of an interprocedural slice consists of the sets of vertices encountered during Pass1and Pass2.The HRB algorithm for?nding the vertices of an interpro-cedural slice is stated in Figure2.

<>

Example.Figure1shows an HRB slice.

In the remainder of the paper,we use the operators b1and b2to designate the individual passes of the HRB slicing algorithm.In the terminology of Figure2,they are de?ned as follows:

b1(G,V)?=(ReachingVertices(G,V,{def-order,parameter-out}))

b2(G,V)?=(ReachingVertices(G,V,{def-order,parameter-in,call})).

3.EXECUTABLE SLICES

This section describes the extension of the HRB algorithm that produces precise executable interprocedural slices.Before presenting this extension,we?rst consider an example of an HRB slice that is not execut-able.After this example,we discuss the three steps necessary to produce an executable system from an HRB slice.This section concludes with a discussion of the new slicing algorithm’s complexity.

3.1.A Non-Executable Slice

For intraprocedural slicing,the slice of a dependence graph can be used to produce an executable program by restricting the original system to those elements whose vertices are in the slice of the dependence graph.

The same is not true for an HRB slice of an SDG.For example,the system produced by restricting system S shown in Figure3to statements whose vertices are in the slice also shown in Figure3is syntactically illegal because it contains a parameter mismatch:two call statements representing calls on a procedure con-tain different subsets of the procedure’s parameters.

Making this system syntactically legal by simply adding parameter c to the second call statement on P leaves a semantically unsatisfactory system:it aborts with a division-by-zero error on the second call to P. Although a division-by-zero error could be caught by an exception handler,the important point here is that the system representing the slice computes values not computed by the original system.An example simi-lar to the one in Figure3that replaced the division-by-zero error with an in?nite loop would prevent the system that represents the slice from computing the same values as the original system at all points beyond the in?nite loop.The presence of an in?nite-loop cannot be caught by an exception handler or any other algorithmic means.In order to produce an executable slice,the components that take part in the computa-tion of parameter’s such as c must also be included in the slice.

<>

When applied to the example shown in Figure3,Weiser’s interprocedural slicing algorithm produces an executable slice because it treats call statements as indivisible components.However,this causes unwanted program components to be included.For example,it causes d and consequently the computation of d to be included in the slice.

3.2.Executable Slices

Closer inspection of the HRB slice in Figure3,reveals that there are two related mismatch problems:

(1)two call-sites on the same procedure may include different actual-in vertices,and

(2)two call-sites on the same procedure may include different actual-out vertices.

For example,the slice shown in Figure3contains actual-in vertices for both parameters at the?rst call-site on P and only one at the second call-site(these vertices are labeled“x in:=a”and“y in:=b”,and y in:=a,”respectively).The slice also has mismatched actual-out vertices:the?rst call-site has the actual-out vertex for the?rst parameter and the second call-site has the actual-out vertex for the second parameter.

This section describes the three steps used to produce an executable slice from an HRB slice.The?rst step adds vertices that remove actual-in vertex mismatches,the second step adds vertices that remove actual-out vertices,and the third step produces a system from the resulting set of vertices and the original system.Before describing the?rst step,we formalize the notion of a mismatch in the following de?nition.

D EFINITION.(Vertex Mismatch).A subset V of the vertices of SDG G contains an actual-in vertex mismatch if it contains a call-site on a procedure,the formal-in vertex for a parameter of that procedure, but not the actual-in vertex corresponding to the formal-in vertex at the call-site.Similarity,V contains an actual-out vertex mismatch if it contains a call-site on a procedure,the formal-out vertex for a parameter of that procedure,but not the actual-out vertex corresponding to the formal-out vertex at the call-site.

Note that the formal de?nition of an actual-in vertex mismatch differs from the intuitive de?nition given above.The formal de?nition implies the intuitive de?nition:when an HRB slice contains a formal-in

vertex,it contains at least one corresponding actual-in vertex;consequently,if some other actual-in vertex that also corresponds to the formal-in vertex is not in the slice then two call-sites on the same procedure include different actual-in vertices.The same is true for actual-out vertices.

In the following discussion let V HRB be the set of vertices in an HRB slice of system S.The?rst step of the algorithm removes actual-in vertex mismatches.If V HRB has an actual-in mismatch because actual-in vertex v is not in V HRB then,as illustrated by c in Figure3,simply adding v to V HRB is insuf?cient because an appropriate initial parameter value must be computed for the actual parameter represented by v.

In order to include the program components necessary to compute a safe value for such parameters,the vertices of the slice b2(G S,v)are added to V HRB.A b2slice will include components from procedure P and procedures called by P,but not components of procedures that call P.The necessary components from these procedures are already in the slice unless there is a further actual-in mismatch.Because of this,the process of adding b2slices is repeated until no further actual-in vertex mismatches exist.

The choice of a b2slice over some other operation that would include call sites on P(e.g.,a b1slice or a full slice)avoids including unwanted call-sites on P.Both b1and full slices include all call-sites on a pro-cedure,which may include unwanted call sites.In contrast,a b2slice,which includes none of a procedure’s call-sites,combined with the de?nition of actual-in vertex mismatch,avoids including unwanted call-sites.

The second step in making an HRB slice executable removes actual-out vertex mismatches.Because missing actual-out vertices represent dead-code no additional slicing is necessary.Actual-out mismatches are removed by simply adding missing actual-out vertices to V HRB.

The third step of the algorithm produces a system from the set of vertices in V HRB and system S by pro-jecting the statements of S that are represented in V HRB.In other words,the statements of the sliced system are the statements of S represented by vertices in V HRB;these statements appear in the same order and at the same nesting level as in S.

A complete algorithm for producing executable interprocedural slices is stated in Figure4.For the example in Figure3,the b2slice taken with respect to actual-in vertex“x in:=c”includes the statement “c:=2,”which computes the necessary actual parameter value for c.

<>

https://www.doczj.com/doc/698341161.html,plexity

The complexity of algorithm ExecutableSlice presented in Figure4is given in terms of the size of the input system S.The complexity of the HRB algorithm used in line1of ExecutableSlice is analyzed in[9].It has two parts:the polynomial complexity of constructing the SDG for S and the linear complexity of slicing G S.The construction cost is O(TCS×CS2+NP×V2),where TCS is the total number of call-sites in the system,CS is the maximum number of call sites in any one procedure,NP is the number of procedures in the system,and V is the maximum number of vertices(statements and predicates)in any one procedure. This assumes that the number of parameters associated with a procedure is bounded by a constant.The complexity of slicing G S is linear in the size of the SDG.The size of the SDG is(conservatively)bounded by O(NP×V2),since there are at most O(V2)edges in any one PDG.

The complexity of the extension is also linear.The complexity of all the b2slices that result from lines 2-3is linear in the size of the SDG because no vertex currently in the slice need be considered.The com-plexity of adding vertices in line5and the complexity of projecting the?nal system Slice in line6are also linear.(This assumes there is a pointer from each vertex in the SDG to its originating line of source text.) In summary,the overall complexity of constructing an SDG is polynomial in the size of the system and the complexity of producing an executable interprocedural slice from the SDG is linear in the size of the SDG.

4.PROOF OF CORRECTNESS

De?nitions

D EFINITION.(VerticesOfSlice).For system S and vertex set V,VerticesOfSlice(S,V)refers to the vertices in V′at line[6]of Figure4.

D EFINITION.(Induced Graph of G S).For system S and set of vertices V,InducedGraph(G S,V)is the graph(V,E),where

E is the set of edges from G S whose end-points are in V.(For a def-order edge all three points involved must be in V).

D EFINITION.(roll-out).The roll-out of a system is produced by the exhaustive in-line expansion of call statements to produce a program without procedure calls.Each expansion step replaces a call statement with a new scope statement.Each scope statement,which creates a separate name space to avoid variable naming con?icts,contains the body of the called procedure and is parameterized by two lists of assignment statements,transfer-in statements and transfer-out statements,which make explicit the transfer of values into and out-of the name space for the scope.There is one transfer-in statement for every parameter or glo-bal variable represented by an actual-in vertex and one transfer-out statement for every parameter or global variable represented by an actual-out vertex.

In the presence of recursion,roll-out leads to an in?nite program.(The meaning of an in?nite program is de?ned by the least upper bound of the meanings of the?nite programs that approximate it.)We use the notation roll-out(S)to denote the program produced by repeatedly expanding call statements in procedure Main of system S.

Previous Results

(1)T HEOREM(S YNTACTIC C ORRECTNESS T HEOREM F OR I NTRAPROCEDURAL S LICES[14]).If Q is a slice

of single-procedure program P taken with respect to vertex set V then G Q is isomorphic5to InducedGraph(G P,VerticesOfSlice(P,V)).

5Two(system dependence)graphs G

and G2are isomorphic iff the following conditions are satis?ed:

1

(1)There is a1-to-1mapping g from the vertex set of G1onto the vertex set of G2and for every v in G1,v

and g(v)have the same text.

(2)There is a1-to-1mapping h from the edge set of G1onto the edge set of G2and for every edge e in

G1,e and h(e)are of the same type(e.g.,both control edges)and have the same label.

(3)For every edge v→u in G1,h(v→u)=g(v)→g(u).

When G1and G2are isomorphic or when we are trying to prove G1and G2are isomorphic,for brevity, we will say v and g(v)are the same vertex and e and h(e)are the same edge.

(2)T HEOREM(S LICING T HEOREM F OR S INGLE P ROCEDURE P ROGRAMS[14]).For single-procedure pro-

gram P,if G Q is a slice(including induced edges)of G P then for all program points in Q,Q and P produce the same sequence of values when evaluated on any input for which the evaluation of P ter-minates.

C OROLLARY.The theorem applies to slices of in?nite program roll-out(P).

P ROOF.The technique discussed in Chapter8of[5]demonstrates that the theorem applies to a series of?nite approximations to roll-out(P).Because the meaning of an in?nite program is de?ned as the least upper bound of the meanings of its?nite approximations,the theorem to extend to the in?nite programs produced by roll-out.

(3)T HEOREM(R OLL-OUT T HEOREM[5]).Roll-out is a semantics-preserving transformation:the

sequences of values produced by the occurrences of s in roll-out(S)are the same as the sequences of values produced by s in each of its calling contexts in S.

New Results

L EMMA(I NDUCED G RAPH I SOMORPHISM L EMMA).Let Slice=ExecutableSlice(S,V).G Slice is isomorphic to InducedGraph(G S,VerticesOfSlice(S,V)).

P ROOF.There is a trivial transformationτfrom a procedure with call statements to a procedure with sequences of assignment statements that have the same data-?ow effect and hence the same?ow depen-dence edges.(This transformation does not preserve the semantics of the procedure,just the dependence edges associated with calls by including assignment statements such as“tmp:=a”for an actual parameter a that is used in the called procedure.)Because the Syntactic Correctness Theorem For Intraprocedural Slices implies there exists an isomorphismφfor the transformed versions of Slice and S,there is an isomor-phism for the untransformed versions of Slice and S.This isomorphism is the compositionτ°φ°τ?1.

L EMMA.(S LICING L EMMA).If Slice=Executable_Slice(S,V)then G roll-out(Slice)is a slice(including induced edges)of G roll-out(S).

P ROOF.It is suf?cient to prove that

(1)G roll-out(Slice)is a subgraph of G roll-out(S),and

(2)For every vertex x∞in VertexSet(G roll-out(Slice))and every non-def-order edge e∞=y∞→x∞in the

edge set of graph G roll-out(S),edge e∞exists in the edge set of graph G roll-out(Slice).

(Point(2)ensures that the slice of G roll-out(S)never“escapes”to vertices not in G roll-out(Slice).)

Part(1)follows from the Induced Graph Isomorphism Lemma,which implies G Slice is isomorphic to a subgraph of G S and thus a subgraph of G S.This relationship extends to G roll-out(Slice)and G roll-out(S):each vertex or edge occurrence in G roll-out(Slice)exists because of a vertex or edge in G Slice and a sequence of call-sites that was expanded.Since this vertex or edge and the sequence of call sites are in G S,the vertex or edge occurrence is in G roll-out(S).Edges from G Slice(respectively G S)have occurrences in G roll-out(Slice) (G roll-out(S))because each call statement expansion produces a copy of a procedure in which the same con-trol and data dependences exists as in the original procedure.

To prove(2),assume x∞,y∞,and e∞are occurrences of x,y,and e,respectively.Vertex x is in G Slice; vertex y and edge e are in G S.The proof has two cases.

(a)y∞does not represent a transfer-in statement.

The Induced Graph Isomorphism Lemma implies that x is in VerticesOfSlice(S,V).Because y∞does not represent a transfer-in statement,e is an intraprocedural edge in G S;thus,the b2slice of G S that includes x in VerticesOfSlice(S,V)also includes y(this slice is taken in line[1]or[3]in Figure

4).Having x and y in VerticesOfSlice(S,V)and e in InducedGraph(G S,VerticesOfSlice(S,V))

implies,by the Induced Graph Isomorphism Lemma,that y and e are in G Slice.Finally,the expand-ing of the call-sites in Slice whose expansion leads to the creation of x∞produces an occurrence of y∞;hence,x∞,y∞,and the edge connecting them e∞are in G roll-out(Slice).

(b)y∞represents a transfer-in statement.

If y∞represents a transfer-in vertex then x∞represents a statement in a called procedure and y represents an actual parameter before a call on this procedure.Unlike the previous case,a b2slice of x does not include y because a b2slice does not traverse parameter-in(or call)edges.However,the removal of actual-in vertex mismatches in lines[2]-[3]of Figure4ensures y is in VerticesOfSlice(S,V).The remainder of the proof is identical to the proof of Case(a).

T HEOREM(S LICING T HEOREM.)Let Slice=Executable_Slice(S,V).For each program component in V, Slice and S produce the same sequence of values when evaluated on any input for which S terminates.

P ROOF.First,since G roll-out(Slice)is a slice of G roll-out(S),the Corollary to the Slicing Theorem for Single Procedure Programs implies that,for each component of roll-out(Slice),roll-out(Slice)and roll-out(S) compute the same sequence of values and roll-out(Slice)terminates when roll-out(S)terminates.Because roll-out is a semantics preserving transformation these sequences are all computed by Slice and S and Slice terminates when S terminates.We must now show,for each component c∈V,that all calling contexts for c in S are in Slice and that these calling contexts are encountered in the same order during the execution of Slice and S.First,b1(S,c)(the?rst pass of an HRB slice)traverses call edges;therefore,Slice includes all calling contexts for c.Second,since the statements in Slice occur in the same relative order as in S,the cal-ling contexts common to Slice and S are encountered in the same order during the execution of Slice and S.

5.SUMMARY

This paper has presented the?rst algorithm for interprocedural slicing that correctly accounts for calling context and produces executable programs.This algorithm is an extension of the HRB interprocedural slic-ing,which“?lls-in”parameter mismatches left by the HRB algorithm.This paper also proves that these slices capture a subcomputation of the original program.

ACKNOWLEDGEMENT

The comments of Art Delcher,the three reviewers,and the editor led to substantial improvements in the exposition of this paper.The suggestions of James Lyle and Keith Gallagher improved the examples.

REFERENCES

1.Allen,F.,Burke,M.,Charles,P.,Cytron,R.,and Ferrante,J.“An overview of the PTRAN analysis

system for multiprocessing.”Res.Rep.RC13115,IBM T.J.Watson Research Center,Yorktown Heights,NY(September1987).

2.Badger,L.and Weiser,M.“Minimizing communication for synchronizing parallel data?ow pro-

grams.”in Proceedings of the1988International Conference on Parallel Processing,(St.Charles, IL,Aug.15-19,1988),Pennsylvania State University Press,University Park,PA(1988).

3.Banning,J.P.“An ef?cient way to?nd the side effects of procedure calls and the aliases of vari-

ables.”in Conference Record of the Sixth ACM Symposium on Principles of Programming Languages,(San Antonio,TX,Jan.29-31,1979),ACM,New York,NY(1979),29-41.

4.Barth,J.M.“A practical interprocedural data?ow analysis algorithm.”Commun.of the ACM

21(9)(September1978),724-736.

5.Binkley,D.“Multi-procedure program integration.”Ph.D.dissertation and Technical Report TR-

1038,Computer Sciences Department,University of Wisconsin,Madison,WI(August1991).

6.Binkley,D.“Using semantic differencing to reduce the cost of regression testing.”in Proceedings of

the IEEE Conference on Software Maintenance,(Orlando,FL,Nov,1992),IEEE Computer Society, Washington,DC(1992),41-50.

7.Gallagher,K.B.and Lyle,J.R.“Using program slicing in software maintenance.”IEEE Transactions

on Software Engineering SE-17(8)(1991),751-761.

8.Horwitz,S.,Prins,J.,and Reps,T.“Integrating non-interfering versions of programs.”ACM Trans.

https://www.doczj.com/doc/698341161.html,ng.Syst.11(3)(July1989),345-387.

9.Horwitz,S.,Reps,T.,and Binkley,D.“Interprocedural slicing using dependence graphs.”ACM

https://www.doczj.com/doc/698341161.html,ng.Syst.12(1)(January1990),26-60.

10.Kuck,D.J.,Muraoka,Y.,and Chen,S.C.“On the number of operations simultaneously executable in

FORTRAN-like programs and their resulting speed-up.”IEEE Trans.on Computers C-21(12)(December1972),1293-1310.

11.Kuck,D.J.,Kuhn,R.H.,Leasure,B.,Padua,D.A.,and Wolfe,M.“Dependence graphs and compiler

optimizations.”in Conference Record of the Eighth ACM Symposium on Principles of Programming Languages,(Williamsburg,VA,January26-28,1981),ACM,New York,NY(1981),207-218.

12.Lyle,J.and Weiser,M.“Experiments on slicing-based debugging tools.”in Proceedings of the First

Conference on Empirical Studies of Programming,(June1986),Ablex Publishing Co.(1986).

13.Reps,T.and Yang,W.“The semantics of program slicing.”TR-777,Computer Sciences Depart-

ment,University of Wisconsin,Madison,WI(June1988).

14.Reps,T.and Yang,W.“The semantics of program slicing and program integration.”in Proceedings

of the Colloquium on Current Issues in Programming Languages,(Barcelona,Spain,March13-17,

1989),Lecture Notes in Computer Science,Vol.352,Springer-Verlag,New York,NY(1989),360-374.

15.Venkatesh,G.A.“The semantic approach to program slicing.”Proceedings of the ACM SIGPLAN91

Conference on Programming Language Design and Implementation,(Toronto,Ontario,June26-28, 1991),ACM SIGPLAN Notices,(July1991).

16.Weiser,M.“Reconstructing sequential behavior from parallel behavior projections.”Information

Processing Letters17(5)(October1983),129-135.

17.Weiser,M.“Program slicing.”IEEE Transactions on Software Engineering SE-10(4)(July1984),

352-357.

procedure Main sum:=0

i:=1

while i<11do

call Add(sum,i)

call Inc(i)

od

print(sum)

end

procedure Add(a,b)

a:=a+b

end

procedure Inc(z)

call Add(z,1)

end

ENTER Main

sum:=0i:=1while i<11

call Add call Inc

Print(sum)

a in:=sum

b in:=i sum:=a out z in:=i i:=z out

ENTER Inc

z:=z in call Add z out:=z

a in:=z

b in:=1z:=a out

ENTER Add

a:=a in b:=b in a:=a+b a out:=a

Edge Key

control intraprocedural?ow summary

call, parameter-in, parameter-out

Figure1.An example system,its SDG,and the slice taken with respect to the formal-out vertex labeled “z out:=z.”The slice consists of the bold vertices.In comparison,Weiser’s algorithm includes the entire system in the slice.(Def-order edges are not shown and the edges representing control dependences are shown unlabeled;all such edges would be labeled true.)

function VerticesOfSlice(G,V)returns a set of vertices

declare

G:an SDG

V,V′,Answer:sets of vertices of G

begin

Unmark all vertices of G

/*Phase1:Slice without descending into called procedures*/

V′:=ReachingVertices(G,V,{def-order,parameter-out})

/*Phase2:Slice called procedures without ascending to call sites*/

Answer:=ReachingVertices(G,V′,{def-order,parameter-in,call})

return(Answer)

end

function ReachingVertices(G,V,ExcludedEdgeKinds)returns a set of vertices

declare

G:an SDG

V,WorkList,Answer:sets of vertices of G

ExcludedEdgeKinds:a set of edge-kinds

v,w:vertices of G

begin

WorkList:=V

Answer:=?

while WorkList≠?do

Select and remove a vertex v from WorkList

Mark v

Insert v into Answer

for each unmarked vertex w such that there is an edge w→v whose kind is

not in ExcludedEdgeKinds do

Insert w into WorkList

od

od

return(Answer)

end

Figure2.The function VerticesOfSlice returns the vertices of the interprocedural slice of SDG G with respect to vertex set V.The auxiliary function ReachingVertices returns all vertices in G from which there is a path to a vertex in V along edges whose edge-kind is something other than those in the set Exclu-dedEdgeKinds.

System S procedure Main c :=0a :=1b :=c d :=some complex computation c :=2

call P (a ,b ,d )

call P (c ,a ,d )

print (a )end procedure P (x ,y ,z )

x :=y /x

y :=y +1

z :=z +y

end

ENTER Main

call P call P Print (a )

x in :=a y in :=b z in :=d a :=x out b :=y out d :=y out x in :=c y in :=a z in :=d c :=x out a :=y out d :=y out

System S restricted to elements whose vertices are in the above slice. procedure Main c :=0a :=1b :=c

call P (a ,b )

call P (

,a )print (a )

end procedure P (x ,y )

x :=y /x

y :=y +1

end

Figure 3.The HRB slice of system S with respect to the vertex labeled “print (a )”(highlighted by the bold vertices)has mismatched actual-in and actual-out vertices.(Only part of the SDG for S is shown.)

[1]

[2]

[3]

[4]

[5]

[6]

[7]function ExecutableSlice(S,V)returns a system

declare

S:a system

G S:S’s SDG

Slice:the sliced system

V,V′:sets of vertices of G S

x,y:vertices of G S

begin

V′:=HRB_slice(G S,V)

while there exists an actual-in mismatch with formal-in vertex x in V′and actual-in vertex y not in V′do

Add the vertices in b2(G S,y)to V′

od

for all actual-out mismatches with formal-out vertex x in V′and

actual-out vertex y not in V′do

Add y to V′

od

Slice:=Projection(S,V′)

return(Slice)

end

Figure4.The function ExecutableSlice returns a system that correctly captures the execution behavior of system S at each point in V.

医科达Precise型直线加速器真空故障维修研究

医科达Precise型直线加速器真空故障维修研究 发表时间:2019-07-18T12:42:30.247Z 来源:《科技尚品》2018年第10期作者:丁春江冯惠华戴晓敏梁兵梁卫聪 [导读] 随着我国科学技术的发展,医学设备也在不断的增加,而医科达Precise型直线加速器作为医院重要的医学设备,提高对其的故障检修是其中的重点和关键,本文从医科达加速器的概述、真空系统的组成以及医科达Precise型直线加速器真空故障维修等方面进行简要的分析和研究,进而为研究故障出现的原因和因素,针对其因素采取相应的解决方式,进而保障其加速器的正常运行。 开平市中心医院放疗中心 前言 在医院的临床手术中,医科达Precise型直线加速器是其中的重要设备,它的作用是避免加速管内放电击穿,防止电子枪阴极中毒,即钨丝材料的热子或灯丝氧化,减少电子与残余气体杂质的碰撞损失,因此,对医科达Precise型直线加速器真空系统的故障进行排除是其中的重要工作,在故障的排除中,要加强对原因的分析,并对故障进行科学的检修,进而保障加速器的正常使用。 1.医科达加速器的概述 1.1特点 在进行医科达加速器的真空系统的维修中,要先对医科达加速器进行熟悉和了解,通过对其结构和特征的熟悉,能够更加针对的预测其故障发生,其主要有以下几个特点: 首先,其加速器在使用的过程中可以避免加速管内放电击穿,进而提高加速器的使用效率,故此,该加速器具有较大的优势。 其次,在医院的使用中,医科达加速器可以避免出现钨丝材料灯丝或者热子氧化的问题,同时防止电子枪的阴极出现中毒的问题。 最后,医科达加速器能够有效降低电子和残余气体发生碰撞的概率,避免造成势能损失。 由此可见该直线加速器在医院的使用中能够提高其使用效率,并为医院的手术等提供高效率的使用,保障手术的正常进行。 1.2结构 在对医科达Precise型直线加速器进行分析中,要先对其结构进行熟悉,医科达Precise直线加速器是行波加速,用的是可拆卸密封的行渡加速管,其结构示意图如下: 从上图中可以看出,医科达Precise直线加速器的结构较为复杂,在进行故障的维修过程中,呀针对其结构进行故障分析,进而得出故障所在。故此,要加强对医科达直线加速器的结构分析,进而提高维修效率。 2.真空系统 在医科达Precise型直线加速器真空系统中,要对真空系统进行分析,其加速器的真空系统构成较为复杂,在进行故障的分析中,可以借助科学技术和信息技术对医科达直线加速器的真空系统进行检测,进而对其故障因素进行分析,进而保障真空系统的安稳运行,同时,加速器对真空的检测主要是通过对离子泵的工作电流的检测换算过来的,真空监测主要是加速器可以对真空度、真空联锁以及真空电路进行监测,在监测的过程中可以对加速器的情况进行观察。 3.医科达Precise型直线加速器真空故障维修 3.1故障表现 在对医科达Precise型直线加速器真空维修前要先对故障表现进行了解,进而能够快速的找到其故障所在。医科达加速器在使用的过程中,如果长时间的没有进行检修,其真空系统就会出现故障,进而影响加速器的使用,因此,在使用加速器要定期对其进行检修,医科达Precise直线加速器使用时起,如果在6MV电子线治疗模式时剂量不稳,同时低剂量联锁,治疗暂停,经常报Magnetron timer,其它电子线及X线治疗模式均正常,这时就是出现故障,需要对其加速器进行检修,这时,需要对加速器进行检修,故此,在医科达Precise型直线加速器使用过程中,要加强对其加速器故障的检测,如果一旦出现故障要及时进行处理,避免由于故障而影响其使用。 3.2故障分析和排除 在对医科达Precise型直线加速器的故障分析中,首先要先对其真空系统出现故障的因素进行分析,一般医科达直线加速器的真空故障有两个原因,其一是可能加速器的真空系统有泄漏点,该泄漏点导致真空系统出现故障,进而影响其正常使用,其二,可能加速器的 离子泵泵体故障损伤无法工作,这些是加速器真空系统可能出现故障的因素,通过对因素的分析进而对故障进行分析,在医科达工程师到达后,初步诊断为离子泵性能减退,通过测试,关闭枪端钛泵,靶端真空值上升,但是真空值还是未达到工作条件。再次判断为真空系统有泄漏点,在对故障分析完成之后,要对其可能出现的故障进行排除,找出真正出现故障的因素,在进行故障排除的过程中,针对一些可能出现的特殊故障要采取针对性的措施,进而进而提高故障排除的效率。 3.3故障处理 故障处理是加速器真空系统运行中的重要环节,在对医科达Precise型直线加速器真空系统的故障分析和排除之后,要对其故障进行处

医科达电子直线加速器技术参数(上海

医科达电子直线加速器技术参数 1、双模式的数字化加速器,提供宽范围的X线和电子线能量,充分满足放射治疗外照射的临床需要。 2、射线束能量:多能量可定制性:多至2档X射线能量(4~18MV)和6档电子线能量(4~20MeV) 3、主机性能及配置: (1)独特设计的滚筒式机架:高度可靠性和稳定性,开放的机架结构,便于维修,最低的等中心高度(124cm),最大的等中心到治疗头的净空间距离45cm。 (2)高效能的行波加速管:行波加速管二十年无条件保用,允许较低的电压梯度,对行波加速管的真空要求低,使电子枪等部件可快速拆卸并易于更换。 (3)大功率FasTraQ磁控管:专门的紧凑型微波功率源,5MW功率输出,具有快速调谐的能力,快速的束流切换特性<0.1秒,提供24个月的保用期。 (4)滑雪式偏转系统:完全的消色散系统,并维持射束的对称性,伺服控制的三极磁偏转系统,精确的靶点聚焦,极佳的半影。(5)可单独拆卸更换灯丝的电子枪:电子枪伺服系统反应快速,确保束流能量的精度。

(6)六通道开放式结构的电离室:最新型超薄壁陶瓷材料电离室,自动校正KTP(温度、湿度、气压),监测射线的剂量、对称性和平坦度,具有长期的高灵敏和高稳定性,适合精确的伺服控制射线束流,重复精度:+/-0.5%,线性精度:+/-1%,2-10MU时的线性精度对保证IMRT的放疗精度尤其重要,旋转(运动束流)投照时的稳定性:±1%,分辨率:0.1MU。 (7)运动系统:用于操纵治疗头、机架及病人床的运动,手控盒可操纵加速器的所有动作,治疗头上有四个控制钮,可操纵治疗头的所有运动,治疗床两边各有一个控制板,可操纵床的所有运动,所有运动都是无线调速。 (8)安全连锁系统:通过硬件限位和软件防碰撞二种方式,确保病人和操作人员的安全。 (9)真空系统:维持加速管和电子枪的真空状态,在加速器中有效使用离子泵,有助于减少能源消耗,保护环境,并维持高的开机率。(10)水冷系统(内循环):保证加速器的频率稳定,进而保证能量的稳定,用于加速器的热交换。 4、控制系统:全新的第三代全集成、全数字控制系统,确保更为平顺的流程工作方式,有效地提高治疗病人的周转率,基于Windows 平台的图形用户界面,易学习和使用,模块化软件结构,配置安装各

PRECISE-DAPT及DAPT评分在老年PCI术后双联抗血小板治疗时限中的评估应用

PRECISE-DAPT及DAPT评分在老年PCI术后双联抗血小板治疗时 限中的评估应用 目的:通过收集老年冠状动脉支架植入术患者临床信息,分析PRECISE-DAPT 及DAPT两个评分系统的出血/缺血风险分层在我院老年PCI患者中的分布情况;通过比较两个评分系统预估双联抗血小板时限与随访获得的实际时限的分布,了解这两个评分系统在我院老年PCI患者术后评估双联抗血小板治疗时限过程中的应用情况。方法:本研究收集2015年12月至2017年12月就诊于新疆某三甲医院医院心内科、心胸外科,并成功接受冠状动脉支架植入的老年(≥65岁)患者临床信息,支架植入后计算患者的PRECISE-DAPT评分,在患者双联抗血小板治疗12个月后计算DAPT评分,分析PRECISE-DAPT及DAPT评分系统出血/缺血风险分层在我院老年PCI患者中的分布;应用PRECISE-DAPT及DAPT评分预估其双联抗血小板时限;随访记录患者双联抗血小板治疗实际时限,并比较预估时限与实际时限的差别;随访并分析出血及不良心血管事件的发生及分布。 结果:共收集372例老年冠状动脉支架植入术患者临床信息,经过平均14.7个月的随访,365例(98.2%)患者随访成功,其中8例(2.2%)死亡。1.基本情况:患者平均年龄71.8±4.1岁,男性215例(57.8%),入院诊断急性心肌梗死161例(43.3%),急诊PCI治疗103例(27.7%),合并高血压231例(62.1%),合并糖尿病116例(31.2%),吸烟114例(30.6%),冠心病家族史11例(3.0%),血胆固醇水平4.07±0.93mmol/L,甘油三酯水平1.37±0.75mmol/L,低密度脂蛋白C水平2.49±0.77mmol/L。 术后抗血小板药物:阿司匹林联合氯吡格雷257例(69.1%),阿司匹林联合替格瑞洛101例(27.2%)。2.PRECISE-DAPT及DAPT评分分布及应用:患者

医科达直线加速器参数

Precise全数字直线加速器 双模式的数字化加速器,提供宽围的X线和电子线能量,充分满足放射治疗外照射的临床需要。 具有如下详述的特征和配置: 1.0 射线束能量 Precise数字化加速器具有无可匹敌的多能量可定制性:2档X射线能量(4~15MV)和9档电子线能量(4~22MeV) 2.0 Precise全数字直线加速器主机系统包含如下特性: 独特设计的滚筒式机架直线加速器 -由强劲的刚性结构带来的高度可靠性和稳定性 -开放的机架结构,便于维修,需维护的重要部件均分布在易于接近的位置 -最低的等中心高度(124cm),具有最优的临床可用性 -最大的等中心到治疗头的净空间距离45cm 高效能的行波加速管 -行波加速管二十年无条件保用 -允许较低的电压梯度,对行波加速管的真空要求低,使电子枪等部件可快速拆卸并易于更换 大功率FasTraQ磁控管: -专门的紧凑型微波功率源,5MW功率输出,具有快速调谐的能力 -快速的束流切换特性<0.1秒 -提供24个月的保用期 独有的滑雪式偏转系统: -完全的消色散系统,并维持射束的对称性 -伺服控制的三极磁偏转系统 -精确的靶点聚焦,极佳的半影 可单独拆卸更换灯丝的电子枪 -电子枪伺服系统反应快速,确保束流能量的精度 -易于更换,维护费用低 六通道开放式结构的电离室 -最新型超薄壁瓷材料电离室 -自动校正KTP(温度、湿度、气压),监测射线的剂量、对称性和平坦度 -具有长期的高灵敏和高稳定性,适合精确的伺服控制射线束流 -重复精度:+/-0.5% -线性精度:+/-1% -2-10MU时的线性精度对保证IMRT的放疗精度尤其重要 -旋转(运动束流)投照时的稳定性:±1% -分辨率:0.1MU 运动系统 -用于操纵治疗头、机架及病人床的运动 -手控盒可操纵加速器的所有动作

PreciseProRxBrochure-强生颈动脉支架

Endovascular Cordis Precise? Pro RX TM NEW Carotid Stent System Ease, Performance and Reliability in Carotid Artery Stenting

1. Yadav JS, et al. Protected carotid-artery stenting versus endarterectomy in high-risk patients. N Engl J Med 2004;351:1493-501. 2. Katzen BT, et al, on behalf of the CASES-PMS Investigators. Carotid artery stenting with emboli protection surveillance study: thirty-day results of the CASES-PMS study. Catheter Cardiovasc Interv 2007;70:316-23. Highly effective procedures ? Multi-segmented design ? Independent segments of 2mm ? Alternating bridges every 3rd ‘V’? Excellent strut apposition – Self Tapering Technology Outstanding flexibility Remarkable vessel wall contourability 1 2Nitinol Stent

加速器相关英语缩略语定义(医科达)

加速器缩略语定义Abbreviation Definition ABCActive BreathingCoordinator主动呼吸协调器 ACBarm control board 臂控制板 AFCautomatic frequencycontrol 自动频率控制 AFDaxis filmdistance 轴向膜距 AIangiographicimage血管造影图像 ALARPas low as reasonablepracticable尽可能低 AmSiAmorphousSilicon 非晶硅 APSAutomatic PositioningSystem?自动定位系统? ASUassisted setup辅助设置 BCBendingCoarse弯曲粗 BEVbeam eyeview光束视角 BFBendingFine弯曲细度 BLDbeam limitingdevice限束装置 BLSbeam limitingsystem束流限制系统 BMPBitmap (imageformat)位图(图像格式) BOMbill ofmaterials材料单 CANcontroller area network控制器局域网 CATcustomer acceptancetests客户验收试验 CAXcentralaxis中央轴,中心轴 CBcircuitbreaker]断路器 CCcouchcontrol 床控制 CCPCAN calibrationprotocol CAN校准协议 CCTVclosed circuittelevision 闭路电视 CDcompactdisc CITP clients interface terminal panel (interface between Elekta product and client hardware)客户界面终端面板(Elekta产品与客户端硬件之间的接口) CMMcorrective maintenancemanual校正维护手册 CMUMClinical Mode User’s Manual 临床模式用户手册 CRPcommon referencepoint 公共参考点 CTComputerizedTomography计算机X射线断层

accurate, exact, precise,

accurate, exact, precise, right, true, correct 用法区别 这些形容词均含“准确的”“正确的”之意。区别如下: 1. accurate指通过谨慎的努力达到符合事实或实际,侧重不同程度的准确性,与事实无出入。如: Watches have become very accurate. 手表已造得非常准确了。 You should send in accurate income tax returns. 你应当寄去准确的个人所得税报表。 Many people complain about not gathering accurate news. 许多人抱怨搜集不到准确的消息。 2. exact 着重在质与量方面的准确,语气比accurate强。如: What is her exact age? 她的准确年龄是多少? I need to know the exact size. 我需要知道确切的尺寸。 Mathematics is an exact science. 数学是一门精密的科学。 3. precise 侧重极端准确,更强调细节的精确无误。如: She denied knowing any thing more precise. 她否认知道任何更明确的事。 The level of formality determines the precise mode of expression. 不同的礼节程度决定所需的确切表达方式。 It was found at the precise spot where she had left it. 那东西正好在她遗落的那个地点找到了。 4. right 使用广泛,可与这些词中的correct换用,但常暗示道德、理解、行动等方面的正确。如: Be guided by your sense of what is right and just. 做事要有是非观念和正义感。 He got into a situation wherein it is hard to decide what is right and wrong. 他陷入一种难以分辨是非的局面。 5. true 强调真实,不假。如: Possibly what he says is true. 可能他讲的是对的。 In my opinion, none of this is true. 照我看这都不是事实。

考研英语备战:长难句例题及分析(八)

考研英语备战:长难句例题及分析(八) 1. The physicist rightly dreads precise argument,since an argument that is convincing only if it is precise loses all its force if the assumptions on which it is based are slightly changed,whereas an argument that is convincing though imprecise may well be stable under small perturbations of its underlying assumptions. 物理学家恐惧于那些精确无误的论据不无道理,因为某种只有在它是精确无误的条件下才令人置信的论据,一旦它赖于建立其上的假设稍有变化,便会失去它一部的作用;而与此相反,一个尽管并不精确无误但却令人置信的论据,在其基本假设(underlying assumption)稍微受干扰的情况下,仍然有可能是站得住脚的。 难句类型:复杂修饰 解释:本句在文章中就是一个自然段,虽然长度比不上前面第一章中所举的那个长达10行的例子,但是难度绝不在那句话之下。本句堪称句子的大杂烩,连主句带从句居然一共有八个。从大往小说,由whereas连接了两个大句子,whereas后面的句子中的主语an augument之后又跟了一个定语从句that is convincing though imprecise,修饰augument。whereas前面共有六个句子,由the physicist作主语的主句;由since引导的原因状语从句,修饰since从句中主语an augument的由that引导的定语从句,此定语从句中的条件状语从句only if it is precise; since从句中的条件状语从句if the assumptions on which it is based are slightly changed,以及修饰此从句中的主语assumptions的定语从句on which it is based一共八个句子,从句套从句,实在令人叹为观止。 然而,在考试现场去数句子的数目,是只有呆子才会干的事,读者们惟一要干的事就是反复阅读这句话,什么时候练到不必去想其语法结构就能按原文顺序读懂,才算初步掌握;再进一步把它读顺,直到你看不出这个句子有什么特别的地方,看上去还挺舒服就算训练成功。 意群训练:The physicist rightly dreads precise argument, since an argument that is convincing only if it is precise loses all its force if the assumptions on which it is based are slightly changed, whereas an argument that is convincing though imprecise may well be stable under small perturbations of its underlying assumptions. 2. However,as they gained cohesion,the Bluestockings came to regard themselves as a women’s group and to possess a sense of female solidarity lacking in the salonnieres,who remained isolated from one another by the primacy each held in her own salon. 起初,蓝袜女们确实模仿了法国沙龙女主人,将男性襄括到其小圈子中来。然则,随着她们获得的凝聚力,她们渐趋将自己视作一女性团体,并拥有了一种妇女团结意识,而这种意识在法国沙龙女主人身上则荡然无存,因为她们每个人在其自己的沙龙中自视甚高而彼此

医科达加速器离子泵监护装置的设计与实现

研究论著RESEARCH WORK 引言 随着放疗技术的发展,放疗作为肿瘤治疗的三大主要治疗手段之一,越来越受到广大肿瘤患者的认可,约有75%的患者需要采用放射治疗[1]。目前,国内外医院放疗用设备主要是瑞典的医科达和美国的瓦里安医用直线加速器,医科达加速器具有电子枪可拆卸的行波加速管,加速管内的真空度靠枪端和靶端的两个溅射式离子泵维持[2]。由于加速管可拆卸接口较多,密封度很难保证,两个离子泵必须24 h通电工作以维持加速管内真空度在10-6 mbar以下[3-4]。当发生断电几个小时以上,真空度下降[5],来电后离子泵开始工作时负荷较大(或发生局部漏气时),泵体温度上升[6]。虽然工作电流大到一定值时,离子泵电源会因过流而自我保护,但此时离子泵的温度已达100℃以上,远远超出了其正常工作的温度[7-9]。如果不及时断电冷却,会严重影响其工作性能和使用寿命,甚至直接烧坏[10-12]。因加速器上没有对离子泵工作状态的指示和提示,工作人员对这种情况不能及时发现,直至加速管真空度下降到出现连锁保护。更危险的是夜间或周六、周日无人值班时发生以上情况。两个离子泵的价格50余万元,不但会导致严重的经济损失,而且影响病人的正常放疗。为解决这一问题,笔者设计了一种离子泵监护装置,可有效地避免以上情况的发生。 1 设计方法与工作原理 1.1 离子泵的结构 加速管真空系统是由枪端和靶端两个溅射式离子泵维持,其内部结构见图1。阳极为纵横排列的薄壁不锈钢筒,阴极为放置于阳极两端的两块钛板,阳极、阴极一起封装于不锈钢的外壳中,壳外加一U形永磁体,磁力线方向平行于阳极筒轴,垂直于阴极钛板。阴阳极之间加有7.3 kV 的直流高压,泵体内的残余气体分子在正交电磁场的作用下发生潘宁放电,产生的阳离子轰击阴极钛板,溅射出的钛原子在阳极筒内壁和阴极轰击较少的部位形成新鲜的钛 医科达加速器离子泵 监护装置的设计与实现 魏绪国1a,李修磊1a,王宏英1a,张明臣1b,王绪刚1a,王永明2 1. 聊城市人民医院 a. 放疗科;b. 设备科,山东聊城 252000; 2. 南京君茂医疗器械有限公司,江苏南京 210000 [摘 要] 目的 为避免医科达加速器离子泵高温损坏,及时发现工作异常,设计一种离子泵监护装置。方法选取我院小儿康根据枪靶端离子泵的工作特性和结构特点,设计一种有效的监护方法,并将各监护部件集成于监控箱内,安装在加速器机架的合适位置。结果经过应用检验,该装置实现了离子泵工作温度的实时显示、超温报警及断电保护功能,达到预设目标。结论离子泵监护装置安装简单可靠,能有效地保护离子泵,弥补了加速器设计的缺陷,避免了经济损失。 [关键词] 直线加速器;离子泵;真空度;离子泵监护装置 Design and Implementation of the Monitoring Device for the Elekta Accelerator Ion Pump WEI Xuguo1a, LI Xiulei1a, WANG Hongying1a, ZHANG Mingchen1b, WANG Xugang1a, WANG Yongming2 1. a. Department of Radiotherapy; b. Department of Equipment, Liaocheng City People’s Hospital, Liaocheng Shandong 252000, China; 2. Nanjing Junmao Medical Devices Co., Ltd., Nanjing Jiangsu 210000, China Abstract: Objective In order to avoid the high temperature damage of the Elekta accelerator ion pump and detect the abnormal work in time, a monitoring device of ion pump was designed. Methods According to the working characteristics and structural characteristics of the ion pump at the gun target, an effective monitoring method was designed. The monitoring components were integrated into the monitoring box and installed in the proper position of the accelerator frame. Results After application test, the device could realize real-time display of working temperature of ion pumps, over temperature alarm, and power failure protection function, suggesting the achievement of the preset target. Conclusion The ion pump monitoring device is simple and reliable, which can effectively protect the ion pump, make up for the defects of accelerator design, and avoid economic loss. Key words: linear accelerator; ion pump; vacuum degree; ion pump monitor [中图分类号]TH774 [文献标识码] A doi:10.3969/j.issn.1674-1633.2019.04.020 [文章编号] 1674-1633(2019)04-0076-04 收稿日期:2018-09-29 修回日期:2018-11-05 作者邮箱:sdlcwxg@https://www.doczj.com/doc/698341161.html, 中国医疗设备 2019年第34卷 04期 V OL.34 No.04 76

医用直线加速器比较表

医用直线加速器比较表 厂商Elekta VARIAN SIEMENS 说明 机型Precise Clinac EX Primus 基本结构Elekta加速器的高度集成化控制系统、性能绝佳的敞开式设 计保证可加速器的高开机率。其他厂家的产品都是封闭式设 计,常因机器设计不佳而停机,更换加速管时间长。 加速管行波驻波驻波最低的加速器使用消耗费用:驻波加速管对真空度的要求、能 量的转换、能谱的宽度等几个方面都优于驻波加速管。Elekta 保持和发展了行波管加速原理,通过独特的设计使一台加速器 可提供3档电子线。一机多用。其他厂家加速器最多产生两个 光子线。Elekta加速器具有低功耗、高效率、长寿命,自1953 年生产世界上第一台直线加速器以来,从未更换过加速管。 机架类型滚筒式中心轴承式中心轴承式Elekta滚筒机架磨损小,等中心变化小,十年精度1mm,终身 保证机架等中心精度在2mm(V和S都采用中心轴承式,十年 等中心偏差超过2mm),且为敞开式设计,散热性能好,连续 工作时间长,便于维修。 微波功率源仅用磁控管( 5.5MW) 即可需速调管(5.5MW)加 微波驱动 需速调管(7MW)加 微波驱动 Elekta使用EEV公司的长寿命磁控管,停机时间短,运行费 用低,且无条件保修2年。 低运行费用的微波功率源:Elekta公司采用的微波功率源是 磁控管,集振荡器和放大器为一体,结构简单,不需额外的微 波振荡器(或微波驱动器)等组件,从而简化功率源的结构。 磁控管的体积小,能安装在机架上,直接把微波馈送到加速管, 不需特殊接头,且易更换,停机时间短(而速调管必须配上配 上微波振荡器才能实现磁控管的功能,磁控管的寿命比速调管 短一半,但由于振荡器的寿命与磁控管差不多,导致使用速调 管的费用为使用磁控管的4~5倍。

医科达直线加速器参数(精)

Precise 全数字直线加速器 双模式的数字化加速器,提供宽范围的 X 线和电子线能量,充分满足放射治疗外照射的临床需要。 具有如下详述的特征和配置: 1.0 射线束能量 Precise 数字化加速器具有无可匹敌的多能量可定制性:2档 X 射线能量 (4~15MV 和 9档电子线能量(4~22MeV 2.0 Precise 全数字直线加速器主机系统包含如下特性: 独特设计的滚筒式机架直线加速器 -由强劲的刚性结构带来的高度可靠性和稳定性 -开放的机架结构,便于维修,需维护的重要部件均分布在易于接近的位置 -最低的等中心高度(124cm ,具有最优的临床可用性 -最大的等中心到治疗头的净空间距离 45cm 高效能的行波加速管 -行波加速管二十年无条件保用 -允许较低的电压梯度, 对行波加速管的真空要求低, 使电子枪等部件可快速拆卸并易于更换 大功率 FasTraQ 磁控管: -专门的紧凑型微波功率源, 5MW 功率输出,具有快速调谐的能力 -快速的束流切换特性 <0.1秒

-提供 24个月的保用期 独有的滑雪式偏转系统: -完全的消色散系统,并维持射束的对称性 -伺服控制的三极磁偏转系统 -精确的靶点聚焦,极佳的半影 可单独拆卸更换灯丝的电子枪 -电子枪伺服系统反应快速,确保束流能量的精度 -易于更换,维护费用低 六通道开放式结构的电离室 -最新型超薄壁陶瓷材料电离室 -自动校正 KTP (温度、湿度、气压 ,监测射线的剂量、对称性和平坦度-具有长期的高灵敏和高稳定性,适合精确的伺服控制射线束流 -重复精度:+/-0.5% -线性精度:+/-1% -2-10MU 时的线性精度对保证 IMRT 的放疗精度尤其重要 -旋转(运动束流投照时的稳定性:±1% -分辨率:0.1MU 运动系统 -用于操纵治疗头、机架及病人床的运动

医用直线加速器

医用直线加速器 医用加速器是生物医学上的一种用来对肿瘤进行放射治疗的粒子加速器装置。带电粒子加速器是用人工方法借助不同形态的电场,将各种不同种类的带电粒子加速到更高能量的电磁装置,常称“粒子加速器”,简称为“加速器”。要使带电粒子获得能量,就必须有加速电场。依据加速粒子种类的不同,加速电场形态的不同,粒子加速过程所遵循的轨道不同被分为各种类型加速器。目前国际上,在放射治疗中使用最多的是电子直线加速器。 电子直线加速器 电子直线加速器是利用具有一定能量的高能电子与大功率微波的微波电场相互作用,能量电子直接引出,可作电子线治疗。电子打击重金属靶,产生韧致辐射,发射X射线,作X线治疗。 根据电子与微波电场的作用方式不同,电子直线加速器分为行波加速器和驻波加速器。 一个最简单的电子直线加速器至少要包括,一个加速场所(加速管),一个大功率微波源和波导系统,控制系统,射线均整和防护系统。当然市场上作为商品的设备要远比这些复杂,但这些基本部件都是必不可少的。医用加速器的分类 分类情况 医用加速器按照能量区分可以分为低能机、中能机和高能机。 按照X能量的档位加速器分为单光子、双光子和多光子。 低中高能机的区分主要在于给出的电子线的能量。 医用加速器用于放疗的适应症 1、当其用于常规放疗时其适应症为: 医用加速器适应症广泛,可用于头颈、胸腔、腹腔、盆腔、四肢等部位的原发或继发肿瘤,以及手术后残留的术后或手术前的术前治疗等。 西门子直线加速器 它所产生的高能X线具有照射深度强,射线集中等优点为,不仅能有效杀死癌细胞,而且能保护正常组织少受损伤,是治疗深部肿瘤的理想设备。它优于国产加速器,可以产生六档电子线,为肿瘤治疗提供了更好的方法。 高能X线具有皮肤损伤小,照射量高,保证正常组织效果好的特点,主要用于治疗深部肿瘤,高能电子束,能量可变,可根据不同的肿瘤深度进行调节选择,可用于恶性肿瘤和偏心性肿瘤的治疗,术中放疗也多用于高能电子束。 恶性肿瘤患者的治疗提倡的是综合治疗,放射治疗是不可缺少的手段,约有70%的患者需行放射治疗,医用直线加速器是现今国际上先进的放疗设备。 瓦里安直线加速器 该加速器融合了现代医学影像技术、立体定位技术、计算机、核医学、放射物理、自动化智能控制等多种现代高新科技,可实现对全身肿瘤的常规放射治疗、三维立体定向精确放疗、立体定向放射外科治疗(俗称X-刀治疗)、适形调强放射治疗(诺力刀治疗)等。该直线加速器能最大限度杀死肿瘤,保护人体正常组织提供更加准确、高效、安全的技术保障。 1具有双光子、多档能量的电子线,保证各种不同深度的肿瘤治疗剂量组要。肿瘤隐藏的再深,他也能像海底捞针一样抓住它2。具有多叶准直系统,能完成精确放疗计划。可从三维方向上随着肿瘤的不同形状变化,产生与肿瘤形状近似的照射体积,使治疗更精确。3。具有三维调强治疗计划系统,调强放射治疗是当今世界上

相关主题
文本预览
相关文档 最新文档