Dear Eric,
Thank you for your interesting point of view and for connecting neighboring concepts.
At present, we treat System V semaphores as an abstract computer because they are Turing-complete. We use them as a virtual machine, which I call the PVZ machine, after Dijkstra’s P and V semaphore operations, supplemented with the waiting-for-zero operation (Z).
We transform the graphical language of place-transition nets, created with the graphical editor nd of Tina, into a Linux application using our NDRtoALL plugin. The plugin generates a .h file that is included in the PVZ machine (pvzm.c), which is then compiled with gcc.
You can compile and run pvzm.c yourself from the https://github.com/dimazaitsev/SNCtools/tree/main/bm5000x directory in the GitHub repository by editing the #include directive to select one of the pre-generated .h files. Please note that the largest example, gm32x32-b6.h, takes about two hours to run because it performs 32 × 32 = 1024 slow multiplications, similar to those described in gm6x6-a4.pdf.
Enjoy the run!
In fact, we only need fork() and semop(), and we are now moving toward prototyping a novel chipset on an FPGA. The architecture consists solely of child processes, each repeatedly calling semop(). Whenever a process is blocked, it simply idles, saving energy.
This forms a computing-memory structure without the traditional processor-memory bottleneck. Its entire instruction set is represented by the semaphore operations (sops) passed to semop(), which we visualize as a graph for clarity.
Yours, Dima