Giter Site home page Giter Site logo

egos-2000's Introduction

A minimal operating system on a small RISC-V board

With only 2000 lines of code, egos-2000 implements boot loader, microSD driver, tty driver, memory paging, address translation, interrupt handling, process scheduling and messaging, system call, file system, shell, 7 user commands and the mkfs/mkrom tools. It runs on a $129 small development board.

This is an image

# Count lines of code excluding references and README.md
> cloc egos-2000 --exclude-ext=md,pdf
      62 text files.
      61 unique files.
      13 files ignored.

github.com/AlDanial/cloc v 1.92  T=0.03 s (1668.0 files/s, 105414.7 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               35            454            490           1565
C/C++ Header                    11             74            105            313
Assembly                         3              6             24             68
make                             1             11              0             54
-------------------------------------------------------------------------------
SUM:                            50            545            619           2000 << exactly 2000!
-------------------------------------------------------------------------------

Earth and Grass Operating System 2000

egos and egos-2000 are the teaching operating systems we use at Cornell. They have the same architecture.

  • The earth layer implements hardware-specific abstractions.
    • tty and disk device interfaces
    • cpu interrupt and memory management interfaces
  • The grass layer implements hardware-independent abstractions.
    • processes, system calls and inter-process communication
  • The application layer implements file system, shell and user commands.

The definitions of struct earth and struct grass in egos.h specify the interfaces between these layers.

Hardware Requirements

Software Requirements

Usages and Documentation

For compiling and running egos-2000, please watch the tutorial video and read USAGES.md. This document further introduces the teaching plans, architecture and development history of egos-2000.

The RISC-V instruction set manual introduces the privileged registers used by egos-2000. The SiFive FE310 manual introduces the processor used by egos-2000, especially the GPIO, UART and SPI bus controllers.

For any questions, please contact Yunhao Zhang.

Acknowledgements

Many thanks to Robbert van Renesse and Lorenzo Alvisi for their support. Many thanks to Meta for supporting me with a fellowship. Many thanks to all CS4411 students at Cornell over the years for helping improve this course.

egos-2000's People

Contributors

yhzhang0128 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.