Grain

A term for the minimal or typical size of objects a system can handle. The larger this size, the coarser the grain; the smaller this size, the finer the grain.

The coarser the grain, the more expensive it is to create, handle, maintain, dispatch, objects. Thus, computing liberalism tells us that to have a system that adapts better, you must reduce the grain as much as possible.

However, handling objects may involve overhead in administration. Thus, to achieve a better system, you must also reduce the administratrivia together with the grain, wherever possible.

Traditional Operating Systems have a very high grain (the basic object size being a file, and the typical packaging grain being the huge "application"), thus yielding poor performance and adaptability. The insecure C forbids a smaller grain. As long as OSes will use such a language, the computer industry is bound to poor results.

Actually, traditional system design bears the stigmata of a long past time when computer resources were much more expensive than human programming resources, so that people would relieve as much as possible the computer from bookkeeping tasks, so as to focus use of computer space and time resources on actual computations. Hence, programs had to be hand-optimized in space and time, so as to fit the available resources; the resources allocated to meta-data and meta-programs were minimal, so that an automatic higher-order module system for fine-grained objects was unconceivable, or considered far too costly. People then designed programming paradigms centered around coarse-grained programs, and even as hardware evolved, made it follow that model.

Today, the price of computer resources has dropped drastically, and the balance is largely overweight in the other way: qualified human resources cost much more than the computer cycles and bits needed for bookkeeping of an evergrowing base of data. Still, conservatism is such that computer system design is always mostly centered around the old paradigms of human management of resources and consistency among coarse-grained objects.

A great brake to changing the model, is that proprietary software vendors benefit from a coarse-grainedness of objects. It allows them to sell a bigger product, while preventing people to replace part of their software with better parts, or buy (and claim to pay) only the small part or upgrade they need that previously-sold software did not support or did not support well. They thus can make hostages out of customers, as these are subject to them for any improvement in purchased software.


This page is linked from: Computer Industry   Computing Liberalism   Ellie   Metatext   Microkernel   Microkernel Debate   Plan9   Process   Semantics   Synthetix   Thread