GithubHelp home page GithubHelp logo

killerswin2 / egos-2000-scheduler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cse3320-fall-2023/egos-2000-scheduler

0.0 0.0 0.0 203.86 MB

License: MIT License

Shell 0.62% C++ 19.12% Scheme 0.01% Python 41.24% Perl 0.11% C 10.35% PHP 0.01% Emacs Lisp 0.20% Objective-C 0.01% Java 0.01% Tcl 0.01% C# 0.01% Assembly 0.01% Awk 0.01% XC 0.02% CSS 0.04% Pascal 0.01% Makefile 0.55% HTML 27.66% PLSQL 0.03%

egos-2000-scheduler's Introduction

Vision

This project's vision is to help every college student read all the code of an operating system.

With only 2000 lines of code, egos-2000 implements every component of an operating system for education. It can run on a RISC-V board and also the QEMU software emulator.

Fail to load an image of egos-2000.

# The cloc utility is used to count the lines of code (LOC).
# The command below counts the LOC of everything excluding text documents.
> cloc egos-2000 --exclude-ext=md,txt
...
github.com/AlDanial/cloc v 1.94  T=0.05 s (949.3 files/s, 62349.4 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               37            510            665           1579
C/C++ Header                    10             68            105            285
Assembly                         4              6             31             72
make                             1             12              0             64
-------------------------------------------------------------------------------
SUM:                            52            596            801           2000 (exactly 2000!)
-------------------------------------------------------------------------------

Earth and Grass Operating System

egos-2000 was developed as a new teaching OS for CS5411/4411 at Cornell. It adopts a 3-layer architecture.

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

The definitions of struct earth and struct grass in this header file specify the layer interfaces.

Usages and Documentation

For compiling and running egos-2000, please read this document. The RISC-V instruction set manual and SiFive FE310 manual introduce the privileged ISA and processor memory map. This document further introduces the teaching plans, architecture and development history.

Acknowledgements

Many thanks to Robbert van Renesse, Lorenzo Alvisi, Shan Lu and Hakim Weatherspoon for supporting this project. Many thanks to Meta for a Meta fellowship. Many thanks to all CS5411/4411 students at Cornell over the years for helping improve this course.

egos-2000-scheduler's People

Contributors

bakkertj avatar trevorbakker-uta 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.