Memory Overflow Protection for Embedded Systems using Run-time Checks, Reuse and Compression
Publication or External Link
Out-of-memory errors are a serious source of unreliability in embedded systems. This is because embedded systems typically do not have hard disks and hence, no swap-space and in case of an out-of-memory error the application simply crashes. Further, in most cases protection from virtual memory is absent. Thus, the fact that a segment has exceeded its bound is not even detected and no pre-crash remedial action is possible.
This work improves reliability in two ways. First, it proposes a low-overhead scheme of run-time checks which enables detection of out-of-memory errors and hence, allows the designer to incorporate system-specific remedial action. Second, it proposes five techniques to grow the stack or heap, after it is out of memory, into previously un-utilized space such as dead variables and space freed by compressing live variables. These techniques can avoid the out-of-memory error if the space recovered is enough to complete execution.