Wednesday, May 21, 2014

Notes - Applications for Memory Locking, and a Thesis Outline about Real Time Application Design

While studying some materials with regards to applications for Common Lisp programs, in integration with Amazon Web Services (AWS), I began to read about the process of request signing for the REST API available onto select AWS applications. This morning, I've found the following resources, specifically in that topic domain:
In regards to the secret key component, specifically, I thought it was an apropos time to begin studying about memory locking.

In that course of study, I'd found documentation about the POSIX mlock() function, as implemented in GNU LibC on the Linux platform  namely, manual page mlock(2), in the Linux Prorammer's Manual

It was in reading the notes section of that manual page, when I discovered a certain item of some tangential interest, as highlighted in the following excerpt  emphasis and link added, for purpose of clarity and informativeness, respectively, as namely with regards to the matter tangential to this study with regards to signing and authentication of AWS REST API requests.
Memory locking has two main applications: real-time algorithms and high-security data processing. Real-time applications require deterministic timing, and, like scheduling, paging is one major cause of unexpected program execution delays. Real-time applications will usually also switch to a real-time scheduler with sched_setscheduler(2).

manual page mlock(2), in the Linux Prorammer's Manual
Of course, if in trying to address memory locking, if for purpose of both secure data processing and real-time application design, simultaneously, it might serve to create a sort of priority deadlock. Thus, I arrive  essentially  at the matter of why I've begun writing this notes page, this morning.

Real-time application development — such as I understand  would be a concept rather broader than, specifically, the Common Lisp programming platform.  As a software developer familiar with the Common Lisp programming platform, I may wish to specialize my own point of view about the concept, as though it was a concept of some meaning, as if exclusively with regards to Common Lisp software programming. In that sense, I might like to endeavor to "Brand" the concept, however  — speaking as a student of computer networking, somewhat familiar with some Microsoft products  — I'm afraid that my own specialized "Brand concept" would not be sufficient as to really address the nature of the broader concern, in any sufficiently technical regards.

My logical bias about the concept, thusly denoted, I would like to gather some notes, here, as with regards to design, development, and implementation or real-time applications. It's my point of view that the following observations, broadly, might "stand to reason," so far as one might logically ascertain in a sense of focus, if not of some practical, perhaps by in large personal experience with regards to computer systems and software programming.

Causes of execution delays in software programs
  • Execution Delays, in an Event-Oriented View
    • Garbage collection (GC)
    • Virtual memory paging
    • Linear network/communication delays
      • I/O blocking
        • Causes (TBD)
        • Mitigating factors
          • I/O Scheduling
          • ...
      • Network latency
        • Link-level latency
        • Packet routing
    • Schedule Wait
      • Event Networks
      • Linear dependencies onto other events
  • Execution Delays, in a Composite View
    • Total momentary delay time 
      • As in: The sum of event delay times among individual processes 
        • Aside: View of an application as a finite state machine (i.e. FSM)
      • Mechanical delay time
        • measured as a discrete time value
        • the difference of (1) expected time of completion and (2) current time
    • The "Butterfly factor"
      • Nondeterministic systems
      • Unexpected delays
      • Mitigating factors:
        • Expectations Resilience
        • Design Resilience in Systems Planning and Development
        • Advice
          • Painter, Bob Ross
          • Proverbs Literally of Patience, a selection of: 
            • "Ants aren't a strong species, yet they prepare their food in the summer"  Proverbs 30:25, International Standard Version.
            • “Simplicity, patience, compassion. / These three are your greatest treasures. / Simple in actions and thoughts, you return to the source of being. / Patient with both friends and enemies, / you accord with the way things are. / Compassionate toward yourself, / you reconcile all beings in the world.” — Lao Tzu, Tao Te Ching. excerpt.
            • Guns 'n Roses, Patience. music video
Commentary (ad hoc)

Of course, if I was to develop a singular thesis about the concept, then I should certainly like to detail each of those technical topics, further. Of course, I should have to elide the subjective/creative/interpretive matter of advice, in that.
Candidly: If at this time, I was enrolled in any sort of a formal graduate studies program, academically, then perhaps it might be more obviously relevant to the academic institution to which I am enrolled that I would begin to write a thesis paper. Failing that, however — candidly — I cannot expect to find either guidance or personal incentive, to develop any such outline into a thesis paper. That being, no doubt, a task requiring of no small sense of focus, I shall prefer to leave it at an outline, at this time.