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):
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:
If we make the boundary opaque we can name such set of pointers as Collective Pointer (or Pointer Cone):
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):
We continue our notes from Volume 3 (page 303) and Volume 4 (page 246).
There is similarity between the tandem of Memoidealism / Memorianity and [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 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.
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]
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).
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]).
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.
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.
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).
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 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.
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.
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.
Troubleshooting can be represented as a category[28] of memory states (or collections of proximate states) as objects and troubleshooting tools as arrows:
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.
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:
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
18.218.11.211