GithubHelp home page GithubHelp logo

os's Introduction

My first OS project on Intel x86 architecture. I am still considering a good name for it, but I just call it "Mark's OS" currently.

This is a microkernel OS, and I am writing it with some references to Orange's, Minix and xv6.

It does not finish, but I plan to pause the development currently since I will be back to campus and continue to my academic term soon.

- To do list

1. Hard drive driver;
2. Support FAT12, FAT16, FAT32 and xv6 filesystem;
3. Use filesystem to build a complete driver framework;
4. Improve paging mechanism and add virtual memory management;
5. Enter into the stage of graphics interfaces.

- Way to build:

Simply pull the whole repo and install the lastest bochs.
Make and run by typing "make run".

os's People

Contributors

marklang1993 avatar

Watchers

James Cloos avatar  avatar

os's Issues

Add "copy" function between different memory spaces

After splitting Kernel Space and Non-Kernel Space and adding Paging mechanism, copying between different processes (with different privileges) is required.

Between kernel and non-kernel processes (Ring 0 <-> Ring 1, 2, 3):

  • void copy_to_kernel(void* dst, void* src, uint32 size, uint32 pid);
    From (src, pid) to (dst)
  • void copy_to_non_kernel(void* dst, void* src, uint32 size, uint32 pid);
    From (src) to (dst, pid)
    NOTE: Must be called by kernel process.

Between non-kernel processes (Ring 1, 2, 3 <-> Ring 1, 2, 3)

  • void copy_to(void* dst, void* src, uint32 size, uint32 pid);
    From (src, CURRENT_PID) to (dst, pid)
  • void copy_from(void* dst, void* src, uint32 size, uint32 pid);
    From (src, pid) to (dst, CURRENT_PID)
    NOTE: subject is the process of the caller.

Add cache layer in hdd.c

Need to add cache layer, including a series of blocks cached in memory and a table of descriptors, in function "hdd_sector_dev_op()" of "hdd.c".
Descriptor: block number, block status (INVALID, CLEAR, DIRTY), the address of the block in memory.

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.