Wednesday, September 5, 2007
There are only a few ways to describe and/or predict the behavior of computer systems and networks. One can attempt to produce an internal model. An assumption about internal models is that they describe as precisely and completely as possible the internal state machine that governs behavior. All computer system state machines are finite, although they may be impractically large and/or complex for human understanding. Besides their size and complexity, which tend to hide dependencies, if we look at them as implementing hidden Markov processes, it is nearly impossible to determine the probabilities of all but a small subset of potential state transitions. To see why these state machines are so complex, consider the typical *NIX based operating system. Encoded in the kernel is the equivalent of thousands, if not millions of conditional statements. Think of how many states are represented by various combinations of true and false conditionals. It's just a bit staggering! Now assume that you have a good handle on even the types of states available: if you know what state the machine is in, you should be able to determine with reasonable confidence, the class of states to which the system will transition next. If it doesn't do this, then there are two possibilities: either your model is incorrect or not accurate enough; or your system is broken.