Chapter 5. A Bit of Science and Philosophy

Memory Systems Language

Computer memory analysis is based on interconnected structures of symbols. We state that there exists a memory language that extends a hierarchy of modeling and implementation languages (both domain-specific and general-purpose):

Memory Systems Language

Categories for the Working Software Defect Researcher

Collective Pointer

We now introduce collective pointers or pointer cones. Suppose we have a set of pointers pointing to fields of some memory structure. This set of pointers could be another structure as well or just a collection of pointers that can be logically brought together:

Collective Pointer

If we make the boundary opaque we can name such set of pointers as Collective Pointer (or Pointer Cone):

Collective Pointer

Another example is when we split the perception field (Volume 4, page 253) of a pointer into disjoint collective pointers (the perception field as a whole is already a trivial collective pointer):

Collective Pointer

Notes on Memoidealism

We continue our notes from Volume 3 (page 303) and Volume 4 (page 246).

There is similarity between the tandem of Memoidealism / Memorianity and Notes on Memoidealism[19] school of philosophy. The former is based on hermeneutics[20] of memory snapshots and the latter is based on hermeneutics of sacred texts. People often ask is there any God in Memory Religion. The answer is both yes and no. Like in Notes on Memoidealism system the gods are names found in memory snapshots. In that sense Memorianity has some features of sacramental atheism. At the same time Memory is the creator of memories.

The philosophy of Melissus of Samos[21] has the notion of an infinite number of moments in the past.

Archaeological Foundations for Memory Analysis

We can adapt archaeological classificatory framework (using the method of inquiry called metaphorical bijectionism, Volume 4, page 241) to lay out foundations for yet another attempt to classify DA+TA patterns (Daump Analysis + Trace Analysis):

Attribute  ↔ Pattern
Artefact   ↔ Component Artefact[22]
Assemblage ↔ Component Assemblage
Culture    ↔ Memory System Culture[23]
Archaeological Foundations for Memory Analysis

We propose a word Memoarchaeological for such a framework and Memoarchaeology for a branch of Memoretics (Volume 2, page 347) that studies saved computer memory artifacts from past computations (as opposed to live memory).

On God and Miracles

Memoidealism (Volume 4, page 258) explains God as Inaccessible Memory (Memory Region A on the picture below). It means that Memory Region B doesn't have pointers that point outside of it. In other words, all operating fields (Volume 4, page 255) of Region B pointers are in Region B. However, Region A can have pointers pointing to Region B and modify it, effectively producing a miracle as perceived by Region B. In other words, some perception field (Volume 4, page 255) links of Region B pointers may come from outside. A reader can object that Region B can have deeper pointers by making their memory locations bigger (from N-bit to 2*N-bit for example) but Memory may not be flat, discrete and bit-like. For one possible Christian interpretation we can replace Region B with the heavens and the earth (Genesis 1.1) and replace Region A with God-Creator (note also that in Memorianity Memory creates memories [notes on memoidealism 1.10, page 217]).

On God and Miracles

Psychoanalysis of Software Troubleshooting and Debugging

We would like to introduce the notion of Forgotten Facts in opposition to Basic Facts (Volume 3, page 345) or Supporting Information (Volume 1, page 590). These are facts that engineers often feel uncomfortable to mention because they are troubleshooting information they couldn't obtain (if they tried) due to some time or customer pressures, failures, incorrectly understood troubleshooting procedures or some other obstacles. Therefore, it is important to have a set of counter questions or checklists mapped from common software behaviour patterns to software troubleshooting patterns. Problem descriptions should also be subjected to close reading to reveal unconsciously concealed information.

Ontological and Epistemological Memoidealism

Here we want to clarify the following branches of memoidealism (memory idealism) in addition to its common sense pragmatic panmemoric (Volume 4, page 258) version:

  • Ontological memoidealism

  • The ultimate nature of reality is based on the memory.

  • Epistemological memoidealism

  • The only things that can be directly known are memories.

Another question often asked is why memory idealism and not memory realism. I have chosen the former because memory is often closely associated with the mind. In many cases you can just replace mind with memory, for example:

... science is in reality a classification and analysis of the contents of the memory;

Karl Pearson[24], The Grammar of Science[25]

We choose the most important property of the mind and computers: memory and try to ground and explain reality and mind in terms of that ontologically elevated property.

On Unconscious

Computer software is said to be simple and predictable as any mechanism[26]. We can debug it. We can completely trace what it is doing. It seems rational to us. Let's then label it as Conscious. On the outside there is an irrational human being who did program that software. Let's then label that person's mind as Unconscious. What about hardware and body? They form parts of HCI (Human-Computer Interaction or Interface).

On Unconscious

Ruminations on Automated Debugging

Previously we told the fictitious story about the power of human mind in debugging ("Can Computers Debug?" Volume 2, page 371).

Here is another software defect that we think might require a human-computer pair to fix it. Consider the following problem description: after connecting to a remote desktop and launching an office suite application a display shows some aberrations and black lines appear and disappear frequently. If this depends on a real non-virtualized hardware then we don't see easily how to quantify screen aberrations to setup an automated debugger procedure to locate the code especially if the problem disappears on a virtual machine.

General Memory Analysis

General Memory Analysis is another name for Memoretics (Volume 2, page 347), a discipline that studies memory snapshots including their similarities and differences on different system platforms such as Windows, Linus, Mac OS X, embedded and mobile systems, historical architectures, etc. The analysis of memory helps solve problems in various domains such as software troubleshooting and debugging, computer forensic analysis, cyber warfare, etc.

General Memory Analysis

The current focus of interdisciplinary research is to build a unified memory pattern language (page 213) that covers both behavioral and structural patterns and also to study the possibility of building memory systems from below, not from requirements -> architecture -> design -> implementation -> compilation -> linking -> loading -> execution but from directly modeling and assembling memory systems using memory patterns.

Notation for Memory and Trace Analysis

Here we introduce a syntactical notation for memory (dump) and software trace analysis pattern languages (in addition to graphical notation[27] proposed earlier). It is simple and concise: allow easy grammar with plain syntax and obvious reading semantics. We propose to use capitalized letters for major pattern categories, for example, W for wait chains (Volume 3, page 387) and D for deadlocks (Volume 3, page 388). Then use subscripts (or small letters) for pattern subcategories, for example, Wcs and Dlpc. Several categories and subcategories can be combined by using slash (/), for example, Wcs/Dcs/lpc. Slash notation is better viewed using subscripts:

  • Wcs/Dcs/lpc

In the next volumes we introduce more categories and propose notational adornments for pattern succession (Volume 4, page 93), space differentiation and the inclusion of details in notational sentences.

Category Theory and Troubleshooting

Troubleshooting can be represented as a category[28] of memory states (or collections of proximate states) as objects and troubleshooting tools as arrows:

Category Theory and Troubleshooting

We can also consider tools as categories with arrows as troubleshooting actions. In the latter case we can model a collection of tools and transformations (morphisms) between them as a functor.

Software Chorography and Chorology: A Definition

In addition to software narratology (Volume 3, page 342) we would like to introduce another two branches of memoretics[29] (borrowed from "geographical" chorography[30] and chorology[31]), the science of memory snapshots:

  • Software Chorography

  • The study and visualization of small memory regions compared to the full memory dumps.

  • Software Chorology

  • The spacial equivalent of software narratology where the latter is considered in chronological terms. Studies spatial distribution and causal relations between software behavioral and structural phenomena inside particular memory regions.

To give a perspective where usual software traces and memory dumps reside in terms narrativity and non-narrativity (spatiality) we created this diagram:

Software Chorography and Chorology: A Definition

Memory dumps have some extension in the dimension of narrativity because it is possible to get stack traces (Volume 1, page 409) and other execution residue (Volume 2, page 239) from them that provide partial fragments of a software narrative.



[19] http://en.wikipedia.org/wiki/Mimamsa

[20] http://en.wikipedia.org/wiki/Hermeneutics

[21] http://en.wikipedia.org/wiki/Melissus_of_Samos

[22] Can be either a component-generated artefact or a component like a module or symbol file

[23] Typical examples of memory system cultures are Windows, UNIX or even "Multiplatform"

[24] http://en.wikipedia.org/wiki/Karl_Pearson

[25] http://en.wikipedia.org/wiki/The_Grammar_of_Science

[26] Is there any life inside Windows? http://www.dumpanalysis.org/blog/index.php/2007/09/13/is-there-any-life-inside-windows/

[27] http://www.dumpanalysis.org/blog/index.php/2009/05/23/graphical-notationfor-memory-dumps-part-1/

[28] http://en.wikipedia.org/wiki/Category_theory

[29] Volume 2, page 347

[30] http://en.wikipedia.org/wiki/Chorography

[31] http://en.wikipedia.org/wiki/Chorology

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.218.11.211