Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Per Brinch Hansen

dblp:h/PerBrinchHansen · DBLP profile ↗
← Back
33ranked-venue papers
33as first author
0since 2021 · last 1998
0000-0001-9357-8001ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 24 · 24 first-authorSystems, architecture and hardware · 5 · 5 first-authorTheory of computation · 3 · 3 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 2 first-authorDatabases, data management, data science and information retrieval · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
5 papers
Operating systems · 37% Concurrent programming · 37% Programming languages and type systems · 15%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Distributed systems · 100%

Topics — the 9 heaviest of 13, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Operating systems
interprocess communication
0.011978
Network: A Multiprocessor Program · IEEE Trans. Software Eng. 1978
Concurrent programming › synchronization
mutual exclusion
0.011978
Specification and Implementation of Mutual Exclusion · IEEE Trans. Software Eng. 1978
Programming languages and type systems › concurrent programming languages
concurrent pascal
0.011975
The Programming Language Concurrent Pascal · IEEE Trans. Software Eng. 1975
Programming languages and type systems
concurrent programming languages
0.011975
The Programming Language Concurrent Pascal · IEEE Trans. Software Eng. 1975
Concurrent programming › synchronization
monitors
0.011975
The Programming Language Concurrent Pascal · IEEE Trans. Software Eng. 1975
Operating systems › resource management › process management
CPU scheduling
0.011971
Short Term Scheduling in Multiprogramming Systems · SOSP 1971
Operating systems › resource management › process management
multiprogramming
0.011971
Short Term Scheduling in Multiprogramming Systems · SOSP 1971
Concurrent programming › concurrency primitives
semaphores
0.011971
Short Term Scheduling in Multiprogramming Systems · SOSP 1971
Concurrent programming
synchronization
0.011971
Short Term Scheduling in Multiprogramming Systems · SOSP 1971

Methods — techniques the papers use, named apart from their topics

