99 research outputs found

    Atomicity and visibility in tiny embedded systems

    Get PDF
    ManuscriptVisibility is a property of a programming language's memory model that determines when values stored by one concurrent computation become visible to other computations. Our work exploits the insight that in nesC, a C-like language with explicit atomicity, the traditional way of ensuring timely visibility-volatile variables-can be entirely avoided. This is advantageous because the volatile qualifier is a notorious source of programming errors and misunderstandings. Furthermore, the volatile qualifier hurts performance by inhibiting many more optimizations than are necessary to ensure visibility. In this paper we extend the semantics of nesC's atomic statements to include a visibility guarantee, we show two ways that these semantics can be implemented, and we also show that our better implementation has no drawbacks in terms of resource usage

    Memory safety and untrusted extensions for TinyOS

    Get PDF
    technical reportSensor network applications should be reliable. However, TinyOS, the dominant sensor net OS, lacks basic building blocks for reliable software systems: memory protection, isolation, and safe termination. These features are typically found in general-purpose operating systems but are believed to be too expensive for tiny embedded systems with a few kilobytes of RAM. We dispel this notion and show that CCured, a safe dialect of C, can be leveraged to provide memory safety for largely unmodified TinyOS applications. We build upon safety to implement two very different environments for TinyOS applications. The first, Safe TinyOS, provides a minimal kernel for safely executing trusted applications. Safe execution traps and identifies bugs that would otherwise have silently corrupted RAM. The second environment, UTOS, implements a user-kernel boundary that supports isolation and safe termination of untrusted code. Existing TinyOS components can often be ported to UTOS with little effort. To create our environments, we substantially augmented the CCured toolchain to emit code that is safe under interrupt-driven concurrency, to reduce storage requirements by compressing error messages, to refactor direct hardware access into calls to trusted helper functions, and to make safe programs more efficient using whole-program optimization. A surprising result of our work is that a safe, optimized TinyOS program can be faster than the original unsafe, unoptimized application

    A Comparative Study on the Importance of Winning within University Sport in England and the United States.

    Get PDF
    This thesis draws from a bi-national comparative study on the importance of ‘winning’ within university sport in England and the United States, in two institutions, University College Worcester (UCW) and the British University Sport Association (BUSA) in England and Northwest Nazarene University (NNU) and the National Collegiate Athletic Association (NCAA) in the United States. The thesis focuses on perceptions and attitudes related to the ‘amateur’ – ‘commercial’ ethos of winning, specifically of administrative personnel, coaches and athletes within these systems. In order to provide a contextual setting, the socio-historical development of sport culture generally and in universities in particular was examined in both countries. This context also provided an informed rationale for ‘participants’ perceptions and attitudes selected for this study. A multi-method approach for data collection was utilised comprising questionnaire and interview instruments supported by a comprehensive underpinning literature review including participant observation and analysis of primary and secondary documentation in a comparative dimension. The study’s findings suggest that the extent of the importance of winning within university sport in England and the United States is influenced by a range of shaping factors. BUSA’s central goal emanates from an ‘amateur’ approach that includes features such as ‘mass-participation’ and recreational enjoyment for the student-athletes participating. The NCAA is a business-run organisation that operates on financial budgets into the millions. Inter-collegiate sport serves as a major form of entertainment in American society, with ‘commercial’ pressures driving a ‘winning’ attitude on all levels. However, the empirical evidence and participant observations do suggest an emerging blurring of perceptions, especially amongst the athlete groups at both UCW and NNU. The evidence reveals features, which challenge accepted orthodoxy on the nature and extent of the ‘amateur’ – ‘commercial’ ethos continuum in both university systems

    The Relationship of Software System Flexibility to Software System and Team Performance

    Get PDF
    Organizations are evolving at an ever-increasing rate due to economic changes, globalization, and technology enabled changes such as e-business. These changes require existing and new software systems to be flexible enough to support rapid change while still being reliable and cost effective. Software flexibility has previously been studied only from a structural perspective with little attention to the people and processes that support the software, especially in the maintenance environment where most changes occur. This research builds on a previously validated technology flexibility model with two dimensions: structural and process flexibility (Nelson and Ghods 1998). We empirically test the relationship of flexibility to the performance of the software system and the IS support team. The relationships between flexibility and performance are analyzed using a ìfitî analysis to fully understand the complexity of the relationships. Our findings indicate that software flexibility is related to both system and team performance, and is characterized by the amount of interaction, or ìfit,î between structural and process flexibility

    Offline compression for on-chip RAM

    Get PDF
    ManuscriptWe present offline RAM compression, an automated source-to-source transformation that reduces a program's data size. Statically allocated scalars, pointers, structures, and arrays are encoded and packed based on the results of a whole-program analysis in the value set and pointer set domains. We target embedded software written in C that relies heavily on static memory allocation and runs on Harvard-architecture microcontrollers supporting just a few KB of on-chip RAM. On a collection of embedded applications for AVR microcontrollers, our transformation reduces RAM usage by an average of 12%, in addition to a 10% reduction through a dead-data elimination pass that is also driven by our whole-program analysis, for a total RAM savings of 22%. We also developed a technique for giving developers access to a flexible spectrum of tradeoffs between RAM consumption, ROM consumption, and CPU efficiency. This technique is based on a model for estimating the cost/benefit ratio of compressing each variable and then selectively compressing only those variables that present a good value proposition in terms of the desired tradeoffs

    Essays in Econometrics:

    Get PDF
    Thesis advisor: Arthur LewbelIn my doctoral research, I developed econometric estimators with strong applications in analysis of heterogeneous consumer demand. The first chapter develops an estimator for grouped patterns of heterogeneity in an approximately sparse setting. This setting is used to estimate demand shocks, competition sets and own-price elasticities for different groups of consumers. The second chapter, which is joint work with Stefan Hoderlein and Alexander Meister, develops a nonparametric estimator of the marginal effects in a panel data even if there are only a small number of time periods. This is used to estimate the heterogeneous marginal effects of increasing income on consumption of junk food. The third chapter, which is joint work with Stefan Hoderlein and Solvejg Wewal, is the first difference-in-differences model for binary choice outcome variables when treatment effects are heterogeneous. We apply this estimator to examine the heterogeneous effects of a soda tax. Chapter 1: ``Approximately Sparse Models and Methods with Grouped Patterns of Heterogeneity with an Application to Consumer Demand" introduces post-Lasso methods to time-varying grouped patterns of heterogeneity in linear panel data models with heterogeneous coefficients. Group membership is left unrestricted and the model is approximately sparse, meaning the conditional expectation of the variables given the covariates can be well-approximated by a subset of the variables whose identities may be unknown. I estimate the parameters of the model using a “grouped fixed-effects” estimator that minimizes a post-Lasso least-squares criterion with respect to all possible groupings of the cross-sectional units. I provide conditions under which the estimator is consistent as both dimensions of the panel tend to infinity and provide inference methods. Under reasonable assumptions, applying this estimator to a consumer demand application allows me to partition consumers into groups, deal with price endogeneity without instrumental variables, estimate demand shocks, and identify compliments and substitutes for each group. I then use this estimator to estimate demand for soda by identifying different groups' competition sets as well as demand shocks using Homescan data. Chapter 2: In ``A Panel Data Estimator for the Distribution and Quantiles of Marginal Effects in Nonlinear Structural Models with an Application to the Demand for Junk Food", we propose a framework to estimate the distribution of marginal effects in a general class of structural models that allow for arbitrary smooth nonlinearities, high dimensional heterogeneity, and unrestricted correlation between the persistent components of this heterogeneity and all covariates. The main idea is to form a derivative dependent variable using two periods of the panel, and use differences in outcome variables of nearby subpopulations to obtain the distribution of marginal effects. We establish constructive nonparametric identification for the population of ``stayers" (Chamberlain 1982), and show generic non-identification for the ``movers". We propose natural semiparametric sample counterparts estimators, and establish that they achieve the optimal (minimax) rate. Moreover, we analyze their behavior through a Monte-Carlo study, and showcase the importance of allowing for nonlinearities and correlated heterogeneity through an application to demand for junk food. In this application, we establish profound differences in marginal income effects between poor and wealthy households, which may partially explain health issues faced by the less privileged population. Chapter 3: In ``A Binary Choice Difference-in-Differences Model with Heterogeneous Treatment Effects and an Application on Soda Taxes", we answer how should Differences-in-Differences be implemented when outcomes are binary and we expect heterogeneous effects. The scope for applications is clearly vast, including labor force participation, product purchase decisions, enrollment in health insurance and much more. However, assumptions necessary to measure heterogeneous effects in classic Difference-in-Difference models break down with a binary dependent variable. We propose a model with a nonparametric random coefficient formulation that allows for heterogeneous treatment effects with a binary dependent variable. We provide identification of the average treatment effect on the treated (ATT) along with identification of the joint distribution of the actual and counterfactual latent outcome variable in the treatment group which allows us to show the heterogenous treatment effects. We suggest an estimator for the treatment effects and evaluate its finite sample properties with the help of Monte Carlo simulations. We further provide extensions that allow for more flexible empirical applications, such as including covariates. We apply our estimator to analyze the effect of a soft drink tax on consumer's likelihood to consume soda and find heterogeneous effects. The tax reduced the likelihood of consumption for the most consumers but not for those who were most likely to be consuming previously.Thesis (PhD) — Boston College, 2020.Submitted to: Boston College. Graduate School of Arts and Sciences.Discipline: Economics

    Pluggable abstract domains for analyzing embedded software

    Get PDF
    ManuscriptMany abstract value domains such as intervals, bitwise, constants, and value-sets have been developed to support dataflow analysis. Different domains offer alternative tradeoffs between analysis speed and precision. Furthermore, some domains are a better match for certain kinds of code than others. This paper presents the design and implementation of cXprop, an analysis and transformation tool for C that implements "conditional X propagation," a generalization of the well-known conditional constant propagation algorithm where X is an abstract value domain supplied by the user. cXprop is interprocedural, context-insensitive, and achieves reasonable precision on pointer-rich codes. We have applied cXprop to sensor network programs running on TinyOS, in order to reduce code size through interprocedural dead code elimination, and to find limited-bitwidth global variables. Our analysis of global variables is supported by a novel concurrency model for interruptdriven software. cXprop reduces TinyOS application code size by an average of 9.2% and predicts an average data size reduction of 8.2% through RAM compression

    Memory safety and untrusted extensions for TinyOS

    Get PDF
    Journal ArticleSensor network applications should be reliable. However, TinyOS, the dominant sensor net OS, lacks basic building blocks for reliable software systems: memory protection, isolation, and safe termination. These features are typically found in general-purpose operating systems but are believed to be too expensive for tiny embedded systems with a few kilobytes of RAM. We dispel this notion and show that CCured, a safe dialect of C, can be leveraged to provide memory safety for largely unmodified TinyOS applications. We build upon safety to implement two very different environments for TinyOS applications. The first, Safe TinyOS, provides a minimal kernel for safely executing trusted applications. Safe execution traps and identifies bugs that would otherwise have silently corrupted RAM. The second environment, UTOS, implements a user-kernel boundary that supports isolation and safe termination of untrusted code. Existing TinyOS components can often be ported to UTOS with little effort. To create our environments, we substantially augmented the CCured toolchain to emit code that is safe under interrupt-driven concurrency, to reduce storage requirements by compressing error messages, to refactor direct hardware access into calls to trusted helper functions, and to make safe programs more efficient using whole-program optimization. A surprising result of our work is that a safe, optimized TinyOS program can be faster than the original unsafe, unoptimized application

    Efficient type and memory safety for tiny embedded systems

    Get PDF
    ManuscriptWe report our experience in implementing type and memory safety in an efficient manner for sensor network nodes running TinyOS: tiny embedded systems running legacy, C-like code. A compiler for a safe language must often insert dynamic checks into the programs it produces; these generally make programs both larger and slower. In this paper, we describe our novel compiler toolchain, which uses a family of techniques to minimize or avoid these run-time costs. Our results show that safety can in fact be implemented cheaply on low-end 8-bit microcontrollers
    • 

    corecore