<i>The machine simulator is known as eXperimental String Machine (XSM). It is an interrupt driven uniprocessor machine. The machine handles data as strings. A string is a sequence of characters terminated by ’\0’. The length of a string is at most 16 characters including ’\0’. Each of these strings is stored in a word. (Refer Section: Memory) The machine interprets a single character also as a string.</i><p>What an... odd architecture. Fun for experimentation, I'm sure, but I think it's too different from contemporary CPUs to give a good taste of what the "real" thing is like.
Should use x86/ARM/MIPS so that students get real world experience. You might never have to write an OS, but knowing x86 assembly will help you debug and optimize code.<p>See the following course: <a href="https://courses.engr.illinois.edu/ece391/" rel="nofollow">https://courses.engr.illinois.edu/ece391/</a>
"Project XOS or eXperimental Operating System is a platform to develop a toy operating system. It is an instructional tool for students to learn and implement OS data structures and functionalities on a simulated machine called XSM (eXperimental String Machine)."<p>XOS is used at the National Institute of Technology Calicut, India to teach Operating System principles [0]. The OS Lab essentially consists of students designing and implementing a kernel for XOS, starting from scratch:<p>"Cross compiler, debugger, file system interface and other supporting software tools are provided. The student will implement the scheduler, memory management, process management, exception handling and file system management functions of the OS."<p>[0] <a href="http://athena.nitc.ac.in/~kmurali/os/index.html" rel="nofollow">http://athena.nitc.ac.in/~kmurali/os/index.html</a>
Most people enticed by this headline probably actually want xv6 (a modern simple implementation of UNIX v6) or {buildroot, OpenEmbedded} (frameworks for generating Linux distros).
I think that a more simple machine were anyone can program it on assembly (and eventually on C) could be better :<p><a href="https://github.com/trillek-team/trillek-computer" rel="nofollow">https://github.com/trillek-team/trillek-computer</a><p><a href="https://github.com/trillek-team/trillek-vcomputer-module" rel="nofollow">https://github.com/trillek-team/trillek-vcomputer-module</a>
On the topic of experimental OSes:<p><a href="https://github.com/ayourtch/ayos" rel="nofollow">https://github.com/ayourtch/ayos</a><p>a little experiment of my own to see what happens if I put Lua on bare metal (currently KVM-only) in x86_64 mode.<p>Lots of fun to toy with, though it does not do much yet.
Don't we already have Nachos for students?<p><a href="http://en.wikipedia.org/wiki/Not_Another_Completely_Heuristic_Operating_System" rel="nofollow">http://en.wikipedia.org/wiki/Not_Another_Completely_Heuristi...</a>
At my University (Imperial College London), our operating systems coursework was built around a toy OS called Pintos (<a href="http://en.wikipedia.org/wiki/Pintos" rel="nofollow">http://en.wikipedia.org/wiki/Pintos</a>), which is written in assembly and C and runs on x86. The project was to fill in the blanks in the implementation (more advanced scheduling, memory management, swapping etc) and I think most people thought it was one of the most fun projects we had. Being more realistic wasn't really a problem as the really arcane parts were already implemented.