abstract machine model · 0.0
YearPublicationVenuePosition
1998 Conjugate gradient solution of linear equations
abstract
The conjugate gradient method is an ingenious method for iterative solution of sparse linear equations. It is now a standard benchmark for parallel scientific computing. In the author's opinion, the apparent mystery of this method is largely due to the inadequate way in which it is presented in textbooks. This tutorial explains conjugate gradients by deriving the computational steps from elementary mathematical concepts. The computation is illustrated by a numerical example and an algorithmic outline. © 1998 John Wiley & Sons, Ltd.
Per Brinch Hansen
Concurr. Pract. Exp.1
1995 The Long Division Algorithm of Linger, Mills and Witt
abstract
Abstract The long division algorithm of Linger, Mills and Witt is discussed and found to be significantly slower than a recent algorithm developed by the author.
Per Brinch Hansen
Softw. Pract. Exp.1
1994 Interference Control in SuperPascal - A Block-Structured Parallel Language
abstract
Process interference due to shared variables is a serious problem in parallel programs written in insecure programming languages. The only effective remedy has been known since the 1970s: a parallel programming language must be designed to permit detection of process interference during compilation. This sound principle has seldom been adopted and enforced consistently for block-structured parallel languages. This paper discusses syntactic control of interference in SuperPascal, a block-structured programming language for parallel scientific computing. SuperPascal omits the insecure concepts of Pascal, and adds parallel statements and synchronous communication channels. Restrictions on the use of variables permit a single-pass compiler to check that parallel processes are disjoint, even if they use procedures with global variables.
Per Brinch Hansen
Comput. J.1
1994 Do hypercubes sort faster than tree machines?
abstract
Abstract We develop a balanced, parallel quicksort algorithm for a hypercube and compare it with a similar algorithm for a binary tree machine. The performance of the hypercube algorithm is measured on a Computing Surface.
Per Brinch Hansen
Concurr. Pract. Exp.1
1994 SuperPascal - a publication language for parallel scientific computing
abstract
Abstract Parallel computers will not become widely used until scientists and engineers adopt a common programming language for publication of parallel scientific algorithms. This paper describes the publication language SuperPascal by examples. SuperPascal extends Pascal with deterministic statements for parallel processes and synchronous message communication. The language permits unrestricted combinations of recursive procedures and parallel statements. SuperPascal omits ambiguous and insecure features of Pascal. Restrictions on the use of variables enable a single‐pass compiler to check that parallel processes are disjoint, even if the processes use procedures with global variables. A portable implementation of SuperPascal has been developed on a Sun workstation under Unix.
Per Brinch Hansen
Concurr. Pract. Exp.1
1994 The Programming Language SuperPascal
abstract
Abstract This paper defines SuperPascal—a secure programming language for publication of parallel scientific algorithms. SuperPascal extends a subset of IEEE Standard Pascal with deterministic statements for parallel processes and synchronous message communication. A parallel statement denotes parallel execution of a fixed number of statements. A forall statement denotes parallel execution of the same statement by a dynamic number of processes. Recursive procedures may be combined with parallel and forall statements to define recursive parallel processes. Parallel processes communicate by sending typed messages through channels created dynamically. SuperPascal omits ambiguous and insecure features of Pascal. Restrictions on the use of variables enable a single‐pass compiler to check that parallel processes are disjoint, even if the processes use procedures with global variables.
Per Brinch Hansen
Softw. Pract. Exp.1
1994 Multiple-length Division Revisited: a Tour of the Minefield
abstract
Abstract Long division of natural numbers plays a crucial role in Cobol arithmetic, cryptography, and primality testing. Only a handful of textbooks discuss the theory and practice of long division, and none of them do it satisfactorily. This tutorial attempts to fill this surprising gap in the literature on computer algorithms. We illustrate the subtleties of long division by examples, define the problem concisely, summarize the theory, and develop a complete Pascal algorithm using a consistent terminology.
Per Brinch Hansen
Softw. Pract. Exp.1
1993 Model programs for computational science: A programming methodology for multicomputers
abstract
Abstract We describe a programming methodology for computational science based on programming paradigms for multicomputers. Each paradigm is a class of algorithms that have the same control structure. For every paradigm, a general parallel program is developed. The general program is then used to derive two or more model programs, which solve specific problems in science and engineering. These programs have been tested on a Computing Surface and published with every detail open to scrutiny. We explain the steps involved in developing model programs and conclude that the study of programming paradigms provides an architectural vision of parallel scientific computing.
Per Brinch Hansen
Concurr. Pract. Exp.1
1993 Parallel cellular automata: A model program for computational science
abstract
Abstract We develop a model program for parallel execution of cellular automata on a multicomputer. The model program is then adapted for simulation of forest fires and numerical solution of Laplace's equation for stationary heat flow. The performance of the parallel program is analyzed and measured on a Computing Surface configured as a matrix of transputers with distributed memory.
Per Brinch Hansen
Concurr. Pract. Exp.1
1989 The Joyce Language Report
abstract
Abstract This paper defines a programming language for distributed processing called Joyce. Joyce is based on CSP and Pascal. A Joyce program defines concurrent agents which communicate through synchronous channels. The agents may be recursive.
Per Brinch Hansen
Softw. Pract. Exp.1
1989 A Multiprocessor Implementation of Joyce
abstract
Abstract Joyce is a programming language for parallel computers based on CSP and Pascal. A Joyce program defines concurrent agents which communicate through unbuffered channels. This paper describes a multiprocessor implementation of Joyce.
Per Brinch Hansen
Softw. Pract. Exp.1
1987 Joyce - A Programming Language for Distributed Systems
abstract
Abstract This paper describes a secure programming language called Joyce based on CSP and Pascal. Joyce permits unbounded (recursive) activation of communicating agents. The agents exchange messages through synchronous channels. A channel can transfer messages of different types between two or more agents. A compiler can check message types and ensure that agents use disjoint sets of variables only. The use of Joyce is illustrated by a variety of examples.
Per Brinch Hansen
Softw. Pract. Exp.1
1987 A Joyce Implementation
abstract
Abstract Joyce is a programming language for distributed systems based on CSP and Pascal. A Joyce program defines concurrent agents which communicate through unbuffered channels. This paper describes a surprisingly simple single‐processor implementation of Joyce which runs on an IBM‐PC.
Per Brinch Hansen
Softw. Pract. Exp.1
1981 Edison-a Multiprocessor Language
abstract
Abstract This paper defines a programming language called Edison. The language is suitable both for teaching the principles of concurrent programming and for designing reliable real‐time programs for multiprocessor systems. Edison is block structured and includes modules, concurrent statements, and when statements.
Per Brinch Hansen
Softw. Pract. Exp.1
1981 The Design of Edison
abstract
Abstract This paper describes the considerations behind the design of the programming language Edison including the reasons why a large number of well‐known language featuges were excluded. It also discusses the linguistic problems of writing a concise language report.
Per Brinch Hansen
Softw. Pract. Exp.1
1981 Edison Programs
abstract
Abstract This paper describes three sample programs written in the programming language Edison. These programs illustrate the practical use of modules, concurrent statements, and input/output operations. The paper concludes with a brief overview of the Emono operating system and the Edison compiler both of which are written entirely in Edison.
Per Brinch Hansen
Softw. Pract. Exp.1
1980 The Trio Operating System
abstract
Abstract This paper is an overview of the Trio system which enables users to simultaneously develop and execute programs at three terminals. The system consists of an operating system written in Concurrent Pascal and a set of standard programs written in Sequential Pascal. The system has been used on a PDP 11/55 minicomputer since spring 1979. This work concludes 5 years of experience with the first abstract language for concurrent programming.
Per Brinch Hansen, Jon Fellows
Softw. Pract. Exp.1
1979 Microcomputer Comparison
abstract
Abstract This paper illustrates a precise method for comparing microcomputer instruction sets for the purpose of language implementation. The standard of comparison is the Concurrent Pascal interpreter for the PDP 11/45 minicomputer. The paper identifies the most frequent virtual instructions and their implementation on the PDP 11/45 computer. It then compares the speed and size of interpreters implemented on various 16‐bit microcomputers. It also includes the process switching times of these computers.
Per Brinch Hansen, Charles Hayden
Softw. Pract. Exp.1
1978 A keynote address on concurrent programing
abstract
This paper summarizes the first twenty years of concurrent programming and identifies the major development phases as an initial hardware challenge followed by a software crisis, a conceptual innovation, and language development which in turn led to formal understanding and hardware refinement. The paper draws a parallel between this development and the present challenge of distributed computing.
Per Brinch Hansen
COMPSAC1
1978 Reproducible Testing of Monitor
abstract
Abstract This paper describes a systematic method for testing monitor modules which control process interactions in concurrent programs. A monitor is tested by executing a concurrent program in which the processes are synchronized by a clock to make the sequence of interactions reproducible. The method separates the construction and implementation of test cases and makes the analysis of a concurrent experiment similar to the analysis of a sequential program. The implementation of a test program is almost mechanical. The method, which is illustrated by an example, has been successfully used to test a multicomputer network program written in Concurrent Pascal.
Per Brinch Hansen
Softw. Pract. Exp.1
1978 Network: A Multiprocessor Program
abstract
This paper explores the problems of implementing arbitrary forms of process communication on a multiprocessor network. It develops a Concurrent Pascal program that enables distributed processes to communicate on virtual channels. The channels cannot deadlock and will deliver all messages within a finite time. The operation, structure, text, and performance of this program are described. It was written, tested, and described in two weeks and it worked immediately.
Per Brinch Hansen
IEEE Trans. Software Eng.1
1978 Specification and Implementation of Mutual Exclusion
abstract
This paper presents a constructive approach to the problem of specifying, implementing, and verifying operations that will give concurrent processes exclusive access to a resource. The method eliminates the need for auxiliary variables and establishes the correctness of a whole class of solutions to the same problem. The solutions are derived directly from the specifications using a language construct called guarded regions. Several new solutions to well-known exclusion problems are presented.
Per Brinch Hansen, Jørgen Staunstrup
IEEE Trans. Software Eng.1
1977 Experience with Modular Concurrent Programming
abstract
This paper summarizes the initial experience with the programming language Concurrent Pascal in the design of three model operating systems. A Concurrent Pascal program consists of modules called processes, monitors, and classes. The compiler checks that the data structures of each module are accessed only by the operations defined in the module. The author emphasizes that the creative aspect of program construction is the initial selection of modules and the connection of them into hierarchical structures. By comparison the detailed implementation of each module is straightforward. The most important result is that it is possible to build a concurrent program of one thousand lines out of one-page modules that can be comprehended at a glance.
Per Brinch Hansen
IEEE Trans. Software Eng.1
1976 The Solo Operating System: A Concurrent Pascal Program
abstract
Abstract This is a description of the single‐user operating system Solo written in the programming language Concurrent Pascal.* It supports the development of sequential and concurrent Pascal programs for the PDP 11/45 computer. Input/output are handled by concurrent processes. Pascal programs can call one another recursively and pass arbitrary parameters among themselves. This makes it possible to use Pascal as a job control language. Solo is the first major example of a hierarchical concurrent program implemented in terms of abstract data types (classes, monitors and processes) with compile‐time control of most access rights. It is described here from the user's point of view as an introduction to another paper describing its internal structure.
Per Brinch Hansen
Softw. Pract. Exp.1
1976 The Solo Operating System: Job Interface
abstract
Abstract This paper describes the interface between sequential Pascal programs and the Solo operating system.* A sequential program interacts with the operating system by means of procedure calls. A program prefix defining these procedures and their parameters enables the compiler to make complete type checking of calls to the operating system. The Solo interface permits Pascal programs to call one another recursively. This makes it possible to use Pascal as the job control language.
Per Brinch Hansen
Softw. Pract. Exp.1
1976 The Solo Operating System: Processes, Monitors, and Classes
abstract
Abstract This paper describes the implementation of the Solo operating system written in Concurrent Pascal.* It explains the overall structure and details of the system in which concurrent processes communicate by means of a hierarchy of monitors and classes. The concurrent program is a sequence of nearly independent components of less than one page of text each. The system has been operating since May 1975.
Per Brinch Hansen
Softw. Pract. Exp.1
1976 Disk Scheduling at Compile Time
abstract
Abstract This paper describes a simple algorithm* for allocating program files on a disk with a moving head. The algorithm tries to place a file on consecutive pages (but will scatter them somewhat if necessary). It then rearranges these pages to minimize the rotational delay during a sequential scan of the file. This method combines the best features of consecutive and non‐consecutive allocation: fast sequential access and fast allocation. It is used in the Solo operating system to reduce program loading time by a factor of 3.
Per Brinch Hansen
Softw. Pract. Exp.1
1975 Universal Types in Concurrent Pascal
Per Brinch Hansen
Inf. Process. Lett.1
1975 The Programming Language Concurrent Pascal
abstract
Describes a new programming language for structured programming of computer operating systems. It extends the sequential programming language Pascal with concurrent programming tools called processes and monitors. Section I explains these concepts informally by means of pictures illustrating a hierarchical design of a simple spooling system. Section II uses the same example to introduce the language notation. The main contribution of Concurrent Pascal is to extend the monitor concept with an explicit hierarchy of access rights to shared data structures that can be stated in the program text and checked by a compiler.
Per Brinch Hansen
IEEE Trans. Software Eng.1
1973 A Reply to Comments on "A Comparison of Two Synchronizing Concepts"
Per Brinch Hansen
Acta Informatica1
1973 Testing a Multiprogramming System
abstract
Abstract A central problem in program design is to structure a large program such that it can be tested systematically by the simplest possible techniques. This paper describes the method used to test the RC 4000 multiprogramming system. During testing, the system records all transitions of processes and messages between various queues. The test mechanism consists of fifty machine instructions centralized in two procedures. By using this mechanism in a series of carefully selected test cases, the system was made virtually error free within a few weeks. The test procedure is illustrated by examples.
Per Brinch Hansen
Softw. Pract. Exp.1
1972 A Comparison of Two Synchronizing Concepts
Per Brinch Hansen
Acta Informatica1
1971 Short Term Scheduling in Multiprogramming Systems
abstract
This paper defines a set of scheduling primitives which have evolved from multiprogramming systems described by Dijkstra, Lampson, Saltzer, and the present author. Compared to earlier papers on the same subject, the present one illustrates a more concise description of operating system principles by means of algorithms. This is achieved by (1) describing the primitives as the instructions of an abstract machine which in turn is defined by its instruction execution algorithm; (2) introducing a notation which distinguishes between the use of synchronizing variables (semaphores) to achieve mutual exclusion of critical sections, and to exchange signals between processes which have explicit input/output relationships; (3) considering the influence of critical sections on preemption and resumption; and (4) using a programming language, Pascal, which includes natural data types (records, classes, and pointers) for the representation of process descriptions and scheduling queues. The algorithms are written at a level of detail which clarifies the fundamental problems of process scheduling and suggests efficient methods of implementation.
Per Brinch Hansen
SOSP1