It is said that there is a dual definition of what an operating system must do. The first one is to present a "virtual machine" to the user which isolates him/her from the bare-bones hardware and is user friendly and effective. The other one is that it has to manage in the most efficient way the (always) limited resources of the computer system. It is also stated that these two goals often conflict. Do you agree? If yes, explain why and what you would do to resolve this. If you do not agree, give an example of some mutual cooperation. Does the concept of the process play a meaningful part in either or both of these tasks?
I agree that the dual operating system goals of presenting a user interface and managing hardware resources are in conflict with one another. The concept of a process which Brookshear defines as "a dynamic activity whose properties change as time progresses" is meaningful in both these tasks and the conflict between them both. The architecture of todays widely used operating systems is inherently flawed because of cross cutting. This is where wider, non - functional concerns such as system security or fault tolerance dictate how the different modules are accessed. In their paper A Layered Approach to Building Open Aspect - Oriented Systems Netrinant, Elrad and Fayad explain "a typical operating system will need sections of code responding to each of these requirements. That code is not usually segregate into neat modules, but instead interacts and tangles with the underlying functionality". The conflict between interface provision and management of resources arises because "in real operating systems architectural properties, like locking and component interaction schemes, tend to be hard-coded into almost every component of the system" (Lohmann & Spinczyk, n.d.). From a personal point of view, the integration systems that I build as part of my job are designed in using the object - oriented software methodology; I don't belive that today's operating systems completely adopt that approach as a minimum because they still contain a design legacy from previous incarnations of the operating system.
The solution to this is to change the architecture of the operating system. In 1978 Lauer and Needham identifed two rough categories of operating system - message based and process based. They argued that both architectures were interchangeable and neither had a performance advantage over the other. However in 1982 Stroustrup performed an experiment based on this argument and found that "a degradation in response time occurred in a process-based system when the job load and the low level scheduling policy were poorly matched". Because a process - based operating system cannot localise requirements to specific concerns they are difficult to understand, maintain and expand. Contrast this to a message based system; I use Microsoft Biztalk Server to develop integration workflow; a number of orchestrations pass messages between each other and it is extremely easy to document and follow this interchange. I am sure that a similar design technique would reduce the conflict that process - based systems face. Another well - publicised approach to changing the architecture is Aspect Oriented Programming. This can be summarised as the seperation of services - such as writing data to a file - and aspects - the less tangible ideas within an operating system such as security - being kept seperate, and different policies being applied to aspects at different stages of execution. This architecture eliminates cross cutting and the conflict between the layers of the operating system.
Brookshear, J. G. (2007) Computer Science: An Overview (9th Ed.) Pearson Education Inc. Boston, MA, USA.
Netiant, P., Elrad, T. & Fayad, M. E. (2001) A layered approach to building open aspect-oriented systems [Online] ACM Inc.
Available from http://www.isis.vanderbilt.edu/sdp/Papers/Tzilla%20Elrad%20(Aspect-Oriented%20OS).doc (Accessed 1st Dec 2007)
Lohmann, D. & Spinczyk, O (n.d.) Architecture-Neutral Operating System Components [Online] Friedrich - Alexander University, Nuremberg, Germany
Available from http://www4.informatik.uni-erlangen.de/~lohmann/download/SOSP03_Lohmann.pdf (Accessed 1st Dec 2007)
Lauer, H. C. & Needham, R. M. (1978) On the duality of Operating System structures [Online]
Proc. Second International Symposium on Operating Systems, IR1A, Oct. 1978, reprinted in Operating Systems Review, 13,2 April 1979, pp. 3-19. Available from http://www.sics.se/~adam/pt/duality78.pdf (Accessed 1st Dec 2007)
Stroustrup, B. (1982) An experiment with the interchangeability of processes and monitors [Online] Bell Laboratories, NJ, USA
Available from http://www3.interscience.wiley.com/cgi-bin/abstract/113445202/ABSTRACT?CRETRY=1&SRETRY=0 (Accessed 1st Dec 2007)