-
Notifications
You must be signed in to change notification settings - Fork 76
Inter unit dependencies
The definition of a unit in Engagements 2 to 5 has not changed from Engagement 1. (It still pertains to UBSI loops.)
In Engagements 2 to 5, we no longer report unit → memory and memory → unit dependencies. Instead, we stream process these dependencies and only report final unit → unit dependencies.
In particular, we:
-
eliminate many dependencies between units and memory locations (and vice versa) when there is no complete unit → memory → unit dependency,
-
abstract multiple unit → read → memory dependencies between the same unit and memory instances into a single unit → memory intermediate dependency (that is abstracted away, as described below),
-
perform the analogous abstraction for memory → write → unit dependencies, and
-
abstract each pair of intermediate unit 1 → memory and memory → unit 2 dependencies into a single unit 1 → unit 2 inter-unit dependency.
Together, these significantly decrease the volume of inter-unit dependency information reported, without any loss of completeness in causality tracking.
This material is based upon work supported by the National Science Foundation under Grants OCI-0722068, IIS-1116414, and ACI-1547467. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.
- Setting up SPADE
- Storing provenance
-
Collecting provenance
- Across the operating system
- Limiting collection to a part of the filesystem
- From an external application
- With compile-time instrumentation
- Using the reporting API
- Of transactions in the Bitcoin blockchain
- Filtering provenance
- Viewing provenance
-
Querying SPADE
- Illustrative example
- Transforming query responses
- Protecting query responses
- Miscellaneous