
|
Avoiding the Failure to Communicate
(Bryon Moyer)
Bill left via the front yard, striding purposefully down the street, while the other two scurried out the back door to the alley. John went left, Nathan went right; he was holding what little jewelry they had managed to grab. Bill had no idea whether the others had gotten anything; he hoped that they would have something to show for their efforts, despite being interrupted early. He rounded the corner just as two squad cars screamed past. One stopped in front of the house, the other headed into the alley – right towards John. Nathan had almost reached the other end of the alley, but he freaked out, dumped the jewelry, and started to run. The cop grabbed John and radioed his partner about Nathan; Nathan ended up in the other car. John didn’t know that Nathan had dropped the jewelry, and Bill didn’t even know that John and Nathan had been caught until the cops came to get him at home. During all the questioning, they never saw each other. And none of them knew what the others knew, or what the others were saying. What had started as a team operation had disintegrated into three sorry-looking dudes with no idea what to do next.
As application programs grow beyond the scope of a single processor, they can be split into separate processes running on the same or different processors. Once this happens, the processes need some way to talk to each other so they can keep their stories straight. This goes by the pretty self-explanatory name of inter-process communication, or IPC. Sounds simple enough, but, in practice, it depends on the level of what is referred to as – assuming the FCC doesn’t shut us down for saying so – system coupling, either tight or loose.
Such a characterization is actually over-simplistic. Processes may co-exist in a single CPU. They may be moved from one CPU to another by the OS. If the processes fall outside the same CPU, then messages have to get from one CPU to the other. Within a single chip, multiple processor cores can talk to each other using channels built into the chip architecture. On a board, multiple chips can talk to each other by busses or point-to-point serial connections. Boards within a chassis can communicate via the backplane. Once you leave the realm of the box, now you have to connect machines by wires, and the local network can do that. Once you leave the building, you may have entered “the cloud”. No one really knows what happens in that cloud… maybe best not to know. It’s probably like watching sausage being made. Anyway, somewhere, as we moved from intra-processor connections to the cloud, we made a transition from tightly-coupled to loosely-coupled systems. [more]
|