From: Joseph M. Newcomer on

On Mon, 29 Mar 2010 22:33:57 -0500, "Peter Olcott" <NoSpam(a)> wrote:

>"Joseph M. Newcomer" <newcomer(a)> wrote in
>message news:uk12r5die24557r1evjkvrqovj58qjvc9e(a)
>> See below...
>> On Sun, 28 Mar 2010 23:03:42 -0500, "Peter Olcott"
>> <NoSpam(a)> wrote:
>>>>But you can run
>>>> with virtual memory WITHOUT paging being a part of it,
>>>How is that not like running an automobile's engine
>>>any form of fuel?
>> ****
>> Because you are being dense and stupid. For example, a
>> better analogy would be running an
>Calling me stupid (an opinion)
Actually, it is a demonstrated fact, as anyone who has been following this thread can
attest. We keep telling you "X" and you keep saying "not X", not because you have any
evidence of not-X, but simply because you believe non-X MUST be true (apparently based on
once having read half of an introductory textbook, 25 years ago), and all attempts to
educate you seem to have no effect; your insistence that "virtual memory" == "paging
activity" in spite of massive efforts to tell you that you are completely wrong proves you
are uneducable. This is easily shortened to "stupid". I got tired of trying to be
polite, since all my efforts to educate you failed and you kept insisting "not-X" when we
kept telling you "X" (and "go read this article by Mark Russinovich" and "go read the
MSDN" and "go read the Intel manuals", and you kept insisting "I don't need no stinkin'
details, I know what I know, and by gum, that's good enough for me!") You kept insisting
that you wanted to boil things down "to their essence" and when you had boiled them down
to a thick sludge, you stopped and said "this, I believe, is the essence" and when
everyone else said "No, you have nothing but a thick sludge, and you don't have the
essence, the essence is THIS" you ignored them. What adjective would YOU apply to someone
who so pig-headedly refused to learn from all our answers? I decided that it was time to
stop being polite and hit you over the head with what you were showing. If you can
demonstrate that you are not stupid, we would all be very pleased, but thus far you have
been very consistent in demonstrating a lack of knowledge, and you have explicitly stated
that you have no desire to learn (something about all those details just getting in the
way of the essence, or something like that...I forget the actual reasonably incoherent
rantings about why you didn't think it was inappropriate to spend any effort to learn
more, so you didn't sound like a complete fool) I have a label for this kind of person,
and I used it. If you think the label is inappropriate, demonstrate some behavior that
convinces us otherwise.
> demonstrate a lack of
>professionalism (a fact).
A refusal to learn the proper vocabulary, based on a view that it is not necessary to use
the technical language correctly, also demonstrates a lack of professionalism (a fact).

When you stop talking about the need to allocate contiguous physical memory, recognize
virtual memory for what it really is, and stop explaining, erroneously, that memory-mapped
files induce more paging than other forms of data representation, then I'll start to
recognize you are a professional. Because after we have carefully explained that you are
incorrect in all of these ideas, you continued to insist they HAD to be correct, because
you THOUGHT they had to be correct! When you acknowledge that meaningful performance
tests must be conducted, and stop extrapolating from a single experiement, I will
recognize that you are showing comprehension. But explaining "I don't need no stinkin'
valid experiment, I have my experiiment and I INFER, without evidence, that it tells me
everything I will ever need to know" flies in the face of common sense. Right now, you
are failing to demonstrate that you have a clue as to what is going on, and you are
ignoring the facts, advice by experts, etc. in your ill-conceived attempts to tell us what
the truth REALLY is, which we recognize to be mere fantasies you are spinning.
Professionals don't make statements that contradict reality when they are told what
reality is. What would you use to label a person who consistently refused to accept
advice, even simple advice such as how to use technical terms accurately? As long as you
continue to have erroneous interpretations of the technical vocabulary, you will bias your
decisions based on those errors, and consequently never arrive at correct answers. You
yourself said it: start with a set of axioms and derive proofs. You keep mis-stating the
axioms, so conclusions you arrive at are going to be flawed. If your conclusions are
consistent with what we have told you, you have not convinced us, because you keep
re-stating, incorrectly, the "axioms" of your system, which leave us with the impression
you are reasoning from flawed permises.

Your definitiions of "realtime" contradict accepted definitions, your definition of
"virtual memory" is pure fantasy, and you expect us to think you are reasoning properly
about these issues? Get real!

I know it is useless to give you articles to read, but just to point out, the wikipedia
definition of realtime corresponds to the one I gave you:

from :
In computer science, real-time computing (RTC), or "reactive computing", is the study of
hardware and software systems that are subject to a "real-time constraint"--i.e.,
operational deadlines from event to system response.

It further goes on to explain that your system is NOT a real-time system:

By contrast, a non-real-time system is one for which there is no deadline, even if fast
response or high performance is desired or preferred.

and reinforces this somewhat later (under the heading "Real time and High Performance"
Furthermore, if a network server is highly loaded with network traffic, its response time
may be slower but will (in most cases) still succeed. Hence, such a network server would
not be considered a real-time system: temporal failures (delays, time-outs, etc.) are
typically small and compartmentalized (limited in effect) but are not catastrophic
So stop with the meaningless noises and start using the language correctly, or people will
come up with other labels to describe you, They will be less polite.
>> automobile engine without transferring the power to the
>> wheels. Running the engine is a
>> valid act; whether or not that power is transferred to
>> something that generates motion is
>> a second-order effect.
>OK granted you analogy is better than mine. Yet even your
>analogy still makes my point. The essential purpose of an
>automobile is to drive around. Running the engine in neutral
>is not meeting the essential purpose of an automobile.
>Likewise for virtual memory. Virtual memory without page
>faults is like running and engine in neutral not meeting the
>essential purpose.
No, you are talking now about the essential purpose of an automobile, not the essential
purpose of an engine. I might be adjusting the carbuerator, or the timing. Suppose I'm
doing what is called "static testing"? That's a valid action, and the engine has to work
to do static testing; perhaps I'm calibrating the speedometer. The wheels move, and a
highly-accurate set of transducers tells me what the actual MPH is, and I can adjust the
speedometer so it reads correctly. It is clear that you are clueless, becuase you think
the ONLY valid use of an automobile engine running is to move the car.

Running virtual memory without page faults is what you want, and which many systems using
CP Embedded DO, and you cannot argue that virtual memory's sole puprose is to have paging
faults. This is what I mean when I say you are "stupid". You have come up with some
silly idea that the purprose of virtual memory is to take page faults (erroneous) and that
failure to take page faults invalidates the idea of virtual memory (erroneous), and any
attempt to explain to you that page faults are just an add-on to the basic concept falls
on deliberately deaf ears. "I don't care that the definition isn't what I think it is!"
is just STUPID, and I finally had to say so. The consequence of your flawed definition is
a long chain of flawed reasoning leading to a flawed conclusion. So can I ask, if you
want to defend yourself against the label I applied, why you then make a statement that
removes all doubt that I was correct?
>Is the car driving around with the engine in neutral, No.
>The practical effect of running a car with its engine in
>neutral is the same practical effect as if the car is turned
>off when measured against the essential purpose of a car,
>driving around.
OK, genius, tell me how to adjust the timing on a turned-off engine. Or adjust the
carbuerator. Or measure the effectiveness of the fuel injection. And exactly how you
propose these should be done, if the engine is on, with the car in motion down the
"It is better to keep your mouth shut, and be thought a fool, than to open it and remove
all doubt"
--Mark Twain
>Is the Virtual Memory meeting its essential purpose with
>zero page faults, No. Is the practical effect of VM without
>pages faults essentially the same as if VM was turned off in
>terms of it fulfilling its essential purpose, yes.
Sorry, it is meeting its essential purpose. You just don't understand the essential
purpose of virtual memory. Instead, you invent your own definition, and when reality
doesn't meet your fantasy definition, you insist that something else is happening.

Your insistence that virtual memory can be turned off in spite of the fact we have tried
to educate you that you are wrong proves beyond any doubt that my label is based not on
opinion but demonstrated fact!
>So for short hand notation a car turned off or a car with
>its engine in neutral could be considered essentially the
>same in terms of the car fulfilling its essential purpose,
>driving around.
The essential purpose of a CAR is to drive around. The essential purpose of an ENGINE is
to consume gasoline and convert the energy of the gasoline to rotational energy. The
engine is an IMPLEMENTATION STRATEGY by which an automobile achieves its purpose. The
essential purpose of a multiprocess operating system is to run multiple processes. To do
this, certain decisions were made. One decision was that each process will run in a
private address space. Virtual memory is an implementation mechanism that makes that
possible. Some people decided that they would like to oversubscribe physical memory. The
paging mechanism, built on top of virtual memory, provides that capability. If you EVER
claim something different from the fact that virtual memory is anything more than a
mapping scheme that maps virtual addresses to physical addresses, you are WRONG, and
demonstrate that my label is appropriate.

Does a Prius running on battery consume "no fuel"? Be careful with your analogies!

Note that some operating systems in the past and present do not require separate address
spaces. The JVM is capable of running multiple processes without separate address spaces,
as was the CEDAR system from Xerox PARC (ca. 1980) which was programmed in a language
called MESA (which was quite similar in philosophy to Java; it is not surprising that one
of the architects of MESA, Jim Mitchell, was the person who gave Jim Gosling the go-ahead
to form the Java project at Sun (Jim was VP Research there at the time)). The point was
that the nature of these languages meant that even running in a single, flat physical
address space, it was not possible to cause damage or compromise security because the
language had no way to break out from the protected environment of references that it
used, just like Java. So virtual memory is not required to build a multiprocess
environment. But it IS required in WIndows, and your denial is about as credible as the
Holocaust Deniers. Your claim that you can "turn it off" is a demonstrable falsehood, and
any insistence that you can is further evidence that my label is valid. Because we have
already told you that this whole viewpoint is completely nonsensical, complete with
citations. Go read the Russinovich article Hector pointed you at.
>> ****
>>>Please try to be very concise.
>> ****
>> Concise: you are stupid. Slightly longer: virtual memory
>> is a system that maps virtual
>You ramble far too much around the point without ever
>actually getting to the point. I could make up all kinds of
>childish insults to address this, but, that would be both
>unprofessional and inaccurate.
What is rambling about

"Virtual memory is a system that maps virtual addresses to physical addresses"

THis says EXACTLY what is going on! I do not know how to say it more concisely, since
that is the absolute, complete, and ONLY definition of virtual memory! READ IT! Nowhere
in that statement is a hint about "paging". This is because paging is not an essential
part of virtual memory. It is, as I explained, an optional add-on.
>> addresses to physical addresses (which I have said several
>> times, and I know of no reason
>> you would ignore this other than being stupid). Even
>> longer: one of the possible mappings
>> is etended to include the value "not in memory". which
>> induces paging.
This is where I have introduced the concept of page faults. Note that this is an
EXTENSION of the mapping to include the value "invalid mapping" as a result, and the
consequence of hitting an "invalid mapping" value is to cause the processor to take an
access fault interrupt; the operating system examines the reason for the failure,
determines that the page exists but not in memory at this instant, and initiates a
transfer to bring the page into memory. It then repairs the mapping to map to a valid
physical address, and restarts the instruction that failed.

Is this terribly hard to understand? READ THE WORDS! Then tell me why I am wrong. And
if you ONCE appeal to your flawed definition of virtual memory, then my label was correct!
>>But if there are
>> no page faults, virtual memory is still running (which
>> Hector and I both told you, and
>> which Hector pointed you at a Mark Russinovich article, in
>> which he explicitly stated that
>> virtual memory is ALWAYS running). Realy concise:
>> CR0<0>==1.
It is impossible to get more concise than this last definition. I even gave you the
citation to the Intel manual. This took 9 characters. Show me where I am "rambling". And
tell me why I am wrong (if you try, you will demonstrate that my label was correct,
because the Russinovich article will contradict anything you can say)
Joseph M. Newcomer [MVP]
email: newcomer(a)
MVP Tips:
From: Joseph M. Newcomer on
See below...
On Mon, 29 Mar 2010 22:17:50 -0500, "Peter Olcott" <NoSpam(a)> wrote:

>"Joseph M. Newcomer" <newcomer(a)> wrote in
>message news:ggv1r5hago17nu9tenqqte2o03870625nq(a)
>> See below...
>> On Sun, 28 Mar 2010 23:26:46 -0500, "Peter Olcott"
>> <NoSpam(a)> wrote:
>>>Head games again.
>>>Given as in Geometry.
>> ****
>> Axioms of Plane Geometry (which I presume which is what
>> you mean when you use the
>> unqualified term "Geometry" as it there is only ONE!):
>> Parallel lines never meet.
>> Non-parallel lines will eventualy interesect
>I am just trying to define a single word so that you can
>understand what this one word means, and you go on and on
>and on about everything besides this point. The premise is
>immutable as a "given" premise is in Euclidean Geometry.
"Zero page faults" is not an immutable premise; it is a desired goal.

You clearly cannot tell a goal from an axiom.
Joseph M. Newcomer [MVP]
email: newcomer(a)
MVP Tips:
From: Joseph M. Newcomer on
See below....
On Mon, 29 Mar 2010 22:06:39 -0500, "Peter Olcott" <NoSpam(a)> wrote:

>I am primarily an abstract thinker, I almost exclusively
>think in terms of abstractions. This has proven to be both
>the most efficient and most effective way to process complex
>subjects mentally. I scored extremely high on an IQ test in
>this specific mode of thinking, something like at least
>1/1000. My overall IQ is only as high as the average MD
>(much lower than 1/1000). I would not be surprised if your
>overall IQ is higher than mine, actually I would expect it.
>Your mode of thinking and my mode of thinking seem to be at
>opposite end of the spectrum of abstract versus concrete
What you are praising as "abstract thinking" is what I have been calling "fantasy". What
you accuse me of, "concrete thinking", we tend to call "reality". I can work at the
abstract level, but when push comes to shove, you've got to make REAL code run on REAL
systems, you had better have a solid grasp of the details. We have attempted to tell you
when your fantasies fail to correspond to reality, yet you persiste in your fantasies
(e.g., virtual memory == paging activity, or worse still, paging is the ONLY "essential"
component of virtual memory) which we know to be completely wrong, and your failure to
comprehend reality is actively interfering with your ability to create a deliverable
product with the performance you desire, or understand our answers when they don't meet
your fantasy images. And that you have the gall to ARGUE with us, explaining how your
fantasy must necessarily dictate how reality is.

I use abstract thinking to create solutions, and concrete thinking to implement them and
make them work well.
Joseph M. Newcomer [MVP]
email: newcomer(a)
MVP Tips:
From: Joseph M. Newcomer on
See below...
On Mon, 29 Mar 2010 21:58:18 -0500, "Peter Olcott" <NoSpam(a)> wrote:

>Basically faster access because less overhead or the same
>access because of the same overhead. Yeah so basically you
>are saying that you are not sure and I should test it. Of
>course I will when the time comes. If the time ever comes
>where I really need to upgrade to more than a single core
>server, at my dime a transaction prices I could hire a team
>to solve this problem for me.
Something about counting chickens comes to mind here...

>> ****
>> And higher potential interference. You don't really know.
>I would think that the issue would be cache or bus
>contention, and I see no specific differences in the way
>that threads access memory and the way that processes access
>memory that could account for difference between these two
>types of contention.
The fact that you don't see it doesn't prove anything. You refuse to understand how
virtual memory works, so I would not trust any serious decision to what you "don't see".

The difference here is tha I'm willing to admit my ignorance of complex behavior, and
experiment to obtain performance data critical to my decision process. You are designing
entirely by sitting and "thinking" about it, without ANY data to validate your guesswork
(and everyone believed heavier things fell faster than lighter things until Galieo got the
data to prove them wrong. Data counts more than theory)
>> ****
>>>(2) Threads can be scheduled on multiple processor cores,
>>>just like processes.
>> ****
>> See previous comment about memory interferene patterns.
>> The point is, I DON'T KNOW, but I
>> don't believe in extrapolating from unrelated experiments.
>> ****
>It sure is close enough for now, and of course I would test
>before rolling out another production server.
How can it be "close enough" when the test isn't even RELATED to the problem of mutliple
threads in a single process?
>>>> You are going to have to come up with a better proposal
>>>> than one that uses the words "some
>>>> sort" in it.
>>>> joe
>>>All that I was saying is that my mind is still open to
>>>alternatives than the ones that I originally suggested.
>> ****
>> It sounded to me like you have not been open to ANY
>> alternatives we have suggested, and
>> you don't write specifications using phrases like "some
>> sort" in them. You write VERY
>> specific requirements, and from those requirements,
>> generate VERY specific implementation
>That is not the way that good architecture is developed.
>Back in the early days of structured systems analysis they
>called this getting prematurely physical. If you get too
>specific too early you lose most any chance of a nearly
>optimal design., you have committed the garden path error.
Perhaps you should read Dave Parnas or Nancy Levine on how to specify systems for software
safety! Or Doug Clarke on modeling.
>> strategies. Then, those strategies are reviewed and might
>> be rejected or accepted, based
>> on both technical feasibility and whether or not they
>> satisfy the requirements. And you
>> have demonstrated that technical feasibility is not one of
>> your strongest points.
>Some of these things are brand new to me, and this is the
>very first time that I have even thought about them.
>Categorically exhaustive reasoning can derive a near optimal
>solution to most any problem, but, this takes time. Keeping
>the focus on categories of ideas instead of detailed
>specifics is a much more efficient way to interpolate upon
>the near optimal solution. These categories a gradually made
>increasingly more specific.
I have no idea what categorical exhaustive reasoning can derive when the most basic
premises you are using are flawed. Evidence is that you start reasoning from flawed
premises time and time again, come up with technologically infeasible solutions that make
no sense ("contiguous physical memory"), and claim you have "solved" the problem. If your
past performance is any example of how the reasoning works, then I fail to see how future
application of this technique is going to produce meaningful results.

If you don't understand reality, you come up with solutions like "You can successfully
jump off a tall structure and land on the ground without dying, and all you have to do is
learn to fly on the way down". Most people would say "and are wearing a parachute, or are
on a hang glider" but that seems to be one of those nasty "concrete" ideas.

>> First, though, you need a very precise requirement, one
>> which incorporates everything that
>> is essential and eliminates anything that is now "moot".
>> So we have something to work
>> with that is actually self-consistent, and not morphing on
>> every restatement. Then a
>> detailed implementation specification which tells exactly
>> how you plan to meet that
>> requirement.
>> joe
>> ****
>See what I just said about categorically exhaustive
>reasoning. This same reasoning through you me and Hector
>narrowed down the focus to using the HTTP protocol as the
>best choice for turning my OCR engine into a web
>application. I don't think that a better category could have
>possibly been chosen. Categorically exhaustive reasoning
>pairs down the decision tree most efficiently.
No, you had some weird idea and fought the idea of HTTP and TCP/IP because of the
turnaround time of the protocols. I remember that set of discussions, and it involved
statements about why TCP/IP wouldn't work (once I pointed out that even a simple datagram
protocol had poor performance, and you instantly extrapolated from an IP datagram, 'ping',
performance to TCP/IP performanace without understanding the difference!)
>>>> Joseph M. Newcomer [MVP]
>>>> email: newcomer(a)
>>>> Web:
>>>> MVP Tips:
>> Joseph M. Newcomer [MVP]
>> email: newcomer(a)
>> Web:
>> MVP Tips:
Joseph M. Newcomer [MVP]
email: newcomer(a)
MVP Tips:
From: Joseph M. Newcomer on
See below....
On Mon, 29 Mar 2010 21:39:00 -0500, "Peter Olcott" <NoSpam(a)> wrote:

>"Joseph M. Newcomer" <newcomer(a)> wrote in
>message news:gbs1r5tr89f31ut0jvnovu8nvu2i7qpaph(a)
>> See below...
>> On Mon, 29 Mar 2010 10:58:56 -0500, "Peter Olcott"
>> <NoSpam(a)> wrote:
>>>> Why do you suddenly add "fault tolerance", then add
>>>> "fast
>>>> interprocess communication that
>>>> is also fault tolerant"? I think you are totally and
>>>> utterly clueless here. You do not
>>>> understand ANY of the concepts involved.
>>>> If you have fault tolerance, why does it have to be in
>>>> the
>>>> IPC mechanism? In fact, it
>>>> would probably be a Really Bad Idea to try that.
>>>Although it may be temporary ignorance on my part that
>>>suggested such a thing, I was thinking that it might be
>>>simpler to do it this way because every client request
>>>be associated with a financial transaction. Each financial
>>>transaction depends upon its corresponding client request
>>>and each client request depends upon its corresponding
>>>financial transaction. With such mutual dependency it only
>>>seemed natural for the underlying representation to be
>> ****
>> There are several possible approaches here, with different
>> tradeoffs.
>> (a) get PayPal acknowledgement before starting the
>> transaction
>> (b) Because the amount is so small, extend credit, and do
>> the PayPal processing "offline"
>> out of the main processsing thread; in fact, don't even
>> request the PayPal debiting until
>> the transaction has completed, and if it is refused, put
>> the PayPal processing FIRST for
>> their next request (thus penalizing those who have had a
>> refused transaction); you might
>> lost a dime here and there, but you have high performance
>> for other than those who aren't
>> cleared.
>> (c) if the transaction fails, and you have already debited
>> the account, have a background
>> process credit the account for the failed transaction.
>None of the above, although most like (b) They pay me in
>advance in at least $1 increments and this amount is placed
>in their local server account file. The real time
>transaction goes against this local file.
And the access cost to this local file is zero? Or is the new requirement for performance
going to take this into account?

And you know PayPal is going to handle this correctly? You've checked with them?
>> You are confusing IPC with robustness mechanism. IPC is a
>> pure and simply a transport
>> mechanism; anything about robustness has to be implemented
>> external to the IPC.
>> joe
>>>> I guess I'm biased again, having built
>>>> several fault-tolerant systems.
>>>> joe
>>>> ****
>>>> Joseph M. Newcomer [MVP]
>>>> email: newcomer(a)
>>>> Web:
>>>> MVP Tips:
>> Joseph M. Newcomer [MVP]
>> email: newcomer(a)
>> Web:
>> MVP Tips:
Joseph M. Newcomer [MVP]
email: newcomer(a)
MVP Tips: