Results 1 - 10
of
18
The C programming Language
, 1988
"... C is a general-purpose programming language. It has been closely associated with the UNIX operating system where it was developed, since both the system and most of the programs that run on it are written in C. The language, however, is not tied to any one operating system or machine; and although i ..."
Abstract
-
Cited by 1128 (14 self)
- Add to MetaCart
C is a general-purpose programming language. It has been closely associated with the UNIX operating system where it was developed, since both the system and most of the programs that run on it are written in C. The language, however, is not tied to any one operating system or machine; and although it has been called a ‘‘system programming language’’ because it is useful for writing compilers and operating systems, it has been used equally well to write major programs in many different
domains.
Many of the important ideas of C stem from the language BCPL, developed by Martin Richards. The influence of BCPL on
C proceeded indirectly through the language B, which was written by Ken Thompson in 1970 for the first UNIX system on
the DEC PDP-7.
BCPL and B are ‘‘typeless’’ languages. By contrast, C provides a variety of data types. The fundamental types are characters, and integers and floating point numbers of several sizes. In addition, there is a hierarchy of derived data types created with pointers, arrays, structures and unions. Expressions are formed from operators and operands; any expression, including an assignment or a function call, can be a statement. Pointers provide for machine-independent address arithmetic.
C provides the fundamental control-flow constructions required for well-structured programs: statement grouping, decision making (if-else), selecting one of a set of possible values (switch), looping with the termination test at the top (while, for) or at the bottom (do), and early loop exit (break).
Functions may return values of basic types, structures, unions, or pointers. Any function may be called recursively. Local variables are typically ‘‘automatic’’, or created anew with each invocation. Function definitions may not be nested but variables may be declared in a block-structured fashion. The functions of a C program may exist in separate source files that are compiled separately. Variables may be internal to a function, external but known only within a single source file, or visible to the entire program.
Pilot: An Operating System for a Personal Computer
, 1980
"... this paper was presented at the 7th ACM Symposium on Operating Systems Principles, Pacific Grove, Calif., Dec. 10-12, 1979 ..."
Abstract
-
Cited by 91 (1 self)
- Add to MetaCart
this paper was presented at the 7th ACM Symposium on Operating Systems Principles, Pacific Grove, Calif., Dec. 10-12, 1979
An open operating system for a single-user machine
- Operating Systems Review
, 1979
"... The file system and modularization of a single-user operating system are described. The main points of interest are the openness of the system, which establishes no sharp boundary between itself and the user's programs, and the techniques used to make the system robust. 1. ..."
Abstract
-
Cited by 31 (3 self)
- Add to MetaCart
The file system and modularization of a single-user operating system are described. The main points of interest are the openness of the system, which establishes no sharp boundary between itself and the user's programs, and the techniques used to make the system robust. 1.
Representations of stream processors using nested fixed points
- Logical Methods in Computer Science
"... Abstract. We define representations of continuous functions on infinite streams of discrete values, both in the case of discrete-valued functions, and in the case of stream-valued functions. We define also an operation on the representations of two continuous functions between streams that yields a ..."
Abstract
-
Cited by 9 (1 self)
- Add to MetaCart
Abstract. We define representations of continuous functions on infinite streams of discrete values, both in the case of discrete-valued functions, and in the case of stream-valued functions. We define also an operation on the representations of two continuous functions between streams that yields a representation of their composite. In the case of discrete-valued functions, the representatives are well-founded (finitepath) trees of a certain kind. The underlying idea can be traced back to Brouwer’s justification of bar-induction, or to Kreisel and Troelstra’s elimination of choice-sequences. In the case of stream-valued functions, the representatives are non-wellfounded trees pieced together in a coinductive fashion from well-founded trees. The definition requires an alternating fixpoint construction of some ubiquity.
Portability of C Programs and the UNIX System
- Bell System Tech J
, 1978
"... Computer programs are portable to the extent that they can be moved to new computing environments with much less effort than it would take to rewrite them. In the limit, a program is perfectly portable if it can be moved at will with no change whatsoever. Recent C language extensions have made it ea ..."
Abstract
-
Cited by 8 (4 self)
- Add to MetaCart
Computer programs are portable to the extent that they can be moved to new computing environments with much less effort than it would take to rewrite them. In the limit, a program is perfectly portable if it can be moved at will with no change whatsoever. Recent C language extensions have made it easier to write portable programs. Some tools have also been developed that aid in the detection of nonportable constructions. With these tools many programs have been moved from the PDP-11 on which they were developed to other machines. In particular, the UNIX � operating system and most of its software have been transported to the Interdata 8/32. The source-language representation of most of the code involved is identical in all environments. I.
Personal Distributed Computing: The Alto and Ethernet Software
- IN PROCEEDINGS OF THE ACM CONFERENCE ON THE HISTORY OF PERSONAL WORKSTATIONS
, 1988
"... ..."
Control Transfer in Operating System Kernels
, 1994
"... Control transfer is the fundamental activity in an operating system kernel. The resource management functionality and application programmer interfaces of an operating system may be delegated to other system components, but the kernel must manage control transfer. The current trend towards increased ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Control transfer is the fundamental activity in an operating system kernel. The resource management functionality and application programmer interfaces of an operating system may be delegated to other system components, but the kernel must manage control transfer. The current trend towards increased modularity in operating systems only increases the importance of control transfer. My thesis is that a programming language abstraction, continuations, can be adapted for use in operating system kernels to achieve increased flexibility and performance for control transfer. The flexibility that continuations provide allows the kernel designer when necessary to choose implementation performance over convenience, without affecting the design of the rest of the kernel. The continuation abstraction generalizes existing operating system control transfer optimizations. This dissertation also makes two practical contributions, an interface for machine-independent control transfer management inside ...
DirectFlow: A domain-specific language for informationflow systems
- In ECOOP, volume 4609 of LNCS
, 2007
"... Abstract. Programs that process streams of information are commonly built by assembling reusable information-flow components. Insomesystems the components must be chosen from a pre-defined set of primitives; in others the programmer can create new custom components using a general-purpose programmin ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Abstract. Programs that process streams of information are commonly built by assembling reusable information-flow components. Insomesystems the components must be chosen from a pre-defined set of primitives; in others the programmer can create new custom components using a general-purpose programming language. Neither approach is ideal: restricting programmers to a set of primitive components limits the expressivity of the system, while allowing programmers to define new components in a general-purpose language makes it difficult or impossible to reason about the composite system. We advocate defining information-flow components in a domain-specific language (DSL) that enables us to infer the properties of the components and of the composed system; this provides us with a good compromise between analysability and expressivity. This paper presents DirectFlow, which comprises a DSL, a compiler and a runtime system. The language allows programmers to define objects that implement information-flow components without specifying how messages are sent and received. The compiler generates Java classes by inferring the message sends and methods, while the run-time library constructs information-flow networks by composition of DSL-defined components with standard components. 1

