Award Date

August 2016

Degree Type

Thesis

Degree Name

Master of Science in Computer Science

Department

Computer Science

First Committee Member

Jan Pedersen

Second Committee Member

Kazem Taghva

Third Committee Member

Andreas Stefik

Fourth Committee Member

Hualiang Teng

Number of Pages

139

Abstract

The modern day advancements in multi-core technologies require programmers to use the right tools and languages to fully harness their potentials. On that front, our endeavor lies in developing a new multipro- cessing programming language. Concurrent or parallel programs can be hard to get right because of locks, monitors, mutexes, etc. One solution is using a CSP based process-oriented language. Process-oriented programming alleviates many of the problems found in thread and lock programming by proper encapsu- lation of data, explicit synchronous message passing, and the ability to verify code to be free of deadlocks and livelocks by using tools like FDR. Therefore, we have developed a new language called ProcessJ (CSP semantics and Java-like syntax) as a way to modernize languages like occam/occam-π which are outdated and only run on certain Linux distributions. ProcessJ is a multi-backend language with a compiler written in Java; and in this thesis, we focus on the JVM backend, which we call the JVMCSP; in particular, we consider code generation, the necessary runtime classes to support concurrency constructs on the JVM, and a simple cooperative non-preemptive scheduler. We also show how to translate ProcessJ source into Java source that makes use of the runtime classes that we have developed.

Keywords

Java Virtual Machine; JVMCSP; non-preemptive scheduling; ProcessJ; process-oriented programming; user-level scheduling

Disciplines

Computer Sciences

Language

English


Share

COinS