Coder Social home page Coder Social logo

gaos's Introduction

UCAS_OS lab - GAOS


How to run

Prerequisites

Have riscv cross compiler and qemu, or with Xilinx develop board.

foo way

Directly run ./run_qemu.sh, input password, and you will see bootloader.

Then input loadboot, and enter the only kernel 0, and you can see three tasks seem to be run at the same time, while two others are run alternatively.

DIY task

You shall modify into test/ file folder, head files, and include/tasks.h

  • the head in original init/main.c (running 2 tasks) is like:
#define USE_CLOCK_INT
// #define INIT_WITH_PRIORITY

you can delete the comment mark to run different tasks.

and as you can see, there are other options:

  • use clock int, this will open clock interrupt to schedule tasks preemptly, as a normal mature kernel.
#define USE_CLOCK_INT
  • init tasks with priority, this will automatically initialize tasks with increasing priority, and you can see the results obviously.
#define INIT_WITH_PRIORITY

and back to terminal, run:

> make clean

> make

> ./run_qemu.sh

> loadboot

> 0

Report

lab report is in report.md or report.pdf

Completion

final score: 91

Project Core Function
1 - bootloader C load large kernel from SD
multiple OS kernel start
2 - simple kernel C time interrupt/preempt process schedule
syscall and exception handler
fork process
mutex lock
priority scheduling
3 - complex kernel C implement a simple shell
barrier, semaphore and mailbox
dual-core start
taskset (process bind cpu)
4 - virtual memory A virtual memory isolation
page fault error handling
swap page between memory and SD
thread
5 - device driver C- web card interrupt send and recv packages
listen on multi-port
6 - file system A- command:
touch, cat, open read, write, close, ln
ls, rm, lseek

core evaluation: S-simple, A, C-Complex

gaos's People

Contributors

etogaosion avatar gerald-gui avatar landonwong avatar fzyz999 avatar

Stargazers

Eason Wang avatar

Watchers

James Cloos avatar  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.