Web site: (not active)
Desktop environment: CLI
Architecture: Pegasus 32-X
Based on: Independent
The last version | Released: 1985
Plurix – a Unix-like operating system developed in the Federal University of Rio de Janeiro (UFRJ), at the Electronic Computing Center (NCE), Brazil, in the early 1980s.
The Plurix project implements a lean and highspeed object-oriented Operating System (OS) for PC clusters. Communication between the cluster nodes is achieved via shared objects in a Distributed Shared Memory (DSM), which is organized as Distributed Heap Storage (DHS) containing both data and code.
The consistency of the DHS is guaranteed by the strong transactional consistency model. The latter uses an optimistic synchronization scheme and restartable transactions, which ease the development of distributed applications. The OS (including kernel and drivers) is written in Java using our proprietary Plurix Java Compiler to translate Java source code directly into Intel machine instructions.
Process migration in traditional OSs is a difficult task as parts of the kernel state need to be saved and restored. The Plurix DHS extends the well-known Single System Image (SSI) concept by sharing almost all data and code. In this paper we present relevant parts of the Plurix architecture and show how process migration is implemented and simplified.
Plurix implements a distributed OS for PC clusters. Numerous page-based DSM systems have been implemented, e.g. IVY, Treadmarks. All of them faces the false sharing syndrome which causes page trashing.
Plurix alleviates this problem by an object relocation facility based on a bookkeeping of references.
Plurix works in a fully object oriented fashion and is entirely written in Java. Access to device registers is not possible in standard Java but unconditionally needed by the OS. To support operating system and hardware level programming we have developed our own Plurix Java Compiler (PJC) with appropriate language extensions. The compiler directly generates Intel machine instructions and initializes runtime structures and code segments in the heap.