Hardware vs software: The two faces of computers

Historically, the interaction between operating systems and computer architecture has largely been very one-directional. Only recently have engineers begun to more fully appreciate that traditional hardware cost-performance tradeoffs are not entirely appropriate for stored-program machines. The operating system may be the most complex program ever written for the machine, as well as the one most frequently run. Yet, with a few notable exceptions, computer hardware is still not being designed with sufficient regard for the special requirements of supervisory software. Systems programmers are usually faced with creating operating systems which will survive and flourish in architectural environments ranging from passive to inhospitable. As with Samuel Johnson's upright dog, the surprise is not that it's done well, but that it's done at all.