On the definition of a theoretical concept of an operating system
aa r X i v : . [ c s . O S ] J un On the Definition of a Theoretical Concept of anOperating System
J.A. Bergstra and C.A. Middelburg
Informatics Institute, Faculty of Science, University of Amsterdam,Science Park 107, 1098 XG Amsterdam, the Netherlands
[email protected],[email protected]
Abstract.
We dwell on how a definition of a theoretical concept of anoperating system, suitable to be incorporated in a mathematical theoryof operating systems, could look like. This is considered a valuable prepa-ration for the development of a mathematical theory of operating sys-tems.
Presently, operating systems are a hot topic in the sector of information andcommunication technologies. General-purpose operating systems that have beendeveloped for desktop computers or laptop computers are not suitable for mobiledevices, such as smartphones, personal digital assistants, personal navigationdevices and e-book readers, due to the special needs of these devices, such asregulation of power consumption to prolong battery life and real-time responsesfor time-critical applications. Therefore, the increasing importance of mobiledevices has triggered the development of many mobile operating systems. Thereis really a very strong competition going on among various major companiesfrom the sector of information and communication technologies in a bid for themost successful mobile operating system (cf. [12]).We expect that a theoretical understanding of the concept of an operat-ing system will become increasingly important to the development of successfuloperating systems. However, it happens that in computer science since the in-troduction of the first operating systems more than fifty years ago no seriousattention has been paid to the clarification of what is an operating system. Al-most any explanation of the concept fails to capture the concept of an operatingsystem satisfactorily. The existing theoretical understanding related to operat-ing systems concerns details of the functioning of operating systems, such asscheduling the programs in execution and allocating resources to the programsin execution, and shows little coherence.We became fully aware of the state of affairs outlined above only after anextensive search for publications on operating systems recently carried out byone of us, which is reported on in [14]. This state of affairs forms our motivationto have a closer look at the concept of an operating system. In this note, we dwellon how a definition of a theoretical concept of an operating system, suitable toe incorporated in a mathematical theory of operating systems, could look like.This is considered a valuable preparation for the development of a mathematicaltheory of operating systems. We also make an effort to explain the circumstanceswhich justify the interest in defining a theoretical concept of an operating system.First, we sketch how the concept of an operating system is dealt with inpublications on operating systems and give an explanation of the concept dis-tilled from statements about operating systems found in publications. Next, wemake some remarks about theoretical concepts that have come into being asformalized versions of pragmatic concepts and present some highlights of an ele-mentary meta-theory about definitions of theoretical concepts. After that, we usethe foregoing to outline how a definition of a theoretical concept of an operatingsystem could look like.
Recently, we have searched for publications in which one can find reasons forintroducing operating systems, statements that explain the concept of an oper-ating system, a definition of a formalized version of the pragmatic concept of anoperating system or a theory of operating systems based on such a definition. Itturned out that the number of such publications is very small. On the outcomeof the search in question is extensively reported in [14]. Below, we give a briefsummary of the outcome of this search.It is often stated that Strachey’s article on multiprogramming operating sys-tems from 1959 [16] is the first important article on operating systems. It isquite surprising that the article of Codd and others on multiprogramming op-erating systems from 1959 [6] is never mentioned as the first important articleon operating systems. In the latter paper, motivation for, requirements for, andfunctions of a multiprogramming operating system are given. This can be takenfor a preparation to the formulation of the scheduling problem in multiprogram-ming operating systems in [4] and the description of a scheduling algorithm fora multiprogramming operating system in [5]. Probably the article of Codd andothers is as significant as the article of Strachey.Apart from the attempt of Codd and others in the above-mentioned article,few serious attempts have been made to explain the concept of an operatingsystem; and apart from the reasons given by Codd and others in the same paper,reasons for introducing operating systems are seldom given. Dennis and VanHorn make a serious attempt to explain the concept of an operating system in [10]and Denning makes another serious attempt in [9], but most other attemptscannot be called serious. Examples of non-serious attempts are one-liners like“an operating system is an extended machine and a resource manager” andenumerations of the usual terms for the basic constituents of an operating system.Cloot gives good reasons for introducing operating systems in [3], an articlewhose sole aim is to explain why the need for operating systems has arisen, but Strachey’s article can only be obtained by ordering a hard copy at the NationalArchive of the United Kingdom. However, that model is still not strong in capturing the pragmatic concept of anoperating system. Apart from this, publications in which abstract models of anoperating system are given that could be used as a starting point for the defi-nition of a formalized version of the pragmatic concept of an operating systemare virtually absent. Publications on theory about operating systems themselvesare totally absent. In publications on operating systems that are of a theoreticalnature, one finds only theory about details of the functioning of operating sys-tems, such as scheduling the programs in execution and allocating resources tothe programs in execution.From the outcome of the search, we conclude that the operating systemscommunity pays little attention to clarifying adequately what is an operatingsystem. It happens that most publications on operating systems mainly concernthe following: – principles of operating system design; – theory and techniques related to details of the functioning of operating sys-tems such as scheduling and resource allocation; – issues concerning operating systems for multi-processor computers and op-erating systems for networks of distributed computers; – operating system support for security, privacy, fault-tolerance, multi-mediaapplications, et cetera; – designs of, analyses of, and experiences with specific operating systems.It is striking that most of these publications give little insight in the concept ofan operating system. Virtually all exceptions are articles published before 1970.Our findings of the search agree with the findings of the study of courses andtextbooks presented in [8]. During the search for publications on operating system, many statements aboutoperating systems were found from which we could distill the explanation of theconcept of an operating system given below.An operating system is a system that provides a convenient execution envi-ronment for programs that allows for multiple programs with shared resourcesto be executed concurrently. An operating system is responsible for:1. loading programs and starting their execution;2. scheduling the programs in execution; The article of Yates and others actually gives two models. The abstract model is themodel that is called the user level model in the article.
3. allocating resources to the programs in execution;4. preventing interference between the programs in execution;5. controlling the use of main memory by the programs in execution;6. storing and retrieving data organized into files and directories on secondarystorage devices;7. receiving data from input devices and sending data to output devices;8. communicating data over computer networks;9. controlling peripheral devices.It is customary to distinguish the following basic constituents in an operatingsystem: – process management, responsible for 1, 2, 3 and 4; – memory management, responsible for 5; – file management, responsible for 6; – input/output management, responsible for 7; – network management, responsible for 8; – device management, responsible for 9.Process management and a part of memory management are needed to pro-vide an execution environment for programs that allows for multiple programswith shared resources to be executed concurrently. Device management, net-work management, input/output management, file management, and a part ofmemory management are needed to provide a convenient execution environment,because they hide interrupts, networking protocols, device-dependent input, out-put and storage, physical memory size, et cetera.Operating systems can be classified as: – single-user or multi-user; – non-interactive or interactive; – single-tasking, non-preemptive multi-tasking or preemptive multi-tasking.Actually, the explanation given above is an explanation of the concept of anmulti-tasking operating system. Single-tasking operating systems are bordercases of operating systems: the maximal number of programs that can be ex-ecuted concurrently is only one. Clearly, a multi-tasking operating system isa more general concept than a single-tasking operating system. Batch operat-ing systems, of which the first became probably operational in 1956 (see [15]),are multi-user, non-interactive, single-tasking operating systems. Multiprogram-ming operating systems, of which the first was probably developed over theperiod 1957–1961 (see [13]), are multi-user, non-interactive, (non-preemptive orpreemptive) multi-tasking operating systems. Time-sharing operating systems,of which the first was probably developed over the period 1961–1963 (see [7]),are multi-user, interactive, preemptive multi-tasking operating systems.The explanation given above has been obtained by extracting the essence ofmany statements found in publications on operating systems. By no means, weconsider it an explanation that captures the concept of an operating system sat-isfactorily. However, at least it provides a reasonable picture of how is generallythought about operating systems in the operating systems community.4 On the Definition of Computer Science Concepts
In order to make the answer on the question “what is an operating system?”precise, we need an elementary meta-theory about answers on questions of theform “what is . . . ?”, i.e. an elementary meta-theory about definitions. Becausewe are interested in definitions that can be incorporated in mathematical the-ories, the scope can be restricted to definitions of theoretical concepts. Belowwe present some highlights of an elementary meta-theory about definitions oftheoretical concepts. Preceding that, we make some remarks about theoreticalconcepts that have come into being as formalized versions of pragmatic concepts.Any formalized version of a pragmatic computer science concept, such as theconcept of an operating system, differs from the informal one: it is theoreticalinstead of pragmatic. The difference is unavoidable because the formalized ver-sion is a mathematical representation of the informal version. It means that theinstances of a pragmatic computer science concept recognized as such in practiceare not the same as the instances of its formalized version considered in a theorybased on the formalized version. Moreover, it is natural that the definition of aformalized version of a pragmatic computer science concept brings about thatnot all instances of the pragmatic concept are covered. All this is certainly notspecific to pragmatic computer science concepts. Similar remarks can be madewith respect to many other concepts. For example, the formalized version of theconcept of a tree from graph theory is definitely quite different from the informalone from botany.What we consider an important property of a definition of a theoreticalconcept is its bareness. This means that it should be deprived of connotationsconcerning secondary matters such as the purpose of instances of the concept, thecircumstances in which instances of the concept play a role, and the dependenciesbetween instances of the concept and instances of another concept that are notconceptual. For example, a bare definition of a theoretical concept of a programdoes not have connotations such as “the purpose of a program is to produce acertain behaviour”, “a program plays a role in the case where a behaviour isproduced by means of a computer”, and “a program depends on a computer inorder to be executed”.A conceptual dependency is made apparent in a definition of a theoreticalconcept if the concept in question is defined in terms of another theoreticalconcept. Conceptual dependencies made apparent in a definition do not decreaseits bareness. In a family of concepts which are somehow connected by conceptualdependencies, some concepts may be more central than others. For example,a theoretical concept of a program, a theoretical concept of a machine and atheoretical concept of a run of a program on a machine might form a family ofconcepts where the concept of a run is conceptually dependent of the other twoconcepts, and the concept of a program is most central.In the case of such a family of concepts, it seems useful to consider thecollection of definitions of all concepts in the family, together with a stratificationindicating how central each of the concepts is, as a whole. We coin the termstratified concept family definition for such a whole. Of course, the concept5efinitions in a stratified concept family definition should be bare definitions.Although many mathematical theories are build on a stratified concept familydefinition, we could not find any meta-theory of definitions covering somethinglike stratified concept family definitions with the exception of the meta-theoryof definitions presented in [11]. Stratified concept family definitions resemble thedefinition dags introduced in that paper.To accommodate various kinds of utility and value analysis, it appears to beuseful to extend a stratified concept family definition with definitions of measuresthat represent the utility or value of instances of the different concepts involved orgroups thereof. An alternative is to regard such measures as additional conceptswhich are less central than all other concepts in the family in question.
Below, we outline how a definition of a theoretical concept of an operating systemcould look like. For that, we make use of the highlights of an elementary meta-theory about definitions of theoretical concepts presented above.A theoretical concept of an operating system is a formalized version of thepragmatic concept of an operating system. This implies that its definition is anexplicative definition, which is adequate for certain purposes and/or in certaincontexts only. To be able to connect a theory about operating systems to alarge part of the literature on operating systems, we therefore do not excludethe possibility that the theory will include definitions of different theoreticalconcepts of an operating system. In what follows, we will not pay attentionto this possibility and use the phrase “ the theoretical concept of an operatingsystem”.We know from the search for publications on operating systems mentionedbefore that the ambition to give a definition of the theoretical concept of an oper-ating system is new. We believe that a bare definition of the theoretical conceptof an operating system is possible. Our starting-point for such a definition isthe perception of an operating system as a component of an analytic executionarchitecture for programs as described in [2] enriched by mechanisms by whicha program can switch over execution to another program and interrupt the ex-ecution of another program. Therefore, we think that the theoretical concept ofan operating system is at least conceptually dependent of a theoretical conceptof a program and a theoretical concept of an analytic execution architecture.From the definitions of these three concepts, we can put together a stratifiedconcept family definition where the theoretical concept of an operating systemis most central. Such a stratified concept family definition provides a rationalefor the technicalities of the definition of the theoretical concept of an operatingsystem.The above-mentioned mechanisms for program execution switch-over and in-terruption give rise to a form of interleaving. This means that the theory to bedeveloped needs a concurrency theory as a basis. The question is what is a suit-able underlying concurrency theory. We expect that a suitable underlying con-6urrency theory can be obtained by extending the concurrency theory developedin [1], which covers program execution switch-over but does not cover programexecution interruption. In the case where the underlying concurrency theory isobtained thus, the analytic execution architectures involved in the definition ofthe theoretical concept of an operating system are quite similar to the ones dis-cussed in [1]. They include a collection of programs between which executioncan be switched. One of the programs in the collection is the operating systemand the others are the programs whose concurrent execution is controlled by theoperating system. No matter what underlying concurrency theory is taken, itwill introduce additional theoretical concepts of which the theoretical conceptof an operating system is conceptually dependent.
As a preparation for the development of a mathematical theory of operatingsystems, we have dwelled on how a definition of a theoretical concept of anoperating system could look like. In doing so, we were led to present some high-lights of an elementary meta-theory about definitions of theoretical concepts.We believe that such a meta-theory has wider applicability and deserves furtherelaboration.
References
1. Bergstra, J.A., Middelburg, C.A.: Thread algebra for poly-threading. ElectronicReport PRG0810, Programming Research Group, University of Amsterdam,available from .Also available from http://arxiv.org/ : arXiv:0803.0378v2 [cs.LO]
2. Bergstra, J.A., Ponse, A.: Execution architectures for program algebra. Journal ofApplied Logic 5(1), 170–192 (2007)3. Cloot, P.L.: What is the use of operating systems? Computer Journal 7(4), 249–254(1965)4. Codd, E.F.: Multiprogram scheduling: Parts 1 and 2. introduction and theory.Communications of the ACM 3(6), 347–350 (1960)5. Codd, E.F.: Multiprogram scheduling: Parts 3 and 4. scheduling algorithm andexternal constraints. Communications of the ACM 3(7), 413–418 (1960)6. Codd, E.F., Lowry, E.S., McDonough, E., Scalzi, C.A.: MultiprogrammingSTRETCH: Feasibility considerations. Communications of the ACM 2(11), 13–17(1959)7. Corbat´o, F.J., Merwin-Daggett, M., Daley, R.C.: An experimental time-sharingsystem. In: AIEE-IRE ’62 (Spring). pp. 335–344. ACM Press (1962)8. Creak, G.A., Sheehan, R.: A top-down operating systems course. ACM SIGOPSOperating Systems Review 34(3), 69–80 (2000)9. Denning, P.J.: Third generation computer systems. ACM Computing Surveys 3(4),175–216 (1971)10. Dennis, J.B., Van Horn, E.C.: Programming semantics for multiprogrammed com-putations. Communications of the ACM 9(3), 143–155 (1966)
1. Friedman, H., Flagg, R.C.: A framework for measuring the complexity of mathe-matical concepts. Advances in Applied Mathematics 11(1), 1–34 (1990)12. Holzer, A., Ondrus, J.: Trends in mobile application development. In: Hesselman,C., Giannelli, C. (eds.) Mobile Wireless Middleware, Operating Systems, and Ap-plications – Workshops. LNCIST, vol. 12, pp. 55–64. Springer-Verlag (2009)13. Kilburn, T., Payne, R.B., Howarth, D.J.: The Atlas supervisor. In: AFIPS ’61(Eastern). pp. 279–294. ACM Press (1961)14. Middelburg, C.A.: Searching publications on operating systems. arXiv:1003.5525v1 [cs.OS] at http://arxiv.org/ (March 2010)15. Ryckman, G.F.: The IBM 701 computer at the General Motors Research Labora-tories. IEEE Annals of the History of Computing 5(2), 210–212 (1983)16. Strachey, C.: Time sharing in large fast computers. In: International Conferenceon Information Processing. pp. 336–341. UNESCO (1959)17. Yates, D., Lynch, N., Seltzer, M., Luchangco, V.: I/O automaton model of operat-ing system primitives (May 1999), bachelors thesis HU 92.99, Harvard University(March 2010)15. Ryckman, G.F.: The IBM 701 computer at the General Motors Research Labora-tories. IEEE Annals of the History of Computing 5(2), 210–212 (1983)16. Strachey, C.: Time sharing in large fast computers. In: International Conferenceon Information Processing. pp. 336–341. UNESCO (1959)17. Yates, D., Lynch, N., Seltzer, M., Luchangco, V.: I/O automaton model of operat-ing system primitives (May 1999), bachelors thesis HU 92.99, Harvard University