Article snapshot taken from Wikipedia with creative commons attribution-sharealike license.
Give it a read and then ask your questions in the chat.
We can research this topic together.
The kernel can be extended by dynamic loading of modules which implement interfaces that represent domains. These domains are defined by Modula-3 INTERFACE. All kernel extensions are written in Modula-3 safe subset with metalanguage constructs and type safecasting system. The system also issued a special run-time extension compiler.
One set of kernel extensions provides an application programming interface (API) that emulates the Digital UNIX system call interface. This allows Unix applications to run on SPIN.
References
Bershad, Brian N.; Savage, Stefan; Pardyak, Przemys; Sirer, Emin Gün; Fiuczynski, Marc E.; Becker, David; Chambers, Craig; Eggers, Susan (1995). "Extensibility, safety and performance in the SPIN operating system". Proceedings of the 15th ACM Symposium on Operating System Principles (SOSP-15): 267–284.
Bershad, Brian N.; Chambers, Craig; Eggers, Susan; Maeda, Chris; Mcnamee, Dylan; Pardyak, Przemyslaw; Savage, Stefan; Sirer, Emin Gün (1994). "SPIN: an extensible microkernel for application-specific operating system services". Proceedings of the 6th ACM SIGOPS European Workshop: Matching Operating Systems to Application Needs: 68–71.
Dion, David (1996). "A User-Level Unix Server for the SPIN Operating System". University of Washington Technical Report UW-CSE-96-11-01.