Port of nachos in Go
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
console
disk
enums
global
interfaces
machine
mips-i386-xgcc
test
threads
userprog
utils
.gitignore
COPYRIGHT
Makefile
README.md
gopher.svg
nachos.go

README.md

go-nachos

Logo

[1] Special thanks to @egonelbre for the gopher vector
[2] The Go gopher was designed by Renee French. The Gopher character design is licensed under the Creative Commons 3.0 Attributions license.
[3] Vector of the Nachos used in picture above was designed by Freepik


This is a complete rewrite of Nachos (Not another completely heuristical operating system) hosted at nachos.

Golang specific code:

  • Thread forking - thread forking was initially carried out via assembly code which used to save context of current thread and switch to the other thread. I have modified it to use channels instead where a thread only runs when its channel is active. This would also enable implementing multi-threading if one really wants to try that on nachos.

This code is at a stage where none of the syscalls are implemented (which itself is a good exercise for understanding the nachos code).