Pages

Welcome

Welcome to the NERW Concurrency Model for writing concurrent, parallel and distributed computer programs.

NERW (pronounced as in "nerve") stands for Network of Execution, Read and Write. Concurrency is done by processing elements (pel) doing concurrent execution and sending the results to other pels via memory elements (mel). Producing pels write to the mels and consuming pels read from the mels. To do execution, a pel resides in a computer element (cel). To support reads and writes, a mel also resides in a cel. A cel can support both execution and read/write, or only one or the other. To control the interactions of the pels and mels and manage the cel topology, there is the Nerw network. One way to think of the NERW model is the nervous system where synapses allow neurons to signal to other neurons. The nervous system is the Network, the cells cels, the neurons pels and the synapses mels.

The NERW Concurrency Model is a reference model, not a programming language. It is designed to be grafted into an existing language to give it support for concurrent programming. The latter part of this blog is a proposal to add the NERW model to the C language, called NERWous C.

The NERW Concurrency Model assumes that there is a runtime environment to support its features. A theoretical runtime environment is referred to as CHAOS. It represents the pell-mell interactions of all the NERW elements in an actual environment. Someone could implement CHAOS for Linux, or CHAOS over the Web by extending an API such as Node.JS. CHAOS acts as the man-in-the-middle translator to allow a program written in a language extended with the NERW Model to be run in a physical environment. CHAOS offers the NERW model a virtual Concurrent Hardware And Operating System to run on.

The NERW Concurrency Model was my doctoral thesis at the Illinois Institute of Technology in 1996. Twenty years later, I am refining this model via this blog.

TABLE OF CONTENTS
  1. The NERW Concurrency Model
    1. The Processing Element (Pel)
    2. The Memory Element (Mel)
    3. The Computer Element (Cel)
    4. The Network Element (Nerw)
  2. NERWous C
    1. Mel in NERWous C
    2. Pel in NERWous C
    3. Cel in NERWous C
    4. Examples in NERWous C

2 comments:

  1. There are enough concrete concepts in computer science to describe NEWR concisely. Comparing it to the nervious system seems superflous.

    The way you wrote suggests that NEWR is a model to be implemented in a language and CHAOS is the runtime to support of NEWR and thus the language. But you suggests that CHAOS stands for Concurrent High Availability OS. While the runtime of a language may depend on the OS, they need to be differentiated.

    ReplyDelete
  2. Do you design a model for a language or an OS?

    ReplyDelete